From d7684fa777b68b73bcc4cd22ac2417b5eb766c53 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sat, 30 Jan 2016 13:41:53 +0100 Subject: [PATCH 001/446] fixed memeroy leak in f_ellispoid.c and added diff_pow to the large_scale suite --- code-experiments/src/f_different_powers.c | 64 +++++++++++++++++++ code-experiments/src/f_ellipsoid.c | 5 +- .../src/large_scale_transformations.c | 6 +- code-experiments/src/suite_largescale.c | 6 +- 4 files changed, 77 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 65560e74d..865a2b236 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -13,6 +13,8 @@ #include "transform_vars_affine.c" #include "transform_vars_shift.c" +#include "transform_vars_permblockdiag.c" + /** * @brief Implements the different powers function without connections to any COCO structures. */ @@ -94,3 +96,65 @@ static coco_problem_t *f_different_powers_bbob_problem_allocate(const size_t fun coco_free_memory(xopt); return problem; } + + + + + +static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + + double *xopt, fopt; + coco_problem_t *problem = NULL; + + double **B; + const double *const *B_copy; + + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); + swap_range = ls_get_swap_range(dimension); + nb_swaps = ls_get_nb_swaps(dimension); + + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + + ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + + problem = f_different_powers_allocate(dimension); + problem = transform_obj_shift(problem, fopt); + problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_shift(problem, xopt, 0); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "block_rotated"); + + + ls_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + coco_free_memory(xopt); + return problem; +} + + diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 5e3fc832f..24675aaf0 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -13,6 +13,7 @@ #include "transform_vars_affine.c" #include "transform_vars_shift.c" #include "transform_obj_shift.c" + #include "transform_vars_permblockdiag.c" /** @@ -143,7 +144,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz size_t swap_range; size_t nb_swaps; - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); + block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); @@ -175,7 +176,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz coco_free_memory(P1); coco_free_memory(P2); coco_free_memory(block_sizes); - + coco_free_memory(xopt); return problem; } diff --git a/code-experiments/src/large_scale_transformations.c b/code-experiments/src/large_scale_transformations.c index 8b03f9fec..bdb7e5b39 100644 --- a/code-experiments/src/large_scale_transformations.c +++ b/code-experiments/src/large_scale_transformations.c @@ -281,10 +281,11 @@ size_t *coco_duplicate_size_t_vector(const size_t *src, const size_t number_of_e * returns the list of block_sizes and sets nb_blocks to its correct value * TODO: update with chosen parameter setting */ -size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension){ +size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension, const long seed){ size_t *block_sizes; size_t block_size; int i; + coco_random_state_t *rng = coco_random_new((uint32_t) seed); block_size = (size_t) bbob2009_fmin((double)dimension / 4, 100); *nb_blocks = dimension / block_size + ((dimension % block_size) > 0); @@ -293,6 +294,9 @@ size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension){ block_sizes[i] = block_size; } block_sizes[*nb_blocks - 1] = dimension - (*nb_blocks - 1) * block_size; /*add rest*/ + + coco_random_free(rng); + return block_sizes; } diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index af60717ca..c8019eb26 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -6,6 +6,7 @@ #include "coco.h" #include "f_ellipsoid.c" +#include "f_different_powers.c" static coco_suite_t *coco_suite_allocate(const char *suite_name, const size_t number_of_functions, @@ -21,7 +22,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; /*const size_t dimensions[] = { 8, 16, 32, 64, 128, 256,512,1024};*/ const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280}; - suite = coco_suite_allocate("bbob-largescale", 1, 6, dimensions, "instances:1-15"); + suite = coco_suite_allocate("bbob-largescale", 2, 6, dimensions, "instances:1-15"); return suite; } @@ -42,6 +43,9 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, if (function == 1) { problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); + } else if (function == 2) { + problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else { coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", function, instance, dimension); From b74a5173e5121771128eb63bfa950625127ad472 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sat, 30 Jan 2016 13:41:53 +0100 Subject: [PATCH 002/446] fixed memeroy leak in f_ellispoid.c and added diff_pow to the large_scale suite --- code-experiments/src/f_different_powers.c | 64 +++++++++++++++++++ code-experiments/src/f_ellipsoid.c | 5 +- .../src/large_scale_transformations.c | 6 +- code-experiments/src/suite_largescale.c | 6 +- 4 files changed, 77 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 65560e74d..865a2b236 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -13,6 +13,8 @@ #include "transform_vars_affine.c" #include "transform_vars_shift.c" +#include "transform_vars_permblockdiag.c" + /** * @brief Implements the different powers function without connections to any COCO structures. */ @@ -94,3 +96,65 @@ static coco_problem_t *f_different_powers_bbob_problem_allocate(const size_t fun coco_free_memory(xopt); return problem; } + + + + + +static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + + double *xopt, fopt; + coco_problem_t *problem = NULL; + + double **B; + const double *const *B_copy; + + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); + swap_range = ls_get_swap_range(dimension); + nb_swaps = ls_get_nb_swaps(dimension); + + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + + ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + + problem = f_different_powers_allocate(dimension); + problem = transform_obj_shift(problem, fopt); + problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_shift(problem, xopt, 0); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "block_rotated"); + + + ls_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + coco_free_memory(xopt); + return problem; +} + + diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 5e3fc832f..24675aaf0 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -13,6 +13,7 @@ #include "transform_vars_affine.c" #include "transform_vars_shift.c" #include "transform_obj_shift.c" + #include "transform_vars_permblockdiag.c" /** @@ -143,7 +144,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz size_t swap_range; size_t nb_swaps; - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); + block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); @@ -175,7 +176,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz coco_free_memory(P1); coco_free_memory(P2); coco_free_memory(block_sizes); - + coco_free_memory(xopt); return problem; } diff --git a/code-experiments/src/large_scale_transformations.c b/code-experiments/src/large_scale_transformations.c index 8b03f9fec..bdb7e5b39 100644 --- a/code-experiments/src/large_scale_transformations.c +++ b/code-experiments/src/large_scale_transformations.c @@ -281,10 +281,11 @@ size_t *coco_duplicate_size_t_vector(const size_t *src, const size_t number_of_e * returns the list of block_sizes and sets nb_blocks to its correct value * TODO: update with chosen parameter setting */ -size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension){ +size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension, const long seed){ size_t *block_sizes; size_t block_size; int i; + coco_random_state_t *rng = coco_random_new((uint32_t) seed); block_size = (size_t) bbob2009_fmin((double)dimension / 4, 100); *nb_blocks = dimension / block_size + ((dimension % block_size) > 0); @@ -293,6 +294,9 @@ size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension){ block_sizes[i] = block_size; } block_sizes[*nb_blocks - 1] = dimension - (*nb_blocks - 1) * block_size; /*add rest*/ + + coco_random_free(rng); + return block_sizes; } diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index af60717ca..c8019eb26 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -6,6 +6,7 @@ #include "coco.h" #include "f_ellipsoid.c" +#include "f_different_powers.c" static coco_suite_t *coco_suite_allocate(const char *suite_name, const size_t number_of_functions, @@ -21,7 +22,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; /*const size_t dimensions[] = { 8, 16, 32, 64, 128, 256,512,1024};*/ const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280}; - suite = coco_suite_allocate("bbob-largescale", 1, 6, dimensions, "instances:1-15"); + suite = coco_suite_allocate("bbob-largescale", 2, 6, dimensions, "instances:1-15"); return suite; } @@ -42,6 +43,9 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, if (function == 1) { problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); + } else if (function == 2) { + problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else { coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", function, instance, dimension); From f2e2721a5605faa3a80114981b326228b7956570 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sat, 30 Jan 2016 14:14:43 +0100 Subject: [PATCH 003/446] added the discuss function (generalized version) to the large_scale suite --- code-experiments/src/f_different_powers.c | 2 +- code-experiments/src/f_discus.c | 116 +++++++++++++++++++++- code-experiments/src/suite_largescale.c | 5 +- 3 files changed, 118 insertions(+), 5 deletions(-) diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 865a2b236..0ec0032db 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -146,7 +146,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "block_rotated"); + coco_problem_set_type(problem, "large_scale_block_rotated"); ls_free_block_matrix(B, dimension); diff --git a/code-experiments/src/f_discus.c b/code-experiments/src/f_discus.c index 4ad344805..5e62ae180 100644 --- a/code-experiments/src/f_discus.c +++ b/code-experiments/src/f_discus.c @@ -13,6 +13,10 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" +#include "transform_vars_permblockdiag.c" + +#define proportion_short_axes_denom 40 + /** * @brief Implements the discus function without connections to any COCO structures. */ @@ -43,16 +47,67 @@ static void f_discus_evaluate(coco_problem_t *problem, const double *x, double * * @brief Allocates the basic discus problem. */ static coco_problem_t *f_discus_allocate(const size_t number_of_variables) { - + coco_problem_t *problem = coco_problem_allocate_from_scalars("discus function", - f_discus_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + f_discus_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "discus", number_of_variables); - + /* Compute best solution */ f_discus_evaluate(problem, problem->best_parameter, problem->best_value); return problem; } +/** + * @brief Implements the generalized discus function without connections to any COCO structures. + */ +static double f_discus_generalized_raw(const double *x, const size_t number_of_variables) { + + static const double condition = 1.0e6; + size_t i, nb_short_axes; + double result; + result = 0; + nb_short_axes = number_of_variables / proportion_short_axes_denom; + if (number_of_variables % proportion_short_axes_denom != 0) { + nb_short_axes += 1; + } + + for (i = 0; i < nb_short_axes; ++i) { + result += x[i] * x[i]; + } + result *= condition; + + for (i = nb_short_axes; i < number_of_variables; ++i) { + result += x[i] * x[i]; + } + + return result; +} + +/** + * @brief Uses the generalized raw function to evaluate the COCO problem. + */ +static void f_discus_gen_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_discus_generalized_raw(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic generalized discus problem. + */ +static coco_problem_t *f_discus_gen_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized discus function", + f_discus_gen_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + coco_problem_set_id(problem, "%s_d%02lu", "discus_gen", number_of_variables); + + /* Compute best solution */ + f_discus_gen_evaluate(problem, problem->best_parameter, problem->best_value); + return problem; +} + + + /** * @brief Creates the BBOB discus problem. */ @@ -94,3 +149,58 @@ static coco_problem_t *f_discus_bbob_problem_allocate(const size_t function, coco_free_memory(xopt); return problem; } + + + +static coco_problem_t *f_discus_gen_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); + swap_range = ls_get_swap_range(dimension); + nb_swaps = ls_get_nb_swaps(dimension); + + xopt = coco_allocate_vector(dimension); + bbob2009_compute_xopt(xopt, rseed, dimension); + fopt = bbob2009_compute_fopt(function, instance); + + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + + problem = f_discus_gen_allocate(dimension); + problem = transform_vars_oscillate(problem); + problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + + ls_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + coco_free_memory(xopt); + return problem; + +} + diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index c8019eb26..4d4bb6734 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -22,7 +22,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; /*const size_t dimensions[] = { 8, 16, 32, 64, 128, 256,512,1024};*/ const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280}; - suite = coco_suite_allocate("bbob-largescale", 2, 6, dimensions, "instances:1-15"); + suite = coco_suite_allocate("bbob-largescale", 3, 6, dimensions, "instances:1-15"); return suite; } @@ -46,6 +46,9 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, } else if (function == 2) { problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); + } else if (function == 3) { + problem = f_discus_gen_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else { coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", function, instance, dimension); From 00616f4a3c6e1753b70412762ae80dbe8631e87a Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sat, 30 Jan 2016 14:14:43 +0100 Subject: [PATCH 004/446] added the discuss function (generalized version) to the large_scale suite --- code-experiments/src/f_different_powers.c | 2 +- code-experiments/src/f_discus.c | 116 +++++++++++++++++++++- code-experiments/src/suite_largescale.c | 5 +- 3 files changed, 118 insertions(+), 5 deletions(-) diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 865a2b236..0ec0032db 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -146,7 +146,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "block_rotated"); + coco_problem_set_type(problem, "large_scale_block_rotated"); ls_free_block_matrix(B, dimension); diff --git a/code-experiments/src/f_discus.c b/code-experiments/src/f_discus.c index 4ad344805..5e62ae180 100644 --- a/code-experiments/src/f_discus.c +++ b/code-experiments/src/f_discus.c @@ -13,6 +13,10 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" +#include "transform_vars_permblockdiag.c" + +#define proportion_short_axes_denom 40 + /** * @brief Implements the discus function without connections to any COCO structures. */ @@ -43,16 +47,67 @@ static void f_discus_evaluate(coco_problem_t *problem, const double *x, double * * @brief Allocates the basic discus problem. */ static coco_problem_t *f_discus_allocate(const size_t number_of_variables) { - + coco_problem_t *problem = coco_problem_allocate_from_scalars("discus function", - f_discus_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + f_discus_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "discus", number_of_variables); - + /* Compute best solution */ f_discus_evaluate(problem, problem->best_parameter, problem->best_value); return problem; } +/** + * @brief Implements the generalized discus function without connections to any COCO structures. + */ +static double f_discus_generalized_raw(const double *x, const size_t number_of_variables) { + + static const double condition = 1.0e6; + size_t i, nb_short_axes; + double result; + result = 0; + nb_short_axes = number_of_variables / proportion_short_axes_denom; + if (number_of_variables % proportion_short_axes_denom != 0) { + nb_short_axes += 1; + } + + for (i = 0; i < nb_short_axes; ++i) { + result += x[i] * x[i]; + } + result *= condition; + + for (i = nb_short_axes; i < number_of_variables; ++i) { + result += x[i] * x[i]; + } + + return result; +} + +/** + * @brief Uses the generalized raw function to evaluate the COCO problem. + */ +static void f_discus_gen_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_discus_generalized_raw(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic generalized discus problem. + */ +static coco_problem_t *f_discus_gen_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized discus function", + f_discus_gen_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + coco_problem_set_id(problem, "%s_d%02lu", "discus_gen", number_of_variables); + + /* Compute best solution */ + f_discus_gen_evaluate(problem, problem->best_parameter, problem->best_value); + return problem; +} + + + /** * @brief Creates the BBOB discus problem. */ @@ -94,3 +149,58 @@ static coco_problem_t *f_discus_bbob_problem_allocate(const size_t function, coco_free_memory(xopt); return problem; } + + + +static coco_problem_t *f_discus_gen_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); + swap_range = ls_get_swap_range(dimension); + nb_swaps = ls_get_nb_swaps(dimension); + + xopt = coco_allocate_vector(dimension); + bbob2009_compute_xopt(xopt, rseed, dimension); + fopt = bbob2009_compute_fopt(function, instance); + + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + + problem = f_discus_gen_allocate(dimension); + problem = transform_vars_oscillate(problem); + problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + + ls_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + coco_free_memory(xopt); + return problem; + +} + diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index c8019eb26..4d4bb6734 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -22,7 +22,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; /*const size_t dimensions[] = { 8, 16, 32, 64, 128, 256,512,1024};*/ const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280}; - suite = coco_suite_allocate("bbob-largescale", 2, 6, dimensions, "instances:1-15"); + suite = coco_suite_allocate("bbob-largescale", 3, 6, dimensions, "instances:1-15"); return suite; } @@ -46,6 +46,9 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, } else if (function == 2) { problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); + } else if (function == 3) { + problem = f_discus_gen_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else { coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", function, instance, dimension); From 846a65000e8ec767baa50c0975aef5438b773bfe Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sat, 30 Jan 2016 15:00:46 +0100 Subject: [PATCH 005/446] added generalized bent_cigar function to large scale suite --- code-experiments/src/f_bent_cigar.c | 108 ++++++++++++++++++++++++ code-experiments/src/f_discus.c | 17 ++-- code-experiments/src/suite_largescale.c | 7 +- 3 files changed, 121 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/f_bent_cigar.c b/code-experiments/src/f_bent_cigar.c index b1187e8d4..b10813517 100644 --- a/code-experiments/src/f_bent_cigar.c +++ b/code-experiments/src/f_bent_cigar.c @@ -14,6 +14,10 @@ #include "transform_vars_asymmetric.c" #include "transform_vars_shift.c" +#include "transform_vars_permblockdiag.c" + +#define proportion_long_axes_denom 40 + /** * @brief Implements the bent cigar function without connections to any COCO structures. */ @@ -53,6 +57,55 @@ static coco_problem_t *f_bent_cigar_allocate(const size_t number_of_variables) { return problem; } + + +/** + * @brief Implements the generalized bent cigar function without connections to any COCO structures. + */ +static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables) { + + static const double condition = 1.0e6; + size_t i, nb_long_axes; + double result; + result = 0; + nb_long_axes = number_of_variables / proportion_long_axes_denom; + if (number_of_variables % proportion_long_axes_denom != 0) { + nb_long_axes += 1; + } + + for (i = 0; i < nb_long_axes; ++i) { + result += x[i] * x[i]; + } + for (i = nb_long_axes; i < number_of_variables; ++i) { + result += condition * x[i] * x[i]; + } + return result; +} + +/** + * @brief Uses the generalized raw function to evaluate the COCO problem. + */ +static void f_bent_cigar_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_bent_cigar_generalized_raw(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic generalized bent cigar problem. + */ +static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized bent cigar function", + f_bent_cigar_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + coco_problem_set_id(problem, "%s_d%02lu", "bent_cigar", number_of_variables); + + /* Compute best solution */ + f_bent_cigar_generalized_evaluate(problem, problem->best_parameter, problem->best_value); + return problem; +} + + /** * @brief Creates the BBOB bent cigar problem. */ @@ -95,3 +148,58 @@ static coco_problem_t *f_bent_cigar_bbob_problem_allocate(const size_t function, coco_free_memory(xopt); return problem; } + + + +static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); + swap_range = ls_get_swap_range(dimension); + nb_swaps = ls_get_nb_swaps(dimension); + + xopt = coco_allocate_vector(dimension); + bbob2009_compute_xopt(xopt, rseed + 1000000, dimension); + fopt = bbob2009_compute_fopt(function, instance); + + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + + problem = f_bent_cigar_generalized_allocate(dimension); + problem = transform_obj_shift(problem, fopt); + problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_asymmetric(problem, 0.5); + problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_shift(problem, xopt, 0); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + ls_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + coco_free_memory(xopt); + return problem; +} + + diff --git a/code-experiments/src/f_discus.c b/code-experiments/src/f_discus.c index 5e62ae180..46f0cd3dc 100644 --- a/code-experiments/src/f_discus.c +++ b/code-experiments/src/f_discus.c @@ -15,7 +15,7 @@ #include "transform_vars_permblockdiag.c" -#define proportion_short_axes_denom 40 +#define proportion_short_axes_denom 40 /* Make it a parameter of f_discus_generalized_raw? */ /** * @brief Implements the discus function without connections to any COCO structures. @@ -86,7 +86,7 @@ static double f_discus_generalized_raw(const double *x, const size_t number_of_v /** * @brief Uses the generalized raw function to evaluate the COCO problem. */ -static void f_discus_gen_evaluate(coco_problem_t *problem, const double *x, double *y) { +static void f_discus_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); y[0] = f_discus_generalized_raw(x, problem->number_of_variables); assert(y[0] + 1e-13 >= problem->best_value[0]); @@ -95,14 +95,14 @@ static void f_discus_gen_evaluate(coco_problem_t *problem, const double *x, doub /** * @brief Allocates the basic generalized discus problem. */ -static coco_problem_t *f_discus_gen_allocate(const size_t number_of_variables) { +static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_variables) { coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized discus function", - f_discus_gen_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); - coco_problem_set_id(problem, "%s_d%02lu", "discus_gen", number_of_variables); + f_discus_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + coco_problem_set_id(problem, "%s_d%02lu", "discus_generalized", number_of_variables); /* Compute best solution */ - f_discus_gen_evaluate(problem, problem->best_parameter, problem->best_value); + f_discus_generalized_evaluate(problem, problem->best_parameter, problem->best_value); return problem; } @@ -152,7 +152,7 @@ static coco_problem_t *f_discus_bbob_problem_allocate(const size_t function, -static coco_problem_t *f_discus_gen_permblockdiag_bbob_problem_allocate(const size_t function, +static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, const long rseed, @@ -185,7 +185,7 @@ static coco_problem_t *f_discus_gen_permblockdiag_bbob_problem_allocate(const si ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - problem = f_discus_gen_allocate(dimension); + problem = f_discus_generalized_allocate(dimension); problem = transform_vars_oscillate(problem); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); @@ -201,6 +201,5 @@ static coco_problem_t *f_discus_gen_permblockdiag_bbob_problem_allocate(const si coco_free_memory(block_sizes); coco_free_memory(xopt); return problem; - } diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 4d4bb6734..45909e5bc 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -22,7 +22,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; /*const size_t dimensions[] = { 8, 16, 32, 64, 128, 256,512,1024};*/ const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280}; - suite = coco_suite_allocate("bbob-largescale", 3, 6, dimensions, "instances:1-15"); + suite = coco_suite_allocate("bbob-largescale", 4, 6, dimensions, "instances:1-15"); return suite; } @@ -47,8 +47,11 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 3) { - problem = f_discus_gen_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem = f_discus_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); + } else if (function == 4) { + problem = f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else { coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", function, instance, dimension); From 9365dd0aab9fb0e2b72c20155ffcdd9bc7d44743 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sat, 30 Jan 2016 15:00:46 +0100 Subject: [PATCH 006/446] added generalized bent_cigar function to large scale suite --- code-experiments/src/f_bent_cigar.c | 108 ++++++++++++++++++++++++ code-experiments/src/f_discus.c | 17 ++-- code-experiments/src/suite_largescale.c | 7 +- 3 files changed, 121 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/f_bent_cigar.c b/code-experiments/src/f_bent_cigar.c index b1187e8d4..b10813517 100644 --- a/code-experiments/src/f_bent_cigar.c +++ b/code-experiments/src/f_bent_cigar.c @@ -14,6 +14,10 @@ #include "transform_vars_asymmetric.c" #include "transform_vars_shift.c" +#include "transform_vars_permblockdiag.c" + +#define proportion_long_axes_denom 40 + /** * @brief Implements the bent cigar function without connections to any COCO structures. */ @@ -53,6 +57,55 @@ static coco_problem_t *f_bent_cigar_allocate(const size_t number_of_variables) { return problem; } + + +/** + * @brief Implements the generalized bent cigar function without connections to any COCO structures. + */ +static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables) { + + static const double condition = 1.0e6; + size_t i, nb_long_axes; + double result; + result = 0; + nb_long_axes = number_of_variables / proportion_long_axes_denom; + if (number_of_variables % proportion_long_axes_denom != 0) { + nb_long_axes += 1; + } + + for (i = 0; i < nb_long_axes; ++i) { + result += x[i] * x[i]; + } + for (i = nb_long_axes; i < number_of_variables; ++i) { + result += condition * x[i] * x[i]; + } + return result; +} + +/** + * @brief Uses the generalized raw function to evaluate the COCO problem. + */ +static void f_bent_cigar_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_bent_cigar_generalized_raw(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic generalized bent cigar problem. + */ +static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized bent cigar function", + f_bent_cigar_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + coco_problem_set_id(problem, "%s_d%02lu", "bent_cigar", number_of_variables); + + /* Compute best solution */ + f_bent_cigar_generalized_evaluate(problem, problem->best_parameter, problem->best_value); + return problem; +} + + /** * @brief Creates the BBOB bent cigar problem. */ @@ -95,3 +148,58 @@ static coco_problem_t *f_bent_cigar_bbob_problem_allocate(const size_t function, coco_free_memory(xopt); return problem; } + + + +static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); + swap_range = ls_get_swap_range(dimension); + nb_swaps = ls_get_nb_swaps(dimension); + + xopt = coco_allocate_vector(dimension); + bbob2009_compute_xopt(xopt, rseed + 1000000, dimension); + fopt = bbob2009_compute_fopt(function, instance); + + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + + problem = f_bent_cigar_generalized_allocate(dimension); + problem = transform_obj_shift(problem, fopt); + problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_asymmetric(problem, 0.5); + problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_shift(problem, xopt, 0); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + ls_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + coco_free_memory(xopt); + return problem; +} + + diff --git a/code-experiments/src/f_discus.c b/code-experiments/src/f_discus.c index 5e62ae180..46f0cd3dc 100644 --- a/code-experiments/src/f_discus.c +++ b/code-experiments/src/f_discus.c @@ -15,7 +15,7 @@ #include "transform_vars_permblockdiag.c" -#define proportion_short_axes_denom 40 +#define proportion_short_axes_denom 40 /* Make it a parameter of f_discus_generalized_raw? */ /** * @brief Implements the discus function without connections to any COCO structures. @@ -86,7 +86,7 @@ static double f_discus_generalized_raw(const double *x, const size_t number_of_v /** * @brief Uses the generalized raw function to evaluate the COCO problem. */ -static void f_discus_gen_evaluate(coco_problem_t *problem, const double *x, double *y) { +static void f_discus_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); y[0] = f_discus_generalized_raw(x, problem->number_of_variables); assert(y[0] + 1e-13 >= problem->best_value[0]); @@ -95,14 +95,14 @@ static void f_discus_gen_evaluate(coco_problem_t *problem, const double *x, doub /** * @brief Allocates the basic generalized discus problem. */ -static coco_problem_t *f_discus_gen_allocate(const size_t number_of_variables) { +static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_variables) { coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized discus function", - f_discus_gen_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); - coco_problem_set_id(problem, "%s_d%02lu", "discus_gen", number_of_variables); + f_discus_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + coco_problem_set_id(problem, "%s_d%02lu", "discus_generalized", number_of_variables); /* Compute best solution */ - f_discus_gen_evaluate(problem, problem->best_parameter, problem->best_value); + f_discus_generalized_evaluate(problem, problem->best_parameter, problem->best_value); return problem; } @@ -152,7 +152,7 @@ static coco_problem_t *f_discus_bbob_problem_allocate(const size_t function, -static coco_problem_t *f_discus_gen_permblockdiag_bbob_problem_allocate(const size_t function, +static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, const long rseed, @@ -185,7 +185,7 @@ static coco_problem_t *f_discus_gen_permblockdiag_bbob_problem_allocate(const si ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - problem = f_discus_gen_allocate(dimension); + problem = f_discus_generalized_allocate(dimension); problem = transform_vars_oscillate(problem); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); @@ -201,6 +201,5 @@ static coco_problem_t *f_discus_gen_permblockdiag_bbob_problem_allocate(const si coco_free_memory(block_sizes); coco_free_memory(xopt); return problem; - } diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 4d4bb6734..45909e5bc 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -22,7 +22,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; /*const size_t dimensions[] = { 8, 16, 32, 64, 128, 256,512,1024};*/ const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280}; - suite = coco_suite_allocate("bbob-largescale", 3, 6, dimensions, "instances:1-15"); + suite = coco_suite_allocate("bbob-largescale", 4, 6, dimensions, "instances:1-15"); return suite; } @@ -47,8 +47,11 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 3) { - problem = f_discus_gen_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem = f_discus_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); + } else if (function == 4) { + problem = f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else { coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", function, instance, dimension); From 33d4aa723a22b2ce0b14f1a5400098277938bace Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sat, 30 Jan 2016 22:43:01 +0100 Subject: [PATCH 007/446] added transform_obj_norm_by_dim.c that allows to normalize functions by dim --- code-experiments/src/f_bent_cigar.c | 7 +++- code-experiments/src/f_different_powers.c | 5 ++- code-experiments/src/f_discus.c | 4 ++ code-experiments/src/f_ellipsoid.c | 4 +- .../src/transform_obj_norm_by_dim.c | 37 +++++++++++++++++++ code-postprocessing/bbob_pproc/config.py | 4 +- .../bbob_pproc/genericsettings.py | 1 + .../latex-templates/templateBBOBarticle.tex | 2 +- 8 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 code-experiments/src/transform_obj_norm_by_dim.c diff --git a/code-experiments/src/f_bent_cigar.c b/code-experiments/src/f_bent_cigar.c index b10813517..57c1033c5 100644 --- a/code-experiments/src/f_bent_cigar.c +++ b/code-experiments/src/f_bent_cigar.c @@ -15,6 +15,7 @@ #include "transform_vars_shift.c" #include "transform_vars_permblockdiag.c" +#include "transform_obj_norm_by_dim.c" #define proportion_long_axes_denom 40 @@ -61,6 +62,7 @@ static coco_problem_t *f_bent_cigar_allocate(const size_t number_of_variables) { /** * @brief Implements the generalized bent cigar function without connections to any COCO structures. + * put it in a separate source file f_bent_cigar_generalized.c ? */ static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables) { @@ -185,11 +187,14 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc problem = f_bent_cigar_generalized_allocate(dimension); - problem = transform_obj_shift(problem, fopt); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_asymmetric(problem, 0.5); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 0ec0032db..e64617b45 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -14,6 +14,7 @@ #include "transform_vars_shift.c" #include "transform_vars_permblockdiag.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the different powers function without connections to any COCO structures. @@ -140,10 +141,12 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co problem = f_different_powers_allocate(dimension); - problem = transform_obj_shift(problem, fopt); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); diff --git a/code-experiments/src/f_discus.c b/code-experiments/src/f_discus.c index 46f0cd3dc..196a9d9c9 100644 --- a/code-experiments/src/f_discus.c +++ b/code-experiments/src/f_discus.c @@ -14,6 +14,7 @@ #include "transform_obj_shift.c" #include "transform_vars_permblockdiag.c" +#include "transform_obj_norm_by_dim.c" #define proportion_short_axes_denom 40 /* Make it a parameter of f_discus_generalized_raw? */ @@ -189,7 +190,10 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( problem = transform_vars_oscillate(problem); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 24675aaf0..2f2131dda 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -15,7 +15,7 @@ #include "transform_obj_shift.c" #include "transform_vars_permblockdiag.c" - +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the ellipsoid function without connections to any COCO structures. */ @@ -166,6 +166,8 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_oscillate(problem); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/transform_obj_norm_by_dim.c b/code-experiments/src/transform_obj_norm_by_dim.c new file mode 100644 index 000000000..b5c84592d --- /dev/null +++ b/code-experiments/src/transform_obj_norm_by_dim.c @@ -0,0 +1,37 @@ +/** + * @file transform_obj_norm_by_dim.c + * @brief Implementation of nomalizing the objective value by dividing the fitness by the number of variables + */ + +#include + +#include "coco.h" +#include "coco_problem.c" + +/** + * @brief Data type for transform_obj_norm_by_dim + */ +typedef struct { + double offset; +} transform_obj_norm_by_dim_data_t; + +/** + * @brief Evaluates the transformation. + */ +static void transform_obj_norm_by_dim_evaluate(coco_problem_t *problem, const double *x, double *y) { + coco_evaluate_function(coco_problem_transformed_get_inner_problem(problem), x, y); + y[0] = y[0] / ((double) problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Creates the transformation. + */ +static coco_problem_t *transform_obj_norm_by_dim(coco_problem_t *inner_problem) { + coco_problem_t *problem; + problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL); + problem->evaluate_function = transform_obj_norm_by_dim_evaluate; + transform_obj_norm_by_dim_evaluate(problem, problem->best_parameter, problem->best_value); + + return problem; +} diff --git a/code-postprocessing/bbob_pproc/config.py b/code-postprocessing/bbob_pproc/config.py index a8038468e..d61653fa9 100644 --- a/code-postprocessing/bbob_pproc/config.py +++ b/code-postprocessing/bbob_pproc/config.py @@ -49,7 +49,9 @@ def config(isBiobjective): """called from a high level, e.g. rungeneric, to configure the lower level modules via modifying parameter settings. """ - # pprldist.plotRLDistr2 needs to be revised regarding run_length based targets + # pprldist.plotRLDistr2 needs to be revised regarding run_length based targets + genericsettings.runlength_based_targets = False #Wassim TODO: remove hack to enforce non-exp setting + if genericsettings.runlength_based_targets in (True, 1): print 'Using bestGECCO2009 based target values: now for each function the target ' + \ 'values differ, but the "level of difficulty" is "the same". ' diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 778d4727e..b8f1157bd 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -25,6 +25,7 @@ maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = 'auto' # 'auto' means automatic choice, otherwise True or False dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules +dimensions_to_display = (40, 80) # Wassim TODO: must only be used for large scale generate_svg_files = False # generate the svg figures scaling_figures_with_boxes = True # should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? diff --git a/code-postprocessing/latex-templates/templateBBOBarticle.tex b/code-postprocessing/latex-templates/templateBBOBarticle.tex index 12feed06f..06ade1a76 100644 --- a/code-postprocessing/latex-templates/templateBBOBarticle.tex +++ b/code-postprocessing/latex-templates/templateBBOBarticle.tex @@ -423,4 +423,4 @@ \section{Results} % \clearpage % otherwise the last figure might be missing -\end{document} +\end{document} \ No newline at end of file From c885019538c568713efa3bc5d75798a949e2f3cd Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sat, 30 Jan 2016 22:43:01 +0100 Subject: [PATCH 008/446] added transform_obj_norm_by_dim.c that allows to normalize functions by dim --- code-experiments/src/f_bent_cigar.c | 7 +++- code-experiments/src/f_different_powers.c | 5 ++- code-experiments/src/f_discus.c | 4 ++ code-experiments/src/f_ellipsoid.c | 4 +- .../src/transform_obj_norm_by_dim.c | 37 +++++++++++++++++++ code-postprocessing/bbob_pproc/config.py | 4 +- .../bbob_pproc/genericsettings.py | 1 + .../latex-templates/templateBBOBarticle.tex | 2 +- 8 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 code-experiments/src/transform_obj_norm_by_dim.c diff --git a/code-experiments/src/f_bent_cigar.c b/code-experiments/src/f_bent_cigar.c index b10813517..57c1033c5 100644 --- a/code-experiments/src/f_bent_cigar.c +++ b/code-experiments/src/f_bent_cigar.c @@ -15,6 +15,7 @@ #include "transform_vars_shift.c" #include "transform_vars_permblockdiag.c" +#include "transform_obj_norm_by_dim.c" #define proportion_long_axes_denom 40 @@ -61,6 +62,7 @@ static coco_problem_t *f_bent_cigar_allocate(const size_t number_of_variables) { /** * @brief Implements the generalized bent cigar function without connections to any COCO structures. + * put it in a separate source file f_bent_cigar_generalized.c ? */ static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables) { @@ -185,11 +187,14 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc problem = f_bent_cigar_generalized_allocate(dimension); - problem = transform_obj_shift(problem, fopt); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_asymmetric(problem, 0.5); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 0ec0032db..e64617b45 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -14,6 +14,7 @@ #include "transform_vars_shift.c" #include "transform_vars_permblockdiag.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the different powers function without connections to any COCO structures. @@ -140,10 +141,12 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co problem = f_different_powers_allocate(dimension); - problem = transform_obj_shift(problem, fopt); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); diff --git a/code-experiments/src/f_discus.c b/code-experiments/src/f_discus.c index 46f0cd3dc..196a9d9c9 100644 --- a/code-experiments/src/f_discus.c +++ b/code-experiments/src/f_discus.c @@ -14,6 +14,7 @@ #include "transform_obj_shift.c" #include "transform_vars_permblockdiag.c" +#include "transform_obj_norm_by_dim.c" #define proportion_short_axes_denom 40 /* Make it a parameter of f_discus_generalized_raw? */ @@ -189,7 +190,10 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( problem = transform_vars_oscillate(problem); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 24675aaf0..2f2131dda 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -15,7 +15,7 @@ #include "transform_obj_shift.c" #include "transform_vars_permblockdiag.c" - +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the ellipsoid function without connections to any COCO structures. */ @@ -166,6 +166,8 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_oscillate(problem); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/transform_obj_norm_by_dim.c b/code-experiments/src/transform_obj_norm_by_dim.c new file mode 100644 index 000000000..b5c84592d --- /dev/null +++ b/code-experiments/src/transform_obj_norm_by_dim.c @@ -0,0 +1,37 @@ +/** + * @file transform_obj_norm_by_dim.c + * @brief Implementation of nomalizing the objective value by dividing the fitness by the number of variables + */ + +#include + +#include "coco.h" +#include "coco_problem.c" + +/** + * @brief Data type for transform_obj_norm_by_dim + */ +typedef struct { + double offset; +} transform_obj_norm_by_dim_data_t; + +/** + * @brief Evaluates the transformation. + */ +static void transform_obj_norm_by_dim_evaluate(coco_problem_t *problem, const double *x, double *y) { + coco_evaluate_function(coco_problem_transformed_get_inner_problem(problem), x, y); + y[0] = y[0] / ((double) problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Creates the transformation. + */ +static coco_problem_t *transform_obj_norm_by_dim(coco_problem_t *inner_problem) { + coco_problem_t *problem; + problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL); + problem->evaluate_function = transform_obj_norm_by_dim_evaluate; + transform_obj_norm_by_dim_evaluate(problem, problem->best_parameter, problem->best_value); + + return problem; +} diff --git a/code-postprocessing/bbob_pproc/config.py b/code-postprocessing/bbob_pproc/config.py index a8038468e..d61653fa9 100644 --- a/code-postprocessing/bbob_pproc/config.py +++ b/code-postprocessing/bbob_pproc/config.py @@ -49,7 +49,9 @@ def config(isBiobjective): """called from a high level, e.g. rungeneric, to configure the lower level modules via modifying parameter settings. """ - # pprldist.plotRLDistr2 needs to be revised regarding run_length based targets + # pprldist.plotRLDistr2 needs to be revised regarding run_length based targets + genericsettings.runlength_based_targets = False #Wassim TODO: remove hack to enforce non-exp setting + if genericsettings.runlength_based_targets in (True, 1): print 'Using bestGECCO2009 based target values: now for each function the target ' + \ 'values differ, but the "level of difficulty" is "the same". ' diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 778d4727e..b8f1157bd 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -25,6 +25,7 @@ maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = 'auto' # 'auto' means automatic choice, otherwise True or False dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules +dimensions_to_display = (40, 80) # Wassim TODO: must only be used for large scale generate_svg_files = False # generate the svg figures scaling_figures_with_boxes = True # should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? diff --git a/code-postprocessing/latex-templates/templateBBOBarticle.tex b/code-postprocessing/latex-templates/templateBBOBarticle.tex index 12feed06f..06ade1a76 100644 --- a/code-postprocessing/latex-templates/templateBBOBarticle.tex +++ b/code-postprocessing/latex-templates/templateBBOBarticle.tex @@ -423,4 +423,4 @@ \section{Results} % \clearpage % otherwise the last figure might be missing -\end{document} +\end{document} \ No newline at end of file From 3fe3e04977566a51166e10d64a8d4e135dacac7e Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 8 Feb 2016 11:21:39 +0100 Subject: [PATCH 009/446] removed hacks to generate timing experiments and pproc plot --- code-experiments/src/f_ellipsoid.c | 3 +++ code-experiments/src/large_scale_transformations.c | 12 +++++------- code-experiments/src/suite_largescale.c | 5 ++--- code-experiments/src/transform_vars_permblockdiag.c | 8 ++------ code-postprocessing/bbob_pproc/config.py | 1 - code-postprocessing/bbob_pproc/genericsettings.py | 1 - 6 files changed, 12 insertions(+), 18 deletions(-) diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 2f2131dda..08de906e4 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -16,6 +16,9 @@ #include "transform_vars_permblockdiag.c" #include "transform_obj_norm_by_dim.c" + +size_t dim_now = 0; + /** * @brief Implements the ellipsoid function without connections to any COCO structures. */ diff --git a/code-experiments/src/large_scale_transformations.c b/code-experiments/src/large_scale_transformations.c index bdb7e5b39..687e42c7a 100644 --- a/code-experiments/src/large_scale_transformations.c +++ b/code-experiments/src/large_scale_transformations.c @@ -191,7 +191,7 @@ static void ls_compute_random_permutation(size_t *P, long seed, size_t n) { /* * returns a uniformly distributed integer between lower_bound and upper_bound using seed. */ -long ls_rand_int(long lower_bound, long upper_bound, coco_random_state_t *rng){ +static long ls_rand_int(long lower_bound, long upper_bound, coco_random_state_t *rng){ long range; range = upper_bound - lower_bound + 1; return ((long)(coco_random_uniform(rng) * (double) range)) + lower_bound; @@ -262,7 +262,7 @@ static void ls_compute_truncated_uniform_swap_permutation(size_t *P, long seed, /* * duplicates a size_t vector */ -size_t *coco_duplicate_size_t_vector(const size_t *src, const size_t number_of_elements) { +static size_t *coco_duplicate_size_t_vector(const size_t *src, const size_t number_of_elements) { size_t i; size_t *dst; @@ -281,13 +281,13 @@ size_t *coco_duplicate_size_t_vector(const size_t *src, const size_t number_of_e * returns the list of block_sizes and sets nb_blocks to its correct value * TODO: update with chosen parameter setting */ -size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension, const long seed){ +static size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension, const long seed){ size_t *block_sizes; size_t block_size; int i; coco_random_state_t *rng = coco_random_new((uint32_t) seed); - block_size = (size_t) bbob2009_fmin((double)dimension / 4, 100); + *nb_blocks = dimension / block_size + ((dimension % block_size) > 0); block_sizes = coco_allocate_vector_size_t(*nb_blocks); for (i = 0; i < *nb_blocks - 1; i++) { @@ -303,16 +303,14 @@ size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension, const long seed) /* * return the swap_range corresponding to the problem - * TODO: update with chosen parameter setting */ -size_t ls_get_swap_range(size_t dimension){ +static size_t ls_get_swap_range(size_t dimension){ return dimension / 3; } /* * return the number of swaps corresponding to the problem - * TODO: update with chosen parameter setting */ size_t ls_get_nb_swaps(size_t dimension){ return dimension; diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 45909e5bc..07422fd3d 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -20,9 +20,8 @@ static coco_suite_t *coco_suite_allocate(const char *suite_name, static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; - /*const size_t dimensions[] = { 8, 16, 32, 64, 128, 256,512,1024};*/ - const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280}; - suite = coco_suite_allocate("bbob-largescale", 4, 6, dimensions, "instances:1-15"); + const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280, 2560, 5120}; + suite = coco_suite_allocate("bbob-largescale", 4, 8, dimensions, "instances:1-15"); return suite; } diff --git a/code-experiments/src/transform_vars_permblockdiag.c b/code-experiments/src/transform_vars_permblockdiag.c index d5e425182..57f0ef446 100644 --- a/code-experiments/src/transform_vars_permblockdiag.c +++ b/code-experiments/src/transform_vars_permblockdiag.c @@ -26,10 +26,9 @@ static void transform_vars_permblockdiag_evaluate(coco_problem_t *problem, const size_t i, j, current_blocksize, first_non_zero_ind; transform_vars_permblockdiag_t *data; coco_problem_t *inner_problem; - + data = (transform_vars_permblockdiag_t *) coco_problem_transformed_get_data(problem); inner_problem = coco_problem_transformed_get_inner_problem(problem); - for (i = 0; i < inner_problem->number_of_variables; ++i) { current_blocksize = data->block_size_map[data->P2[i]];/*the block_size is that of the permuted line*/ first_non_zero_ind = data->first_non_zero_map[data->P2[i]]; @@ -38,11 +37,8 @@ static void transform_vars_permblockdiag_evaluate(coco_problem_t *problem, const for (j = first_non_zero_ind; j < first_non_zero_ind + current_blocksize; ++j) {/*blocksize[P2[i]]*/ data->x[i] += data->B[data->P2[i]][j - first_non_zero_ind] * x[data->P1[j]];/*all B lines start at 0*/ } - if (data->x[i] > 100 || data->x[i] < -100 || 1) { - } - } - + coco_evaluate_function(inner_problem, data->x, y); assert(y[0] + 1e-13 >= problem->best_value[0]); } diff --git a/code-postprocessing/bbob_pproc/config.py b/code-postprocessing/bbob_pproc/config.py index d61653fa9..e66435038 100644 --- a/code-postprocessing/bbob_pproc/config.py +++ b/code-postprocessing/bbob_pproc/config.py @@ -50,7 +50,6 @@ def config(isBiobjective): modules via modifying parameter settings. """ # pprldist.plotRLDistr2 needs to be revised regarding run_length based targets - genericsettings.runlength_based_targets = False #Wassim TODO: remove hack to enforce non-exp setting if genericsettings.runlength_based_targets in (True, 1): print 'Using bestGECCO2009 based target values: now for each function the target ' + \ diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index b8f1157bd..778d4727e 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -25,7 +25,6 @@ maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = 'auto' # 'auto' means automatic choice, otherwise True or False dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules -dimensions_to_display = (40, 80) # Wassim TODO: must only be used for large scale generate_svg_files = False # generate the svg figures scaling_figures_with_boxes = True # should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? From f1a75da7a5fd601deffe5b9eda52478f9516c458 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 8 Feb 2016 11:21:39 +0100 Subject: [PATCH 010/446] removed hacks to generate timing experiments and pproc plot --- code-experiments/src/f_ellipsoid.c | 3 +++ code-experiments/src/large_scale_transformations.c | 12 +++++------- code-experiments/src/suite_largescale.c | 5 ++--- code-experiments/src/transform_vars_permblockdiag.c | 8 ++------ code-postprocessing/bbob_pproc/config.py | 1 - code-postprocessing/bbob_pproc/genericsettings.py | 1 - 6 files changed, 12 insertions(+), 18 deletions(-) diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 2f2131dda..08de906e4 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -16,6 +16,9 @@ #include "transform_vars_permblockdiag.c" #include "transform_obj_norm_by_dim.c" + +size_t dim_now = 0; + /** * @brief Implements the ellipsoid function without connections to any COCO structures. */ diff --git a/code-experiments/src/large_scale_transformations.c b/code-experiments/src/large_scale_transformations.c index bdb7e5b39..687e42c7a 100644 --- a/code-experiments/src/large_scale_transformations.c +++ b/code-experiments/src/large_scale_transformations.c @@ -191,7 +191,7 @@ static void ls_compute_random_permutation(size_t *P, long seed, size_t n) { /* * returns a uniformly distributed integer between lower_bound and upper_bound using seed. */ -long ls_rand_int(long lower_bound, long upper_bound, coco_random_state_t *rng){ +static long ls_rand_int(long lower_bound, long upper_bound, coco_random_state_t *rng){ long range; range = upper_bound - lower_bound + 1; return ((long)(coco_random_uniform(rng) * (double) range)) + lower_bound; @@ -262,7 +262,7 @@ static void ls_compute_truncated_uniform_swap_permutation(size_t *P, long seed, /* * duplicates a size_t vector */ -size_t *coco_duplicate_size_t_vector(const size_t *src, const size_t number_of_elements) { +static size_t *coco_duplicate_size_t_vector(const size_t *src, const size_t number_of_elements) { size_t i; size_t *dst; @@ -281,13 +281,13 @@ size_t *coco_duplicate_size_t_vector(const size_t *src, const size_t number_of_e * returns the list of block_sizes and sets nb_blocks to its correct value * TODO: update with chosen parameter setting */ -size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension, const long seed){ +static size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension, const long seed){ size_t *block_sizes; size_t block_size; int i; coco_random_state_t *rng = coco_random_new((uint32_t) seed); - block_size = (size_t) bbob2009_fmin((double)dimension / 4, 100); + *nb_blocks = dimension / block_size + ((dimension % block_size) > 0); block_sizes = coco_allocate_vector_size_t(*nb_blocks); for (i = 0; i < *nb_blocks - 1; i++) { @@ -303,16 +303,14 @@ size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension, const long seed) /* * return the swap_range corresponding to the problem - * TODO: update with chosen parameter setting */ -size_t ls_get_swap_range(size_t dimension){ +static size_t ls_get_swap_range(size_t dimension){ return dimension / 3; } /* * return the number of swaps corresponding to the problem - * TODO: update with chosen parameter setting */ size_t ls_get_nb_swaps(size_t dimension){ return dimension; diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 45909e5bc..07422fd3d 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -20,9 +20,8 @@ static coco_suite_t *coco_suite_allocate(const char *suite_name, static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; - /*const size_t dimensions[] = { 8, 16, 32, 64, 128, 256,512,1024};*/ - const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280}; - suite = coco_suite_allocate("bbob-largescale", 4, 6, dimensions, "instances:1-15"); + const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280, 2560, 5120}; + suite = coco_suite_allocate("bbob-largescale", 4, 8, dimensions, "instances:1-15"); return suite; } diff --git a/code-experiments/src/transform_vars_permblockdiag.c b/code-experiments/src/transform_vars_permblockdiag.c index d5e425182..57f0ef446 100644 --- a/code-experiments/src/transform_vars_permblockdiag.c +++ b/code-experiments/src/transform_vars_permblockdiag.c @@ -26,10 +26,9 @@ static void transform_vars_permblockdiag_evaluate(coco_problem_t *problem, const size_t i, j, current_blocksize, first_non_zero_ind; transform_vars_permblockdiag_t *data; coco_problem_t *inner_problem; - + data = (transform_vars_permblockdiag_t *) coco_problem_transformed_get_data(problem); inner_problem = coco_problem_transformed_get_inner_problem(problem); - for (i = 0; i < inner_problem->number_of_variables; ++i) { current_blocksize = data->block_size_map[data->P2[i]];/*the block_size is that of the permuted line*/ first_non_zero_ind = data->first_non_zero_map[data->P2[i]]; @@ -38,11 +37,8 @@ static void transform_vars_permblockdiag_evaluate(coco_problem_t *problem, const for (j = first_non_zero_ind; j < first_non_zero_ind + current_blocksize; ++j) {/*blocksize[P2[i]]*/ data->x[i] += data->B[data->P2[i]][j - first_non_zero_ind] * x[data->P1[j]];/*all B lines start at 0*/ } - if (data->x[i] > 100 || data->x[i] < -100 || 1) { - } - } - + coco_evaluate_function(inner_problem, data->x, y); assert(y[0] + 1e-13 >= problem->best_value[0]); } diff --git a/code-postprocessing/bbob_pproc/config.py b/code-postprocessing/bbob_pproc/config.py index d61653fa9..e66435038 100644 --- a/code-postprocessing/bbob_pproc/config.py +++ b/code-postprocessing/bbob_pproc/config.py @@ -50,7 +50,6 @@ def config(isBiobjective): modules via modifying parameter settings. """ # pprldist.plotRLDistr2 needs to be revised regarding run_length based targets - genericsettings.runlength_based_targets = False #Wassim TODO: remove hack to enforce non-exp setting if genericsettings.runlength_based_targets in (True, 1): print 'Using bestGECCO2009 based target values: now for each function the target ' + \ diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index b8f1157bd..778d4727e 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -25,7 +25,6 @@ maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = 'auto' # 'auto' means automatic choice, otherwise True or False dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules -dimensions_to_display = (40, 80) # Wassim TODO: must only be used for large scale generate_svg_files = False # generate the svg figures scaling_figures_with_boxes = True # should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? From 75ff1d8bee1e85a8dd354245b1b691f49b20c914 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 8 Feb 2016 11:53:47 +0100 Subject: [PATCH 011/446] format --- code-experiments/src/f_bent_cigar.c | 20 ++++++------- code-experiments/src/f_different_powers.c | 19 ++++-------- code-experiments/src/f_discus.c | 30 +++++++++---------- code-experiments/src/f_ellipsoid.c | 6 ++-- .../src/large_scale_transformations.c | 6 ++-- code-experiments/src/suite_largescale.c | 2 ++ .../src/transform_obj_norm_by_dim.c | 2 +- 7 files changed, 35 insertions(+), 50 deletions(-) diff --git a/code-experiments/src/f_bent_cigar.c b/code-experiments/src/f_bent_cigar.c index 57c1033c5..13ee6bfde 100644 --- a/code-experiments/src/f_bent_cigar.c +++ b/code-experiments/src/f_bent_cigar.c @@ -65,7 +65,7 @@ static coco_problem_t *f_bent_cigar_allocate(const size_t number_of_variables) { * put it in a separate source file f_bent_cigar_generalized.c ? */ static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables) { - + static const double condition = 1.0e6; size_t i, nb_long_axes; double result; @@ -97,11 +97,11 @@ static void f_bent_cigar_generalized_evaluate(coco_problem_t *problem, const dou * @brief Allocates the basic generalized bent cigar problem. */ static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_variables) { - + coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized bent cigar function", f_bent_cigar_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "bent_cigar", number_of_variables); - + /* Compute best solution */ f_bent_cigar_generalized_evaluate(problem, problem->best_parameter, problem->best_value); return problem; @@ -169,23 +169,22 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc size_t nb_blocks; size_t swap_range; size_t nb_swaps; - - block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); - + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed + 1000000, dimension); fopt = bbob2009_compute_fopt(function, instance); - + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - + problem = f_bent_cigar_generalized_allocate(dimension); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_asymmetric(problem, 0.5); @@ -195,7 +194,6 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index e64617b45..3e37c6c52 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -99,22 +99,18 @@ static coco_problem_t *f_different_powers_bbob_problem_allocate(const size_t fun } - - - static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, const long rseed, const char *problem_id_template, const char *problem_name_template) { - double *xopt, fopt; coco_problem_t *problem = NULL; - + double **B; const double *const *B_copy; - + size_t *P1 = coco_allocate_vector_size_t(dimension); size_t *P2 = coco_allocate_vector_size_t(dimension); @@ -123,27 +119,25 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co size_t swap_range; size_t nb_swaps; - block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); - xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); - + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - problem = f_different_powers_allocate(dimension); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); - + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); @@ -151,7 +145,6 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); - ls_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); @@ -159,5 +152,3 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co coco_free_memory(xopt); return problem; } - - diff --git a/code-experiments/src/f_discus.c b/code-experiments/src/f_discus.c index 196a9d9c9..56d3a72c3 100644 --- a/code-experiments/src/f_discus.c +++ b/code-experiments/src/f_discus.c @@ -48,11 +48,11 @@ static void f_discus_evaluate(coco_problem_t *problem, const double *x, double * * @brief Allocates the basic discus problem. */ static coco_problem_t *f_discus_allocate(const size_t number_of_variables) { - + coco_problem_t *problem = coco_problem_allocate_from_scalars("discus function", - f_discus_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + f_discus_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "discus", number_of_variables); - + /* Compute best solution */ f_discus_evaluate(problem, problem->best_parameter, problem->best_value); return problem; @@ -71,16 +71,16 @@ static double f_discus_generalized_raw(const double *x, const size_t number_of_v if (number_of_variables % proportion_short_axes_denom != 0) { nb_short_axes += 1; } - + for (i = 0; i < nb_short_axes; ++i) { result += x[i] * x[i]; } result *= condition; - + for (i = nb_short_axes; i < number_of_variables; ++i) { result += x[i] * x[i]; } - + return result; } @@ -101,7 +101,7 @@ static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_vari coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized discus function", f_discus_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "discus_generalized", number_of_variables); - + /* Compute best solution */ f_discus_generalized_evaluate(problem, problem->best_parameter, problem->best_value); return problem; @@ -169,23 +169,22 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( size_t nb_blocks; size_t swap_range; size_t nb_swaps; - - block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); - + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); fopt = bbob2009_compute_fopt(function, instance); - + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - + problem = f_discus_generalized_allocate(dimension); problem = transform_vars_oscillate(problem); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); @@ -194,11 +193,10 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - + ls_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 08de906e4..c945e5801 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -17,8 +17,6 @@ #include "transform_vars_permblockdiag.c" #include "transform_obj_norm_by_dim.c" -size_t dim_now = 0; - /** * @brief Implements the ellipsoid function without connections to any COCO structures. */ @@ -147,7 +145,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz size_t swap_range; size_t nb_swaps; - block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); @@ -169,7 +167,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_oscillate(problem); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); - + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/large_scale_transformations.c b/code-experiments/src/large_scale_transformations.c index 241252812..9455e14a1 100644 --- a/code-experiments/src/large_scale_transformations.c +++ b/code-experiments/src/large_scale_transformations.c @@ -252,7 +252,7 @@ static void ls_compute_truncated_uniform_swap_permutation(size_t *P, long seed, /* generate random permutation instead */ ls_compute_random_permutation(P, seed, n); } - + } coco_random_free(rng); } @@ -281,7 +281,7 @@ static size_t *coco_duplicate_size_t_vector(const size_t *src, const size_t numb * returns the list of block_sizes and sets nb_blocks to its correct value * TODO: update with chosen parameter setting */ -static size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension, const long seed){ +static size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension){ size_t *block_sizes; size_t block_size; int i; @@ -294,8 +294,6 @@ static size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension, const lon block_sizes[i] = block_size; } block_sizes[*nb_blocks - 1] = dimension - (*nb_blocks - 1) * block_size; /*add rest*/ - - coco_random_free(rng); return block_sizes; } diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 07422fd3d..7eb80694f 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -6,6 +6,8 @@ #include "coco.h" #include "f_ellipsoid.c" +#include "f_discus.c" +#include "f_bent_cigar.c" #include "f_different_powers.c" static coco_suite_t *coco_suite_allocate(const char *suite_name, diff --git a/code-experiments/src/transform_obj_norm_by_dim.c b/code-experiments/src/transform_obj_norm_by_dim.c index b5c84592d..5121a44be 100644 --- a/code-experiments/src/transform_obj_norm_by_dim.c +++ b/code-experiments/src/transform_obj_norm_by_dim.c @@ -29,7 +29,7 @@ static void transform_obj_norm_by_dim_evaluate(coco_problem_t *problem, const do */ static coco_problem_t *transform_obj_norm_by_dim(coco_problem_t *inner_problem) { coco_problem_t *problem; - problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL); + problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL, "transform_obj_norm_by_dim"); problem->evaluate_function = transform_obj_norm_by_dim_evaluate; transform_obj_norm_by_dim_evaluate(problem, problem->best_parameter, problem->best_value); From 179a44ef1f86688c436659328dd25f09a812e9fe Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 8 Feb 2016 11:53:47 +0100 Subject: [PATCH 012/446] format --- code-experiments/src/f_bent_cigar.c | 20 ++++++------- code-experiments/src/f_different_powers.c | 19 ++++-------- code-experiments/src/f_discus.c | 30 +++++++++---------- code-experiments/src/f_ellipsoid.c | 6 ++-- .../src/large_scale_transformations.c | 6 ++-- code-experiments/src/suite_largescale.c | 2 ++ .../src/transform_obj_norm_by_dim.c | 2 +- 7 files changed, 35 insertions(+), 50 deletions(-) diff --git a/code-experiments/src/f_bent_cigar.c b/code-experiments/src/f_bent_cigar.c index 57c1033c5..13ee6bfde 100644 --- a/code-experiments/src/f_bent_cigar.c +++ b/code-experiments/src/f_bent_cigar.c @@ -65,7 +65,7 @@ static coco_problem_t *f_bent_cigar_allocate(const size_t number_of_variables) { * put it in a separate source file f_bent_cigar_generalized.c ? */ static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables) { - + static const double condition = 1.0e6; size_t i, nb_long_axes; double result; @@ -97,11 +97,11 @@ static void f_bent_cigar_generalized_evaluate(coco_problem_t *problem, const dou * @brief Allocates the basic generalized bent cigar problem. */ static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_variables) { - + coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized bent cigar function", f_bent_cigar_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "bent_cigar", number_of_variables); - + /* Compute best solution */ f_bent_cigar_generalized_evaluate(problem, problem->best_parameter, problem->best_value); return problem; @@ -169,23 +169,22 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc size_t nb_blocks; size_t swap_range; size_t nb_swaps; - - block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); - + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed + 1000000, dimension); fopt = bbob2009_compute_fopt(function, instance); - + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - + problem = f_bent_cigar_generalized_allocate(dimension); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_asymmetric(problem, 0.5); @@ -195,7 +194,6 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index e64617b45..3e37c6c52 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -99,22 +99,18 @@ static coco_problem_t *f_different_powers_bbob_problem_allocate(const size_t fun } - - - static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, const long rseed, const char *problem_id_template, const char *problem_name_template) { - double *xopt, fopt; coco_problem_t *problem = NULL; - + double **B; const double *const *B_copy; - + size_t *P1 = coco_allocate_vector_size_t(dimension); size_t *P2 = coco_allocate_vector_size_t(dimension); @@ -123,27 +119,25 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co size_t swap_range; size_t nb_swaps; - block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); - xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); - + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - problem = f_different_powers_allocate(dimension); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); - + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); @@ -151,7 +145,6 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); - ls_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); @@ -159,5 +152,3 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co coco_free_memory(xopt); return problem; } - - diff --git a/code-experiments/src/f_discus.c b/code-experiments/src/f_discus.c index 196a9d9c9..56d3a72c3 100644 --- a/code-experiments/src/f_discus.c +++ b/code-experiments/src/f_discus.c @@ -48,11 +48,11 @@ static void f_discus_evaluate(coco_problem_t *problem, const double *x, double * * @brief Allocates the basic discus problem. */ static coco_problem_t *f_discus_allocate(const size_t number_of_variables) { - + coco_problem_t *problem = coco_problem_allocate_from_scalars("discus function", - f_discus_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + f_discus_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "discus", number_of_variables); - + /* Compute best solution */ f_discus_evaluate(problem, problem->best_parameter, problem->best_value); return problem; @@ -71,16 +71,16 @@ static double f_discus_generalized_raw(const double *x, const size_t number_of_v if (number_of_variables % proportion_short_axes_denom != 0) { nb_short_axes += 1; } - + for (i = 0; i < nb_short_axes; ++i) { result += x[i] * x[i]; } result *= condition; - + for (i = nb_short_axes; i < number_of_variables; ++i) { result += x[i] * x[i]; } - + return result; } @@ -101,7 +101,7 @@ static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_vari coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized discus function", f_discus_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "discus_generalized", number_of_variables); - + /* Compute best solution */ f_discus_generalized_evaluate(problem, problem->best_parameter, problem->best_value); return problem; @@ -169,23 +169,22 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( size_t nb_blocks; size_t swap_range; size_t nb_swaps; - - block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); - + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); fopt = bbob2009_compute_fopt(function, instance); - + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - + problem = f_discus_generalized_allocate(dimension); problem = transform_vars_oscillate(problem); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); @@ -194,11 +193,10 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - + ls_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 08de906e4..c945e5801 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -17,8 +17,6 @@ #include "transform_vars_permblockdiag.c" #include "transform_obj_norm_by_dim.c" -size_t dim_now = 0; - /** * @brief Implements the ellipsoid function without connections to any COCO structures. */ @@ -147,7 +145,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz size_t swap_range; size_t nb_swaps; - block_sizes = ls_get_block_sizes(&nb_blocks, dimension, rseed); + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); @@ -169,7 +167,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_oscillate(problem); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); - + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/large_scale_transformations.c b/code-experiments/src/large_scale_transformations.c index 241252812..9455e14a1 100644 --- a/code-experiments/src/large_scale_transformations.c +++ b/code-experiments/src/large_scale_transformations.c @@ -252,7 +252,7 @@ static void ls_compute_truncated_uniform_swap_permutation(size_t *P, long seed, /* generate random permutation instead */ ls_compute_random_permutation(P, seed, n); } - + } coco_random_free(rng); } @@ -281,7 +281,7 @@ static size_t *coco_duplicate_size_t_vector(const size_t *src, const size_t numb * returns the list of block_sizes and sets nb_blocks to its correct value * TODO: update with chosen parameter setting */ -static size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension, const long seed){ +static size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension){ size_t *block_sizes; size_t block_size; int i; @@ -294,8 +294,6 @@ static size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension, const lon block_sizes[i] = block_size; } block_sizes[*nb_blocks - 1] = dimension - (*nb_blocks - 1) * block_size; /*add rest*/ - - coco_random_free(rng); return block_sizes; } diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 07422fd3d..7eb80694f 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -6,6 +6,8 @@ #include "coco.h" #include "f_ellipsoid.c" +#include "f_discus.c" +#include "f_bent_cigar.c" #include "f_different_powers.c" static coco_suite_t *coco_suite_allocate(const char *suite_name, diff --git a/code-experiments/src/transform_obj_norm_by_dim.c b/code-experiments/src/transform_obj_norm_by_dim.c index b5c84592d..5121a44be 100644 --- a/code-experiments/src/transform_obj_norm_by_dim.c +++ b/code-experiments/src/transform_obj_norm_by_dim.c @@ -29,7 +29,7 @@ static void transform_obj_norm_by_dim_evaluate(coco_problem_t *problem, const do */ static coco_problem_t *transform_obj_norm_by_dim(coco_problem_t *inner_problem) { coco_problem_t *problem; - problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL); + problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL, "transform_obj_norm_by_dim"); problem->evaluate_function = transform_obj_norm_by_dim_evaluate; transform_obj_norm_by_dim_evaluate(problem, problem->best_parameter, problem->best_value); From 4863712c6f2ec5acd1025618849a881b05e7bbae Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 8 Feb 2016 15:55:29 +0100 Subject: [PATCH 013/446] generalized bent cigar and discus functions are now defined in their own f_..._generalized.c files --- code-experiments/src/f_bent_cigar.c | 107 --------------- .../src/f_bent_cigar_generalized.c | 125 ++++++++++++++++++ code-experiments/src/f_discus.c | 107 --------------- code-experiments/src/f_discus_generalized.c | 125 ++++++++++++++++++ code-experiments/src/suite_largescale.c | 6 +- 5 files changed, 253 insertions(+), 217 deletions(-) create mode 100644 code-experiments/src/f_bent_cigar_generalized.c create mode 100644 code-experiments/src/f_discus_generalized.c diff --git a/code-experiments/src/f_bent_cigar.c b/code-experiments/src/f_bent_cigar.c index 13ee6bfde..d90b1666e 100644 --- a/code-experiments/src/f_bent_cigar.c +++ b/code-experiments/src/f_bent_cigar.c @@ -14,10 +14,6 @@ #include "transform_vars_asymmetric.c" #include "transform_vars_shift.c" -#include "transform_vars_permblockdiag.c" -#include "transform_obj_norm_by_dim.c" - -#define proportion_long_axes_denom 40 /** * @brief Implements the bent cigar function without connections to any COCO structures. @@ -59,55 +55,6 @@ static coco_problem_t *f_bent_cigar_allocate(const size_t number_of_variables) { } - -/** - * @brief Implements the generalized bent cigar function without connections to any COCO structures. - * put it in a separate source file f_bent_cigar_generalized.c ? - */ -static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables) { - - static const double condition = 1.0e6; - size_t i, nb_long_axes; - double result; - result = 0; - nb_long_axes = number_of_variables / proportion_long_axes_denom; - if (number_of_variables % proportion_long_axes_denom != 0) { - nb_long_axes += 1; - } - - for (i = 0; i < nb_long_axes; ++i) { - result += x[i] * x[i]; - } - for (i = nb_long_axes; i < number_of_variables; ++i) { - result += condition * x[i] * x[i]; - } - return result; -} - -/** - * @brief Uses the generalized raw function to evaluate the COCO problem. - */ -static void f_bent_cigar_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { - assert(problem->number_of_objectives == 1); - y[0] = f_bent_cigar_generalized_raw(x, problem->number_of_variables); - assert(y[0] + 1e-13 >= problem->best_value[0]); -} - -/** - * @brief Allocates the basic generalized bent cigar problem. - */ -static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_variables) { - - coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized bent cigar function", - f_bent_cigar_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); - coco_problem_set_id(problem, "%s_d%02lu", "bent_cigar", number_of_variables); - - /* Compute best solution */ - f_bent_cigar_generalized_evaluate(problem, problem->best_parameter, problem->best_value); - return problem; -} - - /** * @brief Creates the BBOB bent cigar problem. */ @@ -152,57 +99,3 @@ static coco_problem_t *f_bent_cigar_bbob_problem_allocate(const size_t function, } - -static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B; - const double *const *B_copy; - size_t *P1 = coco_allocate_vector_size_t(dimension); - size_t *P2 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes; - size_t nb_blocks; - size_t swap_range; - size_t nb_swaps; - - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); - - xopt = coco_allocate_vector(dimension); - bbob2009_compute_xopt(xopt, rseed + 1000000, dimension); - fopt = bbob2009_compute_fopt(function, instance); - - B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B; - - ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - problem = f_bent_cigar_generalized_allocate(dimension); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); - problem = transform_vars_asymmetric(problem, 0.5); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - ls_free_block_matrix(B, dimension); - coco_free_memory(P1); - coco_free_memory(P2); - coco_free_memory(block_sizes); - coco_free_memory(xopt); - return problem; -} - - diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c new file mode 100644 index 000000000..a31cd55c5 --- /dev/null +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -0,0 +1,125 @@ +/** + * @file f_bent_cigar_generalized.c + * @brief Implementation of the generalized bent cigar function and problem. + */ + +#include +#include + +#include "coco.h" +#include "coco_problem.c" +#include "suite_bbob_legacy_code.c" +#include "transform_obj_shift.c" +#include "transform_vars_affine.c" +#include "transform_vars_asymmetric.c" +#include "transform_vars_shift.c" + +#include "transform_vars_permblockdiag.c" +#include "transform_obj_norm_by_dim.c" + +#define proportion_long_axes_denom 40 + + +/** + * @brief Implements the generalized bent cigar function without connections to any COCO structures. + */ +static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables) { + + static const double condition = 1.0e6; + size_t i, nb_long_axes; + double result; + result = 0; + nb_long_axes = number_of_variables / proportion_long_axes_denom; + if (number_of_variables % proportion_long_axes_denom != 0) { + nb_long_axes += 1; + } + + for (i = 0; i < nb_long_axes; ++i) { + result += x[i] * x[i]; + } + for (i = nb_long_axes; i < number_of_variables; ++i) { + result += condition * x[i] * x[i]; + } + return result; +} + +/** + * @brief Uses the generalized raw function to evaluate the COCO problem. + */ +static void f_bent_cigar_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_bent_cigar_generalized_raw(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic generalized bent cigar problem. + */ +static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized bent cigar function", + f_bent_cigar_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + coco_problem_set_id(problem, "%s_d%02lu", "bent_cigar", number_of_variables); + + /* Compute best solution */ + f_bent_cigar_generalized_evaluate(problem, problem->best_parameter, problem->best_value); + return problem; +} + + +/** + * @brief Creates the BBOB generalized bent cigar problem. + */ +static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); + swap_range = ls_get_swap_range(dimension); + nb_swaps = ls_get_nb_swaps(dimension); + + xopt = coco_allocate_vector(dimension); + bbob2009_compute_xopt(xopt, rseed + 1000000, dimension); + fopt = bbob2009_compute_fopt(function, instance); + + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + problem = f_bent_cigar_generalized_allocate(dimension); + problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_asymmetric(problem, 0.5); + problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + ls_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + coco_free_memory(xopt); + return problem; +} + + diff --git a/code-experiments/src/f_discus.c b/code-experiments/src/f_discus.c index 56d3a72c3..da8f084dd 100644 --- a/code-experiments/src/f_discus.c +++ b/code-experiments/src/f_discus.c @@ -13,10 +13,6 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" -#include "transform_vars_permblockdiag.c" -#include "transform_obj_norm_by_dim.c" - -#define proportion_short_axes_denom 40 /* Make it a parameter of f_discus_generalized_raw? */ /** * @brief Implements the discus function without connections to any COCO structures. @@ -58,56 +54,6 @@ static coco_problem_t *f_discus_allocate(const size_t number_of_variables) { return problem; } -/** - * @brief Implements the generalized discus function without connections to any COCO structures. - */ -static double f_discus_generalized_raw(const double *x, const size_t number_of_variables) { - - static const double condition = 1.0e6; - size_t i, nb_short_axes; - double result; - result = 0; - nb_short_axes = number_of_variables / proportion_short_axes_denom; - if (number_of_variables % proportion_short_axes_denom != 0) { - nb_short_axes += 1; - } - - for (i = 0; i < nb_short_axes; ++i) { - result += x[i] * x[i]; - } - result *= condition; - - for (i = nb_short_axes; i < number_of_variables; ++i) { - result += x[i] * x[i]; - } - - return result; -} - -/** - * @brief Uses the generalized raw function to evaluate the COCO problem. - */ -static void f_discus_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { - assert(problem->number_of_objectives == 1); - y[0] = f_discus_generalized_raw(x, problem->number_of_variables); - assert(y[0] + 1e-13 >= problem->best_value[0]); -} - -/** - * @brief Allocates the basic generalized discus problem. - */ -static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_variables) { - - coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized discus function", - f_discus_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); - coco_problem_set_id(problem, "%s_d%02lu", "discus_generalized", number_of_variables); - - /* Compute best solution */ - f_discus_generalized_evaluate(problem, problem->best_parameter, problem->best_value); - return problem; -} - - /** * @brief Creates the BBOB discus problem. @@ -152,56 +98,3 @@ static coco_problem_t *f_discus_bbob_problem_allocate(const size_t function, } - -static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B; - const double *const *B_copy; - size_t *P1 = coco_allocate_vector_size_t(dimension); - size_t *P2 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes; - size_t nb_blocks; - size_t swap_range; - size_t nb_swaps; - - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); - - xopt = coco_allocate_vector(dimension); - bbob2009_compute_xopt(xopt, rseed, dimension); - fopt = bbob2009_compute_fopt(function, instance); - - B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B; - - ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - problem = f_discus_generalized_allocate(dimension); - problem = transform_vars_oscillate(problem); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - - ls_free_block_matrix(B, dimension); - coco_free_memory(P1); - coco_free_memory(P2); - coco_free_memory(block_sizes); - coco_free_memory(xopt); - return problem; -} - diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c new file mode 100644 index 000000000..c1a3ed362 --- /dev/null +++ b/code-experiments/src/f_discus_generalized.c @@ -0,0 +1,125 @@ +/** + * @file f_discus.c + * @brief Implementation of the discus function and problem. + */ + +#include + +#include "coco.h" +#include "coco_problem.c" +#include "suite_bbob_legacy_code.c" +#include "transform_vars_oscillate.c" +#include "transform_vars_shift.c" +#include "transform_obj_shift.c" + +#include "transform_vars_permblockdiag.c" +#include "transform_obj_norm_by_dim.c" + +#define proportion_short_axes_denom 40 /* Make it a parameter of f_discus_generalized_raw? */ + +/** + * @brief Implements the generalized discus function without connections to any COCO structures. + */ +static double f_discus_generalized_raw(const double *x, const size_t number_of_variables) { + + static const double condition = 1.0e6; + size_t i, nb_short_axes; + double result; + result = 0; + nb_short_axes = number_of_variables / proportion_short_axes_denom; + if (number_of_variables % proportion_short_axes_denom != 0) { + nb_short_axes += 1; + } + + for (i = 0; i < nb_short_axes; ++i) { + result += x[i] * x[i]; + } + result *= condition; + + for (i = nb_short_axes; i < number_of_variables; ++i) { + result += x[i] * x[i]; + } + + return result; +} + +/** + * @brief Uses the generalized raw function to evaluate the COCO problem. + */ +static void f_discus_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_discus_generalized_raw(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic generalized discus problem. + */ +static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized discus function", + f_discus_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + coco_problem_set_id(problem, "%s_d%02lu", "discus_generalized", number_of_variables); + + /* Compute best solution */ + f_discus_generalized_evaluate(problem, problem->best_parameter, problem->best_value); + return problem; +} + + + +/** + * @brief Creates the BBOB generalized discus problem. + */ +static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); + swap_range = ls_get_swap_range(dimension); + nb_swaps = ls_get_nb_swaps(dimension); + + xopt = coco_allocate_vector(dimension); + bbob2009_compute_xopt(xopt, rseed, dimension); + fopt = bbob2009_compute_fopt(function, instance); + + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + problem = f_discus_generalized_allocate(dimension); + problem = transform_vars_oscillate(problem); + problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + + ls_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + coco_free_memory(xopt); + return problem; +} + diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 7eb80694f..7472f4c22 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -6,8 +6,8 @@ #include "coco.h" #include "f_ellipsoid.c" -#include "f_discus.c" -#include "f_bent_cigar.c" +#include "f_discus_generalized.c" +#include "f_bent_cigar_generalized.c" #include "f_different_powers.c" static coco_suite_t *coco_suite_allocate(const char *suite_name, @@ -23,7 +23,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280, 2560, 5120}; - suite = coco_suite_allocate("bbob-largescale", 4, 8, dimensions, "instances:1-15"); + suite = coco_suite_allocate("bbob-largescale", 4, 8, dimensions, "instances:1-5"); return suite; } From a09e2021fe995402621135b02c8190c8b700b0bc Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 8 Feb 2016 15:55:29 +0100 Subject: [PATCH 014/446] generalized bent cigar and discus functions are now defined in their own f_..._generalized.c files --- code-experiments/src/f_bent_cigar.c | 107 --------------- .../src/f_bent_cigar_generalized.c | 125 ++++++++++++++++++ code-experiments/src/f_discus.c | 107 --------------- code-experiments/src/f_discus_generalized.c | 125 ++++++++++++++++++ code-experiments/src/suite_largescale.c | 6 +- 5 files changed, 253 insertions(+), 217 deletions(-) create mode 100644 code-experiments/src/f_bent_cigar_generalized.c create mode 100644 code-experiments/src/f_discus_generalized.c diff --git a/code-experiments/src/f_bent_cigar.c b/code-experiments/src/f_bent_cigar.c index 13ee6bfde..d90b1666e 100644 --- a/code-experiments/src/f_bent_cigar.c +++ b/code-experiments/src/f_bent_cigar.c @@ -14,10 +14,6 @@ #include "transform_vars_asymmetric.c" #include "transform_vars_shift.c" -#include "transform_vars_permblockdiag.c" -#include "transform_obj_norm_by_dim.c" - -#define proportion_long_axes_denom 40 /** * @brief Implements the bent cigar function without connections to any COCO structures. @@ -59,55 +55,6 @@ static coco_problem_t *f_bent_cigar_allocate(const size_t number_of_variables) { } - -/** - * @brief Implements the generalized bent cigar function without connections to any COCO structures. - * put it in a separate source file f_bent_cigar_generalized.c ? - */ -static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables) { - - static const double condition = 1.0e6; - size_t i, nb_long_axes; - double result; - result = 0; - nb_long_axes = number_of_variables / proportion_long_axes_denom; - if (number_of_variables % proportion_long_axes_denom != 0) { - nb_long_axes += 1; - } - - for (i = 0; i < nb_long_axes; ++i) { - result += x[i] * x[i]; - } - for (i = nb_long_axes; i < number_of_variables; ++i) { - result += condition * x[i] * x[i]; - } - return result; -} - -/** - * @brief Uses the generalized raw function to evaluate the COCO problem. - */ -static void f_bent_cigar_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { - assert(problem->number_of_objectives == 1); - y[0] = f_bent_cigar_generalized_raw(x, problem->number_of_variables); - assert(y[0] + 1e-13 >= problem->best_value[0]); -} - -/** - * @brief Allocates the basic generalized bent cigar problem. - */ -static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_variables) { - - coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized bent cigar function", - f_bent_cigar_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); - coco_problem_set_id(problem, "%s_d%02lu", "bent_cigar", number_of_variables); - - /* Compute best solution */ - f_bent_cigar_generalized_evaluate(problem, problem->best_parameter, problem->best_value); - return problem; -} - - /** * @brief Creates the BBOB bent cigar problem. */ @@ -152,57 +99,3 @@ static coco_problem_t *f_bent_cigar_bbob_problem_allocate(const size_t function, } - -static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B; - const double *const *B_copy; - size_t *P1 = coco_allocate_vector_size_t(dimension); - size_t *P2 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes; - size_t nb_blocks; - size_t swap_range; - size_t nb_swaps; - - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); - - xopt = coco_allocate_vector(dimension); - bbob2009_compute_xopt(xopt, rseed + 1000000, dimension); - fopt = bbob2009_compute_fopt(function, instance); - - B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B; - - ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - problem = f_bent_cigar_generalized_allocate(dimension); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); - problem = transform_vars_asymmetric(problem, 0.5); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - ls_free_block_matrix(B, dimension); - coco_free_memory(P1); - coco_free_memory(P2); - coco_free_memory(block_sizes); - coco_free_memory(xopt); - return problem; -} - - diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c new file mode 100644 index 000000000..a31cd55c5 --- /dev/null +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -0,0 +1,125 @@ +/** + * @file f_bent_cigar_generalized.c + * @brief Implementation of the generalized bent cigar function and problem. + */ + +#include +#include + +#include "coco.h" +#include "coco_problem.c" +#include "suite_bbob_legacy_code.c" +#include "transform_obj_shift.c" +#include "transform_vars_affine.c" +#include "transform_vars_asymmetric.c" +#include "transform_vars_shift.c" + +#include "transform_vars_permblockdiag.c" +#include "transform_obj_norm_by_dim.c" + +#define proportion_long_axes_denom 40 + + +/** + * @brief Implements the generalized bent cigar function without connections to any COCO structures. + */ +static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables) { + + static const double condition = 1.0e6; + size_t i, nb_long_axes; + double result; + result = 0; + nb_long_axes = number_of_variables / proportion_long_axes_denom; + if (number_of_variables % proportion_long_axes_denom != 0) { + nb_long_axes += 1; + } + + for (i = 0; i < nb_long_axes; ++i) { + result += x[i] * x[i]; + } + for (i = nb_long_axes; i < number_of_variables; ++i) { + result += condition * x[i] * x[i]; + } + return result; +} + +/** + * @brief Uses the generalized raw function to evaluate the COCO problem. + */ +static void f_bent_cigar_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_bent_cigar_generalized_raw(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic generalized bent cigar problem. + */ +static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized bent cigar function", + f_bent_cigar_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + coco_problem_set_id(problem, "%s_d%02lu", "bent_cigar", number_of_variables); + + /* Compute best solution */ + f_bent_cigar_generalized_evaluate(problem, problem->best_parameter, problem->best_value); + return problem; +} + + +/** + * @brief Creates the BBOB generalized bent cigar problem. + */ +static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); + swap_range = ls_get_swap_range(dimension); + nb_swaps = ls_get_nb_swaps(dimension); + + xopt = coco_allocate_vector(dimension); + bbob2009_compute_xopt(xopt, rseed + 1000000, dimension); + fopt = bbob2009_compute_fopt(function, instance); + + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + problem = f_bent_cigar_generalized_allocate(dimension); + problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_asymmetric(problem, 0.5); + problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + ls_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + coco_free_memory(xopt); + return problem; +} + + diff --git a/code-experiments/src/f_discus.c b/code-experiments/src/f_discus.c index 56d3a72c3..da8f084dd 100644 --- a/code-experiments/src/f_discus.c +++ b/code-experiments/src/f_discus.c @@ -13,10 +13,6 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" -#include "transform_vars_permblockdiag.c" -#include "transform_obj_norm_by_dim.c" - -#define proportion_short_axes_denom 40 /* Make it a parameter of f_discus_generalized_raw? */ /** * @brief Implements the discus function without connections to any COCO structures. @@ -58,56 +54,6 @@ static coco_problem_t *f_discus_allocate(const size_t number_of_variables) { return problem; } -/** - * @brief Implements the generalized discus function without connections to any COCO structures. - */ -static double f_discus_generalized_raw(const double *x, const size_t number_of_variables) { - - static const double condition = 1.0e6; - size_t i, nb_short_axes; - double result; - result = 0; - nb_short_axes = number_of_variables / proportion_short_axes_denom; - if (number_of_variables % proportion_short_axes_denom != 0) { - nb_short_axes += 1; - } - - for (i = 0; i < nb_short_axes; ++i) { - result += x[i] * x[i]; - } - result *= condition; - - for (i = nb_short_axes; i < number_of_variables; ++i) { - result += x[i] * x[i]; - } - - return result; -} - -/** - * @brief Uses the generalized raw function to evaluate the COCO problem. - */ -static void f_discus_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { - assert(problem->number_of_objectives == 1); - y[0] = f_discus_generalized_raw(x, problem->number_of_variables); - assert(y[0] + 1e-13 >= problem->best_value[0]); -} - -/** - * @brief Allocates the basic generalized discus problem. - */ -static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_variables) { - - coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized discus function", - f_discus_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); - coco_problem_set_id(problem, "%s_d%02lu", "discus_generalized", number_of_variables); - - /* Compute best solution */ - f_discus_generalized_evaluate(problem, problem->best_parameter, problem->best_value); - return problem; -} - - /** * @brief Creates the BBOB discus problem. @@ -152,56 +98,3 @@ static coco_problem_t *f_discus_bbob_problem_allocate(const size_t function, } - -static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B; - const double *const *B_copy; - size_t *P1 = coco_allocate_vector_size_t(dimension); - size_t *P2 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes; - size_t nb_blocks; - size_t swap_range; - size_t nb_swaps; - - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); - - xopt = coco_allocate_vector(dimension); - bbob2009_compute_xopt(xopt, rseed, dimension); - fopt = bbob2009_compute_fopt(function, instance); - - B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B; - - ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - problem = f_discus_generalized_allocate(dimension); - problem = transform_vars_oscillate(problem); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - - ls_free_block_matrix(B, dimension); - coco_free_memory(P1); - coco_free_memory(P2); - coco_free_memory(block_sizes); - coco_free_memory(xopt); - return problem; -} - diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c new file mode 100644 index 000000000..c1a3ed362 --- /dev/null +++ b/code-experiments/src/f_discus_generalized.c @@ -0,0 +1,125 @@ +/** + * @file f_discus.c + * @brief Implementation of the discus function and problem. + */ + +#include + +#include "coco.h" +#include "coco_problem.c" +#include "suite_bbob_legacy_code.c" +#include "transform_vars_oscillate.c" +#include "transform_vars_shift.c" +#include "transform_obj_shift.c" + +#include "transform_vars_permblockdiag.c" +#include "transform_obj_norm_by_dim.c" + +#define proportion_short_axes_denom 40 /* Make it a parameter of f_discus_generalized_raw? */ + +/** + * @brief Implements the generalized discus function without connections to any COCO structures. + */ +static double f_discus_generalized_raw(const double *x, const size_t number_of_variables) { + + static const double condition = 1.0e6; + size_t i, nb_short_axes; + double result; + result = 0; + nb_short_axes = number_of_variables / proportion_short_axes_denom; + if (number_of_variables % proportion_short_axes_denom != 0) { + nb_short_axes += 1; + } + + for (i = 0; i < nb_short_axes; ++i) { + result += x[i] * x[i]; + } + result *= condition; + + for (i = nb_short_axes; i < number_of_variables; ++i) { + result += x[i] * x[i]; + } + + return result; +} + +/** + * @brief Uses the generalized raw function to evaluate the COCO problem. + */ +static void f_discus_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_discus_generalized_raw(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic generalized discus problem. + */ +static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized discus function", + f_discus_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + coco_problem_set_id(problem, "%s_d%02lu", "discus_generalized", number_of_variables); + + /* Compute best solution */ + f_discus_generalized_evaluate(problem, problem->best_parameter, problem->best_value); + return problem; +} + + + +/** + * @brief Creates the BBOB generalized discus problem. + */ +static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); + swap_range = ls_get_swap_range(dimension); + nb_swaps = ls_get_nb_swaps(dimension); + + xopt = coco_allocate_vector(dimension); + bbob2009_compute_xopt(xopt, rseed, dimension); + fopt = bbob2009_compute_fopt(function, instance); + + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + problem = f_discus_generalized_allocate(dimension); + problem = transform_vars_oscillate(problem); + problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + + ls_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + coco_free_memory(xopt); + return problem; +} + diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 7eb80694f..7472f4c22 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -6,8 +6,8 @@ #include "coco.h" #include "f_ellipsoid.c" -#include "f_discus.c" -#include "f_bent_cigar.c" +#include "f_discus_generalized.c" +#include "f_bent_cigar_generalized.c" #include "f_different_powers.c" static coco_suite_t *coco_suite_allocate(const char *suite_name, @@ -23,7 +23,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280, 2560, 5120}; - suite = coco_suite_allocate("bbob-largescale", 4, 8, dimensions, "instances:1-15"); + suite = coco_suite_allocate("bbob-largescale", 4, 8, dimensions, "instances:1-5"); return suite; } From e97306d33b8185d9bb3d65b8d886773f5a11c4dd Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 8 Feb 2016 16:09:26 +0100 Subject: [PATCH 015/446] format --- .../src/f_bent_cigar_generalized.c | 22 +++++++-------- code-experiments/src/f_different_powers.c | 2 +- code-experiments/src/f_discus.c | 5 +--- code-experiments/src/f_discus_generalized.c | 28 +++++++++---------- 4 files changed, 27 insertions(+), 30 deletions(-) diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index a31cd55c5..a251ae6d2 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -24,7 +24,7 @@ * @brief Implements the generalized bent cigar function without connections to any COCO structures. */ static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables) { - + static const double condition = 1.0e6; size_t i, nb_long_axes; double result; @@ -33,7 +33,7 @@ static double f_bent_cigar_generalized_raw(const double *x, const size_t number_ if (number_of_variables % proportion_long_axes_denom != 0) { nb_long_axes += 1; } - + for (i = 0; i < nb_long_axes; ++i) { result += x[i] * x[i]; } @@ -56,11 +56,11 @@ static void f_bent_cigar_generalized_evaluate(coco_problem_t *problem, const dou * @brief Allocates the basic generalized bent cigar problem. */ static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_variables) { - + coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized bent cigar function", f_bent_cigar_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "bent_cigar", number_of_variables); - + /* Compute best solution */ f_bent_cigar_generalized_evaluate(problem, problem->best_parameter, problem->best_value); return problem; @@ -86,31 +86,31 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc size_t nb_blocks; size_t swap_range; size_t nb_swaps; - + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); - + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed + 1000000, dimension); fopt = bbob2009_compute_fopt(function, instance); - + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - + problem = f_bent_cigar_generalized_allocate(dimension); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_asymmetric(problem, 0.5); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); - + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 3e37c6c52..3da1e99ed 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -140,7 +140,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); diff --git a/code-experiments/src/f_discus.c b/code-experiments/src/f_discus.c index da8f084dd..25d9504af 100644 --- a/code-experiments/src/f_discus.c +++ b/code-experiments/src/f_discus.c @@ -46,7 +46,7 @@ static void f_discus_evaluate(coco_problem_t *problem, const double *x, double * static coco_problem_t *f_discus_allocate(const size_t number_of_variables) { coco_problem_t *problem = coco_problem_allocate_from_scalars("discus function", - f_discus_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + f_discus_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "discus", number_of_variables); /* Compute best solution */ @@ -54,7 +54,6 @@ static coco_problem_t *f_discus_allocate(const size_t number_of_variables) { return problem; } - /** * @brief Creates the BBOB discus problem. */ @@ -96,5 +95,3 @@ static coco_problem_t *f_discus_bbob_problem_allocate(const size_t function, coco_free_memory(xopt); return problem; } - - diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c index c1a3ed362..5e83d1616 100644 --- a/code-experiments/src/f_discus_generalized.c +++ b/code-experiments/src/f_discus_generalized.c @@ -21,7 +21,7 @@ * @brief Implements the generalized discus function without connections to any COCO structures. */ static double f_discus_generalized_raw(const double *x, const size_t number_of_variables) { - + static const double condition = 1.0e6; size_t i, nb_short_axes; double result; @@ -30,16 +30,16 @@ static double f_discus_generalized_raw(const double *x, const size_t number_of_v if (number_of_variables % proportion_short_axes_denom != 0) { nb_short_axes += 1; } - + for (i = 0; i < nb_short_axes; ++i) { result += x[i] * x[i]; } result *= condition; - + for (i = nb_short_axes; i < number_of_variables; ++i) { result += x[i] * x[i]; } - + return result; } @@ -56,11 +56,11 @@ static void f_discus_generalized_evaluate(coco_problem_t *problem, const double * @brief Allocates the basic generalized discus problem. */ static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_variables) { - + coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized discus function", f_discus_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "discus_generalized", number_of_variables); - + /* Compute best solution */ f_discus_generalized_evaluate(problem, problem->best_parameter, problem->best_value); return problem; @@ -87,34 +87,34 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( size_t nb_blocks; size_t swap_range; size_t nb_swaps; - + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); - + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); fopt = bbob2009_compute_fopt(function, instance); - + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - + problem = f_discus_generalized_allocate(dimension); problem = transform_vars_oscillate(problem); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); - + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - + ls_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); From 4de42d5417d589007e804fea9f7200da6f4a7520 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 8 Feb 2016 16:09:26 +0100 Subject: [PATCH 016/446] format --- .../src/f_bent_cigar_generalized.c | 22 +++++++-------- code-experiments/src/f_different_powers.c | 2 +- code-experiments/src/f_discus.c | 5 +--- code-experiments/src/f_discus_generalized.c | 28 +++++++++---------- 4 files changed, 27 insertions(+), 30 deletions(-) diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index a31cd55c5..a251ae6d2 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -24,7 +24,7 @@ * @brief Implements the generalized bent cigar function without connections to any COCO structures. */ static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables) { - + static const double condition = 1.0e6; size_t i, nb_long_axes; double result; @@ -33,7 +33,7 @@ static double f_bent_cigar_generalized_raw(const double *x, const size_t number_ if (number_of_variables % proportion_long_axes_denom != 0) { nb_long_axes += 1; } - + for (i = 0; i < nb_long_axes; ++i) { result += x[i] * x[i]; } @@ -56,11 +56,11 @@ static void f_bent_cigar_generalized_evaluate(coco_problem_t *problem, const dou * @brief Allocates the basic generalized bent cigar problem. */ static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_variables) { - + coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized bent cigar function", f_bent_cigar_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "bent_cigar", number_of_variables); - + /* Compute best solution */ f_bent_cigar_generalized_evaluate(problem, problem->best_parameter, problem->best_value); return problem; @@ -86,31 +86,31 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc size_t nb_blocks; size_t swap_range; size_t nb_swaps; - + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); - + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed + 1000000, dimension); fopt = bbob2009_compute_fopt(function, instance); - + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - + problem = f_bent_cigar_generalized_allocate(dimension); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_asymmetric(problem, 0.5); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); - + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 3e37c6c52..3da1e99ed 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -140,7 +140,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); diff --git a/code-experiments/src/f_discus.c b/code-experiments/src/f_discus.c index da8f084dd..25d9504af 100644 --- a/code-experiments/src/f_discus.c +++ b/code-experiments/src/f_discus.c @@ -46,7 +46,7 @@ static void f_discus_evaluate(coco_problem_t *problem, const double *x, double * static coco_problem_t *f_discus_allocate(const size_t number_of_variables) { coco_problem_t *problem = coco_problem_allocate_from_scalars("discus function", - f_discus_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + f_discus_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "discus", number_of_variables); /* Compute best solution */ @@ -54,7 +54,6 @@ static coco_problem_t *f_discus_allocate(const size_t number_of_variables) { return problem; } - /** * @brief Creates the BBOB discus problem. */ @@ -96,5 +95,3 @@ static coco_problem_t *f_discus_bbob_problem_allocate(const size_t function, coco_free_memory(xopt); return problem; } - - diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c index c1a3ed362..5e83d1616 100644 --- a/code-experiments/src/f_discus_generalized.c +++ b/code-experiments/src/f_discus_generalized.c @@ -21,7 +21,7 @@ * @brief Implements the generalized discus function without connections to any COCO structures. */ static double f_discus_generalized_raw(const double *x, const size_t number_of_variables) { - + static const double condition = 1.0e6; size_t i, nb_short_axes; double result; @@ -30,16 +30,16 @@ static double f_discus_generalized_raw(const double *x, const size_t number_of_v if (number_of_variables % proportion_short_axes_denom != 0) { nb_short_axes += 1; } - + for (i = 0; i < nb_short_axes; ++i) { result += x[i] * x[i]; } result *= condition; - + for (i = nb_short_axes; i < number_of_variables; ++i) { result += x[i] * x[i]; } - + return result; } @@ -56,11 +56,11 @@ static void f_discus_generalized_evaluate(coco_problem_t *problem, const double * @brief Allocates the basic generalized discus problem. */ static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_variables) { - + coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized discus function", f_discus_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "discus_generalized", number_of_variables); - + /* Compute best solution */ f_discus_generalized_evaluate(problem, problem->best_parameter, problem->best_value); return problem; @@ -87,34 +87,34 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( size_t nb_blocks; size_t swap_range; size_t nb_swaps; - + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); - + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); fopt = bbob2009_compute_fopt(function, instance); - + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - + problem = f_discus_generalized_allocate(dimension); problem = transform_vars_oscillate(problem); problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_shift(problem, xopt, 0); - + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - + ls_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); From 523c5916d00e8595efe374f0f4bf63f84884578f Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 8 Feb 2016 16:41:08 +0100 Subject: [PATCH 017/446] format --- code-experiments/src/f_bent_cigar.c | 4 ---- code-experiments/src/f_discus.c | 1 - code-experiments/src/large_scale_transformations.c | 2 -- code-postprocessing/bbob_pproc/config.py | 1 - 4 files changed, 8 deletions(-) diff --git a/code-experiments/src/f_bent_cigar.c b/code-experiments/src/f_bent_cigar.c index d90b1666e..b1187e8d4 100644 --- a/code-experiments/src/f_bent_cigar.c +++ b/code-experiments/src/f_bent_cigar.c @@ -14,7 +14,6 @@ #include "transform_vars_asymmetric.c" #include "transform_vars_shift.c" - /** * @brief Implements the bent cigar function without connections to any COCO structures. */ @@ -54,7 +53,6 @@ static coco_problem_t *f_bent_cigar_allocate(const size_t number_of_variables) { return problem; } - /** * @brief Creates the BBOB bent cigar problem. */ @@ -97,5 +95,3 @@ static coco_problem_t *f_bent_cigar_bbob_problem_allocate(const size_t function, coco_free_memory(xopt); return problem; } - - diff --git a/code-experiments/src/f_discus.c b/code-experiments/src/f_discus.c index 25d9504af..4ad344805 100644 --- a/code-experiments/src/f_discus.c +++ b/code-experiments/src/f_discus.c @@ -13,7 +13,6 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" - /** * @brief Implements the discus function without connections to any COCO structures. */ diff --git a/code-experiments/src/large_scale_transformations.c b/code-experiments/src/large_scale_transformations.c index 9455e14a1..6a75d00ef 100644 --- a/code-experiments/src/large_scale_transformations.c +++ b/code-experiments/src/large_scale_transformations.c @@ -287,14 +287,12 @@ static size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension){ int i; block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension / 4, 100)); - *nb_blocks = dimension / block_size + ((dimension % block_size) > 0); block_sizes = coco_allocate_vector_size_t(*nb_blocks); for (i = 0; i < *nb_blocks - 1; i++) { block_sizes[i] = block_size; } block_sizes[*nb_blocks - 1] = dimension - (*nb_blocks - 1) * block_size; /*add rest*/ - return block_sizes; } diff --git a/code-postprocessing/bbob_pproc/config.py b/code-postprocessing/bbob_pproc/config.py index 373e42805..bcbd338d0 100644 --- a/code-postprocessing/bbob_pproc/config.py +++ b/code-postprocessing/bbob_pproc/config.py @@ -38,7 +38,6 @@ def config(isBiobjective): modules via modifying parameter settings. """ # pprldist.plotRLDistr2 needs to be revised regarding run_length based targets - if genericsettings.runlength_based_targets in (True, 1): print 'Using bestGECCO2009 based target values: now for each function the target ' + \ 'values differ, but the "level of difficulty" is "the same". ' From e26326b5650b4646405cca0a5a4f8e7843ce176c Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 8 Feb 2016 16:41:08 +0100 Subject: [PATCH 018/446] format --- code-experiments/src/f_bent_cigar.c | 4 ---- code-experiments/src/f_discus.c | 1 - code-experiments/src/large_scale_transformations.c | 2 -- code-postprocessing/bbob_pproc/config.py | 1 - 4 files changed, 8 deletions(-) diff --git a/code-experiments/src/f_bent_cigar.c b/code-experiments/src/f_bent_cigar.c index d90b1666e..b1187e8d4 100644 --- a/code-experiments/src/f_bent_cigar.c +++ b/code-experiments/src/f_bent_cigar.c @@ -14,7 +14,6 @@ #include "transform_vars_asymmetric.c" #include "transform_vars_shift.c" - /** * @brief Implements the bent cigar function without connections to any COCO structures. */ @@ -54,7 +53,6 @@ static coco_problem_t *f_bent_cigar_allocate(const size_t number_of_variables) { return problem; } - /** * @brief Creates the BBOB bent cigar problem. */ @@ -97,5 +95,3 @@ static coco_problem_t *f_bent_cigar_bbob_problem_allocate(const size_t function, coco_free_memory(xopt); return problem; } - - diff --git a/code-experiments/src/f_discus.c b/code-experiments/src/f_discus.c index 25d9504af..4ad344805 100644 --- a/code-experiments/src/f_discus.c +++ b/code-experiments/src/f_discus.c @@ -13,7 +13,6 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" - /** * @brief Implements the discus function without connections to any COCO structures. */ diff --git a/code-experiments/src/large_scale_transformations.c b/code-experiments/src/large_scale_transformations.c index 9455e14a1..6a75d00ef 100644 --- a/code-experiments/src/large_scale_transformations.c +++ b/code-experiments/src/large_scale_transformations.c @@ -287,14 +287,12 @@ static size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension){ int i; block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension / 4, 100)); - *nb_blocks = dimension / block_size + ((dimension % block_size) > 0); block_sizes = coco_allocate_vector_size_t(*nb_blocks); for (i = 0; i < *nb_blocks - 1; i++) { block_sizes[i] = block_size; } block_sizes[*nb_blocks - 1] = dimension - (*nb_blocks - 1) * block_size; /*add rest*/ - return block_sizes; } diff --git a/code-postprocessing/bbob_pproc/config.py b/code-postprocessing/bbob_pproc/config.py index 373e42805..bcbd338d0 100644 --- a/code-postprocessing/bbob_pproc/config.py +++ b/code-postprocessing/bbob_pproc/config.py @@ -38,7 +38,6 @@ def config(isBiobjective): modules via modifying parameter settings. """ # pprldist.plotRLDistr2 needs to be revised regarding run_length based targets - if genericsettings.runlength_based_targets in (True, 1): print 'Using bestGECCO2009 based target values: now for each function the target ' + \ 'values differ, but the "level of difficulty" is "the same". ' From 645f236b9c1d4e33457ae6f44bb812a5d4c5c65c Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 10 Feb 2016 15:09:48 +0100 Subject: [PATCH 019/446] now sphere is normalized whenver allocated for a large-scale suite --- code-experiments/src/f_sphere.c | 5 +++++ code-experiments/src/suite_largescale.c | 22 +++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/code-experiments/src/f_sphere.c b/code-experiments/src/f_sphere.c index 2b61004dd..a6a0b4d4a 100644 --- a/code-experiments/src/f_sphere.c +++ b/code-experiments/src/f_sphere.c @@ -70,6 +70,11 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, problem = f_sphere_allocate(dimension); problem = transform_vars_shift(problem, xopt, 0); + + /*if large scale test-bed, normalize by dim*/ + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + problem = transform_obj_norm_by_dim(problem); + } problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 7472f4c22..09418310f 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -23,7 +23,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280, 2560, 5120}; - suite = coco_suite_allocate("bbob-largescale", 4, 8, dimensions, "instances:1-5"); + suite = coco_suite_allocate("bbob-largescale", 5, 8, dimensions, "instances:1-5"); return suite; } @@ -35,24 +35,28 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, const size_t instance) { coco_problem_t *problem = NULL; - const char *problem_id_template = "bbob_f%03lu_i%02lu_d%02lu"; - const char *problem_name_template = "BBOB suite problem f%lu instance %lu in %luD"; + const char *problem_id_template = "bbob_f%03lu_i%02lu_d%04lu"; + const char *problem_name_template = "BBOB large-scale suite problem f%lu instance %lu in %luD"; const long rseed = (long) (function + 10000 * instance); /*const long rseed_3 = (long) (3 + 10000 * instance);*/ /*const long rseed_17 = (long) (17 + 10000 * instance);*/ if (function == 1) { - problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 2) { + problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); + } + else if (function == 3) { problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); - } else if (function == 3) { - problem = f_discus_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 4) { + problem = f_discus_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); + } else if (function == 5) { problem = f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else { coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", function, instance, dimension); From 44732a802642cc45db8abf0190c13938960af4b9 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 10 Feb 2016 15:09:48 +0100 Subject: [PATCH 020/446] now sphere is normalized whenver allocated for a large-scale suite --- code-experiments/src/f_sphere.c | 5 +++++ code-experiments/src/suite_largescale.c | 22 +++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/code-experiments/src/f_sphere.c b/code-experiments/src/f_sphere.c index 2b61004dd..a6a0b4d4a 100644 --- a/code-experiments/src/f_sphere.c +++ b/code-experiments/src/f_sphere.c @@ -70,6 +70,11 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, problem = f_sphere_allocate(dimension); problem = transform_vars_shift(problem, xopt, 0); + + /*if large scale test-bed, normalize by dim*/ + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + problem = transform_obj_norm_by_dim(problem); + } problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 7472f4c22..09418310f 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -23,7 +23,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280, 2560, 5120}; - suite = coco_suite_allocate("bbob-largescale", 4, 8, dimensions, "instances:1-5"); + suite = coco_suite_allocate("bbob-largescale", 5, 8, dimensions, "instances:1-5"); return suite; } @@ -35,24 +35,28 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, const size_t instance) { coco_problem_t *problem = NULL; - const char *problem_id_template = "bbob_f%03lu_i%02lu_d%02lu"; - const char *problem_name_template = "BBOB suite problem f%lu instance %lu in %luD"; + const char *problem_id_template = "bbob_f%03lu_i%02lu_d%04lu"; + const char *problem_name_template = "BBOB large-scale suite problem f%lu instance %lu in %luD"; const long rseed = (long) (function + 10000 * instance); /*const long rseed_3 = (long) (3 + 10000 * instance);*/ /*const long rseed_17 = (long) (17 + 10000 * instance);*/ if (function == 1) { - problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 2) { + problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); + } + else if (function == 3) { problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); - } else if (function == 3) { - problem = f_discus_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 4) { + problem = f_discus_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); + } else if (function == 5) { problem = f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else { coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", function, instance, dimension); From 934367fc69b0f073a951a2848dad3ad7ea6f45d5 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 10 Feb 2016 15:43:48 +0100 Subject: [PATCH 021/446] clean up in logger_bbob.c --- code-experiments/src/logger_bbob.c | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index a6122385f..4735f89e0 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -26,8 +26,6 @@ #include "coco_string.c" #include "observer_bbob.c" -/*static const size_t bbob_nbpts_nbevals = 20; Wassim: tentative, are now observer options with these default values*/ -/*static const size_t bbob_nbpts_fval = 5;*/ static size_t bbob_current_dim = 0; static size_t bbob_current_funId = 0; static size_t bbob_infoFile_firstInstance = 0; @@ -56,8 +54,6 @@ static int bbob_logger_is_open = 0; /* this could become lock-list of .info file typedef struct { coco_observer_t *observer; int is_initialized; - /*char *path;// relative path to the data folder. //Wassim: now fetched from the observer */ - /*const char *alg_name; the alg name, for now, temporarily the same as the path. Wassim: Now in the observer */ FILE *index_file; /* index file */ FILE *fdata_file; /* function value aligned data file */ FILE *tdata_file; /* number of function evaluations aligned data file */ @@ -71,7 +67,7 @@ typedef struct { * interface should probably be the same for all free functions so passing the * problem as a second parameter is not an option even though we need info * form it.*/ - size_t function_id; /*TODO: consider changing name*/ + size_t function_id; size_t instance_id; size_t number_of_variables; double optimal_fvalue; @@ -152,28 +148,6 @@ static void logger_bbob_open_dataFile(FILE **target_file, } } -/* -static void logger_bbob_open_dataFile(FILE **target_file, - const char *path, - const char *dataFile_path, - const char *file_extension) { - char file_path[COCO_PATH_MAX] = { 0 }; - char relative_filePath[COCO_PATH_MAX] = { 0 }; - int errnum; - strncpy(relative_filePath, dataFile_path, - COCO_PATH_MAX - strlen(relative_filePath) - 1); - strncat(relative_filePath, file_extension, - COCO_PATH_MAX - strlen(relative_filePath) - 1); - coco_join_path(file_path, sizeof(file_path), path, relative_filePath, NULL); - if (*target_file == NULL) { - *target_file = fopen(file_path, "a+"); - errnum = errno; - if (*target_file == NULL) { - _bbob_logger_error_io(*target_file, errnum); - } - } -}*/ - /** * Creates the index file fileName_prefix+problem_id+file_extension in * folde_path From b6650362398a95be214445c736857d6e1b830dc6 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 10 Feb 2016 15:43:48 +0100 Subject: [PATCH 022/446] clean up in logger_bbob.c --- code-experiments/src/logger_bbob.c | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index a6122385f..4735f89e0 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -26,8 +26,6 @@ #include "coco_string.c" #include "observer_bbob.c" -/*static const size_t bbob_nbpts_nbevals = 20; Wassim: tentative, are now observer options with these default values*/ -/*static const size_t bbob_nbpts_fval = 5;*/ static size_t bbob_current_dim = 0; static size_t bbob_current_funId = 0; static size_t bbob_infoFile_firstInstance = 0; @@ -56,8 +54,6 @@ static int bbob_logger_is_open = 0; /* this could become lock-list of .info file typedef struct { coco_observer_t *observer; int is_initialized; - /*char *path;// relative path to the data folder. //Wassim: now fetched from the observer */ - /*const char *alg_name; the alg name, for now, temporarily the same as the path. Wassim: Now in the observer */ FILE *index_file; /* index file */ FILE *fdata_file; /* function value aligned data file */ FILE *tdata_file; /* number of function evaluations aligned data file */ @@ -71,7 +67,7 @@ typedef struct { * interface should probably be the same for all free functions so passing the * problem as a second parameter is not an option even though we need info * form it.*/ - size_t function_id; /*TODO: consider changing name*/ + size_t function_id; size_t instance_id; size_t number_of_variables; double optimal_fvalue; @@ -152,28 +148,6 @@ static void logger_bbob_open_dataFile(FILE **target_file, } } -/* -static void logger_bbob_open_dataFile(FILE **target_file, - const char *path, - const char *dataFile_path, - const char *file_extension) { - char file_path[COCO_PATH_MAX] = { 0 }; - char relative_filePath[COCO_PATH_MAX] = { 0 }; - int errnum; - strncpy(relative_filePath, dataFile_path, - COCO_PATH_MAX - strlen(relative_filePath) - 1); - strncat(relative_filePath, file_extension, - COCO_PATH_MAX - strlen(relative_filePath) - 1); - coco_join_path(file_path, sizeof(file_path), path, relative_filePath, NULL); - if (*target_file == NULL) { - *target_file = fopen(file_path, "a+"); - errnum = errno; - if (*target_file == NULL) { - _bbob_logger_error_io(*target_file, errnum); - } - } -}*/ - /** * Creates the index file fileName_prefix+problem_id+file_extension in * folde_path From d8eee572a724b5f9c43388c12fe4781f2ade98db Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 10 Feb 2016 17:30:45 +0100 Subject: [PATCH 023/446] removed global variables from logger_bbob.c and silenced warning in logger_biobj.c --- code-experiments/src/coco_utilities.c | 2 +- code-experiments/src/logger_bbob.c | 37 +++++++++++++------------ code-experiments/src/logger_biobj.c | 2 +- code-experiments/src/observer_bbob.c | 10 ++++++- code-experiments/src/suite_largescale.c | 2 +- 5 files changed, 32 insertions(+), 21 deletions(-) diff --git a/code-experiments/src/coco_utilities.c b/code-experiments/src/coco_utilities.c index 3dafafaef..7e5208244 100644 --- a/code-experiments/src/coco_utilities.c +++ b/code-experiments/src/coco_utilities.c @@ -630,7 +630,7 @@ static char *coco_option_keys_get_output_string(const coco_option_keys_t *option const char *info_string) { size_t i; char *string, *new_string; - + string = NULL; if ((option_keys != NULL) && (option_keys->count > 0)) { string = coco_strdup(info_string); diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 4735f89e0..0e475b2de 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -26,10 +26,7 @@ #include "coco_string.c" #include "observer_bbob.c" -static size_t bbob_current_dim = 0; -static size_t bbob_current_funId = 0; -static size_t bbob_infoFile_firstInstance = 0; -char bbob_infoFile_firstInstance_char[3]; + /* a possible solution: have a list of dims that are already in the file, if the ones we're about to log * is != bbob_current_dim and the funId is currend_funId, create a new .info file with as suffix the * number of the first instance */ @@ -158,6 +155,8 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, const char *function_id, const char *dataFile_path) { /* to add the instance number TODO: this should be done outside to avoid redoing this for the .*dat files */ + observer_bbob_data_t *observer_bbob; + char bbob_infoFile_firstInstance_char[3]; char used_dataFile_path[COCO_PATH_MAX] = { 0 }; int errnum, newLine; /* newLine is at 1 if we need a new line in the info file */ char function_id_char[3]; /* TODO: consider adding them to logger */ @@ -165,12 +164,13 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, char file_path[COCO_PATH_MAX] = { 0 }; FILE **target_file; FILE *tmp_file; + observer_bbob = (observer_bbob_data_t *) logger->observer->data; strncpy(used_dataFile_path, dataFile_path, COCO_PATH_MAX - strlen(used_dataFile_path) - 1); - if (bbob_infoFile_firstInstance == 0) { - bbob_infoFile_firstInstance = logger->instance_id; + if (observer_bbob->info_file_first_instance == 0) { + observer_bbob->info_file_first_instance = logger->instance_id; } sprintf(function_id_char, "%lu", logger->function_id); - sprintf(bbob_infoFile_firstInstance_char, "%ld", bbob_infoFile_firstInstance); + sprintf(bbob_infoFile_firstInstance_char, "%ld", observer_bbob->info_file_first_instance); target_file = &(logger->index_file); tmp_file = NULL; /* to check whether the file already exists. Don't want to use target_file */ strncpy(file_name, indexFile_prefix, COCO_PATH_MAX - strlen(file_name) - 1); @@ -182,8 +182,8 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, coco_join_path(file_path, sizeof(file_path), folder_path, file_name, NULL); if (*target_file == NULL) { tmp_file = fopen(file_path, "r"); /* to check for existence */ - if ((tmp_file) && (bbob_current_dim == logger->number_of_variables) - && (bbob_current_funId == logger->function_id)) { + if ((tmp_file) && (observer_bbob->current_dim == logger->number_of_variables) + && (observer_bbob->current_fun_id == logger->function_id)) { /* new instance of current funId and current dim */ newLine = 0; *target_file = fopen(file_path, "a+"); @@ -194,7 +194,7 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, fclose(tmp_file); } else { /* either file doesn't exist (new funId) or new Dim */ /* check that the dim was not already present earlier in the file, if so, create a new info file */ - if (bbob_current_dim != logger->number_of_variables) { + if (observer_bbob->current_dim != logger->number_of_variables) { int i, j; for (i = 0; i < bbob_number_of_dimensions && bbob_dimensions_in_current_infoFile[i] != 0 @@ -209,8 +209,8 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, if (i < bbob_number_of_dimensions) { /* dimension already present, need to create a new file */ newLine = 0; file_path[strlen(file_path) - strlen(bbob_infoFile_firstInstance_char) - 7] = 0; /* truncate the instance part */ - bbob_infoFile_firstInstance = logger->instance_id; - sprintf(bbob_infoFile_firstInstance_char, "%ld", bbob_infoFile_firstInstance); + observer_bbob->info_file_first_instance = logger->instance_id; + sprintf(bbob_infoFile_firstInstance_char, "%ld", observer_bbob->info_file_first_instance); strncat(file_path, "_i", COCO_PATH_MAX - strlen(file_name) - 1); strncat(file_path, bbob_infoFile_firstInstance_char, COCO_PATH_MAX - strlen(file_name) - 1); strncat(file_path, ".info", COCO_PATH_MAX - strlen(file_name) - 1); @@ -223,7 +223,7 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, bbob_dimensions_in_current_infoFile[i] = logger->number_of_variables; } } else { - if ( bbob_current_funId != logger->function_id ) { + if ( observer_bbob->current_fun_id != logger->function_id ) { /*new function in the same file */ newLine = 1; } @@ -248,8 +248,8 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, strncat(used_dataFile_path, bbob_infoFile_firstInstance_char, COCO_PATH_MAX - strlen(used_dataFile_path) - 1); fprintf(*target_file, "%s.dat", used_dataFile_path); /* dataFile_path does not have the extension */ - bbob_current_dim = logger->number_of_variables; - bbob_current_funId = logger->function_id; + observer_bbob->current_dim = logger->number_of_variables; + observer_bbob->current_fun_id = logger->function_id; } } } @@ -262,13 +262,15 @@ static void logger_bbob_initialize(logger_bbob_data_t *logger, coco_problem_t *i /* Creates/opens the data and index files */ + observer_bbob_data_t *observer_bbob; + char bbob_infoFile_firstInstance_char[3]; char dataFile_path[COCO_PATH_MAX] = { 0 }; /* relative path to the .dat file from where the .info file is */ char folder_path[COCO_PATH_MAX] = { 0 }; char *tmpc_funId; /* serves to extract the function id as a char *. There should be a better way of doing this! */ char *tmpc_dim; /* serves to extract the dimension as a char *. There should be a better way of doing this! */ char indexFile_prefix[10] = "bbobexp"; /* TODO (minor): make the prefix bbobexp a parameter that the user can modify */ size_t str_length_funId, str_length_dim; - + observer_bbob = (observer_bbob_data_t *)logger->observer->data; str_length_funId = coco_double_to_size_t(bbob2009_fmax(1, ceil(log10((double) coco_problem_get_suite_dep_function(inner_problem))))); str_length_dim = coco_double_to_size_t(bbob2009_fmax(1, ceil(log10((double) inner_problem->number_of_variables)))); tmpc_funId = coco_allocate_string(str_length_funId); @@ -302,8 +304,9 @@ static void logger_bbob_initialize(logger_bbob_data_t *logger, coco_problem_t *i /* data files */ /* TODO: definitely improvable but works for now */ strncat(dataFile_path, "_i", COCO_PATH_MAX - strlen(dataFile_path) - 1); + sprintf(bbob_infoFile_firstInstance_char, "%ld", observer_bbob->info_file_first_instance); strncat(dataFile_path, bbob_infoFile_firstInstance_char, - COCO_PATH_MAX - strlen(dataFile_path) - 1); + COCO_PATH_MAX - strlen(dataFile_path) - 1); logger_bbob_open_dataFile(&(logger->fdata_file), logger->observer->result_folder, dataFile_path, ".dat"); fprintf(logger->fdata_file, bbob_file_header_str, logger->optimal_fvalue); diff --git a/code-experiments/src/logger_biobj.c b/code-experiments/src/logger_biobj.c index 9158f16ff..7b001e245 100644 --- a/code-experiments/src/logger_biobj.c +++ b/code-experiments/src/logger_biobj.c @@ -610,7 +610,7 @@ static void logger_biobj_evaluate(coco_problem_t *problem, const double *x, doub logger_biobj_avl_item_t *node_item; logger_biobj_indicator_t *indicator; - avl_node_t *solution; + /* avl_node_t *solution;*/ int update_performed; size_t i; diff --git a/code-experiments/src/observer_bbob.c b/code-experiments/src/observer_bbob.c index 99b813e56..a6fe3f24a 100644 --- a/code-experiments/src/observer_bbob.c +++ b/code-experiments/src/observer_bbob.c @@ -17,6 +17,7 @@ typedef struct { * problems). For example, the following global variables from logger_bbob.c could be stored here: */ size_t current_dim; size_t current_fun_id; + size_t info_file_first_instance; /* ... and others */ } observer_bbob_data_t; @@ -25,10 +26,17 @@ typedef struct { */ static void observer_bbob(coco_observer_t *observer, const char *options, coco_option_keys_t **option_keys) { + observer_bbob_data_t *observer_bbob; + observer_bbob = (observer_bbob_data_t *) coco_allocate_memory(sizeof(*observer_bbob)); + observer_bbob->current_dim = 0; + observer_bbob->current_fun_id = 0; + observer_bbob->info_file_first_instance = 0; + observer->logger_allocate_function = logger_bbob; observer->logger_free_function = logger_bbob_free; observer->data_free_function = NULL; - observer->data = NULL; + observer->data = observer_bbob; + *option_keys = NULL; diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 09418310f..b24855d9d 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -23,7 +23,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280, 2560, 5120}; - suite = coco_suite_allocate("bbob-largescale", 5, 8, dimensions, "instances:1-5"); + suite = coco_suite_allocate("bbob-largescale", 5, 8, dimensions, "instances:1-15"); return suite; } From ae52780055704ce09aebe4e62813feff50d2bac5 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 10 Feb 2016 17:30:45 +0100 Subject: [PATCH 024/446] removed global variables from logger_bbob.c and silenced warning in logger_biobj.c --- code-experiments/src/coco_utilities.c | 2 +- code-experiments/src/logger_bbob.c | 37 +++++++++++++------------ code-experiments/src/logger_biobj.c | 2 +- code-experiments/src/observer_bbob.c | 10 ++++++- code-experiments/src/suite_largescale.c | 2 +- 5 files changed, 32 insertions(+), 21 deletions(-) diff --git a/code-experiments/src/coco_utilities.c b/code-experiments/src/coco_utilities.c index 3dafafaef..7e5208244 100644 --- a/code-experiments/src/coco_utilities.c +++ b/code-experiments/src/coco_utilities.c @@ -630,7 +630,7 @@ static char *coco_option_keys_get_output_string(const coco_option_keys_t *option const char *info_string) { size_t i; char *string, *new_string; - + string = NULL; if ((option_keys != NULL) && (option_keys->count > 0)) { string = coco_strdup(info_string); diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 4735f89e0..0e475b2de 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -26,10 +26,7 @@ #include "coco_string.c" #include "observer_bbob.c" -static size_t bbob_current_dim = 0; -static size_t bbob_current_funId = 0; -static size_t bbob_infoFile_firstInstance = 0; -char bbob_infoFile_firstInstance_char[3]; + /* a possible solution: have a list of dims that are already in the file, if the ones we're about to log * is != bbob_current_dim and the funId is currend_funId, create a new .info file with as suffix the * number of the first instance */ @@ -158,6 +155,8 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, const char *function_id, const char *dataFile_path) { /* to add the instance number TODO: this should be done outside to avoid redoing this for the .*dat files */ + observer_bbob_data_t *observer_bbob; + char bbob_infoFile_firstInstance_char[3]; char used_dataFile_path[COCO_PATH_MAX] = { 0 }; int errnum, newLine; /* newLine is at 1 if we need a new line in the info file */ char function_id_char[3]; /* TODO: consider adding them to logger */ @@ -165,12 +164,13 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, char file_path[COCO_PATH_MAX] = { 0 }; FILE **target_file; FILE *tmp_file; + observer_bbob = (observer_bbob_data_t *) logger->observer->data; strncpy(used_dataFile_path, dataFile_path, COCO_PATH_MAX - strlen(used_dataFile_path) - 1); - if (bbob_infoFile_firstInstance == 0) { - bbob_infoFile_firstInstance = logger->instance_id; + if (observer_bbob->info_file_first_instance == 0) { + observer_bbob->info_file_first_instance = logger->instance_id; } sprintf(function_id_char, "%lu", logger->function_id); - sprintf(bbob_infoFile_firstInstance_char, "%ld", bbob_infoFile_firstInstance); + sprintf(bbob_infoFile_firstInstance_char, "%ld", observer_bbob->info_file_first_instance); target_file = &(logger->index_file); tmp_file = NULL; /* to check whether the file already exists. Don't want to use target_file */ strncpy(file_name, indexFile_prefix, COCO_PATH_MAX - strlen(file_name) - 1); @@ -182,8 +182,8 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, coco_join_path(file_path, sizeof(file_path), folder_path, file_name, NULL); if (*target_file == NULL) { tmp_file = fopen(file_path, "r"); /* to check for existence */ - if ((tmp_file) && (bbob_current_dim == logger->number_of_variables) - && (bbob_current_funId == logger->function_id)) { + if ((tmp_file) && (observer_bbob->current_dim == logger->number_of_variables) + && (observer_bbob->current_fun_id == logger->function_id)) { /* new instance of current funId and current dim */ newLine = 0; *target_file = fopen(file_path, "a+"); @@ -194,7 +194,7 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, fclose(tmp_file); } else { /* either file doesn't exist (new funId) or new Dim */ /* check that the dim was not already present earlier in the file, if so, create a new info file */ - if (bbob_current_dim != logger->number_of_variables) { + if (observer_bbob->current_dim != logger->number_of_variables) { int i, j; for (i = 0; i < bbob_number_of_dimensions && bbob_dimensions_in_current_infoFile[i] != 0 @@ -209,8 +209,8 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, if (i < bbob_number_of_dimensions) { /* dimension already present, need to create a new file */ newLine = 0; file_path[strlen(file_path) - strlen(bbob_infoFile_firstInstance_char) - 7] = 0; /* truncate the instance part */ - bbob_infoFile_firstInstance = logger->instance_id; - sprintf(bbob_infoFile_firstInstance_char, "%ld", bbob_infoFile_firstInstance); + observer_bbob->info_file_first_instance = logger->instance_id; + sprintf(bbob_infoFile_firstInstance_char, "%ld", observer_bbob->info_file_first_instance); strncat(file_path, "_i", COCO_PATH_MAX - strlen(file_name) - 1); strncat(file_path, bbob_infoFile_firstInstance_char, COCO_PATH_MAX - strlen(file_name) - 1); strncat(file_path, ".info", COCO_PATH_MAX - strlen(file_name) - 1); @@ -223,7 +223,7 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, bbob_dimensions_in_current_infoFile[i] = logger->number_of_variables; } } else { - if ( bbob_current_funId != logger->function_id ) { + if ( observer_bbob->current_fun_id != logger->function_id ) { /*new function in the same file */ newLine = 1; } @@ -248,8 +248,8 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, strncat(used_dataFile_path, bbob_infoFile_firstInstance_char, COCO_PATH_MAX - strlen(used_dataFile_path) - 1); fprintf(*target_file, "%s.dat", used_dataFile_path); /* dataFile_path does not have the extension */ - bbob_current_dim = logger->number_of_variables; - bbob_current_funId = logger->function_id; + observer_bbob->current_dim = logger->number_of_variables; + observer_bbob->current_fun_id = logger->function_id; } } } @@ -262,13 +262,15 @@ static void logger_bbob_initialize(logger_bbob_data_t *logger, coco_problem_t *i /* Creates/opens the data and index files */ + observer_bbob_data_t *observer_bbob; + char bbob_infoFile_firstInstance_char[3]; char dataFile_path[COCO_PATH_MAX] = { 0 }; /* relative path to the .dat file from where the .info file is */ char folder_path[COCO_PATH_MAX] = { 0 }; char *tmpc_funId; /* serves to extract the function id as a char *. There should be a better way of doing this! */ char *tmpc_dim; /* serves to extract the dimension as a char *. There should be a better way of doing this! */ char indexFile_prefix[10] = "bbobexp"; /* TODO (minor): make the prefix bbobexp a parameter that the user can modify */ size_t str_length_funId, str_length_dim; - + observer_bbob = (observer_bbob_data_t *)logger->observer->data; str_length_funId = coco_double_to_size_t(bbob2009_fmax(1, ceil(log10((double) coco_problem_get_suite_dep_function(inner_problem))))); str_length_dim = coco_double_to_size_t(bbob2009_fmax(1, ceil(log10((double) inner_problem->number_of_variables)))); tmpc_funId = coco_allocate_string(str_length_funId); @@ -302,8 +304,9 @@ static void logger_bbob_initialize(logger_bbob_data_t *logger, coco_problem_t *i /* data files */ /* TODO: definitely improvable but works for now */ strncat(dataFile_path, "_i", COCO_PATH_MAX - strlen(dataFile_path) - 1); + sprintf(bbob_infoFile_firstInstance_char, "%ld", observer_bbob->info_file_first_instance); strncat(dataFile_path, bbob_infoFile_firstInstance_char, - COCO_PATH_MAX - strlen(dataFile_path) - 1); + COCO_PATH_MAX - strlen(dataFile_path) - 1); logger_bbob_open_dataFile(&(logger->fdata_file), logger->observer->result_folder, dataFile_path, ".dat"); fprintf(logger->fdata_file, bbob_file_header_str, logger->optimal_fvalue); diff --git a/code-experiments/src/logger_biobj.c b/code-experiments/src/logger_biobj.c index 9158f16ff..7b001e245 100644 --- a/code-experiments/src/logger_biobj.c +++ b/code-experiments/src/logger_biobj.c @@ -610,7 +610,7 @@ static void logger_biobj_evaluate(coco_problem_t *problem, const double *x, doub logger_biobj_avl_item_t *node_item; logger_biobj_indicator_t *indicator; - avl_node_t *solution; + /* avl_node_t *solution;*/ int update_performed; size_t i; diff --git a/code-experiments/src/observer_bbob.c b/code-experiments/src/observer_bbob.c index 99b813e56..a6fe3f24a 100644 --- a/code-experiments/src/observer_bbob.c +++ b/code-experiments/src/observer_bbob.c @@ -17,6 +17,7 @@ typedef struct { * problems). For example, the following global variables from logger_bbob.c could be stored here: */ size_t current_dim; size_t current_fun_id; + size_t info_file_first_instance; /* ... and others */ } observer_bbob_data_t; @@ -25,10 +26,17 @@ typedef struct { */ static void observer_bbob(coco_observer_t *observer, const char *options, coco_option_keys_t **option_keys) { + observer_bbob_data_t *observer_bbob; + observer_bbob = (observer_bbob_data_t *) coco_allocate_memory(sizeof(*observer_bbob)); + observer_bbob->current_dim = 0; + observer_bbob->current_fun_id = 0; + observer_bbob->info_file_first_instance = 0; + observer->logger_allocate_function = logger_bbob; observer->logger_free_function = logger_bbob_free; observer->data_free_function = NULL; - observer->data = NULL; + observer->data = observer_bbob; + *option_keys = NULL; diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 09418310f..b24855d9d 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -23,7 +23,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280, 2560, 5120}; - suite = coco_suite_allocate("bbob-largescale", 5, 8, dimensions, "instances:1-5"); + suite = coco_suite_allocate("bbob-largescale", 5, 8, dimensions, "instances:1-15"); return suite; } From 365af832f7d7ab800a9d463a5b702c1fd1b0902e Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 11 Feb 2016 15:31:06 +0100 Subject: [PATCH 025/446] removed global variables from logger_bbob.c, number_of_dimenions and dimensions_in_info_file --- code-experiments/src/logger_bbob.c | 20 +++++++++----------- code-experiments/src/observer_bbob.c | 8 +++++++- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 0e475b2de..e36d42f82 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -28,10 +28,8 @@ /* a possible solution: have a list of dims that are already in the file, if the ones we're about to log - * is != bbob_current_dim and the funId is currend_funId, create a new .info file with as suffix the + * is != bbob_current_dim and the funId is current_funId, create a new .info file with as suffix the * number of the first instance */ -static const int bbob_number_of_dimensions = 6; -static size_t bbob_dimensions_in_current_infoFile[6] = { 0, 0, 0, 0, 0, 0 }; /* TODO should use dimensions from the suite */ /* The current_... mechanism fails if several problems are open. * For the time being this should lead to an error. @@ -197,16 +195,16 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, if (observer_bbob->current_dim != logger->number_of_variables) { int i, j; for (i = 0; - i < bbob_number_of_dimensions && bbob_dimensions_in_current_infoFile[i] != 0 - && bbob_dimensions_in_current_infoFile[i] != logger->number_of_variables; i++) { + i < observer_bbob->number_of_dimensions && observer_bbob->dimensions_in_current_info_file[i] != 0 + && observer_bbob->dimensions_in_current_info_file[i] != logger->number_of_variables; i++) { ; /* checks whether dimension already present in the current infoFile */ } - if (i < bbob_number_of_dimensions && bbob_dimensions_in_current_infoFile[i] == 0) { + if (i < observer_bbob->number_of_dimensions && observer_bbob->dimensions_in_current_info_file[i] == 0) { /* new dimension seen for the first time */ - bbob_dimensions_in_current_infoFile[i] = logger->number_of_variables; + observer_bbob->dimensions_in_current_info_file[i] = logger->number_of_variables; newLine = 1; } else { - if (i < bbob_number_of_dimensions) { /* dimension already present, need to create a new file */ + if (i < observer_bbob->number_of_dimensions) { /* dimension already present, need to create a new file */ newLine = 0; file_path[strlen(file_path) - strlen(bbob_infoFile_firstInstance_char) - 7] = 0; /* truncate the instance part */ observer_bbob->info_file_first_instance = logger->instance_id; @@ -217,10 +215,10 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, } else {/*we have all dimensions*/ newLine = 1; } - for (j = 0; j < bbob_number_of_dimensions; j++) { /* new info file, reinitialize list of dims */ - bbob_dimensions_in_current_infoFile[j] = 0; + for (j = 0; j < observer_bbob->number_of_dimensions; j++) { /* new info file, reinitialize list of dims */ + observer_bbob->dimensions_in_current_info_file[j] = 0; } - bbob_dimensions_in_current_infoFile[i] = logger->number_of_variables; + observer_bbob->dimensions_in_current_info_file[i] = logger->number_of_variables; } } else { if ( observer_bbob->current_fun_id != logger->function_id ) { diff --git a/code-experiments/src/observer_bbob.c b/code-experiments/src/observer_bbob.c index a6fe3f24a..c3bd8c72c 100644 --- a/code-experiments/src/observer_bbob.c +++ b/code-experiments/src/observer_bbob.c @@ -18,7 +18,8 @@ typedef struct { size_t current_dim; size_t current_fun_id; size_t info_file_first_instance; - /* ... and others */ + size_t number_of_dimensions; + size_t dimensions_in_current_info_file[6]; } observer_bbob_data_t; /** @@ -26,11 +27,16 @@ typedef struct { */ static void observer_bbob(coco_observer_t *observer, const char *options, coco_option_keys_t **option_keys) { + size_t i; observer_bbob_data_t *observer_bbob; observer_bbob = (observer_bbob_data_t *) coco_allocate_memory(sizeof(*observer_bbob)); observer_bbob->current_dim = 0; observer_bbob->current_fun_id = 0; observer_bbob->info_file_first_instance = 0; + observer_bbob->number_of_dimensions = 6; + for (i = 0; i < observer_bbob->number_of_dimensions; i++) { + observer_bbob->dimensions_in_current_info_file[i] = 0; + } observer->logger_allocate_function = logger_bbob; observer->logger_free_function = logger_bbob_free; From e4ed8c11338c32702897682844c7dea9fc98ffe1 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 11 Feb 2016 15:31:06 +0100 Subject: [PATCH 026/446] removed global variables from logger_bbob.c, number_of_dimenions and dimensions_in_info_file --- code-experiments/src/logger_bbob.c | 20 +++++++++----------- code-experiments/src/observer_bbob.c | 8 +++++++- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 0e475b2de..e36d42f82 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -28,10 +28,8 @@ /* a possible solution: have a list of dims that are already in the file, if the ones we're about to log - * is != bbob_current_dim and the funId is currend_funId, create a new .info file with as suffix the + * is != bbob_current_dim and the funId is current_funId, create a new .info file with as suffix the * number of the first instance */ -static const int bbob_number_of_dimensions = 6; -static size_t bbob_dimensions_in_current_infoFile[6] = { 0, 0, 0, 0, 0, 0 }; /* TODO should use dimensions from the suite */ /* The current_... mechanism fails if several problems are open. * For the time being this should lead to an error. @@ -197,16 +195,16 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, if (observer_bbob->current_dim != logger->number_of_variables) { int i, j; for (i = 0; - i < bbob_number_of_dimensions && bbob_dimensions_in_current_infoFile[i] != 0 - && bbob_dimensions_in_current_infoFile[i] != logger->number_of_variables; i++) { + i < observer_bbob->number_of_dimensions && observer_bbob->dimensions_in_current_info_file[i] != 0 + && observer_bbob->dimensions_in_current_info_file[i] != logger->number_of_variables; i++) { ; /* checks whether dimension already present in the current infoFile */ } - if (i < bbob_number_of_dimensions && bbob_dimensions_in_current_infoFile[i] == 0) { + if (i < observer_bbob->number_of_dimensions && observer_bbob->dimensions_in_current_info_file[i] == 0) { /* new dimension seen for the first time */ - bbob_dimensions_in_current_infoFile[i] = logger->number_of_variables; + observer_bbob->dimensions_in_current_info_file[i] = logger->number_of_variables; newLine = 1; } else { - if (i < bbob_number_of_dimensions) { /* dimension already present, need to create a new file */ + if (i < observer_bbob->number_of_dimensions) { /* dimension already present, need to create a new file */ newLine = 0; file_path[strlen(file_path) - strlen(bbob_infoFile_firstInstance_char) - 7] = 0; /* truncate the instance part */ observer_bbob->info_file_first_instance = logger->instance_id; @@ -217,10 +215,10 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, } else {/*we have all dimensions*/ newLine = 1; } - for (j = 0; j < bbob_number_of_dimensions; j++) { /* new info file, reinitialize list of dims */ - bbob_dimensions_in_current_infoFile[j] = 0; + for (j = 0; j < observer_bbob->number_of_dimensions; j++) { /* new info file, reinitialize list of dims */ + observer_bbob->dimensions_in_current_info_file[j] = 0; } - bbob_dimensions_in_current_infoFile[i] = logger->number_of_variables; + observer_bbob->dimensions_in_current_info_file[i] = logger->number_of_variables; } } else { if ( observer_bbob->current_fun_id != logger->function_id ) { diff --git a/code-experiments/src/observer_bbob.c b/code-experiments/src/observer_bbob.c index a6fe3f24a..c3bd8c72c 100644 --- a/code-experiments/src/observer_bbob.c +++ b/code-experiments/src/observer_bbob.c @@ -18,7 +18,8 @@ typedef struct { size_t current_dim; size_t current_fun_id; size_t info_file_first_instance; - /* ... and others */ + size_t number_of_dimensions; + size_t dimensions_in_current_info_file[6]; } observer_bbob_data_t; /** @@ -26,11 +27,16 @@ typedef struct { */ static void observer_bbob(coco_observer_t *observer, const char *options, coco_option_keys_t **option_keys) { + size_t i; observer_bbob_data_t *observer_bbob; observer_bbob = (observer_bbob_data_t *) coco_allocate_memory(sizeof(*observer_bbob)); observer_bbob->current_dim = 0; observer_bbob->current_fun_id = 0; observer_bbob->info_file_first_instance = 0; + observer_bbob->number_of_dimensions = 6; + for (i = 0; i < observer_bbob->number_of_dimensions; i++) { + observer_bbob->dimensions_in_current_info_file[i] = 0; + } observer->logger_allocate_function = logger_bbob; observer->logger_free_function = logger_bbob_free; From 26dc2fb8ba0e75dde29e72cdf0de389ce05f60c9 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 11 Feb 2016 16:32:46 +0100 Subject: [PATCH 027/446] use of a constant maximal number of dimensions in a suite --- code-experiments/src/logger_bbob.c | 3 ++- code-experiments/src/observer_bbob.c | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index e36d42f82..28967f07d 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -190,7 +190,7 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, logger_bbob_error_io(*target_file, errnum); } fclose(tmp_file); - } else { /* either file doesn't exist (new funId) or new Dim */ + } else { /* either file doesn't exist (new fun_id) or new Dim */ /* check that the dim was not already present earlier in the file, if so, create a new info file */ if (observer_bbob->current_dim != logger->number_of_variables) { int i, j; @@ -199,6 +199,7 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, && observer_bbob->dimensions_in_current_info_file[i] != logger->number_of_variables; i++) { ; /* checks whether dimension already present in the current infoFile */ } + if (i < observer_bbob->number_of_dimensions && observer_bbob->dimensions_in_current_info_file[i] == 0) { /* new dimension seen for the first time */ observer_bbob->dimensions_in_current_info_file[i] = logger->number_of_variables; diff --git a/code-experiments/src/observer_bbob.c b/code-experiments/src/observer_bbob.c index c3bd8c72c..564f3c72c 100644 --- a/code-experiments/src/observer_bbob.c +++ b/code-experiments/src/observer_bbob.c @@ -9,6 +9,8 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *problem); static void logger_bbob_free(void *logger); +#define MAX_NB_DIMS 10 /* TODO: remove in favor of a dynamically set value */ + /** * @brief The bbob observer data type. */ @@ -19,9 +21,18 @@ typedef struct { size_t current_fun_id; size_t info_file_first_instance; size_t number_of_dimensions; - size_t dimensions_in_current_info_file[6]; + size_t dimensions_in_current_info_file[MAX_NB_DIMS]; } observer_bbob_data_t; +/** + * @brief frees the data of bbob observer + */ +static void observer_bbob_data_free(void *data){ + /*coco_free_memory(((observer_bbob_data_t *)data)->dimensions_in_current_info_file);*/ + (void) data; /* to silence warning*/ +} + + /** * @brief Initializes the bbob observer. */ @@ -33,14 +44,14 @@ static void observer_bbob(coco_observer_t *observer, const char *options, coco_o observer_bbob->current_dim = 0; observer_bbob->current_fun_id = 0; observer_bbob->info_file_first_instance = 0; - observer_bbob->number_of_dimensions = 6; + observer_bbob->number_of_dimensions = MAX_NB_DIMS; for (i = 0; i < observer_bbob->number_of_dimensions; i++) { observer_bbob->dimensions_in_current_info_file[i] = 0; } observer->logger_allocate_function = logger_bbob; observer->logger_free_function = logger_bbob_free; - observer->data_free_function = NULL; + observer->data_free_function = observer_bbob_data_free; observer->data = observer_bbob; From d23db76f7e6e085b1264df8c0243e2cd3858f74a Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 11 Feb 2016 16:32:46 +0100 Subject: [PATCH 028/446] use of a constant maximal number of dimensions in a suite --- code-experiments/src/logger_bbob.c | 3 ++- code-experiments/src/observer_bbob.c | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index e36d42f82..28967f07d 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -190,7 +190,7 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, logger_bbob_error_io(*target_file, errnum); } fclose(tmp_file); - } else { /* either file doesn't exist (new funId) or new Dim */ + } else { /* either file doesn't exist (new fun_id) or new Dim */ /* check that the dim was not already present earlier in the file, if so, create a new info file */ if (observer_bbob->current_dim != logger->number_of_variables) { int i, j; @@ -199,6 +199,7 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, && observer_bbob->dimensions_in_current_info_file[i] != logger->number_of_variables; i++) { ; /* checks whether dimension already present in the current infoFile */ } + if (i < observer_bbob->number_of_dimensions && observer_bbob->dimensions_in_current_info_file[i] == 0) { /* new dimension seen for the first time */ observer_bbob->dimensions_in_current_info_file[i] = logger->number_of_variables; diff --git a/code-experiments/src/observer_bbob.c b/code-experiments/src/observer_bbob.c index c3bd8c72c..564f3c72c 100644 --- a/code-experiments/src/observer_bbob.c +++ b/code-experiments/src/observer_bbob.c @@ -9,6 +9,8 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *problem); static void logger_bbob_free(void *logger); +#define MAX_NB_DIMS 10 /* TODO: remove in favor of a dynamically set value */ + /** * @brief The bbob observer data type. */ @@ -19,9 +21,18 @@ typedef struct { size_t current_fun_id; size_t info_file_first_instance; size_t number_of_dimensions; - size_t dimensions_in_current_info_file[6]; + size_t dimensions_in_current_info_file[MAX_NB_DIMS]; } observer_bbob_data_t; +/** + * @brief frees the data of bbob observer + */ +static void observer_bbob_data_free(void *data){ + /*coco_free_memory(((observer_bbob_data_t *)data)->dimensions_in_current_info_file);*/ + (void) data; /* to silence warning*/ +} + + /** * @brief Initializes the bbob observer. */ @@ -33,14 +44,14 @@ static void observer_bbob(coco_observer_t *observer, const char *options, coco_o observer_bbob->current_dim = 0; observer_bbob->current_fun_id = 0; observer_bbob->info_file_first_instance = 0; - observer_bbob->number_of_dimensions = 6; + observer_bbob->number_of_dimensions = MAX_NB_DIMS; for (i = 0; i < observer_bbob->number_of_dimensions; i++) { observer_bbob->dimensions_in_current_info_file[i] = 0; } observer->logger_allocate_function = logger_bbob; observer->logger_free_function = logger_bbob_free; - observer->data_free_function = NULL; + observer->data_free_function = observer_bbob_data_free; observer->data = observer_bbob; From 7808678e97d8afbdb914f5d2d02397b22a373e11 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 12 Feb 2016 15:13:15 +0100 Subject: [PATCH 029/446] now, logger_is_open is an attribute of the observer and no longer a static global variable of the logger --- code-experiments/src/logger_bbob.c | 21 ++++++++++----------- code-experiments/src/observer_bbob.c | 2 ++ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 28967f07d..e529b7c23 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -26,20 +26,15 @@ #include "coco_string.c" #include "observer_bbob.c" - -/* a possible solution: have a list of dims that are already in the file, if the ones we're about to log - * is != bbob_current_dim and the funId is current_funId, create a new .info file with as suffix the - * number of the first instance */ - /* The current_... mechanism fails if several problems are open. * For the time being this should lead to an error. * * A possible solution: bbob_logger_is_open becomes a reference * counter and as long as another logger is open, always a new info * file is generated. - * TODO: Shouldn't the new way of handling observers already fix this? + * TODO: Shouldn't the new way of handling observers already fix this? + * logger_is_open still triggers when a python run from the python shell is interrupted and a new one is lunched */ -static int bbob_logger_is_open = 0; /* this could become lock-list of .info files */ /* TODO: add possibility of adding a prefix to the index files (easy to do through observer options) */ @@ -379,6 +374,12 @@ static void logger_bbob_free(void *stuff) { */ logger_bbob_data_t *logger = (logger_bbob_data_t *) stuff; + if (logger->observer->data != NULL) { + /*the observer data seems to be freed before the logger in the last run!*/ + ((observer_bbob_data_t *) logger->observer->data)->logger_is_open = 0; + } + + if ((coco_log_level >= COCO_DEBUG) && logger && logger->number_of_evaluations > 0) { coco_debug("best f=%e after %ld fevals (done observing)\n", logger->best_fvalue, logger->number_of_evaluations); @@ -427,7 +428,6 @@ static void logger_bbob_free(void *stuff) { logger->evaluations = NULL; } - bbob_logger_is_open = 0; } static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *inner_problem) { @@ -441,8 +441,7 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *in coco_warning("logger_bbob(): The bbob logger shouldn't be used to log a problem with %d objectives", inner_problem->number_of_objectives); } - - if (bbob_logger_is_open) + if (((observer_bbob_data_t *) observer->data)->logger_is_open) coco_error("The current bbob_logger (observer) must be closed before a new one is opened"); /* This is the name of the folder which happens to be the algName */ /*logger->path = coco_strdup(observer->output_folder);*/ @@ -479,7 +478,7 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *in problem = coco_problem_transformed_allocate(inner_problem, logger_bbob, logger_bbob_free, observer->observer_name); problem->evaluate_function = logger_bbob_evaluate; - bbob_logger_is_open = 1; + ((observer_bbob_data_t *) observer->data)->logger_is_open = 1; return problem; } diff --git a/code-experiments/src/observer_bbob.c b/code-experiments/src/observer_bbob.c index 564f3c72c..5803e0ae3 100644 --- a/code-experiments/src/observer_bbob.c +++ b/code-experiments/src/observer_bbob.c @@ -22,6 +22,7 @@ typedef struct { size_t info_file_first_instance; size_t number_of_dimensions; size_t dimensions_in_current_info_file[MAX_NB_DIMS]; + int logger_is_open; } observer_bbob_data_t; /** @@ -48,6 +49,7 @@ static void observer_bbob(coco_observer_t *observer, const char *options, coco_o for (i = 0; i < observer_bbob->number_of_dimensions; i++) { observer_bbob->dimensions_in_current_info_file[i] = 0; } + observer_bbob->logger_is_open = 0; observer->logger_allocate_function = logger_bbob; observer->logger_free_function = logger_bbob_free; From 97a59df0aa27b041bf3fb94807861b63b7558b79 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 12 Feb 2016 15:13:15 +0100 Subject: [PATCH 030/446] now, logger_is_open is an attribute of the observer and no longer a static global variable of the logger --- code-experiments/src/logger_bbob.c | 21 ++++++++++----------- code-experiments/src/observer_bbob.c | 2 ++ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 28967f07d..e529b7c23 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -26,20 +26,15 @@ #include "coco_string.c" #include "observer_bbob.c" - -/* a possible solution: have a list of dims that are already in the file, if the ones we're about to log - * is != bbob_current_dim and the funId is current_funId, create a new .info file with as suffix the - * number of the first instance */ - /* The current_... mechanism fails if several problems are open. * For the time being this should lead to an error. * * A possible solution: bbob_logger_is_open becomes a reference * counter and as long as another logger is open, always a new info * file is generated. - * TODO: Shouldn't the new way of handling observers already fix this? + * TODO: Shouldn't the new way of handling observers already fix this? + * logger_is_open still triggers when a python run from the python shell is interrupted and a new one is lunched */ -static int bbob_logger_is_open = 0; /* this could become lock-list of .info files */ /* TODO: add possibility of adding a prefix to the index files (easy to do through observer options) */ @@ -379,6 +374,12 @@ static void logger_bbob_free(void *stuff) { */ logger_bbob_data_t *logger = (logger_bbob_data_t *) stuff; + if (logger->observer->data != NULL) { + /*the observer data seems to be freed before the logger in the last run!*/ + ((observer_bbob_data_t *) logger->observer->data)->logger_is_open = 0; + } + + if ((coco_log_level >= COCO_DEBUG) && logger && logger->number_of_evaluations > 0) { coco_debug("best f=%e after %ld fevals (done observing)\n", logger->best_fvalue, logger->number_of_evaluations); @@ -427,7 +428,6 @@ static void logger_bbob_free(void *stuff) { logger->evaluations = NULL; } - bbob_logger_is_open = 0; } static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *inner_problem) { @@ -441,8 +441,7 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *in coco_warning("logger_bbob(): The bbob logger shouldn't be used to log a problem with %d objectives", inner_problem->number_of_objectives); } - - if (bbob_logger_is_open) + if (((observer_bbob_data_t *) observer->data)->logger_is_open) coco_error("The current bbob_logger (observer) must be closed before a new one is opened"); /* This is the name of the folder which happens to be the algName */ /*logger->path = coco_strdup(observer->output_folder);*/ @@ -479,7 +478,7 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *in problem = coco_problem_transformed_allocate(inner_problem, logger_bbob, logger_bbob_free, observer->observer_name); problem->evaluate_function = logger_bbob_evaluate; - bbob_logger_is_open = 1; + ((observer_bbob_data_t *) observer->data)->logger_is_open = 1; return problem; } diff --git a/code-experiments/src/observer_bbob.c b/code-experiments/src/observer_bbob.c index 564f3c72c..5803e0ae3 100644 --- a/code-experiments/src/observer_bbob.c +++ b/code-experiments/src/observer_bbob.c @@ -22,6 +22,7 @@ typedef struct { size_t info_file_first_instance; size_t number_of_dimensions; size_t dimensions_in_current_info_file[MAX_NB_DIMS]; + int logger_is_open; } observer_bbob_data_t; /** @@ -48,6 +49,7 @@ static void observer_bbob(coco_observer_t *observer, const char *options, coco_o for (i = 0; i < observer_bbob->number_of_dimensions; i++) { observer_bbob->dimensions_in_current_info_file[i] = 0; } + observer_bbob->logger_is_open = 0; observer->logger_allocate_function = logger_bbob; observer->logger_free_function = logger_bbob_free; From e27f9e3db5be06f1fc5f6d9b3699e687d610d2a9 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 12 Feb 2016 17:27:47 +0100 Subject: [PATCH 031/446] now, logger_bbob uses precision_f and precision_x from the observer. Replaced hard-coded value of target_precision with the one from the observer --- code-experiments/src/logger_bbob.c | 98 +++++++++++++++--------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index e529b7c23..4915f4813 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -44,14 +44,14 @@ typedef struct { coco_observer_t *observer; int is_initialized; - FILE *index_file; /* index file */ - FILE *fdata_file; /* function value aligned data file */ - FILE *tdata_file; /* number of function evaluations aligned data file */ - FILE *rdata_file; /* restart info data file */ + FILE *index_file; /**< @brief index file */ + FILE *fdata_file; /**< @brief function value aligned data file */ + FILE *tdata_file; /**< @brief number of function evaluations aligned data file */ + FILE *rdata_file; /**< @brief restart info data file */ size_t number_of_evaluations; double best_fvalue; double last_fvalue; - short written_last_eval; /* allows writing the the data of the final fun eval in the .tdat file if not already written by the t_trigger*/ + short written_last_eval; /**< @brief allows writing the the data of the final fun eval in the .tdat file if not already written by the t_trigger*/ double *best_solution; /* The following are to only pass data as a parameter in the free function. The * interface should probably be the same for all free functions so passing the @@ -76,7 +76,7 @@ static const char *bbob_file_header_str = "%% function evaluation | " "x2...\n"; /** - * adds a formated line to a data file + * @brief adds a formated line to a data file */ static void logger_bbob_write_data(FILE *target_file, size_t number_of_evaluations, @@ -84,16 +84,18 @@ static void logger_bbob_write_data(FILE *target_file, double best_fvalue, double best_value, const double *x, - size_t number_of_variables) { - /* for some reason, it's %.0f in the old code instead of the 10.9e - * in the documentation - */ - fprintf(target_file, "%ld %+10.9e %+10.9e %+10.9e %+10.9e", number_of_evaluations, fvalue - best_value, - best_fvalue - best_value, fvalue, best_fvalue); + size_t number_of_variables, + const int precision_f, + const int precision_x) { + +/* fprintf(target_file, "%ld %+10.9e %+10.9e %+10.9e %+10.9e", number_of_evaluations, fvalue - best_value, + best_fvalue - best_value, fvalue, best_fvalue);*/ + fprintf(target_file, "%lu %.*e %.*e %.*e %.*e", number_of_evaluations, precision_f, fvalue - best_value, + precision_f, best_fvalue - best_value, precision_f, fvalue, precision_f, best_fvalue); if (number_of_variables < 22) { size_t i; for (i = 0; i < number_of_variables; i++) { - fprintf(target_file, " %+5.4e", x[i]); + fprintf(target_file, " %.*e", precision_x, x[i]); } } fprintf(target_file, "\n"); @@ -139,8 +141,8 @@ static void logger_bbob_open_dataFile(FILE **target_file, } /** - * Creates the index file fileName_prefix+problem_id+file_extension in - * folde_path + * @brief Creates the index file fileName_prefix+problem_id+file_extension in + * folde_path */ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, const char *folder_path, @@ -233,9 +235,8 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, } fclose(tmp_file); } - fprintf(*target_file, "funcId = %d, DIM = %lu, Precision = %.3e, algId = '%s'\n", - (int) strtol(function_id, NULL, 10), logger->number_of_variables, pow(10, -8), + (int) strtol(function_id, NULL, 10), logger->number_of_variables, logger->observer->target_precision, logger->observer->algorithm_name); fprintf(*target_file, "%%\n"); strncat(used_dataFile_path, "_i", COCO_PATH_MAX - strlen(used_dataFile_path) - 1); @@ -347,14 +348,14 @@ static void logger_bbob_evaluate(coco_problem_t *problem, const double *x, doubl if (coco_observer_targets_trigger(logger->targets, y[0] - logger->optimal_fvalue)) { logger_bbob_write_data(logger->fdata_file, logger->number_of_evaluations, y[0], logger->best_fvalue, - logger->optimal_fvalue, x, problem->number_of_variables); + logger->optimal_fvalue, x, problem->number_of_variables, logger->observer->precision_f, logger->observer->precision_x); } /* Add a line in the .tdat file each time an fevals trigger is reached.*/ if (coco_observer_evaluations_trigger(logger->evaluations, logger->number_of_evaluations)) { logger->written_last_eval = 1; logger_bbob_write_data(logger->tdata_file, logger->number_of_evaluations, y[0], logger->best_fvalue, - logger->optimal_fvalue, x, problem->number_of_variables); + logger->optimal_fvalue, x, problem->number_of_variables, logger->observer->precision_f, logger->observer->precision_x); } /* Flush output so that impatient users can see progress. */ @@ -362,31 +363,41 @@ static void logger_bbob_evaluate(coco_problem_t *problem, const double *x, doubl } /** - * Also serves as a finalize run method so. Must be called at the end - * of Each run to correctly fill the index file - * - * TODO: make sure it is called at the end of each run or move the - * writing into files to another function + * @brief Finalize function of the logger, writes final data to the index file */ -static void logger_bbob_free(void *stuff) { - /* TODO: do all the "non simply freeing" stuff in another function - * that can have problem as input - */ - logger_bbob_data_t *logger = (logger_bbob_data_t *) stuff; +static void logger_bbob_finalize(const logger_bbob_data_t *logger){ + if ((coco_log_level >= COCO_DEBUG) && logger && logger->number_of_evaluations > 0) { + coco_debug("best f=%e after %ld fevals (done observing)\n", logger->best_fvalue, + logger->number_of_evaluations); + } + /* log the final information of the run in the info file*/ + fprintf(logger->index_file, ":%ld|%.1e", logger->number_of_evaluations, + logger->best_fvalue - logger->optimal_fvalue); + + /* log the last evaluation (if not logged) in the *.tdata file*/ + if (!logger->written_last_eval) { + logger_bbob_write_data(logger->tdata_file, logger->number_of_evaluations, logger->last_fvalue, + logger->best_fvalue, logger->optimal_fvalue, logger->best_solution, logger->number_of_variables, logger->observer->precision_f, logger->observer->precision_x); + } + + /* let the observer know that the logger is closed */ if (logger->observer->data != NULL) { /*the observer data seems to be freed before the logger in the last run!*/ - ((observer_bbob_data_t *) logger->observer->data)->logger_is_open = 0; + ((observer_bbob_data_t *) logger->observer->data)->logger_is_open = 0; } +} - - if ((coco_log_level >= COCO_DEBUG) && logger && logger->number_of_evaluations > 0) { - coco_debug("best f=%e after %ld fevals (done observing)\n", logger->best_fvalue, - logger->number_of_evaluations); - } + +/** + * @brief calls the finalize functions then frees the logger + */ +static void logger_bbob_free(void *stuff) { + + logger_bbob_data_t *logger = (logger_bbob_data_t *) stuff; + + logger_bbob_finalize(logger); if (logger->index_file != NULL) { - fprintf(logger->index_file, ":%ld|%.1e", logger->number_of_evaluations, - logger->best_fvalue - logger->optimal_fvalue); fclose(logger->index_file); logger->index_file = NULL; } @@ -400,10 +411,6 @@ static void logger_bbob_free(void *stuff) { * instance. Maybe start with forcing it to generate a new * "instance" of problem for each restart in the beginning */ - if (!logger->written_last_eval) { - logger_bbob_write_data(logger->tdata_file, logger->number_of_evaluations, logger->last_fvalue, - logger->best_fvalue, logger->optimal_fvalue, logger->best_solution, logger->number_of_variables); - } fclose(logger->tdata_file); logger->tdata_file = NULL; } @@ -443,16 +450,13 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *in } if (((observer_bbob_data_t *) observer->data)->logger_is_open) coco_error("The current bbob_logger (observer) must be closed before a new one is opened"); - /* This is the name of the folder which happens to be the algName */ - /*logger->path = coco_strdup(observer->output_folder);*/ + logger_bbob->index_file = NULL; logger_bbob->fdata_file = NULL; logger_bbob->tdata_file = NULL; logger_bbob->rdata_file = NULL; logger_bbob->number_of_variables = inner_problem->number_of_variables; if (inner_problem->best_value == NULL) { - /* coco_error("Optimal f value must be defined for each problem in order for the logger to work properly"); */ - /* Setting the value to 0 results in the assertion y>=optimal_fvalue being susceptible to failure */ coco_warning("undefined optimal f value. Set to 0"); logger_bbob->optimal_fvalue = 0; } else { @@ -461,10 +465,6 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *in logger_bbob->number_of_evaluations = 0; logger_bbob->best_solution = coco_allocate_vector(inner_problem->number_of_variables); - /* TODO: the following inits are just to be in the safe side and - * should eventually be removed. Some fields of the bbob_logger struct - * might be useless - */ logger_bbob->function_id = coco_problem_get_suite_dep_function(inner_problem); logger_bbob->instance_id = coco_problem_get_suite_dep_instance(inner_problem); logger_bbob->written_last_eval = 1; From 12a77713cac067c15654860ff7e203e3370fa654 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 12 Feb 2016 17:27:47 +0100 Subject: [PATCH 032/446] now, logger_bbob uses precision_f and precision_x from the observer. Replaced hard-coded value of target_precision with the one from the observer --- code-experiments/src/logger_bbob.c | 98 +++++++++++++++--------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index e529b7c23..4915f4813 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -44,14 +44,14 @@ typedef struct { coco_observer_t *observer; int is_initialized; - FILE *index_file; /* index file */ - FILE *fdata_file; /* function value aligned data file */ - FILE *tdata_file; /* number of function evaluations aligned data file */ - FILE *rdata_file; /* restart info data file */ + FILE *index_file; /**< @brief index file */ + FILE *fdata_file; /**< @brief function value aligned data file */ + FILE *tdata_file; /**< @brief number of function evaluations aligned data file */ + FILE *rdata_file; /**< @brief restart info data file */ size_t number_of_evaluations; double best_fvalue; double last_fvalue; - short written_last_eval; /* allows writing the the data of the final fun eval in the .tdat file if not already written by the t_trigger*/ + short written_last_eval; /**< @brief allows writing the the data of the final fun eval in the .tdat file if not already written by the t_trigger*/ double *best_solution; /* The following are to only pass data as a parameter in the free function. The * interface should probably be the same for all free functions so passing the @@ -76,7 +76,7 @@ static const char *bbob_file_header_str = "%% function evaluation | " "x2...\n"; /** - * adds a formated line to a data file + * @brief adds a formated line to a data file */ static void logger_bbob_write_data(FILE *target_file, size_t number_of_evaluations, @@ -84,16 +84,18 @@ static void logger_bbob_write_data(FILE *target_file, double best_fvalue, double best_value, const double *x, - size_t number_of_variables) { - /* for some reason, it's %.0f in the old code instead of the 10.9e - * in the documentation - */ - fprintf(target_file, "%ld %+10.9e %+10.9e %+10.9e %+10.9e", number_of_evaluations, fvalue - best_value, - best_fvalue - best_value, fvalue, best_fvalue); + size_t number_of_variables, + const int precision_f, + const int precision_x) { + +/* fprintf(target_file, "%ld %+10.9e %+10.9e %+10.9e %+10.9e", number_of_evaluations, fvalue - best_value, + best_fvalue - best_value, fvalue, best_fvalue);*/ + fprintf(target_file, "%lu %.*e %.*e %.*e %.*e", number_of_evaluations, precision_f, fvalue - best_value, + precision_f, best_fvalue - best_value, precision_f, fvalue, precision_f, best_fvalue); if (number_of_variables < 22) { size_t i; for (i = 0; i < number_of_variables; i++) { - fprintf(target_file, " %+5.4e", x[i]); + fprintf(target_file, " %.*e", precision_x, x[i]); } } fprintf(target_file, "\n"); @@ -139,8 +141,8 @@ static void logger_bbob_open_dataFile(FILE **target_file, } /** - * Creates the index file fileName_prefix+problem_id+file_extension in - * folde_path + * @brief Creates the index file fileName_prefix+problem_id+file_extension in + * folde_path */ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, const char *folder_path, @@ -233,9 +235,8 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, } fclose(tmp_file); } - fprintf(*target_file, "funcId = %d, DIM = %lu, Precision = %.3e, algId = '%s'\n", - (int) strtol(function_id, NULL, 10), logger->number_of_variables, pow(10, -8), + (int) strtol(function_id, NULL, 10), logger->number_of_variables, logger->observer->target_precision, logger->observer->algorithm_name); fprintf(*target_file, "%%\n"); strncat(used_dataFile_path, "_i", COCO_PATH_MAX - strlen(used_dataFile_path) - 1); @@ -347,14 +348,14 @@ static void logger_bbob_evaluate(coco_problem_t *problem, const double *x, doubl if (coco_observer_targets_trigger(logger->targets, y[0] - logger->optimal_fvalue)) { logger_bbob_write_data(logger->fdata_file, logger->number_of_evaluations, y[0], logger->best_fvalue, - logger->optimal_fvalue, x, problem->number_of_variables); + logger->optimal_fvalue, x, problem->number_of_variables, logger->observer->precision_f, logger->observer->precision_x); } /* Add a line in the .tdat file each time an fevals trigger is reached.*/ if (coco_observer_evaluations_trigger(logger->evaluations, logger->number_of_evaluations)) { logger->written_last_eval = 1; logger_bbob_write_data(logger->tdata_file, logger->number_of_evaluations, y[0], logger->best_fvalue, - logger->optimal_fvalue, x, problem->number_of_variables); + logger->optimal_fvalue, x, problem->number_of_variables, logger->observer->precision_f, logger->observer->precision_x); } /* Flush output so that impatient users can see progress. */ @@ -362,31 +363,41 @@ static void logger_bbob_evaluate(coco_problem_t *problem, const double *x, doubl } /** - * Also serves as a finalize run method so. Must be called at the end - * of Each run to correctly fill the index file - * - * TODO: make sure it is called at the end of each run or move the - * writing into files to another function + * @brief Finalize function of the logger, writes final data to the index file */ -static void logger_bbob_free(void *stuff) { - /* TODO: do all the "non simply freeing" stuff in another function - * that can have problem as input - */ - logger_bbob_data_t *logger = (logger_bbob_data_t *) stuff; +static void logger_bbob_finalize(const logger_bbob_data_t *logger){ + if ((coco_log_level >= COCO_DEBUG) && logger && logger->number_of_evaluations > 0) { + coco_debug("best f=%e after %ld fevals (done observing)\n", logger->best_fvalue, + logger->number_of_evaluations); + } + /* log the final information of the run in the info file*/ + fprintf(logger->index_file, ":%ld|%.1e", logger->number_of_evaluations, + logger->best_fvalue - logger->optimal_fvalue); + + /* log the last evaluation (if not logged) in the *.tdata file*/ + if (!logger->written_last_eval) { + logger_bbob_write_data(logger->tdata_file, logger->number_of_evaluations, logger->last_fvalue, + logger->best_fvalue, logger->optimal_fvalue, logger->best_solution, logger->number_of_variables, logger->observer->precision_f, logger->observer->precision_x); + } + + /* let the observer know that the logger is closed */ if (logger->observer->data != NULL) { /*the observer data seems to be freed before the logger in the last run!*/ - ((observer_bbob_data_t *) logger->observer->data)->logger_is_open = 0; + ((observer_bbob_data_t *) logger->observer->data)->logger_is_open = 0; } +} - - if ((coco_log_level >= COCO_DEBUG) && logger && logger->number_of_evaluations > 0) { - coco_debug("best f=%e after %ld fevals (done observing)\n", logger->best_fvalue, - logger->number_of_evaluations); - } + +/** + * @brief calls the finalize functions then frees the logger + */ +static void logger_bbob_free(void *stuff) { + + logger_bbob_data_t *logger = (logger_bbob_data_t *) stuff; + + logger_bbob_finalize(logger); if (logger->index_file != NULL) { - fprintf(logger->index_file, ":%ld|%.1e", logger->number_of_evaluations, - logger->best_fvalue - logger->optimal_fvalue); fclose(logger->index_file); logger->index_file = NULL; } @@ -400,10 +411,6 @@ static void logger_bbob_free(void *stuff) { * instance. Maybe start with forcing it to generate a new * "instance" of problem for each restart in the beginning */ - if (!logger->written_last_eval) { - logger_bbob_write_data(logger->tdata_file, logger->number_of_evaluations, logger->last_fvalue, - logger->best_fvalue, logger->optimal_fvalue, logger->best_solution, logger->number_of_variables); - } fclose(logger->tdata_file); logger->tdata_file = NULL; } @@ -443,16 +450,13 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *in } if (((observer_bbob_data_t *) observer->data)->logger_is_open) coco_error("The current bbob_logger (observer) must be closed before a new one is opened"); - /* This is the name of the folder which happens to be the algName */ - /*logger->path = coco_strdup(observer->output_folder);*/ + logger_bbob->index_file = NULL; logger_bbob->fdata_file = NULL; logger_bbob->tdata_file = NULL; logger_bbob->rdata_file = NULL; logger_bbob->number_of_variables = inner_problem->number_of_variables; if (inner_problem->best_value == NULL) { - /* coco_error("Optimal f value must be defined for each problem in order for the logger to work properly"); */ - /* Setting the value to 0 results in the assertion y>=optimal_fvalue being susceptible to failure */ coco_warning("undefined optimal f value. Set to 0"); logger_bbob->optimal_fvalue = 0; } else { @@ -461,10 +465,6 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *in logger_bbob->number_of_evaluations = 0; logger_bbob->best_solution = coco_allocate_vector(inner_problem->number_of_variables); - /* TODO: the following inits are just to be in the safe side and - * should eventually be removed. Some fields of the bbob_logger struct - * might be useless - */ logger_bbob->function_id = coco_problem_get_suite_dep_function(inner_problem); logger_bbob->instance_id = coco_problem_get_suite_dep_instance(inner_problem); logger_bbob->written_last_eval = 1; From 8d828a3ace5f2666d60d60c49db6b4bb8934e666 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 12 Feb 2016 17:53:18 +0100 Subject: [PATCH 033/446] some documentation in bbob_logger.c --- code-experiments/src/logger_bbob.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 4915f4813..6d80ddefa 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -53,10 +53,6 @@ typedef struct { double last_fvalue; short written_last_eval; /**< @brief allows writing the the data of the final fun eval in the .tdat file if not already written by the t_trigger*/ double *best_solution; - /* The following are to only pass data as a parameter in the free function. The - * interface should probably be the same for all free functions so passing the - * problem as a second parameter is not an option even though we need info - * form it.*/ size_t function_id; size_t instance_id; size_t number_of_variables; @@ -88,8 +84,6 @@ static void logger_bbob_write_data(FILE *target_file, const int precision_f, const int precision_x) { -/* fprintf(target_file, "%ld %+10.9e %+10.9e %+10.9e %+10.9e", number_of_evaluations, fvalue - best_value, - best_fvalue - best_value, fvalue, best_fvalue);*/ fprintf(target_file, "%lu %.*e %.*e %.*e %.*e", number_of_evaluations, precision_f, fvalue - best_value, precision_f, best_fvalue - best_value, precision_f, fvalue, precision_f, best_fvalue); if (number_of_variables < 22) { @@ -102,7 +96,7 @@ static void logger_bbob_write_data(FILE *target_file, } /** - * Error when trying to create the file "path" + * @brief Error when trying to create the file "path" */ static void logger_bbob_error_io(FILE *path, int errnum) { const char *error_format = "Error opening file: %s\n "; @@ -110,15 +104,8 @@ static void logger_bbob_error_io(FILE *path, int errnum) { } /** - * Creates the data files or simply opens it + * @brief Creates the data file or simply opens it */ - -/* - calling sequence: - logger_bbob_open_dataFile(&(logger->fdata_file), logger->observer->output_folder, dataFile_path, - ".dat"); - */ - static void logger_bbob_open_dataFile(FILE **target_file, const char *path, const char *dataFile_path, From 07fc72705e55d9fe0b81913a9a08c8b715e8c466 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 12 Feb 2016 17:53:18 +0100 Subject: [PATCH 034/446] some documentation in bbob_logger.c --- code-experiments/src/logger_bbob.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 4915f4813..6d80ddefa 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -53,10 +53,6 @@ typedef struct { double last_fvalue; short written_last_eval; /**< @brief allows writing the the data of the final fun eval in the .tdat file if not already written by the t_trigger*/ double *best_solution; - /* The following are to only pass data as a parameter in the free function. The - * interface should probably be the same for all free functions so passing the - * problem as a second parameter is not an option even though we need info - * form it.*/ size_t function_id; size_t instance_id; size_t number_of_variables; @@ -88,8 +84,6 @@ static void logger_bbob_write_data(FILE *target_file, const int precision_f, const int precision_x) { -/* fprintf(target_file, "%ld %+10.9e %+10.9e %+10.9e %+10.9e", number_of_evaluations, fvalue - best_value, - best_fvalue - best_value, fvalue, best_fvalue);*/ fprintf(target_file, "%lu %.*e %.*e %.*e %.*e", number_of_evaluations, precision_f, fvalue - best_value, precision_f, best_fvalue - best_value, precision_f, fvalue, precision_f, best_fvalue); if (number_of_variables < 22) { @@ -102,7 +96,7 @@ static void logger_bbob_write_data(FILE *target_file, } /** - * Error when trying to create the file "path" + * @brief Error when trying to create the file "path" */ static void logger_bbob_error_io(FILE *path, int errnum) { const char *error_format = "Error opening file: %s\n "; @@ -110,15 +104,8 @@ static void logger_bbob_error_io(FILE *path, int errnum) { } /** - * Creates the data files or simply opens it + * @brief Creates the data file or simply opens it */ - -/* - calling sequence: - logger_bbob_open_dataFile(&(logger->fdata_file), logger->observer->output_folder, dataFile_path, - ".dat"); - */ - static void logger_bbob_open_dataFile(FILE **target_file, const char *path, const char *dataFile_path, From 8c4f91be5e0fa73c00c354cc01232db0aec4853b Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 16 Feb 2016 17:07:53 +0100 Subject: [PATCH 035/446] fixed key-error when post-processing non-standard dimensions and trying to generate the pprldmany-single-functions --- code-postprocessing/bbob_pproc/compall/pprldmany.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code-postprocessing/bbob_pproc/compall/pprldmany.py b/code-postprocessing/bbob_pproc/compall/pprldmany.py index eb7a2edad..4c807b321 100644 --- a/code-postprocessing/bbob_pproc/compall/pprldmany.py +++ b/code-postprocessing/bbob_pproc/compall/pprldmany.py @@ -552,9 +552,12 @@ def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', dictMaxEvals.setdefault(alg, []).extend(runlengthunsucc) displaybest2009 = not isBiobjective #disabled for bi-objective case + bestalgentries = bestalg.loadBestAlgorithm(isBiobjective) #no extra loading since force is default to False + if (dim, f) not in bestalgentries.keys(): #dimension/function not present in best2009 + displaybest2009 = False if displaybest2009: #set_trace() - bestalgentries = bestalg.loadBestAlgorithm(isBiobjective) + #bestalgentries = bestalg.loadBestAlgorithm(isBiobjective) # now done above bestalgentry = bestalgentries[(dim, f)] bestalgevals = bestalgentry.detEvals(target_values((f, dim))) # print bestalgevals From 3400159e8716cfa35aa4a40aeb5b5f6cc38df278 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 16 Feb 2016 17:07:53 +0100 Subject: [PATCH 036/446] fixed key-error when post-processing non-standard dimensions and trying to generate the pprldmany-single-functions --- code-postprocessing/bbob_pproc/compall/pprldmany.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code-postprocessing/bbob_pproc/compall/pprldmany.py b/code-postprocessing/bbob_pproc/compall/pprldmany.py index eb7a2edad..4c807b321 100644 --- a/code-postprocessing/bbob_pproc/compall/pprldmany.py +++ b/code-postprocessing/bbob_pproc/compall/pprldmany.py @@ -552,9 +552,12 @@ def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', dictMaxEvals.setdefault(alg, []).extend(runlengthunsucc) displaybest2009 = not isBiobjective #disabled for bi-objective case + bestalgentries = bestalg.loadBestAlgorithm(isBiobjective) #no extra loading since force is default to False + if (dim, f) not in bestalgentries.keys(): #dimension/function not present in best2009 + displaybest2009 = False if displaybest2009: #set_trace() - bestalgentries = bestalg.loadBestAlgorithm(isBiobjective) + #bestalgentries = bestalg.loadBestAlgorithm(isBiobjective) # now done above bestalgentry = bestalgentries[(dim, f)] bestalgevals = bestalgentry.detEvals(target_values((f, dim))) # print bestalgevals From 4ee0a33993e171c7251e02e3d1fdc533bf045198 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 16 Feb 2016 18:21:06 +0100 Subject: [PATCH 037/446] added transform_vars_blockrotation.c and transform_vars_permutation.c in order to separate permutation and block-rotation --- code-experiments/src/f_ellipsoid.c | 61 ++++++++++++ code-experiments/src/suite_largescale.c | 2 +- .../src/transform_vars_blockrotation.c | 96 +++++++++++++++++++ .../src/transform_vars_permutation.c | 58 +++++++++++ 4 files changed, 216 insertions(+), 1 deletion(-) create mode 100644 code-experiments/src/transform_vars_blockrotation.c create mode 100644 code-experiments/src/transform_vars_permutation.c diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index c945e5801..f9eb4e6aa 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -15,6 +15,8 @@ #include "transform_obj_shift.c" #include "transform_vars_permblockdiag.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" #include "transform_obj_norm_by_dim.c" /** @@ -183,6 +185,65 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz return problem; } +static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate_test_seprate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); + swap_range = ls_get_swap_range(dimension); + nb_swaps = ls_get_nb_swaps(dimension); + + /*printf("f:%zu n:%zu i:%zu bs:[%zu,...,%zu,%zu] sR:%zu\n", function, dimension, instance, block_sizes[0], block_sizes[0],block_sizes[nb_blocks-1], swap_range);*/ + + xopt = coco_allocate_vector(dimension); + bbob2009_compute_xopt(xopt, rseed, dimension); + fopt = bbob2009_compute_fopt(function, instance); + + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + + problem = f_ellipsoid_allocate(dimension); + problem = transform_vars_oscillate(problem); + + //problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P2, dimension); + + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + + ls_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + coco_free_memory(xopt); + return problem; +} diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index b24855d9d..56d50de6a 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -45,7 +45,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 2) { - problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem = f_ellipsoid_permblockdiag_bbob_problem_allocate_test_seprate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 3) { diff --git a/code-experiments/src/transform_vars_blockrotation.c b/code-experiments/src/transform_vars_blockrotation.c new file mode 100644 index 000000000..8a3d4c86f --- /dev/null +++ b/code-experiments/src/transform_vars_blockrotation.c @@ -0,0 +1,96 @@ +/** + * @file transform_vars_blockrotation.c + * @brief Implementation of performing a block-rotation transformation on decision values. + * + * x |-> Bx + * The matrix B is stored in a 2-D array. Only the content of the blocks are stored + */ + +#include + +#include "coco.h" +#include "coco_problem.c" +#include "large_scale_transformations.c" + +/** + * @brief Data type for transform_vars_blockrotation. + */ +typedef struct { + double **B; /**< @brief the block-diagonal matrices*/ + double *x; + size_t *block_sizes; /**< @brief the list of block-sizes*/ + size_t nb_blocks; /**< @brief the number of blocks in the matrix */ + size_t *block_size_map; /**< @brief maps a row to the block-size of the block to which it belong, keep until better way is found */ + size_t *first_non_zero_map; /**< @brief maps a row to the index of its first non zero element */ +} transform_vars_blockrotation_t; + +static void transform_vars_blockrotation_evaluate(coco_problem_t *problem, const double *x, double *y) { + size_t i, j, current_blocksize, first_non_zero_ind; + transform_vars_blockrotation_t *data; + coco_problem_t *inner_problem; + + data = (transform_vars_blockrotation_t *) coco_problem_transformed_get_data(problem); + inner_problem = coco_problem_transformed_get_inner_problem(problem); + for (i = 0; i < inner_problem->number_of_variables; ++i) { + current_blocksize = data->block_size_map[i]; + first_non_zero_ind = data->first_non_zero_map[i]; + data->x[i] = 0; + /*compute data->x[i] = < B[i,:] , x > */ + for (j = first_non_zero_ind; j < first_non_zero_ind + current_blocksize; ++j) { + data->x[i] += data->B[i][j - first_non_zero_ind] * x[j]; /*all B lines start at 0*/ + } + } + + coco_evaluate_function(inner_problem, data->x, y); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +static void transform_vars_blockrotation_free(void *thing) { + transform_vars_blockrotation_t *data = (transform_vars_blockrotation_t *) thing; + coco_free_memory(data->B); + coco_free_memory(data->block_sizes); + coco_free_memory(data->x); + coco_free_memory(data->block_size_map); +} + + +static coco_problem_t *transform_vars_blockrotation(coco_problem_t *inner_problem, + const double * const *B, + const size_t number_of_variables, + const size_t *block_sizes, + const size_t nb_blocks) { + coco_problem_t *problem; + transform_vars_blockrotation_t *data; + size_t entries_in_M, idx_blocksize, next_bs_change, current_blocksize; + int i; + entries_in_M = 0; + assert(number_of_variables > 0);/*tmp*/ + for (i = 0; i < nb_blocks; i++) { + entries_in_M += block_sizes[i] * block_sizes[i]; + } + data = (transform_vars_blockrotation_t *) coco_allocate_memory(sizeof(*data)); + data->B = ls_copy_block_matrix(B, number_of_variables, block_sizes, nb_blocks); + data->x = coco_allocate_vector(inner_problem->number_of_variables); + data->block_sizes = coco_duplicate_size_t_vector(block_sizes, nb_blocks); + data->nb_blocks = nb_blocks; + data->block_size_map = coco_allocate_vector_size_t(number_of_variables); + data->first_non_zero_map = coco_allocate_vector_size_t(number_of_variables); + + idx_blocksize = 0; + next_bs_change = block_sizes[idx_blocksize]; + for (i = 0; i < number_of_variables; i++) { + if (i >= next_bs_change) { + idx_blocksize++; + next_bs_change += block_sizes[idx_blocksize]; + } + current_blocksize=block_sizes[idx_blocksize]; + data->block_size_map[i] = current_blocksize; + data->first_non_zero_map[i] = next_bs_change - current_blocksize;/* next_bs_change serves also as a cumsum for blocksizes*/ + } + + problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_blockrotation_free, "transform_vars_blockrotation"); + problem->evaluate_function = transform_vars_blockrotation_evaluate; + return problem; +} + + diff --git a/code-experiments/src/transform_vars_permutation.c b/code-experiments/src/transform_vars_permutation.c new file mode 100644 index 000000000..23462e721 --- /dev/null +++ b/code-experiments/src/transform_vars_permutation.c @@ -0,0 +1,58 @@ +/** + * @file transform_vars_permutation.c + * @brief Implementation of permuting the decision values. + */ + +#include + +#include "coco.h" +#include "coco_problem.c" +#include "large_scale_transformations.c" + +/** + * @brief Data type for transform_vars_permutation. + */ +typedef struct { + double *x; + size_t *P; /**< @brief the permutation matrices*/ +} transform_vars_permutation_t; + +static void transform_vars_permutation_evaluate(coco_problem_t *problem, const double *x, double *y) { + size_t i; + transform_vars_permutation_t *data; + coco_problem_t *inner_problem; + + data = (transform_vars_permutation_t *) coco_problem_transformed_get_data(problem); + inner_problem = coco_problem_transformed_get_inner_problem(problem); + for (i = 0; i < inner_problem->number_of_variables; ++i) { + data->x[i] = x[data->P[i]]; + } + + coco_evaluate_function(inner_problem, data->x, y); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +static void transform_vars_permutation_free(void *thing) { + transform_vars_permutation_t *data = (transform_vars_permutation_t *) thing; + coco_free_memory(data->P); +} + + +static coco_problem_t *transform_vars_permutation(coco_problem_t *inner_problem, + const size_t *P, + const size_t number_of_variables) { + coco_problem_t *problem; + transform_vars_permutation_t *data; + + assert(number_of_variables > 0);/*tmp*/ + + data = (transform_vars_permutation_t *) coco_allocate_memory(sizeof(*data)); + data->x = coco_allocate_vector(inner_problem->number_of_variables); + data->P = coco_duplicate_size_t_vector(P, inner_problem->number_of_variables); + + problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_permutation_free, "transform_vars_permutation"); + problem->evaluate_function = transform_vars_permutation_evaluate; + return problem; +} + + From 621348690da6bc4f6ad4fd8ddb11b982d93330b5 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 16 Feb 2016 18:21:06 +0100 Subject: [PATCH 038/446] added transform_vars_blockrotation.c and transform_vars_permutation.c in order to separate permutation and block-rotation --- code-experiments/src/f_ellipsoid.c | 61 ++++++++++++ code-experiments/src/suite_largescale.c | 2 +- .../src/transform_vars_blockrotation.c | 96 +++++++++++++++++++ .../src/transform_vars_permutation.c | 58 +++++++++++ 4 files changed, 216 insertions(+), 1 deletion(-) create mode 100644 code-experiments/src/transform_vars_blockrotation.c create mode 100644 code-experiments/src/transform_vars_permutation.c diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index c945e5801..f9eb4e6aa 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -15,6 +15,8 @@ #include "transform_obj_shift.c" #include "transform_vars_permblockdiag.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" #include "transform_obj_norm_by_dim.c" /** @@ -183,6 +185,65 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz return problem; } +static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate_test_seprate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = ls_get_block_sizes(&nb_blocks, dimension); + swap_range = ls_get_swap_range(dimension); + nb_swaps = ls_get_nb_swaps(dimension); + + /*printf("f:%zu n:%zu i:%zu bs:[%zu,...,%zu,%zu] sR:%zu\n", function, dimension, instance, block_sizes[0], block_sizes[0],block_sizes[nb_blocks-1], swap_range);*/ + + xopt = coco_allocate_vector(dimension); + bbob2009_compute_xopt(xopt, rseed, dimension); + fopt = bbob2009_compute_fopt(function, instance); + + B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + + ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + + problem = f_ellipsoid_allocate(dimension); + problem = transform_vars_oscillate(problem); + + //problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P2, dimension); + + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + + ls_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + coco_free_memory(xopt); + return problem; +} diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index b24855d9d..56d50de6a 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -45,7 +45,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 2) { - problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem = f_ellipsoid_permblockdiag_bbob_problem_allocate_test_seprate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 3) { diff --git a/code-experiments/src/transform_vars_blockrotation.c b/code-experiments/src/transform_vars_blockrotation.c new file mode 100644 index 000000000..8a3d4c86f --- /dev/null +++ b/code-experiments/src/transform_vars_blockrotation.c @@ -0,0 +1,96 @@ +/** + * @file transform_vars_blockrotation.c + * @brief Implementation of performing a block-rotation transformation on decision values. + * + * x |-> Bx + * The matrix B is stored in a 2-D array. Only the content of the blocks are stored + */ + +#include + +#include "coco.h" +#include "coco_problem.c" +#include "large_scale_transformations.c" + +/** + * @brief Data type for transform_vars_blockrotation. + */ +typedef struct { + double **B; /**< @brief the block-diagonal matrices*/ + double *x; + size_t *block_sizes; /**< @brief the list of block-sizes*/ + size_t nb_blocks; /**< @brief the number of blocks in the matrix */ + size_t *block_size_map; /**< @brief maps a row to the block-size of the block to which it belong, keep until better way is found */ + size_t *first_non_zero_map; /**< @brief maps a row to the index of its first non zero element */ +} transform_vars_blockrotation_t; + +static void transform_vars_blockrotation_evaluate(coco_problem_t *problem, const double *x, double *y) { + size_t i, j, current_blocksize, first_non_zero_ind; + transform_vars_blockrotation_t *data; + coco_problem_t *inner_problem; + + data = (transform_vars_blockrotation_t *) coco_problem_transformed_get_data(problem); + inner_problem = coco_problem_transformed_get_inner_problem(problem); + for (i = 0; i < inner_problem->number_of_variables; ++i) { + current_blocksize = data->block_size_map[i]; + first_non_zero_ind = data->first_non_zero_map[i]; + data->x[i] = 0; + /*compute data->x[i] = < B[i,:] , x > */ + for (j = first_non_zero_ind; j < first_non_zero_ind + current_blocksize; ++j) { + data->x[i] += data->B[i][j - first_non_zero_ind] * x[j]; /*all B lines start at 0*/ + } + } + + coco_evaluate_function(inner_problem, data->x, y); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +static void transform_vars_blockrotation_free(void *thing) { + transform_vars_blockrotation_t *data = (transform_vars_blockrotation_t *) thing; + coco_free_memory(data->B); + coco_free_memory(data->block_sizes); + coco_free_memory(data->x); + coco_free_memory(data->block_size_map); +} + + +static coco_problem_t *transform_vars_blockrotation(coco_problem_t *inner_problem, + const double * const *B, + const size_t number_of_variables, + const size_t *block_sizes, + const size_t nb_blocks) { + coco_problem_t *problem; + transform_vars_blockrotation_t *data; + size_t entries_in_M, idx_blocksize, next_bs_change, current_blocksize; + int i; + entries_in_M = 0; + assert(number_of_variables > 0);/*tmp*/ + for (i = 0; i < nb_blocks; i++) { + entries_in_M += block_sizes[i] * block_sizes[i]; + } + data = (transform_vars_blockrotation_t *) coco_allocate_memory(sizeof(*data)); + data->B = ls_copy_block_matrix(B, number_of_variables, block_sizes, nb_blocks); + data->x = coco_allocate_vector(inner_problem->number_of_variables); + data->block_sizes = coco_duplicate_size_t_vector(block_sizes, nb_blocks); + data->nb_blocks = nb_blocks; + data->block_size_map = coco_allocate_vector_size_t(number_of_variables); + data->first_non_zero_map = coco_allocate_vector_size_t(number_of_variables); + + idx_blocksize = 0; + next_bs_change = block_sizes[idx_blocksize]; + for (i = 0; i < number_of_variables; i++) { + if (i >= next_bs_change) { + idx_blocksize++; + next_bs_change += block_sizes[idx_blocksize]; + } + current_blocksize=block_sizes[idx_blocksize]; + data->block_size_map[i] = current_blocksize; + data->first_non_zero_map[i] = next_bs_change - current_blocksize;/* next_bs_change serves also as a cumsum for blocksizes*/ + } + + problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_blockrotation_free, "transform_vars_blockrotation"); + problem->evaluate_function = transform_vars_blockrotation_evaluate; + return problem; +} + + diff --git a/code-experiments/src/transform_vars_permutation.c b/code-experiments/src/transform_vars_permutation.c new file mode 100644 index 000000000..23462e721 --- /dev/null +++ b/code-experiments/src/transform_vars_permutation.c @@ -0,0 +1,58 @@ +/** + * @file transform_vars_permutation.c + * @brief Implementation of permuting the decision values. + */ + +#include + +#include "coco.h" +#include "coco_problem.c" +#include "large_scale_transformations.c" + +/** + * @brief Data type for transform_vars_permutation. + */ +typedef struct { + double *x; + size_t *P; /**< @brief the permutation matrices*/ +} transform_vars_permutation_t; + +static void transform_vars_permutation_evaluate(coco_problem_t *problem, const double *x, double *y) { + size_t i; + transform_vars_permutation_t *data; + coco_problem_t *inner_problem; + + data = (transform_vars_permutation_t *) coco_problem_transformed_get_data(problem); + inner_problem = coco_problem_transformed_get_inner_problem(problem); + for (i = 0; i < inner_problem->number_of_variables; ++i) { + data->x[i] = x[data->P[i]]; + } + + coco_evaluate_function(inner_problem, data->x, y); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +static void transform_vars_permutation_free(void *thing) { + transform_vars_permutation_t *data = (transform_vars_permutation_t *) thing; + coco_free_memory(data->P); +} + + +static coco_problem_t *transform_vars_permutation(coco_problem_t *inner_problem, + const size_t *P, + const size_t number_of_variables) { + coco_problem_t *problem; + transform_vars_permutation_t *data; + + assert(number_of_variables > 0);/*tmp*/ + + data = (transform_vars_permutation_t *) coco_allocate_memory(sizeof(*data)); + data->x = coco_allocate_vector(inner_problem->number_of_variables); + data->P = coco_duplicate_size_t_vector(P, inner_problem->number_of_variables); + + problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_permutation_free, "transform_vars_permutation"); + problem->evaluate_function = transform_vars_permutation_evaluate; + return problem; +} + + From 99b1fd0051723235f36dda92d7270e1a208bcccf Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 17 Feb 2016 15:10:28 +0100 Subject: [PATCH 039/446] now pemutations are applied in the correct order --- code-experiments/src/f_ellipsoid.c | 9 ++++----- code-experiments/src/transform_vars_blockrotation.c | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index f9eb4e6aa..4faa2ab44 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -206,7 +206,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate_test_sepr swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); - /*printf("f:%zu n:%zu i:%zu bs:[%zu,...,%zu,%zu] sR:%zu\n", function, dimension, instance, block_sizes[0], block_sizes[0],block_sizes[nb_blocks-1], swap_range);*/ + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); @@ -222,13 +222,12 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate_test_sepr problem = f_ellipsoid_allocate(dimension); problem = transform_vars_oscillate(problem); - //problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); - problem = transform_vars_permutation(problem, P1, dimension); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); - problem = transform_vars_permutation(problem, P2, dimension); - + problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/transform_vars_blockrotation.c b/code-experiments/src/transform_vars_blockrotation.c index 8a3d4c86f..c48f96370 100644 --- a/code-experiments/src/transform_vars_blockrotation.c +++ b/code-experiments/src/transform_vars_blockrotation.c @@ -40,7 +40,7 @@ static void transform_vars_blockrotation_evaluate(coco_problem_t *problem, const data->x[i] += data->B[i][j - first_non_zero_ind] * x[j]; /*all B lines start at 0*/ } } - + coco_evaluate_function(inner_problem, data->x, y); assert(y[0] + 1e-13 >= problem->best_value[0]); } From bb744fdb66eebc8d8c6679f3cee7ef23b4cf7cf3 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 17 Feb 2016 15:10:28 +0100 Subject: [PATCH 040/446] now pemutations are applied in the correct order --- code-experiments/src/f_ellipsoid.c | 9 ++++----- code-experiments/src/transform_vars_blockrotation.c | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index f9eb4e6aa..4faa2ab44 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -206,7 +206,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate_test_sepr swap_range = ls_get_swap_range(dimension); nb_swaps = ls_get_nb_swaps(dimension); - /*printf("f:%zu n:%zu i:%zu bs:[%zu,...,%zu,%zu] sR:%zu\n", function, dimension, instance, block_sizes[0], block_sizes[0],block_sizes[nb_blocks-1], swap_range);*/ + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); @@ -222,13 +222,12 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate_test_sepr problem = f_ellipsoid_allocate(dimension); problem = transform_vars_oscillate(problem); - //problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); - problem = transform_vars_permutation(problem, P1, dimension); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); - problem = transform_vars_permutation(problem, P2, dimension); - + problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/transform_vars_blockrotation.c b/code-experiments/src/transform_vars_blockrotation.c index 8a3d4c86f..c48f96370 100644 --- a/code-experiments/src/transform_vars_blockrotation.c +++ b/code-experiments/src/transform_vars_blockrotation.c @@ -40,7 +40,7 @@ static void transform_vars_blockrotation_evaluate(coco_problem_t *problem, const data->x[i] += data->B[i][j - first_non_zero_ind] * x[j]; /*all B lines start at 0*/ } } - + coco_evaluate_function(inner_problem, data->x, y); assert(y[0] + 1e-13 >= problem->best_value[0]); } From f6623223b281d0e3a293a25b55ff899e87a338eb Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 17 Feb 2016 18:04:21 +0100 Subject: [PATCH 041/446] added ..._helpers.c files that replace the large_scale_transformation.c, several renamings and other changes in the functions in these files --- .../src/f_bent_cigar_generalized.c | 27 +-- code-experiments/src/f_different_powers.c | 23 ++- code-experiments/src/f_discus_generalized.c | 23 ++- code-experiments/src/f_ellipsoid.c | 76 +------ code-experiments/src/suite_largescale.c | 3 +- .../src/transform_vars_blockrotation.c | 4 +- .../transform_vars_blockrotation_helpers.c | 185 ++++++++++++++++++ .../src/transform_vars_permblockdiag.c | 5 +- .../src/transform_vars_permutation.c | 3 +- .../src/transform_vars_permutation_helpers.c | 166 ++++++++++++++++ 10 files changed, 412 insertions(+), 103 deletions(-) create mode 100644 code-experiments/src/transform_vars_blockrotation_helpers.c create mode 100644 code-experiments/src/transform_vars_permutation_helpers.c diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index a251ae6d2..fec243273 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -14,7 +14,8 @@ #include "transform_vars_asymmetric.c" #include "transform_vars_shift.c" -#include "transform_vars_permblockdiag.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" #include "transform_obj_norm_by_dim.c" #define proportion_long_axes_denom 40 @@ -87,25 +88,29 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc size_t swap_range; size_t nb_swaps; - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed + 1000000, dimension); fopt = bbob2009_compute_fopt(function, instance); - B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); problem = f_bent_cigar_generalized_allocate(dimension); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_asymmetric(problem, 0.5); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); problem = transform_obj_norm_by_dim(problem); @@ -114,7 +119,7 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - ls_free_block_matrix(B, dimension); + coco_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); coco_free_memory(block_sizes); diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 3da1e99ed..f5fb4ac6b 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -13,7 +13,8 @@ #include "transform_vars_affine.c" #include "transform_vars_shift.c" -#include "transform_vars_permblockdiag.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" #include "transform_obj_norm_by_dim.c" /** @@ -119,23 +120,25 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co size_t swap_range; size_t nb_swaps; - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); - B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); problem = f_different_powers_allocate(dimension); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); problem = transform_obj_norm_by_dim(problem); @@ -145,7 +148,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); - ls_free_block_matrix(B, dimension); + coco_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); coco_free_memory(block_sizes); diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c index 5e83d1616..83af36632 100644 --- a/code-experiments/src/f_discus_generalized.c +++ b/code-experiments/src/f_discus_generalized.c @@ -12,7 +12,8 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" -#include "transform_vars_permblockdiag.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" #include "transform_obj_norm_by_dim.c" #define proportion_short_axes_denom 40 /* Make it a parameter of f_discus_generalized_raw? */ @@ -88,24 +89,26 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( size_t swap_range; size_t nb_swaps; - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); fopt = bbob2009_compute_fopt(function, instance); - B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); problem = f_discus_generalized_allocate(dimension); problem = transform_vars_oscillate(problem); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); problem = transform_obj_norm_by_dim(problem); @@ -115,7 +118,7 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - ls_free_block_matrix(B, dimension); + coco_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); coco_free_memory(block_sizes); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 4faa2ab44..bee1ad0c4 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -14,7 +14,6 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" -#include "transform_vars_permblockdiag.c" #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" #include "transform_obj_norm_by_dim.c" @@ -130,62 +129,8 @@ static coco_problem_t *f_ellipsoid_rotated_bbob_problem_allocate(const size_t fu return problem; } -static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B; - const double *const *B_copy; - size_t *P1 = coco_allocate_vector_size_t(dimension); - size_t *P2 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes; - size_t nb_blocks; - size_t swap_range; - size_t nb_swaps; - - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); - - /*printf("f:%zu n:%zu i:%zu bs:[%zu,...,%zu,%zu] sR:%zu\n", function, dimension, instance, block_sizes[0], block_sizes[0],block_sizes[nb_blocks-1], swap_range);*/ - - xopt = coco_allocate_vector(dimension); - bbob2009_compute_xopt(xopt, rseed, dimension); - fopt = bbob2009_compute_fopt(function, instance); - - B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ - ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - - problem = f_ellipsoid_allocate(dimension); - problem = transform_vars_oscillate(problem); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - - ls_free_block_matrix(B, dimension); - coco_free_memory(P1); - coco_free_memory(P2); - coco_free_memory(block_sizes); - coco_free_memory(xopt); - return problem; -} - -static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate_test_seprate(const size_t function, +static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, const long rseed, @@ -201,28 +146,25 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate_test_sepr size_t nb_blocks; size_t swap_range; size_t nb_swaps; - - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); - + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); fopt = bbob2009_compute_fopt(function, instance); - B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ - ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); problem = f_ellipsoid_allocate(dimension); problem = transform_vars_oscillate(problem); - //problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); @@ -236,7 +178,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate_test_sepr coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - ls_free_block_matrix(B, dimension); + coco_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); coco_free_memory(block_sizes); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 56d50de6a..d41d42d31 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -5,6 +5,7 @@ #include "coco.h" +#include "f_sphere.c" #include "f_ellipsoid.c" #include "f_discus_generalized.c" #include "f_bent_cigar_generalized.c" @@ -45,7 +46,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 2) { - problem = f_ellipsoid_permblockdiag_bbob_problem_allocate_test_seprate(function, dimension, instance, rseed, + problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 3) { diff --git a/code-experiments/src/transform_vars_blockrotation.c b/code-experiments/src/transform_vars_blockrotation.c index c48f96370..dc4e920e5 100644 --- a/code-experiments/src/transform_vars_blockrotation.c +++ b/code-experiments/src/transform_vars_blockrotation.c @@ -10,7 +10,7 @@ #include "coco.h" #include "coco_problem.c" -#include "large_scale_transformations.c" +#include "transform_vars_blockrotation_helpers.c" /** * @brief Data type for transform_vars_blockrotation. @@ -69,7 +69,7 @@ static coco_problem_t *transform_vars_blockrotation(coco_problem_t *inner_proble entries_in_M += block_sizes[i] * block_sizes[i]; } data = (transform_vars_blockrotation_t *) coco_allocate_memory(sizeof(*data)); - data->B = ls_copy_block_matrix(B, number_of_variables, block_sizes, nb_blocks); + data->B = coco_copy_block_matrix(B, number_of_variables, block_sizes, nb_blocks); data->x = coco_allocate_vector(inner_problem->number_of_variables); data->block_sizes = coco_duplicate_size_t_vector(block_sizes, nb_blocks); data->nb_blocks = nb_blocks; diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c new file mode 100644 index 000000000..503ef2dcc --- /dev/null +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -0,0 +1,185 @@ +/** + * @file transform_vars_blockrotation_helpers.c + * @brief implements fonctions needed by transform_vars_blockrotation.c + */ + +#include +#include +#include "coco.h" + +#include "coco_random.c" /*tmp*/ +#include "suite_bbob_legacy_code.c" /*tmp*/ + +#include /*tmp*/ + +/* TODO: Document this file in doxygen style! */ + + +/** + * @brief + * Allocate a ${n} by ${m} block matrix of nb_blocks block sizes block_sizes structured as an array of pointers + * to double arrays. + * each row constains only the block_sizes[i] possibly non-zero elements + */ +static double **coco_allocate_blockmatrix(const size_t n, const size_t* block_sizes, const size_t nb_blocks) { + double **matrix = NULL; + size_t current_blocksize; + size_t next_bs_change; + size_t idx_blocksize; + size_t i; + size_t sum_block_sizes; + + sum_block_sizes = 0; + for (i = 0; i < nb_blocks; i++){ + sum_block_sizes += block_sizes[i]; + } + assert(sum_block_sizes == n); + + matrix = (double **) coco_allocate_memory(sizeof(double *) * n); + idx_blocksize = 0; + next_bs_change = block_sizes[idx_blocksize]; + + for (i = 0; i < n; ++i) { + if (i >= next_bs_change) { + idx_blocksize++; + next_bs_change += block_sizes[idx_blocksize]; + } + current_blocksize=block_sizes[idx_blocksize]; + matrix[i] = coco_allocate_vector(current_blocksize); + + } + return matrix; +} + + +/** + * @brief frees a block diagonal matrix (same as a matrix but in case of change, easier to update separatly from free_matrix) + */ +static void coco_free_block_matrix(double **matrix, const size_t n) { + size_t i; + for (i = 0; i < n; ++i) { + if (matrix[i] != NULL) { + coco_free_memory(matrix[i]); + matrix[i] = NULL; + } + } + coco_free_memory(matrix); +} + + + +/** + * @brief Compute a ${DIM}x${DIM} block-diagonal matrix based on ${seed} and block_sizes and stores it in ${B}. + * B is a 2D vector with DIM lines and each line has blocksize(line) elements (the zeros are not stored) + */ +static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t *block_sizes, size_t nb_blocks) { + double prod; + /*double *gvect;*/ + double **current_block; + size_t i, j, k; /* Loop over pairs of column vectors. */ + size_t idx_block, current_blocksize,cumsum_prev_block_sizes, sum_block_sizes; + size_t nb_entries; + coco_random_state_t *rng = coco_random_new((uint32_t) seed); + + nb_entries = 0; + sum_block_sizes = 0; + for (i = 0; i < nb_blocks; i++){ + sum_block_sizes += block_sizes[i]; + nb_entries += block_sizes[i] * block_sizes[i]; + } + assert(sum_block_sizes == n); + + cumsum_prev_block_sizes = 0;/* shift in rows to account for the previous blocks */ + for (idx_block = 0; idx_block < nb_blocks; idx_block++) { + current_blocksize = block_sizes[idx_block]; + current_block = bbob2009_allocate_matrix(current_blocksize, current_blocksize); + for (i = 0; i < current_blocksize; i++) { + for (j = 0; j < current_blocksize; j++) { + current_block[i][j] = coco_random_normal(rng); + } + } + + for (i = 0; i < current_blocksize; i++) { + for (j = 0; j < i; j++) { + prod = 0; + for (k = 0; k < current_blocksize; k++){ + prod += current_block[k][i] * current_block[k][j]; + } + for (k = 0; k < current_blocksize; k++){ + current_block[k][i] -= prod * current_block[k][j]; + } + } + prod = 0; + for (k = 0; k < current_blocksize; k++){ + prod += current_block[k][i] * current_block[k][i]; + } + for (k = 0; k < current_blocksize; k++){ + current_block[k][i] /= sqrt(prod); + } + } + + /* now fill the block matrix*/ + for (i = 0 ; i < current_blocksize; i++) { + for (j = 0; j < current_blocksize; j++) { + B[i + cumsum_prev_block_sizes][j]=current_block[i][j]; + } + } + + cumsum_prev_block_sizes+=current_blocksize; + /*current_gvect_pos += current_blocksize * current_blocksize;*/ + coco_free_block_matrix(current_block, current_blocksize); + } + /*coco_free_memory(gvect);*/ + coco_random_free(rng); +} + +/** + * @brief makes a copy of a block_matrix + */ +static double **coco_copy_block_matrix(const double *const *B, const size_t dimension, const size_t *block_sizes, const size_t nb_blocks) { + double **dest; + size_t i, j, idx_blocksize, current_blocksize, next_bs_change; + + dest = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + idx_blocksize = 0; + current_blocksize = block_sizes[idx_blocksize]; + next_bs_change = block_sizes[idx_blocksize]; + assert(nb_blocks != 0); /*tmp*//*to silence warning*/ + for (i = 0; i < dimension; i++) { + if (i >= next_bs_change) { + idx_blocksize++; + next_bs_change += block_sizes[idx_blocksize]; + } + current_blocksize=block_sizes[idx_blocksize]; + for (j = 0; j < current_blocksize; j++) { + dest[i][j] = B[i][j]; + } + } + return dest; +} + + +/** + * @brief returns the list of block_sizes and sets nb_blocks to its correct value + */ +static size_t *coco_get_block_sizes(size_t *nb_blocks, size_t dimension, const char *suite_name){ + size_t *block_sizes; + size_t block_size; + int i; + + if (strcmp(suite_name, "bbob-largescale") == 0) { + block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension / 4, 100)); + *nb_blocks = dimension / block_size + ((dimension % block_size) > 0); + block_sizes = coco_allocate_vector_size_t(*nb_blocks); + for (i = 0; i < *nb_blocks - 1; i++) { + block_sizes[i] = block_size; + } + block_sizes[*nb_blocks - 1] = dimension - (*nb_blocks - 1) * block_size; /*add rest*/ + return block_sizes; + } else { + return NULL; + } +} + + + diff --git a/code-experiments/src/transform_vars_permblockdiag.c b/code-experiments/src/transform_vars_permblockdiag.c index 25f102c19..fd05d4c8e 100644 --- a/code-experiments/src/transform_vars_permblockdiag.c +++ b/code-experiments/src/transform_vars_permblockdiag.c @@ -6,7 +6,10 @@ #include "coco.h" #include "coco_problem.c" -#include "large_scale_transformations.c" +//#include "large_scale_transformations.c" +#include "transform_vars_permutation_helpers.c" +#include "transform_vars_blockrotation_helpers.c" + /** * @brief Data type for transform_vars_permblockdiag. diff --git a/code-experiments/src/transform_vars_permutation.c b/code-experiments/src/transform_vars_permutation.c index 23462e721..d4beb1d2c 100644 --- a/code-experiments/src/transform_vars_permutation.c +++ b/code-experiments/src/transform_vars_permutation.c @@ -7,7 +7,8 @@ #include "coco.h" #include "coco_problem.c" -#include "large_scale_transformations.c" +#include "transform_vars_permutation_helpers.c" + /** * @brief Data type for transform_vars_permutation. diff --git a/code-experiments/src/transform_vars_permutation_helpers.c b/code-experiments/src/transform_vars_permutation_helpers.c new file mode 100644 index 000000000..17cd92fac --- /dev/null +++ b/code-experiments/src/transform_vars_permutation_helpers.c @@ -0,0 +1,166 @@ +/** + * @file transform_vars_permutation_helpers.c + * @brief implements fonctions needed by transform_vars_permutation.c + */ + +#include +#include +#include "coco.h" + +#include "coco_random.c" +#include "suite_bbob_legacy_code.c" /*tmp*/ + +#include /*tmp*/ + +/* TODO: Document this file in doxygen style! */ + +static double *perm_random_data;/* global variable used to generate the random permutations */ + +/** + * @brief Comparison function used for sorting. In our case, it serves as a random permutation generator + */ +static int f_compare_doubles_for_random_permutation(const void *a, const void *b) { + double temp = perm_random_data[*(const size_t *) a] - perm_random_data[*(const size_t *) b]; + if (temp > 0) + return 1; + else if (temp < 0) + return -1; + else + return 0; +} + +/** + * @brief generates a random, uniformly sampled, permutation and puts it in P + */ +static void coco_compute_random_permutation(size_t *P, long seed, size_t n) { + long i; + coco_random_state_t *rng = coco_random_new((uint32_t) seed); + perm_random_data = coco_allocate_vector(n); + for (i = 0; i < n; i++){ + P[i] = (size_t) i; + perm_random_data[i] = coco_random_uniform(rng); + } + qsort(P, n, sizeof(size_t), f_compare_doubles_for_random_permutation); + coco_random_free(rng); +} + + +/** + * @brief returns a uniformly distributed integer between lower_bound and upper_bound using seed. + * Wassim: move to coco_utilities? + */ +static long coco_random_unif_int(long lower_bound, long upper_bound, coco_random_state_t *rng){ + long range; + range = upper_bound - lower_bound + 1; + return ((long)(coco_random_uniform(rng) * (double) range)) + lower_bound; +} + + + +/** + * @brief generates a random permutation resulting from nb_swaps truncated uniform swaps of range swap_range + * missing paramteters: dynamic_not_static pool, seems empirically irrelevant + * for now so dynamic is implemented (simple since no need for tracking indices + * if swap_range is the largest possible size_t value ( (size_t) -1 ), a random uniform permutation is generated + */ +static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed, size_t n, size_t nb_swaps, size_t swap_range) { + long i, idx_swap; + size_t lower_bound, upper_bound, first_swap_var, second_swap_var, tmp; + size_t *idx_order; + coco_random_state_t *rng = coco_random_new((uint32_t) seed); + + perm_random_data = coco_allocate_vector(n); + idx_order = coco_allocate_vector_size_t(n); + for (i = 0; i < n; i++){ + P[i] = (size_t) i; + idx_order[i] = (size_t) i; + perm_random_data[i] = coco_random_uniform(rng); + } + + if (swap_range > 0) { + /*sort the random data in random_data and arange idx_order accordingly*/ + /*did not use coco_compute_random_permutation to only use the seed once*/ + qsort(idx_order, n, sizeof(size_t), f_compare_doubles_for_random_permutation); + for (idx_swap = 0; idx_swap < nb_swaps; idx_swap++) { + first_swap_var = idx_order[idx_swap]; + if (first_swap_var < swap_range) { + lower_bound = 0; + } + else{ + lower_bound = first_swap_var - swap_range; + } + if (first_swap_var + swap_range > n - 1) { + upper_bound = n - 1; + } + else{ + upper_bound = first_swap_var + swap_range; + } + + second_swap_var = (size_t) coco_random_unif_int((long) lower_bound, (long) upper_bound, rng); + while (first_swap_var == second_swap_var) { + second_swap_var = (size_t) coco_random_unif_int((long) lower_bound, (long) upper_bound, rng); + } + /* swap*/ + tmp = P[first_swap_var]; + P[first_swap_var] = P[second_swap_var]; + P[second_swap_var] = tmp; + } + } else { + if ( swap_range == (size_t) -1) { + /* generate random permutation instead */ + coco_compute_random_permutation(P, seed, n); + } + + } + coco_random_free(rng); +} + + + +/** + * @brief duplicates a size_t vector + */ +static size_t *coco_duplicate_size_t_vector(const size_t *src, const size_t number_of_elements) { + size_t i; + size_t *dst; + + assert(src != NULL); + assert(number_of_elements > 0); + + dst = coco_allocate_vector_size_t(number_of_elements); + for (i = 0; i < number_of_elements; ++i) { + dst[i] = src[i]; + } + return dst; +} + + + +/** + * @brief return the swap_range corresponding to the problem in the given suite + */ +static size_t coco_get_swap_range(size_t dimension, const char *suite_name){ + if (strcmp(suite_name, "bbob-largescale") == 0) { + return dimension / 3; + } else { + coco_error("coco_get_swap_range(): unknown problem suite"); + return (size_t) NULL; + } +} + + +/** + * @brief return the number of swaps corresponding to the problem in the given suite + */ +size_t coco_get_nb_swaps(size_t dimension, const char *suite_name){ + if (strcmp(suite_name, "bbob-largescale") == 0) { + return dimension; + } else { + coco_error("coco_get_nb_swaps(): unknown problem suite"); + return (size_t) NULL; + } +} + + + + From 63fbff062b1c09f591b27eb09a6f27213c7053c7 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 17 Feb 2016 18:04:21 +0100 Subject: [PATCH 042/446] added ..._helpers.c files that replace the large_scale_transformation.c, several renamings and other changes in the functions in these files --- .../src/f_bent_cigar_generalized.c | 27 +-- code-experiments/src/f_different_powers.c | 23 ++- code-experiments/src/f_discus_generalized.c | 23 ++- code-experiments/src/f_ellipsoid.c | 76 +------ code-experiments/src/suite_largescale.c | 3 +- .../src/transform_vars_blockrotation.c | 4 +- .../transform_vars_blockrotation_helpers.c | 185 ++++++++++++++++++ .../src/transform_vars_permblockdiag.c | 5 +- .../src/transform_vars_permutation.c | 3 +- .../src/transform_vars_permutation_helpers.c | 166 ++++++++++++++++ 10 files changed, 412 insertions(+), 103 deletions(-) create mode 100644 code-experiments/src/transform_vars_blockrotation_helpers.c create mode 100644 code-experiments/src/transform_vars_permutation_helpers.c diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index a251ae6d2..fec243273 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -14,7 +14,8 @@ #include "transform_vars_asymmetric.c" #include "transform_vars_shift.c" -#include "transform_vars_permblockdiag.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" #include "transform_obj_norm_by_dim.c" #define proportion_long_axes_denom 40 @@ -87,25 +88,29 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc size_t swap_range; size_t nb_swaps; - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed + 1000000, dimension); fopt = bbob2009_compute_fopt(function, instance); - B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); problem = f_bent_cigar_generalized_allocate(dimension); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_asymmetric(problem, 0.5); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); problem = transform_obj_norm_by_dim(problem); @@ -114,7 +119,7 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - ls_free_block_matrix(B, dimension); + coco_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); coco_free_memory(block_sizes); diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 3da1e99ed..f5fb4ac6b 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -13,7 +13,8 @@ #include "transform_vars_affine.c" #include "transform_vars_shift.c" -#include "transform_vars_permblockdiag.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" #include "transform_obj_norm_by_dim.c" /** @@ -119,23 +120,25 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co size_t swap_range; size_t nb_swaps; - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); - B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); problem = f_different_powers_allocate(dimension); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); problem = transform_obj_norm_by_dim(problem); @@ -145,7 +148,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); - ls_free_block_matrix(B, dimension); + coco_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); coco_free_memory(block_sizes); diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c index 5e83d1616..83af36632 100644 --- a/code-experiments/src/f_discus_generalized.c +++ b/code-experiments/src/f_discus_generalized.c @@ -12,7 +12,8 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" -#include "transform_vars_permblockdiag.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" #include "transform_obj_norm_by_dim.c" #define proportion_short_axes_denom 40 /* Make it a parameter of f_discus_generalized_raw? */ @@ -88,24 +89,26 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( size_t swap_range; size_t nb_swaps; - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); fopt = bbob2009_compute_fopt(function, instance); - B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); problem = f_discus_generalized_allocate(dimension); problem = transform_vars_oscillate(problem); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); problem = transform_obj_norm_by_dim(problem); @@ -115,7 +118,7 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - ls_free_block_matrix(B, dimension); + coco_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); coco_free_memory(block_sizes); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 4faa2ab44..bee1ad0c4 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -14,7 +14,6 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" -#include "transform_vars_permblockdiag.c" #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" #include "transform_obj_norm_by_dim.c" @@ -130,62 +129,8 @@ static coco_problem_t *f_ellipsoid_rotated_bbob_problem_allocate(const size_t fu return problem; } -static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B; - const double *const *B_copy; - size_t *P1 = coco_allocate_vector_size_t(dimension); - size_t *P2 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes; - size_t nb_blocks; - size_t swap_range; - size_t nb_swaps; - - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); - - /*printf("f:%zu n:%zu i:%zu bs:[%zu,...,%zu,%zu] sR:%zu\n", function, dimension, instance, block_sizes[0], block_sizes[0],block_sizes[nb_blocks-1], swap_range);*/ - - xopt = coco_allocate_vector(dimension); - bbob2009_compute_xopt(xopt, rseed, dimension); - fopt = bbob2009_compute_fopt(function, instance); - - B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ - ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - - problem = f_ellipsoid_allocate(dimension); - problem = transform_vars_oscillate(problem); - problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - - ls_free_block_matrix(B, dimension); - coco_free_memory(P1); - coco_free_memory(P2); - coco_free_memory(block_sizes); - coco_free_memory(xopt); - return problem; -} - -static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate_test_seprate(const size_t function, +static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, const long rseed, @@ -201,28 +146,25 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate_test_sepr size_t nb_blocks; size_t swap_range; size_t nb_swaps; - - block_sizes = ls_get_block_sizes(&nb_blocks, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); - + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); fopt = bbob2009_compute_fopt(function, instance); - B = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ - ls_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - ls_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); problem = f_ellipsoid_allocate(dimension); problem = transform_vars_oscillate(problem); - //problem = transform_vars_permblockdiag(problem, B_copy, P1, P2, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); @@ -236,7 +178,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate_test_sepr coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ - ls_free_block_matrix(B, dimension); + coco_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); coco_free_memory(block_sizes); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 56d50de6a..d41d42d31 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -5,6 +5,7 @@ #include "coco.h" +#include "f_sphere.c" #include "f_ellipsoid.c" #include "f_discus_generalized.c" #include "f_bent_cigar_generalized.c" @@ -45,7 +46,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 2) { - problem = f_ellipsoid_permblockdiag_bbob_problem_allocate_test_seprate(function, dimension, instance, rseed, + problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 3) { diff --git a/code-experiments/src/transform_vars_blockrotation.c b/code-experiments/src/transform_vars_blockrotation.c index c48f96370..dc4e920e5 100644 --- a/code-experiments/src/transform_vars_blockrotation.c +++ b/code-experiments/src/transform_vars_blockrotation.c @@ -10,7 +10,7 @@ #include "coco.h" #include "coco_problem.c" -#include "large_scale_transformations.c" +#include "transform_vars_blockrotation_helpers.c" /** * @brief Data type for transform_vars_blockrotation. @@ -69,7 +69,7 @@ static coco_problem_t *transform_vars_blockrotation(coco_problem_t *inner_proble entries_in_M += block_sizes[i] * block_sizes[i]; } data = (transform_vars_blockrotation_t *) coco_allocate_memory(sizeof(*data)); - data->B = ls_copy_block_matrix(B, number_of_variables, block_sizes, nb_blocks); + data->B = coco_copy_block_matrix(B, number_of_variables, block_sizes, nb_blocks); data->x = coco_allocate_vector(inner_problem->number_of_variables); data->block_sizes = coco_duplicate_size_t_vector(block_sizes, nb_blocks); data->nb_blocks = nb_blocks; diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c new file mode 100644 index 000000000..503ef2dcc --- /dev/null +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -0,0 +1,185 @@ +/** + * @file transform_vars_blockrotation_helpers.c + * @brief implements fonctions needed by transform_vars_blockrotation.c + */ + +#include +#include +#include "coco.h" + +#include "coco_random.c" /*tmp*/ +#include "suite_bbob_legacy_code.c" /*tmp*/ + +#include /*tmp*/ + +/* TODO: Document this file in doxygen style! */ + + +/** + * @brief + * Allocate a ${n} by ${m} block matrix of nb_blocks block sizes block_sizes structured as an array of pointers + * to double arrays. + * each row constains only the block_sizes[i] possibly non-zero elements + */ +static double **coco_allocate_blockmatrix(const size_t n, const size_t* block_sizes, const size_t nb_blocks) { + double **matrix = NULL; + size_t current_blocksize; + size_t next_bs_change; + size_t idx_blocksize; + size_t i; + size_t sum_block_sizes; + + sum_block_sizes = 0; + for (i = 0; i < nb_blocks; i++){ + sum_block_sizes += block_sizes[i]; + } + assert(sum_block_sizes == n); + + matrix = (double **) coco_allocate_memory(sizeof(double *) * n); + idx_blocksize = 0; + next_bs_change = block_sizes[idx_blocksize]; + + for (i = 0; i < n; ++i) { + if (i >= next_bs_change) { + idx_blocksize++; + next_bs_change += block_sizes[idx_blocksize]; + } + current_blocksize=block_sizes[idx_blocksize]; + matrix[i] = coco_allocate_vector(current_blocksize); + + } + return matrix; +} + + +/** + * @brief frees a block diagonal matrix (same as a matrix but in case of change, easier to update separatly from free_matrix) + */ +static void coco_free_block_matrix(double **matrix, const size_t n) { + size_t i; + for (i = 0; i < n; ++i) { + if (matrix[i] != NULL) { + coco_free_memory(matrix[i]); + matrix[i] = NULL; + } + } + coco_free_memory(matrix); +} + + + +/** + * @brief Compute a ${DIM}x${DIM} block-diagonal matrix based on ${seed} and block_sizes and stores it in ${B}. + * B is a 2D vector with DIM lines and each line has blocksize(line) elements (the zeros are not stored) + */ +static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t *block_sizes, size_t nb_blocks) { + double prod; + /*double *gvect;*/ + double **current_block; + size_t i, j, k; /* Loop over pairs of column vectors. */ + size_t idx_block, current_blocksize,cumsum_prev_block_sizes, sum_block_sizes; + size_t nb_entries; + coco_random_state_t *rng = coco_random_new((uint32_t) seed); + + nb_entries = 0; + sum_block_sizes = 0; + for (i = 0; i < nb_blocks; i++){ + sum_block_sizes += block_sizes[i]; + nb_entries += block_sizes[i] * block_sizes[i]; + } + assert(sum_block_sizes == n); + + cumsum_prev_block_sizes = 0;/* shift in rows to account for the previous blocks */ + for (idx_block = 0; idx_block < nb_blocks; idx_block++) { + current_blocksize = block_sizes[idx_block]; + current_block = bbob2009_allocate_matrix(current_blocksize, current_blocksize); + for (i = 0; i < current_blocksize; i++) { + for (j = 0; j < current_blocksize; j++) { + current_block[i][j] = coco_random_normal(rng); + } + } + + for (i = 0; i < current_blocksize; i++) { + for (j = 0; j < i; j++) { + prod = 0; + for (k = 0; k < current_blocksize; k++){ + prod += current_block[k][i] * current_block[k][j]; + } + for (k = 0; k < current_blocksize; k++){ + current_block[k][i] -= prod * current_block[k][j]; + } + } + prod = 0; + for (k = 0; k < current_blocksize; k++){ + prod += current_block[k][i] * current_block[k][i]; + } + for (k = 0; k < current_blocksize; k++){ + current_block[k][i] /= sqrt(prod); + } + } + + /* now fill the block matrix*/ + for (i = 0 ; i < current_blocksize; i++) { + for (j = 0; j < current_blocksize; j++) { + B[i + cumsum_prev_block_sizes][j]=current_block[i][j]; + } + } + + cumsum_prev_block_sizes+=current_blocksize; + /*current_gvect_pos += current_blocksize * current_blocksize;*/ + coco_free_block_matrix(current_block, current_blocksize); + } + /*coco_free_memory(gvect);*/ + coco_random_free(rng); +} + +/** + * @brief makes a copy of a block_matrix + */ +static double **coco_copy_block_matrix(const double *const *B, const size_t dimension, const size_t *block_sizes, const size_t nb_blocks) { + double **dest; + size_t i, j, idx_blocksize, current_blocksize, next_bs_change; + + dest = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + idx_blocksize = 0; + current_blocksize = block_sizes[idx_blocksize]; + next_bs_change = block_sizes[idx_blocksize]; + assert(nb_blocks != 0); /*tmp*//*to silence warning*/ + for (i = 0; i < dimension; i++) { + if (i >= next_bs_change) { + idx_blocksize++; + next_bs_change += block_sizes[idx_blocksize]; + } + current_blocksize=block_sizes[idx_blocksize]; + for (j = 0; j < current_blocksize; j++) { + dest[i][j] = B[i][j]; + } + } + return dest; +} + + +/** + * @brief returns the list of block_sizes and sets nb_blocks to its correct value + */ +static size_t *coco_get_block_sizes(size_t *nb_blocks, size_t dimension, const char *suite_name){ + size_t *block_sizes; + size_t block_size; + int i; + + if (strcmp(suite_name, "bbob-largescale") == 0) { + block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension / 4, 100)); + *nb_blocks = dimension / block_size + ((dimension % block_size) > 0); + block_sizes = coco_allocate_vector_size_t(*nb_blocks); + for (i = 0; i < *nb_blocks - 1; i++) { + block_sizes[i] = block_size; + } + block_sizes[*nb_blocks - 1] = dimension - (*nb_blocks - 1) * block_size; /*add rest*/ + return block_sizes; + } else { + return NULL; + } +} + + + diff --git a/code-experiments/src/transform_vars_permblockdiag.c b/code-experiments/src/transform_vars_permblockdiag.c index 25f102c19..fd05d4c8e 100644 --- a/code-experiments/src/transform_vars_permblockdiag.c +++ b/code-experiments/src/transform_vars_permblockdiag.c @@ -6,7 +6,10 @@ #include "coco.h" #include "coco_problem.c" -#include "large_scale_transformations.c" +//#include "large_scale_transformations.c" +#include "transform_vars_permutation_helpers.c" +#include "transform_vars_blockrotation_helpers.c" + /** * @brief Data type for transform_vars_permblockdiag. diff --git a/code-experiments/src/transform_vars_permutation.c b/code-experiments/src/transform_vars_permutation.c index 23462e721..d4beb1d2c 100644 --- a/code-experiments/src/transform_vars_permutation.c +++ b/code-experiments/src/transform_vars_permutation.c @@ -7,7 +7,8 @@ #include "coco.h" #include "coco_problem.c" -#include "large_scale_transformations.c" +#include "transform_vars_permutation_helpers.c" + /** * @brief Data type for transform_vars_permutation. diff --git a/code-experiments/src/transform_vars_permutation_helpers.c b/code-experiments/src/transform_vars_permutation_helpers.c new file mode 100644 index 000000000..17cd92fac --- /dev/null +++ b/code-experiments/src/transform_vars_permutation_helpers.c @@ -0,0 +1,166 @@ +/** + * @file transform_vars_permutation_helpers.c + * @brief implements fonctions needed by transform_vars_permutation.c + */ + +#include +#include +#include "coco.h" + +#include "coco_random.c" +#include "suite_bbob_legacy_code.c" /*tmp*/ + +#include /*tmp*/ + +/* TODO: Document this file in doxygen style! */ + +static double *perm_random_data;/* global variable used to generate the random permutations */ + +/** + * @brief Comparison function used for sorting. In our case, it serves as a random permutation generator + */ +static int f_compare_doubles_for_random_permutation(const void *a, const void *b) { + double temp = perm_random_data[*(const size_t *) a] - perm_random_data[*(const size_t *) b]; + if (temp > 0) + return 1; + else if (temp < 0) + return -1; + else + return 0; +} + +/** + * @brief generates a random, uniformly sampled, permutation and puts it in P + */ +static void coco_compute_random_permutation(size_t *P, long seed, size_t n) { + long i; + coco_random_state_t *rng = coco_random_new((uint32_t) seed); + perm_random_data = coco_allocate_vector(n); + for (i = 0; i < n; i++){ + P[i] = (size_t) i; + perm_random_data[i] = coco_random_uniform(rng); + } + qsort(P, n, sizeof(size_t), f_compare_doubles_for_random_permutation); + coco_random_free(rng); +} + + +/** + * @brief returns a uniformly distributed integer between lower_bound and upper_bound using seed. + * Wassim: move to coco_utilities? + */ +static long coco_random_unif_int(long lower_bound, long upper_bound, coco_random_state_t *rng){ + long range; + range = upper_bound - lower_bound + 1; + return ((long)(coco_random_uniform(rng) * (double) range)) + lower_bound; +} + + + +/** + * @brief generates a random permutation resulting from nb_swaps truncated uniform swaps of range swap_range + * missing paramteters: dynamic_not_static pool, seems empirically irrelevant + * for now so dynamic is implemented (simple since no need for tracking indices + * if swap_range is the largest possible size_t value ( (size_t) -1 ), a random uniform permutation is generated + */ +static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed, size_t n, size_t nb_swaps, size_t swap_range) { + long i, idx_swap; + size_t lower_bound, upper_bound, first_swap_var, second_swap_var, tmp; + size_t *idx_order; + coco_random_state_t *rng = coco_random_new((uint32_t) seed); + + perm_random_data = coco_allocate_vector(n); + idx_order = coco_allocate_vector_size_t(n); + for (i = 0; i < n; i++){ + P[i] = (size_t) i; + idx_order[i] = (size_t) i; + perm_random_data[i] = coco_random_uniform(rng); + } + + if (swap_range > 0) { + /*sort the random data in random_data and arange idx_order accordingly*/ + /*did not use coco_compute_random_permutation to only use the seed once*/ + qsort(idx_order, n, sizeof(size_t), f_compare_doubles_for_random_permutation); + for (idx_swap = 0; idx_swap < nb_swaps; idx_swap++) { + first_swap_var = idx_order[idx_swap]; + if (first_swap_var < swap_range) { + lower_bound = 0; + } + else{ + lower_bound = first_swap_var - swap_range; + } + if (first_swap_var + swap_range > n - 1) { + upper_bound = n - 1; + } + else{ + upper_bound = first_swap_var + swap_range; + } + + second_swap_var = (size_t) coco_random_unif_int((long) lower_bound, (long) upper_bound, rng); + while (first_swap_var == second_swap_var) { + second_swap_var = (size_t) coco_random_unif_int((long) lower_bound, (long) upper_bound, rng); + } + /* swap*/ + tmp = P[first_swap_var]; + P[first_swap_var] = P[second_swap_var]; + P[second_swap_var] = tmp; + } + } else { + if ( swap_range == (size_t) -1) { + /* generate random permutation instead */ + coco_compute_random_permutation(P, seed, n); + } + + } + coco_random_free(rng); +} + + + +/** + * @brief duplicates a size_t vector + */ +static size_t *coco_duplicate_size_t_vector(const size_t *src, const size_t number_of_elements) { + size_t i; + size_t *dst; + + assert(src != NULL); + assert(number_of_elements > 0); + + dst = coco_allocate_vector_size_t(number_of_elements); + for (i = 0; i < number_of_elements; ++i) { + dst[i] = src[i]; + } + return dst; +} + + + +/** + * @brief return the swap_range corresponding to the problem in the given suite + */ +static size_t coco_get_swap_range(size_t dimension, const char *suite_name){ + if (strcmp(suite_name, "bbob-largescale") == 0) { + return dimension / 3; + } else { + coco_error("coco_get_swap_range(): unknown problem suite"); + return (size_t) NULL; + } +} + + +/** + * @brief return the number of swaps corresponding to the problem in the given suite + */ +size_t coco_get_nb_swaps(size_t dimension, const char *suite_name){ + if (strcmp(suite_name, "bbob-largescale") == 0) { + return dimension; + } else { + coco_error("coco_get_nb_swaps(): unknown problem suite"); + return (size_t) NULL; + } +} + + + + From ef2e851a233ce2ec2a9c430243137db30806e6d1 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 18 Feb 2016 16:35:38 +0100 Subject: [PATCH 043/446] now, the large scale suite uses the same function_ids as the bbob_suite --- code-experiments/src/f_ellipsoid.c | 2 +- code-experiments/src/suite_largescale.c | 90 ++++++++++++++++--- .../bbob_pproc/genericsettings.py | 1 + 3 files changed, 78 insertions(+), 15 deletions(-) diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index bee1ad0c4..d4b2e9fae 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -167,7 +167,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_oscillate(problem); problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); - problem = transform_vars_permutation(problem, P1, dimension); + problem = transform_vars_permutation(problem, P1, dimension);/*Consider replacing P21 and P12 by a single permutation P3*/ problem = transform_vars_shift(problem, xopt, 0); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index d41d42d31..45738eb6b 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -24,7 +24,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280, 2560, 5120}; - suite = coco_suite_allocate("bbob-largescale", 5, 8, dimensions, "instances:1-15"); + suite = coco_suite_allocate("bbob-largescale", 24, 8, dimensions, "instances:1-15"); return suite; } @@ -42,28 +42,90 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, const long rseed = (long) (function + 10000 * instance); /*const long rseed_3 = (long) (3 + 10000 * instance);*/ /*const long rseed_17 = (long) (17 + 10000 * instance);*/ + + /*TODO: finish implementing the large scale test-suite functions. + current list: 1,10,11,12,14*/ if (function == 1) { problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 2) { - problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); - } - else if (function == 3) { - problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem = NULL; /*f_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 3) { + problem = NULL; /*f_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ } else if (function == 4) { - problem = f_discus_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem = NULL; /*f_bueche_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed_3, + problem_id_template, problem_name_template);*/ } else if (function == 5) { + problem = NULL; /*f_linear_slope_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 6) { + problem = NULL; /*f_attractive_sector_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 7) { + problem = NULL; /*f_step_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 8) { + problem = NULL; /*f_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 9) { + problem = NULL; /*f_rosenbrock_rotated_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 10) { + problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); + } else if (function == 11) { + problem = f_discus_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); + } else if (function == 12) { problem = f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); + } else if (function == 13) { + problem = NULL; /*f_sharp_ridge_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 14) { + problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); + } else if (function == 15) { + problem = NULL; /*f_rastrigin_rotated_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 16) { + problem = NULL; /*f_weierstrass_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 17) { + problem = NULL; /*f_schaffers_bbob_problem_allocate(function, dimension, instance, rseed, 10, + problem_id_template, problem_name_template);*/ + } else if (function == 18) { + problem = NULL; /*f_schaffers_bbob_problem_allocate(function, dimension, instance, rseed_17, 1000, + problem_id_template, problem_name_template);*/ + } else if (function == 19) { + problem = NULL; /*f_griewank_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 20) { + problem = NULL; /*f_schwefel_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 21) { + problem = NULL; /*f_gallagher_bbob_problem_allocate(function, dimension, instance, rseed, 101, + problem_id_template, problem_name_template);*/ + } else if (function == 22) { + problem = NULL; /*f_gallagher_bbob_problem_allocate(function, dimension, instance, rseed, 21, + problem_id_template, problem_name_template);*/ + } else if (function == 23) { + problem = NULL; /*f_katsuura_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 24) { + problem = NULL; /*f_lunacek_bi_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ } else { - coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", function, - instance, dimension); + coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", function, instance, dimension); return NULL; /* Never reached */ } - + + if (problem == NULL) { + coco_error("coco_get_largescale_problem(): function f%lu not yet implemented ", function); + } + return problem; } diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 7cf83f50c..14d4c0a2c 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -25,6 +25,7 @@ maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = 'auto' # 'auto' means automatic choice, otherwise True or False dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules +dimensions_to_display = (40, 80, 160) generate_svg_files = True # generate the svg figures scaling_figures_with_boxes = True # should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? From e97cc3261cf1ee7ea8208d59c0f9dd8f5ddeec1b Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 18 Feb 2016 16:35:38 +0100 Subject: [PATCH 044/446] now, the large scale suite uses the same function_ids as the bbob_suite --- code-experiments/src/f_ellipsoid.c | 2 +- code-experiments/src/suite_largescale.c | 90 ++++++++++++++++--- .../bbob_pproc/genericsettings.py | 1 + 3 files changed, 78 insertions(+), 15 deletions(-) diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index bee1ad0c4..d4b2e9fae 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -167,7 +167,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_oscillate(problem); problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); - problem = transform_vars_permutation(problem, P1, dimension); + problem = transform_vars_permutation(problem, P1, dimension);/*Consider replacing P21 and P12 by a single permutation P3*/ problem = transform_vars_shift(problem, xopt, 0); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index d41d42d31..45738eb6b 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -24,7 +24,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280, 2560, 5120}; - suite = coco_suite_allocate("bbob-largescale", 5, 8, dimensions, "instances:1-15"); + suite = coco_suite_allocate("bbob-largescale", 24, 8, dimensions, "instances:1-15"); return suite; } @@ -42,28 +42,90 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, const long rseed = (long) (function + 10000 * instance); /*const long rseed_3 = (long) (3 + 10000 * instance);*/ /*const long rseed_17 = (long) (17 + 10000 * instance);*/ + + /*TODO: finish implementing the large scale test-suite functions. + current list: 1,10,11,12,14*/ if (function == 1) { problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 2) { - problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); - } - else if (function == 3) { - problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem = NULL; /*f_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 3) { + problem = NULL; /*f_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ } else if (function == 4) { - problem = f_discus_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem = NULL; /*f_bueche_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed_3, + problem_id_template, problem_name_template);*/ } else if (function == 5) { + problem = NULL; /*f_linear_slope_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 6) { + problem = NULL; /*f_attractive_sector_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 7) { + problem = NULL; /*f_step_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 8) { + problem = NULL; /*f_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 9) { + problem = NULL; /*f_rosenbrock_rotated_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 10) { + problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); + } else if (function == 11) { + problem = f_discus_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); + } else if (function == 12) { problem = f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); + } else if (function == 13) { + problem = NULL; /*f_sharp_ridge_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 14) { + problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); + } else if (function == 15) { + problem = NULL; /*f_rastrigin_rotated_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 16) { + problem = NULL; /*f_weierstrass_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 17) { + problem = NULL; /*f_schaffers_bbob_problem_allocate(function, dimension, instance, rseed, 10, + problem_id_template, problem_name_template);*/ + } else if (function == 18) { + problem = NULL; /*f_schaffers_bbob_problem_allocate(function, dimension, instance, rseed_17, 1000, + problem_id_template, problem_name_template);*/ + } else if (function == 19) { + problem = NULL; /*f_griewank_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 20) { + problem = NULL; /*f_schwefel_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 21) { + problem = NULL; /*f_gallagher_bbob_problem_allocate(function, dimension, instance, rseed, 101, + problem_id_template, problem_name_template);*/ + } else if (function == 22) { + problem = NULL; /*f_gallagher_bbob_problem_allocate(function, dimension, instance, rseed, 21, + problem_id_template, problem_name_template);*/ + } else if (function == 23) { + problem = NULL; /*f_katsuura_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + } else if (function == 24) { + problem = NULL; /*f_lunacek_bi_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ } else { - coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", function, - instance, dimension); + coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", function, instance, dimension); return NULL; /* Never reached */ } - + + if (problem == NULL) { + coco_error("coco_get_largescale_problem(): function f%lu not yet implemented ", function); + } + return problem; } diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 7cf83f50c..14d4c0a2c 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -25,6 +25,7 @@ maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = 'auto' # 'auto' means automatic choice, otherwise True or False dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules +dimensions_to_display = (40, 80, 160) generate_svg_files = True # generate the svg figures scaling_figures_with_boxes = True # should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? From f48a26e5c0972c092f845d60d65501ca7efbd0c9 Mon Sep 17 00:00:00 2001 From: NDManh Date: Thu, 18 Feb 2016 17:01:48 +0100 Subject: [PATCH 045/446] Large scale for sharp ridge problem --- code-experiments/src/f_sharp_ridge.c | 74 ++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index b4d6d753c..0d9acf76c 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -107,3 +107,77 @@ static coco_problem_t *f_sharp_ridge_bbob_problem_allocate(const size_t function coco_free_memory(xopt); return problem; } + +/** + * @brief Creates the BBOB sharp ridge problem in large dimension. + */ +static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1; + size_t *block_sizes2; + size_t nb_blocks1; + size_t nb_blocks2; + size_t swap_range; + size_t nb_swaps; + + block_sizes1 = ls_get_block_sizes(&nb_blocks1, dimension); + block_sizes2 = ls_get_block_sizes(&nb_blocks2, dimension); + swap_range = ls_get_swap_range(dimension); + nb_swaps = ls_get_nb_swaps(dimension); + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = ls_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B1_copy = (const double *const *)B1;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B2 = ls_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B2_copy = (const double *const *)B2;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + + ls_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + ls_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + ls_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps, swap_range); + + + problem = f_sharp_ridge_allocate(dimension); + problem = transform_vars_permblockdiag(problem, B1_copy, P11, P21, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_permblockdiag(problem, B2_copy, P12, P22, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block"); /*TODO: no large scale prefix*/ + + ls_free_block_matrix(B1, dimension); + ls_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + + return problem; +} + + From cc54d7b8875a1e26df65c154eedddf6c9c3957c9 Mon Sep 17 00:00:00 2001 From: NDManh Date: Thu, 18 Feb 2016 17:01:48 +0100 Subject: [PATCH 046/446] Large scale for sharp ridge problem --- code-experiments/src/f_sharp_ridge.c | 74 ++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index b4d6d753c..0d9acf76c 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -107,3 +107,77 @@ static coco_problem_t *f_sharp_ridge_bbob_problem_allocate(const size_t function coco_free_memory(xopt); return problem; } + +/** + * @brief Creates the BBOB sharp ridge problem in large dimension. + */ +static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1; + size_t *block_sizes2; + size_t nb_blocks1; + size_t nb_blocks2; + size_t swap_range; + size_t nb_swaps; + + block_sizes1 = ls_get_block_sizes(&nb_blocks1, dimension); + block_sizes2 = ls_get_block_sizes(&nb_blocks2, dimension); + swap_range = ls_get_swap_range(dimension); + nb_swaps = ls_get_nb_swaps(dimension); + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = ls_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B1_copy = (const double *const *)B1;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B2 = ls_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B2_copy = (const double *const *)B2;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + + ls_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + ls_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + ls_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps, swap_range); + ls_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps, swap_range); + + + problem = f_sharp_ridge_allocate(dimension); + problem = transform_vars_permblockdiag(problem, B1_copy, P11, P21, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_permblockdiag(problem, B2_copy, P12, P22, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block"); /*TODO: no large scale prefix*/ + + ls_free_block_matrix(B1, dimension); + ls_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + + return problem; +} + + From 575f2f1a534a69fb2d12d65c4ff59240f534cd04 Mon Sep 17 00:00:00 2001 From: NDManh Date: Thu, 18 Feb 2016 18:08:16 +0100 Subject: [PATCH 047/446] Large scale for f_sharp_ridge --- code-experiments/src/f_sharp_ridge.c | 41 ++++++++++++++----------- code-experiments/src/suite_largescale.c | 4 +-- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index 0d9acf76c..35d2a3870 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -134,41 +134,46 @@ static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const s size_t swap_range; size_t nb_swaps; - block_sizes1 = ls_get_block_sizes(&nb_blocks1, dimension); - block_sizes2 = ls_get_block_sizes(&nb_blocks2, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); - B1 = ls_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B1_copy = (const double *const *)B1;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ - B2 = ls_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B2_copy = (const double *const *)B2;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B1_copy = (const double *const *)B1; /*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B2_copy = (const double *const *)B2; /*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ - ls_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - ls_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); - ls_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps, swap_range); problem = f_sharp_ridge_allocate(dimension); - problem = transform_vars_permblockdiag(problem, B1_copy, P11, P21, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P21, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_conditioning(problem, 10.0); - problem = transform_vars_permblockdiag(problem, B2_copy, P12, P22, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P22, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block"); /*TODO: no large scale prefix*/ - ls_free_block_matrix(B1, dimension); - ls_free_block_matrix(B2, dimension); + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); coco_free_memory(P11); coco_free_memory(P21); coco_free_memory(P12); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 45738eb6b..f72806db2 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -82,8 +82,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 13) { - problem = NULL; /*f_sharp_ridge_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_sharp_ridge_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 14) { problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); From 4953c8702501e44f9b1b353f8a80b2ebd609b6fe Mon Sep 17 00:00:00 2001 From: NDManh Date: Thu, 18 Feb 2016 18:08:16 +0100 Subject: [PATCH 048/446] Large scale for f_sharp_ridge --- code-experiments/src/f_sharp_ridge.c | 41 ++++++++++++++----------- code-experiments/src/suite_largescale.c | 4 +-- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index 0d9acf76c..35d2a3870 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -134,41 +134,46 @@ static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const s size_t swap_range; size_t nb_swaps; - block_sizes1 = ls_get_block_sizes(&nb_blocks1, dimension); - block_sizes2 = ls_get_block_sizes(&nb_blocks2, dimension); - swap_range = ls_get_swap_range(dimension); - nb_swaps = ls_get_nb_swaps(dimension); + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); - B1 = ls_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B1_copy = (const double *const *)B1;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ - B2 = ls_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B2_copy = (const double *const *)B2;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B1_copy = (const double *const *)B1; /*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B2_copy = (const double *const *)B2; /*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ - ls_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - ls_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); - ls_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps, swap_range); - ls_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps, swap_range); problem = f_sharp_ridge_allocate(dimension); - problem = transform_vars_permblockdiag(problem, B1_copy, P11, P21, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P21, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_conditioning(problem, 10.0); - problem = transform_vars_permblockdiag(problem, B2_copy, P12, P22, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P22, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block"); /*TODO: no large scale prefix*/ - ls_free_block_matrix(B1, dimension); - ls_free_block_matrix(B2, dimension); + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); coco_free_memory(P11); coco_free_memory(P21); coco_free_memory(P12); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 45738eb6b..f72806db2 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -82,8 +82,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 13) { - problem = NULL; /*f_sharp_ridge_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_sharp_ridge_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 14) { problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); From 8e94e1c516c0a7dcee56bc94d132a6b2daa44d65 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 18 Feb 2016 18:33:41 +0100 Subject: [PATCH 049/446] now, the --large-scale option in the postprocing allows to generate ppfigdim figures with the large-scale suite dimensions in the x-axis instead of the default (2, 3, 5, 10, 20, 40). --- code-postprocessing/bbob_pproc/genericsettings.py | 6 ++++-- code-postprocessing/bbob_pproc/ppfigdim.py | 10 +++++++++- code-postprocessing/bbob_pproc/rungeneric.py | 2 ++ code-postprocessing/bbob_pproc/rungeneric1.py | 4 +++- code-postprocessing/bbob_pproc/rungeneric2.py | 4 +++- code-postprocessing/bbob_pproc/rungenericmany.py | 5 +++-- 6 files changed, 24 insertions(+), 7 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 14d4c0a2c..ed626c8f4 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -25,13 +25,14 @@ maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = 'auto' # 'auto' means automatic choice, otherwise True or False dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules -dimensions_to_display = (40, 80, 160) +dimensions_to_display_ls = (40, 80, 160, 320, 640, 1280) # Wassim: large scale suite generate_svg_files = True # generate the svg figures scaling_figures_with_boxes = True # should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? # Variables used in the routines defining desired output for BBOB. tabDimsOfInterest = (5, 20) # dimension which are displayed in the tables +tabDimsOfInterest_ls = (80, 640) # Wassim: large scale target_runlengths_in_scaling_figs = [0.5, 1.2, 3, 10, 50] # used in config target_runlengths_in_table = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config target_runlengths_in_single_rldistr = [0.5, 2, 10, 50] # used in config @@ -232,6 +233,7 @@ isExpensive = False isRldOnSingleFcts = True isRLDistr = True +isLargeScale = False # Wassim: added large scale tag ## isLogLoss = True # only affects rungeneric1 isPickled = False # only affects rungeneric1 @@ -243,7 +245,7 @@ shortoptlist = "hvpo:" longoptlist = ["help", "output-dir=", "noisy", "noise-free", "tab-only", "fig-only", "rld-only", "no-rld-single-fcts", - "verbose", "settings=", "conv", + "verbose", "settings=", "conv", "large-scale",# Wassim: added large-scale option "expensive", "runlength-based", "los-only", "crafting-effort=", "pickle", "sca-only", "no-svg"] diff --git a/code-postprocessing/bbob_pproc/ppfigdim.py b/code-postprocessing/bbob_pproc/ppfigdim.py index 439dfa7b0..09327a66a 100644 --- a/code-postprocessing/bbob_pproc/ppfigdim.py +++ b/code-postprocessing/bbob_pproc/ppfigdim.py @@ -116,7 +116,10 @@ # r"was below $10^{\{values_of_interest\}}\times\DIM$ evaluations. " + # should correspond with the colors in pprldistr. -dimensions = genericsettings.dimensions_to_display +# Wassim: TODO seems to be set before rungeneric so useless here!!!! +dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls + + functions_with_legend = (1, 24, 101, 130) def scaling_figure_caption(): @@ -173,11 +176,16 @@ def beautify(axesLabel=True): plt.plot((0.2, 20000), (10**i, 10**(i + 5)), 'k:', linewidth=0.5) # TODO: this should be done before the real lines are plotted? + # for x in dimensions: # plt.plot(2 * [x], [0.1, 1e11], 'k:', linewidth=0.5) # Ticks on axes # axisHandle.invert_xaxis() + + # Wassim: + dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls + dimticklist = dimensions dimannlist = dimensions # TODO: All these should depend on one given input (xlim, ylim) diff --git a/code-postprocessing/bbob_pproc/rungeneric.py b/code-postprocessing/bbob_pproc/rungeneric.py index ec6486773..27d765ffe 100644 --- a/code-postprocessing/bbob_pproc/rungeneric.py +++ b/code-postprocessing/bbob_pproc/rungeneric.py @@ -221,6 +221,8 @@ def main(argv=None): genopts = [] outputdir = genericsettings.outputdir for o, a in opts: + if o in ("--large-scale"):# Wassim: added large scale option, instead of just changing dimensions_to_display, use this for easier, further uses + genericsettings.isLargeScale = True if o in ("-h", "--help"): usage() sys.exit() diff --git a/code-postprocessing/bbob_pproc/rungeneric1.py b/code-postprocessing/bbob_pproc/rungeneric1.py index f89c29b0e..9e6eee65d 100644 --- a/code-postprocessing/bbob_pproc/rungeneric1.py +++ b/code-postprocessing/bbob_pproc/rungeneric1.py @@ -186,7 +186,9 @@ def main(argv=None): # Process options outputdir = genericsettings.outputdir for o, a in opts: - if o in ("-v", "--verbose"): + if o in ("--large-scale"):# Wassim: added large scale option, instead of just changing dimensions_to_display, use this for easier, further uses + genericsettings.isLargeScale = True + elif o in ("-v", "--verbose"): genericsettings.verbose = True elif o in ("-h", "--help"): usage() diff --git a/code-postprocessing/bbob_pproc/rungeneric2.py b/code-postprocessing/bbob_pproc/rungeneric2.py index 576639131..f6e1c7eda 100644 --- a/code-postprocessing/bbob_pproc/rungeneric2.py +++ b/code-postprocessing/bbob_pproc/rungeneric2.py @@ -259,8 +259,10 @@ def main(argv=None): if genericsettings.isNoiseFree and not genericsettings.isNoisy: dictAlg[i] = dictAlg[i].dictByNoise().get('noiselessall', DataSetList()) + _dimensions_to_display = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls # Wassim: modify genericsettings.dimensions_to_display directly? for i in dsList: - if i.dim not in genericsettings.dimensions_to_display: + #if i.dim not in genericsettings.dimensions_to_display: + if i.dim not in _dimensions_to_display: continue if (dict((j, i.instancenumbers.count(j)) for j in set(i.instancenumbers)) < diff --git a/code-postprocessing/bbob_pproc/rungenericmany.py b/code-postprocessing/bbob_pproc/rungenericmany.py index 4dc1299d9..2320cb0ef 100644 --- a/code-postprocessing/bbob_pproc/rungenericmany.py +++ b/code-postprocessing/bbob_pproc/rungenericmany.py @@ -286,9 +286,10 @@ def main(argv=None): config.target_values(genericsettings.isExpensive) config.config(dsList[0].isBiobjective()) - + _dimensions_to_display = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls # Wassim: modify genericsettings.dimensions_to_display directly? for i in dsList: - if i.dim not in genericsettings.dimensions_to_display: + #if i.dim not in genericsettings.dimensions_to_display: + if i.dim not in _dimensions_to_display: continue if (dict((j, i.instancenumbers.count(j)) for j in set(i.instancenumbers)) < From f544d49a2152cea98f9c98ed10a3ce92b7f6bbaf Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 18 Feb 2016 18:33:41 +0100 Subject: [PATCH 050/446] now, the --large-scale option in the postprocing allows to generate ppfigdim figures with the large-scale suite dimensions in the x-axis instead of the default (2, 3, 5, 10, 20, 40). --- code-postprocessing/bbob_pproc/genericsettings.py | 6 ++++-- code-postprocessing/bbob_pproc/ppfigdim.py | 10 +++++++++- code-postprocessing/bbob_pproc/rungeneric.py | 2 ++ code-postprocessing/bbob_pproc/rungeneric1.py | 4 +++- code-postprocessing/bbob_pproc/rungeneric2.py | 4 +++- code-postprocessing/bbob_pproc/rungenericmany.py | 5 +++-- 6 files changed, 24 insertions(+), 7 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 14d4c0a2c..ed626c8f4 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -25,13 +25,14 @@ maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = 'auto' # 'auto' means automatic choice, otherwise True or False dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules -dimensions_to_display = (40, 80, 160) +dimensions_to_display_ls = (40, 80, 160, 320, 640, 1280) # Wassim: large scale suite generate_svg_files = True # generate the svg figures scaling_figures_with_boxes = True # should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? # Variables used in the routines defining desired output for BBOB. tabDimsOfInterest = (5, 20) # dimension which are displayed in the tables +tabDimsOfInterest_ls = (80, 640) # Wassim: large scale target_runlengths_in_scaling_figs = [0.5, 1.2, 3, 10, 50] # used in config target_runlengths_in_table = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config target_runlengths_in_single_rldistr = [0.5, 2, 10, 50] # used in config @@ -232,6 +233,7 @@ isExpensive = False isRldOnSingleFcts = True isRLDistr = True +isLargeScale = False # Wassim: added large scale tag ## isLogLoss = True # only affects rungeneric1 isPickled = False # only affects rungeneric1 @@ -243,7 +245,7 @@ shortoptlist = "hvpo:" longoptlist = ["help", "output-dir=", "noisy", "noise-free", "tab-only", "fig-only", "rld-only", "no-rld-single-fcts", - "verbose", "settings=", "conv", + "verbose", "settings=", "conv", "large-scale",# Wassim: added large-scale option "expensive", "runlength-based", "los-only", "crafting-effort=", "pickle", "sca-only", "no-svg"] diff --git a/code-postprocessing/bbob_pproc/ppfigdim.py b/code-postprocessing/bbob_pproc/ppfigdim.py index 439dfa7b0..09327a66a 100644 --- a/code-postprocessing/bbob_pproc/ppfigdim.py +++ b/code-postprocessing/bbob_pproc/ppfigdim.py @@ -116,7 +116,10 @@ # r"was below $10^{\{values_of_interest\}}\times\DIM$ evaluations. " + # should correspond with the colors in pprldistr. -dimensions = genericsettings.dimensions_to_display +# Wassim: TODO seems to be set before rungeneric so useless here!!!! +dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls + + functions_with_legend = (1, 24, 101, 130) def scaling_figure_caption(): @@ -173,11 +176,16 @@ def beautify(axesLabel=True): plt.plot((0.2, 20000), (10**i, 10**(i + 5)), 'k:', linewidth=0.5) # TODO: this should be done before the real lines are plotted? + # for x in dimensions: # plt.plot(2 * [x], [0.1, 1e11], 'k:', linewidth=0.5) # Ticks on axes # axisHandle.invert_xaxis() + + # Wassim: + dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls + dimticklist = dimensions dimannlist = dimensions # TODO: All these should depend on one given input (xlim, ylim) diff --git a/code-postprocessing/bbob_pproc/rungeneric.py b/code-postprocessing/bbob_pproc/rungeneric.py index ec6486773..27d765ffe 100644 --- a/code-postprocessing/bbob_pproc/rungeneric.py +++ b/code-postprocessing/bbob_pproc/rungeneric.py @@ -221,6 +221,8 @@ def main(argv=None): genopts = [] outputdir = genericsettings.outputdir for o, a in opts: + if o in ("--large-scale"):# Wassim: added large scale option, instead of just changing dimensions_to_display, use this for easier, further uses + genericsettings.isLargeScale = True if o in ("-h", "--help"): usage() sys.exit() diff --git a/code-postprocessing/bbob_pproc/rungeneric1.py b/code-postprocessing/bbob_pproc/rungeneric1.py index f89c29b0e..9e6eee65d 100644 --- a/code-postprocessing/bbob_pproc/rungeneric1.py +++ b/code-postprocessing/bbob_pproc/rungeneric1.py @@ -186,7 +186,9 @@ def main(argv=None): # Process options outputdir = genericsettings.outputdir for o, a in opts: - if o in ("-v", "--verbose"): + if o in ("--large-scale"):# Wassim: added large scale option, instead of just changing dimensions_to_display, use this for easier, further uses + genericsettings.isLargeScale = True + elif o in ("-v", "--verbose"): genericsettings.verbose = True elif o in ("-h", "--help"): usage() diff --git a/code-postprocessing/bbob_pproc/rungeneric2.py b/code-postprocessing/bbob_pproc/rungeneric2.py index 576639131..f6e1c7eda 100644 --- a/code-postprocessing/bbob_pproc/rungeneric2.py +++ b/code-postprocessing/bbob_pproc/rungeneric2.py @@ -259,8 +259,10 @@ def main(argv=None): if genericsettings.isNoiseFree and not genericsettings.isNoisy: dictAlg[i] = dictAlg[i].dictByNoise().get('noiselessall', DataSetList()) + _dimensions_to_display = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls # Wassim: modify genericsettings.dimensions_to_display directly? for i in dsList: - if i.dim not in genericsettings.dimensions_to_display: + #if i.dim not in genericsettings.dimensions_to_display: + if i.dim not in _dimensions_to_display: continue if (dict((j, i.instancenumbers.count(j)) for j in set(i.instancenumbers)) < diff --git a/code-postprocessing/bbob_pproc/rungenericmany.py b/code-postprocessing/bbob_pproc/rungenericmany.py index 4dc1299d9..2320cb0ef 100644 --- a/code-postprocessing/bbob_pproc/rungenericmany.py +++ b/code-postprocessing/bbob_pproc/rungenericmany.py @@ -286,9 +286,10 @@ def main(argv=None): config.target_values(genericsettings.isExpensive) config.config(dsList[0].isBiobjective()) - + _dimensions_to_display = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls # Wassim: modify genericsettings.dimensions_to_display directly? for i in dsList: - if i.dim not in genericsettings.dimensions_to_display: + #if i.dim not in genericsettings.dimensions_to_display: + if i.dim not in _dimensions_to_display: continue if (dict((j, i.instancenumbers.count(j)) for j in set(i.instancenumbers)) < From 9aba4317fa5e48f78b397f66dade7d1e02af7eb0 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 19 Feb 2016 13:18:26 +0100 Subject: [PATCH 051/446] large-scale suite: added remaining separable functions that are normalized by dim --- code-experiments/src/f_bueche_rastrigin.c | 6 +++++ code-experiments/src/f_ellipsoid.c | 5 ++++ code-experiments/src/f_linear_slope.c | 6 +++++ code-experiments/src/f_rastrigin.c | 5 ++++ code-experiments/src/suite_largescale.c | 23 +++++++++++-------- .../bbob_pproc/genericsettings.py | 2 +- code-postprocessing/bbob_pproc/rungeneric2.py | 1 + 7 files changed, 37 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/f_bueche_rastrigin.c b/code-experiments/src/f_bueche_rastrigin.c index c68401075..502d1b4cd 100644 --- a/code-experiments/src/f_bueche_rastrigin.c +++ b/code-experiments/src/f_bueche_rastrigin.c @@ -14,6 +14,7 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" #include "transform_obj_penalize.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Bueche-Rastrigin function without connections to any COCO structures. @@ -84,6 +85,11 @@ static coco_problem_t *f_bueche_rastrigin_bbob_problem_allocate(const size_t fun problem = transform_vars_brs(problem); problem = transform_vars_oscillate(problem); problem = transform_vars_shift(problem, xopt, 0); + + /*if large scale test-bed, normalize by dim*/ + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + problem = transform_obj_norm_by_dim(problem); + } problem = transform_obj_shift(problem, fopt); problem = transform_obj_penalize(problem, penalty_factor); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index d4b2e9fae..d2f94bd30 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -78,6 +78,11 @@ static coco_problem_t *f_ellipsoid_bbob_problem_allocate(const size_t function, problem = f_ellipsoid_allocate(dimension); problem = transform_vars_oscillate(problem); problem = transform_vars_shift(problem, xopt, 0); + + /*if large scale test-bed, normalize by dim*/ + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + problem = transform_obj_norm_by_dim(problem); + } problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_linear_slope.c b/code-experiments/src/f_linear_slope.c index 0328347f0..6823399cd 100644 --- a/code-experiments/src/f_linear_slope.c +++ b/code-experiments/src/f_linear_slope.c @@ -11,6 +11,7 @@ #include "coco_problem.c" #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the linear slope function without connections to any COCO structures. @@ -88,6 +89,11 @@ static coco_problem_t *f_linear_slope_bbob_problem_allocate(const size_t functio fopt = bbob2009_compute_fopt(function, instance); problem = f_linear_slope_allocate(dimension, xopt); + + /*if large scale test-bed, normalize by dim*/ + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + problem = transform_obj_norm_by_dim(problem); + } problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index e5009a132..e7337bf15 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -80,6 +80,11 @@ static coco_problem_t *f_rastrigin_bbob_problem_allocate(const size_t function, problem = transform_vars_asymmetric(problem, 0.2); problem = transform_vars_oscillate(problem); problem = transform_vars_shift(problem, xopt, 0); + + /*if large scale test-bed, normalize by dim*/ + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + problem = transform_obj_norm_by_dim(problem); + } problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 45738eb6b..12236df4a 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -10,6 +10,9 @@ #include "f_discus_generalized.c" #include "f_bent_cigar_generalized.c" #include "f_different_powers.c" +#include "f_rastrigin.c" +#include "f_bueche_rastrigin.c" +#include "f_linear_slope.c" static coco_suite_t *coco_suite_allocate(const char *suite_name, const size_t number_of_functions, @@ -40,26 +43,26 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, const char *problem_name_template = "BBOB large-scale suite problem f%lu instance %lu in %luD"; const long rseed = (long) (function + 10000 * instance); - /*const long rseed_3 = (long) (3 + 10000 * instance);*/ + const long rseed_3 = (long) (3 + 10000 * instance); /*const long rseed_17 = (long) (17 + 10000 * instance);*/ /*TODO: finish implementing the large scale test-suite functions. - current list: 1,10,11,12,14*/ + current list: 1-5,10-12,14*/ if (function == 1) { problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 2) { - problem = NULL; /*f_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 3) { - problem = NULL; /*f_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 4) { - problem = NULL; /*f_bueche_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed_3, - problem_id_template, problem_name_template);*/ + problem = f_bueche_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed_3, + problem_id_template, problem_name_template); } else if (function == 5) { - problem = NULL; /*f_linear_slope_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_linear_slope_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 6) { problem = NULL; /*f_attractive_sector_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 68a061a88..c8a702df8 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -32,7 +32,7 @@ # Variables used in the routines defining desired output for BBOB. tabDimsOfInterest = (5, 20) # dimension which are displayed in the tables -tabDimsOfInterest_ls = (80, 640) # Wassim: large scale +tabDimsOfInterest_ls = (80, 640) # Wassim: large scale TODO: use it target_runlengths_in_scaling_figs = [0.5, 1.2, 3, 10, 50] # used in config target_runlengths_in_table = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config target_runlengths_in_single_rldistr = [0.5, 2, 10, 50] # used in config diff --git a/code-postprocessing/bbob_pproc/rungeneric2.py b/code-postprocessing/bbob_pproc/rungeneric2.py index f6e1c7eda..8f5ba2df4 100644 --- a/code-postprocessing/bbob_pproc/rungeneric2.py +++ b/code-postprocessing/bbob_pproc/rungeneric2.py @@ -517,6 +517,7 @@ def split_seq(seq, nbgroups): tmp1.extend(dictFunc1[f]) group0.append(tmp0) group1.append(tmp1) + for i, g in enumerate(zip(group0, group1)): pptable2.main(g[0], g[1], inset.tabDimsOfInterest, outputdir, From f2cc8c230f0f0224fc4a77259902b71de0bf4503 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 19 Feb 2016 13:18:26 +0100 Subject: [PATCH 052/446] large-scale suite: added remaining separable functions that are normalized by dim --- code-experiments/src/f_bueche_rastrigin.c | 6 +++++ code-experiments/src/f_ellipsoid.c | 5 ++++ code-experiments/src/f_linear_slope.c | 6 +++++ code-experiments/src/f_rastrigin.c | 5 ++++ code-experiments/src/suite_largescale.c | 23 +++++++++++-------- .../bbob_pproc/genericsettings.py | 2 +- code-postprocessing/bbob_pproc/rungeneric2.py | 1 + 7 files changed, 37 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/f_bueche_rastrigin.c b/code-experiments/src/f_bueche_rastrigin.c index c68401075..502d1b4cd 100644 --- a/code-experiments/src/f_bueche_rastrigin.c +++ b/code-experiments/src/f_bueche_rastrigin.c @@ -14,6 +14,7 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" #include "transform_obj_penalize.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Bueche-Rastrigin function without connections to any COCO structures. @@ -84,6 +85,11 @@ static coco_problem_t *f_bueche_rastrigin_bbob_problem_allocate(const size_t fun problem = transform_vars_brs(problem); problem = transform_vars_oscillate(problem); problem = transform_vars_shift(problem, xopt, 0); + + /*if large scale test-bed, normalize by dim*/ + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + problem = transform_obj_norm_by_dim(problem); + } problem = transform_obj_shift(problem, fopt); problem = transform_obj_penalize(problem, penalty_factor); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index d4b2e9fae..d2f94bd30 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -78,6 +78,11 @@ static coco_problem_t *f_ellipsoid_bbob_problem_allocate(const size_t function, problem = f_ellipsoid_allocate(dimension); problem = transform_vars_oscillate(problem); problem = transform_vars_shift(problem, xopt, 0); + + /*if large scale test-bed, normalize by dim*/ + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + problem = transform_obj_norm_by_dim(problem); + } problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_linear_slope.c b/code-experiments/src/f_linear_slope.c index 0328347f0..6823399cd 100644 --- a/code-experiments/src/f_linear_slope.c +++ b/code-experiments/src/f_linear_slope.c @@ -11,6 +11,7 @@ #include "coco_problem.c" #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the linear slope function without connections to any COCO structures. @@ -88,6 +89,11 @@ static coco_problem_t *f_linear_slope_bbob_problem_allocate(const size_t functio fopt = bbob2009_compute_fopt(function, instance); problem = f_linear_slope_allocate(dimension, xopt); + + /*if large scale test-bed, normalize by dim*/ + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + problem = transform_obj_norm_by_dim(problem); + } problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index e5009a132..e7337bf15 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -80,6 +80,11 @@ static coco_problem_t *f_rastrigin_bbob_problem_allocate(const size_t function, problem = transform_vars_asymmetric(problem, 0.2); problem = transform_vars_oscillate(problem); problem = transform_vars_shift(problem, xopt, 0); + + /*if large scale test-bed, normalize by dim*/ + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + problem = transform_obj_norm_by_dim(problem); + } problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 45738eb6b..12236df4a 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -10,6 +10,9 @@ #include "f_discus_generalized.c" #include "f_bent_cigar_generalized.c" #include "f_different_powers.c" +#include "f_rastrigin.c" +#include "f_bueche_rastrigin.c" +#include "f_linear_slope.c" static coco_suite_t *coco_suite_allocate(const char *suite_name, const size_t number_of_functions, @@ -40,26 +43,26 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, const char *problem_name_template = "BBOB large-scale suite problem f%lu instance %lu in %luD"; const long rseed = (long) (function + 10000 * instance); - /*const long rseed_3 = (long) (3 + 10000 * instance);*/ + const long rseed_3 = (long) (3 + 10000 * instance); /*const long rseed_17 = (long) (17 + 10000 * instance);*/ /*TODO: finish implementing the large scale test-suite functions. - current list: 1,10,11,12,14*/ + current list: 1-5,10-12,14*/ if (function == 1) { problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 2) { - problem = NULL; /*f_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 3) { - problem = NULL; /*f_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 4) { - problem = NULL; /*f_bueche_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed_3, - problem_id_template, problem_name_template);*/ + problem = f_bueche_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed_3, + problem_id_template, problem_name_template); } else if (function == 5) { - problem = NULL; /*f_linear_slope_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_linear_slope_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 6) { problem = NULL; /*f_attractive_sector_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 68a061a88..c8a702df8 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -32,7 +32,7 @@ # Variables used in the routines defining desired output for BBOB. tabDimsOfInterest = (5, 20) # dimension which are displayed in the tables -tabDimsOfInterest_ls = (80, 640) # Wassim: large scale +tabDimsOfInterest_ls = (80, 640) # Wassim: large scale TODO: use it target_runlengths_in_scaling_figs = [0.5, 1.2, 3, 10, 50] # used in config target_runlengths_in_table = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config target_runlengths_in_single_rldistr = [0.5, 2, 10, 50] # used in config diff --git a/code-postprocessing/bbob_pproc/rungeneric2.py b/code-postprocessing/bbob_pproc/rungeneric2.py index f6e1c7eda..8f5ba2df4 100644 --- a/code-postprocessing/bbob_pproc/rungeneric2.py +++ b/code-postprocessing/bbob_pproc/rungeneric2.py @@ -517,6 +517,7 @@ def split_seq(seq, nbgroups): tmp1.extend(dictFunc1[f]) group0.append(tmp0) group1.append(tmp1) + for i, g in enumerate(zip(group0, group1)): pptable2.main(g[0], g[1], inset.tabDimsOfInterest, outputdir, From 609ebc5586006056ad070687c153945f7b24dacf Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 19 Feb 2016 15:58:55 +0100 Subject: [PATCH 053/446] now, the --large-scale option in pproc makes the html file show large-scale dims for the Empirical cumulative distribution functions (ECDF) and ERT loss ratios plots (dimensions were hard-coded before) --- code-postprocessing/bbob_pproc/genericsettings.py | 6 +++++- code-postprocessing/bbob_pproc/ppfig.py | 10 +++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index c8a702df8..fb3b306a8 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -32,7 +32,7 @@ # Variables used in the routines defining desired output for BBOB. tabDimsOfInterest = (5, 20) # dimension which are displayed in the tables -tabDimsOfInterest_ls = (80, 640) # Wassim: large scale TODO: use it +tabDimsOfInterest = [40] # Wassim: large scale TODO: use it by generating new large-scale reference data target_runlengths_in_scaling_figs = [0.5, 1.2, 3, 10, 50] # used in config target_runlengths_in_table = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config target_runlengths_in_single_rldistr = [0.5, 2, 10, 50] # used in config @@ -44,10 +44,14 @@ #tabValsOfInterest = (10, 1.0, 1e-1, 1e-3, 1e-5, 1.0e-8) rldDimsOfInterest = (5, 20) +rldDimsOfInterest = [40] # Wassim: for large scale TODO: use it by generating new large-scale reference data figValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # this is a bad name that should improve, which fig, what vals??? # figValsOfInterest = (10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8) #in/outcomment if desired ##Put backward to have the legend in the same order as the lines. +htmlDimsOfInterest = [5, 20] # Wassim: Empirical cumulative distribution functions (ECDF) and ERT loss ratios shown dimensions in html file +htmlDimsOfInterest_ls = [40, 80] # Wassim: for large scale + simulated_runlength_bootstrap_sample_size = 10 + 990 / (1 + 10 * max((0, in_a_hurry))) simulated_runlength_bootstrap_sample_size_rld = 10 + 90 / (1 + 10 * max((0, in_a_hurry))) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 3227aa2ae..08492bd31 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -188,6 +188,8 @@ def save_single_functions_html(filename, addLinkForNextDim = add_to_names.endswith('D') bestAlgExists = not isBiobjective + dimensions = genericsettings.htmlDimsOfInterest_ls if genericsettings.isLargeScale else genericsettings.htmlDimsOfInterest + if algorithmCount is AlgorithmCount.ONE: headerERT = 'Expected number of f-evaluations to reach target' f.write("

%s

\n" % headerERT) @@ -210,8 +212,9 @@ def save_single_functions_html(filename, f.write(captionStringFormat % htmldesc.getValue('##bbobpptablecaption##')) names = ['pprldistr', 'ppfvdistr'] - dimensions = [5, 20] - + #dimensions = [5, 20] # Wassim: now done earlier depending on genericsettings.isLargeScale + #dimensions = [40, 80] # Wassim: for large scale + headerECDF = ' Empirical cumulative distribution functions (ECDF)' f.write("

%s

\n" % headerECDF) for dimension in dimensions: @@ -262,7 +265,8 @@ def save_single_functions_html(filename, f.write(captionStringFormat % '##bbobppscatterlegend##') names = ['pprldistr', 'pplogabs'] - dimensions = [5, 20] + # dimensions = [5, 20] # Wassim: now done earlier depending on genericsettings.isLargeScale + # dimensions = [40, 80] # Wassim: for large scale headerECDF = 'Empirical cumulative distribution functions (ECDFs) per function group' f.write("\n

%s

\n" % headerECDF) From 1493ff5416a6a9bab6be938d655d5e3402f99597 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 19 Feb 2016 15:58:55 +0100 Subject: [PATCH 054/446] now, the --large-scale option in pproc makes the html file show large-scale dims for the Empirical cumulative distribution functions (ECDF) and ERT loss ratios plots (dimensions were hard-coded before) --- code-postprocessing/bbob_pproc/genericsettings.py | 6 +++++- code-postprocessing/bbob_pproc/ppfig.py | 10 +++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index c8a702df8..fb3b306a8 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -32,7 +32,7 @@ # Variables used in the routines defining desired output for BBOB. tabDimsOfInterest = (5, 20) # dimension which are displayed in the tables -tabDimsOfInterest_ls = (80, 640) # Wassim: large scale TODO: use it +tabDimsOfInterest = [40] # Wassim: large scale TODO: use it by generating new large-scale reference data target_runlengths_in_scaling_figs = [0.5, 1.2, 3, 10, 50] # used in config target_runlengths_in_table = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config target_runlengths_in_single_rldistr = [0.5, 2, 10, 50] # used in config @@ -44,10 +44,14 @@ #tabValsOfInterest = (10, 1.0, 1e-1, 1e-3, 1e-5, 1.0e-8) rldDimsOfInterest = (5, 20) +rldDimsOfInterest = [40] # Wassim: for large scale TODO: use it by generating new large-scale reference data figValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # this is a bad name that should improve, which fig, what vals??? # figValsOfInterest = (10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8) #in/outcomment if desired ##Put backward to have the legend in the same order as the lines. +htmlDimsOfInterest = [5, 20] # Wassim: Empirical cumulative distribution functions (ECDF) and ERT loss ratios shown dimensions in html file +htmlDimsOfInterest_ls = [40, 80] # Wassim: for large scale + simulated_runlength_bootstrap_sample_size = 10 + 990 / (1 + 10 * max((0, in_a_hurry))) simulated_runlength_bootstrap_sample_size_rld = 10 + 90 / (1 + 10 * max((0, in_a_hurry))) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 3227aa2ae..08492bd31 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -188,6 +188,8 @@ def save_single_functions_html(filename, addLinkForNextDim = add_to_names.endswith('D') bestAlgExists = not isBiobjective + dimensions = genericsettings.htmlDimsOfInterest_ls if genericsettings.isLargeScale else genericsettings.htmlDimsOfInterest + if algorithmCount is AlgorithmCount.ONE: headerERT = 'Expected number of f-evaluations to reach target' f.write("

%s

\n" % headerERT) @@ -210,8 +212,9 @@ def save_single_functions_html(filename, f.write(captionStringFormat % htmldesc.getValue('##bbobpptablecaption##')) names = ['pprldistr', 'ppfvdistr'] - dimensions = [5, 20] - + #dimensions = [5, 20] # Wassim: now done earlier depending on genericsettings.isLargeScale + #dimensions = [40, 80] # Wassim: for large scale + headerECDF = ' Empirical cumulative distribution functions (ECDF)' f.write("

%s

\n" % headerECDF) for dimension in dimensions: @@ -262,7 +265,8 @@ def save_single_functions_html(filename, f.write(captionStringFormat % '##bbobppscatterlegend##') names = ['pprldistr', 'pplogabs'] - dimensions = [5, 20] + # dimensions = [5, 20] # Wassim: now done earlier depending on genericsettings.isLargeScale + # dimensions = [40, 80] # Wassim: for large scale headerECDF = 'Empirical cumulative distribution functions (ECDFs) per function group' f.write("\n

%s

\n" % headerECDF) From e255f5cd4e79dc21d9ee94718110380b18a7a49d Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 19 Feb 2016 17:14:27 +0100 Subject: [PATCH 055/446] the pproc no longer crashes when a dimesion provided for the logloss is not in bestAlg2009. Shows a warning and skips the logloss tables and plots for said dimension instead --- .../bbob_pproc/genericsettings.py | 2 +- code-postprocessing/bbob_pproc/ppfig.py | 2 +- code-postprocessing/bbob_pproc/pplogloss.py | 2 +- code-postprocessing/bbob_pproc/rungeneric1.py | 16 ++++++++++------ 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 318f0faa2..b5be16fb0 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -44,7 +44,7 @@ #tabValsOfInterest = (10, 1.0, 1e-1, 1e-3, 1e-5, 1.0e-8) rldDimsOfInterest = (5, 20) -rldDimsOfInterest = [40] # Wassim: for large scale TODO: use it by generating new large-scale reference data +rldDimsOfInterest = [40, 80] # Wassim: for large scale TODO: use it by generating new large-scale reference data figValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # this is a bad name that should improve, which fig, what vals??? # figValsOfInterest = (10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8) #in/outcomment if desired ##Put backward to have the legend in the same order as the lines. diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 08492bd31..acde4828d 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -189,7 +189,7 @@ def save_single_functions_html(filename, bestAlgExists = not isBiobjective dimensions = genericsettings.htmlDimsOfInterest_ls if genericsettings.isLargeScale else genericsettings.htmlDimsOfInterest - + if algorithmCount is AlgorithmCount.ONE: headerERT = 'Expected number of f-evaluations to reach target' f.write("

%s

\n" % headerERT) diff --git a/code-postprocessing/bbob_pproc/pplogloss.py b/code-postprocessing/bbob_pproc/pplogloss.py index bc49ec869..c087d7b7b 100644 --- a/code-postprocessing/bbob_pproc/pplogloss.py +++ b/code-postprocessing/bbob_pproc/pplogloss.py @@ -806,7 +806,7 @@ def generateFigure(dsList, CrE=0., isStoringXRange=True, outputdir='.', EVALS.extend(10.**(np.arange(1, np.ceil(1e-9 + np.log10(maxevals * 1./d))))*d) if not evalf: evalf = (np.log10(EVALS[0]/d), np.log10(EVALS[-1]/d)) - + data = generateData(dsdim, EVALS, CrE) ydata = [] for i in range(len(EVALS)): diff --git a/code-postprocessing/bbob_pproc/rungeneric1.py b/code-postprocessing/bbob_pproc/rungeneric1.py index 9e6eee65d..5bdd9ac5e 100644 --- a/code-postprocessing/bbob_pproc/rungeneric1.py +++ b/code-postprocessing/bbob_pproc/rungeneric1.py @@ -445,18 +445,22 @@ def main(argv=None): except KeyError: continue info = '%s' % ng - pplogloss.main(sliceDim, CrE, True, + try: # Wassim: warning for large-scale data, TODO: use different reference data or just not plot it + pplogloss.main(sliceDim, CrE, True, outputdir, info, verbose=genericsettings.verbose) - pplogloss.generateTable(sliceDim, CrE, + pplogloss.generateTable(sliceDim, CrE, outputdir, info, verbose=genericsettings.verbose) - for fGroup, sliceFuncGroup in sliceDim.dictByFuncGroup().iteritems(): - info = '%s' % fGroup - pplogloss.main(sliceFuncGroup, CrE, True, + for fGroup, sliceFuncGroup in sliceDim.dictByFuncGroup().iteritems(): + info = '%s' % fGroup + pplogloss.main(sliceFuncGroup, CrE, True, outputdir, info, verbose=genericsettings.verbose) - pplogloss.evalfmax = None # Resetting the max #fevalsfactor + pplogloss.evalfmax = None # Resetting the max #fevalsfactor + except KeyError: + warnings.warn("bestAlg data not found, no pplogloss output") + print_done() From 2e2a484adccf2d8bf17e44dd17a58932fcd63ff5 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 19 Feb 2016 17:14:27 +0100 Subject: [PATCH 056/446] the pproc no longer crashes when a dimesion provided for the logloss is not in bestAlg2009. Shows a warning and skips the logloss tables and plots for said dimension instead --- .../bbob_pproc/genericsettings.py | 2 +- code-postprocessing/bbob_pproc/ppfig.py | 2 +- code-postprocessing/bbob_pproc/pplogloss.py | 2 +- code-postprocessing/bbob_pproc/rungeneric1.py | 16 ++++++++++------ 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 318f0faa2..b5be16fb0 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -44,7 +44,7 @@ #tabValsOfInterest = (10, 1.0, 1e-1, 1e-3, 1e-5, 1.0e-8) rldDimsOfInterest = (5, 20) -rldDimsOfInterest = [40] # Wassim: for large scale TODO: use it by generating new large-scale reference data +rldDimsOfInterest = [40, 80] # Wassim: for large scale TODO: use it by generating new large-scale reference data figValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # this is a bad name that should improve, which fig, what vals??? # figValsOfInterest = (10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8) #in/outcomment if desired ##Put backward to have the legend in the same order as the lines. diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 08492bd31..acde4828d 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -189,7 +189,7 @@ def save_single_functions_html(filename, bestAlgExists = not isBiobjective dimensions = genericsettings.htmlDimsOfInterest_ls if genericsettings.isLargeScale else genericsettings.htmlDimsOfInterest - + if algorithmCount is AlgorithmCount.ONE: headerERT = 'Expected number of f-evaluations to reach target' f.write("

%s

\n" % headerERT) diff --git a/code-postprocessing/bbob_pproc/pplogloss.py b/code-postprocessing/bbob_pproc/pplogloss.py index bc49ec869..c087d7b7b 100644 --- a/code-postprocessing/bbob_pproc/pplogloss.py +++ b/code-postprocessing/bbob_pproc/pplogloss.py @@ -806,7 +806,7 @@ def generateFigure(dsList, CrE=0., isStoringXRange=True, outputdir='.', EVALS.extend(10.**(np.arange(1, np.ceil(1e-9 + np.log10(maxevals * 1./d))))*d) if not evalf: evalf = (np.log10(EVALS[0]/d), np.log10(EVALS[-1]/d)) - + data = generateData(dsdim, EVALS, CrE) ydata = [] for i in range(len(EVALS)): diff --git a/code-postprocessing/bbob_pproc/rungeneric1.py b/code-postprocessing/bbob_pproc/rungeneric1.py index 9e6eee65d..5bdd9ac5e 100644 --- a/code-postprocessing/bbob_pproc/rungeneric1.py +++ b/code-postprocessing/bbob_pproc/rungeneric1.py @@ -445,18 +445,22 @@ def main(argv=None): except KeyError: continue info = '%s' % ng - pplogloss.main(sliceDim, CrE, True, + try: # Wassim: warning for large-scale data, TODO: use different reference data or just not plot it + pplogloss.main(sliceDim, CrE, True, outputdir, info, verbose=genericsettings.verbose) - pplogloss.generateTable(sliceDim, CrE, + pplogloss.generateTable(sliceDim, CrE, outputdir, info, verbose=genericsettings.verbose) - for fGroup, sliceFuncGroup in sliceDim.dictByFuncGroup().iteritems(): - info = '%s' % fGroup - pplogloss.main(sliceFuncGroup, CrE, True, + for fGroup, sliceFuncGroup in sliceDim.dictByFuncGroup().iteritems(): + info = '%s' % fGroup + pplogloss.main(sliceFuncGroup, CrE, True, outputdir, info, verbose=genericsettings.verbose) - pplogloss.evalfmax = None # Resetting the max #fevalsfactor + pplogloss.evalfmax = None # Resetting the max #fevalsfactor + except KeyError: + warnings.warn("bestAlg data not found, no pplogloss output") + print_done() From 821e1fa51652035210571200d51928cec7b72e9d Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 22 Feb 2016 11:18:07 +0100 Subject: [PATCH 057/446] Update file f_sharp_ridge for large scale --- code-experiments/src/f_sharp_ridge.c | 25 ++++++++++++++----------- code-experiments/src/suite_largescale.c | 3 ++- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index 35d2a3870..25b02d391 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -12,6 +12,7 @@ #include "transform_obj_shift.c" #include "transform_vars_affine.c" #include "transform_vars_shift.c" +#include "transform_vars_conditioning.c" /** * @brief Implements the sharp ridge function without connections to any COCO structures. @@ -112,11 +113,11 @@ static coco_problem_t *f_sharp_ridge_bbob_problem_allocate(const size_t function * @brief Creates the BBOB sharp ridge problem in large dimension. */ static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { double *xopt, fopt; coco_problem_t *problem = NULL; double **B1; @@ -144,16 +145,17 @@ static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const s bbob2009_compute_xopt(xopt, rseed, dimension); B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B1_copy = (const double *const *)B1; /*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B2_copy = (const double *const *)B2; /*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); problem = f_sharp_ridge_allocate(dimension); @@ -162,15 +164,16 @@ static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const s problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_conditioning(problem, 10.0); problem = transform_vars_permutation(problem, P22, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block"); /*TODO: no large scale prefix*/ + coco_problem_set_type(problem, "large_scale_block_rotated"); /*TODO: no large scale prefix*/ coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index f72806db2..ab1d82ab9 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -9,6 +9,7 @@ #include "f_ellipsoid.c" #include "f_discus_generalized.c" #include "f_bent_cigar_generalized.c" +#include "f_sharp_ridge.c" #include "f_different_powers.c" static coco_suite_t *coco_suite_allocate(const char *suite_name, @@ -82,7 +83,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 13) { - problem = f_sharp_ridge_bbob_problem_allocate(function, dimension, instance, rseed, + problem = f_sharp_ridge_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 14) { problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, From 0c8611dc159f01859483061498e4cb0dd3dc1fc3 Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 22 Feb 2016 11:18:07 +0100 Subject: [PATCH 058/446] Update file f_sharp_ridge for large scale --- code-experiments/src/f_sharp_ridge.c | 25 ++++++++++++++----------- code-experiments/src/suite_largescale.c | 3 ++- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index 35d2a3870..25b02d391 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -12,6 +12,7 @@ #include "transform_obj_shift.c" #include "transform_vars_affine.c" #include "transform_vars_shift.c" +#include "transform_vars_conditioning.c" /** * @brief Implements the sharp ridge function without connections to any COCO structures. @@ -112,11 +113,11 @@ static coco_problem_t *f_sharp_ridge_bbob_problem_allocate(const size_t function * @brief Creates the BBOB sharp ridge problem in large dimension. */ static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { double *xopt, fopt; coco_problem_t *problem = NULL; double **B1; @@ -144,16 +145,17 @@ static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const s bbob2009_compute_xopt(xopt, rseed, dimension); B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B1_copy = (const double *const *)B1; /*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B2_copy = (const double *const *)B2; /*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); problem = f_sharp_ridge_allocate(dimension); @@ -162,15 +164,16 @@ static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const s problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_conditioning(problem, 10.0); problem = transform_vars_permutation(problem, P22, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block"); /*TODO: no large scale prefix*/ + coco_problem_set_type(problem, "large_scale_block_rotated"); /*TODO: no large scale prefix*/ coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index f72806db2..ab1d82ab9 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -9,6 +9,7 @@ #include "f_ellipsoid.c" #include "f_discus_generalized.c" #include "f_bent_cigar_generalized.c" +#include "f_sharp_ridge.c" #include "f_different_powers.c" static coco_suite_t *coco_suite_allocate(const char *suite_name, @@ -82,7 +83,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 13) { - problem = f_sharp_ridge_bbob_problem_allocate(function, dimension, instance, rseed, + problem = f_sharp_ridge_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 14) { problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, From a1665e1a70e03930ade35e57fbf4ce902e3f67e9 Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 22 Feb 2016 15:35:39 +0100 Subject: [PATCH 059/446] Minor --- code-experiments/src/f_rosenbrock.c | 75 ++++++++++++++++++++++++++++ code-experiments/src/f_sharp_ridge.c | 4 ++ 2 files changed, 79 insertions(+) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index c67b3299e..e0a15e052 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -13,6 +13,10 @@ #include "transform_vars_affine.c" #include "transform_obj_shift.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" + /** * @brief Implements the Rosenbrock function without connections to any COCO structures. */ @@ -87,6 +91,12 @@ static coco_problem_t *f_rosenbrock_bbob_problem_allocate(const size_t function, problem = transform_vars_shift(problem, minus_one, 0); problem = transform_vars_scale(problem, factor); problem = transform_vars_shift(problem, xopt, 0); + + /*if large scale test-bed, normalize by dim*/ + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + problem = transform_obj_norm_by_dim(problem); + } + problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); @@ -144,3 +154,68 @@ static coco_problem_t *f_rosenbrock_rotated_bbob_problem_allocate(const size_t f coco_free_memory(b); return problem; } + +/** + * @brief Creates the BBOB rotated Rosenbrock problem for large scale. + */ +static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + + double fopt; + coco_problem_t *problem = NULL; + double *minus_half, factor; + size_t i; + + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + fopt = bbob2009_compute_fopt(function, instance); + factor = coco_double_max(1.0, sqrt((double) dimension) / 8.0); + minus_half = coco_allocate_vector(dimension); + for (i = 0; i < dimension; ++i) { + minus_half[i] = -0.5; + } + + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + problem = f_rosenbrock_allocate(dimension); + problem = transform_vars_shift(problem, minus_half, 0); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_memory(minus_half); + coco_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + return problem; +} + + diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index 25b02d391..7228cb4de 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -14,6 +14,10 @@ #include "transform_vars_shift.c" #include "transform_vars_conditioning.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" + /** * @brief Implements the sharp ridge function without connections to any COCO structures. */ From 0ec69396cdf544ba741693affd21b68d8e00699b Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 22 Feb 2016 15:35:39 +0100 Subject: [PATCH 060/446] Minor --- code-experiments/src/f_rosenbrock.c | 75 ++++++++++++++++++++++++++++ code-experiments/src/f_sharp_ridge.c | 4 ++ 2 files changed, 79 insertions(+) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index c67b3299e..e0a15e052 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -13,6 +13,10 @@ #include "transform_vars_affine.c" #include "transform_obj_shift.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" + /** * @brief Implements the Rosenbrock function without connections to any COCO structures. */ @@ -87,6 +91,12 @@ static coco_problem_t *f_rosenbrock_bbob_problem_allocate(const size_t function, problem = transform_vars_shift(problem, minus_one, 0); problem = transform_vars_scale(problem, factor); problem = transform_vars_shift(problem, xopt, 0); + + /*if large scale test-bed, normalize by dim*/ + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + problem = transform_obj_norm_by_dim(problem); + } + problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); @@ -144,3 +154,68 @@ static coco_problem_t *f_rosenbrock_rotated_bbob_problem_allocate(const size_t f coco_free_memory(b); return problem; } + +/** + * @brief Creates the BBOB rotated Rosenbrock problem for large scale. + */ +static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + + double fopt; + coco_problem_t *problem = NULL; + double *minus_half, factor; + size_t i; + + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + fopt = bbob2009_compute_fopt(function, instance); + factor = coco_double_max(1.0, sqrt((double) dimension) / 8.0); + minus_half = coco_allocate_vector(dimension); + for (i = 0; i < dimension; ++i) { + minus_half[i] = -0.5; + } + + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + problem = f_rosenbrock_allocate(dimension); + problem = transform_vars_shift(problem, minus_half, 0); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_memory(minus_half); + coco_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + return problem; +} + + diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index 25b02d391..7228cb4de 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -14,6 +14,10 @@ #include "transform_vars_shift.c" #include "transform_vars_conditioning.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" + /** * @brief Implements the sharp ridge function without connections to any COCO structures. */ From 98b5df0e1a93a9009de29202967b7811ce581222 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 22 Feb 2016 16:00:24 +0100 Subject: [PATCH 061/446] large-scale suite: added attractive sector function --- code-experiments/src/f_attractive_sector.c | 85 ++++++++++++++++++++++ code-experiments/src/f_ellipsoid.c | 2 +- code-experiments/src/suite_largescale.c | 7 +- 3 files changed, 90 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/f_attractive_sector.c b/code-experiments/src/f_attractive_sector.c index c229a18b7..ec9519555 100644 --- a/code-experiments/src/f_attractive_sector.c +++ b/code-experiments/src/f_attractive_sector.c @@ -15,6 +15,11 @@ #include "transform_vars_affine.c" #include "transform_vars_shift.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" +#include "transform_vars_conditioning.c" + /** * @brief Data type for the attractive sector problem. */ @@ -136,3 +141,83 @@ static coco_problem_t *f_attractive_sector_bbob_problem_allocate(const size_t fu coco_free_memory(xopt); return problem; } + + +static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1, **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11, *P12, *P21, *P22; + size_t *block_sizes1, *block_sizes2;/*each of R and Q migh have its own parameter values*/ + size_t nb_blocks1, nb_blocks2; + size_t swap_range1, swap_range2; + size_t nb_swaps1, nb_swaps2; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale");/*for potential future compatibility*/ + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B2_copy = (const double *const *)B2; + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); + + + P11 = coco_allocate_vector_size_t(dimension); + P12 = coco_allocate_vector_size_t(dimension); + P21 = coco_allocate_vector_size_t(dimension); + P22 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); + + + problem = f_attractive_sector_allocate(dimension, xopt); + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_oscillate(problem); + problem = transform_obj_power(problem, 0.9); + problem = transform_obj_shift(problem, fopt); + + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_conditioning(problem, 10.0);/*uses directly the tranformation instead of manually computed the product matrix*/ + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P12); + coco_free_memory(P21); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; +} diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index d2f94bd30..0dba1418d 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -172,7 +172,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_oscillate(problem); problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); - problem = transform_vars_permutation(problem, P1, dimension);/*Consider replacing P21 and P12 by a single permutation P3*/ + problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 12236df4a..7f47c4ad4 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -13,6 +13,7 @@ #include "f_rastrigin.c" #include "f_bueche_rastrigin.c" #include "f_linear_slope.c" +#include "f_attractive_sector.c" static coco_suite_t *coco_suite_allocate(const char *suite_name, const size_t number_of_functions, @@ -47,7 +48,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, /*const long rseed_17 = (long) (17 + 10000 * instance);*/ /*TODO: finish implementing the large scale test-suite functions. - current list: 1-5,10-12,14*/ + current list: 1-6,10-12,14*/ if (function == 1) { problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); @@ -64,8 +65,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_linear_slope_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 6) { - problem = NULL; /*f_attractive_sector_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_attractive_sector_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 7) { problem = NULL; /*f_step_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ From 2c6194126034a48575d1c68a521b43cdae5bd387 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 22 Feb 2016 16:00:24 +0100 Subject: [PATCH 062/446] large-scale suite: added attractive sector function --- code-experiments/src/f_attractive_sector.c | 85 ++++++++++++++++++++++ code-experiments/src/f_ellipsoid.c | 2 +- code-experiments/src/suite_largescale.c | 7 +- 3 files changed, 90 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/f_attractive_sector.c b/code-experiments/src/f_attractive_sector.c index c229a18b7..ec9519555 100644 --- a/code-experiments/src/f_attractive_sector.c +++ b/code-experiments/src/f_attractive_sector.c @@ -15,6 +15,11 @@ #include "transform_vars_affine.c" #include "transform_vars_shift.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" +#include "transform_vars_conditioning.c" + /** * @brief Data type for the attractive sector problem. */ @@ -136,3 +141,83 @@ static coco_problem_t *f_attractive_sector_bbob_problem_allocate(const size_t fu coco_free_memory(xopt); return problem; } + + +static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1, **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11, *P12, *P21, *P22; + size_t *block_sizes1, *block_sizes2;/*each of R and Q migh have its own parameter values*/ + size_t nb_blocks1, nb_blocks2; + size_t swap_range1, swap_range2; + size_t nb_swaps1, nb_swaps2; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale");/*for potential future compatibility*/ + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B2_copy = (const double *const *)B2; + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); + + + P11 = coco_allocate_vector_size_t(dimension); + P12 = coco_allocate_vector_size_t(dimension); + P21 = coco_allocate_vector_size_t(dimension); + P22 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); + + + problem = f_attractive_sector_allocate(dimension, xopt); + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_oscillate(problem); + problem = transform_obj_power(problem, 0.9); + problem = transform_obj_shift(problem, fopt); + + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_conditioning(problem, 10.0);/*uses directly the tranformation instead of manually computed the product matrix*/ + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P12); + coco_free_memory(P21); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; +} diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index d2f94bd30..0dba1418d 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -172,7 +172,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_oscillate(problem); problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); - problem = transform_vars_permutation(problem, P1, dimension);/*Consider replacing P21 and P12 by a single permutation P3*/ + problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 12236df4a..7f47c4ad4 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -13,6 +13,7 @@ #include "f_rastrigin.c" #include "f_bueche_rastrigin.c" #include "f_linear_slope.c" +#include "f_attractive_sector.c" static coco_suite_t *coco_suite_allocate(const char *suite_name, const size_t number_of_functions, @@ -47,7 +48,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, /*const long rseed_17 = (long) (17 + 10000 * instance);*/ /*TODO: finish implementing the large scale test-suite functions. - current list: 1-5,10-12,14*/ + current list: 1-6,10-12,14*/ if (function == 1) { problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); @@ -64,8 +65,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_linear_slope_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 6) { - problem = NULL; /*f_attractive_sector_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_attractive_sector_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 7) { problem = NULL; /*f_step_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ From ecb60008a586d71b2285b2d133214c128ac6464e Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 22 Feb 2016 16:25:35 +0100 Subject: [PATCH 063/446] large-scale suite: added uncommented use of f8 and f9 in the suite --- code-experiments/src/f_ellipsoid.c | 3 +-- code-experiments/src/suite_largescale.c | 10 +++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 0dba1418d..b14353e36 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -166,8 +166,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - + problem = f_ellipsoid_allocate(dimension); problem = transform_vars_oscillate(problem); problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index bf3aad8ee..5cabdf24d 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -49,7 +49,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, /*const long rseed_17 = (long) (17 + 10000 * instance);*/ /*TODO: finish implementing the large scale test-suite functions. - current list: 1-6,10-12,14*/ + current list: 1-6,8-14*/ if (function == 1) { problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); @@ -72,11 +72,11 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = NULL; /*f_step_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ } else if (function == 8) { - problem = NULL; /*f_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 9) { - problem = NULL; /*f_rosenbrock_rotated_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_rosenbrock_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 10) { problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); From 9b6b1747e21aad7cb656ab65776d5bc033ea26b0 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 22 Feb 2016 16:25:35 +0100 Subject: [PATCH 064/446] large-scale suite: added uncommented use of f8 and f9 in the suite --- code-experiments/src/f_ellipsoid.c | 3 +-- code-experiments/src/suite_largescale.c | 10 +++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 0dba1418d..b14353e36 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -166,8 +166,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - + problem = f_ellipsoid_allocate(dimension); problem = transform_vars_oscillate(problem); problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index bf3aad8ee..5cabdf24d 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -49,7 +49,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, /*const long rseed_17 = (long) (17 + 10000 * instance);*/ /*TODO: finish implementing the large scale test-suite functions. - current list: 1-6,10-12,14*/ + current list: 1-6,8-14*/ if (function == 1) { problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); @@ -72,11 +72,11 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = NULL; /*f_step_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ } else if (function == 8) { - problem = NULL; /*f_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 9) { - problem = NULL; /*f_rosenbrock_rotated_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_rosenbrock_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 10) { problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); From 3bbab988f32dc2c86eeb765719179beabc27e917 Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 22 Feb 2016 16:33:37 +0100 Subject: [PATCH 065/446] applying problem = transform_vars_scale(problem, factor); --- code-experiments/src/f_rastrigin.c | 141 +++++++++++++++--------- code-experiments/src/f_rosenbrock.c | 1 + code-experiments/src/suite_largescale.c | 8 +- 3 files changed, 93 insertions(+), 57 deletions(-) diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index e7337bf15..cf10e82a5 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -98,58 +98,93 @@ static coco_problem_t *f_rastrigin_bbob_problem_allocate(const size_t function, /** * @brief Creates the BBOB rotated Rastrigin problem. */ -static coco_problem_t *f_rastrigin_rotated_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - double *xopt, fopt; - coco_problem_t *problem = NULL; - size_t i, j, k; - double *M = coco_allocate_vector(dimension * dimension); - double *b = coco_allocate_vector(dimension); - double *current_row, **rot1, **rot2; - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - rot1 = bbob2009_allocate_matrix(dimension, dimension); - rot2 = bbob2009_allocate_matrix(dimension, dimension); - bbob2009_compute_rotation(rot1, rseed + 1000000, dimension); - bbob2009_compute_rotation(rot2, rseed, dimension); - for (i = 0; i < dimension; ++i) { - b[i] = 0.0; - current_row = M + i * dimension; - for (j = 0; j < dimension; ++j) { - current_row[j] = 0.0; - for (k = 0; k < dimension; ++k) { - double exponent = 1.0 * (int) k / ((double) (long) dimension - 1.0); - current_row[j] += rot1[i][k] * pow(sqrt(10), exponent) * rot2[k][j]; - } - } - } - - problem = f_rastrigin_allocate(dimension); - problem = transform_obj_shift(problem, fopt); - problem = transform_vars_affine(problem, M, b, dimension); - problem = transform_vars_asymmetric(problem, 0.2); - problem = transform_vars_oscillate(problem); - bbob2009_copy_rotation_matrix(rot1, M, b, dimension); - problem = transform_vars_affine(problem, M, b, dimension); - problem = transform_vars_shift(problem, xopt, 0); - - bbob2009_free_matrix(rot1, dimension); - bbob2009_free_matrix(rot2, dimension); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "4-multi-modal"); - - coco_free_memory(M); - coco_free_memory(b); - coco_free_memory(xopt); - return problem; +static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + size_t i, j, k; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1; + size_t *block_sizes2; + size_t nb_blocks1; + size_t nb_blocks2; + size_t swap_range; + size_t nb_swaps; + + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); + + problem = f_rastrigin_allocate(dimension); + // R operator + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + // Lambda operator + problem = transform_vars_conditioning(problem, 10.0); + // Q operator + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + // T_asy operator + problem = transform_vars_asymmetric(problem, 0.2); + // T_osz operator + problem = transform_vars_oscillate(problem); + // R operator + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; } +f_rosenbrock_permblockdiag_bbob_problem_allocate + diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index e0a15e052..94c623e2c 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -199,6 +199,7 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si problem = f_rosenbrock_allocate(dimension); problem = transform_vars_shift(problem, minus_half, 0); + problem = transform_vars_scale(problem, factor); problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 8802b6bf5..789f292c6 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -71,11 +71,11 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = NULL; /*f_step_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ } else if (function == 8) { - problem = NULL; /*f_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 9) { - problem = NULL; /*f_rosenbrock_rotated_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_rosenbrock_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 10) { problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); From 086d60161dd4d949df5763e4fd27aa7d1c4f5a73 Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 22 Feb 2016 16:33:37 +0100 Subject: [PATCH 066/446] applying problem = transform_vars_scale(problem, factor); --- code-experiments/src/f_rastrigin.c | 141 +++++++++++++++--------- code-experiments/src/f_rosenbrock.c | 1 + code-experiments/src/suite_largescale.c | 8 +- 3 files changed, 93 insertions(+), 57 deletions(-) diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index e7337bf15..cf10e82a5 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -98,58 +98,93 @@ static coco_problem_t *f_rastrigin_bbob_problem_allocate(const size_t function, /** * @brief Creates the BBOB rotated Rastrigin problem. */ -static coco_problem_t *f_rastrigin_rotated_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - double *xopt, fopt; - coco_problem_t *problem = NULL; - size_t i, j, k; - double *M = coco_allocate_vector(dimension * dimension); - double *b = coco_allocate_vector(dimension); - double *current_row, **rot1, **rot2; - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - rot1 = bbob2009_allocate_matrix(dimension, dimension); - rot2 = bbob2009_allocate_matrix(dimension, dimension); - bbob2009_compute_rotation(rot1, rseed + 1000000, dimension); - bbob2009_compute_rotation(rot2, rseed, dimension); - for (i = 0; i < dimension; ++i) { - b[i] = 0.0; - current_row = M + i * dimension; - for (j = 0; j < dimension; ++j) { - current_row[j] = 0.0; - for (k = 0; k < dimension; ++k) { - double exponent = 1.0 * (int) k / ((double) (long) dimension - 1.0); - current_row[j] += rot1[i][k] * pow(sqrt(10), exponent) * rot2[k][j]; - } - } - } - - problem = f_rastrigin_allocate(dimension); - problem = transform_obj_shift(problem, fopt); - problem = transform_vars_affine(problem, M, b, dimension); - problem = transform_vars_asymmetric(problem, 0.2); - problem = transform_vars_oscillate(problem); - bbob2009_copy_rotation_matrix(rot1, M, b, dimension); - problem = transform_vars_affine(problem, M, b, dimension); - problem = transform_vars_shift(problem, xopt, 0); - - bbob2009_free_matrix(rot1, dimension); - bbob2009_free_matrix(rot2, dimension); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "4-multi-modal"); - - coco_free_memory(M); - coco_free_memory(b); - coco_free_memory(xopt); - return problem; +static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + size_t i, j, k; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1; + size_t *block_sizes2; + size_t nb_blocks1; + size_t nb_blocks2; + size_t swap_range; + size_t nb_swaps; + + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); + + problem = f_rastrigin_allocate(dimension); + // R operator + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + // Lambda operator + problem = transform_vars_conditioning(problem, 10.0); + // Q operator + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + // T_asy operator + problem = transform_vars_asymmetric(problem, 0.2); + // T_osz operator + problem = transform_vars_oscillate(problem); + // R operator + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; } +f_rosenbrock_permblockdiag_bbob_problem_allocate + diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index e0a15e052..94c623e2c 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -199,6 +199,7 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si problem = f_rosenbrock_allocate(dimension); problem = transform_vars_shift(problem, minus_half, 0); + problem = transform_vars_scale(problem, factor); problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 8802b6bf5..789f292c6 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -71,11 +71,11 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = NULL; /*f_step_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ } else if (function == 8) { - problem = NULL; /*f_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 9) { - problem = NULL; /*f_rosenbrock_rotated_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_rosenbrock_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 10) { problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); From 3f075029afa85b73de3956c32f6f9a479ce8ca2b Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 22 Feb 2016 16:59:28 +0100 Subject: [PATCH 067/446] Set up f_rastrigin_permblockdiag_bbob_problem_allocate --- code-experiments/src/f_rastrigin.c | 79 +++++++++++++++++++++---- code-experiments/src/suite_largescale.c | 4 +- 2 files changed, 69 insertions(+), 14 deletions(-) diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index cf10e82a5..da69bc846 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -17,6 +17,10 @@ #include "transform_obj_shift.c" #include "transform_vars_affine.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" + /** * @brief Implements the Rastrigin function without connections to any COCO structures. */ @@ -98,6 +102,64 @@ static coco_problem_t *f_rastrigin_bbob_problem_allocate(const size_t function, /** * @brief Creates the BBOB rotated Rastrigin problem. */ +static coco_problem_t *f_rastrigin_rotated_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + size_t i, j, k; + double *M = coco_allocate_vector(dimension * dimension); + double *b = coco_allocate_vector(dimension); + double *current_row, **rot1, **rot2; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + rot1 = bbob2009_allocate_matrix(dimension, dimension); + rot2 = bbob2009_allocate_matrix(dimension, dimension); + bbob2009_compute_rotation(rot1, rseed + 1000000, dimension); + bbob2009_compute_rotation(rot2, rseed, dimension); + for (i = 0; i < dimension; ++i) { + b[i] = 0.0; + current_row = M + i * dimension; + for (j = 0; j < dimension; ++j) { + current_row[j] = 0.0; + for (k = 0; k < dimension; ++k) { + double exponent = 1.0 * (int) k / ((double) (long) dimension - 1.0); + current_row[j] += rot1[i][k] * pow(sqrt(10), exponent) * rot2[k][j]; + } + } + } + + problem = f_rastrigin_allocate(dimension); + problem = transform_obj_shift(problem, fopt); + problem = transform_vars_affine(problem, M, b, dimension); + problem = transform_vars_asymmetric(problem, 0.2); + problem = transform_vars_oscillate(problem); + bbob2009_copy_rotation_matrix(rot1, M, b, dimension); + problem = transform_vars_affine(problem, M, b, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + bbob2009_free_matrix(rot1, dimension); + bbob2009_free_matrix(rot2, dimension); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "4-multi-modal"); + + coco_free_memory(M); + coco_free_memory(b); + coco_free_memory(xopt); + return problem; +} + +/** + * @brief Creates the BBOB rotated Rastrigin problem for large scale. + */ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, @@ -106,7 +168,6 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz const char *problem_name_template) { double *xopt, fopt; coco_problem_t *problem = NULL; - size_t i, j, k; double **B1; double **B2; const double *const *B1_copy; @@ -146,27 +207,24 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); problem = f_rastrigin_allocate(dimension); - // R operator problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P12, dimension); - // Lambda operator + problem = transform_vars_conditioning(problem, 10.0); - // Q operator + problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P11, dimension); - // T_asy operator + problem = transform_vars_asymmetric(problem, 0.2); - // T_osz operator + problem = transform_vars_oscillate(problem); - // R operator problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P12, dimension); - + problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); @@ -185,6 +243,3 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz coco_free_memory(xopt); return problem; } - -f_rosenbrock_permblockdiag_bbob_problem_allocate - diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 789f292c6..cb79fae78 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -92,8 +92,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 15) { - problem = NULL; /*f_rastrigin_rotated_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_rastrigin_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 16) { problem = NULL; /*f_weierstrass_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ From 7d3a9db7c379156329764f8ccb7cfdd52b462ec9 Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 22 Feb 2016 16:59:28 +0100 Subject: [PATCH 068/446] Set up f_rastrigin_permblockdiag_bbob_problem_allocate --- code-experiments/src/f_rastrigin.c | 79 +++++++++++++++++++++---- code-experiments/src/suite_largescale.c | 4 +- 2 files changed, 69 insertions(+), 14 deletions(-) diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index cf10e82a5..da69bc846 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -17,6 +17,10 @@ #include "transform_obj_shift.c" #include "transform_vars_affine.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" + /** * @brief Implements the Rastrigin function without connections to any COCO structures. */ @@ -98,6 +102,64 @@ static coco_problem_t *f_rastrigin_bbob_problem_allocate(const size_t function, /** * @brief Creates the BBOB rotated Rastrigin problem. */ +static coco_problem_t *f_rastrigin_rotated_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + size_t i, j, k; + double *M = coco_allocate_vector(dimension * dimension); + double *b = coco_allocate_vector(dimension); + double *current_row, **rot1, **rot2; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + rot1 = bbob2009_allocate_matrix(dimension, dimension); + rot2 = bbob2009_allocate_matrix(dimension, dimension); + bbob2009_compute_rotation(rot1, rseed + 1000000, dimension); + bbob2009_compute_rotation(rot2, rseed, dimension); + for (i = 0; i < dimension; ++i) { + b[i] = 0.0; + current_row = M + i * dimension; + for (j = 0; j < dimension; ++j) { + current_row[j] = 0.0; + for (k = 0; k < dimension; ++k) { + double exponent = 1.0 * (int) k / ((double) (long) dimension - 1.0); + current_row[j] += rot1[i][k] * pow(sqrt(10), exponent) * rot2[k][j]; + } + } + } + + problem = f_rastrigin_allocate(dimension); + problem = transform_obj_shift(problem, fopt); + problem = transform_vars_affine(problem, M, b, dimension); + problem = transform_vars_asymmetric(problem, 0.2); + problem = transform_vars_oscillate(problem); + bbob2009_copy_rotation_matrix(rot1, M, b, dimension); + problem = transform_vars_affine(problem, M, b, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + bbob2009_free_matrix(rot1, dimension); + bbob2009_free_matrix(rot2, dimension); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "4-multi-modal"); + + coco_free_memory(M); + coco_free_memory(b); + coco_free_memory(xopt); + return problem; +} + +/** + * @brief Creates the BBOB rotated Rastrigin problem for large scale. + */ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, @@ -106,7 +168,6 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz const char *problem_name_template) { double *xopt, fopt; coco_problem_t *problem = NULL; - size_t i, j, k; double **B1; double **B2; const double *const *B1_copy; @@ -146,27 +207,24 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); problem = f_rastrigin_allocate(dimension); - // R operator problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P12, dimension); - // Lambda operator + problem = transform_vars_conditioning(problem, 10.0); - // Q operator + problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P11, dimension); - // T_asy operator + problem = transform_vars_asymmetric(problem, 0.2); - // T_osz operator + problem = transform_vars_oscillate(problem); - // R operator problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P12, dimension); - + problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); @@ -185,6 +243,3 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz coco_free_memory(xopt); return problem; } - -f_rosenbrock_permblockdiag_bbob_problem_allocate - diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 789f292c6..cb79fae78 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -92,8 +92,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 15) { - problem = NULL; /*f_rastrigin_rotated_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_rastrigin_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 16) { problem = NULL; /*f_weierstrass_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ From 95a651cd16b54511f3e082b9a20b51c6a62e194b Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 23 Feb 2016 01:09:42 +0100 Subject: [PATCH 069/446] large-scale suite: forgotten factor application in rosenbrock added --- code-experiments/src/f_rosenbrock.c | 1 + 1 file changed, 1 insertion(+) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index e0a15e052..b20c0c7b9 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -204,6 +204,7 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si problem = transform_vars_permutation(problem, P1, dimension); problem = transform_obj_norm_by_dim(problem); + problem = transform_vars_scale(problem, factor); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); From 7b884d0d3e67a096446375dfe5adb5e43f1d1f0e Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 23 Feb 2016 01:09:42 +0100 Subject: [PATCH 070/446] large-scale suite: forgotten factor application in rosenbrock added --- code-experiments/src/f_rosenbrock.c | 1 + 1 file changed, 1 insertion(+) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index e0a15e052..b20c0c7b9 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -204,6 +204,7 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si problem = transform_vars_permutation(problem, P1, dimension); problem = transform_obj_norm_by_dim(problem); + problem = transform_vars_scale(problem, factor); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); From dbaadc20472df400904eaf8e5a5b5bd5b2300cb1 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 23 Feb 2016 14:00:09 +0100 Subject: [PATCH 071/446] @brief documentation of new large scale functions --- code-experiments/src/f_bent_cigar_generalized.c | 2 +- code-experiments/src/f_different_powers.c | 4 +++- code-experiments/src/f_discus_generalized.c | 2 +- code-experiments/src/f_ellipsoid.c | 4 +++- code-experiments/src/f_rosenbrock.c | 4 ++-- code-experiments/src/f_sharp_ridge.c | 2 +- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index fec243273..17cfdb2c6 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -69,7 +69,7 @@ static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_ /** - * @brief Creates the BBOB generalized bent cigar problem. + * @brief Creates the BBOB generalized permuted block-rotated bent cigar problem. */ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index f5fb4ac6b..fa7ede53a 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -99,7 +99,9 @@ static coco_problem_t *f_different_powers_bbob_problem_allocate(const size_t fun return problem; } - +/** + * @brief Creates the BBOB generalized permuted block-rotated different powers problem. + */ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c index 83af36632..bd99fba93 100644 --- a/code-experiments/src/f_discus_generalized.c +++ b/code-experiments/src/f_discus_generalized.c @@ -70,7 +70,7 @@ static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_vari /** - * @brief Creates the BBOB generalized discus problem. + * @brief Creates the BBOB generalized permuted block-rotated discus problem. */ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index b14353e36..99bb46980 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -134,7 +134,9 @@ static coco_problem_t *f_ellipsoid_rotated_bbob_problem_allocate(const size_t fu return problem; } - +/** + * @brief Creates the BBOB permuted block-rotated ellipsoid problem. + */ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index b20c0c7b9..42546eb45 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -156,7 +156,7 @@ static coco_problem_t *f_rosenbrock_rotated_bbob_problem_allocate(const size_t f } /** - * @brief Creates the BBOB rotated Rosenbrock problem for large scale. + * @brief Creates the BBOB permuted block-rotated Rosenbrock problem for large scale. */ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, @@ -199,12 +199,12 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si problem = f_rosenbrock_allocate(dimension); problem = transform_vars_shift(problem, minus_half, 0); + problem = transform_vars_scale(problem, factor); problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); problem = transform_obj_norm_by_dim(problem); - problem = transform_vars_scale(problem, factor); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index 7228cb4de..9f592cc7a 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -114,7 +114,7 @@ static coco_problem_t *f_sharp_ridge_bbob_problem_allocate(const size_t function } /** - * @brief Creates the BBOB sharp ridge problem in large dimension. + * @brief Creates the BBOB permuted block-rotated sharp ridge problem */ static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, From c92e1714270329cad98f9e4a3e4c399ab9306dd2 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 23 Feb 2016 14:00:09 +0100 Subject: [PATCH 072/446] @brief documentation of new large scale functions --- code-experiments/src/f_bent_cigar_generalized.c | 2 +- code-experiments/src/f_different_powers.c | 4 +++- code-experiments/src/f_discus_generalized.c | 2 +- code-experiments/src/f_ellipsoid.c | 4 +++- code-experiments/src/f_rosenbrock.c | 4 ++-- code-experiments/src/f_sharp_ridge.c | 2 +- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index fec243273..17cfdb2c6 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -69,7 +69,7 @@ static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_ /** - * @brief Creates the BBOB generalized bent cigar problem. + * @brief Creates the BBOB generalized permuted block-rotated bent cigar problem. */ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index f5fb4ac6b..fa7ede53a 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -99,7 +99,9 @@ static coco_problem_t *f_different_powers_bbob_problem_allocate(const size_t fun return problem; } - +/** + * @brief Creates the BBOB generalized permuted block-rotated different powers problem. + */ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c index 83af36632..bd99fba93 100644 --- a/code-experiments/src/f_discus_generalized.c +++ b/code-experiments/src/f_discus_generalized.c @@ -70,7 +70,7 @@ static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_vari /** - * @brief Creates the BBOB generalized discus problem. + * @brief Creates the BBOB generalized permuted block-rotated discus problem. */ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index b14353e36..99bb46980 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -134,7 +134,9 @@ static coco_problem_t *f_ellipsoid_rotated_bbob_problem_allocate(const size_t fu return problem; } - +/** + * @brief Creates the BBOB permuted block-rotated ellipsoid problem. + */ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index b20c0c7b9..42546eb45 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -156,7 +156,7 @@ static coco_problem_t *f_rosenbrock_rotated_bbob_problem_allocate(const size_t f } /** - * @brief Creates the BBOB rotated Rosenbrock problem for large scale. + * @brief Creates the BBOB permuted block-rotated Rosenbrock problem for large scale. */ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, @@ -199,12 +199,12 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si problem = f_rosenbrock_allocate(dimension); problem = transform_vars_shift(problem, minus_half, 0); + problem = transform_vars_scale(problem, factor); problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); problem = transform_obj_norm_by_dim(problem); - problem = transform_vars_scale(problem, factor); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index 7228cb4de..9f592cc7a 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -114,7 +114,7 @@ static coco_problem_t *f_sharp_ridge_bbob_problem_allocate(const size_t function } /** - * @brief Creates the BBOB sharp ridge problem in large dimension. + * @brief Creates the BBOB permuted block-rotated sharp ridge problem */ static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, From 76d361a5bcb6fe28b4b41312fded99f1cf508a90 Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 23 Feb 2016 15:20:03 +0100 Subject: [PATCH 073/446] Implementation of the Weierstrass function in large dimension --- code-experiments/src/f_weierstrass.c | 93 +++++++++++++++++++++++++ code-experiments/src/suite_largescale.c | 4 +- 2 files changed, 95 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index 64021d1d9..b077d2228 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -16,6 +16,10 @@ #include "transform_vars_oscillate.c" #include "transform_vars_shift.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" + /** @brief Number of summands in the Weierstrass problem. */ #define F_WEIERSTRASS_SUMMANDS 12 @@ -148,4 +152,93 @@ static coco_problem_t *f_weierstrass_bbob_problem_allocate(const size_t function return problem; } +/** + * @brief Creates the BBOB permuted block-rotated Weierstrass problem. + */ +static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1; + size_t *block_sizes2; + size_t nb_blocks1; + size_t nb_blocks2; + size_t swap_range; + size_t nb_swaps; + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + const double condition = 100.0; + const double penalty_factor = 10.0 / (double) dimension; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); + + problem = f_weierstrass_allocate(dimension); + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + + problem = transform_vars_conditioning(problem, 1.0/condition); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + + problem = transform_vars_oscillate(problem); + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + + problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_penalize(problem, penalty_factor); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; +} + #undef F_WEIERSTRASS_SUMMANDS diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index cb79fae78..5f3a97b6a 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -95,8 +95,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_rastrigin_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 16) { - problem = NULL; /*f_weierstrass_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_weierstrass_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 17) { problem = NULL; /*f_schaffers_bbob_problem_allocate(function, dimension, instance, rseed, 10, problem_id_template, problem_name_template);*/ From 3c0bd095800267b9c2cec4e09b5d1b50b4e89ebb Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 23 Feb 2016 15:20:03 +0100 Subject: [PATCH 074/446] Implementation of the Weierstrass function in large dimension --- code-experiments/src/f_weierstrass.c | 93 +++++++++++++++++++++++++ code-experiments/src/suite_largescale.c | 4 +- 2 files changed, 95 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index 64021d1d9..b077d2228 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -16,6 +16,10 @@ #include "transform_vars_oscillate.c" #include "transform_vars_shift.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" + /** @brief Number of summands in the Weierstrass problem. */ #define F_WEIERSTRASS_SUMMANDS 12 @@ -148,4 +152,93 @@ static coco_problem_t *f_weierstrass_bbob_problem_allocate(const size_t function return problem; } +/** + * @brief Creates the BBOB permuted block-rotated Weierstrass problem. + */ +static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1; + size_t *block_sizes2; + size_t nb_blocks1; + size_t nb_blocks2; + size_t swap_range; + size_t nb_swaps; + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + const double condition = 100.0; + const double penalty_factor = 10.0 / (double) dimension; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); + + problem = f_weierstrass_allocate(dimension); + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + + problem = transform_vars_conditioning(problem, 1.0/condition); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + + problem = transform_vars_oscillate(problem); + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + + problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_penalize(problem, penalty_factor); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; +} + #undef F_WEIERSTRASS_SUMMANDS diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index cb79fae78..5f3a97b6a 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -95,8 +95,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_rastrigin_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 16) { - problem = NULL; /*f_weierstrass_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_weierstrass_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 17) { problem = NULL; /*f_schaffers_bbob_problem_allocate(function, dimension, instance, rseed, 10, problem_id_template, problem_name_template);*/ From ef0e3c04fe0c006b5c66d583aaee9e32d02379ee Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 23 Feb 2016 15:28:45 +0100 Subject: [PATCH 075/446] Add weierstrass function --- code-experiments/src/suite_largescale.c | 1 + 1 file changed, 1 insertion(+) diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 5f3a97b6a..90d7b8e52 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -12,6 +12,7 @@ #include "f_sharp_ridge.c" #include "f_different_powers.c" #include "f_rastrigin.c" +#include "f_weierstrass.c" #include "f_bueche_rastrigin.c" #include "f_linear_slope.c" From da1289ff6e4e811a6516e65b81a3d949115d24a8 Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 23 Feb 2016 15:28:45 +0100 Subject: [PATCH 076/446] Add weierstrass function --- code-experiments/src/suite_largescale.c | 1 + 1 file changed, 1 insertion(+) diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 5f3a97b6a..90d7b8e52 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -12,6 +12,7 @@ #include "f_sharp_ridge.c" #include "f_different_powers.c" #include "f_rastrigin.c" +#include "f_weierstrass.c" #include "f_bueche_rastrigin.c" #include "f_linear_slope.c" From 0605f1c089853e848a7318561152dda8f0d10096 Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 23 Feb 2016 16:21:33 +0100 Subject: [PATCH 077/446] Implementation of f_schaffers_permblockdiag_bbob_problem_allocate for large scale --- code-experiments/src/f_schaffers.c | 90 +++++++++++++++++++++++++ code-experiments/src/suite_largescale.c | 10 +-- 2 files changed, 95 insertions(+), 5 deletions(-) diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index 64eb65c04..4dd49bd20 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -17,6 +17,10 @@ #include "transform_vars_shift.c" #include "transform_obj_penalize.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" + /** * @brief Implements the Schaffer's F7 function without connections to any COCO structures. */ @@ -118,3 +122,89 @@ static coco_problem_t *f_schaffers_bbob_problem_allocate(const size_t function, coco_free_memory(xopt); return problem; } + + +/** + * @brief Creates the BBOB permuted block-rotated Schaffer's F7 problem. + */ +static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const double conditioning, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1; + size_t *block_sizes2; + size_t nb_blocks1; + size_t nb_blocks2; + size_t swap_range; + size_t nb_swaps; + + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + const double penalty_factor = 10.0; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); + + problem = f_schaffers_allocate(dimension); + problem = transform_vars_conditioning(problem, conditioning); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + + problem = transform_vars_asymmetric(problem, 0.5); + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + + problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; +} + diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 90d7b8e52..67f338cd9 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -46,7 +46,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, const long rseed = (long) (function + 10000 * instance); const long rseed_3 = (long) (3 + 10000 * instance); - /*const long rseed_17 = (long) (17 + 10000 * instance);*/ + const long rseed_17 = (long) (17 + 10000 * instance); /*TODO: finish implementing the large scale test-suite functions. current list: 1-5,10-12,14*/ @@ -99,11 +99,11 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_weierstrass_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 17) { - problem = NULL; /*f_schaffers_bbob_problem_allocate(function, dimension, instance, rseed, 10, - problem_id_template, problem_name_template);*/ + problem = f_schaffers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, 10, + problem_id_template, problem_name_template); } else if (function == 18) { - problem = NULL; /*f_schaffers_bbob_problem_allocate(function, dimension, instance, rseed_17, 1000, - problem_id_template, problem_name_template);*/ + problem = f_schaffers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed_17, 1000, + problem_id_template, problem_name_template); } else if (function == 19) { problem = NULL; /*f_griewank_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ From baa6ae9beeb1c8ceaaa8744a7b70684519522a23 Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 23 Feb 2016 16:21:33 +0100 Subject: [PATCH 078/446] Implementation of f_schaffers_permblockdiag_bbob_problem_allocate for large scale --- code-experiments/src/f_schaffers.c | 90 +++++++++++++++++++++++++ code-experiments/src/suite_largescale.c | 10 +-- 2 files changed, 95 insertions(+), 5 deletions(-) diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index 64eb65c04..4dd49bd20 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -17,6 +17,10 @@ #include "transform_vars_shift.c" #include "transform_obj_penalize.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" + /** * @brief Implements the Schaffer's F7 function without connections to any COCO structures. */ @@ -118,3 +122,89 @@ static coco_problem_t *f_schaffers_bbob_problem_allocate(const size_t function, coco_free_memory(xopt); return problem; } + + +/** + * @brief Creates the BBOB permuted block-rotated Schaffer's F7 problem. + */ +static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const double conditioning, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1; + size_t *block_sizes2; + size_t nb_blocks1; + size_t nb_blocks2; + size_t swap_range; + size_t nb_swaps; + + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + const double penalty_factor = 10.0; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); + + problem = f_schaffers_allocate(dimension); + problem = transform_vars_conditioning(problem, conditioning); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + + problem = transform_vars_asymmetric(problem, 0.5); + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + + problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; +} + diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 90d7b8e52..67f338cd9 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -46,7 +46,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, const long rseed = (long) (function + 10000 * instance); const long rseed_3 = (long) (3 + 10000 * instance); - /*const long rseed_17 = (long) (17 + 10000 * instance);*/ + const long rseed_17 = (long) (17 + 10000 * instance); /*TODO: finish implementing the large scale test-suite functions. current list: 1-5,10-12,14*/ @@ -99,11 +99,11 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_weierstrass_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 17) { - problem = NULL; /*f_schaffers_bbob_problem_allocate(function, dimension, instance, rseed, 10, - problem_id_template, problem_name_template);*/ + problem = f_schaffers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, 10, + problem_id_template, problem_name_template); } else if (function == 18) { - problem = NULL; /*f_schaffers_bbob_problem_allocate(function, dimension, instance, rseed_17, 1000, - problem_id_template, problem_name_template);*/ + problem = f_schaffers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed_17, 1000, + problem_id_template, problem_name_template); } else if (function == 19) { problem = NULL; /*f_griewank_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ From 5d4b6e1565d8bfb6d94866e6c53148883b94fa2a Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 23 Feb 2016 16:25:39 +0100 Subject: [PATCH 079/446] #include "f_schaffers.c" --- code-experiments/src/suite_largescale.c | 1 + 1 file changed, 1 insertion(+) diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 67f338cd9..dd93d0ac6 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -13,6 +13,7 @@ #include "f_different_powers.c" #include "f_rastrigin.c" #include "f_weierstrass.c" +#include "f_schaffers.c" #include "f_bueche_rastrigin.c" #include "f_linear_slope.c" From 56034df5a76bc8e65e76b0e9c692816c2c0cbb5f Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 23 Feb 2016 16:25:39 +0100 Subject: [PATCH 080/446] #include "f_schaffers.c" --- code-experiments/src/suite_largescale.c | 1 + 1 file changed, 1 insertion(+) diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 67f338cd9..dd93d0ac6 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -13,6 +13,7 @@ #include "f_different_powers.c" #include "f_rastrigin.c" #include "f_weierstrass.c" +#include "f_schaffers.c" #include "f_bueche_rastrigin.c" #include "f_linear_slope.c" From 8d82c770de31ae2ce793b094c7b3a36dba8bc117 Mon Sep 17 00:00:00 2001 From: NDManh Date: Wed, 24 Feb 2016 10:24:32 +0100 Subject: [PATCH 081/446] Create the BBOB permuted block-rotated Griewank-Rosenbrock problem --- code-experiments/src/f_griewank_rosenbrock.c | 69 ++++++++++++++++++++ code-experiments/src/f_rosenbrock.c | 2 +- code-experiments/src/suite_largescale.c | 5 +- 3 files changed, 73 insertions(+), 3 deletions(-) diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 3d525dceb..5a64b956c 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -13,6 +13,11 @@ #include "transform_vars_affine.c" #include "transform_vars_shift.c" #include "transform_obj_shift.c" +#include "transform_vars_scale.c" + +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Griewank-Rosenbrock function without connections to any COCO structures. @@ -108,3 +113,67 @@ static coco_problem_t *f_griewank_rosenbrock_bbob_problem_allocate(const size_t coco_free_memory(shift); return problem; } + +/** + * @brief Creates the BBOB permuted block-rotated Griewank-Rosenbrock problem. + */ +static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double fopt; + coco_problem_t *problem = NULL; + double *shift, scales; + size_t i; + + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + fopt = bbob2009_compute_fopt(function, instance); + scales = coco_double_max(1.0, sqrt((double) dimension) / 8.0); + shift = coco_allocate_vector(dimension); + for (i = 0; i < dimension; ++i) { + shift[i] = -0.5; + } + + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + problem = f_griewank_rosenbrock_allocate(dimension); + problem = transform_vars_shift(problem, shift, 0); + problem = transform_vars_scale(problem, scales); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_memory(shift); + coco_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + return problem; +} + diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index 42546eb45..8bc9185be 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -156,7 +156,7 @@ static coco_problem_t *f_rosenbrock_rotated_bbob_problem_allocate(const size_t f } /** - * @brief Creates the BBOB permuted block-rotated Rosenbrock problem for large scale. + * @brief Creates the BBOB permuted block-rotated Rosenbrock problem. */ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 378047d4c..d66eced3a 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -14,6 +14,7 @@ #include "f_rastrigin.c" #include "f_weierstrass.c" #include "f_schaffers.c" +#include "f_griewank_rosenbrock.c" #include "f_bueche_rastrigin.c" #include "f_linear_slope.c" #include "f_attractive_sector.c" @@ -107,8 +108,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_schaffers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed_17, 1000, problem_id_template, problem_name_template); } else if (function == 19) { - problem = NULL; /*f_griewank_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 20) { problem = NULL; /*f_schwefel_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ From 462c376db7e10ee6eb2922d6f1f07f1c80d21650 Mon Sep 17 00:00:00 2001 From: NDManh Date: Wed, 24 Feb 2016 10:24:32 +0100 Subject: [PATCH 082/446] Create the BBOB permuted block-rotated Griewank-Rosenbrock problem --- code-experiments/src/f_griewank_rosenbrock.c | 69 ++++++++++++++++++++ code-experiments/src/f_rosenbrock.c | 2 +- code-experiments/src/suite_largescale.c | 5 +- 3 files changed, 73 insertions(+), 3 deletions(-) diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 3d525dceb..5a64b956c 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -13,6 +13,11 @@ #include "transform_vars_affine.c" #include "transform_vars_shift.c" #include "transform_obj_shift.c" +#include "transform_vars_scale.c" + +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Griewank-Rosenbrock function without connections to any COCO structures. @@ -108,3 +113,67 @@ static coco_problem_t *f_griewank_rosenbrock_bbob_problem_allocate(const size_t coco_free_memory(shift); return problem; } + +/** + * @brief Creates the BBOB permuted block-rotated Griewank-Rosenbrock problem. + */ +static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double fopt; + coco_problem_t *problem = NULL; + double *shift, scales; + size_t i; + + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + fopt = bbob2009_compute_fopt(function, instance); + scales = coco_double_max(1.0, sqrt((double) dimension) / 8.0); + shift = coco_allocate_vector(dimension); + for (i = 0; i < dimension; ++i) { + shift[i] = -0.5; + } + + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + problem = f_griewank_rosenbrock_allocate(dimension); + problem = transform_vars_shift(problem, shift, 0); + problem = transform_vars_scale(problem, scales); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_memory(shift); + coco_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + return problem; +} + diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index 42546eb45..8bc9185be 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -156,7 +156,7 @@ static coco_problem_t *f_rosenbrock_rotated_bbob_problem_allocate(const size_t f } /** - * @brief Creates the BBOB permuted block-rotated Rosenbrock problem for large scale. + * @brief Creates the BBOB permuted block-rotated Rosenbrock problem. */ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 378047d4c..d66eced3a 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -14,6 +14,7 @@ #include "f_rastrigin.c" #include "f_weierstrass.c" #include "f_schaffers.c" +#include "f_griewank_rosenbrock.c" #include "f_bueche_rastrigin.c" #include "f_linear_slope.c" #include "f_attractive_sector.c" @@ -107,8 +108,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_schaffers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed_17, 1000, problem_id_template, problem_name_template); } else if (function == 19) { - problem = NULL; /*f_griewank_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 20) { problem = NULL; /*f_schwefel_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ From 5ad9742c00b3fb14c67d6b12e9cb88ddf5f4f110 Mon Sep 17 00:00:00 2001 From: NDManh Date: Wed, 24 Feb 2016 11:33:55 +0100 Subject: [PATCH 083/446] Implementation of the Schwefel function in large scale --- code-experiments/src/f_schwefel.c | 32 +++++++------------------ code-experiments/src/f_sphere.c | 1 + code-experiments/src/suite_largescale.c | 5 ++-- 3 files changed, 13 insertions(+), 25 deletions(-) diff --git a/code-experiments/src/f_schwefel.c b/code-experiments/src/f_schwefel.c index d19a4320e..eae3756c6 100644 --- a/code-experiments/src/f_schwefel.c +++ b/code-experiments/src/f_schwefel.c @@ -10,6 +10,8 @@ #include "coco.h" #include "coco_problem.c" #include "suite_bbob_legacy_code.c" +#include "transform_vars_conditioning.c" +#include "transform_obj_norm_by_dim.c" #include "transform_obj_shift.c" #include "transform_vars_scale.c" #include "transform_vars_affine.c" @@ -78,13 +80,7 @@ static coco_problem_t *f_schwefel_bbob_problem_allocate(const size_t function, const char *problem_name_template) { double *xopt, fopt; coco_problem_t *problem = NULL; - size_t i, j; - - const double condition = 10.; - - double *M = coco_allocate_vector(dimension * dimension); - double *b = coco_allocate_vector(dimension); - double *current_row; + size_t i; double *tmp1 = coco_allocate_vector(dimension); double *tmp2 = coco_allocate_vector(dimension); @@ -99,39 +95,29 @@ static coco_problem_t *f_schwefel_bbob_problem_allocate(const size_t function, } } - for (i = 0; i < dimension; ++i) { - b[i] = 0.0; - current_row = M + i * dimension; - for (j = 0; j < dimension; ++j) { - current_row[j] = 0.0; - if (i == j) { - double exponent = 1.0 * (int) i / ((double) (long) dimension - 1); - current_row[j] = pow(sqrt(condition), exponent); - } - } - } - for (i = 0; i < dimension; ++i) { tmp1[i] = -2 * fabs(xopt[i]); tmp2[i] = 2 * fabs(xopt[i]); } problem = f_schwefel_allocate(dimension); - problem = transform_obj_shift(problem, fopt); problem = transform_vars_scale(problem, 100); problem = transform_vars_shift(problem, tmp1, 0); - problem = transform_vars_affine(problem, M, b, dimension); + problem = transform_vars_conditioning(problem, 10.0); problem = transform_vars_shift(problem, tmp2, 0); problem = transform_vars_z_hat(problem, xopt); problem = transform_vars_scale(problem, 2); problem = transform_vars_x_hat(problem, rseed); + /*if large scale test-bed, normalize by dim*/ + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + problem = transform_obj_norm_by_dim(problem); + } + problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "5-weakly-structured"); - coco_free_memory(M); - coco_free_memory(b); coco_free_memory(tmp1); coco_free_memory(tmp2); coco_free_memory(xopt); diff --git a/code-experiments/src/f_sphere.c b/code-experiments/src/f_sphere.c index a6a0b4d4a..a51c94678 100644 --- a/code-experiments/src/f_sphere.c +++ b/code-experiments/src/f_sphere.c @@ -11,6 +11,7 @@ #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" #include "transform_vars_shift.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the sphere function without connections to any COCO structures. diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index d66eced3a..7cc68e20e 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -15,6 +15,7 @@ #include "f_weierstrass.c" #include "f_schaffers.c" #include "f_griewank_rosenbrock.c" +#include "f_schwefel.c" #include "f_bueche_rastrigin.c" #include "f_linear_slope.c" #include "f_attractive_sector.c" @@ -111,8 +112,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 20) { - problem = NULL; /*f_schwefel_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_schwefel_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 21) { problem = NULL; /*f_gallagher_bbob_problem_allocate(function, dimension, instance, rseed, 101, problem_id_template, problem_name_template);*/ From de926a43c5e81ea8cebe2a152683d64ed494d743 Mon Sep 17 00:00:00 2001 From: NDManh Date: Wed, 24 Feb 2016 11:33:55 +0100 Subject: [PATCH 084/446] Implementation of the Schwefel function in large scale --- code-experiments/src/f_schwefel.c | 32 +++++++------------------ code-experiments/src/f_sphere.c | 1 + code-experiments/src/suite_largescale.c | 5 ++-- 3 files changed, 13 insertions(+), 25 deletions(-) diff --git a/code-experiments/src/f_schwefel.c b/code-experiments/src/f_schwefel.c index d19a4320e..eae3756c6 100644 --- a/code-experiments/src/f_schwefel.c +++ b/code-experiments/src/f_schwefel.c @@ -10,6 +10,8 @@ #include "coco.h" #include "coco_problem.c" #include "suite_bbob_legacy_code.c" +#include "transform_vars_conditioning.c" +#include "transform_obj_norm_by_dim.c" #include "transform_obj_shift.c" #include "transform_vars_scale.c" #include "transform_vars_affine.c" @@ -78,13 +80,7 @@ static coco_problem_t *f_schwefel_bbob_problem_allocate(const size_t function, const char *problem_name_template) { double *xopt, fopt; coco_problem_t *problem = NULL; - size_t i, j; - - const double condition = 10.; - - double *M = coco_allocate_vector(dimension * dimension); - double *b = coco_allocate_vector(dimension); - double *current_row; + size_t i; double *tmp1 = coco_allocate_vector(dimension); double *tmp2 = coco_allocate_vector(dimension); @@ -99,39 +95,29 @@ static coco_problem_t *f_schwefel_bbob_problem_allocate(const size_t function, } } - for (i = 0; i < dimension; ++i) { - b[i] = 0.0; - current_row = M + i * dimension; - for (j = 0; j < dimension; ++j) { - current_row[j] = 0.0; - if (i == j) { - double exponent = 1.0 * (int) i / ((double) (long) dimension - 1); - current_row[j] = pow(sqrt(condition), exponent); - } - } - } - for (i = 0; i < dimension; ++i) { tmp1[i] = -2 * fabs(xopt[i]); tmp2[i] = 2 * fabs(xopt[i]); } problem = f_schwefel_allocate(dimension); - problem = transform_obj_shift(problem, fopt); problem = transform_vars_scale(problem, 100); problem = transform_vars_shift(problem, tmp1, 0); - problem = transform_vars_affine(problem, M, b, dimension); + problem = transform_vars_conditioning(problem, 10.0); problem = transform_vars_shift(problem, tmp2, 0); problem = transform_vars_z_hat(problem, xopt); problem = transform_vars_scale(problem, 2); problem = transform_vars_x_hat(problem, rseed); + /*if large scale test-bed, normalize by dim*/ + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + problem = transform_obj_norm_by_dim(problem); + } + problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "5-weakly-structured"); - coco_free_memory(M); - coco_free_memory(b); coco_free_memory(tmp1); coco_free_memory(tmp2); coco_free_memory(xopt); diff --git a/code-experiments/src/f_sphere.c b/code-experiments/src/f_sphere.c index a6a0b4d4a..a51c94678 100644 --- a/code-experiments/src/f_sphere.c +++ b/code-experiments/src/f_sphere.c @@ -11,6 +11,7 @@ #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" #include "transform_vars_shift.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the sphere function without connections to any COCO structures. diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index d66eced3a..7cc68e20e 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -15,6 +15,7 @@ #include "f_weierstrass.c" #include "f_schaffers.c" #include "f_griewank_rosenbrock.c" +#include "f_schwefel.c" #include "f_bueche_rastrigin.c" #include "f_linear_slope.c" #include "f_attractive_sector.c" @@ -111,8 +112,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 20) { - problem = NULL; /*f_schwefel_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_schwefel_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 21) { problem = NULL; /*f_gallagher_bbob_problem_allocate(function, dimension, instance, rseed, 101, problem_id_template, problem_name_template);*/ From 6d368c7681036749bf1118ee1ad336ab74b5cca4 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 24 Feb 2016 17:55:23 +0100 Subject: [PATCH 085/446] large-scale suite: added step_ellipsoid function which is computed using the generic approach instead of the specific one that was used for the suite_bbob version. Added transform_vars_round_perm that allows that --- code-experiments/src/f_ellipsoid.c | 2 +- code-experiments/src/f_schaffers.c | 7 +- code-experiments/src/f_step_ellipsoid.c | 135 ++++++++++++++++++ code-experiments/src/f_weierstrass.c | 8 +- code-experiments/src/suite_largescale.c | 7 +- .../src/transform_obj_norm_by_dim.c | 9 +- .../src/transform_vars_round_step.c | 75 ++++++++++ 7 files changed, 222 insertions(+), 21 deletions(-) create mode 100644 code-experiments/src/transform_vars_round_step.c diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 99bb46980..32c974247 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -163,7 +163,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz fopt = bbob2009_compute_fopt(function, instance); B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels. Check everywhere*/ coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index 4dd49bd20..3efb5f0c6 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -150,15 +150,14 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz size_t nb_blocks2; size_t swap_range; size_t nb_swaps; - - + + const double penalty_factor = 10.0; + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - const double penalty_factor = 10.0; - xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 58f607592..3ae6e214d 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -16,6 +16,16 @@ #include "coco_utilities.c" #include "suite_bbob_legacy_code.c" +#include "transform_obj_penalize.c" +#include "transform_obj_shift.c" +#include "transform_vars_shift.c" + +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" +#include "transform_vars_round_step.c" + + /** * @brief Data type for the step ellipsoid problem. */ @@ -25,6 +35,7 @@ typedef struct { double **rot1, **rot2; } f_step_ellipsoid_data_t; + /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ @@ -155,3 +166,127 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct return problem; } + + + + + + +/** + * @brief Implements the step ellipsoid function without connections to any COCO structures. + */ +static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { + + static const double condition = 100; + size_t i; + double result; + result = 0.0; + + for (i = 0; i < number_of_variables; ++i) { + double exponent; + exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); + result += pow(condition, exponent) * x[i] * x[i]; + ; + } + result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ + return result; +} + + +/** + * @brief Uses the raw function to evaluate the ls COCO problem. + */ +static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic step ellipsoid problem. + * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. + */ +static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", + f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); + problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ + problem->best_parameter[number_of_variables] = -1.0; + + coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); + /* Compute best solution */ + f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); + + return problem; +} + +/** + * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. + */ +static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double alpha = 10.; /*parameter of rounding*/ + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1, **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11, *P12, *P21, *P22; + size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; + double penalty_factor = 1.; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); + + P11 = coco_allocate_vector_size_t(dimension); + P12 = coco_allocate_vector_size_t(dimension); + P21 = coco_allocate_vector_size_t(dimension); + P22 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); + + problem = f_step_ellipsoid_allocate(dimension); + + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ + + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + return problem; +} + diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index b077d2228..d896130a1 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -177,15 +177,13 @@ static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const s size_t nb_blocks2; size_t swap_range; size_t nb_swaps; - + const double condition = 100.0, penalty_factor = 10.0 / (double) dimension; + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - - const double condition = 100.0; - const double penalty_factor = 10.0 / (double) dimension; - + xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index d66eced3a..23823dd8f 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -13,6 +13,7 @@ #include "f_different_powers.c" #include "f_rastrigin.c" #include "f_weierstrass.c" +#include "f_step_ellipsoid.c" #include "f_schaffers.c" #include "f_griewank_rosenbrock.c" #include "f_bueche_rastrigin.c" @@ -52,7 +53,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, const long rseed_17 = (long) (17 + 10000 * instance); /*TODO: finish implementing the large scale test-suite functions. - current list: 1-6,8-14*/ + current list: 1-19*/ if (function == 1) { problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); @@ -72,8 +73,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_attractive_sector_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 7) { - problem = NULL; /*f_step_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_step_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 8) { problem = f_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); diff --git a/code-experiments/src/transform_obj_norm_by_dim.c b/code-experiments/src/transform_obj_norm_by_dim.c index 5121a44be..9deae4603 100644 --- a/code-experiments/src/transform_obj_norm_by_dim.c +++ b/code-experiments/src/transform_obj_norm_by_dim.c @@ -8,13 +8,6 @@ #include "coco.h" #include "coco_problem.c" -/** - * @brief Data type for transform_obj_norm_by_dim - */ -typedef struct { - double offset; -} transform_obj_norm_by_dim_data_t; - /** * @brief Evaluates the transformation. */ @@ -32,6 +25,6 @@ static coco_problem_t *transform_obj_norm_by_dim(coco_problem_t *inner_problem) problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL, "transform_obj_norm_by_dim"); problem->evaluate_function = transform_obj_norm_by_dim_evaluate; transform_obj_norm_by_dim_evaluate(problem, problem->best_parameter, problem->best_value); - + problem->best_value[0] /= (double) inner_problem->number_of_variables; /*shouldn't matter as long as fopt = 0 originally*/ return problem; } diff --git a/code-experiments/src/transform_vars_round_step.c b/code-experiments/src/transform_vars_round_step.c new file mode 100644 index 000000000..7f923db35 --- /dev/null +++ b/code-experiments/src/transform_vars_round_step.c @@ -0,0 +1,75 @@ +/** + * @file transform_vars_round_step.c + * @brief Implementation of rounding the varaibles for the step-ellispoid function + * TODO: should this be a helper function instead? + */ + +#include + +#include "coco.h" +#include "coco_problem.c" +#include "coco_utilities.c" + +/** + * @brief Data type for transform_vars_round_step. + */ +typedef struct { + double alpha; + double *rounded_x; +} transform_vars_round_step_data_t; + +/** + * @brief Evaluates the transformation. + */ +static void transform_vars_round_step_evaluate(coco_problem_t *problem, const double *x, double *y) { + size_t i; + transform_vars_round_step_data_t *data; + coco_problem_t *inner_problem; + + data = (transform_vars_round_step_data_t *) coco_problem_transformed_get_data(problem); + inner_problem = coco_problem_transformed_get_inner_problem(problem); + /* multiplication by d to counter-balance the normalization by d*/ + data->rounded_x[inner_problem->number_of_variables] = x[0] * (double) inner_problem->number_of_variables;/* only works because rounded is applied just after the value that is used in the max() of the raw function */ + for (i = 0; i < inner_problem->number_of_variables; ++i) { + if (fabs(x[i]) > 0.5){ + data->rounded_x[i] = coco_double_round(x[i]); + } else { + data->rounded_x[i] = coco_double_round(data->alpha * x[i]) / data->alpha; + } + } + coco_evaluate_function(inner_problem, data->rounded_x, y); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Frees the data object. + */ +static void transform_vars_round_step_free(void *thing) { + transform_vars_round_step_data_t *data = (transform_vars_round_step_data_t *) thing; + coco_free_memory(data->rounded_x); +} + +/** + * @brief Creates the transformation. + */ +static coco_problem_t *transform_vars_round_step(coco_problem_t *inner_problem, const double alpha) { + transform_vars_round_step_data_t *data; + coco_problem_t *problem; + size_t i; + + data = (transform_vars_round_step_data_t *) coco_allocate_memory(sizeof(*data)); + data->rounded_x = coco_allocate_vector(inner_problem->number_of_variables + 1); + data->alpha = alpha; + + problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_round_step_free, "transform_vars_round_step"); + problem->evaluate_function = transform_vars_round_step_evaluate; + /* Compute best parameter */ + for (i = 0; i < problem->number_of_variables; i++) { + if (problem->best_parameter[i] > 0.5) { + problem->best_parameter[i] = coco_double_round(problem->best_parameter[i]); + } else { + problem->best_parameter[i] = coco_double_round(data->alpha * problem->best_parameter[i]) / data->alpha; + } + } + return problem; +} From 1528ce9a22613dd2134dcc87dee71aac49183311 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 24 Feb 2016 17:55:23 +0100 Subject: [PATCH 086/446] large-scale suite: added step_ellipsoid function which is computed using the generic approach instead of the specific one that was used for the suite_bbob version. Added transform_vars_round_perm that allows that --- code-experiments/src/f_ellipsoid.c | 2 +- code-experiments/src/f_schaffers.c | 7 +- code-experiments/src/f_step_ellipsoid.c | 135 ++++++++++++++++++ code-experiments/src/f_weierstrass.c | 8 +- code-experiments/src/suite_largescale.c | 7 +- .../src/transform_obj_norm_by_dim.c | 9 +- .../src/transform_vars_round_step.c | 75 ++++++++++ 7 files changed, 222 insertions(+), 21 deletions(-) create mode 100644 code-experiments/src/transform_vars_round_step.c diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 99bb46980..32c974247 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -163,7 +163,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz fopt = bbob2009_compute_fopt(function, instance); B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels. Check everywhere*/ coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index 4dd49bd20..3efb5f0c6 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -150,15 +150,14 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz size_t nb_blocks2; size_t swap_range; size_t nb_swaps; - - + + const double penalty_factor = 10.0; + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - const double penalty_factor = 10.0; - xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 58f607592..3ae6e214d 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -16,6 +16,16 @@ #include "coco_utilities.c" #include "suite_bbob_legacy_code.c" +#include "transform_obj_penalize.c" +#include "transform_obj_shift.c" +#include "transform_vars_shift.c" + +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" +#include "transform_vars_round_step.c" + + /** * @brief Data type for the step ellipsoid problem. */ @@ -25,6 +35,7 @@ typedef struct { double **rot1, **rot2; } f_step_ellipsoid_data_t; + /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ @@ -155,3 +166,127 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct return problem; } + + + + + + +/** + * @brief Implements the step ellipsoid function without connections to any COCO structures. + */ +static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { + + static const double condition = 100; + size_t i; + double result; + result = 0.0; + + for (i = 0; i < number_of_variables; ++i) { + double exponent; + exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); + result += pow(condition, exponent) * x[i] * x[i]; + ; + } + result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ + return result; +} + + +/** + * @brief Uses the raw function to evaluate the ls COCO problem. + */ +static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic step ellipsoid problem. + * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. + */ +static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", + f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); + problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ + problem->best_parameter[number_of_variables] = -1.0; + + coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); + /* Compute best solution */ + f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); + + return problem; +} + +/** + * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. + */ +static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double alpha = 10.; /*parameter of rounding*/ + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1, **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11, *P12, *P21, *P22; + size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; + double penalty_factor = 1.; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); + + P11 = coco_allocate_vector_size_t(dimension); + P12 = coco_allocate_vector_size_t(dimension); + P21 = coco_allocate_vector_size_t(dimension); + P22 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); + + problem = f_step_ellipsoid_allocate(dimension); + + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ + + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + return problem; +} + diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index b077d2228..d896130a1 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -177,15 +177,13 @@ static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const s size_t nb_blocks2; size_t swap_range; size_t nb_swaps; - + const double condition = 100.0, penalty_factor = 10.0 / (double) dimension; + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - - const double condition = 100.0; - const double penalty_factor = 10.0 / (double) dimension; - + xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index d66eced3a..23823dd8f 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -13,6 +13,7 @@ #include "f_different_powers.c" #include "f_rastrigin.c" #include "f_weierstrass.c" +#include "f_step_ellipsoid.c" #include "f_schaffers.c" #include "f_griewank_rosenbrock.c" #include "f_bueche_rastrigin.c" @@ -52,7 +53,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, const long rseed_17 = (long) (17 + 10000 * instance); /*TODO: finish implementing the large scale test-suite functions. - current list: 1-6,8-14*/ + current list: 1-19*/ if (function == 1) { problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); @@ -72,8 +73,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_attractive_sector_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 7) { - problem = NULL; /*f_step_ellipsoid_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_step_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 8) { problem = f_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); diff --git a/code-experiments/src/transform_obj_norm_by_dim.c b/code-experiments/src/transform_obj_norm_by_dim.c index 5121a44be..9deae4603 100644 --- a/code-experiments/src/transform_obj_norm_by_dim.c +++ b/code-experiments/src/transform_obj_norm_by_dim.c @@ -8,13 +8,6 @@ #include "coco.h" #include "coco_problem.c" -/** - * @brief Data type for transform_obj_norm_by_dim - */ -typedef struct { - double offset; -} transform_obj_norm_by_dim_data_t; - /** * @brief Evaluates the transformation. */ @@ -32,6 +25,6 @@ static coco_problem_t *transform_obj_norm_by_dim(coco_problem_t *inner_problem) problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL, "transform_obj_norm_by_dim"); problem->evaluate_function = transform_obj_norm_by_dim_evaluate; transform_obj_norm_by_dim_evaluate(problem, problem->best_parameter, problem->best_value); - + problem->best_value[0] /= (double) inner_problem->number_of_variables; /*shouldn't matter as long as fopt = 0 originally*/ return problem; } diff --git a/code-experiments/src/transform_vars_round_step.c b/code-experiments/src/transform_vars_round_step.c new file mode 100644 index 000000000..7f923db35 --- /dev/null +++ b/code-experiments/src/transform_vars_round_step.c @@ -0,0 +1,75 @@ +/** + * @file transform_vars_round_step.c + * @brief Implementation of rounding the varaibles for the step-ellispoid function + * TODO: should this be a helper function instead? + */ + +#include + +#include "coco.h" +#include "coco_problem.c" +#include "coco_utilities.c" + +/** + * @brief Data type for transform_vars_round_step. + */ +typedef struct { + double alpha; + double *rounded_x; +} transform_vars_round_step_data_t; + +/** + * @brief Evaluates the transformation. + */ +static void transform_vars_round_step_evaluate(coco_problem_t *problem, const double *x, double *y) { + size_t i; + transform_vars_round_step_data_t *data; + coco_problem_t *inner_problem; + + data = (transform_vars_round_step_data_t *) coco_problem_transformed_get_data(problem); + inner_problem = coco_problem_transformed_get_inner_problem(problem); + /* multiplication by d to counter-balance the normalization by d*/ + data->rounded_x[inner_problem->number_of_variables] = x[0] * (double) inner_problem->number_of_variables;/* only works because rounded is applied just after the value that is used in the max() of the raw function */ + for (i = 0; i < inner_problem->number_of_variables; ++i) { + if (fabs(x[i]) > 0.5){ + data->rounded_x[i] = coco_double_round(x[i]); + } else { + data->rounded_x[i] = coco_double_round(data->alpha * x[i]) / data->alpha; + } + } + coco_evaluate_function(inner_problem, data->rounded_x, y); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Frees the data object. + */ +static void transform_vars_round_step_free(void *thing) { + transform_vars_round_step_data_t *data = (transform_vars_round_step_data_t *) thing; + coco_free_memory(data->rounded_x); +} + +/** + * @brief Creates the transformation. + */ +static coco_problem_t *transform_vars_round_step(coco_problem_t *inner_problem, const double alpha) { + transform_vars_round_step_data_t *data; + coco_problem_t *problem; + size_t i; + + data = (transform_vars_round_step_data_t *) coco_allocate_memory(sizeof(*data)); + data->rounded_x = coco_allocate_vector(inner_problem->number_of_variables + 1); + data->alpha = alpha; + + problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_round_step_free, "transform_vars_round_step"); + problem->evaluate_function = transform_vars_round_step_evaluate; + /* Compute best parameter */ + for (i = 0; i < problem->number_of_variables; i++) { + if (problem->best_parameter[i] > 0.5) { + problem->best_parameter[i] = coco_double_round(problem->best_parameter[i]); + } else { + problem->best_parameter[i] = coco_double_round(data->alpha * problem->best_parameter[i]) / data->alpha; + } + } + return problem; +} From 6785fa389efd6bcb7e51eedac738196e36a1ded2 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 25 Feb 2016 17:41:51 +0100 Subject: [PATCH 087/446] added free()'s in f_step_ellipsoid_permblockdiag_bbob_problem_allocate --- code-experiments/src/f_step_ellipsoid.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 3ae6e214d..de64583f4 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -287,6 +287,16 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P12); + coco_free_memory(P21); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; } From e1d2ee85c6548a4927f02ffc9096948f8e6de9c3 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 25 Feb 2016 17:41:51 +0100 Subject: [PATCH 088/446] added free()'s in f_step_ellipsoid_permblockdiag_bbob_problem_allocate --- code-experiments/src/f_step_ellipsoid.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 3ae6e214d..de64583f4 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -287,6 +287,16 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P12); + coco_free_memory(P21); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; } From 762583932706b745ccf6be3ae8ce864ce2af7388 Mon Sep 17 00:00:00 2001 From: NDManh Date: Thu, 25 Feb 2016 18:05:26 +0100 Subject: [PATCH 089/446] Put ''transform_obj_norm_by_dim'' before ''transform_obj_penalize'' in large scale --- code-experiments/src/f_schaffers.c | 2 +- code-experiments/src/f_step_ellipsoid.c | 128 +++++++++++++----------- code-experiments/src/f_weierstrass.c | 3 +- 3 files changed, 71 insertions(+), 62 deletions(-) diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index 3efb5f0c6..ebaf3a44e 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -187,8 +187,8 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 3ae6e214d..ceb5c64f6 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -229,64 +229,74 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons const long rseed, const char *problem_id_template, const char *problem_name_template) { - double alpha = 10.; /*parameter of rounding*/ - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B1, **B2; - const double *const *B1_copy; - const double *const *B2_copy; - size_t *P11, *P12, *P21, *P22; - size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; - double penalty_factor = 1.; - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); - swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); - swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); - nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1; - B2_copy = (const double *const *)B2; - coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); - - P11 = coco_allocate_vector_size_t(dimension); - P12 = coco_allocate_vector_size_t(dimension); - P21 = coco_allocate_vector_size_t(dimension); - P22 = coco_allocate_vector_size_t(dimension); - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); - - problem = f_step_ellipsoid_allocate(dimension); - - problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ - - problem = transform_vars_conditioning(problem, 10.0); - problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); - problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_penalize(problem, penalty_factor); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - return problem; + double alpha = 10.; /*parameter of rounding*/ + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1, **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11, *P12, *P21, *P22; + size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; + double penalty_factor = 1.; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); + + P11 = coco_allocate_vector_size_t(dimension); + P12 = coco_allocate_vector_size_t(dimension); + P21 = coco_allocate_vector_size_t(dimension); + P22 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); + + problem = f_step_ellipsoid_allocate(dimension); + + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ + + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + + return problem; } diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index d896130a1..7ecc1bf0b 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -217,9 +217,8 @@ static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const s problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_penalize(problem, penalty_factor); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); From 751929d0069134d11cb50044b2b7731b5d595897 Mon Sep 17 00:00:00 2001 From: NDManh Date: Thu, 25 Feb 2016 18:05:26 +0100 Subject: [PATCH 090/446] Put ''transform_obj_norm_by_dim'' before ''transform_obj_penalize'' in large scale --- code-experiments/src/f_schaffers.c | 2 +- code-experiments/src/f_step_ellipsoid.c | 128 +++++++++++++----------- code-experiments/src/f_weierstrass.c | 3 +- 3 files changed, 71 insertions(+), 62 deletions(-) diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index 3efb5f0c6..ebaf3a44e 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -187,8 +187,8 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 3ae6e214d..ceb5c64f6 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -229,64 +229,74 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons const long rseed, const char *problem_id_template, const char *problem_name_template) { - double alpha = 10.; /*parameter of rounding*/ - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B1, **B2; - const double *const *B1_copy; - const double *const *B2_copy; - size_t *P11, *P12, *P21, *P22; - size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; - double penalty_factor = 1.; - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); - swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); - swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); - nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1; - B2_copy = (const double *const *)B2; - coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); - - P11 = coco_allocate_vector_size_t(dimension); - P12 = coco_allocate_vector_size_t(dimension); - P21 = coco_allocate_vector_size_t(dimension); - P22 = coco_allocate_vector_size_t(dimension); - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); - - problem = f_step_ellipsoid_allocate(dimension); - - problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ - - problem = transform_vars_conditioning(problem, 10.0); - problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); - problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_penalize(problem, penalty_factor); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - return problem; + double alpha = 10.; /*parameter of rounding*/ + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1, **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11, *P12, *P21, *P22; + size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; + double penalty_factor = 1.; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); + + P11 = coco_allocate_vector_size_t(dimension); + P12 = coco_allocate_vector_size_t(dimension); + P21 = coco_allocate_vector_size_t(dimension); + P22 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); + + problem = f_step_ellipsoid_allocate(dimension); + + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ + + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + + return problem; } diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index d896130a1..7ecc1bf0b 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -217,9 +217,8 @@ static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const s problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_penalize(problem, penalty_factor); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); From 4e3cf4fe6f6eb571ad02d02cffd1cee4211c3d5f Mon Sep 17 00:00:00 2001 From: NDManh Date: Fri, 26 Feb 2016 10:37:18 +0100 Subject: [PATCH 091/446] Creates the BBOB permuted block-rotated Katsuura problem --- code-experiments/src/f_katsuura.c | 88 ++++++++++++++++++++++++- code-experiments/src/suite_largescale.c | 4 +- 2 files changed, 89 insertions(+), 3 deletions(-) diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index cd18255cb..db80ea42d 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -105,7 +105,7 @@ static coco_problem_t *f_katsuura_bbob_problem_allocate(const size_t function, } problem = f_katsuura_allocate(dimension); - problem = transform_obj_shift(problem, fopt); + problem = transform_obj_shift(problem, fopt); /*There is no shift 'fopt' in the definition*/ problem = transform_vars_affine(problem, M, b, dimension); problem = transform_vars_shift(problem, xopt, 0); problem = transform_obj_penalize(problem, penalty_factor); @@ -122,3 +122,89 @@ static coco_problem_t *f_katsuura_bbob_problem_allocate(const size_t function, coco_free_memory(xopt); return problem; } + +/** + * @brief Creates the BBOB permuted block-rotated Katsuura problem. + */ +static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1; + size_t *block_sizes2; + size_t nb_blocks1; + size_t nb_blocks2; + size_t swap_range; + size_t nb_swaps; + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + const double penalty_factor = 1.0; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); + + + problem = f_katsuura_allocate(dimension); + problem = transform_vars_permutation(problem, P21, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_conditioning(problem, 100.0); + problem = transform_vars_permutation(problem, P22, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + + problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); /*There is no fopt in the definition of this function*/ + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; +} + diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 7dc79cecd..8dbdd6906 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -122,8 +122,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = NULL; /*f_gallagher_bbob_problem_allocate(function, dimension, instance, rseed, 21, problem_id_template, problem_name_template);*/ } else if (function == 23) { - problem = NULL; /*f_katsuura_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_katsuura_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 24) { problem = NULL; /*f_lunacek_bi_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ From 4e91fd5d683661c92f38f48ff97ebe85686e57a6 Mon Sep 17 00:00:00 2001 From: NDManh Date: Fri, 26 Feb 2016 10:37:18 +0100 Subject: [PATCH 092/446] Creates the BBOB permuted block-rotated Katsuura problem --- code-experiments/src/f_katsuura.c | 88 ++++++++++++++++++++++++- code-experiments/src/suite_largescale.c | 4 +- 2 files changed, 89 insertions(+), 3 deletions(-) diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index cd18255cb..db80ea42d 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -105,7 +105,7 @@ static coco_problem_t *f_katsuura_bbob_problem_allocate(const size_t function, } problem = f_katsuura_allocate(dimension); - problem = transform_obj_shift(problem, fopt); + problem = transform_obj_shift(problem, fopt); /*There is no shift 'fopt' in the definition*/ problem = transform_vars_affine(problem, M, b, dimension); problem = transform_vars_shift(problem, xopt, 0); problem = transform_obj_penalize(problem, penalty_factor); @@ -122,3 +122,89 @@ static coco_problem_t *f_katsuura_bbob_problem_allocate(const size_t function, coco_free_memory(xopt); return problem; } + +/** + * @brief Creates the BBOB permuted block-rotated Katsuura problem. + */ +static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1; + size_t *block_sizes2; + size_t nb_blocks1; + size_t nb_blocks2; + size_t swap_range; + size_t nb_swaps; + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + const double penalty_factor = 1.0; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); + + + problem = f_katsuura_allocate(dimension); + problem = transform_vars_permutation(problem, P21, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_conditioning(problem, 100.0); + problem = transform_vars_permutation(problem, P22, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + + problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); /*There is no fopt in the definition of this function*/ + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; +} + diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 7dc79cecd..8dbdd6906 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -122,8 +122,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = NULL; /*f_gallagher_bbob_problem_allocate(function, dimension, instance, rseed, 21, problem_id_template, problem_name_template);*/ } else if (function == 23) { - problem = NULL; /*f_katsuura_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_katsuura_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 24) { problem = NULL; /*f_lunacek_bi_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template);*/ From 47bf09cd9151bd4cb6ce0c5b2555405d18401c66 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 29 Feb 2016 15:56:57 +0100 Subject: [PATCH 093/446] Large-scale suite now starts with dim=20 --- code-experiments/src/suite_largescale.c | 6 +++--- code-postprocessing/bbob_pproc/genericsettings.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 7dc79cecd..d1858bf2b 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -33,8 +33,8 @@ static coco_suite_t *coco_suite_allocate(const char *suite_name, static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; - const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280, 2560, 5120}; - suite = coco_suite_allocate("bbob-largescale", 24, 8, dimensions, "instances:1-15"); + const size_t dimensions[] = { 20, 40, 80, 160, 320, 640, 1280, 2560, 5120}; + suite = coco_suite_allocate("bbob-largescale", 24, 9, dimensions, "instances:1-15"); return suite; } @@ -54,7 +54,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, const long rseed_17 = (long) (17 + 10000 * instance); /*TODO: finish implementing the large scale test-suite functions. - current list: 1-19*/ + current list: 1-20*/ if (function == 1) { problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 134d1bb51..5e4850dec 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -25,7 +25,7 @@ maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = 'auto' # 'auto' means automatic choice, otherwise True or False dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules -dimensions_to_display_ls = (40, 80, 160, 320, 640, 1280) # Wassim: large scale suite +dimensions_to_display_ls = (20, 40, 80, 160, 320, 640, 1280) # Wassim: large scale suite generate_svg_files = True # generate the svg figures scaling_figures_with_boxes = True # should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? From 8c49172272cc8157d914096e41cc45484e85095a Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 29 Feb 2016 15:56:57 +0100 Subject: [PATCH 094/446] Large-scale suite now starts with dim=20 --- code-experiments/src/suite_largescale.c | 6 +++--- code-postprocessing/bbob_pproc/genericsettings.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 7dc79cecd..d1858bf2b 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -33,8 +33,8 @@ static coco_suite_t *coco_suite_allocate(const char *suite_name, static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; - const size_t dimensions[] = { 40, 80, 160, 320, 640, 1280, 2560, 5120}; - suite = coco_suite_allocate("bbob-largescale", 24, 8, dimensions, "instances:1-15"); + const size_t dimensions[] = { 20, 40, 80, 160, 320, 640, 1280, 2560, 5120}; + suite = coco_suite_allocate("bbob-largescale", 24, 9, dimensions, "instances:1-15"); return suite; } @@ -54,7 +54,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, const long rseed_17 = (long) (17 + 10000 * instance); /*TODO: finish implementing the large scale test-suite functions. - current list: 1-19*/ + current list: 1-20*/ if (function == 1) { problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 134d1bb51..5e4850dec 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -25,7 +25,7 @@ maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = 'auto' # 'auto' means automatic choice, otherwise True or False dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules -dimensions_to_display_ls = (40, 80, 160, 320, 640, 1280) # Wassim: large scale suite +dimensions_to_display_ls = (20, 40, 80, 160, 320, 640, 1280) # Wassim: large scale suite generate_svg_files = True # generate the svg figures scaling_figures_with_boxes = True # should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? From 161dd22a3fc3a63dfd49fcc6c751de8a18fbfa39 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 1 Mar 2016 17:28:46 +0100 Subject: [PATCH 095/446] solved conflict in pproc/compall/pprldmany.py --- .../bbob_pproc/compall/pprldmany.py | 50 +++---------------- 1 file changed, 8 insertions(+), 42 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/pprldmany.py b/code-postprocessing/bbob_pproc/compall/pprldmany.py index e07c2d6a0..34605ad53 100644 --- a/code-postprocessing/bbob_pproc/compall/pprldmany.py +++ b/code-postprocessing/bbob_pproc/compall/pprldmany.py @@ -486,6 +486,8 @@ def all_single_functions(dictAlg, isBiobjective, sortedAlgs=None, verbose=verbose, parentHtmlFileName=parentHtmlFileName) + + def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', dimension=None, verbose=True, parentHtmlFileName=None): """Generates a figure showing the performance of algorithms. @@ -588,11 +590,14 @@ def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', keyValue = '%d-D' % (dim) if len(dimList) > 1 else alg dictData.setdefault(keyValue, []).extend(x) dictMaxEvals.setdefault(keyValue, []).extend(runlengthunsucc) - + displaybest2009 = not isBiobjective #disabled for bi-objective case + bestalgentries = bestalg.loadBestAlgorithm(isBiobjective) #no extra loading since force is default to False + if (dim, f) not in bestalgentries.keys(): #dimension/function not present in best2009 + displaybest2009 = False if displaybest2009: #set_trace() - bestalgentries = bestalg.loadBestAlgorithm(isBiobjective) + #bestalgentries = bestalg.loadBestAlgorithm(isBiobjective)# Wassim: now done above bestalgentry = bestalgentries[(dim, f)] bestalgevals = bestalgentry.detEvals(target_values((f, dim))) # print bestalgevals @@ -606,51 +611,12 @@ def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', x = toolsstats.drawSP(runlengthsucc, runlengthunsucc, percentiles=[50], samplesize=perfprofsamplesize)[1] -<<<<<<< HEAD - except (KeyError, IndexError): - #set_trace() - warntxt = ('Data for algorithm %s on function %d in %d-D ' - % (alg, f, dim) - + 'are missing.\n') - warnings.warn(warntxt) - - dictData.setdefault(alg, []).extend(x) - dictMaxEvals.setdefault(alg, []).extend(runlengthunsucc) - - displaybest2009 = not isBiobjective #disabled for bi-objective case - bestalgentries = bestalg.loadBestAlgorithm(isBiobjective) #no extra loading since force is default to False - if (dim, f) not in bestalgentries.keys(): #dimension/function not present in best2009 - displaybest2009 = False - if displaybest2009: - #set_trace() - #bestalgentries = bestalg.loadBestAlgorithm(isBiobjective) # now done above - bestalgentry = bestalgentries[(dim, f)] - bestalgevals = bestalgentry.detEvals(target_values((f, dim))) - # print bestalgevals - for j in range(len(bestalgevals[0])): - if bestalgevals[1][j]: - evals = bestalgevals[0][j] - #set_trace() - assert dim == bestalgentry.dim - runlengthsucc = evals[np.isnan(evals) == False] / divisor - runlengthunsucc = bestalgentry.maxevals[bestalgevals[1][j]][np.isnan(evals)] / divisor - x = toolsstats.drawSP(runlengthsucc, runlengthunsucc, - percentiles=[50], - samplesize=perfprofsamplesize)[1] - else: - x = perfprofsamplesize * [np.inf] - runlengthunsucc = [] - xbest2009.extend(x) - maxevalsbest2009.extend(runlengthunsucc) - -======= else: x = perfprofsamplesize * [np.inf] runlengthunsucc = [] xbest2009.extend(x) maxevalsbest2009.extend(runlengthunsucc) - ->>>>>>> 077a3ac3e8d78eb3fa1e66df770d10211dca2cd4 + if order is None: order = dictData.keys() From 59240b458c9646f8b47c5dff6401636d8fe48fc7 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 1 Mar 2016 17:28:46 +0100 Subject: [PATCH 096/446] solved conflict in pproc/compall/pprldmany.py --- .../bbob_pproc/compall/pprldmany.py | 50 +++---------------- 1 file changed, 8 insertions(+), 42 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/pprldmany.py b/code-postprocessing/bbob_pproc/compall/pprldmany.py index e07c2d6a0..34605ad53 100644 --- a/code-postprocessing/bbob_pproc/compall/pprldmany.py +++ b/code-postprocessing/bbob_pproc/compall/pprldmany.py @@ -486,6 +486,8 @@ def all_single_functions(dictAlg, isBiobjective, sortedAlgs=None, verbose=verbose, parentHtmlFileName=parentHtmlFileName) + + def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', dimension=None, verbose=True, parentHtmlFileName=None): """Generates a figure showing the performance of algorithms. @@ -588,11 +590,14 @@ def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', keyValue = '%d-D' % (dim) if len(dimList) > 1 else alg dictData.setdefault(keyValue, []).extend(x) dictMaxEvals.setdefault(keyValue, []).extend(runlengthunsucc) - + displaybest2009 = not isBiobjective #disabled for bi-objective case + bestalgentries = bestalg.loadBestAlgorithm(isBiobjective) #no extra loading since force is default to False + if (dim, f) not in bestalgentries.keys(): #dimension/function not present in best2009 + displaybest2009 = False if displaybest2009: #set_trace() - bestalgentries = bestalg.loadBestAlgorithm(isBiobjective) + #bestalgentries = bestalg.loadBestAlgorithm(isBiobjective)# Wassim: now done above bestalgentry = bestalgentries[(dim, f)] bestalgevals = bestalgentry.detEvals(target_values((f, dim))) # print bestalgevals @@ -606,51 +611,12 @@ def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', x = toolsstats.drawSP(runlengthsucc, runlengthunsucc, percentiles=[50], samplesize=perfprofsamplesize)[1] -<<<<<<< HEAD - except (KeyError, IndexError): - #set_trace() - warntxt = ('Data for algorithm %s on function %d in %d-D ' - % (alg, f, dim) - + 'are missing.\n') - warnings.warn(warntxt) - - dictData.setdefault(alg, []).extend(x) - dictMaxEvals.setdefault(alg, []).extend(runlengthunsucc) - - displaybest2009 = not isBiobjective #disabled for bi-objective case - bestalgentries = bestalg.loadBestAlgorithm(isBiobjective) #no extra loading since force is default to False - if (dim, f) not in bestalgentries.keys(): #dimension/function not present in best2009 - displaybest2009 = False - if displaybest2009: - #set_trace() - #bestalgentries = bestalg.loadBestAlgorithm(isBiobjective) # now done above - bestalgentry = bestalgentries[(dim, f)] - bestalgevals = bestalgentry.detEvals(target_values((f, dim))) - # print bestalgevals - for j in range(len(bestalgevals[0])): - if bestalgevals[1][j]: - evals = bestalgevals[0][j] - #set_trace() - assert dim == bestalgentry.dim - runlengthsucc = evals[np.isnan(evals) == False] / divisor - runlengthunsucc = bestalgentry.maxevals[bestalgevals[1][j]][np.isnan(evals)] / divisor - x = toolsstats.drawSP(runlengthsucc, runlengthunsucc, - percentiles=[50], - samplesize=perfprofsamplesize)[1] - else: - x = perfprofsamplesize * [np.inf] - runlengthunsucc = [] - xbest2009.extend(x) - maxevalsbest2009.extend(runlengthunsucc) - -======= else: x = perfprofsamplesize * [np.inf] runlengthunsucc = [] xbest2009.extend(x) maxevalsbest2009.extend(runlengthunsucc) - ->>>>>>> 077a3ac3e8d78eb3fa1e66df770d10211dca2cd4 + if order is None: order = dictData.keys() From 7a1a5beabd6c3fd7d74d91af4ca34ca06de782c7 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 3 Mar 2016 19:11:52 +0100 Subject: [PATCH 097/446] large scale suite: implementing gallagher function using the transform_vars_... and transform_obj_... ... --- code-experiments/src/f_gallagher.c | 157 ++++++++++++++++++ .../src/transform_vars_permutation_helpers.c | 3 +- 2 files changed, 159 insertions(+), 1 deletion(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 0eed7f5bb..37513c36a 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -12,6 +12,11 @@ #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" +#include "transform_vars_permutation_helpers.c" + /** * @brief A random permutation type for the Gallagher problem. * @@ -255,3 +260,155 @@ static coco_problem_t *f_gallagher_bbob_problem_allocate(const size_t function, return problem; } + + + +/** + * @brief Data type for the versatile_data_t + */ +typedef struct { + size_t number_of_peaks; + coco_problem_t **local_problems; +} f_gallagher_versatile_data_t; + +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_gallagher_versatile_data_free(coco_problem_t *problem) { + coco_free_memory((f_gallagher_versatile_data_t *) problem->versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + + +/** + * @brief Implements the gallagher function without connections to any COCO structures. + * Wassim: core to differentiate it from raw for now + */ +static double f_gallagher_core(const double *x, const size_t number_of_variables, f_gallagher_versatile_data_t *f_gallagher_versatile_data) { + + coco_problem_t *problem_i; + double result = 0; + double y; + size_t i; + double maxf; + + for (i = 0; i < f_gallagher_versatile_data->number_of_peaks; i++) { + problem_i = f_gallagher_versatile_data->local_problems[i]; + problem_i->evaluate_function(problem_i, x, &y); + if ( i == 1 || maxf < y ) { + maxf = y; + } + } + result = 10 - maxf; + + return result; +} + +/** + * @brief Uses the core function to evaluate the COCO problem. + */ +static void f_gallagher_evaluate_core(coco_problem_t *problem, const double *x, double *y) { + + assert(problem->number_of_objectives == 1); + y[0] = f_gallagher_core(x, problem->number_of_variables, ((f_gallagher_versatile_data_t *) problem->versatile_data)); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic gallagher problem. + */ +static coco_problem_t *f_gallagher_problem_allocate(const size_t number_of_variables, size_t number_of_peaks) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("gallagher function", + f_gallagher_evaluate_core, NULL, number_of_variables, -5.0, 5.0, 0.0); + + coco_problem_set_id(problem, "%s_d%04lu", "gallagher", number_of_variables); + + /* Compute best solution */ + f_gallagher_evaluate_core(problem, problem->best_parameter, problem->best_value); + return problem; +} + +static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const size_t number_of_peaks, + const char *problem_id_template, + const char *problem_name_template) { + + size_t i; + double *xopt, fopt; + double penalty_factor = 1.0; + coco_problem_t *problem = NULL, *problem_i; + double **B; + const double *const *B_copy; + size_t *P1, *P2; + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + xopt = coco_allocate_vector(dimension);/*xopt is y1 */ + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + + P1 = coco_allocate_vector_size_t(dimension); + P2 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + problem = f_gallagher_problem_allocate(dimension, number_of_peaks); + problem->versatile_data = (f_gallagher_versatile_data_t *) coco_allocate_memory(sizeof(f_gallagher_versatile_data_t)); + ((f_gallagher_versatile_data_t *) problem->versatile_data)->number_of_peaks = number_of_peaks; + ((f_gallagher_versatile_data_t *) problem->versatile_data)->local_problems = (coco_problem_t **) coco_allocate_memory(number_of_peaks * sizeof(coco_problem_t *)); + for (i = 0; i < number_of_peaks; i++) { + ((f_gallagher_versatile_data_t *) problem->versatile_data)->local_problems[i] = (coco_problem_t *) coco_allocate_memory(sizeof(coco_problem_t)); + problem_i = ((f_gallagher_versatile_data_t *) problem->versatile_data)->local_problems[i]; + problem_i = transform_vars_permutation(problem, P2, dimension); + problem_i = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem_i = transform_vars_permutation(problem, P1, dimension); + problem_i = transform_vars_conditioning(problem, sqrt(19)); + problem_i = transform_vars_shift(problem, &xopt[19], 0); + + + }/* TODO: free all this in the end */ + + /*problem = transform_obj_norm_by_dim(problem);*/ + problem = transform_obj_oscillate(problem); + problem = transform_obj_power(problem, 2.0); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); + +/* + problem = transform_vars_permutation(problem, P2, dimension); + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_shift(problem, xopt, 0); +*/ + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + coco_free_memory(xopt); + return problem; +} + + + diff --git a/code-experiments/src/transform_vars_permutation_helpers.c b/code-experiments/src/transform_vars_permutation_helpers.c index 17cd92fac..e95e611bf 100644 --- a/code-experiments/src/transform_vars_permutation_helpers.c +++ b/code-experiments/src/transform_vars_permutation_helpers.c @@ -31,6 +31,7 @@ static int f_compare_doubles_for_random_permutation(const void *a, const void *b /** * @brief generates a random, uniformly sampled, permutation and puts it in P + * Wassim: move to coco_utilities? */ static void coco_compute_random_permutation(size_t *P, long seed, size_t n) { long i; @@ -47,7 +48,7 @@ static void coco_compute_random_permutation(size_t *P, long seed, size_t n) { /** * @brief returns a uniformly distributed integer between lower_bound and upper_bound using seed. - * Wassim: move to coco_utilities? + * Wassim: move to coco_utilities? */ static long coco_random_unif_int(long lower_bound, long upper_bound, coco_random_state_t *rng){ long range; From 55d13debcb6e5e9e79b16e28bb3cbfcfcfe2c984 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 3 Mar 2016 19:11:52 +0100 Subject: [PATCH 098/446] large scale suite: implementing gallagher function using the transform_vars_... and transform_obj_... ... --- code-experiments/src/f_gallagher.c | 157 ++++++++++++++++++ .../src/transform_vars_permutation_helpers.c | 3 +- 2 files changed, 159 insertions(+), 1 deletion(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 0eed7f5bb..37513c36a 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -12,6 +12,11 @@ #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" +#include "transform_vars_permutation_helpers.c" + /** * @brief A random permutation type for the Gallagher problem. * @@ -255,3 +260,155 @@ static coco_problem_t *f_gallagher_bbob_problem_allocate(const size_t function, return problem; } + + + +/** + * @brief Data type for the versatile_data_t + */ +typedef struct { + size_t number_of_peaks; + coco_problem_t **local_problems; +} f_gallagher_versatile_data_t; + +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_gallagher_versatile_data_free(coco_problem_t *problem) { + coco_free_memory((f_gallagher_versatile_data_t *) problem->versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + + +/** + * @brief Implements the gallagher function without connections to any COCO structures. + * Wassim: core to differentiate it from raw for now + */ +static double f_gallagher_core(const double *x, const size_t number_of_variables, f_gallagher_versatile_data_t *f_gallagher_versatile_data) { + + coco_problem_t *problem_i; + double result = 0; + double y; + size_t i; + double maxf; + + for (i = 0; i < f_gallagher_versatile_data->number_of_peaks; i++) { + problem_i = f_gallagher_versatile_data->local_problems[i]; + problem_i->evaluate_function(problem_i, x, &y); + if ( i == 1 || maxf < y ) { + maxf = y; + } + } + result = 10 - maxf; + + return result; +} + +/** + * @brief Uses the core function to evaluate the COCO problem. + */ +static void f_gallagher_evaluate_core(coco_problem_t *problem, const double *x, double *y) { + + assert(problem->number_of_objectives == 1); + y[0] = f_gallagher_core(x, problem->number_of_variables, ((f_gallagher_versatile_data_t *) problem->versatile_data)); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic gallagher problem. + */ +static coco_problem_t *f_gallagher_problem_allocate(const size_t number_of_variables, size_t number_of_peaks) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("gallagher function", + f_gallagher_evaluate_core, NULL, number_of_variables, -5.0, 5.0, 0.0); + + coco_problem_set_id(problem, "%s_d%04lu", "gallagher", number_of_variables); + + /* Compute best solution */ + f_gallagher_evaluate_core(problem, problem->best_parameter, problem->best_value); + return problem; +} + +static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const size_t number_of_peaks, + const char *problem_id_template, + const char *problem_name_template) { + + size_t i; + double *xopt, fopt; + double penalty_factor = 1.0; + coco_problem_t *problem = NULL, *problem_i; + double **B; + const double *const *B_copy; + size_t *P1, *P2; + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + xopt = coco_allocate_vector(dimension);/*xopt is y1 */ + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + + P1 = coco_allocate_vector_size_t(dimension); + P2 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + problem = f_gallagher_problem_allocate(dimension, number_of_peaks); + problem->versatile_data = (f_gallagher_versatile_data_t *) coco_allocate_memory(sizeof(f_gallagher_versatile_data_t)); + ((f_gallagher_versatile_data_t *) problem->versatile_data)->number_of_peaks = number_of_peaks; + ((f_gallagher_versatile_data_t *) problem->versatile_data)->local_problems = (coco_problem_t **) coco_allocate_memory(number_of_peaks * sizeof(coco_problem_t *)); + for (i = 0; i < number_of_peaks; i++) { + ((f_gallagher_versatile_data_t *) problem->versatile_data)->local_problems[i] = (coco_problem_t *) coco_allocate_memory(sizeof(coco_problem_t)); + problem_i = ((f_gallagher_versatile_data_t *) problem->versatile_data)->local_problems[i]; + problem_i = transform_vars_permutation(problem, P2, dimension); + problem_i = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem_i = transform_vars_permutation(problem, P1, dimension); + problem_i = transform_vars_conditioning(problem, sqrt(19)); + problem_i = transform_vars_shift(problem, &xopt[19], 0); + + + }/* TODO: free all this in the end */ + + /*problem = transform_obj_norm_by_dim(problem);*/ + problem = transform_obj_oscillate(problem); + problem = transform_obj_power(problem, 2.0); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); + +/* + problem = transform_vars_permutation(problem, P2, dimension); + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_shift(problem, xopt, 0); +*/ + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + coco_free_memory(xopt); + return problem; +} + + + diff --git a/code-experiments/src/transform_vars_permutation_helpers.c b/code-experiments/src/transform_vars_permutation_helpers.c index 17cd92fac..e95e611bf 100644 --- a/code-experiments/src/transform_vars_permutation_helpers.c +++ b/code-experiments/src/transform_vars_permutation_helpers.c @@ -31,6 +31,7 @@ static int f_compare_doubles_for_random_permutation(const void *a, const void *b /** * @brief generates a random, uniformly sampled, permutation and puts it in P + * Wassim: move to coco_utilities? */ static void coco_compute_random_permutation(size_t *P, long seed, size_t n) { long i; @@ -47,7 +48,7 @@ static void coco_compute_random_permutation(size_t *P, long seed, size_t n) { /** * @brief returns a uniformly distributed integer between lower_bound and upper_bound using seed. - * Wassim: move to coco_utilities? + * Wassim: move to coco_utilities? */ static long coco_random_unif_int(long lower_bound, long upper_bound, coco_random_state_t *rng){ long range; From eae6724c5092269d5cb7fcd845e00a09d4c77042 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sat, 5 Mar 2016 15:06:09 +0100 Subject: [PATCH 099/446] solved several seg-faults in the new large scale suite gallagher function --- code-experiments/src/f_gallagher.c | 20 +++++++++---------- .../src/transform_obj_norm_by_dim.c | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 1e8caa8d9..85e6573ec 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -328,7 +328,7 @@ static double f_gallagher_sub_core(const double *x, const size_t number_of_varia * @brief Uses the core function to evaluate the sub problem. */ static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double *x, double *y) { - + assert(problem->number_of_objectives == 1); y[0] = f_gallagher_sub_core(x, problem->number_of_variables, (f_gallagher_versatile_data_t *) problem->versatile_data); /*assert(y[0] + 1e-13 >= problem->best_value[0]);*/ @@ -371,8 +371,8 @@ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_ for (i = 0; i < f_gallagher_versatile_data->number_of_peaks; i++) { problem_i = f_gallagher_versatile_data->sub_problems[i]; - /*problem_i->evaluate_function(problem_i, x, &y);*/ - f_gallagher_sub_evaluate_core(problem_i, x, &y); + problem_i->evaluate_function(problem_i, x, &y); + /*f_gallagher_sub_evaluate_core(problem_i, x, &y);*/ if ( i == 0 || maxf < y ) { maxf = y; } @@ -401,15 +401,15 @@ static coco_problem_t *f_gallagher_problem_allocate(const size_t number_of_varia f_gallagher_evaluate_core, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); f_gallagher_versatile_data_t *versatile_data_tmp; problem->versatile_data = (f_gallagher_versatile_data_t *) coco_allocate_memory(sizeof(f_gallagher_versatile_data_t)); - versatile_data_tmp = problem->versatile_data; + versatile_data_tmp = (f_gallagher_versatile_data_t *)problem->versatile_data; versatile_data_tmp->number_of_peaks = number_of_peaks; versatile_data_tmp->sub_problems = (coco_problem_t **) coco_allocate_memory(number_of_peaks * sizeof(coco_problem_t *)); versatile_data_tmp->peak_index = -1;/*since global problem*/ coco_problem_set_id(problem, "%s_d%04lu", "gallagher", number_of_variables); - + /* Compute best solution */ - f_gallagher_evaluate_core(problem, problem->best_parameter, problem->best_value); + /*f_gallagher_evaluate_core(problem, problem->best_parameter, problem->best_value);*/ return problem; } @@ -473,7 +473,6 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); problem = f_gallagher_problem_allocate(dimension, number_of_peaks); - alpha_i_vals = coco_allocate_vector(number_of_peaks - 1); for (i = 0; i < number_of_peaks - 1; i++) { alpha_i_vals[i] = pow(maxcondition, (double) (i) / ((double) (number_of_peaks - 2))); @@ -496,10 +495,11 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz y_i[i] *= a; problem->best_parameter[i] = y_i[i]; } + alpha_i = maxcondition; + } else { + alpha_i = alpha_i_vals[P_alpha_i[peak_index - 1]];/*already square-rooted */ } - /* alpha_i*/ - alpha_i = alpha_i_vals[P_alpha_i[peak_index]];/*already square-rooted */ /* P_Lambda the permutation */ P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the alpha_i's */ @@ -513,7 +513,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz problem_i = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem_i = transform_vars_permutation(problem, P1, dimension); problem_i = transform_vars_shift(problem, y_i, 0); - problem = transform_obj_norm_by_dim(problem_i);/* for the scalar product */ + problem_i = transform_obj_norm_by_dim(problem_i);/* for the scalar product */ coco_free_memory(P_Lambda); coco_free_memory(y_i); diff --git a/code-experiments/src/transform_obj_norm_by_dim.c b/code-experiments/src/transform_obj_norm_by_dim.c index 9deae4603..44c019568 100644 --- a/code-experiments/src/transform_obj_norm_by_dim.c +++ b/code-experiments/src/transform_obj_norm_by_dim.c @@ -24,7 +24,7 @@ static coco_problem_t *transform_obj_norm_by_dim(coco_problem_t *inner_problem) coco_problem_t *problem; problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL, "transform_obj_norm_by_dim"); problem->evaluate_function = transform_obj_norm_by_dim_evaluate; - transform_obj_norm_by_dim_evaluate(problem, problem->best_parameter, problem->best_value); + /*transform_obj_norm_by_dim_evaluate(problem, problem->best_parameter, problem->best_value);*/ problem->best_value[0] /= (double) inner_problem->number_of_variables; /*shouldn't matter as long as fopt = 0 originally*/ return problem; } From a731fdcfff5d8d6f3a85b2d59312f76b4363c309 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sat, 5 Mar 2016 15:06:09 +0100 Subject: [PATCH 100/446] solved several seg-faults in the new large scale suite gallagher function --- code-experiments/src/f_gallagher.c | 20 +++++++++---------- .../src/transform_obj_norm_by_dim.c | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 1e8caa8d9..85e6573ec 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -328,7 +328,7 @@ static double f_gallagher_sub_core(const double *x, const size_t number_of_varia * @brief Uses the core function to evaluate the sub problem. */ static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double *x, double *y) { - + assert(problem->number_of_objectives == 1); y[0] = f_gallagher_sub_core(x, problem->number_of_variables, (f_gallagher_versatile_data_t *) problem->versatile_data); /*assert(y[0] + 1e-13 >= problem->best_value[0]);*/ @@ -371,8 +371,8 @@ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_ for (i = 0; i < f_gallagher_versatile_data->number_of_peaks; i++) { problem_i = f_gallagher_versatile_data->sub_problems[i]; - /*problem_i->evaluate_function(problem_i, x, &y);*/ - f_gallagher_sub_evaluate_core(problem_i, x, &y); + problem_i->evaluate_function(problem_i, x, &y); + /*f_gallagher_sub_evaluate_core(problem_i, x, &y);*/ if ( i == 0 || maxf < y ) { maxf = y; } @@ -401,15 +401,15 @@ static coco_problem_t *f_gallagher_problem_allocate(const size_t number_of_varia f_gallagher_evaluate_core, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); f_gallagher_versatile_data_t *versatile_data_tmp; problem->versatile_data = (f_gallagher_versatile_data_t *) coco_allocate_memory(sizeof(f_gallagher_versatile_data_t)); - versatile_data_tmp = problem->versatile_data; + versatile_data_tmp = (f_gallagher_versatile_data_t *)problem->versatile_data; versatile_data_tmp->number_of_peaks = number_of_peaks; versatile_data_tmp->sub_problems = (coco_problem_t **) coco_allocate_memory(number_of_peaks * sizeof(coco_problem_t *)); versatile_data_tmp->peak_index = -1;/*since global problem*/ coco_problem_set_id(problem, "%s_d%04lu", "gallagher", number_of_variables); - + /* Compute best solution */ - f_gallagher_evaluate_core(problem, problem->best_parameter, problem->best_value); + /*f_gallagher_evaluate_core(problem, problem->best_parameter, problem->best_value);*/ return problem; } @@ -473,7 +473,6 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); problem = f_gallagher_problem_allocate(dimension, number_of_peaks); - alpha_i_vals = coco_allocate_vector(number_of_peaks - 1); for (i = 0; i < number_of_peaks - 1; i++) { alpha_i_vals[i] = pow(maxcondition, (double) (i) / ((double) (number_of_peaks - 2))); @@ -496,10 +495,11 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz y_i[i] *= a; problem->best_parameter[i] = y_i[i]; } + alpha_i = maxcondition; + } else { + alpha_i = alpha_i_vals[P_alpha_i[peak_index - 1]];/*already square-rooted */ } - /* alpha_i*/ - alpha_i = alpha_i_vals[P_alpha_i[peak_index]];/*already square-rooted */ /* P_Lambda the permutation */ P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the alpha_i's */ @@ -513,7 +513,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz problem_i = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem_i = transform_vars_permutation(problem, P1, dimension); problem_i = transform_vars_shift(problem, y_i, 0); - problem = transform_obj_norm_by_dim(problem_i);/* for the scalar product */ + problem_i = transform_obj_norm_by_dim(problem_i);/* for the scalar product */ coco_free_memory(P_Lambda); coco_free_memory(y_i); diff --git a/code-experiments/src/transform_obj_norm_by_dim.c b/code-experiments/src/transform_obj_norm_by_dim.c index 9deae4603..44c019568 100644 --- a/code-experiments/src/transform_obj_norm_by_dim.c +++ b/code-experiments/src/transform_obj_norm_by_dim.c @@ -24,7 +24,7 @@ static coco_problem_t *transform_obj_norm_by_dim(coco_problem_t *inner_problem) coco_problem_t *problem; problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL, "transform_obj_norm_by_dim"); problem->evaluate_function = transform_obj_norm_by_dim_evaluate; - transform_obj_norm_by_dim_evaluate(problem, problem->best_parameter, problem->best_value); + /*transform_obj_norm_by_dim_evaluate(problem, problem->best_parameter, problem->best_value);*/ problem->best_value[0] /= (double) inner_problem->number_of_variables; /*shouldn't matter as long as fopt = 0 originally*/ return problem; } From 08bee9568aa02cfc162e031b8f2f2140db916ede Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 8 Mar 2016 16:12:52 +0100 Subject: [PATCH 101/446] larege scale suite: solved inconsistent behaviour raising asserts in sub-problems of f_gallagher --- code-experiments/src/f_gallagher.c | 50 ++++++++++++++++-------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 85e6573ec..4e01edcb0 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -287,7 +287,7 @@ static void f_gallagher_versatile_data_free(coco_problem_t *problem) { size_t i; f_gallagher_versatile_data_t *versatile_data = (f_gallagher_versatile_data_t *) problem->versatile_data; /*free the problems one by one*/ - if (versatile_data->number_of_peaks > 0 && versatile_data->sub_problems != NULL) { + if (versatile_data->sub_problems != NULL) { for (i = 0; i < versatile_data->number_of_peaks; i++) { coco_problem_free(versatile_data->sub_problems[i]); } @@ -310,15 +310,17 @@ static double f_gallagher_sub_core(const double *x, const size_t number_of_varia double result, w_i, tmp; size_t i; - if (versatile_data->peak_index == 1) { + if (versatile_data->peak_index == 0) { w_i = 10; } else { - w_i = 1.1 + 8.0 * (((double)versatile_data->peak_index) - 2.0) / (((double)versatile_data->number_of_peaks) - 2.0); + w_i = 1.1 + 8.0 * (((double) versatile_data->peak_index + 1) - 2.0) / (((double)versatile_data->number_of_peaks) - 2.0); } tmp = 0; + for (i = 0; i < number_of_variables; i++) { /*compute x^T x */ tmp += x[i] * x[i]; } + result = w_i * exp(- 1.0 / (2.0 * ((double)number_of_variables)) * tmp); return result; @@ -337,16 +339,16 @@ static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double /** * @brief Allocates the basic gallagher sub problem. */ -static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_variables, int peak_index) { +static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_variables, int peak_index, size_t number_of_peaks) { coco_problem_t *problem_i = coco_problem_allocate_from_scalars("gallagher_sub function", f_gallagher_sub_evaluate_core, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); f_gallagher_versatile_data_t *versatile_data_tmp; problem_i->versatile_data = (f_gallagher_versatile_data_t *) coco_allocate_memory(sizeof(f_gallagher_versatile_data_t)); versatile_data_tmp = ((f_gallagher_versatile_data_t *) problem_i->versatile_data); - versatile_data_tmp->number_of_peaks = 0;/*sub-problem*/ + versatile_data_tmp->number_of_peaks = number_of_peaks;/*needed for w_i Wassim: consider moving the w_i computation to the global eval instead of the sub eval*/ versatile_data_tmp->sub_problems = NULL; - versatile_data_tmp->peak_index = peak_index + 1;/*consistent with doc*/ + versatile_data_tmp->peak_index = peak_index;/*consistent with doc*/ coco_problem_set_id(problem_i, "%s_d%04lu", "gallagher_sub", number_of_variables); @@ -372,12 +374,11 @@ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_ for (i = 0; i < f_gallagher_versatile_data->number_of_peaks; i++) { problem_i = f_gallagher_versatile_data->sub_problems[i]; problem_i->evaluate_function(problem_i, x, &y); - /*f_gallagher_sub_evaluate_core(problem_i, x, &y);*/ if ( i == 0 || maxf < y ) { maxf = y; } } - result = 10 - maxf; + result = 10.0 - maxf; return result; } @@ -424,9 +425,9 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz size_t i; int peak_index; - double *xopt, fopt, *y_i; + double fopt, *y_i; double penalty_factor = 1.0; - coco_problem_t *problem = NULL, *problem_i; + coco_problem_t *problem = NULL, **problem_i; double **B; const double *const *B_copy; size_t *P1, *P2; @@ -445,7 +446,6 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz * probability, not the largest condition level!!! */ fopt = bbob2009_compute_fopt(function, instance); - xopt = coco_allocate_vector(dimension);/*xopt is y1 */ if (number_of_peaks == peaks_101) { maxcondition = sqrt(maxcondition); b = 10.0; @@ -482,8 +482,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz for (peak_index = 0; peak_index < number_of_peaks; peak_index++) { /* allocate sub-problem */ - ((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index] = f_gallagher_sub_problem_allocate(dimension, peak_index); - problem_i = ((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index]; + ((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index] = f_gallagher_sub_problem_allocate(dimension, peak_index, number_of_peaks); + problem_i = &(((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index]); /* compute transformation parameters*/ /* y_i */ y_i = coco_allocate_vector(dimension); @@ -500,24 +500,27 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz alpha_i = alpha_i_vals[P_alpha_i[peak_index - 1]];/*already square-rooted */ } - + (*problem_i)->best_value[0] = 0;/* to prevent raising the assert */ /* P_Lambda the permutation */ P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the alpha_i's */ coco_compute_random_permutation(P_Lambda, rseed + 5000000, dimension); /* apply var transformations to sub problem*/ - problem_i = transform_vars_scale(problem, sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ - problem_i = transform_vars_conditioning(problem, alpha_i); - problem_i = transform_vars_permutation(problem, P_Lambda, dimension);/* Wassim: only works because sphere like*/ - problem_i = transform_vars_permutation(problem, P2, dimension); - problem_i = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); - problem_i = transform_vars_permutation(problem, P1, dimension); - problem_i = transform_vars_shift(problem, y_i, 0); - problem_i = transform_obj_norm_by_dim(problem_i);/* for the scalar product */ - + *problem_i = transform_vars_scale(*problem_i, sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ + *problem_i = transform_vars_conditioning(*problem_i, alpha_i); + *problem_i = transform_vars_permutation(*problem_i, P_Lambda, dimension);/* Wassim: only works because sphere like*/ + *problem_i = transform_vars_permutation(*problem_i, P2, dimension); + *problem_i = transform_vars_blockrotation(*problem_i, B_copy, dimension, block_sizes, nb_blocks); + *problem_i = transform_vars_permutation(*problem_i, P1, dimension); + *problem_i = transform_vars_shift(*problem_i, y_i, 0); + + *problem_i = transform_obj_norm_by_dim(*problem_i);/* for the scalar product */ + coco_free_memory(P_Lambda); coco_free_memory(y_i); + y_i = NULL; } + f_gallagher_evaluate_core(problem, problem->best_parameter, problem->best_value); /*transform global objective function*/ problem = transform_obj_oscillate(problem); @@ -534,7 +537,6 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_free_memory(P1); coco_free_memory(P2); coco_free_memory(block_sizes); - coco_free_memory(xopt); coco_free_memory(alpha_i_vals); coco_free_memory(P_alpha_i); return problem; From b626769ff2e9958d543cdf2a29a5b317878a5665 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 8 Mar 2016 16:12:52 +0100 Subject: [PATCH 102/446] larege scale suite: solved inconsistent behaviour raising asserts in sub-problems of f_gallagher --- code-experiments/src/f_gallagher.c | 50 ++++++++++++++++-------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 85e6573ec..4e01edcb0 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -287,7 +287,7 @@ static void f_gallagher_versatile_data_free(coco_problem_t *problem) { size_t i; f_gallagher_versatile_data_t *versatile_data = (f_gallagher_versatile_data_t *) problem->versatile_data; /*free the problems one by one*/ - if (versatile_data->number_of_peaks > 0 && versatile_data->sub_problems != NULL) { + if (versatile_data->sub_problems != NULL) { for (i = 0; i < versatile_data->number_of_peaks; i++) { coco_problem_free(versatile_data->sub_problems[i]); } @@ -310,15 +310,17 @@ static double f_gallagher_sub_core(const double *x, const size_t number_of_varia double result, w_i, tmp; size_t i; - if (versatile_data->peak_index == 1) { + if (versatile_data->peak_index == 0) { w_i = 10; } else { - w_i = 1.1 + 8.0 * (((double)versatile_data->peak_index) - 2.0) / (((double)versatile_data->number_of_peaks) - 2.0); + w_i = 1.1 + 8.0 * (((double) versatile_data->peak_index + 1) - 2.0) / (((double)versatile_data->number_of_peaks) - 2.0); } tmp = 0; + for (i = 0; i < number_of_variables; i++) { /*compute x^T x */ tmp += x[i] * x[i]; } + result = w_i * exp(- 1.0 / (2.0 * ((double)number_of_variables)) * tmp); return result; @@ -337,16 +339,16 @@ static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double /** * @brief Allocates the basic gallagher sub problem. */ -static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_variables, int peak_index) { +static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_variables, int peak_index, size_t number_of_peaks) { coco_problem_t *problem_i = coco_problem_allocate_from_scalars("gallagher_sub function", f_gallagher_sub_evaluate_core, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); f_gallagher_versatile_data_t *versatile_data_tmp; problem_i->versatile_data = (f_gallagher_versatile_data_t *) coco_allocate_memory(sizeof(f_gallagher_versatile_data_t)); versatile_data_tmp = ((f_gallagher_versatile_data_t *) problem_i->versatile_data); - versatile_data_tmp->number_of_peaks = 0;/*sub-problem*/ + versatile_data_tmp->number_of_peaks = number_of_peaks;/*needed for w_i Wassim: consider moving the w_i computation to the global eval instead of the sub eval*/ versatile_data_tmp->sub_problems = NULL; - versatile_data_tmp->peak_index = peak_index + 1;/*consistent with doc*/ + versatile_data_tmp->peak_index = peak_index;/*consistent with doc*/ coco_problem_set_id(problem_i, "%s_d%04lu", "gallagher_sub", number_of_variables); @@ -372,12 +374,11 @@ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_ for (i = 0; i < f_gallagher_versatile_data->number_of_peaks; i++) { problem_i = f_gallagher_versatile_data->sub_problems[i]; problem_i->evaluate_function(problem_i, x, &y); - /*f_gallagher_sub_evaluate_core(problem_i, x, &y);*/ if ( i == 0 || maxf < y ) { maxf = y; } } - result = 10 - maxf; + result = 10.0 - maxf; return result; } @@ -424,9 +425,9 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz size_t i; int peak_index; - double *xopt, fopt, *y_i; + double fopt, *y_i; double penalty_factor = 1.0; - coco_problem_t *problem = NULL, *problem_i; + coco_problem_t *problem = NULL, **problem_i; double **B; const double *const *B_copy; size_t *P1, *P2; @@ -445,7 +446,6 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz * probability, not the largest condition level!!! */ fopt = bbob2009_compute_fopt(function, instance); - xopt = coco_allocate_vector(dimension);/*xopt is y1 */ if (number_of_peaks == peaks_101) { maxcondition = sqrt(maxcondition); b = 10.0; @@ -482,8 +482,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz for (peak_index = 0; peak_index < number_of_peaks; peak_index++) { /* allocate sub-problem */ - ((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index] = f_gallagher_sub_problem_allocate(dimension, peak_index); - problem_i = ((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index]; + ((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index] = f_gallagher_sub_problem_allocate(dimension, peak_index, number_of_peaks); + problem_i = &(((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index]); /* compute transformation parameters*/ /* y_i */ y_i = coco_allocate_vector(dimension); @@ -500,24 +500,27 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz alpha_i = alpha_i_vals[P_alpha_i[peak_index - 1]];/*already square-rooted */ } - + (*problem_i)->best_value[0] = 0;/* to prevent raising the assert */ /* P_Lambda the permutation */ P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the alpha_i's */ coco_compute_random_permutation(P_Lambda, rseed + 5000000, dimension); /* apply var transformations to sub problem*/ - problem_i = transform_vars_scale(problem, sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ - problem_i = transform_vars_conditioning(problem, alpha_i); - problem_i = transform_vars_permutation(problem, P_Lambda, dimension);/* Wassim: only works because sphere like*/ - problem_i = transform_vars_permutation(problem, P2, dimension); - problem_i = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); - problem_i = transform_vars_permutation(problem, P1, dimension); - problem_i = transform_vars_shift(problem, y_i, 0); - problem_i = transform_obj_norm_by_dim(problem_i);/* for the scalar product */ - + *problem_i = transform_vars_scale(*problem_i, sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ + *problem_i = transform_vars_conditioning(*problem_i, alpha_i); + *problem_i = transform_vars_permutation(*problem_i, P_Lambda, dimension);/* Wassim: only works because sphere like*/ + *problem_i = transform_vars_permutation(*problem_i, P2, dimension); + *problem_i = transform_vars_blockrotation(*problem_i, B_copy, dimension, block_sizes, nb_blocks); + *problem_i = transform_vars_permutation(*problem_i, P1, dimension); + *problem_i = transform_vars_shift(*problem_i, y_i, 0); + + *problem_i = transform_obj_norm_by_dim(*problem_i);/* for the scalar product */ + coco_free_memory(P_Lambda); coco_free_memory(y_i); + y_i = NULL; } + f_gallagher_evaluate_core(problem, problem->best_parameter, problem->best_value); /*transform global objective function*/ problem = transform_obj_oscillate(problem); @@ -534,7 +537,6 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_free_memory(P1); coco_free_memory(P2); coco_free_memory(block_sizes); - coco_free_memory(xopt); coco_free_memory(alpha_i_vals); coco_free_memory(P_alpha_i); return problem; From 2a63d6dd095eebae51b605c0c35a7b2d9d792aae Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 8 Mar 2016 17:19:05 +0100 Subject: [PATCH 103/446] Update f_step_ellipsoid.c --- code-experiments/src/f_step_ellipsoid.c | 174 +++++++++++++----------- 1 file changed, 93 insertions(+), 81 deletions(-) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index ceb5c64f6..5ea520283 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -35,7 +35,6 @@ typedef struct { double **rot1, **rot2; } f_step_ellipsoid_data_t; - /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ @@ -175,7 +174,7 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ -static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { +static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables, f_step_ellipsoid_versatile_data_t *f_step_ellipsoid_versatile_data) { static const double condition = 100; size_t i; @@ -186,9 +185,8 @@ static double f_step_ellipsoid_core(const double *x, const size_t number_of_vari double exponent; exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); result += pow(condition, exponent) * x[i] * x[i]; - ; } - result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ + result = 0.1 * coco_double_max(f_step_ellipsoid_versatile_data->zhat_1 * 1.0e-4, result); return result; } @@ -198,10 +196,22 @@ static double f_step_ellipsoid_core(const double *x, const size_t number_of_vari */ static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); + y[0] = f_step_ellipsoid_core(x, problem->number_of_variables, (f_step_ellipsoid_versatile_data_t *) problem->versatile_data); assert(y[0] + 1e-13 >= problem->best_value[0]); } +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_step_ellipsoid_versatile_data_free(coco_problem_t *problem) { + coco_free_memory((f_step_ellipsoid_versatile_data_t *) problem->versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + + + /** * @brief Allocates the basic step ellipsoid problem. * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. @@ -209,17 +219,20 @@ static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const d static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); - problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ - problem->best_parameter[number_of_variables] = -1.0; - + f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + problem->versatile_data = (f_step_ellipsoid_versatile_data_t *) coco_allocate_memory(sizeof(f_step_ellipsoid_versatile_data_t)); + ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = 0;/*needed for xopt evaluation*/ + /* add the free function of the allocated versatile_data*/ + problem->problem_free_function = f_step_ellipsoid_versatile_data_free; + coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); - /* Compute best solution */ + /* Compute best solution, here done outside after the zhat is set to the best_value */ f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); - return problem; } + + /** * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. */ @@ -229,74 +242,73 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons const long rseed, const char *problem_id_template, const char *problem_name_template) { - double alpha = 10.; /*parameter of rounding*/ - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B1, **B2; - const double *const *B1_copy; - const double *const *B2_copy; - size_t *P11, *P12, *P21, *P22; - size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; - double penalty_factor = 1.; - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); - swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); - swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); - nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1; - B2_copy = (const double *const *)B2; - coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); - - P11 = coco_allocate_vector_size_t(dimension); - P12 = coco_allocate_vector_size_t(dimension); - P21 = coco_allocate_vector_size_t(dimension); - P22 = coco_allocate_vector_size_t(dimension); - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); - - problem = f_step_ellipsoid_allocate(dimension); - - problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ - - problem = transform_vars_conditioning(problem, 10.0); - problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); - problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_penalize(problem, penalty_factor); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - coco_free_block_matrix(B1, dimension); - coco_free_block_matrix(B2, dimension); - coco_free_memory(P11); - coco_free_memory(P21); - coco_free_memory(P12); - coco_free_memory(P22); - coco_free_memory(block_sizes1); - coco_free_memory(block_sizes2); - coco_free_memory(xopt); - - return problem; -} + double alpha = 10.; /*parameter of rounding*/ + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1, **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11, *P12, *P21, *P22; + size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; + double penalty_factor = 1.; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); + + P11 = coco_allocate_vector_size_t(dimension); + P12 = coco_allocate_vector_size_t(dimension); + P21 = coco_allocate_vector_size_t(dimension); + P22 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); + + problem = f_step_ellipsoid_allocate(dimension); + + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ + + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P12); + coco_free_memory(P21); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + + return problem; +} From b5521bff9bf2575d229c8f60f1f2a99cba72f2c2 Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 8 Mar 2016 17:19:05 +0100 Subject: [PATCH 104/446] Update f_step_ellipsoid.c --- code-experiments/src/f_step_ellipsoid.c | 174 +++++++++++++----------- 1 file changed, 93 insertions(+), 81 deletions(-) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index ceb5c64f6..5ea520283 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -35,7 +35,6 @@ typedef struct { double **rot1, **rot2; } f_step_ellipsoid_data_t; - /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ @@ -175,7 +174,7 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ -static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { +static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables, f_step_ellipsoid_versatile_data_t *f_step_ellipsoid_versatile_data) { static const double condition = 100; size_t i; @@ -186,9 +185,8 @@ static double f_step_ellipsoid_core(const double *x, const size_t number_of_vari double exponent; exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); result += pow(condition, exponent) * x[i] * x[i]; - ; } - result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ + result = 0.1 * coco_double_max(f_step_ellipsoid_versatile_data->zhat_1 * 1.0e-4, result); return result; } @@ -198,10 +196,22 @@ static double f_step_ellipsoid_core(const double *x, const size_t number_of_vari */ static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); + y[0] = f_step_ellipsoid_core(x, problem->number_of_variables, (f_step_ellipsoid_versatile_data_t *) problem->versatile_data); assert(y[0] + 1e-13 >= problem->best_value[0]); } +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_step_ellipsoid_versatile_data_free(coco_problem_t *problem) { + coco_free_memory((f_step_ellipsoid_versatile_data_t *) problem->versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + + + /** * @brief Allocates the basic step ellipsoid problem. * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. @@ -209,17 +219,20 @@ static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const d static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); - problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ - problem->best_parameter[number_of_variables] = -1.0; - + f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + problem->versatile_data = (f_step_ellipsoid_versatile_data_t *) coco_allocate_memory(sizeof(f_step_ellipsoid_versatile_data_t)); + ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = 0;/*needed for xopt evaluation*/ + /* add the free function of the allocated versatile_data*/ + problem->problem_free_function = f_step_ellipsoid_versatile_data_free; + coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); - /* Compute best solution */ + /* Compute best solution, here done outside after the zhat is set to the best_value */ f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); - return problem; } + + /** * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. */ @@ -229,74 +242,73 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons const long rseed, const char *problem_id_template, const char *problem_name_template) { - double alpha = 10.; /*parameter of rounding*/ - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B1, **B2; - const double *const *B1_copy; - const double *const *B2_copy; - size_t *P11, *P12, *P21, *P22; - size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; - double penalty_factor = 1.; - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); - swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); - swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); - nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1; - B2_copy = (const double *const *)B2; - coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); - - P11 = coco_allocate_vector_size_t(dimension); - P12 = coco_allocate_vector_size_t(dimension); - P21 = coco_allocate_vector_size_t(dimension); - P22 = coco_allocate_vector_size_t(dimension); - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); - - problem = f_step_ellipsoid_allocate(dimension); - - problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ - - problem = transform_vars_conditioning(problem, 10.0); - problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); - problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_penalize(problem, penalty_factor); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - coco_free_block_matrix(B1, dimension); - coco_free_block_matrix(B2, dimension); - coco_free_memory(P11); - coco_free_memory(P21); - coco_free_memory(P12); - coco_free_memory(P22); - coco_free_memory(block_sizes1); - coco_free_memory(block_sizes2); - coco_free_memory(xopt); - - return problem; -} + double alpha = 10.; /*parameter of rounding*/ + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1, **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11, *P12, *P21, *P22; + size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; + double penalty_factor = 1.; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); + + P11 = coco_allocate_vector_size_t(dimension); + P12 = coco_allocate_vector_size_t(dimension); + P21 = coco_allocate_vector_size_t(dimension); + P22 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); + + problem = f_step_ellipsoid_allocate(dimension); + + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ + + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P12); + coco_free_memory(P21); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + + return problem; +} From bf674153128ed5470fb20ef31f76c19f4ccd1fc2 Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 8 Mar 2016 17:20:22 +0100 Subject: [PATCH 105/446] Delete f_step_ellipsoid.c --- code-experiments/src/f_step_ellipsoid.c | 314 ------------------------ 1 file changed, 314 deletions(-) delete mode 100644 code-experiments/src/f_step_ellipsoid.c diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c deleted file mode 100644 index 5ea520283..000000000 --- a/code-experiments/src/f_step_ellipsoid.c +++ /dev/null @@ -1,314 +0,0 @@ -/** - * @file f_step_ellipsoid.c - * @brief Implementation of the step ellipsoid function and problem. - * - * The BBOB step ellipsoid function intertwines the variable and objective transformations in such a way - * that it is hard to devise a composition of generic transformations to implement it. In the end one would - * have to implement several custom transformations which would be used solely by this problem. Therefore - * we opt to implement it as a monolithic function instead. - * - * TODO: It would be nice to have a generic step ellipsoid function to complement this one. - */ -#include - -#include "coco.h" -#include "coco_problem.c" -#include "coco_utilities.c" -#include "suite_bbob_legacy_code.c" - -#include "transform_obj_penalize.c" -#include "transform_obj_shift.c" -#include "transform_vars_shift.c" - -#include "transform_vars_permutation.c" -#include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" -#include "transform_vars_round_step.c" - - -/** - * @brief Data type for the step ellipsoid problem. - */ -typedef struct { - double *x, *xx; - double *xopt, fopt; - double **rot1, **rot2; -} f_step_ellipsoid_data_t; - -/** - * @brief Implements the step ellipsoid function without connections to any COCO structures. - */ -static double f_step_ellipsoid_raw(const double *x, const size_t number_of_variables, f_step_ellipsoid_data_t *data) { - - static const double condition = 100; - static const double alpha = 10.0; - size_t i, j; - double penalty = 0.0, x1; - double result; - - assert(number_of_variables > 1); - - for (i = 0; i < number_of_variables; ++i) { - double tmp; - tmp = fabs(x[i]) - 5.0; - if (tmp > 0.0) - penalty += tmp * tmp; - } - - for (i = 0; i < number_of_variables; ++i) { - double c1; - data->x[i] = 0.0; - c1 = sqrt(pow(condition / 10., (double) i / (double) (number_of_variables - 1))); - for (j = 0; j < number_of_variables; ++j) { - data->x[i] += c1 * data->rot2[i][j] * (x[j] - data->xopt[j]); - } - } - x1 = data->x[0]; - - for (i = 0; i < number_of_variables; ++i) { - if (fabs(data->x[i]) > 0.5) - data->x[i] = coco_double_round(data->x[i]); - else - data->x[i] = coco_double_round(alpha * data->x[i]) / alpha; - } - - for (i = 0; i < number_of_variables; ++i) { - data->xx[i] = 0.0; - for (j = 0; j < number_of_variables; ++j) { - data->xx[i] += data->rot1[i][j] * data->x[j]; - } - } - - /* Computation core */ - result = 0.0; - for (i = 0; i < number_of_variables; ++i) { - double exponent; - exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); - result += pow(condition, exponent) * data->xx[i] * data->xx[i]; - ; - } - result = 0.1 * coco_double_max(fabs(x1) * 1.0e-4, result) + penalty + data->fopt; - - return result; -} - -/** - * @brief Uses the raw function to evaluate the COCO problem. - */ -static void f_step_ellipsoid_evaluate(coco_problem_t *problem, const double *x, double *y) { - assert(problem->number_of_objectives == 1); - y[0] = f_step_ellipsoid_raw(x, problem->number_of_variables, (f_step_ellipsoid_data_t *) problem->data); - assert(y[0] + 1e-13 >= problem->best_value[0]); -} - -/** - * @brief Frees the step ellipsoid data object. - */ -static void f_step_ellipsoid_free(coco_problem_t *problem) { - f_step_ellipsoid_data_t *data; - data = (f_step_ellipsoid_data_t *) problem->data; - coco_free_memory(data->x); - coco_free_memory(data->xx); - coco_free_memory(data->xopt); - bbob2009_free_matrix(data->rot1, problem->number_of_variables); - bbob2009_free_matrix(data->rot2, problem->number_of_variables); - /* Let the generic free problem code deal with all of the coco_problem_t fields */ - problem->problem_free_function = NULL; - coco_problem_free(problem); -} - -/** - * @brief Creates the BBOB step ellipsoid problem. - * - * @note There is no separate basic allocate function. - */ -static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - - f_step_ellipsoid_data_t *data; - size_t i; - coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_evaluate, f_step_ellipsoid_free, dimension, -5.0, 5.0, 0); - - data = (f_step_ellipsoid_data_t *) coco_allocate_memory(sizeof(*data)); - /* Allocate temporary storage and space for the rotation matrices */ - data->x = coco_allocate_vector(dimension); - data->xx = coco_allocate_vector(dimension); - data->xopt = coco_allocate_vector(dimension); - data->rot1 = bbob2009_allocate_matrix(dimension, dimension); - data->rot2 = bbob2009_allocate_matrix(dimension, dimension); - - data->fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(data->xopt, rseed, dimension); - bbob2009_compute_rotation(data->rot1, rseed + 1000000, dimension); - bbob2009_compute_rotation(data->rot2, rseed, dimension); - - problem->data = data; - - /* Compute best solution - * - * OME: Dirty hack for now because I did not want to invert the - * transformations to find the best_parameter :/ - */ - for (i = 0; i < problem->number_of_variables; i++) { - problem->best_parameter[i] = data->xopt[i]; - } - problem->best_value[0] = data->fopt; - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "2-moderate"); - - return problem; -} - - - - - - -/** - * @brief Implements the step ellipsoid function without connections to any COCO structures. - */ -static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables, f_step_ellipsoid_versatile_data_t *f_step_ellipsoid_versatile_data) { - - static const double condition = 100; - size_t i; - double result; - result = 0.0; - - for (i = 0; i < number_of_variables; ++i) { - double exponent; - exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); - result += pow(condition, exponent) * x[i] * x[i]; - } - result = 0.1 * coco_double_max(f_step_ellipsoid_versatile_data->zhat_1 * 1.0e-4, result); - return result; -} - - -/** - * @brief Uses the raw function to evaluate the ls COCO problem. - */ -static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { - assert(problem->number_of_objectives == 1); - y[0] = f_step_ellipsoid_core(x, problem->number_of_variables, (f_step_ellipsoid_versatile_data_t *) problem->versatile_data); - assert(y[0] + 1e-13 >= problem->best_value[0]); -} - -/** - * @brief allows to free the versatile_data part of the problem. - */ -static void f_step_ellipsoid_versatile_data_free(coco_problem_t *problem) { - coco_free_memory((f_step_ellipsoid_versatile_data_t *) problem->versatile_data); - problem->versatile_data = NULL; - problem->problem_free_function = NULL; - coco_problem_free(problem); -} - - - -/** - * @brief Allocates the basic step ellipsoid problem. - * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. - */ -static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { - - coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); - problem->versatile_data = (f_step_ellipsoid_versatile_data_t *) coco_allocate_memory(sizeof(f_step_ellipsoid_versatile_data_t)); - ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = 0;/*needed for xopt evaluation*/ - /* add the free function of the allocated versatile_data*/ - problem->problem_free_function = f_step_ellipsoid_versatile_data_free; - - coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); - /* Compute best solution, here done outside after the zhat is set to the best_value */ - f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); - return problem; -} - - - -/** - * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. - */ -static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - double alpha = 10.; /*parameter of rounding*/ - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B1, **B2; - const double *const *B1_copy; - const double *const *B2_copy; - size_t *P11, *P12, *P21, *P22; - size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; - double penalty_factor = 1.; - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); - swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); - swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); - nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1; - B2_copy = (const double *const *)B2; - coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); - - P11 = coco_allocate_vector_size_t(dimension); - P12 = coco_allocate_vector_size_t(dimension); - P21 = coco_allocate_vector_size_t(dimension); - P22 = coco_allocate_vector_size_t(dimension); - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); - - problem = f_step_ellipsoid_allocate(dimension); - - problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ - - problem = transform_vars_conditioning(problem, 10.0); - problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); - problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_penalize(problem, penalty_factor); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - coco_free_block_matrix(B1, dimension); - coco_free_block_matrix(B2, dimension); - coco_free_memory(P11); - coco_free_memory(P12); - coco_free_memory(P21); - coco_free_memory(P22); - coco_free_memory(block_sizes1); - coco_free_memory(block_sizes2); - coco_free_memory(xopt); - - return problem; -} From 22a52017c8992f6eb07af0b5b17d191d7028194a Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 8 Mar 2016 17:20:22 +0100 Subject: [PATCH 106/446] Delete f_step_ellipsoid.c --- code-experiments/src/f_step_ellipsoid.c | 314 ------------------------ 1 file changed, 314 deletions(-) delete mode 100644 code-experiments/src/f_step_ellipsoid.c diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c deleted file mode 100644 index 5ea520283..000000000 --- a/code-experiments/src/f_step_ellipsoid.c +++ /dev/null @@ -1,314 +0,0 @@ -/** - * @file f_step_ellipsoid.c - * @brief Implementation of the step ellipsoid function and problem. - * - * The BBOB step ellipsoid function intertwines the variable and objective transformations in such a way - * that it is hard to devise a composition of generic transformations to implement it. In the end one would - * have to implement several custom transformations which would be used solely by this problem. Therefore - * we opt to implement it as a monolithic function instead. - * - * TODO: It would be nice to have a generic step ellipsoid function to complement this one. - */ -#include - -#include "coco.h" -#include "coco_problem.c" -#include "coco_utilities.c" -#include "suite_bbob_legacy_code.c" - -#include "transform_obj_penalize.c" -#include "transform_obj_shift.c" -#include "transform_vars_shift.c" - -#include "transform_vars_permutation.c" -#include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" -#include "transform_vars_round_step.c" - - -/** - * @brief Data type for the step ellipsoid problem. - */ -typedef struct { - double *x, *xx; - double *xopt, fopt; - double **rot1, **rot2; -} f_step_ellipsoid_data_t; - -/** - * @brief Implements the step ellipsoid function without connections to any COCO structures. - */ -static double f_step_ellipsoid_raw(const double *x, const size_t number_of_variables, f_step_ellipsoid_data_t *data) { - - static const double condition = 100; - static const double alpha = 10.0; - size_t i, j; - double penalty = 0.0, x1; - double result; - - assert(number_of_variables > 1); - - for (i = 0; i < number_of_variables; ++i) { - double tmp; - tmp = fabs(x[i]) - 5.0; - if (tmp > 0.0) - penalty += tmp * tmp; - } - - for (i = 0; i < number_of_variables; ++i) { - double c1; - data->x[i] = 0.0; - c1 = sqrt(pow(condition / 10., (double) i / (double) (number_of_variables - 1))); - for (j = 0; j < number_of_variables; ++j) { - data->x[i] += c1 * data->rot2[i][j] * (x[j] - data->xopt[j]); - } - } - x1 = data->x[0]; - - for (i = 0; i < number_of_variables; ++i) { - if (fabs(data->x[i]) > 0.5) - data->x[i] = coco_double_round(data->x[i]); - else - data->x[i] = coco_double_round(alpha * data->x[i]) / alpha; - } - - for (i = 0; i < number_of_variables; ++i) { - data->xx[i] = 0.0; - for (j = 0; j < number_of_variables; ++j) { - data->xx[i] += data->rot1[i][j] * data->x[j]; - } - } - - /* Computation core */ - result = 0.0; - for (i = 0; i < number_of_variables; ++i) { - double exponent; - exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); - result += pow(condition, exponent) * data->xx[i] * data->xx[i]; - ; - } - result = 0.1 * coco_double_max(fabs(x1) * 1.0e-4, result) + penalty + data->fopt; - - return result; -} - -/** - * @brief Uses the raw function to evaluate the COCO problem. - */ -static void f_step_ellipsoid_evaluate(coco_problem_t *problem, const double *x, double *y) { - assert(problem->number_of_objectives == 1); - y[0] = f_step_ellipsoid_raw(x, problem->number_of_variables, (f_step_ellipsoid_data_t *) problem->data); - assert(y[0] + 1e-13 >= problem->best_value[0]); -} - -/** - * @brief Frees the step ellipsoid data object. - */ -static void f_step_ellipsoid_free(coco_problem_t *problem) { - f_step_ellipsoid_data_t *data; - data = (f_step_ellipsoid_data_t *) problem->data; - coco_free_memory(data->x); - coco_free_memory(data->xx); - coco_free_memory(data->xopt); - bbob2009_free_matrix(data->rot1, problem->number_of_variables); - bbob2009_free_matrix(data->rot2, problem->number_of_variables); - /* Let the generic free problem code deal with all of the coco_problem_t fields */ - problem->problem_free_function = NULL; - coco_problem_free(problem); -} - -/** - * @brief Creates the BBOB step ellipsoid problem. - * - * @note There is no separate basic allocate function. - */ -static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - - f_step_ellipsoid_data_t *data; - size_t i; - coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_evaluate, f_step_ellipsoid_free, dimension, -5.0, 5.0, 0); - - data = (f_step_ellipsoid_data_t *) coco_allocate_memory(sizeof(*data)); - /* Allocate temporary storage and space for the rotation matrices */ - data->x = coco_allocate_vector(dimension); - data->xx = coco_allocate_vector(dimension); - data->xopt = coco_allocate_vector(dimension); - data->rot1 = bbob2009_allocate_matrix(dimension, dimension); - data->rot2 = bbob2009_allocate_matrix(dimension, dimension); - - data->fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(data->xopt, rseed, dimension); - bbob2009_compute_rotation(data->rot1, rseed + 1000000, dimension); - bbob2009_compute_rotation(data->rot2, rseed, dimension); - - problem->data = data; - - /* Compute best solution - * - * OME: Dirty hack for now because I did not want to invert the - * transformations to find the best_parameter :/ - */ - for (i = 0; i < problem->number_of_variables; i++) { - problem->best_parameter[i] = data->xopt[i]; - } - problem->best_value[0] = data->fopt; - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "2-moderate"); - - return problem; -} - - - - - - -/** - * @brief Implements the step ellipsoid function without connections to any COCO structures. - */ -static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables, f_step_ellipsoid_versatile_data_t *f_step_ellipsoid_versatile_data) { - - static const double condition = 100; - size_t i; - double result; - result = 0.0; - - for (i = 0; i < number_of_variables; ++i) { - double exponent; - exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); - result += pow(condition, exponent) * x[i] * x[i]; - } - result = 0.1 * coco_double_max(f_step_ellipsoid_versatile_data->zhat_1 * 1.0e-4, result); - return result; -} - - -/** - * @brief Uses the raw function to evaluate the ls COCO problem. - */ -static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { - assert(problem->number_of_objectives == 1); - y[0] = f_step_ellipsoid_core(x, problem->number_of_variables, (f_step_ellipsoid_versatile_data_t *) problem->versatile_data); - assert(y[0] + 1e-13 >= problem->best_value[0]); -} - -/** - * @brief allows to free the versatile_data part of the problem. - */ -static void f_step_ellipsoid_versatile_data_free(coco_problem_t *problem) { - coco_free_memory((f_step_ellipsoid_versatile_data_t *) problem->versatile_data); - problem->versatile_data = NULL; - problem->problem_free_function = NULL; - coco_problem_free(problem); -} - - - -/** - * @brief Allocates the basic step ellipsoid problem. - * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. - */ -static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { - - coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); - problem->versatile_data = (f_step_ellipsoid_versatile_data_t *) coco_allocate_memory(sizeof(f_step_ellipsoid_versatile_data_t)); - ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = 0;/*needed for xopt evaluation*/ - /* add the free function of the allocated versatile_data*/ - problem->problem_free_function = f_step_ellipsoid_versatile_data_free; - - coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); - /* Compute best solution, here done outside after the zhat is set to the best_value */ - f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); - return problem; -} - - - -/** - * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. - */ -static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - double alpha = 10.; /*parameter of rounding*/ - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B1, **B2; - const double *const *B1_copy; - const double *const *B2_copy; - size_t *P11, *P12, *P21, *P22; - size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; - double penalty_factor = 1.; - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); - swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); - swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); - nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1; - B2_copy = (const double *const *)B2; - coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); - - P11 = coco_allocate_vector_size_t(dimension); - P12 = coco_allocate_vector_size_t(dimension); - P21 = coco_allocate_vector_size_t(dimension); - P22 = coco_allocate_vector_size_t(dimension); - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); - - problem = f_step_ellipsoid_allocate(dimension); - - problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ - - problem = transform_vars_conditioning(problem, 10.0); - problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); - problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_penalize(problem, penalty_factor); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - coco_free_block_matrix(B1, dimension); - coco_free_block_matrix(B2, dimension); - coco_free_memory(P11); - coco_free_memory(P12); - coco_free_memory(P21); - coco_free_memory(P22); - coco_free_memory(block_sizes1); - coco_free_memory(block_sizes2); - coco_free_memory(xopt); - - return problem; -} From 11170d41422b12acb4954177ba7a16356011dca5 Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 8 Mar 2016 17:40:58 +0100 Subject: [PATCH 107/446] Added files via upload --- code-experiments/src/f_step_ellipsoid.c | 198 +++++++++++++++++++++--- 1 file changed, 180 insertions(+), 18 deletions(-) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index aefad10d2..59a6aacb4 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -1,5 +1,6 @@ -/* - * f_step_ellipsoid.c +/** + * @file f_step_ellipsoid.c + * @brief Implementation of the step ellipsoid function and problem. * * The BBOB step ellipsoid function intertwines the variable and objective transformations in such a way * that it is hard to devise a composition of generic transformations to implement it. In the end one would @@ -15,13 +16,30 @@ #include "coco_utilities.c" #include "suite_bbob_legacy_code.c" +#include "transform_obj_penalize.c" +#include "transform_obj_shift.c" +#include "transform_vars_shift.c" + +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" +#include "transform_vars_round_step.c" + + +/** + * @brief Data type for the step ellipsoid problem. + */ typedef struct { double *x, *xx; double *xopt, fopt; double **rot1, **rot2; } f_step_ellipsoid_data_t; -static double f_step_ellipsoid_raw(const double *x, size_t number_of_variables, f_step_ellipsoid_data_t *data) { + +/** + * @brief Implements the step ellipsoid function without connections to any COCO structures. + */ +static double f_step_ellipsoid_raw(const double *x, const size_t number_of_variables, f_step_ellipsoid_data_t *data) { static const double condition = 100; static const double alpha = 10.0; @@ -50,9 +68,9 @@ static double f_step_ellipsoid_raw(const double *x, size_t number_of_variables, for (i = 0; i < number_of_variables; ++i) { if (fabs(data->x[i]) > 0.5) - data->x[i] = coco_round_double(data->x[i]); + data->x[i] = coco_double_round(data->x[i]); else - data->x[i] = coco_round_double(alpha * data->x[i]) / alpha; + data->x[i] = coco_double_round(alpha * data->x[i]) / alpha; } for (i = 0; i < number_of_variables; ++i) { @@ -70,31 +88,41 @@ static double f_step_ellipsoid_raw(const double *x, size_t number_of_variables, result += pow(condition, exponent) * data->xx[i] * data->xx[i]; ; } - result = 0.1 * coco_max_double(fabs(x1) * 1.0e-4, result) + penalty + data->fopt; + result = 0.1 * coco_double_max(fabs(x1) * 1.0e-4, result) + penalty + data->fopt; return result; } -static void f_step_ellipsoid_evaluate(coco_problem_t *self, const double *x, double *y) { - assert(self->number_of_objectives == 1); - y[0] = f_step_ellipsoid_raw(x, self->number_of_variables, self->data); +/** + * @brief Uses the raw function to evaluate the COCO problem. + */ +static void f_step_ellipsoid_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_step_ellipsoid_raw(x, problem->number_of_variables, (f_step_ellipsoid_data_t *) problem->data); + assert(y[0] + 1e-13 >= problem->best_value[0]); } -static void f_step_ellipsoid_free(coco_problem_t *self) { +/** + * @brief Frees the step ellipsoid data object. + */ +static void f_step_ellipsoid_free(coco_problem_t *problem) { f_step_ellipsoid_data_t *data; - data = self->data; + data = (f_step_ellipsoid_data_t *) problem->data; coco_free_memory(data->x); coco_free_memory(data->xx); coco_free_memory(data->xopt); - bbob2009_free_matrix(data->rot1, self->number_of_variables); - bbob2009_free_matrix(data->rot2, self->number_of_variables); + bbob2009_free_matrix(data->rot1, problem->number_of_variables); + bbob2009_free_matrix(data->rot2, problem->number_of_variables); /* Let the generic free problem code deal with all of the coco_problem_t fields */ - self->free_problem = NULL; - coco_problem_free(self); + problem->problem_free_function = NULL; + coco_problem_free(problem); } -/* Note: there is no separate f_step_ellipsoid_allocate() function! */ - +/** + * @brief Creates the BBOB step ellipsoid problem. + * + * @note There is no separate basic allocate function. + */ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, @@ -107,7 +135,7 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", f_step_ellipsoid_evaluate, f_step_ellipsoid_free, dimension, -5.0, 5.0, 0); - data = coco_allocate_memory(sizeof(*data)); + data = (f_step_ellipsoid_data_t *) coco_allocate_memory(sizeof(*data)); /* Allocate temporary storage and space for the rotation matrices */ data->x = coco_allocate_vector(dimension); data->xx = coco_allocate_vector(dimension); @@ -138,3 +166,137 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct return problem; } + + + + + + +/** + * @brief Implements the step ellipsoid function without connections to any COCO structures. + */ +static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { + + static const double condition = 100; + size_t i; + double result; + result = 0.0; + + for (i = 0; i < number_of_variables; ++i) { + double exponent; + exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); + result += pow(condition, exponent) * x[i] * x[i]; + ; + } + result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ + return result; +} + + +/** + * @brief Uses the raw function to evaluate the ls COCO problem. + */ +static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic step ellipsoid problem. + * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. + */ +static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", + f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); + problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ + problem->best_parameter[number_of_variables] = -1.0; + + coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); + /* Compute best solution */ + f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); + + return problem; +} + +/** + * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. + */ +static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double alpha = 10.; /*parameter of rounding*/ + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1, **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11, *P12, *P21, *P22; + size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; + double penalty_factor = 1.; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); + + P11 = coco_allocate_vector_size_t(dimension); + P12 = coco_allocate_vector_size_t(dimension); + P21 = coco_allocate_vector_size_t(dimension); + P22 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); + + problem = f_step_ellipsoid_allocate(dimension); + + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ + + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + +return problem; +} + From 1fce13723e319dda524a11956a64ecbe9aa69421 Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 8 Mar 2016 17:40:58 +0100 Subject: [PATCH 108/446] Added files via upload --- code-experiments/src/f_step_ellipsoid.c | 198 +++++++++++++++++++++--- 1 file changed, 180 insertions(+), 18 deletions(-) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index aefad10d2..59a6aacb4 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -1,5 +1,6 @@ -/* - * f_step_ellipsoid.c +/** + * @file f_step_ellipsoid.c + * @brief Implementation of the step ellipsoid function and problem. * * The BBOB step ellipsoid function intertwines the variable and objective transformations in such a way * that it is hard to devise a composition of generic transformations to implement it. In the end one would @@ -15,13 +16,30 @@ #include "coco_utilities.c" #include "suite_bbob_legacy_code.c" +#include "transform_obj_penalize.c" +#include "transform_obj_shift.c" +#include "transform_vars_shift.c" + +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" +#include "transform_vars_round_step.c" + + +/** + * @brief Data type for the step ellipsoid problem. + */ typedef struct { double *x, *xx; double *xopt, fopt; double **rot1, **rot2; } f_step_ellipsoid_data_t; -static double f_step_ellipsoid_raw(const double *x, size_t number_of_variables, f_step_ellipsoid_data_t *data) { + +/** + * @brief Implements the step ellipsoid function without connections to any COCO structures. + */ +static double f_step_ellipsoid_raw(const double *x, const size_t number_of_variables, f_step_ellipsoid_data_t *data) { static const double condition = 100; static const double alpha = 10.0; @@ -50,9 +68,9 @@ static double f_step_ellipsoid_raw(const double *x, size_t number_of_variables, for (i = 0; i < number_of_variables; ++i) { if (fabs(data->x[i]) > 0.5) - data->x[i] = coco_round_double(data->x[i]); + data->x[i] = coco_double_round(data->x[i]); else - data->x[i] = coco_round_double(alpha * data->x[i]) / alpha; + data->x[i] = coco_double_round(alpha * data->x[i]) / alpha; } for (i = 0; i < number_of_variables; ++i) { @@ -70,31 +88,41 @@ static double f_step_ellipsoid_raw(const double *x, size_t number_of_variables, result += pow(condition, exponent) * data->xx[i] * data->xx[i]; ; } - result = 0.1 * coco_max_double(fabs(x1) * 1.0e-4, result) + penalty + data->fopt; + result = 0.1 * coco_double_max(fabs(x1) * 1.0e-4, result) + penalty + data->fopt; return result; } -static void f_step_ellipsoid_evaluate(coco_problem_t *self, const double *x, double *y) { - assert(self->number_of_objectives == 1); - y[0] = f_step_ellipsoid_raw(x, self->number_of_variables, self->data); +/** + * @brief Uses the raw function to evaluate the COCO problem. + */ +static void f_step_ellipsoid_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_step_ellipsoid_raw(x, problem->number_of_variables, (f_step_ellipsoid_data_t *) problem->data); + assert(y[0] + 1e-13 >= problem->best_value[0]); } -static void f_step_ellipsoid_free(coco_problem_t *self) { +/** + * @brief Frees the step ellipsoid data object. + */ +static void f_step_ellipsoid_free(coco_problem_t *problem) { f_step_ellipsoid_data_t *data; - data = self->data; + data = (f_step_ellipsoid_data_t *) problem->data; coco_free_memory(data->x); coco_free_memory(data->xx); coco_free_memory(data->xopt); - bbob2009_free_matrix(data->rot1, self->number_of_variables); - bbob2009_free_matrix(data->rot2, self->number_of_variables); + bbob2009_free_matrix(data->rot1, problem->number_of_variables); + bbob2009_free_matrix(data->rot2, problem->number_of_variables); /* Let the generic free problem code deal with all of the coco_problem_t fields */ - self->free_problem = NULL; - coco_problem_free(self); + problem->problem_free_function = NULL; + coco_problem_free(problem); } -/* Note: there is no separate f_step_ellipsoid_allocate() function! */ - +/** + * @brief Creates the BBOB step ellipsoid problem. + * + * @note There is no separate basic allocate function. + */ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, @@ -107,7 +135,7 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", f_step_ellipsoid_evaluate, f_step_ellipsoid_free, dimension, -5.0, 5.0, 0); - data = coco_allocate_memory(sizeof(*data)); + data = (f_step_ellipsoid_data_t *) coco_allocate_memory(sizeof(*data)); /* Allocate temporary storage and space for the rotation matrices */ data->x = coco_allocate_vector(dimension); data->xx = coco_allocate_vector(dimension); @@ -138,3 +166,137 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct return problem; } + + + + + + +/** + * @brief Implements the step ellipsoid function without connections to any COCO structures. + */ +static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { + + static const double condition = 100; + size_t i; + double result; + result = 0.0; + + for (i = 0; i < number_of_variables; ++i) { + double exponent; + exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); + result += pow(condition, exponent) * x[i] * x[i]; + ; + } + result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ + return result; +} + + +/** + * @brief Uses the raw function to evaluate the ls COCO problem. + */ +static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic step ellipsoid problem. + * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. + */ +static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", + f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); + problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ + problem->best_parameter[number_of_variables] = -1.0; + + coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); + /* Compute best solution */ + f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); + + return problem; +} + +/** + * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. + */ +static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double alpha = 10.; /*parameter of rounding*/ + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1, **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11, *P12, *P21, *P22; + size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; + double penalty_factor = 1.; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); + + P11 = coco_allocate_vector_size_t(dimension); + P12 = coco_allocate_vector_size_t(dimension); + P21 = coco_allocate_vector_size_t(dimension); + P22 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); + + problem = f_step_ellipsoid_allocate(dimension); + + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ + + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + +return problem; +} + From 02777f682abe1a0579c441c99b2b3a5f651cfb92 Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 8 Mar 2016 17:59:16 +0100 Subject: [PATCH 109/446] Update f_step_ellipsoid from Wassim's folk --- code-experiments/src/f_step_ellipsoid.c | 302 ++++++++++++++++++++++++ 1 file changed, 302 insertions(+) create mode 100644 code-experiments/src/f_step_ellipsoid.c diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c new file mode 100644 index 000000000..59a6aacb4 --- /dev/null +++ b/code-experiments/src/f_step_ellipsoid.c @@ -0,0 +1,302 @@ +/** + * @file f_step_ellipsoid.c + * @brief Implementation of the step ellipsoid function and problem. + * + * The BBOB step ellipsoid function intertwines the variable and objective transformations in such a way + * that it is hard to devise a composition of generic transformations to implement it. In the end one would + * have to implement several custom transformations which would be used solely by this problem. Therefore + * we opt to implement it as a monolithic function instead. + * + * TODO: It would be nice to have a generic step ellipsoid function to complement this one. + */ +#include + +#include "coco.h" +#include "coco_problem.c" +#include "coco_utilities.c" +#include "suite_bbob_legacy_code.c" + +#include "transform_obj_penalize.c" +#include "transform_obj_shift.c" +#include "transform_vars_shift.c" + +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" +#include "transform_vars_round_step.c" + + +/** + * @brief Data type for the step ellipsoid problem. + */ +typedef struct { + double *x, *xx; + double *xopt, fopt; + double **rot1, **rot2; +} f_step_ellipsoid_data_t; + + +/** + * @brief Implements the step ellipsoid function without connections to any COCO structures. + */ +static double f_step_ellipsoid_raw(const double *x, const size_t number_of_variables, f_step_ellipsoid_data_t *data) { + + static const double condition = 100; + static const double alpha = 10.0; + size_t i, j; + double penalty = 0.0, x1; + double result; + + assert(number_of_variables > 1); + + for (i = 0; i < number_of_variables; ++i) { + double tmp; + tmp = fabs(x[i]) - 5.0; + if (tmp > 0.0) + penalty += tmp * tmp; + } + + for (i = 0; i < number_of_variables; ++i) { + double c1; + data->x[i] = 0.0; + c1 = sqrt(pow(condition / 10., (double) i / (double) (number_of_variables - 1))); + for (j = 0; j < number_of_variables; ++j) { + data->x[i] += c1 * data->rot2[i][j] * (x[j] - data->xopt[j]); + } + } + x1 = data->x[0]; + + for (i = 0; i < number_of_variables; ++i) { + if (fabs(data->x[i]) > 0.5) + data->x[i] = coco_double_round(data->x[i]); + else + data->x[i] = coco_double_round(alpha * data->x[i]) / alpha; + } + + for (i = 0; i < number_of_variables; ++i) { + data->xx[i] = 0.0; + for (j = 0; j < number_of_variables; ++j) { + data->xx[i] += data->rot1[i][j] * data->x[j]; + } + } + + /* Computation core */ + result = 0.0; + for (i = 0; i < number_of_variables; ++i) { + double exponent; + exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); + result += pow(condition, exponent) * data->xx[i] * data->xx[i]; + ; + } + result = 0.1 * coco_double_max(fabs(x1) * 1.0e-4, result) + penalty + data->fopt; + + return result; +} + +/** + * @brief Uses the raw function to evaluate the COCO problem. + */ +static void f_step_ellipsoid_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_step_ellipsoid_raw(x, problem->number_of_variables, (f_step_ellipsoid_data_t *) problem->data); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Frees the step ellipsoid data object. + */ +static void f_step_ellipsoid_free(coco_problem_t *problem) { + f_step_ellipsoid_data_t *data; + data = (f_step_ellipsoid_data_t *) problem->data; + coco_free_memory(data->x); + coco_free_memory(data->xx); + coco_free_memory(data->xopt); + bbob2009_free_matrix(data->rot1, problem->number_of_variables); + bbob2009_free_matrix(data->rot2, problem->number_of_variables); + /* Let the generic free problem code deal with all of the coco_problem_t fields */ + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + +/** + * @brief Creates the BBOB step ellipsoid problem. + * + * @note There is no separate basic allocate function. + */ +static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + + f_step_ellipsoid_data_t *data; + size_t i; + coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", + f_step_ellipsoid_evaluate, f_step_ellipsoid_free, dimension, -5.0, 5.0, 0); + + data = (f_step_ellipsoid_data_t *) coco_allocate_memory(sizeof(*data)); + /* Allocate temporary storage and space for the rotation matrices */ + data->x = coco_allocate_vector(dimension); + data->xx = coco_allocate_vector(dimension); + data->xopt = coco_allocate_vector(dimension); + data->rot1 = bbob2009_allocate_matrix(dimension, dimension); + data->rot2 = bbob2009_allocate_matrix(dimension, dimension); + + data->fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(data->xopt, rseed, dimension); + bbob2009_compute_rotation(data->rot1, rseed + 1000000, dimension); + bbob2009_compute_rotation(data->rot2, rseed, dimension); + + problem->data = data; + + /* Compute best solution + * + * OME: Dirty hack for now because I did not want to invert the + * transformations to find the best_parameter :/ + */ + for (i = 0; i < problem->number_of_variables; i++) { + problem->best_parameter[i] = data->xopt[i]; + } + problem->best_value[0] = data->fopt; + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "2-moderate"); + + return problem; +} + + + + + + +/** + * @brief Implements the step ellipsoid function without connections to any COCO structures. + */ +static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { + + static const double condition = 100; + size_t i; + double result; + result = 0.0; + + for (i = 0; i < number_of_variables; ++i) { + double exponent; + exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); + result += pow(condition, exponent) * x[i] * x[i]; + ; + } + result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ + return result; +} + + +/** + * @brief Uses the raw function to evaluate the ls COCO problem. + */ +static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic step ellipsoid problem. + * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. + */ +static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", + f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); + problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ + problem->best_parameter[number_of_variables] = -1.0; + + coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); + /* Compute best solution */ + f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); + + return problem; +} + +/** + * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. + */ +static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double alpha = 10.; /*parameter of rounding*/ + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1, **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11, *P12, *P21, *P22; + size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; + double penalty_factor = 1.; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); + + P11 = coco_allocate_vector_size_t(dimension); + P12 = coco_allocate_vector_size_t(dimension); + P21 = coco_allocate_vector_size_t(dimension); + P22 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); + + problem = f_step_ellipsoid_allocate(dimension); + + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ + + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + +return problem; +} + From 9e1318833e5360f6a61aee12759fbac324448826 Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 8 Mar 2016 17:59:16 +0100 Subject: [PATCH 110/446] Update f_step_ellipsoid from Wassim's folk --- code-experiments/src/f_step_ellipsoid.c | 302 ++++++++++++++++++++++++ 1 file changed, 302 insertions(+) create mode 100644 code-experiments/src/f_step_ellipsoid.c diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c new file mode 100644 index 000000000..59a6aacb4 --- /dev/null +++ b/code-experiments/src/f_step_ellipsoid.c @@ -0,0 +1,302 @@ +/** + * @file f_step_ellipsoid.c + * @brief Implementation of the step ellipsoid function and problem. + * + * The BBOB step ellipsoid function intertwines the variable and objective transformations in such a way + * that it is hard to devise a composition of generic transformations to implement it. In the end one would + * have to implement several custom transformations which would be used solely by this problem. Therefore + * we opt to implement it as a monolithic function instead. + * + * TODO: It would be nice to have a generic step ellipsoid function to complement this one. + */ +#include + +#include "coco.h" +#include "coco_problem.c" +#include "coco_utilities.c" +#include "suite_bbob_legacy_code.c" + +#include "transform_obj_penalize.c" +#include "transform_obj_shift.c" +#include "transform_vars_shift.c" + +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" +#include "transform_vars_round_step.c" + + +/** + * @brief Data type for the step ellipsoid problem. + */ +typedef struct { + double *x, *xx; + double *xopt, fopt; + double **rot1, **rot2; +} f_step_ellipsoid_data_t; + + +/** + * @brief Implements the step ellipsoid function without connections to any COCO structures. + */ +static double f_step_ellipsoid_raw(const double *x, const size_t number_of_variables, f_step_ellipsoid_data_t *data) { + + static const double condition = 100; + static const double alpha = 10.0; + size_t i, j; + double penalty = 0.0, x1; + double result; + + assert(number_of_variables > 1); + + for (i = 0; i < number_of_variables; ++i) { + double tmp; + tmp = fabs(x[i]) - 5.0; + if (tmp > 0.0) + penalty += tmp * tmp; + } + + for (i = 0; i < number_of_variables; ++i) { + double c1; + data->x[i] = 0.0; + c1 = sqrt(pow(condition / 10., (double) i / (double) (number_of_variables - 1))); + for (j = 0; j < number_of_variables; ++j) { + data->x[i] += c1 * data->rot2[i][j] * (x[j] - data->xopt[j]); + } + } + x1 = data->x[0]; + + for (i = 0; i < number_of_variables; ++i) { + if (fabs(data->x[i]) > 0.5) + data->x[i] = coco_double_round(data->x[i]); + else + data->x[i] = coco_double_round(alpha * data->x[i]) / alpha; + } + + for (i = 0; i < number_of_variables; ++i) { + data->xx[i] = 0.0; + for (j = 0; j < number_of_variables; ++j) { + data->xx[i] += data->rot1[i][j] * data->x[j]; + } + } + + /* Computation core */ + result = 0.0; + for (i = 0; i < number_of_variables; ++i) { + double exponent; + exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); + result += pow(condition, exponent) * data->xx[i] * data->xx[i]; + ; + } + result = 0.1 * coco_double_max(fabs(x1) * 1.0e-4, result) + penalty + data->fopt; + + return result; +} + +/** + * @brief Uses the raw function to evaluate the COCO problem. + */ +static void f_step_ellipsoid_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_step_ellipsoid_raw(x, problem->number_of_variables, (f_step_ellipsoid_data_t *) problem->data); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Frees the step ellipsoid data object. + */ +static void f_step_ellipsoid_free(coco_problem_t *problem) { + f_step_ellipsoid_data_t *data; + data = (f_step_ellipsoid_data_t *) problem->data; + coco_free_memory(data->x); + coco_free_memory(data->xx); + coco_free_memory(data->xopt); + bbob2009_free_matrix(data->rot1, problem->number_of_variables); + bbob2009_free_matrix(data->rot2, problem->number_of_variables); + /* Let the generic free problem code deal with all of the coco_problem_t fields */ + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + +/** + * @brief Creates the BBOB step ellipsoid problem. + * + * @note There is no separate basic allocate function. + */ +static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + + f_step_ellipsoid_data_t *data; + size_t i; + coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", + f_step_ellipsoid_evaluate, f_step_ellipsoid_free, dimension, -5.0, 5.0, 0); + + data = (f_step_ellipsoid_data_t *) coco_allocate_memory(sizeof(*data)); + /* Allocate temporary storage and space for the rotation matrices */ + data->x = coco_allocate_vector(dimension); + data->xx = coco_allocate_vector(dimension); + data->xopt = coco_allocate_vector(dimension); + data->rot1 = bbob2009_allocate_matrix(dimension, dimension); + data->rot2 = bbob2009_allocate_matrix(dimension, dimension); + + data->fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(data->xopt, rseed, dimension); + bbob2009_compute_rotation(data->rot1, rseed + 1000000, dimension); + bbob2009_compute_rotation(data->rot2, rseed, dimension); + + problem->data = data; + + /* Compute best solution + * + * OME: Dirty hack for now because I did not want to invert the + * transformations to find the best_parameter :/ + */ + for (i = 0; i < problem->number_of_variables; i++) { + problem->best_parameter[i] = data->xopt[i]; + } + problem->best_value[0] = data->fopt; + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "2-moderate"); + + return problem; +} + + + + + + +/** + * @brief Implements the step ellipsoid function without connections to any COCO structures. + */ +static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { + + static const double condition = 100; + size_t i; + double result; + result = 0.0; + + for (i = 0; i < number_of_variables; ++i) { + double exponent; + exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); + result += pow(condition, exponent) * x[i] * x[i]; + ; + } + result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ + return result; +} + + +/** + * @brief Uses the raw function to evaluate the ls COCO problem. + */ +static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic step ellipsoid problem. + * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. + */ +static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", + f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); + problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ + problem->best_parameter[number_of_variables] = -1.0; + + coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); + /* Compute best solution */ + f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); + + return problem; +} + +/** + * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. + */ +static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double alpha = 10.; /*parameter of rounding*/ + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1, **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11, *P12, *P21, *P22; + size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; + double penalty_factor = 1.; + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); + + P11 = coco_allocate_vector_size_t(dimension); + P12 = coco_allocate_vector_size_t(dimension); + P21 = coco_allocate_vector_size_t(dimension); + P22 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); + + problem = f_step_ellipsoid_allocate(dimension); + + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ + + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + +return problem; +} + From 624c96da59896ba6d059d8e47795453afff2d0b1 Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 8 Mar 2016 18:05:41 +0100 Subject: [PATCH 111/446] Update f_step_ellipsoid from Wassim's folk 2 --- code-experiments/src/f_step_ellipsoid.c | 50 +++++++++++++++---------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 59a6aacb4..5ea520283 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -35,7 +35,6 @@ typedef struct { double **rot1, **rot2; } f_step_ellipsoid_data_t; - /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ @@ -175,7 +174,7 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ -static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { +static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables, f_step_ellipsoid_versatile_data_t *f_step_ellipsoid_versatile_data) { static const double condition = 100; size_t i; @@ -186,9 +185,8 @@ static double f_step_ellipsoid_core(const double *x, const size_t number_of_vari double exponent; exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); result += pow(condition, exponent) * x[i] * x[i]; - ; } - result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ + result = 0.1 * coco_double_max(f_step_ellipsoid_versatile_data->zhat_1 * 1.0e-4, result); return result; } @@ -198,10 +196,22 @@ static double f_step_ellipsoid_core(const double *x, const size_t number_of_vari */ static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); + y[0] = f_step_ellipsoid_core(x, problem->number_of_variables, (f_step_ellipsoid_versatile_data_t *) problem->versatile_data); assert(y[0] + 1e-13 >= problem->best_value[0]); } +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_step_ellipsoid_versatile_data_free(coco_problem_t *problem) { + coco_free_memory((f_step_ellipsoid_versatile_data_t *) problem->versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + + + /** * @brief Allocates the basic step ellipsoid problem. * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. @@ -209,17 +219,20 @@ static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const d static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); - problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ - problem->best_parameter[number_of_variables] = -1.0; - + f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + problem->versatile_data = (f_step_ellipsoid_versatile_data_t *) coco_allocate_memory(sizeof(f_step_ellipsoid_versatile_data_t)); + ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = 0;/*needed for xopt evaluation*/ + /* add the free function of the allocated versatile_data*/ + problem->problem_free_function = f_step_ellipsoid_versatile_data_free; + coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); - /* Compute best solution */ + /* Compute best solution, here done outside after the zhat is set to the best_value */ f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); - return problem; } + + /** * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. */ @@ -238,11 +251,11 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons size_t *P11, *P12, *P21, *P22; size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; double penalty_factor = 1.; - + xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); - + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); @@ -256,7 +269,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); - + P11 = coco_allocate_vector_size_t(dimension); P12 = coco_allocate_vector_size_t(dimension); P21 = coco_allocate_vector_size_t(dimension); @@ -278,7 +291,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); - + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); @@ -286,17 +299,16 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); - + coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); coco_free_memory(P11); - coco_free_memory(P21); coco_free_memory(P12); + coco_free_memory(P21); coco_free_memory(P22); coco_free_memory(block_sizes1); coco_free_memory(block_sizes2); coco_free_memory(xopt); -return problem; + return problem; } - From c2d095abc93765f2d43bdae0279fbf5e3e7070bf Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 8 Mar 2016 18:05:41 +0100 Subject: [PATCH 112/446] Update f_step_ellipsoid from Wassim's folk 2 --- code-experiments/src/f_step_ellipsoid.c | 50 +++++++++++++++---------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 59a6aacb4..5ea520283 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -35,7 +35,6 @@ typedef struct { double **rot1, **rot2; } f_step_ellipsoid_data_t; - /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ @@ -175,7 +174,7 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ -static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { +static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables, f_step_ellipsoid_versatile_data_t *f_step_ellipsoid_versatile_data) { static const double condition = 100; size_t i; @@ -186,9 +185,8 @@ static double f_step_ellipsoid_core(const double *x, const size_t number_of_vari double exponent; exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); result += pow(condition, exponent) * x[i] * x[i]; - ; } - result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ + result = 0.1 * coco_double_max(f_step_ellipsoid_versatile_data->zhat_1 * 1.0e-4, result); return result; } @@ -198,10 +196,22 @@ static double f_step_ellipsoid_core(const double *x, const size_t number_of_vari */ static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); + y[0] = f_step_ellipsoid_core(x, problem->number_of_variables, (f_step_ellipsoid_versatile_data_t *) problem->versatile_data); assert(y[0] + 1e-13 >= problem->best_value[0]); } +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_step_ellipsoid_versatile_data_free(coco_problem_t *problem) { + coco_free_memory((f_step_ellipsoid_versatile_data_t *) problem->versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + + + /** * @brief Allocates the basic step ellipsoid problem. * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. @@ -209,17 +219,20 @@ static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const d static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); - problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ - problem->best_parameter[number_of_variables] = -1.0; - + f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + problem->versatile_data = (f_step_ellipsoid_versatile_data_t *) coco_allocate_memory(sizeof(f_step_ellipsoid_versatile_data_t)); + ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = 0;/*needed for xopt evaluation*/ + /* add the free function of the allocated versatile_data*/ + problem->problem_free_function = f_step_ellipsoid_versatile_data_free; + coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); - /* Compute best solution */ + /* Compute best solution, here done outside after the zhat is set to the best_value */ f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); - return problem; } + + /** * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. */ @@ -238,11 +251,11 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons size_t *P11, *P12, *P21, *P22; size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; double penalty_factor = 1.; - + xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); - + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); @@ -256,7 +269,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); - + P11 = coco_allocate_vector_size_t(dimension); P12 = coco_allocate_vector_size_t(dimension); P21 = coco_allocate_vector_size_t(dimension); @@ -278,7 +291,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); - + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); @@ -286,17 +299,16 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); - + coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); coco_free_memory(P11); - coco_free_memory(P21); coco_free_memory(P12); + coco_free_memory(P21); coco_free_memory(P22); coco_free_memory(block_sizes1); coco_free_memory(block_sizes2); coco_free_memory(xopt); -return problem; + return problem; } - From c927196714a946ea90da9b87613c84c8f5224368 Mon Sep 17 00:00:00 2001 From: NDManh Date: Thu, 10 Mar 2016 14:53:39 +0100 Subject: [PATCH 113/446] Update f_step_ellipsoid --- code-experiments/src/f_step_ellipsoid.c | 51 +++++++------------------ 1 file changed, 14 insertions(+), 37 deletions(-) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 5ea520283..02e32258b 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -35,6 +35,7 @@ typedef struct { double **rot1, **rot2; } f_step_ellipsoid_data_t; + /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ @@ -174,7 +175,7 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ -static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables, f_step_ellipsoid_versatile_data_t *f_step_ellipsoid_versatile_data) { +static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { static const double condition = 100; size_t i; @@ -185,8 +186,9 @@ static double f_step_ellipsoid_core(const double *x, const size_t number_of_vari double exponent; exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); result += pow(condition, exponent) * x[i] * x[i]; + ; } - result = 0.1 * coco_double_max(f_step_ellipsoid_versatile_data->zhat_1 * 1.0e-4, result); + result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ return result; } @@ -196,22 +198,10 @@ static double f_step_ellipsoid_core(const double *x, const size_t number_of_vari */ static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_step_ellipsoid_core(x, problem->number_of_variables, (f_step_ellipsoid_versatile_data_t *) problem->versatile_data); + y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); assert(y[0] + 1e-13 >= problem->best_value[0]); } -/** - * @brief allows to free the versatile_data part of the problem. - */ -static void f_step_ellipsoid_versatile_data_free(coco_problem_t *problem) { - coco_free_memory((f_step_ellipsoid_versatile_data_t *) problem->versatile_data); - problem->versatile_data = NULL; - problem->problem_free_function = NULL; - coco_problem_free(problem); -} - - - /** * @brief Allocates the basic step ellipsoid problem. * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. @@ -219,20 +209,17 @@ static void f_step_ellipsoid_versatile_data_free(coco_problem_t *problem) { static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); - problem->versatile_data = (f_step_ellipsoid_versatile_data_t *) coco_allocate_memory(sizeof(f_step_ellipsoid_versatile_data_t)); - ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = 0;/*needed for xopt evaluation*/ - /* add the free function of the allocated versatile_data*/ - problem->problem_free_function = f_step_ellipsoid_versatile_data_free; - + f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); + problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ + problem->best_parameter[number_of_variables] = -1.0; + coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); - /* Compute best solution, here done outside after the zhat is set to the best_value */ + /* Compute best solution */ f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); + return problem; } - - /** * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. */ @@ -251,7 +238,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons size_t *P11, *P12, *P21, *P22; size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; double penalty_factor = 1.; - + xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); @@ -280,12 +267,12 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); problem = f_step_ellipsoid_allocate(dimension); - + problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ - + problem = transform_vars_conditioning(problem, 10.0); problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); @@ -300,15 +287,5 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); - coco_free_block_matrix(B1, dimension); - coco_free_block_matrix(B2, dimension); - coco_free_memory(P11); - coco_free_memory(P12); - coco_free_memory(P21); - coco_free_memory(P22); - coco_free_memory(block_sizes1); - coco_free_memory(block_sizes2); - coco_free_memory(xopt); - return problem; } From 7ce0357722961b135863fd0b1de244acda565148 Mon Sep 17 00:00:00 2001 From: NDManh Date: Thu, 10 Mar 2016 14:53:39 +0100 Subject: [PATCH 114/446] Update f_step_ellipsoid --- code-experiments/src/f_step_ellipsoid.c | 51 +++++++------------------ 1 file changed, 14 insertions(+), 37 deletions(-) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 5ea520283..02e32258b 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -35,6 +35,7 @@ typedef struct { double **rot1, **rot2; } f_step_ellipsoid_data_t; + /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ @@ -174,7 +175,7 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ -static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables, f_step_ellipsoid_versatile_data_t *f_step_ellipsoid_versatile_data) { +static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { static const double condition = 100; size_t i; @@ -185,8 +186,9 @@ static double f_step_ellipsoid_core(const double *x, const size_t number_of_vari double exponent; exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); result += pow(condition, exponent) * x[i] * x[i]; + ; } - result = 0.1 * coco_double_max(f_step_ellipsoid_versatile_data->zhat_1 * 1.0e-4, result); + result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ return result; } @@ -196,22 +198,10 @@ static double f_step_ellipsoid_core(const double *x, const size_t number_of_vari */ static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_step_ellipsoid_core(x, problem->number_of_variables, (f_step_ellipsoid_versatile_data_t *) problem->versatile_data); + y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); assert(y[0] + 1e-13 >= problem->best_value[0]); } -/** - * @brief allows to free the versatile_data part of the problem. - */ -static void f_step_ellipsoid_versatile_data_free(coco_problem_t *problem) { - coco_free_memory((f_step_ellipsoid_versatile_data_t *) problem->versatile_data); - problem->versatile_data = NULL; - problem->problem_free_function = NULL; - coco_problem_free(problem); -} - - - /** * @brief Allocates the basic step ellipsoid problem. * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. @@ -219,20 +209,17 @@ static void f_step_ellipsoid_versatile_data_free(coco_problem_t *problem) { static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); - problem->versatile_data = (f_step_ellipsoid_versatile_data_t *) coco_allocate_memory(sizeof(f_step_ellipsoid_versatile_data_t)); - ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = 0;/*needed for xopt evaluation*/ - /* add the free function of the allocated versatile_data*/ - problem->problem_free_function = f_step_ellipsoid_versatile_data_free; - + f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); + problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ + problem->best_parameter[number_of_variables] = -1.0; + coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); - /* Compute best solution, here done outside after the zhat is set to the best_value */ + /* Compute best solution */ f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); + return problem; } - - /** * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. */ @@ -251,7 +238,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons size_t *P11, *P12, *P21, *P22; size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; double penalty_factor = 1.; - + xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); @@ -280,12 +267,12 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); problem = f_step_ellipsoid_allocate(dimension); - + problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ - + problem = transform_vars_conditioning(problem, 10.0); problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); @@ -300,15 +287,5 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); - coco_free_block_matrix(B1, dimension); - coco_free_block_matrix(B2, dimension); - coco_free_memory(P11); - coco_free_memory(P12); - coco_free_memory(P21); - coco_free_memory(P22); - coco_free_memory(block_sizes1); - coco_free_memory(block_sizes2); - coco_free_memory(xopt); - return problem; } From 256c64ea07fb16a6fe935a7ec57020667f2a4f1b Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 10 Mar 2016 17:41:56 +0100 Subject: [PATCH 115/446] changed transform_obj_nom_by_dim into transform_obj_factor for more flexibility in use --- code-experiments/src/f_attractive_sector.c | 4 +- .../src/f_bent_cigar_generalized.c | 4 +- code-experiments/src/f_bueche_rastrigin.c | 4 +- code-experiments/src/f_different_powers.c | 4 +- code-experiments/src/f_discus_generalized.c | 4 +- code-experiments/src/f_ellipsoid.c | 6 +-- code-experiments/src/f_gallagher.c | 4 +- code-experiments/src/f_griewank_rosenbrock.c | 4 +- code-experiments/src/f_katsuura.c | 3 +- code-experiments/src/f_linear_slope.c | 4 +- code-experiments/src/f_lunacek_bi_rastrigin.c | 7 ++- code-experiments/src/f_rastrigin.c | 6 +-- code-experiments/src/f_rosenbrock.c | 6 +-- code-experiments/src/f_schaffers.c | 4 +- code-experiments/src/f_schwefel.c | 4 +- code-experiments/src/f_sharp_ridge.c | 6 +-- code-experiments/src/f_sphere.c | 4 +- code-experiments/src/f_step_ellipsoid.c | 4 +- code-experiments/src/f_weierstrass.c | 4 +- .../src/transform_obj_norm_by_dim.c | 30 ------------ code-experiments/src/transform_obj_scale.c | 46 +++++++++++++++++++ 21 files changed, 92 insertions(+), 70 deletions(-) delete mode 100644 code-experiments/src/transform_obj_norm_by_dim.c create mode 100644 code-experiments/src/transform_obj_scale.c diff --git a/code-experiments/src/f_attractive_sector.c b/code-experiments/src/f_attractive_sector.c index ec9519555..cfdac93c7 100644 --- a/code-experiments/src/f_attractive_sector.c +++ b/code-experiments/src/f_attractive_sector.c @@ -17,7 +17,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" #include "transform_vars_conditioning.c" /** @@ -192,7 +192,7 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c problem = f_attractive_sector_allocate(dimension, xopt); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1. / (double) dimension); problem = transform_obj_oscillate(problem); problem = transform_obj_power(problem, 0.9); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index 17cfdb2c6..2cbb117c1 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -16,7 +16,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" #define proportion_long_axes_denom 40 @@ -113,7 +113,7 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1. / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_bueche_rastrigin.c b/code-experiments/src/f_bueche_rastrigin.c index 502d1b4cd..13b223612 100644 --- a/code-experiments/src/f_bueche_rastrigin.c +++ b/code-experiments/src/f_bueche_rastrigin.c @@ -14,7 +14,7 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" #include "transform_obj_penalize.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the Bueche-Rastrigin function without connections to any COCO structures. @@ -88,7 +88,7 @@ static coco_problem_t *f_bueche_rastrigin_bbob_problem_allocate(const size_t fun /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); } problem = transform_obj_shift(problem, fopt); problem = transform_obj_penalize(problem, penalty_factor); diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index fa7ede53a..50418983f 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -15,7 +15,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the different powers function without connections to any COCO structures. @@ -143,7 +143,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c index bd99fba93..bc9572181 100644 --- a/code-experiments/src/f_discus_generalized.c +++ b/code-experiments/src/f_discus_generalized.c @@ -14,7 +14,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" #define proportion_short_axes_denom 40 /* Make it a parameter of f_discus_generalized_raw? */ @@ -111,7 +111,7 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 32c974247..cf4213989 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -16,7 +16,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the ellipsoid function without connections to any COCO structures. @@ -81,7 +81,7 @@ static coco_problem_t *f_ellipsoid_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); } problem = transform_obj_shift(problem, fopt); @@ -177,7 +177,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 4e01edcb0..517ac5cb0 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -14,7 +14,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" #include "transform_vars_permutation_helpers.c" #include "transform_vars_scale.c" @@ -514,7 +514,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz *problem_i = transform_vars_permutation(*problem_i, P1, dimension); *problem_i = transform_vars_shift(*problem_i, y_i, 0); - *problem_i = transform_obj_norm_by_dim(*problem_i);/* for the scalar product */ + *problem_i = transform_obj_scale(*problem_i, 1.0 / (double) dimension);/* for the scalar product */ coco_free_memory(P_Lambda); coco_free_memory(y_i); diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 5a64b956c..07b4aebe3 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -17,7 +17,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the Griewank-Rosenbrock function without connections to any COCO structures. @@ -162,7 +162,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index db80ea42d..7baa1c0f8 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -15,6 +15,7 @@ #include "transform_vars_affine.c" #include "transform_vars_shift.c" #include "transform_obj_penalize.c" +#include "transform_obj_scale.c" /** * @brief Implements the Katsuura function without connections to any COCO structures. @@ -188,7 +189,7 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); /*There is no fopt in the definition of this function*/ diff --git a/code-experiments/src/f_linear_slope.c b/code-experiments/src/f_linear_slope.c index 6823399cd..d5528d7c8 100644 --- a/code-experiments/src/f_linear_slope.c +++ b/code-experiments/src/f_linear_slope.c @@ -11,7 +11,7 @@ #include "coco_problem.c" #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the linear slope function without connections to any COCO structures. @@ -92,7 +92,7 @@ static coco_problem_t *f_linear_slope_bbob_problem_allocate(const size_t functio /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); } problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index f126e2a8d..46bcea54e 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -10,6 +10,7 @@ #include "coco_problem.c" #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" +#include "transform_obj_scale.c" /** * @brief Data type for the Lunacek bi-Rastrigin problem. @@ -173,6 +174,10 @@ static coco_problem_t *f_lunacek_bi_rastrigin_bbob_problem_allocate(const size_t } -/* TODO: large-scale version, similarly to f_gallagher, use 2 additional problems, problem_1 and problem_2 that will serve to compute the value in the min, the main problem will compute the 10(...) part which is in the "final" transformed solution */ + + + + + diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index da69bc846..70664f23b 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -19,7 +19,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the Rastrigin function without connections to any COCO structures. @@ -87,7 +87,7 @@ static coco_problem_t *f_rastrigin_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); } problem = transform_obj_shift(problem, fopt); @@ -225,7 +225,7 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index 8bc9185be..de7474f0c 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -15,7 +15,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the Rosenbrock function without connections to any COCO structures. @@ -94,7 +94,7 @@ static coco_problem_t *f_rosenbrock_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); } problem = transform_obj_shift(problem, fopt); @@ -204,7 +204,7 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index ebaf3a44e..cfe4965c9 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -19,7 +19,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the Schaffer's F7 function without connections to any COCO structures. @@ -187,7 +187,7 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_schwefel.c b/code-experiments/src/f_schwefel.c index eae3756c6..729704406 100644 --- a/code-experiments/src/f_schwefel.c +++ b/code-experiments/src/f_schwefel.c @@ -11,7 +11,7 @@ #include "coco_problem.c" #include "suite_bbob_legacy_code.c" #include "transform_vars_conditioning.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" #include "transform_obj_shift.c" #include "transform_vars_scale.c" #include "transform_vars_affine.c" @@ -110,7 +110,7 @@ static coco_problem_t *f_schwefel_bbob_problem_allocate(const size_t function, problem = transform_vars_x_hat(problem, rseed); /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); } problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index 9f592cc7a..c443a8041 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -16,7 +16,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the sharp ridge function without connections to any COCO structures. @@ -171,8 +171,8 @@ static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const s problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); + + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_sphere.c b/code-experiments/src/f_sphere.c index a51c94678..b16648468 100644 --- a/code-experiments/src/f_sphere.c +++ b/code-experiments/src/f_sphere.c @@ -11,7 +11,7 @@ #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" #include "transform_vars_shift.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the sphere function without connections to any COCO structures. @@ -74,7 +74,7 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); } problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 5ea520283..6c3376e9f 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -22,7 +22,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" #include "transform_vars_round_step.c" @@ -292,7 +292,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index 7ecc1bf0b..87e907529 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -18,7 +18,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** @brief Number of summands in the Weierstrass problem. */ #define F_WEIERSTRASS_SUMMANDS 12 @@ -217,7 +217,7 @@ static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const s problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/transform_obj_norm_by_dim.c b/code-experiments/src/transform_obj_norm_by_dim.c deleted file mode 100644 index 44c019568..000000000 --- a/code-experiments/src/transform_obj_norm_by_dim.c +++ /dev/null @@ -1,30 +0,0 @@ -/** - * @file transform_obj_norm_by_dim.c - * @brief Implementation of nomalizing the objective value by dividing the fitness by the number of variables - */ - -#include - -#include "coco.h" -#include "coco_problem.c" - -/** - * @brief Evaluates the transformation. - */ -static void transform_obj_norm_by_dim_evaluate(coco_problem_t *problem, const double *x, double *y) { - coco_evaluate_function(coco_problem_transformed_get_inner_problem(problem), x, y); - y[0] = y[0] / ((double) problem->number_of_variables); - assert(y[0] + 1e-13 >= problem->best_value[0]); -} - -/** - * @brief Creates the transformation. - */ -static coco_problem_t *transform_obj_norm_by_dim(coco_problem_t *inner_problem) { - coco_problem_t *problem; - problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL, "transform_obj_norm_by_dim"); - problem->evaluate_function = transform_obj_norm_by_dim_evaluate; - /*transform_obj_norm_by_dim_evaluate(problem, problem->best_parameter, problem->best_value);*/ - problem->best_value[0] /= (double) inner_problem->number_of_variables; /*shouldn't matter as long as fopt = 0 originally*/ - return problem; -} diff --git a/code-experiments/src/transform_obj_scale.c b/code-experiments/src/transform_obj_scale.c new file mode 100644 index 000000000..02915f6a5 --- /dev/null +++ b/code-experiments/src/transform_obj_scale.c @@ -0,0 +1,46 @@ +/** + * @file transform_obj_factor.c + * @brief Implementation of multiplying the objective value by a given factor + * Mostly used to normalize by the dimension in the large-scale suite + */ + +#include + +#include "coco.h" +#include "coco_problem.c" + +/** + * @brief Data type for transform_vars_scale. + */ +typedef struct { + double factor; +} transform_obj_scale_data_t; + + +/** + * @brief Evaluates the transformation. + */ +static void transform_obj_scale_evaluate(coco_problem_t *problem, const double *x, double *y) { + transform_obj_scale_data_t *data; + data = (transform_obj_scale_data_t *) coco_problem_transformed_get_data(problem); + coco_evaluate_function(coco_problem_transformed_get_inner_problem(problem), x, y); + y[0] *= data->factor; + + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Creates the transformation. + */ +static coco_problem_t *transform_obj_scale(coco_problem_t *inner_problem, const double factor) { + transform_obj_scale_data_t *data; + coco_problem_t *problem; + + data = (transform_obj_scale_data_t *) coco_allocate_memory(sizeof(*data)); + data->factor = factor; + + problem = coco_problem_transformed_allocate(inner_problem, data, NULL, "transform_obj_scale"); + problem->evaluate_function = transform_obj_scale_evaluate; + problem->best_value[0] *= factor; /*shouldn't matter as long as fopt = 0 originally*/ + return problem; +} From d26cfa2e8e703d83da15ac7d50915c1e10dc826b Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 10 Mar 2016 17:41:56 +0100 Subject: [PATCH 116/446] changed transform_obj_nom_by_dim into transform_obj_factor for more flexibility in use --- code-experiments/src/f_attractive_sector.c | 4 +- .../src/f_bent_cigar_generalized.c | 4 +- code-experiments/src/f_bueche_rastrigin.c | 4 +- code-experiments/src/f_different_powers.c | 4 +- code-experiments/src/f_discus_generalized.c | 4 +- code-experiments/src/f_ellipsoid.c | 6 +-- code-experiments/src/f_gallagher.c | 4 +- code-experiments/src/f_griewank_rosenbrock.c | 4 +- code-experiments/src/f_katsuura.c | 3 +- code-experiments/src/f_linear_slope.c | 4 +- code-experiments/src/f_lunacek_bi_rastrigin.c | 7 ++- code-experiments/src/f_rastrigin.c | 6 +-- code-experiments/src/f_rosenbrock.c | 6 +-- code-experiments/src/f_schaffers.c | 4 +- code-experiments/src/f_schwefel.c | 4 +- code-experiments/src/f_sharp_ridge.c | 6 +-- code-experiments/src/f_sphere.c | 4 +- code-experiments/src/f_step_ellipsoid.c | 4 +- code-experiments/src/f_weierstrass.c | 4 +- .../src/transform_obj_norm_by_dim.c | 30 ------------ code-experiments/src/transform_obj_scale.c | 46 +++++++++++++++++++ 21 files changed, 92 insertions(+), 70 deletions(-) delete mode 100644 code-experiments/src/transform_obj_norm_by_dim.c create mode 100644 code-experiments/src/transform_obj_scale.c diff --git a/code-experiments/src/f_attractive_sector.c b/code-experiments/src/f_attractive_sector.c index ec9519555..cfdac93c7 100644 --- a/code-experiments/src/f_attractive_sector.c +++ b/code-experiments/src/f_attractive_sector.c @@ -17,7 +17,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" #include "transform_vars_conditioning.c" /** @@ -192,7 +192,7 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c problem = f_attractive_sector_allocate(dimension, xopt); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1. / (double) dimension); problem = transform_obj_oscillate(problem); problem = transform_obj_power(problem, 0.9); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index 17cfdb2c6..2cbb117c1 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -16,7 +16,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" #define proportion_long_axes_denom 40 @@ -113,7 +113,7 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1. / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_bueche_rastrigin.c b/code-experiments/src/f_bueche_rastrigin.c index 502d1b4cd..13b223612 100644 --- a/code-experiments/src/f_bueche_rastrigin.c +++ b/code-experiments/src/f_bueche_rastrigin.c @@ -14,7 +14,7 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" #include "transform_obj_penalize.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the Bueche-Rastrigin function without connections to any COCO structures. @@ -88,7 +88,7 @@ static coco_problem_t *f_bueche_rastrigin_bbob_problem_allocate(const size_t fun /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); } problem = transform_obj_shift(problem, fopt); problem = transform_obj_penalize(problem, penalty_factor); diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index fa7ede53a..50418983f 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -15,7 +15,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the different powers function without connections to any COCO structures. @@ -143,7 +143,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c index bd99fba93..bc9572181 100644 --- a/code-experiments/src/f_discus_generalized.c +++ b/code-experiments/src/f_discus_generalized.c @@ -14,7 +14,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" #define proportion_short_axes_denom 40 /* Make it a parameter of f_discus_generalized_raw? */ @@ -111,7 +111,7 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 32c974247..cf4213989 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -16,7 +16,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the ellipsoid function without connections to any COCO structures. @@ -81,7 +81,7 @@ static coco_problem_t *f_ellipsoid_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); } problem = transform_obj_shift(problem, fopt); @@ -177,7 +177,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 4e01edcb0..517ac5cb0 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -14,7 +14,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" #include "transform_vars_permutation_helpers.c" #include "transform_vars_scale.c" @@ -514,7 +514,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz *problem_i = transform_vars_permutation(*problem_i, P1, dimension); *problem_i = transform_vars_shift(*problem_i, y_i, 0); - *problem_i = transform_obj_norm_by_dim(*problem_i);/* for the scalar product */ + *problem_i = transform_obj_scale(*problem_i, 1.0 / (double) dimension);/* for the scalar product */ coco_free_memory(P_Lambda); coco_free_memory(y_i); diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 5a64b956c..07b4aebe3 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -17,7 +17,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the Griewank-Rosenbrock function without connections to any COCO structures. @@ -162,7 +162,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index db80ea42d..7baa1c0f8 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -15,6 +15,7 @@ #include "transform_vars_affine.c" #include "transform_vars_shift.c" #include "transform_obj_penalize.c" +#include "transform_obj_scale.c" /** * @brief Implements the Katsuura function without connections to any COCO structures. @@ -188,7 +189,7 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); /*There is no fopt in the definition of this function*/ diff --git a/code-experiments/src/f_linear_slope.c b/code-experiments/src/f_linear_slope.c index 6823399cd..d5528d7c8 100644 --- a/code-experiments/src/f_linear_slope.c +++ b/code-experiments/src/f_linear_slope.c @@ -11,7 +11,7 @@ #include "coco_problem.c" #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the linear slope function without connections to any COCO structures. @@ -92,7 +92,7 @@ static coco_problem_t *f_linear_slope_bbob_problem_allocate(const size_t functio /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); } problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index f126e2a8d..46bcea54e 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -10,6 +10,7 @@ #include "coco_problem.c" #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" +#include "transform_obj_scale.c" /** * @brief Data type for the Lunacek bi-Rastrigin problem. @@ -173,6 +174,10 @@ static coco_problem_t *f_lunacek_bi_rastrigin_bbob_problem_allocate(const size_t } -/* TODO: large-scale version, similarly to f_gallagher, use 2 additional problems, problem_1 and problem_2 that will serve to compute the value in the min, the main problem will compute the 10(...) part which is in the "final" transformed solution */ + + + + + diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index da69bc846..70664f23b 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -19,7 +19,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the Rastrigin function without connections to any COCO structures. @@ -87,7 +87,7 @@ static coco_problem_t *f_rastrigin_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); } problem = transform_obj_shift(problem, fopt); @@ -225,7 +225,7 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index 8bc9185be..de7474f0c 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -15,7 +15,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the Rosenbrock function without connections to any COCO structures. @@ -94,7 +94,7 @@ static coco_problem_t *f_rosenbrock_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); } problem = transform_obj_shift(problem, fopt); @@ -204,7 +204,7 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index ebaf3a44e..cfe4965c9 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -19,7 +19,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the Schaffer's F7 function without connections to any COCO structures. @@ -187,7 +187,7 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_schwefel.c b/code-experiments/src/f_schwefel.c index eae3756c6..729704406 100644 --- a/code-experiments/src/f_schwefel.c +++ b/code-experiments/src/f_schwefel.c @@ -11,7 +11,7 @@ #include "coco_problem.c" #include "suite_bbob_legacy_code.c" #include "transform_vars_conditioning.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" #include "transform_obj_shift.c" #include "transform_vars_scale.c" #include "transform_vars_affine.c" @@ -110,7 +110,7 @@ static coco_problem_t *f_schwefel_bbob_problem_allocate(const size_t function, problem = transform_vars_x_hat(problem, rseed); /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); } problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index 9f592cc7a..c443a8041 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -16,7 +16,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the sharp ridge function without connections to any COCO structures. @@ -171,8 +171,8 @@ static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const s problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); + + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_sphere.c b/code-experiments/src/f_sphere.c index a51c94678..b16648468 100644 --- a/code-experiments/src/f_sphere.c +++ b/code-experiments/src/f_sphere.c @@ -11,7 +11,7 @@ #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" #include "transform_vars_shift.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Implements the sphere function without connections to any COCO structures. @@ -74,7 +74,7 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); } problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 5ea520283..6c3376e9f 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -22,7 +22,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" #include "transform_vars_round_step.c" @@ -292,7 +292,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index 7ecc1bf0b..87e907529 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -18,7 +18,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** @brief Number of summands in the Weierstrass problem. */ #define F_WEIERSTRASS_SUMMANDS 12 @@ -217,7 +217,7 @@ static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const s problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/transform_obj_norm_by_dim.c b/code-experiments/src/transform_obj_norm_by_dim.c deleted file mode 100644 index 44c019568..000000000 --- a/code-experiments/src/transform_obj_norm_by_dim.c +++ /dev/null @@ -1,30 +0,0 @@ -/** - * @file transform_obj_norm_by_dim.c - * @brief Implementation of nomalizing the objective value by dividing the fitness by the number of variables - */ - -#include - -#include "coco.h" -#include "coco_problem.c" - -/** - * @brief Evaluates the transformation. - */ -static void transform_obj_norm_by_dim_evaluate(coco_problem_t *problem, const double *x, double *y) { - coco_evaluate_function(coco_problem_transformed_get_inner_problem(problem), x, y); - y[0] = y[0] / ((double) problem->number_of_variables); - assert(y[0] + 1e-13 >= problem->best_value[0]); -} - -/** - * @brief Creates the transformation. - */ -static coco_problem_t *transform_obj_norm_by_dim(coco_problem_t *inner_problem) { - coco_problem_t *problem; - problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL, "transform_obj_norm_by_dim"); - problem->evaluate_function = transform_obj_norm_by_dim_evaluate; - /*transform_obj_norm_by_dim_evaluate(problem, problem->best_parameter, problem->best_value);*/ - problem->best_value[0] /= (double) inner_problem->number_of_variables; /*shouldn't matter as long as fopt = 0 originally*/ - return problem; -} diff --git a/code-experiments/src/transform_obj_scale.c b/code-experiments/src/transform_obj_scale.c new file mode 100644 index 000000000..02915f6a5 --- /dev/null +++ b/code-experiments/src/transform_obj_scale.c @@ -0,0 +1,46 @@ +/** + * @file transform_obj_factor.c + * @brief Implementation of multiplying the objective value by a given factor + * Mostly used to normalize by the dimension in the large-scale suite + */ + +#include + +#include "coco.h" +#include "coco_problem.c" + +/** + * @brief Data type for transform_vars_scale. + */ +typedef struct { + double factor; +} transform_obj_scale_data_t; + + +/** + * @brief Evaluates the transformation. + */ +static void transform_obj_scale_evaluate(coco_problem_t *problem, const double *x, double *y) { + transform_obj_scale_data_t *data; + data = (transform_obj_scale_data_t *) coco_problem_transformed_get_data(problem); + coco_evaluate_function(coco_problem_transformed_get_inner_problem(problem), x, y); + y[0] *= data->factor; + + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Creates the transformation. + */ +static coco_problem_t *transform_obj_scale(coco_problem_t *inner_problem, const double factor) { + transform_obj_scale_data_t *data; + coco_problem_t *problem; + + data = (transform_obj_scale_data_t *) coco_allocate_memory(sizeof(*data)); + data->factor = factor; + + problem = coco_problem_transformed_allocate(inner_problem, data, NULL, "transform_obj_scale"); + problem->evaluate_function = transform_obj_scale_evaluate; + problem->best_value[0] *= factor; /*shouldn't matter as long as fopt = 0 originally*/ + return problem; +} From cacbef3d64dbfdcd6f10036ec30cc2dac034ee1e Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 10 Mar 2016 17:47:08 +0100 Subject: [PATCH 117/446] restored the correct version of step_ellipsoid plus silenced a warning in f_katsuura --- code-experiments/src/f_katsuura.c | 5 +- code-experiments/src/f_step_ellipsoid.c | 95 +++++++++++++++---------- 2 files changed, 61 insertions(+), 39 deletions(-) diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index 7baa1c0f8..de8c27456 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -139,6 +139,7 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size double **B2; const double *const *B1_copy; const double *const *B2_copy; + const double penalty_factor = 1.0; size_t *P11 = coco_allocate_vector_size_t(dimension); size_t *P21 = coco_allocate_vector_size_t(dimension); size_t *P12 = coco_allocate_vector_size_t(dimension); @@ -154,9 +155,7 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - - const double penalty_factor = 1.0; - + xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 82cbe9234..46dc5c1bd 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -35,27 +35,26 @@ typedef struct { double **rot1, **rot2; } f_step_ellipsoid_data_t; - /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ static double f_step_ellipsoid_raw(const double *x, const size_t number_of_variables, f_step_ellipsoid_data_t *data) { - + static const double condition = 100; static const double alpha = 10.0; size_t i, j; double penalty = 0.0, x1; double result; - + assert(number_of_variables > 1); - + for (i = 0; i < number_of_variables; ++i) { double tmp; tmp = fabs(x[i]) - 5.0; if (tmp > 0.0) penalty += tmp * tmp; } - + for (i = 0; i < number_of_variables; ++i) { double c1; data->x[i] = 0.0; @@ -65,21 +64,21 @@ static double f_step_ellipsoid_raw(const double *x, const size_t number_of_varia } } x1 = data->x[0]; - + for (i = 0; i < number_of_variables; ++i) { if (fabs(data->x[i]) > 0.5) data->x[i] = coco_double_round(data->x[i]); else data->x[i] = coco_double_round(alpha * data->x[i]) / alpha; } - + for (i = 0; i < number_of_variables; ++i) { data->xx[i] = 0.0; for (j = 0; j < number_of_variables; ++j) { data->xx[i] += data->rot1[i][j] * data->x[j]; } } - + /* Computation core */ result = 0.0; for (i = 0; i < number_of_variables; ++i) { @@ -89,7 +88,7 @@ static double f_step_ellipsoid_raw(const double *x, const size_t number_of_varia ; } result = 0.1 * coco_double_max(fabs(x1) * 1.0e-4, result) + penalty + data->fopt; - + return result; } @@ -129,12 +128,12 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct const long rseed, const char *problem_id_template, const char *problem_name_template) { - + f_step_ellipsoid_data_t *data; size_t i; coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_evaluate, f_step_ellipsoid_free, dimension, -5.0, 5.0, 0); - + f_step_ellipsoid_evaluate, f_step_ellipsoid_free, dimension, -5.0, 5.0, 0); + data = (f_step_ellipsoid_data_t *) coco_allocate_memory(sizeof(*data)); /* Allocate temporary storage and space for the rotation matrices */ data->x = coco_allocate_vector(dimension); @@ -142,12 +141,12 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct data->xopt = coco_allocate_vector(dimension); data->rot1 = bbob2009_allocate_matrix(dimension, dimension); data->rot2 = bbob2009_allocate_matrix(dimension, dimension); - + data->fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(data->xopt, rseed, dimension); bbob2009_compute_rotation(data->rot1, rseed + 1000000, dimension); bbob2009_compute_rotation(data->rot2, rseed, dimension); - + problem->data = data; /* Compute best solution @@ -156,14 +155,14 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct * transformations to find the best_parameter :/ */ for (i = 0; i < problem->number_of_variables; i++) { - problem->best_parameter[i] = data->xopt[i]; + problem->best_parameter[i] = data->xopt[i]; } problem->best_value[0] = data->fopt; - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "2-moderate"); - + return problem; } @@ -175,20 +174,19 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ -static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { +static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables, f_step_ellipsoid_versatile_data_t *f_step_ellipsoid_versatile_data) { static const double condition = 100; size_t i; double result; result = 0.0; - + for (i = 0; i < number_of_variables; ++i) { double exponent; exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); result += pow(condition, exponent) * x[i] * x[i]; - ; } - result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ + result = 0.1 * coco_double_max(f_step_ellipsoid_versatile_data->zhat_1 * 1.0e-4, result); return result; } @@ -198,10 +196,22 @@ static double f_step_ellipsoid_core(const double *x, const size_t number_of_vari */ static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); + y[0] = f_step_ellipsoid_core(x, problem->number_of_variables, (f_step_ellipsoid_versatile_data_t *) problem->versatile_data); assert(y[0] + 1e-13 >= problem->best_value[0]); } +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_step_ellipsoid_versatile_data_free(coco_problem_t *problem) { + coco_free_memory((f_step_ellipsoid_versatile_data_t *) problem->versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + + + /** * @brief Allocates the basic step ellipsoid problem. * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. @@ -209,26 +219,29 @@ static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const d static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); - problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ - problem->best_parameter[number_of_variables] = -1.0; + f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + problem->versatile_data = (f_step_ellipsoid_versatile_data_t *) coco_allocate_memory(sizeof(f_step_ellipsoid_versatile_data_t)); + ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = 0;/*needed for xopt evaluation*/ + /* add the free function of the allocated versatile_data*/ + problem->problem_free_function = f_step_ellipsoid_versatile_data_free; coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); - /* Compute best solution */ + /* Compute best solution, here done outside after the zhat is set to the best_value */ f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); - return problem; } + + /** * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. */ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { double alpha = 10.; /*parameter of rounding*/ double *xopt, fopt; coco_problem_t *problem = NULL; @@ -238,7 +251,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons size_t *P11, *P12, *P21, *P22; size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; double penalty_factor = 1.; - + xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); @@ -249,7 +262,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); B1_copy = (const double *const *)B1; @@ -265,7 +278,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); - + problem = f_step_ellipsoid_allocate(dimension); problem = transform_vars_permutation(problem, P22, dimension); @@ -282,10 +295,20 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P12); + coco_free_memory(P21); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; } From 396a24d41c016a9895275348e7c2d5eb3429dff1 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 10 Mar 2016 17:47:08 +0100 Subject: [PATCH 118/446] restored the correct version of step_ellipsoid plus silenced a warning in f_katsuura --- code-experiments/src/f_katsuura.c | 5 +- code-experiments/src/f_step_ellipsoid.c | 95 +++++++++++++++---------- 2 files changed, 61 insertions(+), 39 deletions(-) diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index 7baa1c0f8..de8c27456 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -139,6 +139,7 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size double **B2; const double *const *B1_copy; const double *const *B2_copy; + const double penalty_factor = 1.0; size_t *P11 = coco_allocate_vector_size_t(dimension); size_t *P21 = coco_allocate_vector_size_t(dimension); size_t *P12 = coco_allocate_vector_size_t(dimension); @@ -154,9 +155,7 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - - const double penalty_factor = 1.0; - + xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 82cbe9234..46dc5c1bd 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -35,27 +35,26 @@ typedef struct { double **rot1, **rot2; } f_step_ellipsoid_data_t; - /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ static double f_step_ellipsoid_raw(const double *x, const size_t number_of_variables, f_step_ellipsoid_data_t *data) { - + static const double condition = 100; static const double alpha = 10.0; size_t i, j; double penalty = 0.0, x1; double result; - + assert(number_of_variables > 1); - + for (i = 0; i < number_of_variables; ++i) { double tmp; tmp = fabs(x[i]) - 5.0; if (tmp > 0.0) penalty += tmp * tmp; } - + for (i = 0; i < number_of_variables; ++i) { double c1; data->x[i] = 0.0; @@ -65,21 +64,21 @@ static double f_step_ellipsoid_raw(const double *x, const size_t number_of_varia } } x1 = data->x[0]; - + for (i = 0; i < number_of_variables; ++i) { if (fabs(data->x[i]) > 0.5) data->x[i] = coco_double_round(data->x[i]); else data->x[i] = coco_double_round(alpha * data->x[i]) / alpha; } - + for (i = 0; i < number_of_variables; ++i) { data->xx[i] = 0.0; for (j = 0; j < number_of_variables; ++j) { data->xx[i] += data->rot1[i][j] * data->x[j]; } } - + /* Computation core */ result = 0.0; for (i = 0; i < number_of_variables; ++i) { @@ -89,7 +88,7 @@ static double f_step_ellipsoid_raw(const double *x, const size_t number_of_varia ; } result = 0.1 * coco_double_max(fabs(x1) * 1.0e-4, result) + penalty + data->fopt; - + return result; } @@ -129,12 +128,12 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct const long rseed, const char *problem_id_template, const char *problem_name_template) { - + f_step_ellipsoid_data_t *data; size_t i; coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_evaluate, f_step_ellipsoid_free, dimension, -5.0, 5.0, 0); - + f_step_ellipsoid_evaluate, f_step_ellipsoid_free, dimension, -5.0, 5.0, 0); + data = (f_step_ellipsoid_data_t *) coco_allocate_memory(sizeof(*data)); /* Allocate temporary storage and space for the rotation matrices */ data->x = coco_allocate_vector(dimension); @@ -142,12 +141,12 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct data->xopt = coco_allocate_vector(dimension); data->rot1 = bbob2009_allocate_matrix(dimension, dimension); data->rot2 = bbob2009_allocate_matrix(dimension, dimension); - + data->fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(data->xopt, rseed, dimension); bbob2009_compute_rotation(data->rot1, rseed + 1000000, dimension); bbob2009_compute_rotation(data->rot2, rseed, dimension); - + problem->data = data; /* Compute best solution @@ -156,14 +155,14 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct * transformations to find the best_parameter :/ */ for (i = 0; i < problem->number_of_variables; i++) { - problem->best_parameter[i] = data->xopt[i]; + problem->best_parameter[i] = data->xopt[i]; } problem->best_value[0] = data->fopt; - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "2-moderate"); - + return problem; } @@ -175,20 +174,19 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ -static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { +static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables, f_step_ellipsoid_versatile_data_t *f_step_ellipsoid_versatile_data) { static const double condition = 100; size_t i; double result; result = 0.0; - + for (i = 0; i < number_of_variables; ++i) { double exponent; exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); result += pow(condition, exponent) * x[i] * x[i]; - ; } - result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ + result = 0.1 * coco_double_max(f_step_ellipsoid_versatile_data->zhat_1 * 1.0e-4, result); return result; } @@ -198,10 +196,22 @@ static double f_step_ellipsoid_core(const double *x, const size_t number_of_vari */ static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); + y[0] = f_step_ellipsoid_core(x, problem->number_of_variables, (f_step_ellipsoid_versatile_data_t *) problem->versatile_data); assert(y[0] + 1e-13 >= problem->best_value[0]); } +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_step_ellipsoid_versatile_data_free(coco_problem_t *problem) { + coco_free_memory((f_step_ellipsoid_versatile_data_t *) problem->versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + + + /** * @brief Allocates the basic step ellipsoid problem. * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. @@ -209,26 +219,29 @@ static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const d static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); - problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ - problem->best_parameter[number_of_variables] = -1.0; + f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + problem->versatile_data = (f_step_ellipsoid_versatile_data_t *) coco_allocate_memory(sizeof(f_step_ellipsoid_versatile_data_t)); + ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = 0;/*needed for xopt evaluation*/ + /* add the free function of the allocated versatile_data*/ + problem->problem_free_function = f_step_ellipsoid_versatile_data_free; coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); - /* Compute best solution */ + /* Compute best solution, here done outside after the zhat is set to the best_value */ f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); - return problem; } + + /** * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. */ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { double alpha = 10.; /*parameter of rounding*/ double *xopt, fopt; coco_problem_t *problem = NULL; @@ -238,7 +251,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons size_t *P11, *P12, *P21, *P22; size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; double penalty_factor = 1.; - + xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); @@ -249,7 +262,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); B1_copy = (const double *const *)B1; @@ -265,7 +278,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); - + problem = f_step_ellipsoid_allocate(dimension); problem = transform_vars_permutation(problem, P22, dimension); @@ -282,10 +295,20 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P12); + coco_free_memory(P21); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; } From e671ce28af03f62abc511228ae02008b1434f402 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 10 Mar 2016 19:16:38 +0100 Subject: [PATCH 119/446] large scale suite: implementing f24 lunacek bi-Rastrigin using the all transform approach ... --- code-experiments/src/f_gallagher.c | 1 + code-experiments/src/f_lunacek_bi_rastrigin.c | 223 ++++++++++++++++++ code-experiments/src/f_step_ellipsoid.c | 5 +- 3 files changed, 228 insertions(+), 1 deletion(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 517ac5cb0..7ada5c01b 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -362,6 +362,7 @@ static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_v /** * @brief Implements the gallagher function without connections to any COCO structures. * Wassim: core to differentiate it from raw for now + * Wassim: TODO: compute the w_i here and make that the subproblems become simple sphere problems and use the f_sphere_raw */ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_gallagher_versatile_data) { diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index 46bcea54e..d03280b97 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -11,6 +11,7 @@ #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" #include "transform_obj_scale.c" +#include "f_sphere.c" /** * @brief Data type for the Lunacek bi-Rastrigin problem. @@ -178,6 +179,228 @@ static coco_problem_t *f_lunacek_bi_rastrigin_bbob_problem_allocate(const size_t +/** + * @brief Data type for the versatile_data_t + */ +typedef struct { + coco_problem_t *sub_problem_mu0; + coco_problem_t *sub_problem_mu1; +} f_lunacek_bi_rastrigin_versatile_data_t; + + +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_lunacek_bi_rastrigin_versatile_data_free(coco_problem_t *problem) { + + f_lunacek_bi_rastrigin_versatile_data_t *versatile_data = (f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data; + /*free the two problems*/ + if (versatile_data->sub_problem_mu0 != NULL) { + coco_problem_free(versatile_data->sub_problem_mu0); + } + if (versatile_data->sub_problem_mu1 != NULL) { + coco_problem_free(versatile_data->sub_problem_mu1); + } + coco_free_memory(versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + + +/** + * @brief Uses the core function to evaluate the sub problem. + */ +static void f_lunacek_bi_rastrigin_sub_evaluate_core(coco_problem_t *problem, const double *x, double *y) { + + assert(problem->number_of_objectives == 1); + y[0] = f_sphere_raw(x, problem->number_of_variables); +} + + +/** + * @brief Allocates the basic lunacek_bi_rastrigin sub problem. + */ +static coco_problem_t *f_lunacek_bi_rastrigin_sub_problem_allocate(const size_t number_of_variables) { + + coco_problem_t *problem_i = coco_problem_allocate_from_scalars("lunacek_bi_rastrigin_sub function", + f_lunacek_bi_rastrigin_sub_evaluate_core, NULL, number_of_variables, -5.0, 5.0, 0.0); + problem_i->versatile_data = NULL; + coco_problem_set_id(problem_i, "%s_d%04lu", "lunacek_bi_rastrigin_sub", number_of_variables); + + return problem_i; +} + + +/** + * @brief Implements the lunacek_bi_rastrigin function without connections to any COCO structures. + * Wassim: core to differentiate it from raw for now + */ +static double f_lunacek_bi_rastrigin_core(const double *x, const size_t number_of_variables,f_lunacek_bi_rastrigin_versatile_data_t *f_lunacek_bi_rastrigin_versatile_data) { + coco_problem_t *problem_sub_mu0, *problem_sub_mu1; + size_t i; + double result = 0; + double y0, y1; + + problem_sub_mu0 = f_lunacek_bi_rastrigin_versatile_data->sub_problem_mu0; + problem_sub_mu0->evaluate_function(problem_sub_mu0, x, &y0); + + problem_sub_mu1 = f_lunacek_bi_rastrigin_versatile_data->sub_problem_mu1; + problem_sub_mu1->evaluate_function(problem_sub_mu1, x, &y1); + + + result = number_of_variables; + + for (i = 0; i < number_of_variables; i++) { + result -= cos(2 * coco_pi * x[i]); + } + result += coco_double_min(y0, y1); + + return result; +} + +/** + * @brief Uses the core function to evaluate the COCO problem. + */ +static void f_lunacek_bi_rastrigin_evaluate_core(coco_problem_t *problem, const double *x, double *y) { + + assert(problem->number_of_objectives == 1); + y[0] = f_lunacek_bi_rastrigin_core(x, problem->number_of_variables, ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + + + + +/** + * @brief Allocates the basic lunacek_bi_rastrigin problem. + */ +static coco_problem_t *f_lunacek_bi_rastrigin_problem_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("lunacek_bi_rastrigin function", + f_lunacek_bi_rastrigin_evaluate_core, f_lunacek_bi_rastrigin_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); + f_lunacek_bi_rastrigin_versatile_data_t *versatile_data_tmp; + problem->versatile_data = (f_lunacek_bi_rastrigin_versatile_data_t *) coco_allocate_memory(sizeof(f_lunacek_bi_rastrigin_versatile_data_t)); + + coco_problem_set_id(problem, "%s_d%04lu", "lunacek_bi_rastrigin", number_of_variables); + + /* Compute best solution later once the sub-problems are well defined */ + return problem; +} + +/** + * @brief Creates the BBOB large scale suite Lunacek bi-Rastrigin problem. + */ +static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + size_t i; + double fopt; + double penalty_factor = 1e4; + coco_problem_t *problem = NULL, **sub_problem_tmp; + + double **B1, **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11, *P12, *P21, *P22; + size_t *block_sizes1, *block_sizes2; + size_t nb_blocks1, nb_blocks2; + size_t swap_range1, swap_range2; + size_t nb_swaps1, nb_swaps2; + + double condition = 100.0; + double mu0, mu1, d = 1, s; + double *mu0_vector, *mu1_vector; + + fopt = bbob2009_compute_fopt(function, instance); + s = 1. - 0.5 / (sqrt((double) (dimension + 20)) - 4.1); + mu0 = 2.5; + mu1 = -sqrt((mu0 * mu0 - d) / s); + + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B2_copy = (const double *const *)B2; + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + P11 = coco_allocate_vector_size_t(dimension); + P12 = coco_allocate_vector_size_t(dimension); + P21 = coco_allocate_vector_size_t(dimension); + P22 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps1, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps1, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 5000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps2, swap_range2); + + problem = f_lunacek_bi_rastrigin_problem_allocate(dimension); + + mu0_vector = coco_allocate_vector(dimension); + mu1_vector = coco_allocate_vector(dimension); + for (i = 0; i < dimension; i++) { + mu0_vector[i] = mu0; + mu1_vector[i] = mu1; + } + /* allocate sub-problems */ + /* subproblem 1 with \mu_0*/ + ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); + sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0; + + *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu0_vector, 0); + + /* subproblem 2 with \mu_1*/ + ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); + sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1; + + *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu1_vector, 0); + *sub_problem_tmp = transform_obj_shift(*sub_problem_tmp, d * dimension); + + /* apply var transformations to sub problem + *problem_i = transform_vars_scale(*problem_i, sqrt(sqrt(sqrt(alpha_i)))); + *problem_i = transform_vars_conditioning(*problem_i, alpha_i); + *problem_i = transform_vars_permutation(*problem_i, P_Lambda, dimension); + *problem_i = transform_vars_permutation(*problem_i, P2, dimension); + *problem_i = transform_vars_blockrotation(*problem_i, B_copy, dimension, block_sizes, nb_blocks); + *problem_i = transform_vars_permutation(*problem_i, P1, dimension); + *problem_i = transform_vars_shift(*problem_i, y_i, 0); + + *problem_i = transform_obj_scale(problem, 1.0 / (double) dimension); + + f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); + + problem = transform_obj_oscillate(problem); + problem = transform_obj_power(problem, 2.0); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt);*/ + + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P12); + coco_free_memory(P21); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(mu0_vector); + coco_free_memory(mu1_vector); + return problem; +} diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 46dc5c1bd..aff518ba2 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -235,6 +235,9 @@ static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variable /** * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. + * + * Wassim: TODO: consider implementing it sub-problem style + * Wassim: TODO: make the zhat1 value default to x1 when no transformation is applied and the data type defined here */ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, @@ -284,7 +287,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ + problem = transform_vars_round_step(problem, alpha); problem = transform_vars_conditioning(problem, 10.0); problem = transform_vars_permutation(problem, P12, dimension); From e181c4eaaca5c2b1d1c91e56d7b8429d406a595c Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 10 Mar 2016 19:16:38 +0100 Subject: [PATCH 120/446] large scale suite: implementing f24 lunacek bi-Rastrigin using the all transform approach ... --- code-experiments/src/f_gallagher.c | 1 + code-experiments/src/f_lunacek_bi_rastrigin.c | 223 ++++++++++++++++++ code-experiments/src/f_step_ellipsoid.c | 5 +- 3 files changed, 228 insertions(+), 1 deletion(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 517ac5cb0..7ada5c01b 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -362,6 +362,7 @@ static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_v /** * @brief Implements the gallagher function without connections to any COCO structures. * Wassim: core to differentiate it from raw for now + * Wassim: TODO: compute the w_i here and make that the subproblems become simple sphere problems and use the f_sphere_raw */ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_gallagher_versatile_data) { diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index 46bcea54e..d03280b97 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -11,6 +11,7 @@ #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" #include "transform_obj_scale.c" +#include "f_sphere.c" /** * @brief Data type for the Lunacek bi-Rastrigin problem. @@ -178,6 +179,228 @@ static coco_problem_t *f_lunacek_bi_rastrigin_bbob_problem_allocate(const size_t +/** + * @brief Data type for the versatile_data_t + */ +typedef struct { + coco_problem_t *sub_problem_mu0; + coco_problem_t *sub_problem_mu1; +} f_lunacek_bi_rastrigin_versatile_data_t; + + +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_lunacek_bi_rastrigin_versatile_data_free(coco_problem_t *problem) { + + f_lunacek_bi_rastrigin_versatile_data_t *versatile_data = (f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data; + /*free the two problems*/ + if (versatile_data->sub_problem_mu0 != NULL) { + coco_problem_free(versatile_data->sub_problem_mu0); + } + if (versatile_data->sub_problem_mu1 != NULL) { + coco_problem_free(versatile_data->sub_problem_mu1); + } + coco_free_memory(versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + + +/** + * @brief Uses the core function to evaluate the sub problem. + */ +static void f_lunacek_bi_rastrigin_sub_evaluate_core(coco_problem_t *problem, const double *x, double *y) { + + assert(problem->number_of_objectives == 1); + y[0] = f_sphere_raw(x, problem->number_of_variables); +} + + +/** + * @brief Allocates the basic lunacek_bi_rastrigin sub problem. + */ +static coco_problem_t *f_lunacek_bi_rastrigin_sub_problem_allocate(const size_t number_of_variables) { + + coco_problem_t *problem_i = coco_problem_allocate_from_scalars("lunacek_bi_rastrigin_sub function", + f_lunacek_bi_rastrigin_sub_evaluate_core, NULL, number_of_variables, -5.0, 5.0, 0.0); + problem_i->versatile_data = NULL; + coco_problem_set_id(problem_i, "%s_d%04lu", "lunacek_bi_rastrigin_sub", number_of_variables); + + return problem_i; +} + + +/** + * @brief Implements the lunacek_bi_rastrigin function without connections to any COCO structures. + * Wassim: core to differentiate it from raw for now + */ +static double f_lunacek_bi_rastrigin_core(const double *x, const size_t number_of_variables,f_lunacek_bi_rastrigin_versatile_data_t *f_lunacek_bi_rastrigin_versatile_data) { + coco_problem_t *problem_sub_mu0, *problem_sub_mu1; + size_t i; + double result = 0; + double y0, y1; + + problem_sub_mu0 = f_lunacek_bi_rastrigin_versatile_data->sub_problem_mu0; + problem_sub_mu0->evaluate_function(problem_sub_mu0, x, &y0); + + problem_sub_mu1 = f_lunacek_bi_rastrigin_versatile_data->sub_problem_mu1; + problem_sub_mu1->evaluate_function(problem_sub_mu1, x, &y1); + + + result = number_of_variables; + + for (i = 0; i < number_of_variables; i++) { + result -= cos(2 * coco_pi * x[i]); + } + result += coco_double_min(y0, y1); + + return result; +} + +/** + * @brief Uses the core function to evaluate the COCO problem. + */ +static void f_lunacek_bi_rastrigin_evaluate_core(coco_problem_t *problem, const double *x, double *y) { + + assert(problem->number_of_objectives == 1); + y[0] = f_lunacek_bi_rastrigin_core(x, problem->number_of_variables, ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + + + + +/** + * @brief Allocates the basic lunacek_bi_rastrigin problem. + */ +static coco_problem_t *f_lunacek_bi_rastrigin_problem_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("lunacek_bi_rastrigin function", + f_lunacek_bi_rastrigin_evaluate_core, f_lunacek_bi_rastrigin_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); + f_lunacek_bi_rastrigin_versatile_data_t *versatile_data_tmp; + problem->versatile_data = (f_lunacek_bi_rastrigin_versatile_data_t *) coco_allocate_memory(sizeof(f_lunacek_bi_rastrigin_versatile_data_t)); + + coco_problem_set_id(problem, "%s_d%04lu", "lunacek_bi_rastrigin", number_of_variables); + + /* Compute best solution later once the sub-problems are well defined */ + return problem; +} + +/** + * @brief Creates the BBOB large scale suite Lunacek bi-Rastrigin problem. + */ +static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + size_t i; + double fopt; + double penalty_factor = 1e4; + coco_problem_t *problem = NULL, **sub_problem_tmp; + + double **B1, **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11, *P12, *P21, *P22; + size_t *block_sizes1, *block_sizes2; + size_t nb_blocks1, nb_blocks2; + size_t swap_range1, swap_range2; + size_t nb_swaps1, nb_swaps2; + + double condition = 100.0; + double mu0, mu1, d = 1, s; + double *mu0_vector, *mu1_vector; + + fopt = bbob2009_compute_fopt(function, instance); + s = 1. - 0.5 / (sqrt((double) (dimension + 20)) - 4.1); + mu0 = 2.5; + mu1 = -sqrt((mu0 * mu0 - d) / s); + + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B2_copy = (const double *const *)B2; + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + P11 = coco_allocate_vector_size_t(dimension); + P12 = coco_allocate_vector_size_t(dimension); + P21 = coco_allocate_vector_size_t(dimension); + P22 = coco_allocate_vector_size_t(dimension); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps1, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps1, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 5000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps2, swap_range2); + + problem = f_lunacek_bi_rastrigin_problem_allocate(dimension); + + mu0_vector = coco_allocate_vector(dimension); + mu1_vector = coco_allocate_vector(dimension); + for (i = 0; i < dimension; i++) { + mu0_vector[i] = mu0; + mu1_vector[i] = mu1; + } + /* allocate sub-problems */ + /* subproblem 1 with \mu_0*/ + ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); + sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0; + + *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu0_vector, 0); + + /* subproblem 2 with \mu_1*/ + ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); + sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1; + + *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu1_vector, 0); + *sub_problem_tmp = transform_obj_shift(*sub_problem_tmp, d * dimension); + + /* apply var transformations to sub problem + *problem_i = transform_vars_scale(*problem_i, sqrt(sqrt(sqrt(alpha_i)))); + *problem_i = transform_vars_conditioning(*problem_i, alpha_i); + *problem_i = transform_vars_permutation(*problem_i, P_Lambda, dimension); + *problem_i = transform_vars_permutation(*problem_i, P2, dimension); + *problem_i = transform_vars_blockrotation(*problem_i, B_copy, dimension, block_sizes, nb_blocks); + *problem_i = transform_vars_permutation(*problem_i, P1, dimension); + *problem_i = transform_vars_shift(*problem_i, y_i, 0); + + *problem_i = transform_obj_scale(problem, 1.0 / (double) dimension); + + f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); + + problem = transform_obj_oscillate(problem); + problem = transform_obj_power(problem, 2.0); + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt);*/ + + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P12); + coco_free_memory(P21); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(mu0_vector); + coco_free_memory(mu1_vector); + return problem; +} diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 46dc5c1bd..aff518ba2 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -235,6 +235,9 @@ static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variable /** * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. + * + * Wassim: TODO: consider implementing it sub-problem style + * Wassim: TODO: make the zhat1 value default to x1 when no transformation is applied and the data type defined here */ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, @@ -284,7 +287,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ + problem = transform_vars_round_step(problem, alpha); problem = transform_vars_conditioning(problem, 10.0); problem = transform_vars_permutation(problem, P12, dimension); From 6b315ce3bf871f5b1ed370457dcee38cd598fef3 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 11 Mar 2016 15:55:28 +0100 Subject: [PATCH 121/446] implemented the large scale version of f24 using the raw function/transforms approach. Also added a generic x_hat transform that no longer sets xopt --- code-experiments/src/f_gallagher.c | 3 +- code-experiments/src/f_lunacek_bi_rastrigin.c | 78 +++++++++++-------- code-experiments/src/suite_largescale.c | 4 +- code-experiments/src/transform_vars_x_hat.c | 2 +- .../src/transform_vars_x_hat_generic.c | 67 ++++++++++++++++ 5 files changed, 119 insertions(+), 35 deletions(-) create mode 100644 code-experiments/src/transform_vars_x_hat_generic.c diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 7ada5c01b..abfb27ead 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -533,7 +533,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); - + + coco_random_free(rng); coco_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index d03280b97..50a535b76 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -12,6 +12,7 @@ #include "transform_obj_shift.c" #include "transform_obj_scale.c" #include "f_sphere.c" +#include "transform_vars_x_hat_generic.c" /** * @brief Data type for the Lunacek bi-Rastrigin problem. @@ -227,7 +228,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_sub_problem_allocate(const size_t f_lunacek_bi_rastrigin_sub_evaluate_core, NULL, number_of_variables, -5.0, 5.0, 0.0); problem_i->versatile_data = NULL; coco_problem_set_id(problem_i, "%s_d%04lu", "lunacek_bi_rastrigin_sub", number_of_variables); - + f_lunacek_bi_rastrigin_sub_evaluate_core(problem_i, problem_i->best_parameter, problem_i->best_value); return problem_i; } @@ -250,11 +251,12 @@ static double f_lunacek_bi_rastrigin_core(const double *x, const size_t number_o problem_sub_mu1->evaluate_function(problem_sub_mu1, x, &y1); - result = number_of_variables; + result = (double) number_of_variables; for (i = 0; i < number_of_variables; i++) { result -= cos(2 * coco_pi * x[i]); } + result *= 10.0; result += coco_double_min(y0, y1); return result; @@ -280,9 +282,8 @@ static coco_problem_t *f_lunacek_bi_rastrigin_problem_allocate(const size_t numb coco_problem_t *problem = coco_problem_allocate_from_scalars("lunacek_bi_rastrigin function", f_lunacek_bi_rastrigin_evaluate_core, f_lunacek_bi_rastrigin_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); - f_lunacek_bi_rastrigin_versatile_data_t *versatile_data_tmp; + problem->versatile_data = (f_lunacek_bi_rastrigin_versatile_data_t *) coco_allocate_memory(sizeof(f_lunacek_bi_rastrigin_versatile_data_t)); - coco_problem_set_id(problem, "%s_d%04lu", "lunacek_bi_rastrigin", number_of_variables); /* Compute best solution later once the sub-problems are well defined */ @@ -313,8 +314,9 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat size_t nb_swaps1, nb_swaps2; double condition = 100.0; - double mu0, mu1, d = 1, s; - double *mu0_vector, *mu1_vector; + double mu0, mu1, d = 1.0, s; + double *mu0_vector, *mu1_vector, *sign_vector; /* Wassim sign vector designate the 1^+_- vector*/ + coco_random_state_t *rng = coco_random_new((uint32_t) rseed); fopt = bbob2009_compute_fopt(function, instance); s = 1. - 0.5 / (sqrt((double) (dimension + 20)) - 4.1); @@ -340,8 +342,8 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat P12 = coco_allocate_vector_size_t(dimension); P21 = coco_allocate_vector_size_t(dimension); P22 = coco_allocate_vector_size_t(dimension); - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps1, swap_range2); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps1, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps1, swap_range1); coco_compute_truncated_uniform_swap_permutation(P21, rseed + 5000000, dimension, nb_swaps2, swap_range2); coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps2, swap_range2); @@ -354,38 +356,51 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat mu1_vector[i] = mu1; } /* allocate sub-problems */ - /* subproblem 1 with \mu_0*/ ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); - sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0; + ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); + + /* set fopt on the non transformed version. Since sub-problems */ + f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); + + /* set xopt */ + sign_vector = coco_allocate_vector(dimension); + for ( i = 0; i < dimension; i++) { + if ( coco_random_normal(rng) < 0.0) {/* Wassim: noraml is used here but unif for Schweffel!!! */ + sign_vector[i] = -1.0; + } else { + sign_vector[i] = 1.0; + } + problem->best_parameter[i] = 0.5 * mu0 * sign_vector[i]; /* Wassim: no 0.5 in documentation! */ + } + /* apply transformations to sub-problems */ + sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0; *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu0_vector, 0); + *sub_problem_tmp = transform_vars_x_hat_generic(*sub_problem_tmp, sign_vector); - /* subproblem 2 with \mu_1*/ - ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1; *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu1_vector, 0); - *sub_problem_tmp = transform_obj_shift(*sub_problem_tmp, d * dimension); - - /* apply var transformations to sub problem - *problem_i = transform_vars_scale(*problem_i, sqrt(sqrt(sqrt(alpha_i)))); - *problem_i = transform_vars_conditioning(*problem_i, alpha_i); - *problem_i = transform_vars_permutation(*problem_i, P_Lambda, dimension); - *problem_i = transform_vars_permutation(*problem_i, P2, dimension); - *problem_i = transform_vars_blockrotation(*problem_i, B_copy, dimension, block_sizes, nb_blocks); - *problem_i = transform_vars_permutation(*problem_i, P1, dimension); - *problem_i = transform_vars_shift(*problem_i, y_i, 0); - - *problem_i = transform_obj_scale(problem, 1.0 / (double) dimension); - - f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); + *sub_problem_tmp = transform_vars_x_hat_generic(*sub_problem_tmp, sign_vector); + + *sub_problem_tmp = transform_obj_shift(*sub_problem_tmp, d * (double) dimension); + *sub_problem_tmp = transform_obj_scale(*sub_problem_tmp, s); + + /* transformations on main problem */ + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_conditioning(problem, condition); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_shift(problem, mu0_vector, 0); + problem = transform_vars_x_hat_generic(problem, sign_vector); - problem = transform_obj_oscillate(problem); - problem = transform_obj_power(problem, 2.0); problem = transform_obj_penalize(problem, penalty_factor); - problem = transform_obj_shift(problem, fopt);*/ - - + problem = transform_obj_shift(problem, fopt); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); @@ -400,6 +415,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat coco_free_memory(block_sizes2); coco_free_memory(mu0_vector); coco_free_memory(mu1_vector); + coco_free_memory(sign_vector); return problem; } diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 26b968806..f6c17c4d1 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -125,8 +125,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_katsuura_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 24) { - problem = NULL; /*f_lunacek_bi_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else { coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", function, instance, dimension); return NULL; /* Never reached */ diff --git a/code-experiments/src/transform_vars_x_hat.c b/code-experiments/src/transform_vars_x_hat.c index 9e9a05707..3a572f4c5 100644 --- a/code-experiments/src/transform_vars_x_hat.c +++ b/code-experiments/src/transform_vars_x_hat.c @@ -64,7 +64,7 @@ static coco_problem_t *transform_vars_x_hat(coco_problem_t *inner_problem, const problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_x_hat_free, "transform_vars_x_hat"); problem->evaluate_function = transform_vars_x_hat_evaluate; - /* Dirty way of setting the best parameter of the transformed f_schwefel... */ + /* Dirty way of setting the best parameter of the transformed f_schwefel... Wassim: WHY?!!*/ bbob2009_unif(data->x, problem->number_of_variables, data->seed); for (i = 0; i < problem->number_of_variables; ++i) { if (data->x[i] - 0.5 < 0.0) { diff --git a/code-experiments/src/transform_vars_x_hat_generic.c b/code-experiments/src/transform_vars_x_hat_generic.c new file mode 100644 index 000000000..3c24894d4 --- /dev/null +++ b/code-experiments/src/transform_vars_x_hat_generic.c @@ -0,0 +1,67 @@ +/** + * @file transform_vars_x_hat_generic.c + * @brief Implementation of multiplying the decision values by the vector 1+-. + * Wassim: TODO: should eventually replace the non generic version in its use in Schwefel where xopt would be set elsewhere + */ + +#include + +#include "coco.h" +#include "coco_problem.c" +#include "suite_bbob_legacy_code.c" + +/** + * @brief Data type for transform_vars_x_hat_generic. + */ +typedef struct { + double *sign_vector; + double *x; + coco_problem_free_function_t old_free_problem; +} transform_vars_x_hat_generic_data_t; + +/** + * @brief Evaluates the transformation. + */ +static void transform_vars_x_hat_generic_evaluate(coco_problem_t *problem, const double *x, double *y) { + size_t i; + transform_vars_x_hat_generic_data_t *data; + coco_problem_t *inner_problem; + data = (transform_vars_x_hat_generic_data_t *) coco_problem_transformed_get_data(problem); + inner_problem = coco_problem_transformed_get_inner_problem(problem); + + for (i = 0; i < problem->number_of_variables; ++i) { + data->x[i] = 2.0 * data->sign_vector[i] * x[i]; + } + coco_evaluate_function(inner_problem, data->x, y); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Frees the data object. + */ +static void transform_vars_x_hat_generic_free(void *thing) { + transform_vars_x_hat_generic_data_t *data = (transform_vars_x_hat_generic_data_t *) thing; + coco_free_memory(data->x); + coco_free_memory(data->sign_vector); +} + +/** + * @brief Creates the transformation. + */ +static coco_problem_t *transform_vars_x_hat_generic(coco_problem_t *inner_problem, const double *sign_vector) { + transform_vars_x_hat_generic_data_t *data; + coco_problem_t *problem; + size_t i; + + data = (transform_vars_x_hat_generic_data_t *) coco_allocate_memory(sizeof(*data)); + data->x = coco_allocate_vector(inner_problem->number_of_variables); + data->sign_vector = coco_allocate_vector(inner_problem->number_of_variables); + for (i = 0; i < inner_problem->number_of_variables; ++i) { + data->sign_vector[i] = sign_vector[i]; + } + + problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_x_hat_generic_free, "transform_vars_x_hat_generic"); + problem->evaluate_function = transform_vars_x_hat_generic_evaluate; + + return problem; +} From 74e9b8586674273056a6188bc77b39f8d056cfaf Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 11 Mar 2016 15:55:28 +0100 Subject: [PATCH 122/446] implemented the large scale version of f24 using the raw function/transforms approach. Also added a generic x_hat transform that no longer sets xopt --- code-experiments/src/f_gallagher.c | 3 +- code-experiments/src/f_lunacek_bi_rastrigin.c | 78 +++++++++++-------- code-experiments/src/suite_largescale.c | 4 +- code-experiments/src/transform_vars_x_hat.c | 2 +- .../src/transform_vars_x_hat_generic.c | 67 ++++++++++++++++ 5 files changed, 119 insertions(+), 35 deletions(-) create mode 100644 code-experiments/src/transform_vars_x_hat_generic.c diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 7ada5c01b..abfb27ead 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -533,7 +533,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); - + + coco_random_free(rng); coco_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index d03280b97..50a535b76 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -12,6 +12,7 @@ #include "transform_obj_shift.c" #include "transform_obj_scale.c" #include "f_sphere.c" +#include "transform_vars_x_hat_generic.c" /** * @brief Data type for the Lunacek bi-Rastrigin problem. @@ -227,7 +228,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_sub_problem_allocate(const size_t f_lunacek_bi_rastrigin_sub_evaluate_core, NULL, number_of_variables, -5.0, 5.0, 0.0); problem_i->versatile_data = NULL; coco_problem_set_id(problem_i, "%s_d%04lu", "lunacek_bi_rastrigin_sub", number_of_variables); - + f_lunacek_bi_rastrigin_sub_evaluate_core(problem_i, problem_i->best_parameter, problem_i->best_value); return problem_i; } @@ -250,11 +251,12 @@ static double f_lunacek_bi_rastrigin_core(const double *x, const size_t number_o problem_sub_mu1->evaluate_function(problem_sub_mu1, x, &y1); - result = number_of_variables; + result = (double) number_of_variables; for (i = 0; i < number_of_variables; i++) { result -= cos(2 * coco_pi * x[i]); } + result *= 10.0; result += coco_double_min(y0, y1); return result; @@ -280,9 +282,8 @@ static coco_problem_t *f_lunacek_bi_rastrigin_problem_allocate(const size_t numb coco_problem_t *problem = coco_problem_allocate_from_scalars("lunacek_bi_rastrigin function", f_lunacek_bi_rastrigin_evaluate_core, f_lunacek_bi_rastrigin_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); - f_lunacek_bi_rastrigin_versatile_data_t *versatile_data_tmp; + problem->versatile_data = (f_lunacek_bi_rastrigin_versatile_data_t *) coco_allocate_memory(sizeof(f_lunacek_bi_rastrigin_versatile_data_t)); - coco_problem_set_id(problem, "%s_d%04lu", "lunacek_bi_rastrigin", number_of_variables); /* Compute best solution later once the sub-problems are well defined */ @@ -313,8 +314,9 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat size_t nb_swaps1, nb_swaps2; double condition = 100.0; - double mu0, mu1, d = 1, s; - double *mu0_vector, *mu1_vector; + double mu0, mu1, d = 1.0, s; + double *mu0_vector, *mu1_vector, *sign_vector; /* Wassim sign vector designate the 1^+_- vector*/ + coco_random_state_t *rng = coco_random_new((uint32_t) rseed); fopt = bbob2009_compute_fopt(function, instance); s = 1. - 0.5 / (sqrt((double) (dimension + 20)) - 4.1); @@ -340,8 +342,8 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat P12 = coco_allocate_vector_size_t(dimension); P21 = coco_allocate_vector_size_t(dimension); P22 = coco_allocate_vector_size_t(dimension); - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps1, swap_range2); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps1, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps1, swap_range1); coco_compute_truncated_uniform_swap_permutation(P21, rseed + 5000000, dimension, nb_swaps2, swap_range2); coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps2, swap_range2); @@ -354,38 +356,51 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat mu1_vector[i] = mu1; } /* allocate sub-problems */ - /* subproblem 1 with \mu_0*/ ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); - sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0; + ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); + + /* set fopt on the non transformed version. Since sub-problems */ + f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); + + /* set xopt */ + sign_vector = coco_allocate_vector(dimension); + for ( i = 0; i < dimension; i++) { + if ( coco_random_normal(rng) < 0.0) {/* Wassim: noraml is used here but unif for Schweffel!!! */ + sign_vector[i] = -1.0; + } else { + sign_vector[i] = 1.0; + } + problem->best_parameter[i] = 0.5 * mu0 * sign_vector[i]; /* Wassim: no 0.5 in documentation! */ + } + /* apply transformations to sub-problems */ + sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0; *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu0_vector, 0); + *sub_problem_tmp = transform_vars_x_hat_generic(*sub_problem_tmp, sign_vector); - /* subproblem 2 with \mu_1*/ - ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1; *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu1_vector, 0); - *sub_problem_tmp = transform_obj_shift(*sub_problem_tmp, d * dimension); - - /* apply var transformations to sub problem - *problem_i = transform_vars_scale(*problem_i, sqrt(sqrt(sqrt(alpha_i)))); - *problem_i = transform_vars_conditioning(*problem_i, alpha_i); - *problem_i = transform_vars_permutation(*problem_i, P_Lambda, dimension); - *problem_i = transform_vars_permutation(*problem_i, P2, dimension); - *problem_i = transform_vars_blockrotation(*problem_i, B_copy, dimension, block_sizes, nb_blocks); - *problem_i = transform_vars_permutation(*problem_i, P1, dimension); - *problem_i = transform_vars_shift(*problem_i, y_i, 0); - - *problem_i = transform_obj_scale(problem, 1.0 / (double) dimension); - - f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); + *sub_problem_tmp = transform_vars_x_hat_generic(*sub_problem_tmp, sign_vector); + + *sub_problem_tmp = transform_obj_shift(*sub_problem_tmp, d * (double) dimension); + *sub_problem_tmp = transform_obj_scale(*sub_problem_tmp, s); + + /* transformations on main problem */ + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_conditioning(problem, condition); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_shift(problem, mu0_vector, 0); + problem = transform_vars_x_hat_generic(problem, sign_vector); - problem = transform_obj_oscillate(problem); - problem = transform_obj_power(problem, 2.0); problem = transform_obj_penalize(problem, penalty_factor); - problem = transform_obj_shift(problem, fopt);*/ - - + problem = transform_obj_shift(problem, fopt); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); @@ -400,6 +415,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat coco_free_memory(block_sizes2); coco_free_memory(mu0_vector); coco_free_memory(mu1_vector); + coco_free_memory(sign_vector); return problem; } diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 26b968806..f6c17c4d1 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -125,8 +125,8 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_katsuura_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 24) { - problem = NULL; /*f_lunacek_bi_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ + problem = f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else { coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", function, instance, dimension); return NULL; /* Never reached */ diff --git a/code-experiments/src/transform_vars_x_hat.c b/code-experiments/src/transform_vars_x_hat.c index 9e9a05707..3a572f4c5 100644 --- a/code-experiments/src/transform_vars_x_hat.c +++ b/code-experiments/src/transform_vars_x_hat.c @@ -64,7 +64,7 @@ static coco_problem_t *transform_vars_x_hat(coco_problem_t *inner_problem, const problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_x_hat_free, "transform_vars_x_hat"); problem->evaluate_function = transform_vars_x_hat_evaluate; - /* Dirty way of setting the best parameter of the transformed f_schwefel... */ + /* Dirty way of setting the best parameter of the transformed f_schwefel... Wassim: WHY?!!*/ bbob2009_unif(data->x, problem->number_of_variables, data->seed); for (i = 0; i < problem->number_of_variables; ++i) { if (data->x[i] - 0.5 < 0.0) { diff --git a/code-experiments/src/transform_vars_x_hat_generic.c b/code-experiments/src/transform_vars_x_hat_generic.c new file mode 100644 index 000000000..3c24894d4 --- /dev/null +++ b/code-experiments/src/transform_vars_x_hat_generic.c @@ -0,0 +1,67 @@ +/** + * @file transform_vars_x_hat_generic.c + * @brief Implementation of multiplying the decision values by the vector 1+-. + * Wassim: TODO: should eventually replace the non generic version in its use in Schwefel where xopt would be set elsewhere + */ + +#include + +#include "coco.h" +#include "coco_problem.c" +#include "suite_bbob_legacy_code.c" + +/** + * @brief Data type for transform_vars_x_hat_generic. + */ +typedef struct { + double *sign_vector; + double *x; + coco_problem_free_function_t old_free_problem; +} transform_vars_x_hat_generic_data_t; + +/** + * @brief Evaluates the transformation. + */ +static void transform_vars_x_hat_generic_evaluate(coco_problem_t *problem, const double *x, double *y) { + size_t i; + transform_vars_x_hat_generic_data_t *data; + coco_problem_t *inner_problem; + data = (transform_vars_x_hat_generic_data_t *) coco_problem_transformed_get_data(problem); + inner_problem = coco_problem_transformed_get_inner_problem(problem); + + for (i = 0; i < problem->number_of_variables; ++i) { + data->x[i] = 2.0 * data->sign_vector[i] * x[i]; + } + coco_evaluate_function(inner_problem, data->x, y); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Frees the data object. + */ +static void transform_vars_x_hat_generic_free(void *thing) { + transform_vars_x_hat_generic_data_t *data = (transform_vars_x_hat_generic_data_t *) thing; + coco_free_memory(data->x); + coco_free_memory(data->sign_vector); +} + +/** + * @brief Creates the transformation. + */ +static coco_problem_t *transform_vars_x_hat_generic(coco_problem_t *inner_problem, const double *sign_vector) { + transform_vars_x_hat_generic_data_t *data; + coco_problem_t *problem; + size_t i; + + data = (transform_vars_x_hat_generic_data_t *) coco_allocate_memory(sizeof(*data)); + data->x = coco_allocate_vector(inner_problem->number_of_variables); + data->sign_vector = coco_allocate_vector(inner_problem->number_of_variables); + for (i = 0; i < inner_problem->number_of_variables; ++i) { + data->sign_vector[i] = sign_vector[i]; + } + + problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_x_hat_generic_free, "transform_vars_x_hat_generic"); + problem->evaluate_function = transform_vars_x_hat_generic_evaluate; + + return problem; +} From f6275996c39b0834b7d69b7d4b8bd14ca75cc7bb Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 11 Mar 2016 17:26:16 +0100 Subject: [PATCH 123/446] format and minor midifications on f_attractive_sector.c --- code-experiments/src/f_attractive_sector.c | 14 ++++++-------- code-experiments/src/suite_largescale.c | 2 -- code-experiments/src/transform_obj_shift.c | 2 +- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/f_attractive_sector.c b/code-experiments/src/f_attractive_sector.c index cfdac93c7..86699fd85 100644 --- a/code-experiments/src/f_attractive_sector.c +++ b/code-experiments/src/f_attractive_sector.c @@ -155,8 +155,9 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c double **B1, **B2; const double *const *B1_copy; const double *const *B2_copy; + const double condition = 10.0; size_t *P11, *P12, *P21, *P22; - size_t *block_sizes1, *block_sizes2;/*each of R and Q migh have its own parameter values*/ + size_t *block_sizes1, *block_sizes2;/* each of R and Q migh have its own parameter values */ size_t nb_blocks1, nb_blocks2; size_t swap_range1, swap_range2; size_t nb_swaps1, nb_swaps2; @@ -166,21 +167,19 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c bbob2009_compute_xopt(xopt, rseed, dimension); block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale");/*for potential future compatibility*/ + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B1_copy = (const double *const *)B1;/* Wassim: silences the warning, not sure it prevents the modification of B at all levels*/ B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); - P11 = coco_allocate_vector_size_t(dimension); P12 = coco_allocate_vector_size_t(dimension); P21 = coco_allocate_vector_size_t(dimension); @@ -190,7 +189,6 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); - problem = f_attractive_sector_allocate(dimension, xopt); problem = transform_obj_scale(problem, 1. / (double) dimension); problem = transform_obj_oscillate(problem); @@ -200,7 +198,7 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_conditioning(problem, 10.0);/*uses directly the tranformation instead of manually computed the product matrix*/ + problem = transform_vars_conditioning(problem, condition); problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P11, dimension); @@ -208,7 +206,7 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); + coco_problem_set_type(problem, "block_rotated_moderate"); coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index f6c17c4d1..9bfa89782 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -53,8 +53,6 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, const long rseed_3 = (long) (3 + 10000 * instance); const long rseed_17 = (long) (17 + 10000 * instance); - /*TODO: finish implementing the large scale test-suite functions. - current list: 1-22*/ if (function == 1) { problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); diff --git a/code-experiments/src/transform_obj_shift.c b/code-experiments/src/transform_obj_shift.c index 3e7cea9c3..164b3d2da 100644 --- a/code-experiments/src/transform_obj_shift.c +++ b/code-experiments/src/transform_obj_shift.c @@ -24,7 +24,7 @@ static void transform_obj_shift_evaluate(coco_problem_t *problem, const double * data = (transform_obj_shift_data_t *) coco_problem_transformed_get_data(problem); coco_evaluate_function(coco_problem_transformed_get_inner_problem(problem), x, y); for (i = 0; i < problem->number_of_objectives; i++) { - y[i] += data->offset; + y[i] += data->offset; } assert(y[0] + 1e-13 >= problem->best_value[0]); } From 92823d25972dbce814e458ec2112110b78f19bca Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 11 Mar 2016 17:26:16 +0100 Subject: [PATCH 124/446] format and minor midifications on f_attractive_sector.c --- code-experiments/src/f_attractive_sector.c | 14 ++++++-------- code-experiments/src/suite_largescale.c | 2 -- code-experiments/src/transform_obj_shift.c | 2 +- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/f_attractive_sector.c b/code-experiments/src/f_attractive_sector.c index cfdac93c7..86699fd85 100644 --- a/code-experiments/src/f_attractive_sector.c +++ b/code-experiments/src/f_attractive_sector.c @@ -155,8 +155,9 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c double **B1, **B2; const double *const *B1_copy; const double *const *B2_copy; + const double condition = 10.0; size_t *P11, *P12, *P21, *P22; - size_t *block_sizes1, *block_sizes2;/*each of R and Q migh have its own parameter values*/ + size_t *block_sizes1, *block_sizes2;/* each of R and Q migh have its own parameter values */ size_t nb_blocks1, nb_blocks2; size_t swap_range1, swap_range2; size_t nb_swaps1, nb_swaps2; @@ -166,21 +167,19 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c bbob2009_compute_xopt(xopt, rseed, dimension); block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale");/*for potential future compatibility*/ + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B1_copy = (const double *const *)B1;/* Wassim: silences the warning, not sure it prevents the modification of B at all levels*/ B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); - P11 = coco_allocate_vector_size_t(dimension); P12 = coco_allocate_vector_size_t(dimension); P21 = coco_allocate_vector_size_t(dimension); @@ -190,7 +189,6 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); - problem = f_attractive_sector_allocate(dimension, xopt); problem = transform_obj_scale(problem, 1. / (double) dimension); problem = transform_obj_oscillate(problem); @@ -200,7 +198,7 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_conditioning(problem, 10.0);/*uses directly the tranformation instead of manually computed the product matrix*/ + problem = transform_vars_conditioning(problem, condition); problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P11, dimension); @@ -208,7 +206,7 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); + coco_problem_set_type(problem, "block_rotated_moderate"); coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index f6c17c4d1..9bfa89782 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -53,8 +53,6 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, const long rseed_3 = (long) (3 + 10000 * instance); const long rseed_17 = (long) (17 + 10000 * instance); - /*TODO: finish implementing the large scale test-suite functions. - current list: 1-22*/ if (function == 1) { problem = f_sphere_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); diff --git a/code-experiments/src/transform_obj_shift.c b/code-experiments/src/transform_obj_shift.c index 3e7cea9c3..164b3d2da 100644 --- a/code-experiments/src/transform_obj_shift.c +++ b/code-experiments/src/transform_obj_shift.c @@ -24,7 +24,7 @@ static void transform_obj_shift_evaluate(coco_problem_t *problem, const double * data = (transform_obj_shift_data_t *) coco_problem_transformed_get_data(problem); coco_evaluate_function(coco_problem_transformed_get_inner_problem(problem), x, y); for (i = 0; i < problem->number_of_objectives; i++) { - y[i] += data->offset; + y[i] += data->offset; } assert(y[0] + 1e-13 >= problem->best_value[0]); } From 449698d7b060e285db45a7ffacfef0e2abedf422 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 11 Mar 2016 17:54:03 +0100 Subject: [PATCH 125/446] proportion_long_axes_denom is no longer a constant but stored in problem->versatile_data->proportion_long_axes_denom --- .../src/f_bent_cigar_generalized.c | 42 +++++++++++++------ code-experiments/src/f_gallagher.c | 2 - 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index 2cbb117c1..09f6587f6 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -18,23 +18,38 @@ #include "transform_vars_blockrotation.c" #include "transform_obj_scale.c" -#define proportion_long_axes_denom 40 +/** + * @brief Data type for the versatile_data_t + */ +typedef struct { + size_t proportion_long_axes_denom; +} f_bent_cigar_generalized_versatile_data_t; +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_bent_cigar_generalized_versatile_data_free(coco_problem_t *problem) { + + f_bent_cigar_generalized_versatile_data_t *versatile_data = (f_bent_cigar_generalized_versatile_data_t *) problem->versatile_data; + coco_free_memory(versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} /** * @brief Implements the generalized bent cigar function without connections to any COCO structures. */ -static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables) { +static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables, f_bent_cigar_generalized_versatile_data_t* f_bent_cigar_generalized_versatile_data) { static const double condition = 1.0e6; size_t i, nb_long_axes; double result; result = 0; - nb_long_axes = number_of_variables / proportion_long_axes_denom; - if (number_of_variables % proportion_long_axes_denom != 0) { + nb_long_axes = number_of_variables / f_bent_cigar_generalized_versatile_data->proportion_long_axes_denom; + if (number_of_variables % f_bent_cigar_generalized_versatile_data->proportion_long_axes_denom != 0) { nb_long_axes += 1; } - for (i = 0; i < nb_long_axes; ++i) { result += x[i] * x[i]; } @@ -49,18 +64,20 @@ static double f_bent_cigar_generalized_raw(const double *x, const size_t number_ */ static void f_bent_cigar_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_bent_cigar_generalized_raw(x, problem->number_of_variables); + y[0] = f_bent_cigar_generalized_raw(x, problem->number_of_variables, (f_bent_cigar_generalized_versatile_data_t *)problem->versatile_data); assert(y[0] + 1e-13 >= problem->best_value[0]); } /** * @brief Allocates the basic generalized bent cigar problem. */ -static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_variables) { +static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_variables, size_t proportion_long_axes_denom) { coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized bent cigar function", - f_bent_cigar_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + f_bent_cigar_generalized_evaluate, f_bent_cigar_generalized_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "bent_cigar", number_of_variables); + problem->versatile_data = (f_bent_cigar_generalized_versatile_data_t *) coco_allocate_memory(sizeof(f_bent_cigar_generalized_versatile_data_t)); + ((f_bent_cigar_generalized_versatile_data_t *) problem->versatile_data)->proportion_long_axes_denom = proportion_long_axes_denom; /* Compute best solution */ f_bent_cigar_generalized_evaluate(problem, problem->best_parameter, problem->best_value); @@ -87,6 +104,7 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc size_t nb_blocks; size_t swap_range; size_t nb_swaps; + const size_t proportion_long_axes_denom = 40; block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); @@ -103,12 +121,12 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - problem = f_bent_cigar_generalized_allocate(dimension); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = f_bent_cigar_generalized_allocate(dimension, proportion_long_axes_denom); + problem = transform_vars_permutation(problem, P2, dimension); problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_asymmetric(problem, 0.5); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_permutation(problem, P2, dimension); problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); @@ -118,7 +136,7 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + coco_problem_set_type(problem, "block_rotated_ill-conditioned"); coco_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index abfb27ead..f394a90da 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -300,8 +300,6 @@ static void f_gallagher_versatile_data_free(coco_problem_t *problem) { } - - /** * @brief Implements the gallagher function subproblems without connections to any COCO structures. * Wassim: core to differentiate it from raw for now From 3b3390410399ef6cc9c2fb2ce90f1c4e3eb7a8d1 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 11 Mar 2016 17:54:03 +0100 Subject: [PATCH 126/446] proportion_long_axes_denom is no longer a constant but stored in problem->versatile_data->proportion_long_axes_denom --- .../src/f_bent_cigar_generalized.c | 42 +++++++++++++------ code-experiments/src/f_gallagher.c | 2 - 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index 2cbb117c1..09f6587f6 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -18,23 +18,38 @@ #include "transform_vars_blockrotation.c" #include "transform_obj_scale.c" -#define proportion_long_axes_denom 40 +/** + * @brief Data type for the versatile_data_t + */ +typedef struct { + size_t proportion_long_axes_denom; +} f_bent_cigar_generalized_versatile_data_t; +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_bent_cigar_generalized_versatile_data_free(coco_problem_t *problem) { + + f_bent_cigar_generalized_versatile_data_t *versatile_data = (f_bent_cigar_generalized_versatile_data_t *) problem->versatile_data; + coco_free_memory(versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} /** * @brief Implements the generalized bent cigar function without connections to any COCO structures. */ -static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables) { +static double f_bent_cigar_generalized_raw(const double *x, const size_t number_of_variables, f_bent_cigar_generalized_versatile_data_t* f_bent_cigar_generalized_versatile_data) { static const double condition = 1.0e6; size_t i, nb_long_axes; double result; result = 0; - nb_long_axes = number_of_variables / proportion_long_axes_denom; - if (number_of_variables % proportion_long_axes_denom != 0) { + nb_long_axes = number_of_variables / f_bent_cigar_generalized_versatile_data->proportion_long_axes_denom; + if (number_of_variables % f_bent_cigar_generalized_versatile_data->proportion_long_axes_denom != 0) { nb_long_axes += 1; } - for (i = 0; i < nb_long_axes; ++i) { result += x[i] * x[i]; } @@ -49,18 +64,20 @@ static double f_bent_cigar_generalized_raw(const double *x, const size_t number_ */ static void f_bent_cigar_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_bent_cigar_generalized_raw(x, problem->number_of_variables); + y[0] = f_bent_cigar_generalized_raw(x, problem->number_of_variables, (f_bent_cigar_generalized_versatile_data_t *)problem->versatile_data); assert(y[0] + 1e-13 >= problem->best_value[0]); } /** * @brief Allocates the basic generalized bent cigar problem. */ -static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_variables) { +static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_variables, size_t proportion_long_axes_denom) { coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized bent cigar function", - f_bent_cigar_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); + f_bent_cigar_generalized_evaluate, f_bent_cigar_generalized_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); coco_problem_set_id(problem, "%s_d%02lu", "bent_cigar", number_of_variables); + problem->versatile_data = (f_bent_cigar_generalized_versatile_data_t *) coco_allocate_memory(sizeof(f_bent_cigar_generalized_versatile_data_t)); + ((f_bent_cigar_generalized_versatile_data_t *) problem->versatile_data)->proportion_long_axes_denom = proportion_long_axes_denom; /* Compute best solution */ f_bent_cigar_generalized_evaluate(problem, problem->best_parameter, problem->best_value); @@ -87,6 +104,7 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc size_t nb_blocks; size_t swap_range; size_t nb_swaps; + const size_t proportion_long_axes_denom = 40; block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); @@ -103,12 +121,12 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - problem = f_bent_cigar_generalized_allocate(dimension); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = f_bent_cigar_generalized_allocate(dimension, proportion_long_axes_denom); + problem = transform_vars_permutation(problem, P2, dimension); problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_asymmetric(problem, 0.5); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_permutation(problem, P2, dimension); problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); @@ -118,7 +136,7 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + coco_problem_set_type(problem, "block_rotated_ill-conditioned"); coco_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index abfb27ead..f394a90da 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -300,8 +300,6 @@ static void f_gallagher_versatile_data_free(coco_problem_t *problem) { } - - /** * @brief Implements the gallagher function subproblems without connections to any COCO structures. * Wassim: core to differentiate it from raw for now From d44bdc9a3b1bf20b97a73ebcbddfd41a792a1b58 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 15 Mar 2016 16:03:38 +0100 Subject: [PATCH 127/446] f_discuss_generalized: proportion_short_axes_denom also a part of problem->versatile_data now. Plus some minor changes --- .../src/f_bent_cigar_generalized.c | 2 +- code-experiments/src/f_different_powers.c | 4 +- code-experiments/src/f_discus_generalized.c | 47 ++++++++++++++----- code-experiments/src/f_schaffers.c | 2 +- code-experiments/src/f_schwefel.c | 5 +- code-experiments/src/suite_largescale.c | 20 ++++---- 6 files changed, 53 insertions(+), 27 deletions(-) diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index 09f6587f6..66b43f40a 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -75,7 +75,7 @@ static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_ coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized bent cigar function", f_bent_cigar_generalized_evaluate, f_bent_cigar_generalized_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); - coco_problem_set_id(problem, "%s_d%02lu", "bent_cigar", number_of_variables); + coco_problem_set_id(problem, "%s_d%04lu", "bent_cigar", number_of_variables); problem->versatile_data = (f_bent_cigar_generalized_versatile_data_t *) coco_allocate_memory(sizeof(f_bent_cigar_generalized_versatile_data_t)); ((f_bent_cigar_generalized_versatile_data_t *) problem->versatile_data)->proportion_long_axes_denom = proportion_long_axes_denom; diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 50418983f..59e943447 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -138,7 +138,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); problem = f_different_powers_allocate(dimension); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_permutation(problem, P2, dimension); problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); @@ -148,7 +148,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); + coco_problem_set_type(problem, "block_rotated_ill-conditioned"); coco_free_block_matrix(B, dimension); coco_free_memory(P1); diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c index bc9572181..0dea76935 100644 --- a/code-experiments/src/f_discus_generalized.c +++ b/code-experiments/src/f_discus_generalized.c @@ -1,5 +1,5 @@ /** - * @file f_discus.c + * @file f_discus_generalized.c * @brief Implementation of the discus function and problem. */ @@ -16,19 +16,37 @@ #include "transform_vars_blockrotation.c" #include "transform_obj_scale.c" -#define proportion_short_axes_denom 40 /* Make it a parameter of f_discus_generalized_raw? */ +/** + * @brief Data type for the versatile_data_t + */ +typedef struct { + size_t proportion_short_axes_denom; +} f_discus_generalized_versatile_data_t; + +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_discus_generalized_versatile_data_free(coco_problem_t *problem) { + + f_discus_generalized_versatile_data_t *versatile_data = (f_discus_generalized_versatile_data_t *) problem->versatile_data; + coco_free_memory(versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + /** * @brief Implements the generalized discus function without connections to any COCO structures. */ -static double f_discus_generalized_raw(const double *x, const size_t number_of_variables) { +static double f_discus_generalized_raw(const double *x, const size_t number_of_variables, f_discus_generalized_versatile_data_t* f_discus_generalized_versatile_data) { static const double condition = 1.0e6; size_t i, nb_short_axes; double result; result = 0; - nb_short_axes = number_of_variables / proportion_short_axes_denom; - if (number_of_variables % proportion_short_axes_denom != 0) { + nb_short_axes = number_of_variables / f_discus_generalized_versatile_data->proportion_short_axes_denom; + if (number_of_variables % f_discus_generalized_versatile_data->proportion_short_axes_denom != 0) { nb_short_axes += 1; } @@ -49,18 +67,21 @@ static double f_discus_generalized_raw(const double *x, const size_t number_of_v */ static void f_discus_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_discus_generalized_raw(x, problem->number_of_variables); + y[0] = f_discus_generalized_raw(x, problem->number_of_variables, (f_discus_generalized_versatile_data_t *)problem->versatile_data); assert(y[0] + 1e-13 >= problem->best_value[0]); } /** * @brief Allocates the basic generalized discus problem. */ -static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_variables) { +static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_variables, size_t proportion_short_axes_denom) { coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized discus function", - f_discus_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); - coco_problem_set_id(problem, "%s_d%02lu", "discus_generalized", number_of_variables); + f_discus_generalized_evaluate, f_discus_generalized_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); + coco_problem_set_id(problem, "%s_d%04lu", "discus_generalized", number_of_variables); + problem->versatile_data = (f_discus_generalized_versatile_data_t *) coco_allocate_memory(sizeof(f_discus_generalized_versatile_data_t)); + ((f_discus_generalized_versatile_data_t *) problem->versatile_data)->proportion_short_axes_denom = proportion_short_axes_denom; + /* Compute best solution */ f_discus_generalized_evaluate(problem, problem->best_parameter, problem->best_value); @@ -89,6 +110,8 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( size_t swap_range; size_t nb_swaps; + const size_t proportion_short_axes_denom = 40; + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); @@ -104,9 +127,9 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - problem = f_discus_generalized_allocate(dimension); + problem = f_discus_generalized_allocate(dimension, proportion_short_axes_denom); problem = transform_vars_oscillate(problem); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_permutation(problem, P2, dimension); problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); @@ -116,7 +139,7 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + coco_problem_set_type(problem, "block_rotated_ill"); coco_free_block_matrix(B, dimension); coco_free_memory(P1); diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index cfe4965c9..8853f868f 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -188,7 +188,7 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_shift(problem, xopt, 0); problem = transform_obj_scale(problem, 1.0 / (double) dimension); - problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_penalize(problem, penalty_factor / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_schwefel.c b/code-experiments/src/f_schwefel.c index 729704406..b3454218e 100644 --- a/code-experiments/src/f_schwefel.c +++ b/code-experiments/src/f_schwefel.c @@ -81,7 +81,7 @@ static coco_problem_t *f_schwefel_bbob_problem_allocate(const size_t function, double *xopt, fopt; coco_problem_t *problem = NULL; size_t i; - + const double schwefel_const = 4.199999; double *tmp1 = coco_allocate_vector(dimension); double *tmp2 = coco_allocate_vector(dimension); @@ -112,8 +112,11 @@ static coco_problem_t *f_schwefel_bbob_problem_allocate(const size_t function, if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ problem = transform_obj_scale(problem, 1.0 / (double) dimension); } + + problem = transform_obj_shift(problem, schwefel_const); problem = transform_obj_shift(problem, fopt); + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "5-weakly-structured"); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 9bfa89782..9e534b1fc 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -5,21 +5,21 @@ #include "coco.h" -#include "f_sphere.c" -#include "f_ellipsoid.c" -#include "f_discus_generalized.c" +#include "f_attractive_sector.c" #include "f_bent_cigar_generalized.c" -#include "f_sharp_ridge.c" +#include "f_bueche_rastrigin.c" #include "f_different_powers.c" +#include "f_discus_generalized.c" +#include "f_ellipsoid.c" +#include "f_griewank_rosenbrock.c" +#include "f_linear_slope.c" #include "f_rastrigin.c" -#include "f_weierstrass.c" -#include "f_step_ellipsoid.c" #include "f_schaffers.c" -#include "f_griewank_rosenbrock.c" #include "f_schwefel.c" -#include "f_bueche_rastrigin.c" -#include "f_linear_slope.c" -#include "f_attractive_sector.c" +#include "f_sharp_ridge.c" +#include "f_sphere.c" +#include "f_step_ellipsoid.c" +#include "f_weierstrass.c" static coco_suite_t *coco_suite_allocate(const char *suite_name, const size_t number_of_functions, From ea99c7ad999556effbf497ae9af8c7c5f8e93b17 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 15 Mar 2016 16:03:38 +0100 Subject: [PATCH 128/446] f_discuss_generalized: proportion_short_axes_denom also a part of problem->versatile_data now. Plus some minor changes --- .../src/f_bent_cigar_generalized.c | 2 +- code-experiments/src/f_different_powers.c | 4 +- code-experiments/src/f_discus_generalized.c | 47 ++++++++++++++----- code-experiments/src/f_schaffers.c | 2 +- code-experiments/src/f_schwefel.c | 5 +- code-experiments/src/suite_largescale.c | 20 ++++---- 6 files changed, 53 insertions(+), 27 deletions(-) diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index 09f6587f6..66b43f40a 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -75,7 +75,7 @@ static coco_problem_t *f_bent_cigar_generalized_allocate(const size_t number_of_ coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized bent cigar function", f_bent_cigar_generalized_evaluate, f_bent_cigar_generalized_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); - coco_problem_set_id(problem, "%s_d%02lu", "bent_cigar", number_of_variables); + coco_problem_set_id(problem, "%s_d%04lu", "bent_cigar", number_of_variables); problem->versatile_data = (f_bent_cigar_generalized_versatile_data_t *) coco_allocate_memory(sizeof(f_bent_cigar_generalized_versatile_data_t)); ((f_bent_cigar_generalized_versatile_data_t *) problem->versatile_data)->proportion_long_axes_denom = proportion_long_axes_denom; diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 50418983f..59e943447 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -138,7 +138,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); problem = f_different_powers_allocate(dimension); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_permutation(problem, P2, dimension); problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); @@ -148,7 +148,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); + coco_problem_set_type(problem, "block_rotated_ill-conditioned"); coco_free_block_matrix(B, dimension); coco_free_memory(P1); diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c index bc9572181..0dea76935 100644 --- a/code-experiments/src/f_discus_generalized.c +++ b/code-experiments/src/f_discus_generalized.c @@ -1,5 +1,5 @@ /** - * @file f_discus.c + * @file f_discus_generalized.c * @brief Implementation of the discus function and problem. */ @@ -16,19 +16,37 @@ #include "transform_vars_blockrotation.c" #include "transform_obj_scale.c" -#define proportion_short_axes_denom 40 /* Make it a parameter of f_discus_generalized_raw? */ +/** + * @brief Data type for the versatile_data_t + */ +typedef struct { + size_t proportion_short_axes_denom; +} f_discus_generalized_versatile_data_t; + +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_discus_generalized_versatile_data_free(coco_problem_t *problem) { + + f_discus_generalized_versatile_data_t *versatile_data = (f_discus_generalized_versatile_data_t *) problem->versatile_data; + coco_free_memory(versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + /** * @brief Implements the generalized discus function without connections to any COCO structures. */ -static double f_discus_generalized_raw(const double *x, const size_t number_of_variables) { +static double f_discus_generalized_raw(const double *x, const size_t number_of_variables, f_discus_generalized_versatile_data_t* f_discus_generalized_versatile_data) { static const double condition = 1.0e6; size_t i, nb_short_axes; double result; result = 0; - nb_short_axes = number_of_variables / proportion_short_axes_denom; - if (number_of_variables % proportion_short_axes_denom != 0) { + nb_short_axes = number_of_variables / f_discus_generalized_versatile_data->proportion_short_axes_denom; + if (number_of_variables % f_discus_generalized_versatile_data->proportion_short_axes_denom != 0) { nb_short_axes += 1; } @@ -49,18 +67,21 @@ static double f_discus_generalized_raw(const double *x, const size_t number_of_v */ static void f_discus_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_discus_generalized_raw(x, problem->number_of_variables); + y[0] = f_discus_generalized_raw(x, problem->number_of_variables, (f_discus_generalized_versatile_data_t *)problem->versatile_data); assert(y[0] + 1e-13 >= problem->best_value[0]); } /** * @brief Allocates the basic generalized discus problem. */ -static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_variables) { +static coco_problem_t *f_discus_generalized_allocate(const size_t number_of_variables, size_t proportion_short_axes_denom) { coco_problem_t *problem = coco_problem_allocate_from_scalars("generalized discus function", - f_discus_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 0.0); - coco_problem_set_id(problem, "%s_d%02lu", "discus_generalized", number_of_variables); + f_discus_generalized_evaluate, f_discus_generalized_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); + coco_problem_set_id(problem, "%s_d%04lu", "discus_generalized", number_of_variables); + problem->versatile_data = (f_discus_generalized_versatile_data_t *) coco_allocate_memory(sizeof(f_discus_generalized_versatile_data_t)); + ((f_discus_generalized_versatile_data_t *) problem->versatile_data)->proportion_short_axes_denom = proportion_short_axes_denom; + /* Compute best solution */ f_discus_generalized_evaluate(problem, problem->best_parameter, problem->best_value); @@ -89,6 +110,8 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( size_t swap_range; size_t nb_swaps; + const size_t proportion_short_axes_denom = 40; + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); @@ -104,9 +127,9 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - problem = f_discus_generalized_allocate(dimension); + problem = f_discus_generalized_allocate(dimension, proportion_short_axes_denom); problem = transform_vars_oscillate(problem); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_permutation(problem, P2, dimension); problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); @@ -116,7 +139,7 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + coco_problem_set_type(problem, "block_rotated_ill"); coco_free_block_matrix(B, dimension); coco_free_memory(P1); diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index cfe4965c9..8853f868f 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -188,7 +188,7 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_shift(problem, xopt, 0); problem = transform_obj_scale(problem, 1.0 / (double) dimension); - problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_penalize(problem, penalty_factor / (double) dimension); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_schwefel.c b/code-experiments/src/f_schwefel.c index 729704406..b3454218e 100644 --- a/code-experiments/src/f_schwefel.c +++ b/code-experiments/src/f_schwefel.c @@ -81,7 +81,7 @@ static coco_problem_t *f_schwefel_bbob_problem_allocate(const size_t function, double *xopt, fopt; coco_problem_t *problem = NULL; size_t i; - + const double schwefel_const = 4.199999; double *tmp1 = coco_allocate_vector(dimension); double *tmp2 = coco_allocate_vector(dimension); @@ -112,8 +112,11 @@ static coco_problem_t *f_schwefel_bbob_problem_allocate(const size_t function, if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ problem = transform_obj_scale(problem, 1.0 / (double) dimension); } + + problem = transform_obj_shift(problem, schwefel_const); problem = transform_obj_shift(problem, fopt); + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "5-weakly-structured"); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 9bfa89782..9e534b1fc 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -5,21 +5,21 @@ #include "coco.h" -#include "f_sphere.c" -#include "f_ellipsoid.c" -#include "f_discus_generalized.c" +#include "f_attractive_sector.c" #include "f_bent_cigar_generalized.c" -#include "f_sharp_ridge.c" +#include "f_bueche_rastrigin.c" #include "f_different_powers.c" +#include "f_discus_generalized.c" +#include "f_ellipsoid.c" +#include "f_griewank_rosenbrock.c" +#include "f_linear_slope.c" #include "f_rastrigin.c" -#include "f_weierstrass.c" -#include "f_step_ellipsoid.c" #include "f_schaffers.c" -#include "f_griewank_rosenbrock.c" #include "f_schwefel.c" -#include "f_bueche_rastrigin.c" -#include "f_linear_slope.c" -#include "f_attractive_sector.c" +#include "f_sharp_ridge.c" +#include "f_sphere.c" +#include "f_step_ellipsoid.c" +#include "f_weierstrass.c" static coco_suite_t *coco_suite_allocate(const char *suite_name, const size_t number_of_functions, From 64f5e0f07615ec2b608e5b31c9518f27947a18e0 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 15 Mar 2016 16:21:44 +0100 Subject: [PATCH 129/446] f_gallagher: the w_i are now computed in the core function of the main problem, not in each sub-problem --- code-experiments/src/f_ellipsoid.c | 2 +- code-experiments/src/f_gallagher.c | 23 +++++++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index cf4213989..88c7d965b 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -182,7 +182,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + coco_problem_set_type(problem, "block-rotated_ill-conditionned"); coco_free_block_matrix(B, dimension); coco_free_memory(P1); diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index f394a90da..fa583a1a6 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -304,22 +304,17 @@ static void f_gallagher_versatile_data_free(coco_problem_t *problem) { * @brief Implements the gallagher function subproblems without connections to any COCO structures. * Wassim: core to differentiate it from raw for now */ -static double f_gallagher_sub_core(const double *x, const size_t number_of_variables, f_gallagher_versatile_data_t *versatile_data) { - double result, w_i, tmp; +static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { + double result, tmp; size_t i; - if (versatile_data->peak_index == 0) { - w_i = 10; - } else { - w_i = 1.1 + 8.0 * (((double) versatile_data->peak_index + 1) - 2.0) / (((double)versatile_data->number_of_peaks) - 2.0); - } tmp = 0; for (i = 0; i < number_of_variables; i++) { /*compute x^T x */ tmp += x[i] * x[i]; } - result = w_i * exp(- 1.0 / (2.0 * ((double)number_of_variables)) * tmp); + result = exp(- 1.0 / (2.0 * ((double)number_of_variables)) * tmp); return result; } @@ -330,7 +325,7 @@ static double f_gallagher_sub_core(const double *x, const size_t number_of_varia static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_gallagher_sub_core(x, problem->number_of_variables, (f_gallagher_versatile_data_t *) problem->versatile_data); + y[0] = f_gallagher_sub_core(x, problem->number_of_variables); /*assert(y[0] + 1e-13 >= problem->best_value[0]);*/ } @@ -366,13 +361,21 @@ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_ coco_problem_t *problem_i; double result = 0; - double y; + double y, w_i; size_t i; double maxf; + + for (i = 0; i < f_gallagher_versatile_data->number_of_peaks; i++) { problem_i = f_gallagher_versatile_data->sub_problems[i]; problem_i->evaluate_function(problem_i, x, &y); + if (i == 0) { + w_i = 10; + } else { + w_i = 1.1 + 8.0 * (((double) i + 1) - 2.0) / (((double)f_gallagher_versatile_data->number_of_peaks) - 2.0); + } + y *= w_i; if ( i == 0 || maxf < y ) { maxf = y; } From 4fceba25a2ab51a632630caed20b12b960e70304 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 15 Mar 2016 16:21:44 +0100 Subject: [PATCH 130/446] f_gallagher: the w_i are now computed in the core function of the main problem, not in each sub-problem --- code-experiments/src/f_ellipsoid.c | 2 +- code-experiments/src/f_gallagher.c | 23 +++++++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index cf4213989..88c7d965b 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -182,7 +182,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + coco_problem_set_type(problem, "block-rotated_ill-conditionned"); coco_free_block_matrix(B, dimension); coco_free_memory(P1); diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index f394a90da..fa583a1a6 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -304,22 +304,17 @@ static void f_gallagher_versatile_data_free(coco_problem_t *problem) { * @brief Implements the gallagher function subproblems without connections to any COCO structures. * Wassim: core to differentiate it from raw for now */ -static double f_gallagher_sub_core(const double *x, const size_t number_of_variables, f_gallagher_versatile_data_t *versatile_data) { - double result, w_i, tmp; +static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { + double result, tmp; size_t i; - if (versatile_data->peak_index == 0) { - w_i = 10; - } else { - w_i = 1.1 + 8.0 * (((double) versatile_data->peak_index + 1) - 2.0) / (((double)versatile_data->number_of_peaks) - 2.0); - } tmp = 0; for (i = 0; i < number_of_variables; i++) { /*compute x^T x */ tmp += x[i] * x[i]; } - result = w_i * exp(- 1.0 / (2.0 * ((double)number_of_variables)) * tmp); + result = exp(- 1.0 / (2.0 * ((double)number_of_variables)) * tmp); return result; } @@ -330,7 +325,7 @@ static double f_gallagher_sub_core(const double *x, const size_t number_of_varia static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_gallagher_sub_core(x, problem->number_of_variables, (f_gallagher_versatile_data_t *) problem->versatile_data); + y[0] = f_gallagher_sub_core(x, problem->number_of_variables); /*assert(y[0] + 1e-13 >= problem->best_value[0]);*/ } @@ -366,13 +361,21 @@ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_ coco_problem_t *problem_i; double result = 0; - double y; + double y, w_i; size_t i; double maxf; + + for (i = 0; i < f_gallagher_versatile_data->number_of_peaks; i++) { problem_i = f_gallagher_versatile_data->sub_problems[i]; problem_i->evaluate_function(problem_i, x, &y); + if (i == 0) { + w_i = 10; + } else { + w_i = 1.1 + 8.0 * (((double) i + 1) - 2.0) / (((double)f_gallagher_versatile_data->number_of_peaks) - 2.0); + } + y *= w_i; if ( i == 0 || maxf < y ) { maxf = y; } From d8e65af1f37cd6fb28cef6f00c9179e4e84b3396 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 15 Mar 2016 16:37:55 +0100 Subject: [PATCH 131/446] f_gallagher: removed the no longer needed peak_index field in versatile data and the additional parameters to allocate a sub-problem --- code-experiments/src/f_gallagher.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index fa583a1a6..0f4cc9c78 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -277,7 +277,6 @@ static coco_problem_t *f_gallagher_bbob_problem_allocate(const size_t function, typedef struct { size_t number_of_peaks; coco_problem_t **sub_problems; - int peak_index; } f_gallagher_versatile_data_t; /** @@ -332,16 +331,15 @@ static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double /** * @brief Allocates the basic gallagher sub problem. */ -static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_variables, int peak_index, size_t number_of_peaks) { +static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_variables) { coco_problem_t *problem_i = coco_problem_allocate_from_scalars("gallagher_sub function", f_gallagher_sub_evaluate_core, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); f_gallagher_versatile_data_t *versatile_data_tmp; problem_i->versatile_data = (f_gallagher_versatile_data_t *) coco_allocate_memory(sizeof(f_gallagher_versatile_data_t)); versatile_data_tmp = ((f_gallagher_versatile_data_t *) problem_i->versatile_data); - versatile_data_tmp->number_of_peaks = number_of_peaks;/*needed for w_i Wassim: consider moving the w_i computation to the global eval instead of the sub eval*/ + versatile_data_tmp->number_of_peaks = 0;/* not needed by the sub-problem */ versatile_data_tmp->sub_problems = NULL; - versatile_data_tmp->peak_index = peak_index;/*consistent with doc*/ coco_problem_set_id(problem_i, "%s_d%04lu", "gallagher_sub", number_of_variables); @@ -407,7 +405,6 @@ static coco_problem_t *f_gallagher_problem_allocate(const size_t number_of_varia versatile_data_tmp = (f_gallagher_versatile_data_t *)problem->versatile_data; versatile_data_tmp->number_of_peaks = number_of_peaks; versatile_data_tmp->sub_problems = (coco_problem_t **) coco_allocate_memory(number_of_peaks * sizeof(coco_problem_t *)); - versatile_data_tmp->peak_index = -1;/*since global problem*/ coco_problem_set_id(problem, "%s_d%04lu", "gallagher", number_of_variables); @@ -484,7 +481,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz for (peak_index = 0; peak_index < number_of_peaks; peak_index++) { /* allocate sub-problem */ - ((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index] = f_gallagher_sub_problem_allocate(dimension, peak_index, number_of_peaks); + ((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index] = f_gallagher_sub_problem_allocate(dimension); problem_i = &(((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index]); /* compute transformation parameters*/ /* y_i */ From 987b8f5286b58402acc376ee767d89d0550995f0 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 15 Mar 2016 16:37:55 +0100 Subject: [PATCH 132/446] f_gallagher: removed the no longer needed peak_index field in versatile data and the additional parameters to allocate a sub-problem --- code-experiments/src/f_gallagher.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index fa583a1a6..0f4cc9c78 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -277,7 +277,6 @@ static coco_problem_t *f_gallagher_bbob_problem_allocate(const size_t function, typedef struct { size_t number_of_peaks; coco_problem_t **sub_problems; - int peak_index; } f_gallagher_versatile_data_t; /** @@ -332,16 +331,15 @@ static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double /** * @brief Allocates the basic gallagher sub problem. */ -static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_variables, int peak_index, size_t number_of_peaks) { +static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_variables) { coco_problem_t *problem_i = coco_problem_allocate_from_scalars("gallagher_sub function", f_gallagher_sub_evaluate_core, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); f_gallagher_versatile_data_t *versatile_data_tmp; problem_i->versatile_data = (f_gallagher_versatile_data_t *) coco_allocate_memory(sizeof(f_gallagher_versatile_data_t)); versatile_data_tmp = ((f_gallagher_versatile_data_t *) problem_i->versatile_data); - versatile_data_tmp->number_of_peaks = number_of_peaks;/*needed for w_i Wassim: consider moving the w_i computation to the global eval instead of the sub eval*/ + versatile_data_tmp->number_of_peaks = 0;/* not needed by the sub-problem */ versatile_data_tmp->sub_problems = NULL; - versatile_data_tmp->peak_index = peak_index;/*consistent with doc*/ coco_problem_set_id(problem_i, "%s_d%04lu", "gallagher_sub", number_of_variables); @@ -407,7 +405,6 @@ static coco_problem_t *f_gallagher_problem_allocate(const size_t number_of_varia versatile_data_tmp = (f_gallagher_versatile_data_t *)problem->versatile_data; versatile_data_tmp->number_of_peaks = number_of_peaks; versatile_data_tmp->sub_problems = (coco_problem_t **) coco_allocate_memory(number_of_peaks * sizeof(coco_problem_t *)); - versatile_data_tmp->peak_index = -1;/*since global problem*/ coco_problem_set_id(problem, "%s_d%04lu", "gallagher", number_of_variables); @@ -484,7 +481,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz for (peak_index = 0; peak_index < number_of_peaks; peak_index++) { /* allocate sub-problem */ - ((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index] = f_gallagher_sub_problem_allocate(dimension, peak_index, number_of_peaks); + ((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index] = f_gallagher_sub_problem_allocate(dimension); problem_i = &(((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index]); /* compute transformation parameters*/ /* y_i */ From 722881579ebf0af7e44a9e64252bbd387622cfad Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 15 Mar 2016 16:58:36 +0100 Subject: [PATCH 133/446] f_gallagher: corrected a bug that made all the permutation of the eigenvalus use the same seed --- code-experiments/src/f_gallagher.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 0f4cc9c78..8ca04837f 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -309,7 +309,7 @@ static double f_gallagher_sub_core(const double *x, const size_t number_of_varia tmp = 0; - for (i = 0; i < number_of_variables; i++) { /*compute x^T x */ + for (i = 0; i < number_of_variables; i++) { tmp += x[i] * x[i]; } @@ -502,7 +502,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz (*problem_i)->best_value[0] = 0;/* to prevent raising the assert */ /* P_Lambda the permutation */ P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the alpha_i's */ - coco_compute_random_permutation(P_Lambda, rseed + 5000000, dimension); + coco_compute_random_permutation(P_Lambda, rseed + 5000000 + peak_index, dimension); /* apply var transformations to sub problem*/ *problem_i = transform_vars_scale(*problem_i, sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ From 5c8bcf4a0405ea53b0565048cad3ccb52dc7bbd0 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 15 Mar 2016 16:58:36 +0100 Subject: [PATCH 134/446] f_gallagher: corrected a bug that made all the permutation of the eigenvalus use the same seed --- code-experiments/src/f_gallagher.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 0f4cc9c78..8ca04837f 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -309,7 +309,7 @@ static double f_gallagher_sub_core(const double *x, const size_t number_of_varia tmp = 0; - for (i = 0; i < number_of_variables; i++) { /*compute x^T x */ + for (i = 0; i < number_of_variables; i++) { tmp += x[i] * x[i]; } @@ -502,7 +502,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz (*problem_i)->best_value[0] = 0;/* to prevent raising the assert */ /* P_Lambda the permutation */ P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the alpha_i's */ - coco_compute_random_permutation(P_Lambda, rseed + 5000000, dimension); + coco_compute_random_permutation(P_Lambda, rseed + 5000000 + peak_index, dimension); /* apply var transformations to sub problem*/ *problem_i = transform_vars_scale(*problem_i, sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ From 9eb1de7918b953739790d8e0f125f8312d6729f4 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 15 Mar 2016 17:04:48 +0100 Subject: [PATCH 135/446] f_gallagher: corrected a bug that made all the permutation of the eigenvalus use the same seed --- code-experiments/src/f_gallagher.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 8ca04837f..a6d4f8735 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -18,6 +18,7 @@ #include "transform_vars_permutation_helpers.c" #include "transform_vars_scale.c" +#include "f_sphere.c" /** * @brief A random permutation type for the Gallagher problem. * @@ -303,7 +304,7 @@ static void f_gallagher_versatile_data_free(coco_problem_t *problem) { * @brief Implements the gallagher function subproblems without connections to any COCO structures. * Wassim: core to differentiate it from raw for now */ -static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { +/*static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { double result, tmp; size_t i; @@ -316,7 +317,7 @@ static double f_gallagher_sub_core(const double *x, const size_t number_of_varia result = exp(- 1.0 / (2.0 * ((double)number_of_variables)) * tmp); return result; -} +}*/ /* Wassim: now uses f_sphere_raw, TODO: delete if maintained*/ /** * @brief Uses the core function to evaluate the sub problem. @@ -334,7 +335,7 @@ static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_variables) { coco_problem_t *problem_i = coco_problem_allocate_from_scalars("gallagher_sub function", - f_gallagher_sub_evaluate_core, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); + f_sphere_raw, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); f_gallagher_versatile_data_t *versatile_data_tmp; problem_i->versatile_data = (f_gallagher_versatile_data_t *) coco_allocate_memory(sizeof(f_gallagher_versatile_data_t)); versatile_data_tmp = ((f_gallagher_versatile_data_t *) problem_i->versatile_data); @@ -373,7 +374,7 @@ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_ } else { w_i = 1.1 + 8.0 * (((double) i + 1) - 2.0) / (((double)f_gallagher_versatile_data->number_of_peaks) - 2.0); } - y *= w_i; + y = w_i * exp(- 1.0 / (2.0 * ((double)number_of_variables)) * y);/* Wassim: problem_i->evaluate_function is the sphere on a transformed coordiante system with conditioning */ if ( i == 0 || maxf < y ) { maxf = y; } From 22fa90b9f516c38c8192ea9bb03434adda97baae Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 15 Mar 2016 17:04:48 +0100 Subject: [PATCH 136/446] f_gallagher: corrected a bug that made all the permutation of the eigenvalus use the same seed --- code-experiments/src/f_gallagher.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 8ca04837f..a6d4f8735 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -18,6 +18,7 @@ #include "transform_vars_permutation_helpers.c" #include "transform_vars_scale.c" +#include "f_sphere.c" /** * @brief A random permutation type for the Gallagher problem. * @@ -303,7 +304,7 @@ static void f_gallagher_versatile_data_free(coco_problem_t *problem) { * @brief Implements the gallagher function subproblems without connections to any COCO structures. * Wassim: core to differentiate it from raw for now */ -static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { +/*static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { double result, tmp; size_t i; @@ -316,7 +317,7 @@ static double f_gallagher_sub_core(const double *x, const size_t number_of_varia result = exp(- 1.0 / (2.0 * ((double)number_of_variables)) * tmp); return result; -} +}*/ /* Wassim: now uses f_sphere_raw, TODO: delete if maintained*/ /** * @brief Uses the core function to evaluate the sub problem. @@ -334,7 +335,7 @@ static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_variables) { coco_problem_t *problem_i = coco_problem_allocate_from_scalars("gallagher_sub function", - f_gallagher_sub_evaluate_core, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); + f_sphere_raw, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); f_gallagher_versatile_data_t *versatile_data_tmp; problem_i->versatile_data = (f_gallagher_versatile_data_t *) coco_allocate_memory(sizeof(f_gallagher_versatile_data_t)); versatile_data_tmp = ((f_gallagher_versatile_data_t *) problem_i->versatile_data); @@ -373,7 +374,7 @@ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_ } else { w_i = 1.1 + 8.0 * (((double) i + 1) - 2.0) / (((double)f_gallagher_versatile_data->number_of_peaks) - 2.0); } - y *= w_i; + y = w_i * exp(- 1.0 / (2.0 * ((double)number_of_variables)) * y);/* Wassim: problem_i->evaluate_function is the sphere on a transformed coordiante system with conditioning */ if ( i == 0 || maxf < y ) { maxf = y; } From 2d1e9800a9d56e998fef323becc34fe361d0a063 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 15 Mar 2016 17:06:21 +0100 Subject: [PATCH 137/446] f_gallagher: reverted accidental commit --- code-experiments/src/f_gallagher.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index a6d4f8735..8ca04837f 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -18,7 +18,6 @@ #include "transform_vars_permutation_helpers.c" #include "transform_vars_scale.c" -#include "f_sphere.c" /** * @brief A random permutation type for the Gallagher problem. * @@ -304,7 +303,7 @@ static void f_gallagher_versatile_data_free(coco_problem_t *problem) { * @brief Implements the gallagher function subproblems without connections to any COCO structures. * Wassim: core to differentiate it from raw for now */ -/*static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { +static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { double result, tmp; size_t i; @@ -317,7 +316,7 @@ static void f_gallagher_versatile_data_free(coco_problem_t *problem) { result = exp(- 1.0 / (2.0 * ((double)number_of_variables)) * tmp); return result; -}*/ /* Wassim: now uses f_sphere_raw, TODO: delete if maintained*/ +} /** * @brief Uses the core function to evaluate the sub problem. @@ -335,7 +334,7 @@ static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_variables) { coco_problem_t *problem_i = coco_problem_allocate_from_scalars("gallagher_sub function", - f_sphere_raw, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); + f_gallagher_sub_evaluate_core, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); f_gallagher_versatile_data_t *versatile_data_tmp; problem_i->versatile_data = (f_gallagher_versatile_data_t *) coco_allocate_memory(sizeof(f_gallagher_versatile_data_t)); versatile_data_tmp = ((f_gallagher_versatile_data_t *) problem_i->versatile_data); @@ -374,7 +373,7 @@ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_ } else { w_i = 1.1 + 8.0 * (((double) i + 1) - 2.0) / (((double)f_gallagher_versatile_data->number_of_peaks) - 2.0); } - y = w_i * exp(- 1.0 / (2.0 * ((double)number_of_variables)) * y);/* Wassim: problem_i->evaluate_function is the sphere on a transformed coordiante system with conditioning */ + y *= w_i; if ( i == 0 || maxf < y ) { maxf = y; } From 16fca2b14fc74f569a5db92527090313874637c6 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 15 Mar 2016 17:06:21 +0100 Subject: [PATCH 138/446] f_gallagher: reverted accidental commit --- code-experiments/src/f_gallagher.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index a6d4f8735..8ca04837f 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -18,7 +18,6 @@ #include "transform_vars_permutation_helpers.c" #include "transform_vars_scale.c" -#include "f_sphere.c" /** * @brief A random permutation type for the Gallagher problem. * @@ -304,7 +303,7 @@ static void f_gallagher_versatile_data_free(coco_problem_t *problem) { * @brief Implements the gallagher function subproblems without connections to any COCO structures. * Wassim: core to differentiate it from raw for now */ -/*static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { +static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { double result, tmp; size_t i; @@ -317,7 +316,7 @@ static void f_gallagher_versatile_data_free(coco_problem_t *problem) { result = exp(- 1.0 / (2.0 * ((double)number_of_variables)) * tmp); return result; -}*/ /* Wassim: now uses f_sphere_raw, TODO: delete if maintained*/ +} /** * @brief Uses the core function to evaluate the sub problem. @@ -335,7 +334,7 @@ static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_variables) { coco_problem_t *problem_i = coco_problem_allocate_from_scalars("gallagher_sub function", - f_sphere_raw, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); + f_gallagher_sub_evaluate_core, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); f_gallagher_versatile_data_t *versatile_data_tmp; problem_i->versatile_data = (f_gallagher_versatile_data_t *) coco_allocate_memory(sizeof(f_gallagher_versatile_data_t)); versatile_data_tmp = ((f_gallagher_versatile_data_t *) problem_i->versatile_data); @@ -374,7 +373,7 @@ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_ } else { w_i = 1.1 + 8.0 * (((double) i + 1) - 2.0) / (((double)f_gallagher_versatile_data->number_of_peaks) - 2.0); } - y = w_i * exp(- 1.0 / (2.0 * ((double)number_of_variables)) * y);/* Wassim: problem_i->evaluate_function is the sphere on a transformed coordiante system with conditioning */ + y *= w_i; if ( i == 0 || maxf < y ) { maxf = y; } From 2905a11d23c3741893b49cfd8cd26bcab9325b4d Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 15 Mar 2016 17:10:31 +0100 Subject: [PATCH 139/446] f_gallagher: the sub-problems now use sphre_raw as their row function after propertly transforming x-->z, might revert to the old appraoch of defining f_gallagher_sub_core --- code-experiments/src/f_gallagher.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 8ca04837f..19a57f477 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -18,6 +18,7 @@ #include "transform_vars_permutation_helpers.c" #include "transform_vars_scale.c" +#include "f_sphere.c" /** * @brief A random permutation type for the Gallagher problem. * @@ -303,7 +304,7 @@ static void f_gallagher_versatile_data_free(coco_problem_t *problem) { * @brief Implements the gallagher function subproblems without connections to any COCO structures. * Wassim: core to differentiate it from raw for now */ -static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { +/*static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { double result, tmp; size_t i; @@ -316,7 +317,7 @@ static double f_gallagher_sub_core(const double *x, const size_t number_of_varia result = exp(- 1.0 / (2.0 * ((double)number_of_variables)) * tmp); return result; -} +}*/ /* Wassim: now uses f_sphere_raw, TODO: delete if maintained*/ /** * @brief Uses the core function to evaluate the sub problem. @@ -324,7 +325,8 @@ static double f_gallagher_sub_core(const double *x, const size_t number_of_varia static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_gallagher_sub_core(x, problem->number_of_variables); + y[0] = f_sphere_raw(x, problem->number_of_variables); + /* y[0] = f_gallagher_sub_core(x, problem->number_of_variables); */ /* Wassim: the commented version is for the case where f_gallagher_sub_core is defined */ /*assert(y[0] + 1e-13 >= problem->best_value[0]);*/ } @@ -355,7 +357,7 @@ static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_v * Wassim: core to differentiate it from raw for now * Wassim: TODO: compute the w_i here and make that the subproblems become simple sphere problems and use the f_sphere_raw */ -static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_gallagher_versatile_data) { +static double f_gallagher_core(const double *x, size_t number_of_variables, f_gallagher_versatile_data_t *f_gallagher_versatile_data) { coco_problem_t *problem_i; double result = 0; @@ -373,7 +375,7 @@ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_ } else { w_i = 1.1 + 8.0 * (((double) i + 1) - 2.0) / (((double)f_gallagher_versatile_data->number_of_peaks) - 2.0); } - y *= w_i; + y = w_i * exp(- 1.0 / (2.0 * ((double)number_of_variables)) * y);/* Wassim: problem_i->evaluate_function is the sphere on a transformed coordiante system with conditioning */ if ( i == 0 || maxf < y ) { maxf = y; } @@ -389,7 +391,7 @@ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_ static void f_gallagher_evaluate_core(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_gallagher_core(x, ((f_gallagher_versatile_data_t *) problem->versatile_data)); + y[0] = f_gallagher_core(x, problem->number_of_variables, ((f_gallagher_versatile_data_t *) problem->versatile_data)); assert(y[0] + 1e-13 >= problem->best_value[0]); } From d7f470fee1b5a9213a1803a8f07931754e70ba4e Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 15 Mar 2016 17:10:31 +0100 Subject: [PATCH 140/446] f_gallagher: the sub-problems now use sphre_raw as their row function after propertly transforming x-->z, might revert to the old appraoch of defining f_gallagher_sub_core --- code-experiments/src/f_gallagher.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 8ca04837f..19a57f477 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -18,6 +18,7 @@ #include "transform_vars_permutation_helpers.c" #include "transform_vars_scale.c" +#include "f_sphere.c" /** * @brief A random permutation type for the Gallagher problem. * @@ -303,7 +304,7 @@ static void f_gallagher_versatile_data_free(coco_problem_t *problem) { * @brief Implements the gallagher function subproblems without connections to any COCO structures. * Wassim: core to differentiate it from raw for now */ -static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { +/*static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { double result, tmp; size_t i; @@ -316,7 +317,7 @@ static double f_gallagher_sub_core(const double *x, const size_t number_of_varia result = exp(- 1.0 / (2.0 * ((double)number_of_variables)) * tmp); return result; -} +}*/ /* Wassim: now uses f_sphere_raw, TODO: delete if maintained*/ /** * @brief Uses the core function to evaluate the sub problem. @@ -324,7 +325,8 @@ static double f_gallagher_sub_core(const double *x, const size_t number_of_varia static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_gallagher_sub_core(x, problem->number_of_variables); + y[0] = f_sphere_raw(x, problem->number_of_variables); + /* y[0] = f_gallagher_sub_core(x, problem->number_of_variables); */ /* Wassim: the commented version is for the case where f_gallagher_sub_core is defined */ /*assert(y[0] + 1e-13 >= problem->best_value[0]);*/ } @@ -355,7 +357,7 @@ static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_v * Wassim: core to differentiate it from raw for now * Wassim: TODO: compute the w_i here and make that the subproblems become simple sphere problems and use the f_sphere_raw */ -static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_gallagher_versatile_data) { +static double f_gallagher_core(const double *x, size_t number_of_variables, f_gallagher_versatile_data_t *f_gallagher_versatile_data) { coco_problem_t *problem_i; double result = 0; @@ -373,7 +375,7 @@ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_ } else { w_i = 1.1 + 8.0 * (((double) i + 1) - 2.0) / (((double)f_gallagher_versatile_data->number_of_peaks) - 2.0); } - y *= w_i; + y = w_i * exp(- 1.0 / (2.0 * ((double)number_of_variables)) * y);/* Wassim: problem_i->evaluate_function is the sphere on a transformed coordiante system with conditioning */ if ( i == 0 || maxf < y ) { maxf = y; } @@ -389,7 +391,7 @@ static double f_gallagher_core(const double *x, f_gallagher_versatile_data_t *f_ static void f_gallagher_evaluate_core(coco_problem_t *problem, const double *x, double *y) { assert(problem->number_of_objectives == 1); - y[0] = f_gallagher_core(x, ((f_gallagher_versatile_data_t *) problem->versatile_data)); + y[0] = f_gallagher_core(x, problem->number_of_variables, ((f_gallagher_versatile_data_t *) problem->versatile_data)); assert(y[0] + 1e-13 >= problem->best_value[0]); } From 8f6469836769c43c656f8b092d8c167634634081 Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 15 Mar 2016 19:33:56 +0100 Subject: [PATCH 141/446] Create f_schwefel_generalized.c for large scale --- code-experiments/src/f_schwefel.c | 7 ------- code-experiments/src/suite_largescale.c | 4 ++-- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/code-experiments/src/f_schwefel.c b/code-experiments/src/f_schwefel.c index b3454218e..b6e46f601 100644 --- a/code-experiments/src/f_schwefel.c +++ b/code-experiments/src/f_schwefel.c @@ -81,7 +81,6 @@ static coco_problem_t *f_schwefel_bbob_problem_allocate(const size_t function, double *xopt, fopt; coco_problem_t *problem = NULL; size_t i; - const double schwefel_const = 4.199999; double *tmp1 = coco_allocate_vector(dimension); double *tmp2 = coco_allocate_vector(dimension); @@ -108,12 +107,6 @@ static coco_problem_t *f_schwefel_bbob_problem_allocate(const size_t function, problem = transform_vars_z_hat(problem, xopt); problem = transform_vars_scale(problem, 2); problem = transform_vars_x_hat(problem, rseed); - /*if large scale test-bed, normalize by dim*/ - if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_scale(problem, 1.0 / (double) dimension); - } - - problem = transform_obj_shift(problem, schwefel_const); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 9e534b1fc..7af9b2d25 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -15,7 +15,7 @@ #include "f_linear_slope.c" #include "f_rastrigin.c" #include "f_schaffers.c" -#include "f_schwefel.c" +#include "f_schwefel_generalized.c" #include "f_sharp_ridge.c" #include "f_sphere.c" #include "f_step_ellipsoid.c" @@ -111,7 +111,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 20) { - problem = f_schwefel_bbob_problem_allocate(function, dimension, instance, rseed, + problem = f_schwefel_generalized_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 21) { problem = f_gallagher_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, 101, From e1a08298efd557c87af26ea48ea54bd3e640882e Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 15 Mar 2016 19:33:56 +0100 Subject: [PATCH 142/446] Create f_schwefel_generalized.c for large scale --- code-experiments/src/f_schwefel.c | 7 ------- code-experiments/src/suite_largescale.c | 4 ++-- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/code-experiments/src/f_schwefel.c b/code-experiments/src/f_schwefel.c index b3454218e..b6e46f601 100644 --- a/code-experiments/src/f_schwefel.c +++ b/code-experiments/src/f_schwefel.c @@ -81,7 +81,6 @@ static coco_problem_t *f_schwefel_bbob_problem_allocate(const size_t function, double *xopt, fopt; coco_problem_t *problem = NULL; size_t i; - const double schwefel_const = 4.199999; double *tmp1 = coco_allocate_vector(dimension); double *tmp2 = coco_allocate_vector(dimension); @@ -108,12 +107,6 @@ static coco_problem_t *f_schwefel_bbob_problem_allocate(const size_t function, problem = transform_vars_z_hat(problem, xopt); problem = transform_vars_scale(problem, 2); problem = transform_vars_x_hat(problem, rseed); - /*if large scale test-bed, normalize by dim*/ - if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_scale(problem, 1.0 / (double) dimension); - } - - problem = transform_obj_shift(problem, schwefel_const); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 9e534b1fc..7af9b2d25 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -15,7 +15,7 @@ #include "f_linear_slope.c" #include "f_rastrigin.c" #include "f_schaffers.c" -#include "f_schwefel.c" +#include "f_schwefel_generalized.c" #include "f_sharp_ridge.c" #include "f_sphere.c" #include "f_step_ellipsoid.c" @@ -111,7 +111,7 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 20) { - problem = f_schwefel_bbob_problem_allocate(function, dimension, instance, rseed, + problem = f_schwefel_generalized_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 21) { problem = f_gallagher_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, 101, From 3fa201f42c5693730cdbb57c4c752e36130adc94 Mon Sep 17 00:00:00 2001 From: NDManh Date: Wed, 16 Mar 2016 10:43:18 +0100 Subject: [PATCH 143/446] Create f_schwefel_generalized.c for large scale --- code-experiments/src/f_schwefel_generalized.c | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 code-experiments/src/f_schwefel_generalized.c diff --git a/code-experiments/src/f_schwefel_generalized.c b/code-experiments/src/f_schwefel_generalized.c new file mode 100644 index 000000000..cb3acd890 --- /dev/null +++ b/code-experiments/src/f_schwefel_generalized.c @@ -0,0 +1,122 @@ +/** + * @file f_schwefel_generalized.c + * @brief Implementation of the Schwefel function and problem. + */ + +#include +#include +#include + +#include "coco.h" +#include "coco_problem.c" +#include "suite_bbob_legacy_code.c" +#include "transform_vars_conditioning.c" +#include "transform_obj_shift.c" +#include "transform_vars_scale.c" +#include "transform_vars_affine.c" +#include "transform_vars_shift.c" +#include "transform_vars_z_hat.c" +#include "transform_vars_x_hat.c" + +/** + * @brief Implements the Schwefel function for large scale. + */ +static double f_schwefel_generalized_raw(const double *x, const size_t number_of_variables) { + + size_t i = 0; + double result; + double penalty, sum; + + /* Boundary handling*/ + penalty = 0.0; + for (i = 0; i < number_of_variables; ++i) { + const double tmp = fabs(x[i]) - 500.0; + if (tmp > 0.0) + penalty += tmp * tmp; + } + + /* Computation core */ + sum = 0.0; + for (i = 0; i < number_of_variables; ++i) { + sum += x[i] * sin(sqrt(fabs(x[i]))); + } + result = 0.01 * (penalty - sum); + + return result; +} + +/** + * @brief Uses the raw function to evaluate the COCO problem. + */ +static void f_schwefel_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_schwefel_generalized_raw(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic Schwefel problem. + */ +static coco_problem_t *f_schwefel_generalized_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("Schwefel function", + f_schwefel_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 420.96874633); + coco_problem_set_id(problem, "%s_d%02lu", "schwefel", number_of_variables); + + /* Compute best solution: best_parameter[i] = 200 * fabs(xopt[i]) */ + f_schwefel_generalized_evaluate(problem, problem->best_parameter, problem->best_value); + return problem; +} + +/** + * @brief Creates the BBOB Schwefel problem. + */ +static coco_problem_t *f_schwefel_generalized_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + size_t i; + const double Schwefel_constant = 4.189828872724339; + double *tmp1 = coco_allocate_vector(dimension); + double *tmp2 = coco_allocate_vector(dimension); + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_unif(tmp1, dimension, rseed); + for (i = 0; i < dimension; ++i) { + xopt[i] = 0.5 * 4.2096874637; + if (tmp1[i] - 0.5 < 0) { + xopt[i] *= -1; + } + } + + for (i = 0; i < dimension; ++i) { + tmp1[i] = -2 * fabs(xopt[i]); + tmp2[i] = 2 * fabs(xopt[i]); + } + + problem = f_schwefel_generalized_allocate(dimension); + problem = transform_vars_scale(problem, 100); + problem = transform_vars_shift(problem, tmp1, 0); + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_shift(problem, tmp2, 0); + problem = transform_vars_z_hat(problem, xopt); + problem = transform_vars_scale(problem, 2); + problem = transform_vars_x_hat(problem, rseed); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_shift(problem, Schwefel_constant); /* We could add the Schwefel_constant before normalizing */ + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + + coco_free_memory(tmp1); + coco_free_memory(tmp2); + coco_free_memory(xopt); + return problem; +} From 8eea7e955bfa9c8b0a89cb30c0a377bc41818425 Mon Sep 17 00:00:00 2001 From: NDManh Date: Wed, 16 Mar 2016 10:43:18 +0100 Subject: [PATCH 144/446] Create f_schwefel_generalized.c for large scale --- code-experiments/src/f_schwefel_generalized.c | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 code-experiments/src/f_schwefel_generalized.c diff --git a/code-experiments/src/f_schwefel_generalized.c b/code-experiments/src/f_schwefel_generalized.c new file mode 100644 index 000000000..cb3acd890 --- /dev/null +++ b/code-experiments/src/f_schwefel_generalized.c @@ -0,0 +1,122 @@ +/** + * @file f_schwefel_generalized.c + * @brief Implementation of the Schwefel function and problem. + */ + +#include +#include +#include + +#include "coco.h" +#include "coco_problem.c" +#include "suite_bbob_legacy_code.c" +#include "transform_vars_conditioning.c" +#include "transform_obj_shift.c" +#include "transform_vars_scale.c" +#include "transform_vars_affine.c" +#include "transform_vars_shift.c" +#include "transform_vars_z_hat.c" +#include "transform_vars_x_hat.c" + +/** + * @brief Implements the Schwefel function for large scale. + */ +static double f_schwefel_generalized_raw(const double *x, const size_t number_of_variables) { + + size_t i = 0; + double result; + double penalty, sum; + + /* Boundary handling*/ + penalty = 0.0; + for (i = 0; i < number_of_variables; ++i) { + const double tmp = fabs(x[i]) - 500.0; + if (tmp > 0.0) + penalty += tmp * tmp; + } + + /* Computation core */ + sum = 0.0; + for (i = 0; i < number_of_variables; ++i) { + sum += x[i] * sin(sqrt(fabs(x[i]))); + } + result = 0.01 * (penalty - sum); + + return result; +} + +/** + * @brief Uses the raw function to evaluate the COCO problem. + */ +static void f_schwefel_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_schwefel_generalized_raw(x, problem->number_of_variables); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic Schwefel problem. + */ +static coco_problem_t *f_schwefel_generalized_allocate(const size_t number_of_variables) { + + coco_problem_t *problem = coco_problem_allocate_from_scalars("Schwefel function", + f_schwefel_generalized_evaluate, NULL, number_of_variables, -5.0, 5.0, 420.96874633); + coco_problem_set_id(problem, "%s_d%02lu", "schwefel", number_of_variables); + + /* Compute best solution: best_parameter[i] = 200 * fabs(xopt[i]) */ + f_schwefel_generalized_evaluate(problem, problem->best_parameter, problem->best_value); + return problem; +} + +/** + * @brief Creates the BBOB Schwefel problem. + */ +static coco_problem_t *f_schwefel_generalized_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + size_t i; + const double Schwefel_constant = 4.189828872724339; + double *tmp1 = coco_allocate_vector(dimension); + double *tmp2 = coco_allocate_vector(dimension); + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_unif(tmp1, dimension, rseed); + for (i = 0; i < dimension; ++i) { + xopt[i] = 0.5 * 4.2096874637; + if (tmp1[i] - 0.5 < 0) { + xopt[i] *= -1; + } + } + + for (i = 0; i < dimension; ++i) { + tmp1[i] = -2 * fabs(xopt[i]); + tmp2[i] = 2 * fabs(xopt[i]); + } + + problem = f_schwefel_generalized_allocate(dimension); + problem = transform_vars_scale(problem, 100); + problem = transform_vars_shift(problem, tmp1, 0); + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_shift(problem, tmp2, 0); + problem = transform_vars_z_hat(problem, xopt); + problem = transform_vars_scale(problem, 2); + problem = transform_vars_x_hat(problem, rseed); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_shift(problem, Schwefel_constant); /* We could add the Schwefel_constant before normalizing */ + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + + coco_free_memory(tmp1); + coco_free_memory(tmp2); + coco_free_memory(xopt); + return problem; +} From 7c78e99d5c49f4456db91985557bd7340b2cbdb9 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 18 Mar 2016 16:06:09 +0100 Subject: [PATCH 145/446] f_gallagher: minor comment correction and update --- code-experiments/src/f_gallagher.c | 4 ++-- code-experiments/src/f_linear_slope.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 19a57f477..5ae8e914c 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -478,7 +478,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz for (i = 0; i < number_of_peaks - 1; i++) { alpha_i_vals[i] = pow(maxcondition, (double) (i) / ((double) (number_of_peaks - 2))); } - P_alpha_i = coco_allocate_vector_size_t(number_of_peaks - 1);/* random permutation of the alpha_i's */ + P_alpha_i = coco_allocate_vector_size_t(number_of_peaks - 1);/* random permutation of the alpha_i's to allow sampling without replacement*/ coco_compute_random_permutation(P_alpha_i, rseed + 4000000, number_of_peaks - 1); for (peak_index = 0; peak_index < number_of_peaks; peak_index++) { @@ -503,7 +503,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz (*problem_i)->best_value[0] = 0;/* to prevent raising the assert */ /* P_Lambda the permutation */ - P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the alpha_i's */ + P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the values in C_i */ coco_compute_random_permutation(P_Lambda, rseed + 5000000 + peak_index, dimension); /* apply var transformations to sub problem*/ diff --git a/code-experiments/src/f_linear_slope.c b/code-experiments/src/f_linear_slope.c index d5528d7c8..3bb245389 100644 --- a/code-experiments/src/f_linear_slope.c +++ b/code-experiments/src/f_linear_slope.c @@ -36,7 +36,7 @@ static double f_linear_slope_raw(const double *x, } result += 5.0 * fabs(si) - si * x[i]; } - + return result; } From 78785b16e76d90dbd42a362b89de2754a315c484 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 18 Mar 2016 16:06:09 +0100 Subject: [PATCH 146/446] f_gallagher: minor comment correction and update --- code-experiments/src/f_gallagher.c | 4 ++-- code-experiments/src/f_linear_slope.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 19a57f477..5ae8e914c 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -478,7 +478,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz for (i = 0; i < number_of_peaks - 1; i++) { alpha_i_vals[i] = pow(maxcondition, (double) (i) / ((double) (number_of_peaks - 2))); } - P_alpha_i = coco_allocate_vector_size_t(number_of_peaks - 1);/* random permutation of the alpha_i's */ + P_alpha_i = coco_allocate_vector_size_t(number_of_peaks - 1);/* random permutation of the alpha_i's to allow sampling without replacement*/ coco_compute_random_permutation(P_alpha_i, rseed + 4000000, number_of_peaks - 1); for (peak_index = 0; peak_index < number_of_peaks; peak_index++) { @@ -503,7 +503,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz (*problem_i)->best_value[0] = 0;/* to prevent raising the assert */ /* P_Lambda the permutation */ - P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the alpha_i's */ + P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the values in C_i */ coco_compute_random_permutation(P_Lambda, rseed + 5000000 + peak_index, dimension); /* apply var transformations to sub problem*/ diff --git a/code-experiments/src/f_linear_slope.c b/code-experiments/src/f_linear_slope.c index d5528d7c8..3bb245389 100644 --- a/code-experiments/src/f_linear_slope.c +++ b/code-experiments/src/f_linear_slope.c @@ -36,7 +36,7 @@ static double f_linear_slope_raw(const double *x, } result += 5.0 * fabs(si) - si * x[i]; } - + return result; } From 689175aea105f61976a38cd196d867c7ab2dc542 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 18 Mar 2016 16:46:28 +0100 Subject: [PATCH 147/446] f_griewank_rosenbrock.c: reformatting --- code-experiments/src/f_griewank_rosenbrock.c | 108 ++++++++++--------- 1 file changed, 56 insertions(+), 52 deletions(-) diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 07b4aebe3..6a3e9b903 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -123,57 +123,61 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all const long rseed, const char *problem_id_template, const char *problem_name_template) { - double fopt; - coco_problem_t *problem = NULL; - double *shift, scales; - size_t i; - - double **B; - const double *const *B_copy; - size_t *P1 = coco_allocate_vector_size_t(dimension); - size_t *P2 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes; - size_t nb_blocks; - size_t swap_range; - size_t nb_swaps; - - block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); - swap_range = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - - fopt = bbob2009_compute_fopt(function, instance); - scales = coco_double_max(1.0, sqrt((double) dimension) / 8.0); - shift = coco_allocate_vector(dimension); - for (i = 0; i < dimension; ++i) { - shift[i] = -0.5; - } - - B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B; - - coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - problem = f_griewank_rosenbrock_allocate(dimension); - problem = transform_vars_shift(problem, shift, 0); - problem = transform_vars_scale(problem, scales); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ - problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); - problem = transform_vars_permutation(problem, P1, dimension); - - problem = transform_obj_scale(problem, 1.0 / (double) dimension); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - coco_free_memory(shift); - coco_free_block_matrix(B, dimension); - coco_free_memory(P1); - coco_free_memory(P2); - coco_free_memory(block_sizes); - return problem; + double fopt; + coco_problem_t *problem = NULL; + double *shift, scales; + size_t i; + + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + fopt = bbob2009_compute_fopt(function, instance); + /*scales = coco_double_max(1.0, sqrt((double) dimension) / 8.0);*/ + scales = sqrt((double) dimension) / 8.0; + if (dimension < 8) { /* Wassim: shouldn't be true in a large scale setting */ + scales = 1.0; + } + shift = coco_allocate_vector(dimension); + for (i = 0; i < dimension; ++i) { + shift[i] = -0.5; + } + + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + problem = f_griewank_rosenbrock_allocate(dimension); + problem = transform_vars_shift(problem, shift, 0); + problem = transform_vars_scale(problem, scales); + problem = transform_vars_permutation(problem, P2, dimension); + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); + + problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "block-rotated_multi-modal"); + + coco_free_memory(shift); + coco_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + return problem; } From 128cde3565d7ce2c9c232543d0f440eaf31a13ab Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 18 Mar 2016 16:46:28 +0100 Subject: [PATCH 148/446] f_griewank_rosenbrock.c: reformatting --- code-experiments/src/f_griewank_rosenbrock.c | 108 ++++++++++--------- 1 file changed, 56 insertions(+), 52 deletions(-) diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 07b4aebe3..6a3e9b903 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -123,57 +123,61 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all const long rseed, const char *problem_id_template, const char *problem_name_template) { - double fopt; - coco_problem_t *problem = NULL; - double *shift, scales; - size_t i; - - double **B; - const double *const *B_copy; - size_t *P1 = coco_allocate_vector_size_t(dimension); - size_t *P2 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes; - size_t nb_blocks; - size_t swap_range; - size_t nb_swaps; - - block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); - swap_range = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - - fopt = bbob2009_compute_fopt(function, instance); - scales = coco_double_max(1.0, sqrt((double) dimension) / 8.0); - shift = coco_allocate_vector(dimension); - for (i = 0; i < dimension; ++i) { - shift[i] = -0.5; - } - - B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B; - - coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - problem = f_griewank_rosenbrock_allocate(dimension); - problem = transform_vars_shift(problem, shift, 0); - problem = transform_vars_scale(problem, scales); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ - problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); - problem = transform_vars_permutation(problem, P1, dimension); - - problem = transform_obj_scale(problem, 1.0 / (double) dimension); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - coco_free_memory(shift); - coco_free_block_matrix(B, dimension); - coco_free_memory(P1); - coco_free_memory(P2); - coco_free_memory(block_sizes); - return problem; + double fopt; + coco_problem_t *problem = NULL; + double *shift, scales; + size_t i; + + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + fopt = bbob2009_compute_fopt(function, instance); + /*scales = coco_double_max(1.0, sqrt((double) dimension) / 8.0);*/ + scales = sqrt((double) dimension) / 8.0; + if (dimension < 8) { /* Wassim: shouldn't be true in a large scale setting */ + scales = 1.0; + } + shift = coco_allocate_vector(dimension); + for (i = 0; i < dimension; ++i) { + shift[i] = -0.5; + } + + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + problem = f_griewank_rosenbrock_allocate(dimension); + problem = transform_vars_shift(problem, shift, 0); + problem = transform_vars_scale(problem, scales); + problem = transform_vars_permutation(problem, P2, dimension); + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); + + problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "block-rotated_multi-modal"); + + coco_free_memory(shift); + coco_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + return problem; } From 82ecfa8fd980c3c06808bb46201054c5f3c48866 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 18 Mar 2016 16:53:19 +0100 Subject: [PATCH 149/446] f_griewank_rosenbrock.c: removed normalization by dimension since the raw function is already normalized --- code-experiments/src/f_griewank_rosenbrock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 6a3e9b903..b97d7b023 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -166,7 +166,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + /*problem = transform_obj_scale(problem, 1.0 / (double) dimension);*//* Wassim: already normalized in the raw function. Should probably be changed so that the raw function is limited to the sum */ problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); From 699fbe3fd9de2732c93a876e61a4340f900cdf8b Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 18 Mar 2016 16:53:19 +0100 Subject: [PATCH 150/446] f_griewank_rosenbrock.c: removed normalization by dimension since the raw function is already normalized --- code-experiments/src/f_griewank_rosenbrock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 6a3e9b903..b97d7b023 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -166,7 +166,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + /*problem = transform_obj_scale(problem, 1.0 / (double) dimension);*//* Wassim: already normalized in the raw function. Should probably be changed so that the raw function is limited to the sum */ problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); From ad2bc2b74a3e5430a2327315589258c0579a5335 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 18 Mar 2016 17:30:07 +0100 Subject: [PATCH 151/446] f_katsuura.c: reformattin, adding swap_range2... --- code-experiments/src/f_katsuura.c | 145 +++++++++++++++--------------- 1 file changed, 72 insertions(+), 73 deletions(-) diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index de8c27456..3086c7640 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -133,78 +133,77 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size const long rseed, const char *problem_id_template, const char *problem_name_template) { - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B1; - double **B2; - const double *const *B1_copy; - const double *const *B2_copy; - const double penalty_factor = 1.0; - size_t *P11 = coco_allocate_vector_size_t(dimension); - size_t *P21 = coco_allocate_vector_size_t(dimension); - size_t *P12 = coco_allocate_vector_size_t(dimension); - size_t *P22 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes1; - size_t *block_sizes2; - size_t nb_blocks1; - size_t nb_blocks2; - size_t swap_range; - size_t nb_swaps; - - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); - swap_range = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1; - B2_copy = (const double *const *)B2; - - coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); - - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); - - - problem = f_katsuura_allocate(dimension); - problem = transform_vars_permutation(problem, P21, dimension);/* LIFO */ - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); - problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_conditioning(problem, 100.0); - problem = transform_vars_permutation(problem, P22, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P12, dimension); - - problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); - problem = transform_obj_penalize(problem, penalty_factor); - problem = transform_obj_shift(problem, fopt); /*There is no fopt in the definition of this function*/ - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - coco_free_block_matrix(B1, dimension); - coco_free_block_matrix(B2, dimension); - coco_free_memory(P11); - coco_free_memory(P21); - coco_free_memory(P12); - coco_free_memory(P22); - coco_free_memory(block_sizes1); - coco_free_memory(block_sizes2); - coco_free_memory(xopt); - return problem; + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + const double penalty_factor = 1.0; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1; + size_t *block_sizes2; + size_t nb_blocks1; + size_t nb_blocks2; + size_t swap_range1; + size_t swap_range2; + size_t nb_swaps1; + size_t nb_swaps2; + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 5000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps2, swap_range2); + + problem = f_katsuura_allocate(dimension); + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_conditioning(problem, 100.0); + problem = transform_vars_permutation(problem, P12, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P11, dimension); + + problem = transform_vars_shift(problem, xopt, 0); + /*problem = transform_obj_scale(problem, 1.0 / (double) dimension);*//* Wassim: does not seem to be needed*/ + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); /*TODO: documentation, there is no fopt in the definition of this function*/ + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P12); + coco_free_memory(P21); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; } From 4545be27774837101c248747fe8691767dbcdae7 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 18 Mar 2016 17:30:07 +0100 Subject: [PATCH 152/446] f_katsuura.c: reformattin, adding swap_range2... --- code-experiments/src/f_katsuura.c | 145 +++++++++++++++--------------- 1 file changed, 72 insertions(+), 73 deletions(-) diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index de8c27456..3086c7640 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -133,78 +133,77 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size const long rseed, const char *problem_id_template, const char *problem_name_template) { - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B1; - double **B2; - const double *const *B1_copy; - const double *const *B2_copy; - const double penalty_factor = 1.0; - size_t *P11 = coco_allocate_vector_size_t(dimension); - size_t *P21 = coco_allocate_vector_size_t(dimension); - size_t *P12 = coco_allocate_vector_size_t(dimension); - size_t *P22 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes1; - size_t *block_sizes2; - size_t nb_blocks1; - size_t nb_blocks2; - size_t swap_range; - size_t nb_swaps; - - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); - swap_range = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1; - B2_copy = (const double *const *)B2; - - coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); - - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); - - - problem = f_katsuura_allocate(dimension); - problem = transform_vars_permutation(problem, P21, dimension);/* LIFO */ - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); - problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_conditioning(problem, 100.0); - problem = transform_vars_permutation(problem, P22, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P12, dimension); - - problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); - problem = transform_obj_penalize(problem, penalty_factor); - problem = transform_obj_shift(problem, fopt); /*There is no fopt in the definition of this function*/ - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - coco_free_block_matrix(B1, dimension); - coco_free_block_matrix(B2, dimension); - coco_free_memory(P11); - coco_free_memory(P21); - coco_free_memory(P12); - coco_free_memory(P22); - coco_free_memory(block_sizes1); - coco_free_memory(block_sizes2); - coco_free_memory(xopt); - return problem; + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + const double penalty_factor = 1.0; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1; + size_t *block_sizes2; + size_t nb_blocks1; + size_t nb_blocks2; + size_t swap_range1; + size_t swap_range2; + size_t nb_swaps1; + size_t nb_swaps2; + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 5000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps2, swap_range2); + + problem = f_katsuura_allocate(dimension); + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_conditioning(problem, 100.0); + problem = transform_vars_permutation(problem, P12, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P11, dimension); + + problem = transform_vars_shift(problem, xopt, 0); + /*problem = transform_obj_scale(problem, 1.0 / (double) dimension);*//* Wassim: does not seem to be needed*/ + problem = transform_obj_penalize(problem, penalty_factor); + problem = transform_obj_shift(problem, fopt); /*TODO: documentation, there is no fopt in the definition of this function*/ + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P12); + coco_free_memory(P21); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; } From 957f8ee3ecd426dd22d4d82a6e9d4cca975f17b6 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 18 Mar 2016 17:58:30 +0100 Subject: [PATCH 153/446] added boundary handling to f_linear_slope.c --- code-experiments/src/f_linear_slope.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/code-experiments/src/f_linear_slope.c b/code-experiments/src/f_linear_slope.c index 3bb245389..91fdebe7c 100644 --- a/code-experiments/src/f_linear_slope.c +++ b/code-experiments/src/f_linear_slope.c @@ -23,7 +23,6 @@ static double f_linear_slope_raw(const double *x, static const double alpha = 100.0; size_t i; double result = 0.0; - for (i = 0; i < number_of_variables; ++i) { double base, exponent, si; @@ -34,9 +33,14 @@ static double f_linear_slope_raw(const double *x, } else { si = -pow(base, exponent); } - result += 5.0 * fabs(si) - si * x[i]; + /* boundry handling */ + if (x[i] * best_parameter[i] < 5.0 * 5.0) { + result += 5.0 * fabs(si) - si * x[i]; + } else { + result += 5.0 * fabs(si) - si * best_parameter[i]; + } } - + return result; } From 9c079d319d142b31e8400df7f4368c5c23a8d7b1 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 18 Mar 2016 17:58:30 +0100 Subject: [PATCH 154/446] added boundary handling to f_linear_slope.c --- code-experiments/src/f_linear_slope.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/code-experiments/src/f_linear_slope.c b/code-experiments/src/f_linear_slope.c index 3bb245389..91fdebe7c 100644 --- a/code-experiments/src/f_linear_slope.c +++ b/code-experiments/src/f_linear_slope.c @@ -23,7 +23,6 @@ static double f_linear_slope_raw(const double *x, static const double alpha = 100.0; size_t i; double result = 0.0; - for (i = 0; i < number_of_variables; ++i) { double base, exponent, si; @@ -34,9 +33,14 @@ static double f_linear_slope_raw(const double *x, } else { si = -pow(base, exponent); } - result += 5.0 * fabs(si) - si * x[i]; + /* boundry handling */ + if (x[i] * best_parameter[i] < 5.0 * 5.0) { + result += 5.0 * fabs(si) - si * x[i]; + } else { + result += 5.0 * fabs(si) - si * best_parameter[i]; + } } - + return result; } From 8c1cac00cc9065cfe85f6f9107c1141e18ff8ed3 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 11:23:37 +0100 Subject: [PATCH 155/446] large scale suite: some improvements, fixed rng memory leak and corrected order of obj transformations in f24. Updated examle_experiment.c with the timing feature --- code-experiments/build/c/example_experiment.c | 200 ++++++++++++++---- code-experiments/src/f_gallagher.c | 13 +- code-experiments/src/f_lunacek_bi_rastrigin.c | 50 ++--- code-experiments/src/f_rastrigin.c | 2 +- 4 files changed, 184 insertions(+), 81 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index 28fcf72f2..e805b22d8 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -7,6 +7,7 @@ #include #include #include +#include #include "coco.h" @@ -66,35 +67,50 @@ void my_grid_search(evaluate_function_t evaluate, const double *upper_bounds, const size_t max_budget); +/* Structure and functions needed for timing the experiment */ +typedef struct { + size_t number_of_dimensions; + size_t current_idx; + char **output; + size_t previous_dimension; + size_t cumulative_evaluations; + time_t start_time; + time_t overall_start_time; +} timing_data_t; +static timing_data_t *timing_data_initialize(coco_suite_t *suite); +static void timing_data_time_problem(timing_data_t *timing_data, coco_problem_t *problem); +static void timing_data_finalize(timing_data_t *timing_data); + /** * The main method initializes the random number generator and calls the example experiment on the * bi-objective suite. */ int main(void) { - + coco_random_state_t *random_generator = coco_random_new(RANDOM_SEED); - + /* Change the log level to "warning" to get less output */ coco_set_log_level("info"); - + printf("Running the example experiment... (might take time, be patient)\n"); fflush(stdout); - + example_experiment("bbob-biobj", "bbob-biobj", random_generator); - + /* Uncomment the line below to run the same example experiment on the bbob suite - example_experiment("bbob", "bbob", random_generator); */ - + example_experiment("bbob", "bbob", random_generator); */ + printf("Done!\n"); fflush(stdout); - + coco_random_free(random_generator); - + return 0; } /** - * A simple example of benchmarking random search on a suite with instances from 2016. + * A simple example of benchmarking random search on a suite with instances from 2016 that can serve also as + * a timing experiment. * * @param suite_name Name of the suite (use "bbob" for the single-objective and "bbob-biobj" for the * bi-objective suite). @@ -105,37 +121,41 @@ int main(void) { void example_experiment(const char *suite_name, const char *observer_name, coco_random_state_t *random_generator) { - + size_t run; coco_suite_t *suite; coco_observer_t *observer; - + timing_data_t *timing_data; + /* Set some options for the observer. See documentation for other options. */ char *observer_options = - coco_strdupf("result_folder: RS_on_%s " - "algorithm_name: RS " - "algorithm_info: \"A simple random search algorithm\"", suite_name); - + coco_strdupf("result_folder: RS_on_%s " + "algorithm_name: RS " + "algorithm_info: \"A simple random search algorithm\"", suite_name); + /* Initialize the suite and observer */ suite = coco_suite(suite_name, "year: 2016", "dimensions: 2,3,5,10,20,40"); observer = coco_observer(observer_name, observer_options); coco_free_memory(observer_options); - + + /* Initialize timing */ + timing_data = timing_data_initialize(suite); + /* Iterate over all problems in the suite */ while ((PROBLEM = coco_suite_get_next_problem(suite, observer)) != NULL) { - + size_t dimension = coco_problem_get_dimension(PROBLEM); - + /* Run the algorithm at least once */ for (run = 1; run <= 1 + INDEPENDENT_RESTARTS; run++) { - + size_t evaluations_done = coco_problem_get_evaluations(PROBLEM); long evaluations_remaining = (long) (dimension * BUDGET_MULTIPLIER) - (long) evaluations_done; - + /* Break the loop if the target was hit or there are no more remaining evaluations */ if (coco_problem_final_target_hit(PROBLEM) || (evaluations_remaining <= 0)) break; - + /* Call the optimization algorithm for the remaining number of evaluations */ my_random_search(evaluate_function, dimension, @@ -144,22 +164,27 @@ void example_experiment(const char *suite_name, coco_problem_get_largest_values_of_interest(PROBLEM), (size_t) evaluations_remaining, random_generator); - + /* Break the loop if the algorithm performed no evaluations or an unexpected thing happened */ if (coco_problem_get_evaluations(PROBLEM) == evaluations_done) { - printf("WARNING: Budget has not been exhausted (%lu/%lu evaluations done)!\n", evaluations_done, - dimension * BUDGET_MULTIPLIER); + printf("WARNING: Budget has not been exhausted (%lu/%lu evaluations done)!\n", + (unsigned long) evaluations_done, (unsigned long) dimension * BUDGET_MULTIPLIER); break; } else if (coco_problem_get_evaluations(PROBLEM) < evaluations_done) coco_error("Something unexpected happened - function evaluations were decreased!"); } - + + /* Keep track of time */ + timing_data_time_problem(timing_data, PROBLEM); } - + + /* Output and finalize the timing data */ + timing_data_finalize(timing_data); + coco_observer_free(observer); coco_suite_free(suite); - + } /** @@ -181,26 +206,26 @@ void my_random_search(evaluate_function_t evaluate, const double *upper_bounds, const size_t max_budget, coco_random_state_t *random_generator) { - + double *x = coco_allocate_vector(dimension); double *y = coco_allocate_vector(number_of_objectives); double range; size_t i, j; - + for (i = 0; i < max_budget; ++i) { - + /* Construct x as a random point between the lower and upper bounds */ for (j = 0; j < dimension; ++j) { range = upper_bounds[j] - lower_bounds[j]; x[j] = lower_bounds[j] + coco_random_uniform(random_generator) * range; } - + /* Call the evaluate function to evaluate x on the current problem (this is where all the COCO logging * is performed) */ evaluate(x, y); - + } - + coco_free_memory(x); coco_free_memory(y); } @@ -224,7 +249,7 @@ void my_grid_search(evaluate_function_t evaluate, const double *lower_bounds, const double *upper_bounds, const size_t max_budget) { - + double *x = coco_allocate_vector(dimension); double *y = coco_allocate_vector(number_of_objectives); long *nodes = (long *) coco_allocate_memory(sizeof(long) * dimension); @@ -232,33 +257,33 @@ void my_grid_search(evaluate_function_t evaluate, size_t i, j; size_t evaluations = 0; long max_nodes = (long) floor(pow((double) max_budget, 1.0 / (double) dimension)) - 1; - + /* Take care of the borderline case */ if (max_nodes < 1) max_nodes = 1; - + /* Initialization */ for (j = 0; j < dimension; j++) { nodes[j] = 0; grid_step[j] = (upper_bounds[j] - lower_bounds[j]) / (double) max_nodes; } - + while (evaluations < max_budget) { - + /* Construct x and evaluate it */ for (j = 0; j < dimension; j++) { x[j] = lower_bounds[j] + grid_step[j] * (double) nodes[j]; } - + /* Call the evaluate function to evaluate x on the current problem (this is where all the COCO logging * is performed) */ evaluate(x, y); evaluations++; - + /* Inside the grid, move to the next node */ if (nodes[0] < max_nodes) { nodes[0]++; } - + /* At an outside node of the grid, move to the next level */ else if (max_nodes > 0) { for (j = 1; j < dimension; j++) { @@ -269,18 +294,105 @@ void my_grid_search(evaluate_function_t evaluate, break; } } - + /* At the end of the grid, exit */ if ((j == dimension) && (nodes[j - 1] == max_nodes)) break; } } - + coco_free_memory(x); coco_free_memory(y); coco_free_memory(nodes); coco_free_memory(grid_step); } +/** + * Allocates memory for the timing_data_t object and initializes it. + */ +static timing_data_t *timing_data_initialize(coco_suite_t *suite) { + + timing_data_t *timing_data = (timing_data_t *) coco_allocate_memory(sizeof(*timing_data)); + size_t function_idx, dimension_idx, instance_idx, i; + + /* Find out the number of all dimensions */ + coco_suite_decode_problem_index(suite, coco_suite_get_number_of_problems(suite) - 1, &function_idx, + &dimension_idx, &instance_idx); + timing_data->number_of_dimensions = dimension_idx + 1; + timing_data->current_idx = 0; + timing_data->output = (char **) coco_allocate_memory(timing_data->number_of_dimensions * sizeof(char *)); + for (i = 0; i < timing_data->number_of_dimensions; i++) { + timing_data->output[i] = NULL; + } + timing_data->previous_dimension = 0; + timing_data->cumulative_evaluations = 0; + time(&timing_data->start_time); + time(&timing_data->overall_start_time); + + return timing_data; +} +/** + * Keeps track of the total number of evaluations and elapsed time. Produces an output string when the + * current problem is of a different dimension than the previous one or when NULL. + */ +static void timing_data_time_problem(timing_data_t *timing_data, coco_problem_t *problem) { + + double elapsed_seconds = 0; + + if ((problem == NULL) || (timing_data->previous_dimension != coco_problem_get_dimension(problem))) { + + /* Output existing timing information */ + if (timing_data->cumulative_evaluations > 0) { + time_t now; + time(&now); + elapsed_seconds = difftime(now, timing_data->start_time) / (double) timing_data->cumulative_evaluations; + timing_data->output[timing_data->current_idx++] = coco_strdupf("d=%lu done in %.2e seconds/evaluation\n", + timing_data->previous_dimension, elapsed_seconds); + } + + if (problem != NULL) { + /* Re-initialize the timing_data */ + timing_data->previous_dimension = coco_problem_get_dimension(problem); + timing_data->cumulative_evaluations = coco_problem_get_evaluations(problem); + time(&timing_data->start_time); + } + + } else { + timing_data->cumulative_evaluations += coco_problem_get_evaluations(problem); + } +} +/** + * Outputs and finalizes the given timing data. + */ +static void timing_data_finalize(timing_data_t *timing_data) { + + /* Record the last problem */ + timing_data_time_problem(timing_data, NULL); + + if (timing_data) { + size_t i; + double elapsed_seconds; + time_t now; + int hours, minutes, seconds; + + time(&now); + elapsed_seconds = difftime(now, timing_data->overall_start_time); + + printf("\n"); + for (i = 0; i < timing_data->number_of_dimensions; i++) { + if (timing_data->output[i]) { + printf(timing_data->output[i]); + coco_free_memory(timing_data->output[i]); + } + } + hours = (int) elapsed_seconds / 3600; + minutes = ((int) elapsed_seconds % 3600) / 60; + seconds = (int)elapsed_seconds - (hours * 3600) - (minutes * 60); + printf("Total elapsed time: %dh%02dm%02ds\n", hours, minutes, seconds); + + coco_free_memory(timing_data->output); + coco_free_memory(timing_data); + } +} diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 5ae8e914c..0b7ecb94a 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -265,12 +265,7 @@ static coco_problem_t *f_gallagher_bbob_problem_allocate(const size_t function, - - - - - - +/* Functions used in/related to the large scale suite are below. Eventually either merge with above after the standard version is updated with the new approach or put what's below in a separate file*/ /** * @brief Data type for the versatile_data_t @@ -354,7 +349,7 @@ static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_v /** * @brief Implements the gallagher function without connections to any COCO structures. - * Wassim: core to differentiate it from raw for now + * Wassim: core to not conflict with raw for now * Wassim: TODO: compute the w_i here and make that the subproblems become simple sphere problems and use the f_sphere_raw */ static double f_gallagher_core(const double *x, size_t number_of_variables, f_gallagher_versatile_data_t *f_gallagher_versatile_data) { @@ -455,7 +450,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz b = 9.8; c = 4.9; } else { - coco_error("f_gallagher_bbob_problem_allocate(): '%lu' is a non-supported number of peaks", + coco_error("f_gallagher_permblockdiag_bbob_problem_allocate(): '%lu' is a non-supported number of peaks", number_of_peaks); } @@ -465,7 +460,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B_copy = (const double *const *)B; coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); P1 = coco_allocate_vector_size_t(dimension); diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index 50a535b76..c1ddc9704 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -177,7 +177,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_bbob_problem_allocate(const size_t - +/* Functions used in/related to the large scale suite are below. Eventually either merge with above after the standard version is updated with the new approach or put what's below in a separate file*/ /** @@ -228,37 +228,36 @@ static coco_problem_t *f_lunacek_bi_rastrigin_sub_problem_allocate(const size_t f_lunacek_bi_rastrigin_sub_evaluate_core, NULL, number_of_variables, -5.0, 5.0, 0.0); problem_i->versatile_data = NULL; coco_problem_set_id(problem_i, "%s_d%04lu", "lunacek_bi_rastrigin_sub", number_of_variables); - f_lunacek_bi_rastrigin_sub_evaluate_core(problem_i, problem_i->best_parameter, problem_i->best_value); + /*f_lunacek_bi_rastrigin_sub_evaluate_core(problem_i, problem_i->best_parameter, problem_i->best_value);*/ return problem_i; } /** * @brief Implements the lunacek_bi_rastrigin function without connections to any COCO structures. - * Wassim: core to differentiate it from raw for now + * Wassim: core to not conflict with raw for now */ static double f_lunacek_bi_rastrigin_core(const double *x, const size_t number_of_variables,f_lunacek_bi_rastrigin_versatile_data_t *f_lunacek_bi_rastrigin_versatile_data) { coco_problem_t *problem_sub_mu0, *problem_sub_mu1; size_t i; - double result = 0; + double result = 0.0; double y0, y1; - + problem_sub_mu0 = f_lunacek_bi_rastrigin_versatile_data->sub_problem_mu0; problem_sub_mu0->evaluate_function(problem_sub_mu0, x, &y0); - + problem_sub_mu1 = f_lunacek_bi_rastrigin_versatile_data->sub_problem_mu1; problem_sub_mu1->evaluate_function(problem_sub_mu1, x, &y1); - - result = (double) number_of_variables; - + result += (double) number_of_variables; + for (i = 0; i < number_of_variables; i++) { result -= cos(2 * coco_pi * x[i]); } result *= 10.0; result += coco_double_min(y0, y1); - + return result; } @@ -272,9 +271,6 @@ static void f_lunacek_bi_rastrigin_evaluate_core(coco_problem_t *problem, const assert(y[0] + 1e-13 >= problem->best_value[0]); } - - - /** * @brief Allocates the basic lunacek_bi_rastrigin problem. */ @@ -285,8 +281,8 @@ static coco_problem_t *f_lunacek_bi_rastrigin_problem_allocate(const size_t numb problem->versatile_data = (f_lunacek_bi_rastrigin_versatile_data_t *) coco_allocate_memory(sizeof(f_lunacek_bi_rastrigin_versatile_data_t)); coco_problem_set_id(problem, "%s_d%04lu", "lunacek_bi_rastrigin", number_of_variables); - - /* Compute best solution later once the sub-problems are well defined */ + + /* Compute the best solution later once the sub-problems are well defined */ return problem; } @@ -303,7 +299,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat double fopt; double penalty_factor = 1e4; coco_problem_t *problem = NULL, **sub_problem_tmp; - + double **B1, **B2; const double *const *B1_copy; const double *const *B2_copy; @@ -317,13 +313,12 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat double mu0, mu1, d = 1.0, s; double *mu0_vector, *mu1_vector, *sign_vector; /* Wassim sign vector designate the 1^+_- vector*/ coco_random_state_t *rng = coco_random_new((uint32_t) rseed); - + fopt = bbob2009_compute_fopt(function, instance); s = 1. - 0.5 / (sqrt((double) (dimension + 20)) - 4.1); mu0 = 2.5; mu1 = -sqrt((mu0 * mu0 - d) / s); - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); @@ -333,11 +328,11 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B1_copy = (const double *const *)B1; B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); - + P11 = coco_allocate_vector_size_t(dimension); P12 = coco_allocate_vector_size_t(dimension); P21 = coco_allocate_vector_size_t(dimension); @@ -348,7 +343,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps2, swap_range2); problem = f_lunacek_bi_rastrigin_problem_allocate(dimension); - + mu0_vector = coco_allocate_vector(dimension); mu1_vector = coco_allocate_vector(dimension); for (i = 0; i < dimension; i++) { @@ -358,10 +353,10 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat /* allocate sub-problems */ ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); - + /* set fopt on the non transformed version. Since sub-problems */ f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); - + /* set xopt */ sign_vector = coco_allocate_vector(dimension); for ( i = 0; i < dimension; i++) { @@ -370,7 +365,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat } else { sign_vector[i] = 1.0; } - problem->best_parameter[i] = 0.5 * mu0 * sign_vector[i]; /* Wassim: no 0.5 in documentation! */ + problem->best_parameter[i] = 0.5 * mu0 * sign_vector[i]; /* TODO: Documentation no 0.5 in documentation! */ } /* apply transformations to sub-problems */ @@ -397,14 +392,15 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat problem = transform_vars_shift(problem, mu0_vector, 0); problem = transform_vars_x_hat_generic(problem, sign_vector); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - + coco_problem_set_type(problem, "block-rotated_weakly-structured"); + + coco_random_free(rng); coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); coco_free_memory(P11); diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index 70664f23b..5fada967f 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -223,8 +223,8 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); From db9461f87008566bd56a5bf0fc296def9bc26514 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 11:23:37 +0100 Subject: [PATCH 156/446] large scale suite: some improvements, fixed rng memory leak and corrected order of obj transformations in f24. Updated examle_experiment.c with the timing feature --- code-experiments/build/c/example_experiment.c | 200 ++++++++++++++---- code-experiments/src/f_gallagher.c | 13 +- code-experiments/src/f_lunacek_bi_rastrigin.c | 50 ++--- code-experiments/src/f_rastrigin.c | 2 +- 4 files changed, 184 insertions(+), 81 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index 28fcf72f2..e805b22d8 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -7,6 +7,7 @@ #include #include #include +#include #include "coco.h" @@ -66,35 +67,50 @@ void my_grid_search(evaluate_function_t evaluate, const double *upper_bounds, const size_t max_budget); +/* Structure and functions needed for timing the experiment */ +typedef struct { + size_t number_of_dimensions; + size_t current_idx; + char **output; + size_t previous_dimension; + size_t cumulative_evaluations; + time_t start_time; + time_t overall_start_time; +} timing_data_t; +static timing_data_t *timing_data_initialize(coco_suite_t *suite); +static void timing_data_time_problem(timing_data_t *timing_data, coco_problem_t *problem); +static void timing_data_finalize(timing_data_t *timing_data); + /** * The main method initializes the random number generator and calls the example experiment on the * bi-objective suite. */ int main(void) { - + coco_random_state_t *random_generator = coco_random_new(RANDOM_SEED); - + /* Change the log level to "warning" to get less output */ coco_set_log_level("info"); - + printf("Running the example experiment... (might take time, be patient)\n"); fflush(stdout); - + example_experiment("bbob-biobj", "bbob-biobj", random_generator); - + /* Uncomment the line below to run the same example experiment on the bbob suite - example_experiment("bbob", "bbob", random_generator); */ - + example_experiment("bbob", "bbob", random_generator); */ + printf("Done!\n"); fflush(stdout); - + coco_random_free(random_generator); - + return 0; } /** - * A simple example of benchmarking random search on a suite with instances from 2016. + * A simple example of benchmarking random search on a suite with instances from 2016 that can serve also as + * a timing experiment. * * @param suite_name Name of the suite (use "bbob" for the single-objective and "bbob-biobj" for the * bi-objective suite). @@ -105,37 +121,41 @@ int main(void) { void example_experiment(const char *suite_name, const char *observer_name, coco_random_state_t *random_generator) { - + size_t run; coco_suite_t *suite; coco_observer_t *observer; - + timing_data_t *timing_data; + /* Set some options for the observer. See documentation for other options. */ char *observer_options = - coco_strdupf("result_folder: RS_on_%s " - "algorithm_name: RS " - "algorithm_info: \"A simple random search algorithm\"", suite_name); - + coco_strdupf("result_folder: RS_on_%s " + "algorithm_name: RS " + "algorithm_info: \"A simple random search algorithm\"", suite_name); + /* Initialize the suite and observer */ suite = coco_suite(suite_name, "year: 2016", "dimensions: 2,3,5,10,20,40"); observer = coco_observer(observer_name, observer_options); coco_free_memory(observer_options); - + + /* Initialize timing */ + timing_data = timing_data_initialize(suite); + /* Iterate over all problems in the suite */ while ((PROBLEM = coco_suite_get_next_problem(suite, observer)) != NULL) { - + size_t dimension = coco_problem_get_dimension(PROBLEM); - + /* Run the algorithm at least once */ for (run = 1; run <= 1 + INDEPENDENT_RESTARTS; run++) { - + size_t evaluations_done = coco_problem_get_evaluations(PROBLEM); long evaluations_remaining = (long) (dimension * BUDGET_MULTIPLIER) - (long) evaluations_done; - + /* Break the loop if the target was hit or there are no more remaining evaluations */ if (coco_problem_final_target_hit(PROBLEM) || (evaluations_remaining <= 0)) break; - + /* Call the optimization algorithm for the remaining number of evaluations */ my_random_search(evaluate_function, dimension, @@ -144,22 +164,27 @@ void example_experiment(const char *suite_name, coco_problem_get_largest_values_of_interest(PROBLEM), (size_t) evaluations_remaining, random_generator); - + /* Break the loop if the algorithm performed no evaluations or an unexpected thing happened */ if (coco_problem_get_evaluations(PROBLEM) == evaluations_done) { - printf("WARNING: Budget has not been exhausted (%lu/%lu evaluations done)!\n", evaluations_done, - dimension * BUDGET_MULTIPLIER); + printf("WARNING: Budget has not been exhausted (%lu/%lu evaluations done)!\n", + (unsigned long) evaluations_done, (unsigned long) dimension * BUDGET_MULTIPLIER); break; } else if (coco_problem_get_evaluations(PROBLEM) < evaluations_done) coco_error("Something unexpected happened - function evaluations were decreased!"); } - + + /* Keep track of time */ + timing_data_time_problem(timing_data, PROBLEM); } - + + /* Output and finalize the timing data */ + timing_data_finalize(timing_data); + coco_observer_free(observer); coco_suite_free(suite); - + } /** @@ -181,26 +206,26 @@ void my_random_search(evaluate_function_t evaluate, const double *upper_bounds, const size_t max_budget, coco_random_state_t *random_generator) { - + double *x = coco_allocate_vector(dimension); double *y = coco_allocate_vector(number_of_objectives); double range; size_t i, j; - + for (i = 0; i < max_budget; ++i) { - + /* Construct x as a random point between the lower and upper bounds */ for (j = 0; j < dimension; ++j) { range = upper_bounds[j] - lower_bounds[j]; x[j] = lower_bounds[j] + coco_random_uniform(random_generator) * range; } - + /* Call the evaluate function to evaluate x on the current problem (this is where all the COCO logging * is performed) */ evaluate(x, y); - + } - + coco_free_memory(x); coco_free_memory(y); } @@ -224,7 +249,7 @@ void my_grid_search(evaluate_function_t evaluate, const double *lower_bounds, const double *upper_bounds, const size_t max_budget) { - + double *x = coco_allocate_vector(dimension); double *y = coco_allocate_vector(number_of_objectives); long *nodes = (long *) coco_allocate_memory(sizeof(long) * dimension); @@ -232,33 +257,33 @@ void my_grid_search(evaluate_function_t evaluate, size_t i, j; size_t evaluations = 0; long max_nodes = (long) floor(pow((double) max_budget, 1.0 / (double) dimension)) - 1; - + /* Take care of the borderline case */ if (max_nodes < 1) max_nodes = 1; - + /* Initialization */ for (j = 0; j < dimension; j++) { nodes[j] = 0; grid_step[j] = (upper_bounds[j] - lower_bounds[j]) / (double) max_nodes; } - + while (evaluations < max_budget) { - + /* Construct x and evaluate it */ for (j = 0; j < dimension; j++) { x[j] = lower_bounds[j] + grid_step[j] * (double) nodes[j]; } - + /* Call the evaluate function to evaluate x on the current problem (this is where all the COCO logging * is performed) */ evaluate(x, y); evaluations++; - + /* Inside the grid, move to the next node */ if (nodes[0] < max_nodes) { nodes[0]++; } - + /* At an outside node of the grid, move to the next level */ else if (max_nodes > 0) { for (j = 1; j < dimension; j++) { @@ -269,18 +294,105 @@ void my_grid_search(evaluate_function_t evaluate, break; } } - + /* At the end of the grid, exit */ if ((j == dimension) && (nodes[j - 1] == max_nodes)) break; } } - + coco_free_memory(x); coco_free_memory(y); coco_free_memory(nodes); coco_free_memory(grid_step); } +/** + * Allocates memory for the timing_data_t object and initializes it. + */ +static timing_data_t *timing_data_initialize(coco_suite_t *suite) { + + timing_data_t *timing_data = (timing_data_t *) coco_allocate_memory(sizeof(*timing_data)); + size_t function_idx, dimension_idx, instance_idx, i; + + /* Find out the number of all dimensions */ + coco_suite_decode_problem_index(suite, coco_suite_get_number_of_problems(suite) - 1, &function_idx, + &dimension_idx, &instance_idx); + timing_data->number_of_dimensions = dimension_idx + 1; + timing_data->current_idx = 0; + timing_data->output = (char **) coco_allocate_memory(timing_data->number_of_dimensions * sizeof(char *)); + for (i = 0; i < timing_data->number_of_dimensions; i++) { + timing_data->output[i] = NULL; + } + timing_data->previous_dimension = 0; + timing_data->cumulative_evaluations = 0; + time(&timing_data->start_time); + time(&timing_data->overall_start_time); + + return timing_data; +} +/** + * Keeps track of the total number of evaluations and elapsed time. Produces an output string when the + * current problem is of a different dimension than the previous one or when NULL. + */ +static void timing_data_time_problem(timing_data_t *timing_data, coco_problem_t *problem) { + + double elapsed_seconds = 0; + + if ((problem == NULL) || (timing_data->previous_dimension != coco_problem_get_dimension(problem))) { + + /* Output existing timing information */ + if (timing_data->cumulative_evaluations > 0) { + time_t now; + time(&now); + elapsed_seconds = difftime(now, timing_data->start_time) / (double) timing_data->cumulative_evaluations; + timing_data->output[timing_data->current_idx++] = coco_strdupf("d=%lu done in %.2e seconds/evaluation\n", + timing_data->previous_dimension, elapsed_seconds); + } + + if (problem != NULL) { + /* Re-initialize the timing_data */ + timing_data->previous_dimension = coco_problem_get_dimension(problem); + timing_data->cumulative_evaluations = coco_problem_get_evaluations(problem); + time(&timing_data->start_time); + } + + } else { + timing_data->cumulative_evaluations += coco_problem_get_evaluations(problem); + } +} +/** + * Outputs and finalizes the given timing data. + */ +static void timing_data_finalize(timing_data_t *timing_data) { + + /* Record the last problem */ + timing_data_time_problem(timing_data, NULL); + + if (timing_data) { + size_t i; + double elapsed_seconds; + time_t now; + int hours, minutes, seconds; + + time(&now); + elapsed_seconds = difftime(now, timing_data->overall_start_time); + + printf("\n"); + for (i = 0; i < timing_data->number_of_dimensions; i++) { + if (timing_data->output[i]) { + printf(timing_data->output[i]); + coco_free_memory(timing_data->output[i]); + } + } + hours = (int) elapsed_seconds / 3600; + minutes = ((int) elapsed_seconds % 3600) / 60; + seconds = (int)elapsed_seconds - (hours * 3600) - (minutes * 60); + printf("Total elapsed time: %dh%02dm%02ds\n", hours, minutes, seconds); + + coco_free_memory(timing_data->output); + coco_free_memory(timing_data); + } +} diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 5ae8e914c..0b7ecb94a 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -265,12 +265,7 @@ static coco_problem_t *f_gallagher_bbob_problem_allocate(const size_t function, - - - - - - +/* Functions used in/related to the large scale suite are below. Eventually either merge with above after the standard version is updated with the new approach or put what's below in a separate file*/ /** * @brief Data type for the versatile_data_t @@ -354,7 +349,7 @@ static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_v /** * @brief Implements the gallagher function without connections to any COCO structures. - * Wassim: core to differentiate it from raw for now + * Wassim: core to not conflict with raw for now * Wassim: TODO: compute the w_i here and make that the subproblems become simple sphere problems and use the f_sphere_raw */ static double f_gallagher_core(const double *x, size_t number_of_variables, f_gallagher_versatile_data_t *f_gallagher_versatile_data) { @@ -455,7 +450,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz b = 9.8; c = 4.9; } else { - coco_error("f_gallagher_bbob_problem_allocate(): '%lu' is a non-supported number of peaks", + coco_error("f_gallagher_permblockdiag_bbob_problem_allocate(): '%lu' is a non-supported number of peaks", number_of_peaks); } @@ -465,7 +460,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B_copy = (const double *const *)B; coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); P1 = coco_allocate_vector_size_t(dimension); diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index 50a535b76..c1ddc9704 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -177,7 +177,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_bbob_problem_allocate(const size_t - +/* Functions used in/related to the large scale suite are below. Eventually either merge with above after the standard version is updated with the new approach or put what's below in a separate file*/ /** @@ -228,37 +228,36 @@ static coco_problem_t *f_lunacek_bi_rastrigin_sub_problem_allocate(const size_t f_lunacek_bi_rastrigin_sub_evaluate_core, NULL, number_of_variables, -5.0, 5.0, 0.0); problem_i->versatile_data = NULL; coco_problem_set_id(problem_i, "%s_d%04lu", "lunacek_bi_rastrigin_sub", number_of_variables); - f_lunacek_bi_rastrigin_sub_evaluate_core(problem_i, problem_i->best_parameter, problem_i->best_value); + /*f_lunacek_bi_rastrigin_sub_evaluate_core(problem_i, problem_i->best_parameter, problem_i->best_value);*/ return problem_i; } /** * @brief Implements the lunacek_bi_rastrigin function without connections to any COCO structures. - * Wassim: core to differentiate it from raw for now + * Wassim: core to not conflict with raw for now */ static double f_lunacek_bi_rastrigin_core(const double *x, const size_t number_of_variables,f_lunacek_bi_rastrigin_versatile_data_t *f_lunacek_bi_rastrigin_versatile_data) { coco_problem_t *problem_sub_mu0, *problem_sub_mu1; size_t i; - double result = 0; + double result = 0.0; double y0, y1; - + problem_sub_mu0 = f_lunacek_bi_rastrigin_versatile_data->sub_problem_mu0; problem_sub_mu0->evaluate_function(problem_sub_mu0, x, &y0); - + problem_sub_mu1 = f_lunacek_bi_rastrigin_versatile_data->sub_problem_mu1; problem_sub_mu1->evaluate_function(problem_sub_mu1, x, &y1); - - result = (double) number_of_variables; - + result += (double) number_of_variables; + for (i = 0; i < number_of_variables; i++) { result -= cos(2 * coco_pi * x[i]); } result *= 10.0; result += coco_double_min(y0, y1); - + return result; } @@ -272,9 +271,6 @@ static void f_lunacek_bi_rastrigin_evaluate_core(coco_problem_t *problem, const assert(y[0] + 1e-13 >= problem->best_value[0]); } - - - /** * @brief Allocates the basic lunacek_bi_rastrigin problem. */ @@ -285,8 +281,8 @@ static coco_problem_t *f_lunacek_bi_rastrigin_problem_allocate(const size_t numb problem->versatile_data = (f_lunacek_bi_rastrigin_versatile_data_t *) coco_allocate_memory(sizeof(f_lunacek_bi_rastrigin_versatile_data_t)); coco_problem_set_id(problem, "%s_d%04lu", "lunacek_bi_rastrigin", number_of_variables); - - /* Compute best solution later once the sub-problems are well defined */ + + /* Compute the best solution later once the sub-problems are well defined */ return problem; } @@ -303,7 +299,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat double fopt; double penalty_factor = 1e4; coco_problem_t *problem = NULL, **sub_problem_tmp; - + double **B1, **B2; const double *const *B1_copy; const double *const *B2_copy; @@ -317,13 +313,12 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat double mu0, mu1, d = 1.0, s; double *mu0_vector, *mu1_vector, *sign_vector; /* Wassim sign vector designate the 1^+_- vector*/ coco_random_state_t *rng = coco_random_new((uint32_t) rseed); - + fopt = bbob2009_compute_fopt(function, instance); s = 1. - 0.5 / (sqrt((double) (dimension + 20)) - 4.1); mu0 = 2.5; mu1 = -sqrt((mu0 * mu0 - d) / s); - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); @@ -333,11 +328,11 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels*/ + B1_copy = (const double *const *)B1; B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); - + P11 = coco_allocate_vector_size_t(dimension); P12 = coco_allocate_vector_size_t(dimension); P21 = coco_allocate_vector_size_t(dimension); @@ -348,7 +343,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps2, swap_range2); problem = f_lunacek_bi_rastrigin_problem_allocate(dimension); - + mu0_vector = coco_allocate_vector(dimension); mu1_vector = coco_allocate_vector(dimension); for (i = 0; i < dimension; i++) { @@ -358,10 +353,10 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat /* allocate sub-problems */ ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); - + /* set fopt on the non transformed version. Since sub-problems */ f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); - + /* set xopt */ sign_vector = coco_allocate_vector(dimension); for ( i = 0; i < dimension; i++) { @@ -370,7 +365,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat } else { sign_vector[i] = 1.0; } - problem->best_parameter[i] = 0.5 * mu0 * sign_vector[i]; /* Wassim: no 0.5 in documentation! */ + problem->best_parameter[i] = 0.5 * mu0 * sign_vector[i]; /* TODO: Documentation no 0.5 in documentation! */ } /* apply transformations to sub-problems */ @@ -397,14 +392,15 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat problem = transform_vars_shift(problem, mu0_vector, 0); problem = transform_vars_x_hat_generic(problem, sign_vector); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - + coco_problem_set_type(problem, "block-rotated_weakly-structured"); + + coco_random_free(rng); coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); coco_free_memory(P11); diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index 70664f23b..5fada967f 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -223,8 +223,8 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); From 28a4925f3c957edc253911e1cdca846c9d6ecece Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 11:39:37 +0100 Subject: [PATCH 157/446] large scale suite: some improvements, fixed rng memory leak and corrected order of obj transformations in f24. Updated examle_experiment.c with the timing feature --- code-experiments/src/f_rastrigin.c | 144 ++++++++++++++--------------- 1 file changed, 72 insertions(+), 72 deletions(-) diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index 5fada967f..8fb2d234f 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -166,80 +166,80 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz const long rseed, const char *problem_id_template, const char *problem_name_template) { - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B1; - double **B2; - const double *const *B1_copy; - const double *const *B2_copy; - size_t *P11 = coco_allocate_vector_size_t(dimension); - size_t *P21 = coco_allocate_vector_size_t(dimension); - size_t *P12 = coco_allocate_vector_size_t(dimension); - size_t *P22 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes1; - size_t *block_sizes2; - size_t nb_blocks1; - size_t nb_blocks2; - size_t swap_range; - size_t nb_swaps; + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1, *block_sizes2; + size_t nb_blocks1, nb_blocks2; + size_t swap_range1, swap_range2; + size_t nb_swaps1, nb_swaps2; - - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); - swap_range = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1; - B2_copy = (const double *const *)B2; - - coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); - - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); - - problem = f_rastrigin_allocate(dimension); - problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P12, dimension); - - problem = transform_vars_conditioning(problem, 10.0); - - problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); - problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_asymmetric(problem, 0.2); + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); + + problem = f_rastrigin_allocate(dimension); + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + + problem = transform_vars_conditioning(problem, 10.0); + + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_oscillate(problem); - problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_shift(problem, xopt, 0); + problem = transform_vars_asymmetric(problem, 0.2); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - coco_free_block_matrix(B1, dimension); - coco_free_block_matrix(B2, dimension); - coco_free_memory(P11); - coco_free_memory(P21); - coco_free_memory(P12); - coco_free_memory(P22); - coco_free_memory(block_sizes1); - coco_free_memory(block_sizes2); - coco_free_memory(xopt); - return problem; + problem = transform_vars_oscillate(problem); + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "block-rotated_multi-modal"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; } From 116b55784a61cff2005b28688c5e66e3f6753f7d Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 11:39:37 +0100 Subject: [PATCH 158/446] large scale suite: some improvements, fixed rng memory leak and corrected order of obj transformations in f24. Updated examle_experiment.c with the timing feature --- code-experiments/src/f_rastrigin.c | 144 ++++++++++++++--------------- 1 file changed, 72 insertions(+), 72 deletions(-) diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index 5fada967f..8fb2d234f 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -166,80 +166,80 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz const long rseed, const char *problem_id_template, const char *problem_name_template) { - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B1; - double **B2; - const double *const *B1_copy; - const double *const *B2_copy; - size_t *P11 = coco_allocate_vector_size_t(dimension); - size_t *P21 = coco_allocate_vector_size_t(dimension); - size_t *P12 = coco_allocate_vector_size_t(dimension); - size_t *P22 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes1; - size_t *block_sizes2; - size_t nb_blocks1; - size_t nb_blocks2; - size_t swap_range; - size_t nb_swaps; + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1, *block_sizes2; + size_t nb_blocks1, nb_blocks2; + size_t swap_range1, swap_range2; + size_t nb_swaps1, nb_swaps2; - - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); - swap_range = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1; - B2_copy = (const double *const *)B2; - - coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); - - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); - - problem = f_rastrigin_allocate(dimension); - problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P12, dimension); - - problem = transform_vars_conditioning(problem, 10.0); - - problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); - problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_asymmetric(problem, 0.2); + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); + swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); + nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); + + problem = f_rastrigin_allocate(dimension); + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + + problem = transform_vars_conditioning(problem, 10.0); + + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_oscillate(problem); - problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_shift(problem, xopt, 0); + problem = transform_vars_asymmetric(problem, 0.2); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - coco_free_block_matrix(B1, dimension); - coco_free_block_matrix(B2, dimension); - coco_free_memory(P11); - coco_free_memory(P21); - coco_free_memory(P12); - coco_free_memory(P22); - coco_free_memory(block_sizes1); - coco_free_memory(block_sizes2); - coco_free_memory(xopt); - return problem; + problem = transform_vars_oscillate(problem); + problem = transform_vars_permutation(problem, P22, dimension); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "block-rotated_multi-modal"); + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + return problem; } From 3c7364df07c44de38be75c3c42753e9adaa11aa6 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 11:41:21 +0100 Subject: [PATCH 159/446] f_rastrigin: format and added swap_range2 and nb_swaps2 --- code-experiments/src/f_rastrigin.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index 8fb2d234f..301aa9707 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -201,10 +201,10 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 5000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps2, swap_range2); problem = f_rastrigin_allocate(dimension); problem = transform_vars_permutation(problem, P22, dimension); From 89774324afda8cce08ed0ca4d20f0f1f0b10b249 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 11:41:21 +0100 Subject: [PATCH 160/446] f_rastrigin: format and added swap_range2 and nb_swaps2 --- code-experiments/src/f_rastrigin.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index 8fb2d234f..301aa9707 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -201,10 +201,10 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps1, swap_range1); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 5000000, dimension, nb_swaps2, swap_range2); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps2, swap_range2); problem = f_rastrigin_allocate(dimension); problem = transform_vars_permutation(problem, P22, dimension); From 67dfb6e300c85837e20c420d9787d2a5c87c0c74 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 11:51:28 +0100 Subject: [PATCH 161/446] f_rastrigin: corrected use of P11, P12,... to remain consistent with other functions --- code-experiments/src/f_rastrigin.c | 31 +++++++++++++----------------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index 301aa9707..1f255cbae 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -181,62 +181,57 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz size_t swap_range1, swap_range2; size_t nb_swaps1, nb_swaps2; - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - + xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); - + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); B1_copy = (const double *const *)B1; B2_copy = (const double *const *)B2; - + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); - + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps1, swap_range1); coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps1, swap_range1); coco_compute_truncated_uniform_swap_permutation(P21, rseed + 5000000, dimension, nb_swaps2, swap_range2); coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps2, swap_range2); problem = f_rastrigin_allocate(dimension); - problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P12, dimension); - - problem = transform_vars_conditioning(problem, 10.0); - - problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P11, dimension); - - problem = transform_vars_asymmetric(problem, 0.2); - - problem = transform_vars_oscillate(problem); + problem = transform_vars_conditioning(problem, 10.0); problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_asymmetric(problem, 0.2); + problem = transform_vars_oscillate(problem); problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "block-rotated_multi-modal"); - + coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); coco_free_memory(P11); - coco_free_memory(P21); coco_free_memory(P12); + coco_free_memory(P21); coco_free_memory(P22); coco_free_memory(block_sizes1); coco_free_memory(block_sizes2); From 2ee497fcf05ae14f6bb4416ebca884d05ca4d0bb Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 11:51:28 +0100 Subject: [PATCH 162/446] f_rastrigin: corrected use of P11, P12,... to remain consistent with other functions --- code-experiments/src/f_rastrigin.c | 31 +++++++++++++----------------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index 301aa9707..1f255cbae 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -181,62 +181,57 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz size_t swap_range1, swap_range2; size_t nb_swaps1, nb_swaps2; - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - + xopt = coco_allocate_vector(dimension); fopt = bbob2009_compute_fopt(function, instance); bbob2009_compute_xopt(xopt, rseed, dimension); - + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); B1_copy = (const double *const *)B1; B2_copy = (const double *const *)B2; - + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); - + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps1, swap_range1); coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps1, swap_range1); coco_compute_truncated_uniform_swap_permutation(P21, rseed + 5000000, dimension, nb_swaps2, swap_range2); coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps2, swap_range2); problem = f_rastrigin_allocate(dimension); - problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P12, dimension); - - problem = transform_vars_conditioning(problem, 10.0); - - problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P11, dimension); - - problem = transform_vars_asymmetric(problem, 0.2); - - problem = transform_vars_oscillate(problem); + problem = transform_vars_conditioning(problem, 10.0); problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P21, dimension); + problem = transform_vars_asymmetric(problem, 0.2); + problem = transform_vars_oscillate(problem); problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "block-rotated_multi-modal"); - + coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); coco_free_memory(P11); - coco_free_memory(P21); coco_free_memory(P12); + coco_free_memory(P21); coco_free_memory(P22); coco_free_memory(block_sizes1); coco_free_memory(block_sizes2); From e2171be680718eed2f8861446e7e771622eb2682 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 12:06:35 +0100 Subject: [PATCH 163/446] f_rosenbrock: format --- code-experiments/src/f_rosenbrock.c | 106 ++++++++++++++-------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index de7474f0c..d49652142 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -164,59 +164,59 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si const long rseed, const char *problem_id_template, const char *problem_name_template) { - - double fopt; - coco_problem_t *problem = NULL; - double *minus_half, factor; - size_t i; - - double **B; - const double *const *B_copy; - size_t *P1 = coco_allocate_vector_size_t(dimension); - size_t *P2 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes; - size_t nb_blocks; - size_t swap_range; - size_t nb_swaps; - - block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); - swap_range = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - - fopt = bbob2009_compute_fopt(function, instance); - factor = coco_double_max(1.0, sqrt((double) dimension) / 8.0); - minus_half = coco_allocate_vector(dimension); - for (i = 0; i < dimension; ++i) { - minus_half[i] = -0.5; - } - - B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B; - - coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - problem = f_rosenbrock_allocate(dimension); - problem = transform_vars_shift(problem, minus_half, 0); - problem = transform_vars_scale(problem, factor); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ - problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); - problem = transform_vars_permutation(problem, P1, dimension); - - problem = transform_obj_scale(problem, 1.0 / (double) dimension); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - coco_free_memory(minus_half); - coco_free_block_matrix(B, dimension); - coco_free_memory(P1); - coco_free_memory(P2); - coco_free_memory(block_sizes); - return problem; + + double fopt; + coco_problem_t *problem = NULL; + double *minus_half, factor; + size_t i; + + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + fopt = bbob2009_compute_fopt(function, instance); + factor = coco_double_max(1.0, sqrt((double) dimension) / 8.0); + minus_half = coco_allocate_vector(dimension); + for (i = 0; i < dimension; ++i) { + minus_half[i] = -0.5; + } + + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + problem = f_rosenbrock_allocate(dimension); + problem = transform_vars_shift(problem, minus_half, 0); + problem = transform_vars_scale(problem, factor); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); + + problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "block-rotated_moderate"); + + coco_free_memory(minus_half); + coco_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + return problem; } From f5c0656dffbb73dd6742fa1d1982383e28828986 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 12:06:35 +0100 Subject: [PATCH 164/446] f_rosenbrock: format --- code-experiments/src/f_rosenbrock.c | 106 ++++++++++++++-------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index de7474f0c..d49652142 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -164,59 +164,59 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si const long rseed, const char *problem_id_template, const char *problem_name_template) { - - double fopt; - coco_problem_t *problem = NULL; - double *minus_half, factor; - size_t i; - - double **B; - const double *const *B_copy; - size_t *P1 = coco_allocate_vector_size_t(dimension); - size_t *P2 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes; - size_t nb_blocks; - size_t swap_range; - size_t nb_swaps; - - block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); - swap_range = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - - fopt = bbob2009_compute_fopt(function, instance); - factor = coco_double_max(1.0, sqrt((double) dimension) / 8.0); - minus_half = coco_allocate_vector(dimension); - for (i = 0; i < dimension; ++i) { - minus_half[i] = -0.5; - } - - B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B; - - coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - - problem = f_rosenbrock_allocate(dimension); - problem = transform_vars_shift(problem, minus_half, 0); - problem = transform_vars_scale(problem, factor); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ - problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); - problem = transform_vars_permutation(problem, P1, dimension); - - problem = transform_obj_scale(problem, 1.0 / (double) dimension); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - coco_free_memory(minus_half); - coco_free_block_matrix(B, dimension); - coco_free_memory(P1); - coco_free_memory(P2); - coco_free_memory(block_sizes); - return problem; + + double fopt; + coco_problem_t *problem = NULL; + double *minus_half, factor; + size_t i; + + double **B; + const double *const *B_copy; + size_t *P1 = coco_allocate_vector_size_t(dimension); + size_t *P2 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes; + size_t nb_blocks; + size_t swap_range; + size_t nb_swaps; + + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + fopt = bbob2009_compute_fopt(function, instance); + factor = coco_double_max(1.0, sqrt((double) dimension) / 8.0); + minus_half = coco_allocate_vector(dimension); + for (i = 0; i < dimension; ++i) { + minus_half[i] = -0.5; + } + + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + B_copy = (const double *const *)B; + + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + + problem = f_rosenbrock_allocate(dimension); + problem = transform_vars_shift(problem, minus_half, 0); + problem = transform_vars_scale(problem, factor); + problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); + problem = transform_vars_permutation(problem, P1, dimension); + + problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "block-rotated_moderate"); + + coco_free_memory(minus_half); + coco_free_block_matrix(B, dimension); + coco_free_memory(P1); + coco_free_memory(P2); + coco_free_memory(block_sizes); + return problem; } From 25a481c3232131737bcc6dfbd444641e195b816a Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 12:09:10 +0100 Subject: [PATCH 165/446] f_rosenbrock: format --- code-experiments/src/f_rosenbrock.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index d49652142..d2da121de 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -169,7 +169,7 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si coco_problem_t *problem = NULL; double *minus_half, factor; size_t i; - + double **B; const double *const *B_copy; size_t *P1 = coco_allocate_vector_size_t(dimension); @@ -178,39 +178,39 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si size_t nb_blocks; size_t swap_range; size_t nb_swaps; - + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - + fopt = bbob2009_compute_fopt(function, instance); factor = coco_double_max(1.0, sqrt((double) dimension) / 8.0); minus_half = coco_allocate_vector(dimension); for (i = 0; i < dimension; ++i) { minus_half[i] = -0.5; } - + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - + problem = f_rosenbrock_allocate(dimension); problem = transform_vars_shift(problem, minus_half, 0); problem = transform_vars_scale(problem, factor); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_permutation(problem, P2, dimension); problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "block-rotated_moderate"); - + coco_free_memory(minus_half); coco_free_block_matrix(B, dimension); coco_free_memory(P1); From f188a58a663eb7db9287f7c72f4bdf010f447c36 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 12:09:10 +0100 Subject: [PATCH 166/446] f_rosenbrock: format --- code-experiments/src/f_rosenbrock.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index d49652142..d2da121de 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -169,7 +169,7 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si coco_problem_t *problem = NULL; double *minus_half, factor; size_t i; - + double **B; const double *const *B_copy; size_t *P1 = coco_allocate_vector_size_t(dimension); @@ -178,39 +178,39 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si size_t nb_blocks; size_t swap_range; size_t nb_swaps; - + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - + fopt = bbob2009_compute_fopt(function, instance); factor = coco_double_max(1.0, sqrt((double) dimension) / 8.0); minus_half = coco_allocate_vector(dimension); for (i = 0; i < dimension; ++i) { minus_half[i] = -0.5; } - + B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); - + problem = f_rosenbrock_allocate(dimension); problem = transform_vars_shift(problem, minus_half, 0); problem = transform_vars_scale(problem, factor); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_permutation(problem, P2, dimension); problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_shift(problem, fopt); - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "block-rotated_moderate"); - + coco_free_memory(minus_half); coco_free_block_matrix(B, dimension); coco_free_memory(P1); From a0df261983a7e72844d92f0b6212036fa3591369 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 12:21:23 +0100 Subject: [PATCH 167/446] transform_vars_round_step: added missing fabs() to the computation of zhat_1 --- code-experiments/src/transform_vars_round_step.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/transform_vars_round_step.c b/code-experiments/src/transform_vars_round_step.c index 75bfde90a..914983b10 100644 --- a/code-experiments/src/transform_vars_round_step.c +++ b/code-experiments/src/transform_vars_round_step.c @@ -37,7 +37,7 @@ static void transform_vars_round_step_evaluate(coco_problem_t *problem, const do data = (transform_vars_round_step_data_t *) coco_problem_transformed_get_data(problem); inner_problem = coco_problem_transformed_get_inner_problem(problem); /* multiplication by d to counter-balance the normalization by d*/ - ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = x[0] * (double) inner_problem->number_of_variables; + ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = fabs(x[0]) * (double) inner_problem->number_of_variables; for (i = 0; i < inner_problem->number_of_variables; ++i) { if (fabs(x[i]) > 0.5){ data->rounded_x[i] = coco_double_round(x[i]); From 3fb2a088dcbbee30a8c9dd6d71f02aa7337a97cc Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 12:21:23 +0100 Subject: [PATCH 168/446] transform_vars_round_step: added missing fabs() to the computation of zhat_1 --- code-experiments/src/transform_vars_round_step.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/transform_vars_round_step.c b/code-experiments/src/transform_vars_round_step.c index 75bfde90a..914983b10 100644 --- a/code-experiments/src/transform_vars_round_step.c +++ b/code-experiments/src/transform_vars_round_step.c @@ -37,7 +37,7 @@ static void transform_vars_round_step_evaluate(coco_problem_t *problem, const do data = (transform_vars_round_step_data_t *) coco_problem_transformed_get_data(problem); inner_problem = coco_problem_transformed_get_inner_problem(problem); /* multiplication by d to counter-balance the normalization by d*/ - ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = x[0] * (double) inner_problem->number_of_variables; + ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = fabs(x[0]) * (double) inner_problem->number_of_variables; for (i = 0; i < inner_problem->number_of_variables; ++i) { if (fabs(x[i]) > 0.5){ data->rounded_x[i] = coco_double_round(x[i]); From 34241bdd169ba805559cd07d148b1ac28eacf300 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 16:24:19 +0100 Subject: [PATCH 169/446] f_step_ellipsoid.c: pointed out inconsistency with documentation on the rounding of z_hat --- code-experiments/src/f_step_ellipsoid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index aff518ba2..0fcd3e93f 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -66,7 +66,7 @@ static double f_step_ellipsoid_raw(const double *x, const size_t number_of_varia x1 = data->x[0]; for (i = 0; i < number_of_variables; ++i) { - if (fabs(data->x[i]) > 0.5) + if (fabs(data->x[i]) > 0.5) /* TODO: Documentation: no fabs() in documentation */ data->x[i] = coco_double_round(data->x[i]); else data->x[i] = coco_double_round(alpha * data->x[i]) / alpha; From cd70dda12449331fa8b61e79fb29fe8da285a5e7 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 16:24:19 +0100 Subject: [PATCH 170/446] f_step_ellipsoid.c: pointed out inconsistency with documentation on the rounding of z_hat --- code-experiments/src/f_step_ellipsoid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index aff518ba2..0fcd3e93f 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -66,7 +66,7 @@ static double f_step_ellipsoid_raw(const double *x, const size_t number_of_varia x1 = data->x[0]; for (i = 0; i < number_of_variables; ++i) { - if (fabs(data->x[i]) > 0.5) + if (fabs(data->x[i]) > 0.5) /* TODO: Documentation: no fabs() in documentation */ data->x[i] = coco_double_round(data->x[i]); else data->x[i] = coco_double_round(alpha * data->x[i]) / alpha; From 39f0a69ee8209e651a332608be77e6ac448a23e6 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 17:35:17 +0100 Subject: [PATCH 171/446] transform_vars_round_step.c: comment about point to be discussed --- code-experiments/src/transform_vars_round_step.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/transform_vars_round_step.c b/code-experiments/src/transform_vars_round_step.c index 914983b10..07646d349 100644 --- a/code-experiments/src/transform_vars_round_step.c +++ b/code-experiments/src/transform_vars_round_step.c @@ -37,7 +37,7 @@ static void transform_vars_round_step_evaluate(coco_problem_t *problem, const do data = (transform_vars_round_step_data_t *) coco_problem_transformed_get_data(problem); inner_problem = coco_problem_transformed_get_inner_problem(problem); /* multiplication by d to counter-balance the normalization by d*/ - ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = fabs(x[0]) * (double) inner_problem->number_of_variables; + ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = fabs(x[0]) * (double) inner_problem->number_of_variables;/* TODO: Discuss: consider not pre-imptively multiplying by dim to not change the outcome of the max in the core function even though we might want to keep it as it is since otherwise, the sum part of the max may take over as dim increases */ for (i = 0; i < inner_problem->number_of_variables; ++i) { if (fabs(x[i]) > 0.5){ data->rounded_x[i] = coco_double_round(x[i]); From ef6d97956c74752c317c155fac0cece684e285e5 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 17:35:17 +0100 Subject: [PATCH 172/446] transform_vars_round_step.c: comment about point to be discussed --- code-experiments/src/transform_vars_round_step.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/transform_vars_round_step.c b/code-experiments/src/transform_vars_round_step.c index 914983b10..07646d349 100644 --- a/code-experiments/src/transform_vars_round_step.c +++ b/code-experiments/src/transform_vars_round_step.c @@ -37,7 +37,7 @@ static void transform_vars_round_step_evaluate(coco_problem_t *problem, const do data = (transform_vars_round_step_data_t *) coco_problem_transformed_get_data(problem); inner_problem = coco_problem_transformed_get_inner_problem(problem); /* multiplication by d to counter-balance the normalization by d*/ - ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = fabs(x[0]) * (double) inner_problem->number_of_variables; + ((f_step_ellipsoid_versatile_data_t *) problem->versatile_data)->zhat_1 = fabs(x[0]) * (double) inner_problem->number_of_variables;/* TODO: Discuss: consider not pre-imptively multiplying by dim to not change the outcome of the max in the core function even though we might want to keep it as it is since otherwise, the sum part of the max may take over as dim increases */ for (i = 0; i < inner_problem->number_of_variables; ++i) { if (fabs(x[i]) > 0.5){ data->rounded_x[i] = coco_double_round(x[i]); From 820ded2d9268ed1581a8ef0db919b37e1144a1e7 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 18:12:29 +0100 Subject: [PATCH 173/446] transform_vars_round_step.c: corrected update of best_parameter --- code-experiments/src/f_step_ellipsoid.c | 14 +++++++------- code-experiments/src/transform_vars_round_step.c | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 0fcd3e93f..3d51e2b8d 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -265,14 +265,14 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); B1_copy = (const double *const *)B1; B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); - + P11 = coco_allocate_vector_size_t(dimension); P12 = coco_allocate_vector_size_t(dimension); P21 = coco_allocate_vector_size_t(dimension); @@ -281,9 +281,9 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); - + problem = f_step_ellipsoid_allocate(dimension); - + problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P21, dimension); @@ -294,15 +294,15 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); - + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); - + coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); coco_free_memory(P11); diff --git a/code-experiments/src/transform_vars_round_step.c b/code-experiments/src/transform_vars_round_step.c index 07646d349..0caf998bf 100644 --- a/code-experiments/src/transform_vars_round_step.c +++ b/code-experiments/src/transform_vars_round_step.c @@ -73,7 +73,7 @@ static coco_problem_t *transform_vars_round_step(coco_problem_t *inner_problem, problem->evaluate_function = transform_vars_round_step_evaluate; /* Compute best parameter */ for (i = 0; i < problem->number_of_variables; i++) { - if (problem->best_parameter[i] > 0.5) { + if (fabs(problem->best_parameter[i]) > 0.5) { problem->best_parameter[i] = coco_double_round(problem->best_parameter[i]); } else { problem->best_parameter[i] = coco_double_round(data->alpha * problem->best_parameter[i]) / data->alpha; From ff683bc5305629a6e1c7771cd1a9fb756f8cba27 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 18:12:29 +0100 Subject: [PATCH 174/446] transform_vars_round_step.c: corrected update of best_parameter --- code-experiments/src/f_step_ellipsoid.c | 14 +++++++------- code-experiments/src/transform_vars_round_step.c | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 0fcd3e93f..3d51e2b8d 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -265,14 +265,14 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); B1_copy = (const double *const *)B1; B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); - + P11 = coco_allocate_vector_size_t(dimension); P12 = coco_allocate_vector_size_t(dimension); P21 = coco_allocate_vector_size_t(dimension); @@ -281,9 +281,9 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); - + problem = f_step_ellipsoid_allocate(dimension); - + problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P21, dimension); @@ -294,15 +294,15 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); - + problem = transform_obj_scale(problem, 1.0 / (double) dimension); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); - + coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); coco_free_memory(P11); diff --git a/code-experiments/src/transform_vars_round_step.c b/code-experiments/src/transform_vars_round_step.c index 07646d349..0caf998bf 100644 --- a/code-experiments/src/transform_vars_round_step.c +++ b/code-experiments/src/transform_vars_round_step.c @@ -73,7 +73,7 @@ static coco_problem_t *transform_vars_round_step(coco_problem_t *inner_problem, problem->evaluate_function = transform_vars_round_step_evaluate; /* Compute best parameter */ for (i = 0; i < problem->number_of_variables; i++) { - if (problem->best_parameter[i] > 0.5) { + if (fabs(problem->best_parameter[i]) > 0.5) { problem->best_parameter[i] = coco_double_round(problem->best_parameter[i]); } else { problem->best_parameter[i] = coco_double_round(data->alpha * problem->best_parameter[i]) / data->alpha; From 538c470877cd50e3d158c4c8452e13e149dcb08b Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 18:53:27 +0100 Subject: [PATCH 175/446] f_gallagher.c: added comment about discussion point on the permutation of the diagonal values in the condition matrix --- code-experiments/src/f_gallagher.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 0b7ecb94a..0c7d18c7e 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -499,7 +499,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz (*problem_i)->best_value[0] = 0;/* to prevent raising the assert */ /* P_Lambda the permutation */ P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the values in C_i */ - coco_compute_random_permutation(P_Lambda, rseed + 5000000 + peak_index, dimension); + coco_compute_random_permutation(P_Lambda, rseed + 5000000 + peak_index, dimension);/* TODO: Discuss: this permutation renders irrelevant the parameterization of P1 and P2 since it takes over as a random uniform permutation. Consider leaving only this one and maybe making it a truncated uniform one*/ /* apply var transformations to sub problem*/ *problem_i = transform_vars_scale(*problem_i, sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ From e3881854879b7aafd92ce3b43ae0d11979a1b11c Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 22 Mar 2016 18:53:27 +0100 Subject: [PATCH 176/446] f_gallagher.c: added comment about discussion point on the permutation of the diagonal values in the condition matrix --- code-experiments/src/f_gallagher.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 0b7ecb94a..0c7d18c7e 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -499,7 +499,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz (*problem_i)->best_value[0] = 0;/* to prevent raising the assert */ /* P_Lambda the permutation */ P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the values in C_i */ - coco_compute_random_permutation(P_Lambda, rseed + 5000000 + peak_index, dimension); + coco_compute_random_permutation(P_Lambda, rseed + 5000000 + peak_index, dimension);/* TODO: Discuss: this permutation renders irrelevant the parameterization of P1 and P2 since it takes over as a random uniform permutation. Consider leaving only this one and maybe making it a truncated uniform one*/ /* apply var transformations to sub problem*/ *problem_i = transform_vars_scale(*problem_i, sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ From f2147d3f836a5660a29f78e919a8ae23c9576499 Mon Sep 17 00:00:00 2001 From: NDManh Date: Fri, 25 Mar 2016 16:05:11 +0100 Subject: [PATCH 177/446] Modify the effect of factor to rotation matrix for Rosenbrock function --- code-experiments/src/f_rosenbrock.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index d2da121de..a8eae4252 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -134,9 +134,7 @@ static coco_problem_t *f_rosenbrock_rotated_bbob_problem_allocate(const size_t f for (row = 0; row < dimension; ++row) { current_row = M + row * dimension; for (column = 0; column < dimension; ++column) { - current_row[column] = rot1[row][column]; - if (row == column) - current_row[column] *= factor; + current_row[column] = factor*rot1[row][column]; } b[row] = 0.5; } From ffc1c432bd42dc3f1ad8cfc8bfe5bbba87896a04 Mon Sep 17 00:00:00 2001 From: NDManh Date: Fri, 25 Mar 2016 16:05:11 +0100 Subject: [PATCH 178/446] Modify the effect of factor to rotation matrix for Rosenbrock function --- code-experiments/src/f_rosenbrock.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index d2da121de..a8eae4252 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -134,9 +134,7 @@ static coco_problem_t *f_rosenbrock_rotated_bbob_problem_allocate(const size_t f for (row = 0; row < dimension; ++row) { current_row = M + row * dimension; for (column = 0; column < dimension; ++column) { - current_row[column] = rot1[row][column]; - if (row == column) - current_row[column] *= factor; + current_row[column] = factor*rot1[row][column]; } b[row] = 0.5; } From fd60a1fb0dcefb709b872c28ff1cf44cf9034f47 Mon Sep 17 00:00:00 2001 From: NDManh Date: Fri, 25 Mar 2016 16:07:02 +0100 Subject: [PATCH 179/446] TODO: Documentation: the condition z_i > 0 --- code-experiments/src/transform_vars_brs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/transform_vars_brs.c b/code-experiments/src/transform_vars_brs.c index 69eb07c10..c9afde1d5 100644 --- a/code-experiments/src/transform_vars_brs.c +++ b/code-experiments/src/transform_vars_brs.c @@ -38,7 +38,7 @@ static void transform_vars_brs_evaluate(coco_problem_t *problem, const double *x * from 1, we use all even indices since C starts indexing * with 0. */ - if (x[i] > 0.0 && i % 2 == 0) { + if (x[i] > 0.0 && i % 2 == 0) { /*TODO: Documentation: the condition should be Tosz(x_i - x_i^opt) > 0 in stead of z_i > 0*/ factor *= 10.0; } data->x[i] = factor * x[i]; From c024a2104fcab885d56396ce1f24c5d47ddd0784 Mon Sep 17 00:00:00 2001 From: NDManh Date: Fri, 25 Mar 2016 16:07:02 +0100 Subject: [PATCH 180/446] TODO: Documentation: the condition z_i > 0 --- code-experiments/src/transform_vars_brs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/transform_vars_brs.c b/code-experiments/src/transform_vars_brs.c index 69eb07c10..c9afde1d5 100644 --- a/code-experiments/src/transform_vars_brs.c +++ b/code-experiments/src/transform_vars_brs.c @@ -38,7 +38,7 @@ static void transform_vars_brs_evaluate(coco_problem_t *problem, const double *x * from 1, we use all even indices since C starts indexing * with 0. */ - if (x[i] > 0.0 && i % 2 == 0) { + if (x[i] > 0.0 && i % 2 == 0) { /*TODO: Documentation: the condition should be Tosz(x_i - x_i^opt) > 0 in stead of z_i > 0*/ factor *= 10.0; } data->x[i] = factor * x[i]; From 13f62e23892d64197ba8c31823a9f487e34174e4 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 12 May 2016 14:18:11 +0200 Subject: [PATCH 181/446] now uses min(1, 40/d) instead of 1/d to normalize by dimension --- code-experiments/src/f_different_powers.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 59e943447..38a54ae0b 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -100,7 +100,7 @@ static coco_problem_t *f_different_powers_bbob_problem_allocate(const size_t fun } /** - * @brief Creates the BBOB generalized permuted block-rotated different powers problem. + * @brief Creates the BBOB generalized permuted block-rotated sum of different powers problem. */ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, @@ -121,6 +121,8 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co size_t nb_blocks; size_t swap_range; size_t nb_swaps; + double scaling_factor; + scaling_factor = bbob2009_fmin(1, ((double) 40) / dimension);/*TODO, update on all functions or use a function*/ block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); @@ -143,7 +145,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_scale(problem, scaling_factor); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); From 3e185ad1b6f8c54f7eac109a79f3012ef264c133 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 12 May 2016 14:18:11 +0200 Subject: [PATCH 182/446] now uses min(1, 40/d) instead of 1/d to normalize by dimension --- code-experiments/src/f_different_powers.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 59e943447..38a54ae0b 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -100,7 +100,7 @@ static coco_problem_t *f_different_powers_bbob_problem_allocate(const size_t fun } /** - * @brief Creates the BBOB generalized permuted block-rotated different powers problem. + * @brief Creates the BBOB generalized permuted block-rotated sum of different powers problem. */ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, @@ -121,6 +121,8 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co size_t nb_blocks; size_t swap_range; size_t nb_swaps; + double scaling_factor; + scaling_factor = bbob2009_fmin(1, ((double) 40) / dimension);/*TODO, update on all functions or use a function*/ block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); @@ -143,7 +145,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_scale(problem, scaling_factor); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); From 8b1046f32c8570e278299f5f5c1ca7e655aece65 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 12 May 2016 14:24:07 +0200 Subject: [PATCH 183/446] now uses min(1, 40/d) instead of 1/d to normalize by dimension --- code-experiments/src/f_ellipsoid.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 88c7d965b..9bd3229e4 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -104,7 +104,7 @@ static coco_problem_t *f_ellipsoid_rotated_bbob_problem_allocate(const size_t fu const char *problem_name_template) { double *xopt, fopt; coco_problem_t *problem = NULL; - + double *M = coco_allocate_vector(dimension * dimension); double *b = coco_allocate_vector(dimension); double **rot1; @@ -153,19 +153,23 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz size_t nb_blocks; size_t swap_range; size_t nb_swaps; - + double scaling_factor; + scaling_factor = bbob2009_fmin(1, ((double) 40) / dimension);/*TODO, update on all functions or use a function*/ + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + /*printf("probDim:%d, scalingFactor: %f, blockSize: %d, swapRange: %d\n", dimension, scaling_factor, block_sizes[0], swap_range);*/ + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); fopt = bbob2009_compute_fopt(function, instance); B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels. Check everywhere*/ - coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); @@ -177,7 +181,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_scale(problem, scaling_factor); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); From a521cd0c1a612b3b2454d7aab034ffd38fe85593 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 12 May 2016 14:24:07 +0200 Subject: [PATCH 184/446] now uses min(1, 40/d) instead of 1/d to normalize by dimension --- code-experiments/src/f_ellipsoid.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 88c7d965b..9bd3229e4 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -104,7 +104,7 @@ static coco_problem_t *f_ellipsoid_rotated_bbob_problem_allocate(const size_t fu const char *problem_name_template) { double *xopt, fopt; coco_problem_t *problem = NULL; - + double *M = coco_allocate_vector(dimension * dimension); double *b = coco_allocate_vector(dimension); double **rot1; @@ -153,19 +153,23 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz size_t nb_blocks; size_t swap_range; size_t nb_swaps; - + double scaling_factor; + scaling_factor = bbob2009_fmin(1, ((double) 40) / dimension);/*TODO, update on all functions or use a function*/ + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + /*printf("probDim:%d, scalingFactor: %f, blockSize: %d, swapRange: %d\n", dimension, scaling_factor, block_sizes[0], swap_range);*/ + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); fopt = bbob2009_compute_fopt(function, instance); B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B;/*TODO: silences the warning, not sure if it prevents the modification of B at all levels. Check everywhere*/ - coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); @@ -177,7 +181,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_scale(problem, scaling_factor); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); From cb1b708fd9badd2a953a5438e76cf7635278bf58 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 12 May 2016 14:24:17 +0200 Subject: [PATCH 185/446] now uses min(1, 40/d) instead of 1/d to normalize by dimension --- code-experiments/src/f_sphere.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/f_sphere.c b/code-experiments/src/f_sphere.c index b16648468..c6f1622b7 100644 --- a/code-experiments/src/f_sphere.c +++ b/code-experiments/src/f_sphere.c @@ -64,7 +64,8 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, double *xopt, fopt; coco_problem_t *problem = NULL; - + double scaling_factor; + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); fopt = bbob2009_compute_fopt(function, instance); @@ -74,7 +75,11 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + + scaling_factor = bbob2009_fmin(1, ((double) 40) / dimension);/*TODO, update on all functions or use a function*/ + //scaling_factor = 1; + //printf("suff\n"); + problem = transform_obj_scale(problem, scaling_factor); } problem = transform_obj_shift(problem, fopt); From 319aa430c3250276f26a6d267e719f8054d7a121 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 12 May 2016 14:24:17 +0200 Subject: [PATCH 186/446] now uses min(1, 40/d) instead of 1/d to normalize by dimension --- code-experiments/src/f_sphere.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/f_sphere.c b/code-experiments/src/f_sphere.c index b16648468..c6f1622b7 100644 --- a/code-experiments/src/f_sphere.c +++ b/code-experiments/src/f_sphere.c @@ -64,7 +64,8 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, double *xopt, fopt; coco_problem_t *problem = NULL; - + double scaling_factor; + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); fopt = bbob2009_compute_fopt(function, instance); @@ -74,7 +75,11 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + + scaling_factor = bbob2009_fmin(1, ((double) 40) / dimension);/*TODO, update on all functions or use a function*/ + //scaling_factor = 1; + //printf("suff\n"); + problem = transform_obj_scale(problem, scaling_factor); } problem = transform_obj_shift(problem, fopt); From 319f7a6c7b102f17a80c51d53d3d20b49fb8832c Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 12 May 2016 14:39:16 +0200 Subject: [PATCH 187/446] block-size is now min(probDim,40), plus some temporary modifications in the pproc to generate ERT figures --- code-experiments/build/c/example_experiment.c | 8 ++++---- code-experiments/src/logger_bbob.c | 4 ++-- .../src/transform_vars_blockrotation_helpers.c | 3 ++- code-experiments/test/integration-test/test_coco.c | 13 +++++++------ code-experiments/tools/generate-bbob-tests.R | 2 +- code-postprocessing/bbob_pproc/genericsettings.py | 3 ++- code-postprocessing/bbob_pproc/ppfig.py | 2 +- code-postprocessing/bbob_pproc/ppfigdim.py | 5 +++-- 8 files changed, 22 insertions(+), 18 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index e805b22d8..aa6b3d849 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -95,10 +95,10 @@ int main(void) { printf("Running the example experiment... (might take time, be patient)\n"); fflush(stdout); - example_experiment("bbob-biobj", "bbob-biobj", random_generator); - - /* Uncomment the line below to run the same example experiment on the bbob suite - example_experiment("bbob", "bbob", random_generator); */ + /*example_experiment("bbob-biobj", "bbob-biobj", random_generator); + + Uncomment the line below to run the same example experiment on the bbob suite*/ + example_experiment("bbob", "bbob", random_generator); printf("Done!\n"); fflush(stdout); diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 6d80ddefa..d5ded2bc1 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -332,9 +332,9 @@ static void logger_bbob_evaluate(coco_problem_t *problem, const double *x, doubl assert(y[0] + 1e-13 >= logger->optimal_fvalue); /* Add a line in the .dat file for each logging target reached. */ - if (coco_observer_targets_trigger(logger->targets, y[0] - logger->optimal_fvalue)) { + if (coco_observer_targets_trigger(logger->targets, y[0] - logger->optimal_fvalue)) { - logger_bbob_write_data(logger->fdata_file, logger->number_of_evaluations, y[0], logger->best_fvalue, + logger_bbob_write_data(logger->fdata_file, logger->number_of_evaluations, y[0], logger->best_fvalue, logger->optimal_fvalue, x, problem->number_of_variables, logger->observer->precision_f, logger->observer->precision_x); } diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index 503ef2dcc..f0ebcfc3e 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -168,7 +168,8 @@ static size_t *coco_get_block_sizes(size_t *nb_blocks, size_t dimension, const c int i; if (strcmp(suite_name, "bbob-largescale") == 0) { - block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension / 4, 100)); + /*block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension / 4, 100));*/ /*old value*/ + block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension, 40)); *nb_blocks = dimension / block_size + ((dimension % block_size) > 0); block_sizes = coco_allocate_vector_size_t(*nb_blocks); for (i = 0; i < *nb_blocks - 1; i++) { diff --git a/code-experiments/test/integration-test/test_coco.c b/code-experiments/test/integration-test/test_coco.c index 20bf1588f..ec049b4f4 100644 --- a/code-experiments/test/integration-test/test_coco.c +++ b/code-experiments/test/integration-test/test_coco.c @@ -20,7 +20,7 @@ static int about_equal(const double a, const double b) { const double absolute_error = fabs(a - b); const double larger = fabs(a) > fabs(b) ? a : b; const double relative_error = fabs((a - b) / larger); - + if (absolute_error < 2 * DBL_MIN) return 1; return relative_error < 4e-6; @@ -93,18 +93,18 @@ int main(int argc, char **argv) { ret = fscanf(testfile, "%30lf", &testvectors[i].x[j]); if (ret != 1) { fprintf(stderr, "ERROR: Failed to parse testvector %lu element %lu.\n", - i + 1, j + 1); + (unsigned long) i + 1, (unsigned long) j + 1); } } } - suite = coco_suite("bbob", NULL, NULL); + suite = coco_suite("bbob", "instances: 1-15", NULL); while (1) { double expected_value, *x, y; ret = fscanf(testfile, "%30lu\t%30lu\t%30i\t%30lf", &problem_index_old, &problem_index, &testvector_id, &expected_value); - if (ret != 3) + if (ret != 4) break; ++number_of_testcases; /* We cache the problem object to save time. Instantiating @@ -115,7 +115,8 @@ int main(int argc, char **argv) { if (NULL != problem) coco_problem_free(problem); if (problem_index > coco_suite_get_number_of_problems(suite) - 1) { - fprintf(stdout, "problem index = %lu, maximum index = %lu \n", problem_index, coco_suite_get_number_of_problems(suite) - 1); + fprintf(stdout, "problem index = %lu, maximum index = %lu \n", (unsigned long) problem_index, + (unsigned long) coco_suite_get_number_of_problems(suite) - 1); } problem = coco_suite_get_problem(suite, problem_index); previous_problem_index = (long) problem_index; @@ -148,7 +149,7 @@ int main(int argc, char **argv) { fprintf(stderr, "%i of %i tests passed (failure rate %.2f%%)\n", number_of_testcases - number_of_failures, (int)number_of_testcases, (100.0 * number_of_failures) / number_of_testcases); - + /* Free any remaining allocated memory */ if (NULL != problem) coco_problem_free(problem); diff --git a/code-experiments/tools/generate-bbob-tests.R b/code-experiments/tools/generate-bbob-tests.R index 1efb258b6..c1230a7a8 100644 --- a/code-experiments/tools/generate-bbob-tests.R +++ b/code-experiments/tools/generate-bbob-tests.R @@ -36,7 +36,7 @@ generate_bbob_testcase <- function(function_id, instance_id, dimension, testvectors <- generate_testvectors(100) -catf("bbob2009\n%i\n", nrow(testvectors)) +catf("bbob\n%i\n", nrow(testvectors)) for (i in 1:nrow(testvectors)) { catf("%s\n", paste(sprintf("%.14e", testvectors[i,]), collapse=" ")) } diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index d01056bd9..16ee9ef47 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -23,7 +23,7 @@ maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = 'auto' # 'auto' means automatic choice, otherwise True or False dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules -dimensions_to_display_ls = (20, 40, 80, 160, 320, 640, 1280) # Wassim: large scale suite +dimensions_to_display_ls = (20, 40, 80, 160, 320, 640) # Wassim: large scale suite generate_svg_files = True # generate the svg figures scaling_figures_with_boxes = True # should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? @@ -313,6 +313,7 @@ def __init__(self, targetValues): self.rldValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # possibly changed in config self.ppfvdistr_min_target = 1e-8 self.functions_with_legend = (1, 24, 101, 130) + self.functions_with_legend = (1, 10, 14, 24, 101, 130)# Wassim: TODO: remove used only for GECCO paper try: info_list = open(os.path.join(os.path.dirname(__file__), diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index ef12ac03d..babaa17ec 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -48,7 +48,7 @@ def saveFigure(filename, figFormat=(), verbose=True): plt.gcf().set_size_inches([svg_downsize_factor * v for v in plt.gcf().get_size_inches()]) try: - plt.savefig(filename + '.' + format, + plt.savefig(filename + '.' + format, transparent=True,#Wassim: TODO remove transparent=True dpi = 60 if genericsettings.in_a_hurry else 300, format=format, bbox_inches=bbox_inches_choices.get(format, None) diff --git a/code-postprocessing/bbob_pproc/ppfigdim.py b/code-postprocessing/bbob_pproc/ppfigdim.py index d510d477c..65782e94e 100644 --- a/code-postprocessing/bbob_pproc/ppfigdim.py +++ b/code-postprocessing/bbob_pproc/ppfigdim.py @@ -592,13 +592,14 @@ def main(dsList, _valuesOfInterest, outputdir, verbose=True): plt.text(plt.xlim()[0], plt.ylim()[0], _valuesOfInterest.short_info, fontsize=14) if func in genericsettings.current_testbed.functions_with_legend: - plt.legend(loc="best") + leg = plt.legend(loc="best") + leg.get_frame().set_alpha(0.2) # Wassim: To make the legend transparent framealpha=0.2 doesn't seem to work if func in funInfos.keys(): # print(plt.rcParams['axes.titlesize']) # print(plt.rcParams['font.size']) funcName = funInfos[func] plt.gca().set_title(funcName, fontsize=fontSize) - plot_previous_algorithms(func, dsList.isBiobjective(), _valuesOfInterest) + plot_previous_algorithms(func, dsList.isBiobjective() or True, _valuesOfInterest) # Wassim: TODO the or True is to be removed filename = os.path.join(outputdir, 'ppfigdim_f%03d' % (func)) with warnings.catch_warnings(record=True) as ws: ppfig.saveFigure(filename, verbose=verbose) From a64ebb64bd9bf42f2ffd7c2326ca74bad9c58cb9 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 12 May 2016 14:39:16 +0200 Subject: [PATCH 188/446] block-size is now min(probDim,40), plus some temporary modifications in the pproc to generate ERT figures --- code-experiments/build/c/example_experiment.c | 8 ++++---- code-experiments/src/logger_bbob.c | 4 ++-- .../src/transform_vars_blockrotation_helpers.c | 3 ++- code-experiments/test/integration-test/test_coco.c | 13 +++++++------ code-experiments/tools/generate-bbob-tests.R | 2 +- code-postprocessing/bbob_pproc/genericsettings.py | 3 ++- code-postprocessing/bbob_pproc/ppfig.py | 2 +- code-postprocessing/bbob_pproc/ppfigdim.py | 5 +++-- 8 files changed, 22 insertions(+), 18 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index e805b22d8..aa6b3d849 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -95,10 +95,10 @@ int main(void) { printf("Running the example experiment... (might take time, be patient)\n"); fflush(stdout); - example_experiment("bbob-biobj", "bbob-biobj", random_generator); - - /* Uncomment the line below to run the same example experiment on the bbob suite - example_experiment("bbob", "bbob", random_generator); */ + /*example_experiment("bbob-biobj", "bbob-biobj", random_generator); + + Uncomment the line below to run the same example experiment on the bbob suite*/ + example_experiment("bbob", "bbob", random_generator); printf("Done!\n"); fflush(stdout); diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 6d80ddefa..d5ded2bc1 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -332,9 +332,9 @@ static void logger_bbob_evaluate(coco_problem_t *problem, const double *x, doubl assert(y[0] + 1e-13 >= logger->optimal_fvalue); /* Add a line in the .dat file for each logging target reached. */ - if (coco_observer_targets_trigger(logger->targets, y[0] - logger->optimal_fvalue)) { + if (coco_observer_targets_trigger(logger->targets, y[0] - logger->optimal_fvalue)) { - logger_bbob_write_data(logger->fdata_file, logger->number_of_evaluations, y[0], logger->best_fvalue, + logger_bbob_write_data(logger->fdata_file, logger->number_of_evaluations, y[0], logger->best_fvalue, logger->optimal_fvalue, x, problem->number_of_variables, logger->observer->precision_f, logger->observer->precision_x); } diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index 503ef2dcc..f0ebcfc3e 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -168,7 +168,8 @@ static size_t *coco_get_block_sizes(size_t *nb_blocks, size_t dimension, const c int i; if (strcmp(suite_name, "bbob-largescale") == 0) { - block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension / 4, 100)); + /*block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension / 4, 100));*/ /*old value*/ + block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension, 40)); *nb_blocks = dimension / block_size + ((dimension % block_size) > 0); block_sizes = coco_allocate_vector_size_t(*nb_blocks); for (i = 0; i < *nb_blocks - 1; i++) { diff --git a/code-experiments/test/integration-test/test_coco.c b/code-experiments/test/integration-test/test_coco.c index 20bf1588f..ec049b4f4 100644 --- a/code-experiments/test/integration-test/test_coco.c +++ b/code-experiments/test/integration-test/test_coco.c @@ -20,7 +20,7 @@ static int about_equal(const double a, const double b) { const double absolute_error = fabs(a - b); const double larger = fabs(a) > fabs(b) ? a : b; const double relative_error = fabs((a - b) / larger); - + if (absolute_error < 2 * DBL_MIN) return 1; return relative_error < 4e-6; @@ -93,18 +93,18 @@ int main(int argc, char **argv) { ret = fscanf(testfile, "%30lf", &testvectors[i].x[j]); if (ret != 1) { fprintf(stderr, "ERROR: Failed to parse testvector %lu element %lu.\n", - i + 1, j + 1); + (unsigned long) i + 1, (unsigned long) j + 1); } } } - suite = coco_suite("bbob", NULL, NULL); + suite = coco_suite("bbob", "instances: 1-15", NULL); while (1) { double expected_value, *x, y; ret = fscanf(testfile, "%30lu\t%30lu\t%30i\t%30lf", &problem_index_old, &problem_index, &testvector_id, &expected_value); - if (ret != 3) + if (ret != 4) break; ++number_of_testcases; /* We cache the problem object to save time. Instantiating @@ -115,7 +115,8 @@ int main(int argc, char **argv) { if (NULL != problem) coco_problem_free(problem); if (problem_index > coco_suite_get_number_of_problems(suite) - 1) { - fprintf(stdout, "problem index = %lu, maximum index = %lu \n", problem_index, coco_suite_get_number_of_problems(suite) - 1); + fprintf(stdout, "problem index = %lu, maximum index = %lu \n", (unsigned long) problem_index, + (unsigned long) coco_suite_get_number_of_problems(suite) - 1); } problem = coco_suite_get_problem(suite, problem_index); previous_problem_index = (long) problem_index; @@ -148,7 +149,7 @@ int main(int argc, char **argv) { fprintf(stderr, "%i of %i tests passed (failure rate %.2f%%)\n", number_of_testcases - number_of_failures, (int)number_of_testcases, (100.0 * number_of_failures) / number_of_testcases); - + /* Free any remaining allocated memory */ if (NULL != problem) coco_problem_free(problem); diff --git a/code-experiments/tools/generate-bbob-tests.R b/code-experiments/tools/generate-bbob-tests.R index 1efb258b6..c1230a7a8 100644 --- a/code-experiments/tools/generate-bbob-tests.R +++ b/code-experiments/tools/generate-bbob-tests.R @@ -36,7 +36,7 @@ generate_bbob_testcase <- function(function_id, instance_id, dimension, testvectors <- generate_testvectors(100) -catf("bbob2009\n%i\n", nrow(testvectors)) +catf("bbob\n%i\n", nrow(testvectors)) for (i in 1:nrow(testvectors)) { catf("%s\n", paste(sprintf("%.14e", testvectors[i,]), collapse=" ")) } diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index d01056bd9..16ee9ef47 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -23,7 +23,7 @@ maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = 'auto' # 'auto' means automatic choice, otherwise True or False dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules -dimensions_to_display_ls = (20, 40, 80, 160, 320, 640, 1280) # Wassim: large scale suite +dimensions_to_display_ls = (20, 40, 80, 160, 320, 640) # Wassim: large scale suite generate_svg_files = True # generate the svg figures scaling_figures_with_boxes = True # should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? @@ -313,6 +313,7 @@ def __init__(self, targetValues): self.rldValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # possibly changed in config self.ppfvdistr_min_target = 1e-8 self.functions_with_legend = (1, 24, 101, 130) + self.functions_with_legend = (1, 10, 14, 24, 101, 130)# Wassim: TODO: remove used only for GECCO paper try: info_list = open(os.path.join(os.path.dirname(__file__), diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index ef12ac03d..babaa17ec 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -48,7 +48,7 @@ def saveFigure(filename, figFormat=(), verbose=True): plt.gcf().set_size_inches([svg_downsize_factor * v for v in plt.gcf().get_size_inches()]) try: - plt.savefig(filename + '.' + format, + plt.savefig(filename + '.' + format, transparent=True,#Wassim: TODO remove transparent=True dpi = 60 if genericsettings.in_a_hurry else 300, format=format, bbox_inches=bbox_inches_choices.get(format, None) diff --git a/code-postprocessing/bbob_pproc/ppfigdim.py b/code-postprocessing/bbob_pproc/ppfigdim.py index d510d477c..65782e94e 100644 --- a/code-postprocessing/bbob_pproc/ppfigdim.py +++ b/code-postprocessing/bbob_pproc/ppfigdim.py @@ -592,13 +592,14 @@ def main(dsList, _valuesOfInterest, outputdir, verbose=True): plt.text(plt.xlim()[0], plt.ylim()[0], _valuesOfInterest.short_info, fontsize=14) if func in genericsettings.current_testbed.functions_with_legend: - plt.legend(loc="best") + leg = plt.legend(loc="best") + leg.get_frame().set_alpha(0.2) # Wassim: To make the legend transparent framealpha=0.2 doesn't seem to work if func in funInfos.keys(): # print(plt.rcParams['axes.titlesize']) # print(plt.rcParams['font.size']) funcName = funInfos[func] plt.gca().set_title(funcName, fontsize=fontSize) - plot_previous_algorithms(func, dsList.isBiobjective(), _valuesOfInterest) + plot_previous_algorithms(func, dsList.isBiobjective() or True, _valuesOfInterest) # Wassim: TODO the or True is to be removed filename = os.path.join(outputdir, 'ppfigdim_f%03d' % (func)) with warnings.catch_warnings(record=True) as ws: ppfig.saveFigure(filename, verbose=verbose) From e9d0a7c6c5d10c18dc6ff6bc8a2f01f2ff6fac53 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 12 May 2016 17:37:32 +0200 Subject: [PATCH 189/446] deleted // comment in f_sphere.c --- code-experiments/src/f_sphere.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/code-experiments/src/f_sphere.c b/code-experiments/src/f_sphere.c index c6f1622b7..e683fe48c 100644 --- a/code-experiments/src/f_sphere.c +++ b/code-experiments/src/f_sphere.c @@ -77,8 +77,6 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ scaling_factor = bbob2009_fmin(1, ((double) 40) / dimension);/*TODO, update on all functions or use a function*/ - //scaling_factor = 1; - //printf("suff\n"); problem = transform_obj_scale(problem, scaling_factor); } problem = transform_obj_shift(problem, fopt); From cc4ac588a7e01a9fb6092527c3436d1e7e7768a4 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 12 May 2016 17:37:32 +0200 Subject: [PATCH 190/446] deleted // comment in f_sphere.c --- code-experiments/src/f_sphere.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/code-experiments/src/f_sphere.c b/code-experiments/src/f_sphere.c index c6f1622b7..e683fe48c 100644 --- a/code-experiments/src/f_sphere.c +++ b/code-experiments/src/f_sphere.c @@ -77,8 +77,6 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ scaling_factor = bbob2009_fmin(1, ((double) 40) / dimension);/*TODO, update on all functions or use a function*/ - //scaling_factor = 1; - //printf("suff\n"); problem = transform_obj_scale(problem, scaling_factor); } problem = transform_obj_shift(problem, fopt); From bc7919a9fd5cc5cccbafc5767adb111008b2a044 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 12 May 2016 18:25:17 +0200 Subject: [PATCH 191/446] f_katsuura_raw no longer returns inf values for dimenion>=320. Silenced implicit conversion warnings. --- code-experiments/src/f_different_powers.c | 2 +- code-experiments/src/f_ellipsoid.c | 2 +- code-experiments/src/f_katsuura.c | 14 +++++++++----- code-experiments/src/f_sphere.c | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 38a54ae0b..dcdd4c96d 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -122,7 +122,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co size_t swap_range; size_t nb_swaps; double scaling_factor; - scaling_factor = bbob2009_fmin(1, ((double) 40) / dimension);/*TODO, update on all functions or use a function*/ + scaling_factor = bbob2009_fmin(1, 40. / ((double) dimension));/*TODO, update on all functions or use a function*/ block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 9bd3229e4..8f539284f 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -154,7 +154,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz size_t swap_range; size_t nb_swaps; double scaling_factor; - scaling_factor = bbob2009_fmin(1, ((double) 40) / dimension);/*TODO, update on all functions or use a function*/ + scaling_factor = bbob2009_fmin(1, 40. / ((double) dimension)); /*TODO, update on all functions or use a function*/ block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index 3086c7640..d35bd3fe5 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -35,11 +35,15 @@ static double f_katsuura_raw(const double *x, const size_t number_of_variables) tmp += fabs(tmp2 * x[i] - coco_double_round(tmp2 * x[i])) / tmp2; } tmp = 1.0 + ((double) (long) i + 1) * tmp; - result *= tmp; + /*result *= tmp;*//* Wassim TODO: delete once consistency check passed*/ + result *= pow(tmp, 10. / pow((double) number_of_variables, 1.2)); } + /*result = 10. / ((double) number_of_variables) / ((double) number_of_variables) + * (-1. + pow(result, 10. / pow((double) number_of_variables, 1.2)));*/ result = 10. / ((double) number_of_variables) / ((double) number_of_variables) - * (-1. + pow(result, 10. / pow((double) number_of_variables, 1.2))); + * (-1. + result); + printf("%f ", result); return result; } @@ -152,7 +156,7 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size size_t swap_range2; size_t nb_swaps1; size_t nb_swaps2; - + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); @@ -182,11 +186,11 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_conditioning(problem, 100.0); - problem = transform_vars_permutation(problem, P12, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ + problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_shift(problem, xopt, 0); + /*problem = transform_obj_scale(problem, 1.0 / (double) dimension);*//* Wassim: does not seem to be needed*/ problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); /*TODO: documentation, there is no fopt in the definition of this function*/ diff --git a/code-experiments/src/f_sphere.c b/code-experiments/src/f_sphere.c index e683fe48c..218bb7d3b 100644 --- a/code-experiments/src/f_sphere.c +++ b/code-experiments/src/f_sphere.c @@ -76,7 +76,7 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - scaling_factor = bbob2009_fmin(1, ((double) 40) / dimension);/*TODO, update on all functions or use a function*/ + scaling_factor = bbob2009_fmin(1, 40. / ((double) dimension)); /*TODO, update on all functions or use a function*/ problem = transform_obj_scale(problem, scaling_factor); } problem = transform_obj_shift(problem, fopt); From 3de02ead902ffa4c27e83aefc0254f3fa6f439c7 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 12 May 2016 18:25:17 +0200 Subject: [PATCH 192/446] f_katsuura_raw no longer returns inf values for dimenion>=320. Silenced implicit conversion warnings. --- code-experiments/src/f_different_powers.c | 2 +- code-experiments/src/f_ellipsoid.c | 2 +- code-experiments/src/f_katsuura.c | 14 +++++++++----- code-experiments/src/f_sphere.c | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 38a54ae0b..dcdd4c96d 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -122,7 +122,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co size_t swap_range; size_t nb_swaps; double scaling_factor; - scaling_factor = bbob2009_fmin(1, ((double) 40) / dimension);/*TODO, update on all functions or use a function*/ + scaling_factor = bbob2009_fmin(1, 40. / ((double) dimension));/*TODO, update on all functions or use a function*/ block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 9bd3229e4..8f539284f 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -154,7 +154,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz size_t swap_range; size_t nb_swaps; double scaling_factor; - scaling_factor = bbob2009_fmin(1, ((double) 40) / dimension);/*TODO, update on all functions or use a function*/ + scaling_factor = bbob2009_fmin(1, 40. / ((double) dimension)); /*TODO, update on all functions or use a function*/ block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index 3086c7640..d35bd3fe5 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -35,11 +35,15 @@ static double f_katsuura_raw(const double *x, const size_t number_of_variables) tmp += fabs(tmp2 * x[i] - coco_double_round(tmp2 * x[i])) / tmp2; } tmp = 1.0 + ((double) (long) i + 1) * tmp; - result *= tmp; + /*result *= tmp;*//* Wassim TODO: delete once consistency check passed*/ + result *= pow(tmp, 10. / pow((double) number_of_variables, 1.2)); } + /*result = 10. / ((double) number_of_variables) / ((double) number_of_variables) + * (-1. + pow(result, 10. / pow((double) number_of_variables, 1.2)));*/ result = 10. / ((double) number_of_variables) / ((double) number_of_variables) - * (-1. + pow(result, 10. / pow((double) number_of_variables, 1.2))); + * (-1. + result); + printf("%f ", result); return result; } @@ -152,7 +156,7 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size size_t swap_range2; size_t nb_swaps1; size_t nb_swaps2; - + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); @@ -182,11 +186,11 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_conditioning(problem, 100.0); - problem = transform_vars_permutation(problem, P12, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ + problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_shift(problem, xopt, 0); + /*problem = transform_obj_scale(problem, 1.0 / (double) dimension);*//* Wassim: does not seem to be needed*/ problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); /*TODO: documentation, there is no fopt in the definition of this function*/ diff --git a/code-experiments/src/f_sphere.c b/code-experiments/src/f_sphere.c index e683fe48c..218bb7d3b 100644 --- a/code-experiments/src/f_sphere.c +++ b/code-experiments/src/f_sphere.c @@ -76,7 +76,7 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - scaling_factor = bbob2009_fmin(1, ((double) 40) / dimension);/*TODO, update on all functions or use a function*/ + scaling_factor = bbob2009_fmin(1, 40. / ((double) dimension)); /*TODO, update on all functions or use a function*/ problem = transform_obj_scale(problem, scaling_factor); } problem = transform_obj_shift(problem, fopt); From 29b76973d5f902333875c6e65dd26cf7e5966756 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 12 May 2016 19:06:59 +0200 Subject: [PATCH 193/446] removed debug printf in f_katsuura.c --- code-experiments/src/f_katsuura.c | 1 - 1 file changed, 1 deletion(-) diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index d35bd3fe5..3925b1d1c 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -43,7 +43,6 @@ static double f_katsuura_raw(const double *x, const size_t number_of_variables) result = 10. / ((double) number_of_variables) / ((double) number_of_variables) * (-1. + result); - printf("%f ", result); return result; } From 77e6a93b552c7748d7f040e4c8f286c6f3dd2779 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 12 May 2016 19:06:59 +0200 Subject: [PATCH 194/446] removed debug printf in f_katsuura.c --- code-experiments/src/f_katsuura.c | 1 - 1 file changed, 1 deletion(-) diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index d35bd3fe5..3925b1d1c 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -43,7 +43,6 @@ static double f_katsuura_raw(const double *x, const size_t number_of_variables) result = 10. / ((double) number_of_variables) / ((double) number_of_variables) * (-1. + result); - printf("%f ", result); return result; } From 2561b3c2ea8d2d5b5bdde52e80ba605d0df90a75 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 17 May 2016 16:26:14 +0200 Subject: [PATCH 195/446] added key checking to bestalgentries in pprldmany to avoid raising errors when pprocing non-default dimensions --- code-postprocessing/bbob_pproc/compall/pprldmany.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code-postprocessing/bbob_pproc/compall/pprldmany.py b/code-postprocessing/bbob_pproc/compall/pprldmany.py index 3b7a63f86..3d89d16a7 100644 --- a/code-postprocessing/bbob_pproc/compall/pprldmany.py +++ b/code-postprocessing/bbob_pproc/compall/pprldmany.py @@ -665,7 +665,8 @@ def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', #set_trace() bestalgentries = bestalg.load_best_algorithm() - if not bestalgentries: + if not bestalgentries or not bestalgentries.has_key((dim,f)): + # Wassim: if (dimension,function) is not present in bestalgentries, just ignore it displaybest2009 = False else: bestalgentry = bestalgentries[(dim, f)] From a4b915b92bdfe37059d70431c2bfbf7b14097d8f Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 17 May 2016 16:26:14 +0200 Subject: [PATCH 196/446] added key checking to bestalgentries in pprldmany to avoid raising errors when pprocing non-default dimensions --- code-postprocessing/bbob_pproc/compall/pprldmany.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code-postprocessing/bbob_pproc/compall/pprldmany.py b/code-postprocessing/bbob_pproc/compall/pprldmany.py index 3b7a63f86..3d89d16a7 100644 --- a/code-postprocessing/bbob_pproc/compall/pprldmany.py +++ b/code-postprocessing/bbob_pproc/compall/pprldmany.py @@ -665,7 +665,8 @@ def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', #set_trace() bestalgentries = bestalg.load_best_algorithm() - if not bestalgentries: + if not bestalgentries or not bestalgentries.has_key((dim,f)): + # Wassim: if (dimension,function) is not present in bestalgentries, just ignore it displaybest2009 = False else: bestalgentry = bestalgentries[(dim, f)] From 204b72aaf3d24b0dd8ac8fba681faf3d48dbe68c Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 17 May 2016 16:51:04 +0200 Subject: [PATCH 197/446] clean up in genericsettings.py --- .../bbob_pproc/genericsettings.py | 117 ------------------ 1 file changed, 117 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 15fefe97a..89f053fa3 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -273,120 +273,3 @@ def getFontSize(nameList): maxFuncLength = max(len(i) for i in nameList) fontSize = 24 - max(0, 2 * ((maxFuncLength - 35) / 5)) return fontSize - -# Wassim: all what follows no longer exists in the developement branch -class Testbed(object): - """this might become the future way to have settings related to testbeds - TODO: should go somewhere else than genericsettings.py - TODO: how do we pass information from the benchmark to the post-processing? - - """ - def info(self, fun_number=None): - """info on the testbed if ``fun_number is None`` or one-line info - for function with number ``fun_number``. - - """ - if fun_number is None: - return self.__doc__ - - for line in open(os.path.join(os.path.abspath(os.path.split(__file__)[0]), - self.info_filename)).readlines(): - if line.split(): # ie if not empty - try: # empty lines are ignored - fun = int(line.split()[0]) - if fun == fun_number: - return 'F'+str(fun) + ' ' + ' '.join(line.split()[1:]) - except ValueError: - continue # ignore annotations - -class GECCOBBOBTestbed(Testbed): - """Testbed used in the GECCO BBOB workshops 2009, 2010, 2012, 2013, 2015. - """ - def __init__(self, targetValues): - # TODO: should become a function, as low_budget is a display setting - # not a testbed setting - # only the short info, how to deal with both infos? - self.info_filename = 'GECCOBBOBbenchmarkinfos.txt' - self.name = 'bbob' - self.short_names = {} - self.hardesttargetlatex = '10^{-8}' - self.ppfigs_ftarget = 1e-8 - self.ppfigdim_target_values = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8)) # possibly changed in config - self.pprldistr_target_values = targetValues((10., 1e-1, 1e-4, 1e-8)) # possibly changed in config - self.pprldmany_target_values = targetValues(10**np.arange(2, -8.2, -0.2)) # possibly changed in config - self.pprldmany_target_range_latex = '$10^{[-8..2]}$' - - self.rldValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # possibly changed in config - self.ppfvdistr_min_target = 1e-8 - self.functions_with_legend = (1, 24, 101, 130) - self.functions_with_legend = (1, 10, 14, 24, 101, 130)# Wassim: TODO: remove used only for GECCO paper - - try: - info_list = open(os.path.join(os.path.dirname(__file__), - getBenchmarksShortInfos(False)), - 'r').read().split('\n') - info_dict = {} - for info in info_list: - key_val = info.split(' ', 1) - if len(key_val) > 1: - info_dict[int(key_val[0])] = key_val[1] - self.short_names = info_dict - except: - warnings.warn('benchmark infos not found') - -class GECCOBiobjBBOBTestbed(Testbed): - """Testbed used in the GECCO biobjective BBOB workshop 2016. - """ - def __init__(self, targetValues): - # TODO: should become a function, as low_budget is a display setting - # not a testbed setting - # only the short info, how to deal with both infos? - self.info_filename = 'GECCOBBOBbenchmarkinfos.txt' - self.name = 'bbob-biobj' - self.short_names = {} - self.hardesttargetlatex = '10^{-5}' - self.ppfigs_ftarget = 1e-5 - self.ppfigdim_target_values = targetValues((1e-1, 1e-2, 1e-3, 1e-4, 1e-5)) # possibly changed in config - self.pprldistr_target_values = targetValues((1e-1, 1e-2, 1e-3, 1e-5)) # possibly changed in config - self.pprldmany_target_values = targetValues(10**np.arange(0, -5.1, -0.1)) # possibly changed in config - self.pprldmany_target_range_latex = '$10^{[-5..0]}$' - self.rldValsOfInterest = (1e-1, 1e-2, 1e-3, 1e-4, 1e-5) # possibly changed in config - self.ppfvdistr_min_target = 1e-5 - self.functions_with_legend = (1, 30, 31, 55) - - try: - info_list = open(os.path.join(os.path.dirname(__file__), - getBenchmarksShortInfos(True)), - 'r').read().split('\n') - info_dict = {} - for info in info_list: - key_val = info.split(' ', 1) - if len(key_val) > 1: - info_dict[int(key_val[0])] = key_val[1] - self.short_names = info_dict - except: - warnings.warn('benchmark infos not found') - -class GECCOBBOBNoisefreeTestbed(GECCOBBOBTestbed): - __doc__ = GECCOBBOBTestbed.__doc__ - -class GECCOBiobjBBOBNoisefreeTestbed(GECCOBiobjBBOBTestbed): - __doc__ = GECCOBiobjBBOBTestbed.__doc__ - -# TODO: this needs to be set somewhere, e.g. in rungeneric* -# or even better by investigating in the data attributes - -current_testbed = None - -def loadCurrentTestbed(isBiobjective, targetValues): - - global current_testbed - - if not current_testbed: - if isBiobjective: - current_testbed = GECCOBiobjBBOBNoisefreeTestbed(targetValues) - else: - current_testbed = GECCOBBOBNoisefreeTestbed(targetValues) - - return current_testbed - From 89569f2ac072b1e82de4a0a8635acd6f7da5f085 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 17 May 2016 16:51:04 +0200 Subject: [PATCH 198/446] clean up in genericsettings.py --- .../bbob_pproc/genericsettings.py | 117 ------------------ 1 file changed, 117 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 15fefe97a..89f053fa3 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -273,120 +273,3 @@ def getFontSize(nameList): maxFuncLength = max(len(i) for i in nameList) fontSize = 24 - max(0, 2 * ((maxFuncLength - 35) / 5)) return fontSize - -# Wassim: all what follows no longer exists in the developement branch -class Testbed(object): - """this might become the future way to have settings related to testbeds - TODO: should go somewhere else than genericsettings.py - TODO: how do we pass information from the benchmark to the post-processing? - - """ - def info(self, fun_number=None): - """info on the testbed if ``fun_number is None`` or one-line info - for function with number ``fun_number``. - - """ - if fun_number is None: - return self.__doc__ - - for line in open(os.path.join(os.path.abspath(os.path.split(__file__)[0]), - self.info_filename)).readlines(): - if line.split(): # ie if not empty - try: # empty lines are ignored - fun = int(line.split()[0]) - if fun == fun_number: - return 'F'+str(fun) + ' ' + ' '.join(line.split()[1:]) - except ValueError: - continue # ignore annotations - -class GECCOBBOBTestbed(Testbed): - """Testbed used in the GECCO BBOB workshops 2009, 2010, 2012, 2013, 2015. - """ - def __init__(self, targetValues): - # TODO: should become a function, as low_budget is a display setting - # not a testbed setting - # only the short info, how to deal with both infos? - self.info_filename = 'GECCOBBOBbenchmarkinfos.txt' - self.name = 'bbob' - self.short_names = {} - self.hardesttargetlatex = '10^{-8}' - self.ppfigs_ftarget = 1e-8 - self.ppfigdim_target_values = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8)) # possibly changed in config - self.pprldistr_target_values = targetValues((10., 1e-1, 1e-4, 1e-8)) # possibly changed in config - self.pprldmany_target_values = targetValues(10**np.arange(2, -8.2, -0.2)) # possibly changed in config - self.pprldmany_target_range_latex = '$10^{[-8..2]}$' - - self.rldValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # possibly changed in config - self.ppfvdistr_min_target = 1e-8 - self.functions_with_legend = (1, 24, 101, 130) - self.functions_with_legend = (1, 10, 14, 24, 101, 130)# Wassim: TODO: remove used only for GECCO paper - - try: - info_list = open(os.path.join(os.path.dirname(__file__), - getBenchmarksShortInfos(False)), - 'r').read().split('\n') - info_dict = {} - for info in info_list: - key_val = info.split(' ', 1) - if len(key_val) > 1: - info_dict[int(key_val[0])] = key_val[1] - self.short_names = info_dict - except: - warnings.warn('benchmark infos not found') - -class GECCOBiobjBBOBTestbed(Testbed): - """Testbed used in the GECCO biobjective BBOB workshop 2016. - """ - def __init__(self, targetValues): - # TODO: should become a function, as low_budget is a display setting - # not a testbed setting - # only the short info, how to deal with both infos? - self.info_filename = 'GECCOBBOBbenchmarkinfos.txt' - self.name = 'bbob-biobj' - self.short_names = {} - self.hardesttargetlatex = '10^{-5}' - self.ppfigs_ftarget = 1e-5 - self.ppfigdim_target_values = targetValues((1e-1, 1e-2, 1e-3, 1e-4, 1e-5)) # possibly changed in config - self.pprldistr_target_values = targetValues((1e-1, 1e-2, 1e-3, 1e-5)) # possibly changed in config - self.pprldmany_target_values = targetValues(10**np.arange(0, -5.1, -0.1)) # possibly changed in config - self.pprldmany_target_range_latex = '$10^{[-5..0]}$' - self.rldValsOfInterest = (1e-1, 1e-2, 1e-3, 1e-4, 1e-5) # possibly changed in config - self.ppfvdistr_min_target = 1e-5 - self.functions_with_legend = (1, 30, 31, 55) - - try: - info_list = open(os.path.join(os.path.dirname(__file__), - getBenchmarksShortInfos(True)), - 'r').read().split('\n') - info_dict = {} - for info in info_list: - key_val = info.split(' ', 1) - if len(key_val) > 1: - info_dict[int(key_val[0])] = key_val[1] - self.short_names = info_dict - except: - warnings.warn('benchmark infos not found') - -class GECCOBBOBNoisefreeTestbed(GECCOBBOBTestbed): - __doc__ = GECCOBBOBTestbed.__doc__ - -class GECCOBiobjBBOBNoisefreeTestbed(GECCOBiobjBBOBTestbed): - __doc__ = GECCOBiobjBBOBTestbed.__doc__ - -# TODO: this needs to be set somewhere, e.g. in rungeneric* -# or even better by investigating in the data attributes - -current_testbed = None - -def loadCurrentTestbed(isBiobjective, targetValues): - - global current_testbed - - if not current_testbed: - if isBiobjective: - current_testbed = GECCOBiobjBBOBNoisefreeTestbed(targetValues) - else: - current_testbed = GECCOBBOBNoisefreeTestbed(targetValues) - - return current_testbed - From e1aace00b39537ff3033b7c3260b1554862e1685 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 17 May 2016 17:50:54 +0200 Subject: [PATCH 199/446] first steps toward testsuite dimension independent pproc --- code-postprocessing/bbob_pproc/genericsettings.py | 4 ++-- code-postprocessing/bbob_pproc/ppfig.py | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 89f053fa3..e9750ca4a 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -31,7 +31,7 @@ # Variables used in the routines defining desired output for BBOB. tabDimsOfInterest = (5, 20) # dimension which are displayed in the tables -tabDimsOfInterest = [40] # Wassim: large scale TODO: use it by generating new large-scale reference data +#tabDimsOfInterest = [40, 160] # Wassim: large scale TODO: use it by generating new large-scale reference data target_runlengths_in_scaling_figs = [0.5, 1.2, 3, 10, 50] # used in config target_runlengths_in_single_rldistr = [0.5, 2, 10, 50] # used in config target_runlength = 10 # used in ppfigs.main @@ -49,7 +49,7 @@ rldDimsOfInterest = (5, 20) -rldDimsOfInterest = [40, 80] # Wassim: for large scale TODO: use it by generating new large-scale reference data +#rldDimsOfInterest = [40, 80] # Wassim: for large scale TODO: use it by generating new large-scale reference data htmlDimsOfInterest = [5, 20] # Wassim: Empirical cumulative distribution functions (ECDF) and ERT loss ratios shown dimensions in html file htmlDimsOfInterest_ls = [40, 80] # Wassim: for large scale diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index a659f7a96..81bec0c37 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -171,12 +171,13 @@ def getRldLink(htmlPage, currentDir, isBiobjective): ignoreFileExists=ignoreFileExists) if htmlPage in (HtmlPage.TWO, HtmlPage.MANY) or not isBiobjective: - fileName = '%s_02D.html' % genericsettings.pprldmany_file_name + fileName = '%s_%02dD.html' % (genericsettings.pprldmany_file_name, 2) + # Wassim: the smallest dimension should not be hard coded but at least reliant on the suite-name links += addLink(currentDir, folder, fileName, 'Runtime distribution plots (per dimension)', ignoreFileExists=ignoreFileExists) if htmlPage == HtmlPage.ONE: - fileName = '%s_02D.html' % genericsettings.pprldmany_group_file_name + fileName = '%s_%02dD.html' % (genericsettings.pprldmany_group_file_name, 2) links += addLink(currentDir, folder, fileName, 'Runtime distribution plots by group (per dimension)', ignoreFileExists=ignoreFileExists) @@ -255,8 +256,6 @@ def save_single_functions_html(filename, f.write(captionStringFormat % '##bbobppscatterlegend##') names = ['pprldistr', 'pplogabs'] - # dimensions = [5, 20] # Wassim: now done earlier depending on genericsettings.isLargeScale - # dimensions = [40, 80] # Wassim: for large scale headerECDF = 'Empirical cumulative distribution functions (ECDFs) per function group' f.write("\n

%s

\n" % headerECDF) From 237a25fe7ced99f54131c68ea236939101d48667 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 17 May 2016 17:50:54 +0200 Subject: [PATCH 200/446] first steps toward testsuite dimension independent pproc --- code-postprocessing/bbob_pproc/genericsettings.py | 4 ++-- code-postprocessing/bbob_pproc/ppfig.py | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 89f053fa3..e9750ca4a 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -31,7 +31,7 @@ # Variables used in the routines defining desired output for BBOB. tabDimsOfInterest = (5, 20) # dimension which are displayed in the tables -tabDimsOfInterest = [40] # Wassim: large scale TODO: use it by generating new large-scale reference data +#tabDimsOfInterest = [40, 160] # Wassim: large scale TODO: use it by generating new large-scale reference data target_runlengths_in_scaling_figs = [0.5, 1.2, 3, 10, 50] # used in config target_runlengths_in_single_rldistr = [0.5, 2, 10, 50] # used in config target_runlength = 10 # used in ppfigs.main @@ -49,7 +49,7 @@ rldDimsOfInterest = (5, 20) -rldDimsOfInterest = [40, 80] # Wassim: for large scale TODO: use it by generating new large-scale reference data +#rldDimsOfInterest = [40, 80] # Wassim: for large scale TODO: use it by generating new large-scale reference data htmlDimsOfInterest = [5, 20] # Wassim: Empirical cumulative distribution functions (ECDF) and ERT loss ratios shown dimensions in html file htmlDimsOfInterest_ls = [40, 80] # Wassim: for large scale diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index a659f7a96..81bec0c37 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -171,12 +171,13 @@ def getRldLink(htmlPage, currentDir, isBiobjective): ignoreFileExists=ignoreFileExists) if htmlPage in (HtmlPage.TWO, HtmlPage.MANY) or not isBiobjective: - fileName = '%s_02D.html' % genericsettings.pprldmany_file_name + fileName = '%s_%02dD.html' % (genericsettings.pprldmany_file_name, 2) + # Wassim: the smallest dimension should not be hard coded but at least reliant on the suite-name links += addLink(currentDir, folder, fileName, 'Runtime distribution plots (per dimension)', ignoreFileExists=ignoreFileExists) if htmlPage == HtmlPage.ONE: - fileName = '%s_02D.html' % genericsettings.pprldmany_group_file_name + fileName = '%s_%02dD.html' % (genericsettings.pprldmany_group_file_name, 2) links += addLink(currentDir, folder, fileName, 'Runtime distribution plots by group (per dimension)', ignoreFileExists=ignoreFileExists) @@ -255,8 +256,6 @@ def save_single_functions_html(filename, f.write(captionStringFormat % '##bbobppscatterlegend##') names = ['pprldistr', 'pplogabs'] - # dimensions = [5, 20] # Wassim: now done earlier depending on genericsettings.isLargeScale - # dimensions = [40, 80] # Wassim: for large scale headerECDF = 'Empirical cumulative distribution functions (ECDFs) per function group' f.write("\n

%s

\n" % headerECDF) From 1fbd311b452f81d6ed35fbddc899cb0daf4185b5 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 17 May 2016 18:17:15 +0200 Subject: [PATCH 201/446] created LargeScaleTestbed class --- .../bbob_pproc/testbedsettings.py | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 8f6e56d15..5064a8c6b 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -8,6 +8,7 @@ all_scenarios = [scenario_rlbased, scenario_fixed, scenario_biobjfixed] testbed_name_single = 'bbob' +testbed_name_largescale = 'bbob-largescale' testbed_name_bi = 'bbob-biobj' default_testbed_single = 'GECCOBBOBTestbed' @@ -142,4 +143,48 @@ def __init__(self, targetValues): # expensive optimization settings: self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting self.pptable2_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting - self.pptables_target_runlengths = [2, 10, 50] # used in config for expensive setting \ No newline at end of file + self.pptables_target_runlengths = [2, 10, 50] # used in config for expensive setting + + +class LargeScaleTestbed(Testbed): + """First large scale Testbed + """ + + def __init__(self, targetValues): + # TODO: should become a function, as low_budget is a display setting + # not a testbed setting + # only the short info, how to deal with both infos? + self.info_filename = 'GECCOBBOBbenchmarkinfos.txt' + self.name = testbed_name_largescale + self.short_names = {} + self.hardesttargetlatex = '10^{-8}' # used for ppfigs, pptable, pptable2, and pptables + self.ppfigs_ftarget = 1e-8 + self.ppfigdim_target_values = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8)) # possibly changed in config + self.pprldistr_target_values = targetValues((10., 1e-1, 1e-4, 1e-8)) # possibly changed in config + self.pprldmany_target_values = targetValues(10 ** np.arange(2, -8.2, -0.2)) # possibly changed in config + self.pprldmany_target_range_latex = '$10^{[-8..2]}$' + self.ppscatter_target_values = targetValues(np.logspace(-8, 2, 46)) + self.rldValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # possibly changed in config + self.ppfvdistr_min_target = 1e-8 + self.functions_with_legend = (1, 24, 101, 130) + self.number_of_functions = 24 + self.pptable_ftarget = 1e-8 # value for determining the success ratio in all tables + self.pptable_targetsOfInterest = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7)) # for pptable and pptables + self.pptable2_targetsOfInterest = targetValues((1e+1, 1e-1, 1e-3, 1e-5, 1e-7)) # used for pptable2 + self.pptablemany_targetsOfInterest = self.pptable_targetsOfInterest + self.scenario = scenario_fixed + self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' + self.short_names = get_short_names(get_benchmarks_short_infos(False)) + # expensive optimization settings: + self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting + self.pptable2_target_runlengths = self.pptable_target_runlengths # [0.5, 2, 10, 50] # used in config for expensive setting + self.pptables_target_runlengths = self.pptable_target_runlengths # used in config for expensive setting + + # Wassim: added the following + self.dimensions_to_display = [20, 40, 80, 160, 320, 640] + self.tabDimsOfInterest = [80, 320] + self.rldDimsOfInterest = [80, 320] + self.htmlDimsOfInterest = [80, 320] + + + From c3db7836e597034b5c707008e5ffbb44c26a19f3 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Tue, 17 May 2016 18:17:15 +0200 Subject: [PATCH 202/446] created LargeScaleTestbed class --- .../bbob_pproc/testbedsettings.py | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 8f6e56d15..5064a8c6b 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -8,6 +8,7 @@ all_scenarios = [scenario_rlbased, scenario_fixed, scenario_biobjfixed] testbed_name_single = 'bbob' +testbed_name_largescale = 'bbob-largescale' testbed_name_bi = 'bbob-biobj' default_testbed_single = 'GECCOBBOBTestbed' @@ -142,4 +143,48 @@ def __init__(self, targetValues): # expensive optimization settings: self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting self.pptable2_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting - self.pptables_target_runlengths = [2, 10, 50] # used in config for expensive setting \ No newline at end of file + self.pptables_target_runlengths = [2, 10, 50] # used in config for expensive setting + + +class LargeScaleTestbed(Testbed): + """First large scale Testbed + """ + + def __init__(self, targetValues): + # TODO: should become a function, as low_budget is a display setting + # not a testbed setting + # only the short info, how to deal with both infos? + self.info_filename = 'GECCOBBOBbenchmarkinfos.txt' + self.name = testbed_name_largescale + self.short_names = {} + self.hardesttargetlatex = '10^{-8}' # used for ppfigs, pptable, pptable2, and pptables + self.ppfigs_ftarget = 1e-8 + self.ppfigdim_target_values = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8)) # possibly changed in config + self.pprldistr_target_values = targetValues((10., 1e-1, 1e-4, 1e-8)) # possibly changed in config + self.pprldmany_target_values = targetValues(10 ** np.arange(2, -8.2, -0.2)) # possibly changed in config + self.pprldmany_target_range_latex = '$10^{[-8..2]}$' + self.ppscatter_target_values = targetValues(np.logspace(-8, 2, 46)) + self.rldValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # possibly changed in config + self.ppfvdistr_min_target = 1e-8 + self.functions_with_legend = (1, 24, 101, 130) + self.number_of_functions = 24 + self.pptable_ftarget = 1e-8 # value for determining the success ratio in all tables + self.pptable_targetsOfInterest = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7)) # for pptable and pptables + self.pptable2_targetsOfInterest = targetValues((1e+1, 1e-1, 1e-3, 1e-5, 1e-7)) # used for pptable2 + self.pptablemany_targetsOfInterest = self.pptable_targetsOfInterest + self.scenario = scenario_fixed + self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' + self.short_names = get_short_names(get_benchmarks_short_infos(False)) + # expensive optimization settings: + self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting + self.pptable2_target_runlengths = self.pptable_target_runlengths # [0.5, 2, 10, 50] # used in config for expensive setting + self.pptables_target_runlengths = self.pptable_target_runlengths # used in config for expensive setting + + # Wassim: added the following + self.dimensions_to_display = [20, 40, 80, 160, 320, 640] + self.tabDimsOfInterest = [80, 320] + self.rldDimsOfInterest = [80, 320] + self.htmlDimsOfInterest = [80, 320] + + + From 0f0bbce09d47a8efa473573e8b793b186c1bedca Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 18 May 2016 19:08:39 +0200 Subject: [PATCH 203/446] now the large-scale data-set lists correctly load the LargeScaleTestbed class --- code-postprocessing/bbob_pproc/ppfigdim.py | 4 ++- code-postprocessing/bbob_pproc/pprldistr.py | 5 +++- code-postprocessing/bbob_pproc/pproc.py | 25 +++++++++++++++---- code-postprocessing/bbob_pproc/pptable.py | 4 ++- code-postprocessing/bbob_pproc/rungeneric1.py | 4 ++- .../bbob_pproc/testbedsettings.py | 5 +++- 6 files changed, 37 insertions(+), 10 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfigdim.py b/code-postprocessing/bbob_pproc/ppfigdim.py index c8049f57b..538a9c745 100644 --- a/code-postprocessing/bbob_pproc/ppfigdim.py +++ b/code-postprocessing/bbob_pproc/ppfigdim.py @@ -142,7 +142,9 @@ def scaling_figure_caption(): if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: # NOTE: no runlength-based targets supported yet figure_caption = scaling_figure_caption_fixed.replace('\\fopt', '\\hvref') - elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: + elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single \ + or isinstance(testbedsettings.current_testbed, testbedsettings.SingleObjectiveTestbed): + # Wassim: added a comparison to the SingleObjectiveTestbed if genericsettings.runlength_based_targets: figure_caption = scaling_figure_caption_rlbased else: diff --git a/code-postprocessing/bbob_pproc/pprldistr.py b/code-postprocessing/bbob_pproc/pprldistr.py index 040ae0228..a7cf8f1f9 100644 --- a/code-postprocessing/bbob_pproc/pprldistr.py +++ b/code-postprocessing/bbob_pproc/pprldistr.py @@ -171,9 +171,12 @@ def caption_single(): caption_single_rlbased = caption_part_one + caption_left_rlbased_targets + caption_wrap_up + caption_right if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: + # Wassim: why if/else, isn't the purpose of current_testbed to avoir this!!! # NOTE: no runlength-based targets supported yet figure_caption = caption_single_fixed.replace('\\fopt', '\\hvref') - elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: + elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single \ + or isinstance(testbedsettings.current_testbed, testbedsettings.SingleObjectiveTestbed): + # Wassim: added a comparison to the SingleObjectiveTestbed if genericsettings.runlength_based_targets: figure_caption = caption_single_rlbased else: diff --git a/code-postprocessing/bbob_pproc/pproc.py b/code-postprocessing/bbob_pproc/pproc.py index ae924edb9..f0c5a81a5 100644 --- a/code-postprocessing/bbob_pproc/pproc.py +++ b/code-postprocessing/bbob_pproc/pproc.py @@ -667,6 +667,8 @@ def testbed_name(self): if not testbed: if self.isBiobjective(): testbed = testbedsettings.default_testbed_bi + elif self.dim > 40: #Wassim: TODO: the suite should be transmitted in the data files, not this way + testbed = testbedsettings.default_testbed_largescale else: testbed = testbedsettings.default_testbed_single @@ -872,13 +874,17 @@ def _cut_data(self): """ - if not testbedsettings.current_testbed: + # Wassim: this should be done on the dataSetList level, and here only if it's not yet set + if not testbedsettings.current_testbed or \ + isinstance(testbedsettings.current_testbed, testbedsettings.GECCOBBOBTestbed): testbedsettings.load_current_testbed(self.testbed_name(), TargetValues) - if isinstance(testbedsettings.current_testbed, testbedsettings.GECCOBBOBTestbed): + if isinstance(testbedsettings.current_testbed, testbedsettings.GECCOBBOBTestbed) or \ + isinstance(testbedsettings.current_testbed, testbedsettings.SingleObjectiveTestbed): Ndata = np.size(self.evals, 0) i = Ndata while i > 1 and not self.isBiobjective() and self.evals[i-1][0] <= self.precision: + #Wassim: can GECCOBBOBTestbed be biObjective?! i -= 1 i += 1 if i < Ndata: @@ -1507,7 +1513,7 @@ def __init__(self, args=[], verbose=False, check_data_type=True): warnings.warn(s) print s self.sort() - + self.current_testbed = testbedsettings.current_testbed #Wassim: to be sure data_consistent = True for ds in self: data_consistent = data_consistent and ds.consistency_check() @@ -1528,7 +1534,7 @@ def processIndexFile(self, indexFile, verbose=True): header = '' while True: try: - if 'indicator' not in header: + if 'indicator' not in header: #Wassim: not very generic! header = f.next() while not header.strip(): # remove blank lines header = f.next() @@ -1545,7 +1551,16 @@ def processIndexFile(self, indexFile, verbose=True): data_file_names.append(data) nbLine += 3 #TODO: check that something is not wrong with the 3 lines. - ds = DataSet(header, comment, data, indexFile, verbose) + ds = DataSet(header, comment, data, indexFile, verbose) + #print + #print "dsList" + #print testbedsettings.current_testbed + #print "dsList" + # Wassim: testbedsettings.current_testbed is now set here + #if not testbedsettings.current_testbed or \ + # isinstance(testbedsettings.current_testbed, testbedsettings.GECCOBBOBTestbed): + # testbedsettings.load_current_testbed(ds.testbed_name(), TargetValues) + # if len(ds.instancenumbers) > 0: self.append(ds) except StopIteration: diff --git a/code-postprocessing/bbob_pproc/pptable.py b/code-postprocessing/bbob_pproc/pptable.py index cfc65b336..f8d7a09e1 100644 --- a/code-postprocessing/bbob_pproc/pptable.py +++ b/code-postprocessing/bbob_pproc/pptable.py @@ -93,7 +93,9 @@ def get_table_caption(): The median number of conducted function evaluations is additionally given in \textit{italics}, if the target in the last column was never reached. """ - elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: + elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single \ + or isinstance(testbedsettings.current_testbed, testbedsettings.SingleObjectiveTestbed): + # Wassim: added a comparison to the SingleObjectiveTestbed if genericsettings.runlength_based_targets: table_caption = table_caption_one + table_caption_two2 + table_caption_rest else: diff --git a/code-postprocessing/bbob_pproc/rungeneric1.py b/code-postprocessing/bbob_pproc/rungeneric1.py index 2109fb3b1..afde3c8f9 100644 --- a/code-postprocessing/bbob_pproc/rungeneric1.py +++ b/code-postprocessing/bbob_pproc/rungeneric1.py @@ -296,7 +296,9 @@ def main(argv=None): from . import config config.target_values(genericsettings.isExpensive) - config.config(dsList[0].testbed_name()) + #config.config(dsList[0].testbed_name()) #Wassim: why configure only on the lowest dim!!!!!!! + config.config(dsList.dictByDim()[max(dsList.dictByDim().keys())][0].testbed_name()) + # Wassim: now checkes the highest dimension testbed instead of the first for eventual large-scale scenarii if (genericsettings.verbose): for i in dsList: diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 5064a8c6b..2485ebe5c 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -12,6 +12,7 @@ testbed_name_bi = 'bbob-biobj' default_testbed_single = 'GECCOBBOBTestbed' +default_testbed_largescale = 'LargeScaleTestbed' default_testbed_bi = 'GECCOBiObjBBOBTestbed' current_testbed = None @@ -72,6 +73,8 @@ def info(self, fun_number=None): except ValueError: continue # ignore annotations +class SingleObjectiveTestbed(Testbed): + pass class GECCOBBOBTestbed(Testbed): """Testbed used in the GECCO BBOB workshops 2009, 2010, 2012, 2013, 2015. @@ -146,7 +149,7 @@ def __init__(self, targetValues): self.pptables_target_runlengths = [2, 10, 50] # used in config for expensive setting -class LargeScaleTestbed(Testbed): +class LargeScaleTestbed(SingleObjectiveTestbed): """First large scale Testbed """ From 64e5831063093075026c80e69615ce9745a92f45 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 18 May 2016 19:08:39 +0200 Subject: [PATCH 204/446] now the large-scale data-set lists correctly load the LargeScaleTestbed class --- code-postprocessing/bbob_pproc/ppfigdim.py | 4 ++- code-postprocessing/bbob_pproc/pprldistr.py | 5 +++- code-postprocessing/bbob_pproc/pproc.py | 25 +++++++++++++++---- code-postprocessing/bbob_pproc/pptable.py | 4 ++- code-postprocessing/bbob_pproc/rungeneric1.py | 4 ++- .../bbob_pproc/testbedsettings.py | 5 +++- 6 files changed, 37 insertions(+), 10 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfigdim.py b/code-postprocessing/bbob_pproc/ppfigdim.py index c8049f57b..538a9c745 100644 --- a/code-postprocessing/bbob_pproc/ppfigdim.py +++ b/code-postprocessing/bbob_pproc/ppfigdim.py @@ -142,7 +142,9 @@ def scaling_figure_caption(): if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: # NOTE: no runlength-based targets supported yet figure_caption = scaling_figure_caption_fixed.replace('\\fopt', '\\hvref') - elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: + elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single \ + or isinstance(testbedsettings.current_testbed, testbedsettings.SingleObjectiveTestbed): + # Wassim: added a comparison to the SingleObjectiveTestbed if genericsettings.runlength_based_targets: figure_caption = scaling_figure_caption_rlbased else: diff --git a/code-postprocessing/bbob_pproc/pprldistr.py b/code-postprocessing/bbob_pproc/pprldistr.py index 040ae0228..a7cf8f1f9 100644 --- a/code-postprocessing/bbob_pproc/pprldistr.py +++ b/code-postprocessing/bbob_pproc/pprldistr.py @@ -171,9 +171,12 @@ def caption_single(): caption_single_rlbased = caption_part_one + caption_left_rlbased_targets + caption_wrap_up + caption_right if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: + # Wassim: why if/else, isn't the purpose of current_testbed to avoir this!!! # NOTE: no runlength-based targets supported yet figure_caption = caption_single_fixed.replace('\\fopt', '\\hvref') - elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: + elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single \ + or isinstance(testbedsettings.current_testbed, testbedsettings.SingleObjectiveTestbed): + # Wassim: added a comparison to the SingleObjectiveTestbed if genericsettings.runlength_based_targets: figure_caption = caption_single_rlbased else: diff --git a/code-postprocessing/bbob_pproc/pproc.py b/code-postprocessing/bbob_pproc/pproc.py index ae924edb9..f0c5a81a5 100644 --- a/code-postprocessing/bbob_pproc/pproc.py +++ b/code-postprocessing/bbob_pproc/pproc.py @@ -667,6 +667,8 @@ def testbed_name(self): if not testbed: if self.isBiobjective(): testbed = testbedsettings.default_testbed_bi + elif self.dim > 40: #Wassim: TODO: the suite should be transmitted in the data files, not this way + testbed = testbedsettings.default_testbed_largescale else: testbed = testbedsettings.default_testbed_single @@ -872,13 +874,17 @@ def _cut_data(self): """ - if not testbedsettings.current_testbed: + # Wassim: this should be done on the dataSetList level, and here only if it's not yet set + if not testbedsettings.current_testbed or \ + isinstance(testbedsettings.current_testbed, testbedsettings.GECCOBBOBTestbed): testbedsettings.load_current_testbed(self.testbed_name(), TargetValues) - if isinstance(testbedsettings.current_testbed, testbedsettings.GECCOBBOBTestbed): + if isinstance(testbedsettings.current_testbed, testbedsettings.GECCOBBOBTestbed) or \ + isinstance(testbedsettings.current_testbed, testbedsettings.SingleObjectiveTestbed): Ndata = np.size(self.evals, 0) i = Ndata while i > 1 and not self.isBiobjective() and self.evals[i-1][0] <= self.precision: + #Wassim: can GECCOBBOBTestbed be biObjective?! i -= 1 i += 1 if i < Ndata: @@ -1507,7 +1513,7 @@ def __init__(self, args=[], verbose=False, check_data_type=True): warnings.warn(s) print s self.sort() - + self.current_testbed = testbedsettings.current_testbed #Wassim: to be sure data_consistent = True for ds in self: data_consistent = data_consistent and ds.consistency_check() @@ -1528,7 +1534,7 @@ def processIndexFile(self, indexFile, verbose=True): header = '' while True: try: - if 'indicator' not in header: + if 'indicator' not in header: #Wassim: not very generic! header = f.next() while not header.strip(): # remove blank lines header = f.next() @@ -1545,7 +1551,16 @@ def processIndexFile(self, indexFile, verbose=True): data_file_names.append(data) nbLine += 3 #TODO: check that something is not wrong with the 3 lines. - ds = DataSet(header, comment, data, indexFile, verbose) + ds = DataSet(header, comment, data, indexFile, verbose) + #print + #print "dsList" + #print testbedsettings.current_testbed + #print "dsList" + # Wassim: testbedsettings.current_testbed is now set here + #if not testbedsettings.current_testbed or \ + # isinstance(testbedsettings.current_testbed, testbedsettings.GECCOBBOBTestbed): + # testbedsettings.load_current_testbed(ds.testbed_name(), TargetValues) + # if len(ds.instancenumbers) > 0: self.append(ds) except StopIteration: diff --git a/code-postprocessing/bbob_pproc/pptable.py b/code-postprocessing/bbob_pproc/pptable.py index cfc65b336..f8d7a09e1 100644 --- a/code-postprocessing/bbob_pproc/pptable.py +++ b/code-postprocessing/bbob_pproc/pptable.py @@ -93,7 +93,9 @@ def get_table_caption(): The median number of conducted function evaluations is additionally given in \textit{italics}, if the target in the last column was never reached. """ - elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: + elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single \ + or isinstance(testbedsettings.current_testbed, testbedsettings.SingleObjectiveTestbed): + # Wassim: added a comparison to the SingleObjectiveTestbed if genericsettings.runlength_based_targets: table_caption = table_caption_one + table_caption_two2 + table_caption_rest else: diff --git a/code-postprocessing/bbob_pproc/rungeneric1.py b/code-postprocessing/bbob_pproc/rungeneric1.py index 2109fb3b1..afde3c8f9 100644 --- a/code-postprocessing/bbob_pproc/rungeneric1.py +++ b/code-postprocessing/bbob_pproc/rungeneric1.py @@ -296,7 +296,9 @@ def main(argv=None): from . import config config.target_values(genericsettings.isExpensive) - config.config(dsList[0].testbed_name()) + #config.config(dsList[0].testbed_name()) #Wassim: why configure only on the lowest dim!!!!!!! + config.config(dsList.dictByDim()[max(dsList.dictByDim().keys())][0].testbed_name()) + # Wassim: now checkes the highest dimension testbed instead of the first for eventual large-scale scenarii if (genericsettings.verbose): for i in dsList: diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 5064a8c6b..2485ebe5c 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -12,6 +12,7 @@ testbed_name_bi = 'bbob-biobj' default_testbed_single = 'GECCOBBOBTestbed' +default_testbed_largescale = 'LargeScaleTestbed' default_testbed_bi = 'GECCOBiObjBBOBTestbed' current_testbed = None @@ -72,6 +73,8 @@ def info(self, fun_number=None): except ValueError: continue # ignore annotations +class SingleObjectiveTestbed(Testbed): + pass class GECCOBBOBTestbed(Testbed): """Testbed used in the GECCO BBOB workshops 2009, 2010, 2012, 2013, 2015. @@ -146,7 +149,7 @@ def __init__(self, targetValues): self.pptables_target_runlengths = [2, 10, 50] # used in config for expensive setting -class LargeScaleTestbed(Testbed): +class LargeScaleTestbed(SingleObjectiveTestbed): """First large scale Testbed """ From 7381fd17c8d1bde4783ec510e8eb543dcbca8aa5 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 10:27:40 +0200 Subject: [PATCH 205/446] now, the attributes of the GECCOBBOBTestBed are set in the mother class SingleObjectiveTestbed --- code-postprocessing/bbob_pproc/ppfigdim.py | 3 +- .../bbob_pproc/testbedsettings.py | 95 ++++++++----------- 2 files changed, 38 insertions(+), 60 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfigdim.py b/code-postprocessing/bbob_pproc/ppfigdim.py index 538a9c745..3879ea243 100644 --- a/code-postprocessing/bbob_pproc/ppfigdim.py +++ b/code-postprocessing/bbob_pproc/ppfigdim.py @@ -210,8 +210,7 @@ def beautify(axesLabel=True): # Wassim: dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls - - dimticklist = dimensions + dimticklist = dimensions dimannlist = dimensions # TODO: All these should depend on one given input (xlim, ylim) diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 2485ebe5c..149c84622 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -74,41 +74,47 @@ def info(self, fun_number=None): continue # ignore annotations class SingleObjectiveTestbed(Testbed): - pass + def __init__(self, targetValues): + # TODO: should become a function, as low_budget is a display setting + # not a testbed setting + # only the short info, how to deal with both infos? + self.info_filename = 'GECCOBBOBbenchmarkinfos.txt' + self.name = testbed_name_single + self.short_names = {} + self.hardesttargetlatex = '10^{-8}' # used for ppfigs, pptable, pptable2, and pptables + self.ppfigs_ftarget = 1e-8 + self.ppfigdim_target_values = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8)) # possibly changed in config + self.pprldistr_target_values = targetValues((10., 1e-1, 1e-4, 1e-8)) # possibly changed in config + self.pprldmany_target_values = targetValues(10 ** np.arange(2, -8.2, -0.2)) # possibly changed in config + self.pprldmany_target_range_latex = '$10^{[-8..2]}$' + self.ppscatter_target_values = targetValues(np.logspace(-8, 2, 46)) + self.rldValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # possibly changed in config + self.ppfvdistr_min_target = 1e-8 + self.functions_with_legend = (1, 24, 101, 130) + self.number_of_functions = 24 + self.pptable_ftarget = 1e-8 # value for determining the success ratio in all tables + self.pptable_targetsOfInterest = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7)) # for pptable and pptables + self.pptable2_targetsOfInterest = targetValues((1e+1, 1e-1, 1e-3, 1e-5, 1e-7)) # used for pptable2 + self.pptablemany_targetsOfInterest = self.pptable_targetsOfInterest + self.scenario = scenario_fixed + self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' + self.short_names = get_short_names(get_benchmarks_short_infos(False)) + # expensive optimization settings: + self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting + self.pptable2_target_runlengths = self.pptable_target_runlengths # [0.5, 2, 10, 50] # used in config for expensive setting + self.pptables_target_runlengths = self.pptable_target_runlengths # used in config for expensive setting -class GECCOBBOBTestbed(Testbed): + +class GECCOBBOBTestbed(SingleObjectiveTestbed): #Wassim: now inherits from SingleObjectiveTestbed """Testbed used in the GECCO BBOB workshops 2009, 2010, 2012, 2013, 2015. """ def __init__(self, targetValues): - # TODO: should become a function, as low_budget is a display setting - # not a testbed setting - # only the short info, how to deal with both infos? - self.info_filename = 'GECCOBBOBbenchmarkinfos.txt' - self.name = testbed_name_single - self.short_names = {} - self.hardesttargetlatex = '10^{-8}' # used for ppfigs, pptable, pptable2, and pptables - self.ppfigs_ftarget = 1e-8 - self.ppfigdim_target_values = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8)) # possibly changed in config - self.pprldistr_target_values = targetValues((10., 1e-1, 1e-4, 1e-8)) # possibly changed in config - self.pprldmany_target_values = targetValues(10 ** np.arange(2, -8.2, -0.2)) # possibly changed in config - self.pprldmany_target_range_latex = '$10^{[-8..2]}$' - self.ppscatter_target_values = targetValues(np.logspace(-8, 2, 46)) - self.rldValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # possibly changed in config - self.ppfvdistr_min_target = 1e-8 - self.functions_with_legend = (1, 24, 101, 130) - self.number_of_functions = 24 - self.pptable_ftarget = 1e-8 # value for determining the success ratio in all tables - self.pptable_targetsOfInterest = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7)) # for pptable and pptables - self.pptable2_targetsOfInterest = targetValues((1e+1, 1e-1, 1e-3, 1e-5, 1e-7)) # used for pptable2 - self.pptablemany_targetsOfInterest = self.pptable_targetsOfInterest - self.scenario = scenario_fixed - self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' - self.short_names = get_short_names(get_benchmarks_short_infos(False)) - # expensive optimization settings: - self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting - self.pptable2_target_runlengths = self.pptable_target_runlengths # [0.5, 2, 10, 50] # used in config for expensive setting - self.pptables_target_runlengths = self.pptable_target_runlengths # used in config for expensive setting + super(GECCOBBOBTestbed, self).__init__(targetValues) + self.dimensions_to_display = [2, 3, 5, 10, 20, 40] + self.tabDimsOfInterest = [5, 20] + self.rldDimsOfInterest = [5, 20] + self.htmlDimsOfInterest = [5, 20] class GECCOBiObjBBOBTestbed(Testbed): @@ -154,34 +160,7 @@ class LargeScaleTestbed(SingleObjectiveTestbed): """ def __init__(self, targetValues): - # TODO: should become a function, as low_budget is a display setting - # not a testbed setting - # only the short info, how to deal with both infos? - self.info_filename = 'GECCOBBOBbenchmarkinfos.txt' - self.name = testbed_name_largescale - self.short_names = {} - self.hardesttargetlatex = '10^{-8}' # used for ppfigs, pptable, pptable2, and pptables - self.ppfigs_ftarget = 1e-8 - self.ppfigdim_target_values = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8)) # possibly changed in config - self.pprldistr_target_values = targetValues((10., 1e-1, 1e-4, 1e-8)) # possibly changed in config - self.pprldmany_target_values = targetValues(10 ** np.arange(2, -8.2, -0.2)) # possibly changed in config - self.pprldmany_target_range_latex = '$10^{[-8..2]}$' - self.ppscatter_target_values = targetValues(np.logspace(-8, 2, 46)) - self.rldValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # possibly changed in config - self.ppfvdistr_min_target = 1e-8 - self.functions_with_legend = (1, 24, 101, 130) - self.number_of_functions = 24 - self.pptable_ftarget = 1e-8 # value for determining the success ratio in all tables - self.pptable_targetsOfInterest = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7)) # for pptable and pptables - self.pptable2_targetsOfInterest = targetValues((1e+1, 1e-1, 1e-3, 1e-5, 1e-7)) # used for pptable2 - self.pptablemany_targetsOfInterest = self.pptable_targetsOfInterest - self.scenario = scenario_fixed - self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' - self.short_names = get_short_names(get_benchmarks_short_infos(False)) - # expensive optimization settings: - self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting - self.pptable2_target_runlengths = self.pptable_target_runlengths # [0.5, 2, 10, 50] # used in config for expensive setting - self.pptables_target_runlengths = self.pptable_target_runlengths # used in config for expensive setting + super(LargeScaleTestbed, self).__init__(targetValues) # Wassim: added the following self.dimensions_to_display = [20, 40, 80, 160, 320, 640] From 8da941e39764b2f316282e25ba422f8a8fc5de49 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 10:27:40 +0200 Subject: [PATCH 206/446] now, the attributes of the GECCOBBOBTestBed are set in the mother class SingleObjectiveTestbed --- code-postprocessing/bbob_pproc/ppfigdim.py | 3 +- .../bbob_pproc/testbedsettings.py | 95 ++++++++----------- 2 files changed, 38 insertions(+), 60 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfigdim.py b/code-postprocessing/bbob_pproc/ppfigdim.py index 538a9c745..3879ea243 100644 --- a/code-postprocessing/bbob_pproc/ppfigdim.py +++ b/code-postprocessing/bbob_pproc/ppfigdim.py @@ -210,8 +210,7 @@ def beautify(axesLabel=True): # Wassim: dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls - - dimticklist = dimensions + dimticklist = dimensions dimannlist = dimensions # TODO: All these should depend on one given input (xlim, ylim) diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 2485ebe5c..149c84622 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -74,41 +74,47 @@ def info(self, fun_number=None): continue # ignore annotations class SingleObjectiveTestbed(Testbed): - pass + def __init__(self, targetValues): + # TODO: should become a function, as low_budget is a display setting + # not a testbed setting + # only the short info, how to deal with both infos? + self.info_filename = 'GECCOBBOBbenchmarkinfos.txt' + self.name = testbed_name_single + self.short_names = {} + self.hardesttargetlatex = '10^{-8}' # used for ppfigs, pptable, pptable2, and pptables + self.ppfigs_ftarget = 1e-8 + self.ppfigdim_target_values = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8)) # possibly changed in config + self.pprldistr_target_values = targetValues((10., 1e-1, 1e-4, 1e-8)) # possibly changed in config + self.pprldmany_target_values = targetValues(10 ** np.arange(2, -8.2, -0.2)) # possibly changed in config + self.pprldmany_target_range_latex = '$10^{[-8..2]}$' + self.ppscatter_target_values = targetValues(np.logspace(-8, 2, 46)) + self.rldValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # possibly changed in config + self.ppfvdistr_min_target = 1e-8 + self.functions_with_legend = (1, 24, 101, 130) + self.number_of_functions = 24 + self.pptable_ftarget = 1e-8 # value for determining the success ratio in all tables + self.pptable_targetsOfInterest = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7)) # for pptable and pptables + self.pptable2_targetsOfInterest = targetValues((1e+1, 1e-1, 1e-3, 1e-5, 1e-7)) # used for pptable2 + self.pptablemany_targetsOfInterest = self.pptable_targetsOfInterest + self.scenario = scenario_fixed + self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' + self.short_names = get_short_names(get_benchmarks_short_infos(False)) + # expensive optimization settings: + self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting + self.pptable2_target_runlengths = self.pptable_target_runlengths # [0.5, 2, 10, 50] # used in config for expensive setting + self.pptables_target_runlengths = self.pptable_target_runlengths # used in config for expensive setting -class GECCOBBOBTestbed(Testbed): + +class GECCOBBOBTestbed(SingleObjectiveTestbed): #Wassim: now inherits from SingleObjectiveTestbed """Testbed used in the GECCO BBOB workshops 2009, 2010, 2012, 2013, 2015. """ def __init__(self, targetValues): - # TODO: should become a function, as low_budget is a display setting - # not a testbed setting - # only the short info, how to deal with both infos? - self.info_filename = 'GECCOBBOBbenchmarkinfos.txt' - self.name = testbed_name_single - self.short_names = {} - self.hardesttargetlatex = '10^{-8}' # used for ppfigs, pptable, pptable2, and pptables - self.ppfigs_ftarget = 1e-8 - self.ppfigdim_target_values = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8)) # possibly changed in config - self.pprldistr_target_values = targetValues((10., 1e-1, 1e-4, 1e-8)) # possibly changed in config - self.pprldmany_target_values = targetValues(10 ** np.arange(2, -8.2, -0.2)) # possibly changed in config - self.pprldmany_target_range_latex = '$10^{[-8..2]}$' - self.ppscatter_target_values = targetValues(np.logspace(-8, 2, 46)) - self.rldValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # possibly changed in config - self.ppfvdistr_min_target = 1e-8 - self.functions_with_legend = (1, 24, 101, 130) - self.number_of_functions = 24 - self.pptable_ftarget = 1e-8 # value for determining the success ratio in all tables - self.pptable_targetsOfInterest = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7)) # for pptable and pptables - self.pptable2_targetsOfInterest = targetValues((1e+1, 1e-1, 1e-3, 1e-5, 1e-7)) # used for pptable2 - self.pptablemany_targetsOfInterest = self.pptable_targetsOfInterest - self.scenario = scenario_fixed - self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' - self.short_names = get_short_names(get_benchmarks_short_infos(False)) - # expensive optimization settings: - self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting - self.pptable2_target_runlengths = self.pptable_target_runlengths # [0.5, 2, 10, 50] # used in config for expensive setting - self.pptables_target_runlengths = self.pptable_target_runlengths # used in config for expensive setting + super(GECCOBBOBTestbed, self).__init__(targetValues) + self.dimensions_to_display = [2, 3, 5, 10, 20, 40] + self.tabDimsOfInterest = [5, 20] + self.rldDimsOfInterest = [5, 20] + self.htmlDimsOfInterest = [5, 20] class GECCOBiObjBBOBTestbed(Testbed): @@ -154,34 +160,7 @@ class LargeScaleTestbed(SingleObjectiveTestbed): """ def __init__(self, targetValues): - # TODO: should become a function, as low_budget is a display setting - # not a testbed setting - # only the short info, how to deal with both infos? - self.info_filename = 'GECCOBBOBbenchmarkinfos.txt' - self.name = testbed_name_largescale - self.short_names = {} - self.hardesttargetlatex = '10^{-8}' # used for ppfigs, pptable, pptable2, and pptables - self.ppfigs_ftarget = 1e-8 - self.ppfigdim_target_values = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8)) # possibly changed in config - self.pprldistr_target_values = targetValues((10., 1e-1, 1e-4, 1e-8)) # possibly changed in config - self.pprldmany_target_values = targetValues(10 ** np.arange(2, -8.2, -0.2)) # possibly changed in config - self.pprldmany_target_range_latex = '$10^{[-8..2]}$' - self.ppscatter_target_values = targetValues(np.logspace(-8, 2, 46)) - self.rldValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # possibly changed in config - self.ppfvdistr_min_target = 1e-8 - self.functions_with_legend = (1, 24, 101, 130) - self.number_of_functions = 24 - self.pptable_ftarget = 1e-8 # value for determining the success ratio in all tables - self.pptable_targetsOfInterest = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7)) # for pptable and pptables - self.pptable2_targetsOfInterest = targetValues((1e+1, 1e-1, 1e-3, 1e-5, 1e-7)) # used for pptable2 - self.pptablemany_targetsOfInterest = self.pptable_targetsOfInterest - self.scenario = scenario_fixed - self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' - self.short_names = get_short_names(get_benchmarks_short_infos(False)) - # expensive optimization settings: - self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting - self.pptable2_target_runlengths = self.pptable_target_runlengths # [0.5, 2, 10, 50] # used in config for expensive setting - self.pptables_target_runlengths = self.pptable_target_runlengths # used in config for expensive setting + super(LargeScaleTestbed, self).__init__(targetValues) # Wassim: added the following self.dimensions_to_display = [20, 40, 80, 160, 320, 640] From f0435d99b31625a9d7f0edbe6e026388ab652c4e Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 10:41:07 +0200 Subject: [PATCH 207/446] added first/last_function_number to largeScaleTestBed and first_dimension to all testbeds --- .../bbob_pproc/testbedsettings.py | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 0a8fe6880..8145be7a4 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -92,6 +92,8 @@ def __init__(self, targetValues): self.rldValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # possibly changed in config self.ppfvdistr_min_target = 1e-8 self.functions_with_legend = (1, 24, 101, 130) + self.first_function_number = 1 + self.last_function_number = 24 self.number_of_functions = 24 self.pptable_ftarget = 1e-8 # value for determining the success ratio in all tables self.pptable_targetsOfInterest = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7)) # for pptable and pptables @@ -112,6 +114,7 @@ class GECCOBBOBTestbed(SingleObjectiveTestbed): #Wassim: now inherits from Singl def __init__(self, targetValues): super(GECCOBBOBTestbed, self).__init__(targetValues) + self.first_dimension = 2 self.dimensions_to_display = [2, 3, 5, 10, 20, 40] self.tabDimsOfInterest = [5, 20] self.rldDimsOfInterest = [5, 20] @@ -126,11 +129,25 @@ def __init__(self, target_values): super(GECCOBBOBNoisyTestbed, self).__init__(target_values) # Until we clean the code which uses this name we need to use it also here. + self.first_dimension = 2 self.name = testbed_name_single self.functions_with_legend = (101, 130) self.first_function_number = 101 self.last_function_number = 130 +class LargeScaleTestbed(SingleObjectiveTestbed): + """First large scale Testbed + """ + + def __init__(self, targetValues): + super(LargeScaleTestbed, self).__init__(targetValues) + self.first_dimension = 2 + # Wassim: added the following + self.dimensions_to_display = [20, 40, 80, 160, 320, 640] + self.tabDimsOfInterest = [80, 320] + self.rldDimsOfInterest = [80, 320] + self.htmlDimsOfInterest = [80, 320] + class GECCOBiObjBBOBTestbed(Testbed): """Testbed used in the GECCO biobjective BBOB workshop 2016. @@ -171,18 +188,7 @@ def __init__(self, targetValues): self.pptables_target_runlengths = [2, 10, 50] # used in config for expensive setting -class LargeScaleTestbed(SingleObjectiveTestbed): - """First large scale Testbed - """ - - def __init__(self, targetValues): - super(LargeScaleTestbed, self).__init__(targetValues) - # Wassim: added the following - self.dimensions_to_display = [20, 40, 80, 160, 320, 640] - self.tabDimsOfInterest = [80, 320] - self.rldDimsOfInterest = [80, 320] - self.htmlDimsOfInterest = [80, 320] From 57c11d6a797fde5cb46fcde94a70c16b2921f315 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 10:41:07 +0200 Subject: [PATCH 208/446] added first/last_function_number to largeScaleTestBed and first_dimension to all testbeds --- .../bbob_pproc/testbedsettings.py | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 0a8fe6880..8145be7a4 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -92,6 +92,8 @@ def __init__(self, targetValues): self.rldValsOfInterest = (10, 1e-1, 1e-4, 1e-8) # possibly changed in config self.ppfvdistr_min_target = 1e-8 self.functions_with_legend = (1, 24, 101, 130) + self.first_function_number = 1 + self.last_function_number = 24 self.number_of_functions = 24 self.pptable_ftarget = 1e-8 # value for determining the success ratio in all tables self.pptable_targetsOfInterest = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7)) # for pptable and pptables @@ -112,6 +114,7 @@ class GECCOBBOBTestbed(SingleObjectiveTestbed): #Wassim: now inherits from Singl def __init__(self, targetValues): super(GECCOBBOBTestbed, self).__init__(targetValues) + self.first_dimension = 2 self.dimensions_to_display = [2, 3, 5, 10, 20, 40] self.tabDimsOfInterest = [5, 20] self.rldDimsOfInterest = [5, 20] @@ -126,11 +129,25 @@ def __init__(self, target_values): super(GECCOBBOBNoisyTestbed, self).__init__(target_values) # Until we clean the code which uses this name we need to use it also here. + self.first_dimension = 2 self.name = testbed_name_single self.functions_with_legend = (101, 130) self.first_function_number = 101 self.last_function_number = 130 +class LargeScaleTestbed(SingleObjectiveTestbed): + """First large scale Testbed + """ + + def __init__(self, targetValues): + super(LargeScaleTestbed, self).__init__(targetValues) + self.first_dimension = 2 + # Wassim: added the following + self.dimensions_to_display = [20, 40, 80, 160, 320, 640] + self.tabDimsOfInterest = [80, 320] + self.rldDimsOfInterest = [80, 320] + self.htmlDimsOfInterest = [80, 320] + class GECCOBiObjBBOBTestbed(Testbed): """Testbed used in the GECCO biobjective BBOB workshop 2016. @@ -171,18 +188,7 @@ def __init__(self, targetValues): self.pptables_target_runlengths = [2, 10, 50] # used in config for expensive setting -class LargeScaleTestbed(SingleObjectiveTestbed): - """First large scale Testbed - """ - - def __init__(self, targetValues): - super(LargeScaleTestbed, self).__init__(targetValues) - # Wassim: added the following - self.dimensions_to_display = [20, 40, 80, 160, 320, 640] - self.tabDimsOfInterest = [80, 320] - self.rldDimsOfInterest = [80, 320] - self.htmlDimsOfInterest = [80, 320] From c47489f99223fdaa43dd120a44b286f96326c785 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 11:27:08 +0200 Subject: [PATCH 209/446] pproc: ppfigdim now uses Testbed.dimensions_to_display instead of genericsettings.dimensions_to_display --- code-experiments/build/c/example_experiment.c | 2 +- code-postprocessing/bbob_pproc/ppfigdim.py | 7 +++++-- code-postprocessing/bbob_pproc/testbedsettings.py | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index c590c9931..26b9d71a4 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -15,7 +15,7 @@ * The maximal budget for evaluations done by an optimization algorithm equals dimension * BUDGET_MULTIPLIER. * Increase the budget multiplier value gradually to see how it affects the runtime. */ -static const size_t BUDGET_MULTIPLIER = 1e4; +static const size_t BUDGET_MULTIPLIER = 1e1; /** * The maximal number of independent restarts allowed for an algorithm that restarts itself. diff --git a/code-postprocessing/bbob_pproc/ppfigdim.py b/code-postprocessing/bbob_pproc/ppfigdim.py index 3879ea243..9e4a31f0b 100644 --- a/code-postprocessing/bbob_pproc/ppfigdim.py +++ b/code-postprocessing/bbob_pproc/ppfigdim.py @@ -80,7 +80,7 @@ # should correspond with the colors in pprldistr. # Wassim: TODO seems to be set before rungeneric so useless here!!!! -dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls +#dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls #functions_with_legend = (1, 24, 101, 130) @@ -209,7 +209,8 @@ def beautify(axesLabel=True): # axisHandle.invert_xaxis() # Wassim: - dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls + #dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls + dimensions = testbedsettings.current_testbed.dimensions_to_display dimticklist = dimensions dimannlist = dimensions # TODO: All these should depend on one given input (xlim, ylim) @@ -522,6 +523,8 @@ def plot_previous_algorithms(func, target=None): # lambda x: [1e-8]): return None bestalgdata = [] + #for d in dimensions: #Wassim: now uses testbedsettings.current_testbed.dimensions_to_display + dimensions = testbedsettings.current_testbed.dimensions_to_display for d in dimensions: try: entry = bestalgentries[(d, func)] diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 8145be7a4..50ab6dd83 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -106,6 +106,8 @@ def __init__(self, targetValues): self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting self.pptable2_target_runlengths = self.pptable_target_runlengths # [0.5, 2, 10, 50] # used in config for expensive setting self.pptables_target_runlengths = self.pptable_target_runlengths # used in config for expensive setting + # Wassim: + self.first_dimension = -1 # TODO: raise warning when not set by child class class GECCOBBOBTestbed(SingleObjectiveTestbed): #Wassim: now inherits from SingleObjectiveTestbed From 17f942a9b045aa2ff7d953c1bf286cd1bba34c9f Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 11:27:08 +0200 Subject: [PATCH 210/446] pproc: ppfigdim now uses Testbed.dimensions_to_display instead of genericsettings.dimensions_to_display --- code-experiments/build/c/example_experiment.c | 2 +- code-postprocessing/bbob_pproc/ppfigdim.py | 7 +++++-- code-postprocessing/bbob_pproc/testbedsettings.py | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index c590c9931..26b9d71a4 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -15,7 +15,7 @@ * The maximal budget for evaluations done by an optimization algorithm equals dimension * BUDGET_MULTIPLIER. * Increase the budget multiplier value gradually to see how it affects the runtime. */ -static const size_t BUDGET_MULTIPLIER = 1e4; +static const size_t BUDGET_MULTIPLIER = 1e1; /** * The maximal number of independent restarts allowed for an algorithm that restarts itself. diff --git a/code-postprocessing/bbob_pproc/ppfigdim.py b/code-postprocessing/bbob_pproc/ppfigdim.py index 3879ea243..9e4a31f0b 100644 --- a/code-postprocessing/bbob_pproc/ppfigdim.py +++ b/code-postprocessing/bbob_pproc/ppfigdim.py @@ -80,7 +80,7 @@ # should correspond with the colors in pprldistr. # Wassim: TODO seems to be set before rungeneric so useless here!!!! -dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls +#dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls #functions_with_legend = (1, 24, 101, 130) @@ -209,7 +209,8 @@ def beautify(axesLabel=True): # axisHandle.invert_xaxis() # Wassim: - dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls + #dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls + dimensions = testbedsettings.current_testbed.dimensions_to_display dimticklist = dimensions dimannlist = dimensions # TODO: All these should depend on one given input (xlim, ylim) @@ -522,6 +523,8 @@ def plot_previous_algorithms(func, target=None): # lambda x: [1e-8]): return None bestalgdata = [] + #for d in dimensions: #Wassim: now uses testbedsettings.current_testbed.dimensions_to_display + dimensions = testbedsettings.current_testbed.dimensions_to_display for d in dimensions: try: entry = bestalgentries[(d, func)] diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 8145be7a4..50ab6dd83 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -106,6 +106,8 @@ def __init__(self, targetValues): self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting self.pptable2_target_runlengths = self.pptable_target_runlengths # [0.5, 2, 10, 50] # used in config for expensive setting self.pptables_target_runlengths = self.pptable_target_runlengths # used in config for expensive setting + # Wassim: + self.first_dimension = -1 # TODO: raise warning when not set by child class class GECCOBBOBTestbed(SingleObjectiveTestbed): #Wassim: now inherits from SingleObjectiveTestbed From 511a594ed70c64d127dd62cc8cd47083f0ae6efa Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 14:23:37 +0200 Subject: [PATCH 211/446] pproc: the large scale pproc no longer uses a bestalg (can be updated by changing best_algorithm_filename) --- code-experiments/build/c/example_experiment.c | 4 ++-- code-postprocessing/bbob_pproc/genericsettings.py | 8 +++++--- code-postprocessing/bbob_pproc/pptable.py | 2 +- code-postprocessing/bbob_pproc/rungeneric1.py | 2 +- code-postprocessing/bbob_pproc/testbedsettings.py | 8 +++++++- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index 26b9d71a4..3ac3a2efb 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -15,7 +15,7 @@ * The maximal budget for evaluations done by an optimization algorithm equals dimension * BUDGET_MULTIPLIER. * Increase the budget multiplier value gradually to see how it affects the runtime. */ -static const size_t BUDGET_MULTIPLIER = 1e1; +static const size_t BUDGET_MULTIPLIER = 1e4; /** * The maximal number of independent restarts allowed for an algorithm that restarts itself. @@ -134,7 +134,7 @@ void example_experiment(const char *suite_name, "algorithm_info: \"A simple random search algorithm\"", suite_name); /* Initialize the suite and observer */ - suite = coco_suite(suite_name, "year: 2016", "instance_indices: 1-5 dimensions: 20,40 function_indices: 1,2"); + suite = coco_suite(suite_name, "year: 2016", "instance_indices: 1-3 dimensions: 20,40 function_indices: 1,2"); observer = coco_observer(observer_name, observer_options); coco_free_memory(observer_options); diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index ec2f59d3c..e057c7ff0 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -23,14 +23,16 @@ in_a_hurry = 1000 # [0, 1000] lower resolution, no eps, saves 30% time maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = 'auto' # 'auto' means automatic choice, otherwise True or False -dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules -dimensions_to_display_ls = (20, 40, 80, 160, 320, 640) # Wassim: large scale suite +#dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules +# Wassim: dimensions_to_display is now part of current_testbed +#dimensions_to_display_ls = (20, 40, 80, 160, 320, 640) # Wassim: large scale suite generate_svg_files = True # generate the svg figures scaling_figures_with_boxes = True # should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? # Variables used in the routines defining desired output for BBOB. -tabDimsOfInterest = (5, 20) # dimension which are displayed in the tables +#tabDimsOfInterest = (5, 20) # dimension which are displayed in the tables +# Wassim: tabDimsOfInterest is now part of current_testbed #tabDimsOfInterest = [40, 160] # Wassim: large scale TODO: use it by generating new large-scale reference data target_runlengths_in_scaling_figs = [0.5, 1.2, 3, 10, 50] # used in config target_runlengths_in_single_rldistr = [0.5, 2, 10, 50] # used in config diff --git a/code-postprocessing/bbob_pproc/pptable.py b/code-postprocessing/bbob_pproc/pptable.py index f8d7a09e1..60cbe1670 100644 --- a/code-postprocessing/bbob_pproc/pptable.py +++ b/code-postprocessing/bbob_pproc/pptable.py @@ -171,7 +171,7 @@ def main(dsList, dimsOfInterest, outputdir, info='', verbose=True): entry = dictFunc[f][0] # take the first element ertdata = entry.detERT(targetsOfInterest((f, d))) - if bestalgentries: + if bestalgentries: bestalgentry = bestalgentries[(d, f)] bestalgdata = bestalgentry.detERT(targetsOfInterest((f,d))) bestalgevals, bestalgalgs = bestalgentry.detEvals(targetsOfInterest((f,d))) diff --git a/code-postprocessing/bbob_pproc/rungeneric1.py b/code-postprocessing/bbob_pproc/rungeneric1.py index afde3c8f9..0b495d4ee 100644 --- a/code-postprocessing/bbob_pproc/rungeneric1.py +++ b/code-postprocessing/bbob_pproc/rungeneric1.py @@ -361,7 +361,7 @@ def main(argv=None): sys.stdout.flush() dictNoise = dsList.dictByNoise() for noise, sliceNoise in dictNoise.iteritems(): - pptable.main(sliceNoise, inset.tabDimsOfInterest, + pptable.main(sliceNoise, testbedsettings.current_testbed.tabDimsOfInterest, #inset.tabDimsOfInterest,#Wassim: outputdir, noise, genericsettings.verbose) print_done() diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 50ab6dd83..4654c3fac 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -100,7 +100,6 @@ def __init__(self, targetValues): self.pptable2_targetsOfInterest = targetValues((1e+1, 1e-1, 1e-3, 1e-5, 1e-7)) # used for pptable2 self.pptablemany_targetsOfInterest = self.pptable_targetsOfInterest self.scenario = scenario_fixed - self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' self.short_names = get_short_names(get_benchmarks_short_infos(False)) # expensive optimization settings: self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting @@ -121,6 +120,7 @@ def __init__(self, targetValues): self.tabDimsOfInterest = [5, 20] self.rldDimsOfInterest = [5, 20] self.htmlDimsOfInterest = [5, 20] + self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' class GECCOBBOBNoisyTestbed(GECCOBBOBTestbed): @@ -132,10 +132,15 @@ def __init__(self, target_values): # Until we clean the code which uses this name we need to use it also here. self.first_dimension = 2 + self.dimensions_to_display = [2, 3, 5, 10, 20, 40] + self.tabDimsOfInterest = [5, 20] + self.rldDimsOfInterest = [5, 20] + self.htmlDimsOfInterest = [5, 20] self.name = testbed_name_single self.functions_with_legend = (101, 130) self.first_function_number = 101 self.last_function_number = 130 + self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' class LargeScaleTestbed(SingleObjectiveTestbed): """First large scale Testbed @@ -149,6 +154,7 @@ def __init__(self, targetValues): self.tabDimsOfInterest = [80, 320] self.rldDimsOfInterest = [80, 320] self.htmlDimsOfInterest = [80, 320] + self.best_algorithm_filename = '' #Wassim: TODO: upadate pptable.py caption to no longer mention bestAlg (for now) class GECCOBiObjBBOBTestbed(Testbed): From b611b64626ecf02fe8529c630d9bf9c09ba18952 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 14:23:37 +0200 Subject: [PATCH 212/446] pproc: the large scale pproc no longer uses a bestalg (can be updated by changing best_algorithm_filename) --- code-experiments/build/c/example_experiment.c | 4 ++-- code-postprocessing/bbob_pproc/genericsettings.py | 8 +++++--- code-postprocessing/bbob_pproc/pptable.py | 2 +- code-postprocessing/bbob_pproc/rungeneric1.py | 2 +- code-postprocessing/bbob_pproc/testbedsettings.py | 8 +++++++- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index 26b9d71a4..3ac3a2efb 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -15,7 +15,7 @@ * The maximal budget for evaluations done by an optimization algorithm equals dimension * BUDGET_MULTIPLIER. * Increase the budget multiplier value gradually to see how it affects the runtime. */ -static const size_t BUDGET_MULTIPLIER = 1e1; +static const size_t BUDGET_MULTIPLIER = 1e4; /** * The maximal number of independent restarts allowed for an algorithm that restarts itself. @@ -134,7 +134,7 @@ void example_experiment(const char *suite_name, "algorithm_info: \"A simple random search algorithm\"", suite_name); /* Initialize the suite and observer */ - suite = coco_suite(suite_name, "year: 2016", "instance_indices: 1-5 dimensions: 20,40 function_indices: 1,2"); + suite = coco_suite(suite_name, "year: 2016", "instance_indices: 1-3 dimensions: 20,40 function_indices: 1,2"); observer = coco_observer(observer_name, observer_options); coco_free_memory(observer_options); diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index ec2f59d3c..e057c7ff0 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -23,14 +23,16 @@ in_a_hurry = 1000 # [0, 1000] lower resolution, no eps, saves 30% time maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = 'auto' # 'auto' means automatic choice, otherwise True or False -dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules -dimensions_to_display_ls = (20, 40, 80, 160, 320, 640) # Wassim: large scale suite +#dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules +# Wassim: dimensions_to_display is now part of current_testbed +#dimensions_to_display_ls = (20, 40, 80, 160, 320, 640) # Wassim: large scale suite generate_svg_files = True # generate the svg figures scaling_figures_with_boxes = True # should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? # Variables used in the routines defining desired output for BBOB. -tabDimsOfInterest = (5, 20) # dimension which are displayed in the tables +#tabDimsOfInterest = (5, 20) # dimension which are displayed in the tables +# Wassim: tabDimsOfInterest is now part of current_testbed #tabDimsOfInterest = [40, 160] # Wassim: large scale TODO: use it by generating new large-scale reference data target_runlengths_in_scaling_figs = [0.5, 1.2, 3, 10, 50] # used in config target_runlengths_in_single_rldistr = [0.5, 2, 10, 50] # used in config diff --git a/code-postprocessing/bbob_pproc/pptable.py b/code-postprocessing/bbob_pproc/pptable.py index f8d7a09e1..60cbe1670 100644 --- a/code-postprocessing/bbob_pproc/pptable.py +++ b/code-postprocessing/bbob_pproc/pptable.py @@ -171,7 +171,7 @@ def main(dsList, dimsOfInterest, outputdir, info='', verbose=True): entry = dictFunc[f][0] # take the first element ertdata = entry.detERT(targetsOfInterest((f, d))) - if bestalgentries: + if bestalgentries: bestalgentry = bestalgentries[(d, f)] bestalgdata = bestalgentry.detERT(targetsOfInterest((f,d))) bestalgevals, bestalgalgs = bestalgentry.detEvals(targetsOfInterest((f,d))) diff --git a/code-postprocessing/bbob_pproc/rungeneric1.py b/code-postprocessing/bbob_pproc/rungeneric1.py index afde3c8f9..0b495d4ee 100644 --- a/code-postprocessing/bbob_pproc/rungeneric1.py +++ b/code-postprocessing/bbob_pproc/rungeneric1.py @@ -361,7 +361,7 @@ def main(argv=None): sys.stdout.flush() dictNoise = dsList.dictByNoise() for noise, sliceNoise in dictNoise.iteritems(): - pptable.main(sliceNoise, inset.tabDimsOfInterest, + pptable.main(sliceNoise, testbedsettings.current_testbed.tabDimsOfInterest, #inset.tabDimsOfInterest,#Wassim: outputdir, noise, genericsettings.verbose) print_done() diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 50ab6dd83..4654c3fac 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -100,7 +100,6 @@ def __init__(self, targetValues): self.pptable2_targetsOfInterest = targetValues((1e+1, 1e-1, 1e-3, 1e-5, 1e-7)) # used for pptable2 self.pptablemany_targetsOfInterest = self.pptable_targetsOfInterest self.scenario = scenario_fixed - self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' self.short_names = get_short_names(get_benchmarks_short_infos(False)) # expensive optimization settings: self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting @@ -121,6 +120,7 @@ def __init__(self, targetValues): self.tabDimsOfInterest = [5, 20] self.rldDimsOfInterest = [5, 20] self.htmlDimsOfInterest = [5, 20] + self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' class GECCOBBOBNoisyTestbed(GECCOBBOBTestbed): @@ -132,10 +132,15 @@ def __init__(self, target_values): # Until we clean the code which uses this name we need to use it also here. self.first_dimension = 2 + self.dimensions_to_display = [2, 3, 5, 10, 20, 40] + self.tabDimsOfInterest = [5, 20] + self.rldDimsOfInterest = [5, 20] + self.htmlDimsOfInterest = [5, 20] self.name = testbed_name_single self.functions_with_legend = (101, 130) self.first_function_number = 101 self.last_function_number = 130 + self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' class LargeScaleTestbed(SingleObjectiveTestbed): """First large scale Testbed @@ -149,6 +154,7 @@ def __init__(self, targetValues): self.tabDimsOfInterest = [80, 320] self.rldDimsOfInterest = [80, 320] self.htmlDimsOfInterest = [80, 320] + self.best_algorithm_filename = '' #Wassim: TODO: upadate pptable.py caption to no longer mention bestAlg (for now) class GECCOBiObjBBOBTestbed(Testbed): From f03ebee8b03de364066f3cc3bcb070ef51d6ffab Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 14:36:33 +0200 Subject: [PATCH 213/446] pproc: next_dimension now stops and starts over at the correct dimensions depending on testbedsetting.current_testbed. --- code-postprocessing/bbob_pproc/ppfig.py | 6 +++--- code-postprocessing/bbob_pproc/testbedsettings.py | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 4ee0ed2ac..e1edffd6d 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -90,14 +90,14 @@ def next_dimension_str(s): raise -def next_dimension(dim): +def next_dimension(dim): # Wassim: too static! made it more flexible """next dimension when clicking single function html pages""" if dim == 2: return 3 if dim == 3: return 5 - if dim == 40: - return 2 + if dim == testbedsettings.current_testbed.dimensions_to_display[-1]: # Wassim: updated to make it more flexible + return testbedsettings.current_testbed.dimensions_to_display[0] return 2 * dim diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 4654c3fac..a611e85ac 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -109,6 +109,11 @@ def __init__(self, targetValues): self.first_dimension = -1 # TODO: raise warning when not set by child class +class StandardDimensionsTestbed(Testbed): #Wassim: TODO: use it for the non large scale suites that have the same dims + def __init__(self, targetValues): + pass + + class GECCOBBOBTestbed(SingleObjectiveTestbed): #Wassim: now inherits from SingleObjectiveTestbed """Testbed used in the GECCO BBOB workshops 2009, 2010, 2012, 2013, 2015. """ From 41de375f352c79c4eb4a45257b0c7537935b5be2 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 14:36:33 +0200 Subject: [PATCH 214/446] pproc: next_dimension now stops and starts over at the correct dimensions depending on testbedsetting.current_testbed. --- code-postprocessing/bbob_pproc/ppfig.py | 6 +++--- code-postprocessing/bbob_pproc/testbedsettings.py | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 4ee0ed2ac..e1edffd6d 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -90,14 +90,14 @@ def next_dimension_str(s): raise -def next_dimension(dim): +def next_dimension(dim): # Wassim: too static! made it more flexible """next dimension when clicking single function html pages""" if dim == 2: return 3 if dim == 3: return 5 - if dim == 40: - return 2 + if dim == testbedsettings.current_testbed.dimensions_to_display[-1]: # Wassim: updated to make it more flexible + return testbedsettings.current_testbed.dimensions_to_display[0] return 2 * dim diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 4654c3fac..a611e85ac 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -109,6 +109,11 @@ def __init__(self, targetValues): self.first_dimension = -1 # TODO: raise warning when not set by child class +class StandardDimensionsTestbed(Testbed): #Wassim: TODO: use it for the non large scale suites that have the same dims + def __init__(self, targetValues): + pass + + class GECCOBBOBTestbed(SingleObjectiveTestbed): #Wassim: now inherits from SingleObjectiveTestbed """Testbed used in the GECCO BBOB workshops 2009, 2010, 2012, 2013, 2015. """ From c0d7d802747391f14783b069fd7d3452ed75b86e Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 15:11:36 +0200 Subject: [PATCH 215/446] pproc: removed --large-scale option for post-processing, now done automatically whenever there is a dim>40 --- code-postprocessing/bbob_pproc/genericsettings.py | 5 +++-- code-postprocessing/bbob_pproc/ppfig.py | 3 ++- code-postprocessing/bbob_pproc/rungeneric.py | 2 -- code-postprocessing/bbob_pproc/rungeneric1.py | 8 +++----- code-postprocessing/bbob_pproc/rungeneric2.py | 3 ++- code-postprocessing/bbob_pproc/rungenericmany.py | 3 ++- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index e057c7ff0..79f887d37 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -49,12 +49,13 @@ dim_related_markers = ('+', 'v', '*', 'o', 's', 'D', 'x') dim_related_colors = ('c', 'g', 'b', 'k', 'r', 'm', 'k', 'y', 'k', 'c', 'r', 'm') -rldDimsOfInterest = (5, 20) +#rldDimsOfInterest = (5, 20) +# Wassim: rldDimsOfInterest is now part of current_testbed #rldDimsOfInterest = [40, 80] # Wassim: for large scale TODO: use it by generating new large-scale reference data htmlDimsOfInterest = [5, 20] # Wassim: Empirical cumulative distribution functions (ECDF) and ERT loss ratios shown dimensions in html file -htmlDimsOfInterest_ls = [40, 80] # Wassim: for large scale +#htmlDimsOfInterest_ls = [40, 80] # Wassim: for large scale simulated_runlength_bootstrap_sample_size = 10 + 990 / (1 + 10 * max((0, in_a_hurry))) # for tables and plots diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index e1edffd6d..e2d2eab00 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -241,7 +241,8 @@ def save_single_functions_html(filename, addLinkForNextDim = add_to_names.endswith('D') bestAlgExists = not isBiobjective - dimensions = genericsettings.htmlDimsOfInterest_ls if genericsettings.isLargeScale else genericsettings.htmlDimsOfInterest + dimensions = testbedsettings.current_testbed.dimensions_to_display + #genericsettings.htmlDimsOfInterest_ls if genericsettings.isLargeScale else genericsettings.htmlDimsOfInterest if htmlPage is HtmlPage.ONE: f.write('

Average runtime versus dimension for selected targets

\n') diff --git a/code-postprocessing/bbob_pproc/rungeneric.py b/code-postprocessing/bbob_pproc/rungeneric.py index d0607a683..acf1e011e 100644 --- a/code-postprocessing/bbob_pproc/rungeneric.py +++ b/code-postprocessing/bbob_pproc/rungeneric.py @@ -214,8 +214,6 @@ def main(argv=None): genopts = [] outputdir = genericsettings.outputdir for o, a in opts: - if o in ("--large-scale"):# Wassim: added large scale option, instead of just changing dimensions_to_display, use this for easier, further uses - genericsettings.isLargeScale = True if o in ("-h", "--help"): usage() sys.exit() diff --git a/code-postprocessing/bbob_pproc/rungeneric1.py b/code-postprocessing/bbob_pproc/rungeneric1.py index 0b495d4ee..6277c9a5f 100644 --- a/code-postprocessing/bbob_pproc/rungeneric1.py +++ b/code-postprocessing/bbob_pproc/rungeneric1.py @@ -179,9 +179,7 @@ def main(argv=None): # Process options outputdir = genericsettings.outputdir for o, a in opts: - if o in ("--large-scale"):# Wassim: added large scale option, instead of just changing dimensions_to_display, use this for easier, further uses - genericsettings.isLargeScale = True - elif o in ("-v", "--verbose"): + if o in ("-v", "--verbose"): genericsettings.verbose = True elif o in ("-h", "--help"): usage() @@ -375,7 +373,7 @@ def main(argv=None): 'results will be mixed in the "all functions" ' 'ECDF figures.') dictDim = dsList.dictByDim() - for dim in inset.rldDimsOfInterest: + for dim in testbedsettings.current_testbed.rldDimsOfInterest: #inset.rldDimsOfInterest: #Wassim: try: sliceDim = dictDim[dim] except KeyError: @@ -431,7 +429,7 @@ def main(argv=None): except (SyntaxError, NameError, ValueError): print "Float value required." dictDim = sliceNoise.dictByDim() - for d in inset.rldDimsOfInterest: + for d in testbedsettings.current_testbed.rldDimsOfInterest: #inset.rldDimsOfInterest: #Wassim: try: sliceDim = dictDim[d] except KeyError: diff --git a/code-postprocessing/bbob_pproc/rungeneric2.py b/code-postprocessing/bbob_pproc/rungeneric2.py index 7464e6876..d6e7cea9a 100644 --- a/code-postprocessing/bbob_pproc/rungeneric2.py +++ b/code-postprocessing/bbob_pproc/rungeneric2.py @@ -266,7 +266,8 @@ def main(argv=None): if genericsettings.isNoiseFree and not genericsettings.isNoisy: dictAlg[i] = dictAlg[i].dictByNoise().get('noiselessall', DataSetList()) - _dimensions_to_display = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls # Wassim: modify genericsettings.dimensions_to_display directly? + #_dimensions_to_display = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls # Wassim: modify genericsettings.dimensions_to_display directly? + _dimensions_to_display = testbedsettings.current_testbed.dimensions_to_display for i in dsList: #if i.dim not in genericsettings.dimensions_to_display: if i.dim not in _dimensions_to_display: diff --git a/code-postprocessing/bbob_pproc/rungenericmany.py b/code-postprocessing/bbob_pproc/rungenericmany.py index ef417e081..84460e04f 100644 --- a/code-postprocessing/bbob_pproc/rungenericmany.py +++ b/code-postprocessing/bbob_pproc/rungenericmany.py @@ -278,7 +278,8 @@ def main(argv=None): config.target_values(genericsettings.isExpensive) config.config(dsList[0].testbed_name()) - _dimensions_to_display = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls # Wassim: modify genericsettings.dimensions_to_display directly? + #_dimensions_to_display = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls # Wassim: modify genericsettings.dimensions_to_display directly? + _dimensions_to_display = testbedsettings.current_testbed.dimensions_to_display for i in dsList: #if i.dim not in genericsettings.dimensions_to_display: if i.dim not in _dimensions_to_display: From 8c7e9b4c39e8d7aac200f19f9fb511251342f47a Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 15:11:36 +0200 Subject: [PATCH 216/446] pproc: removed --large-scale option for post-processing, now done automatically whenever there is a dim>40 --- code-postprocessing/bbob_pproc/genericsettings.py | 5 +++-- code-postprocessing/bbob_pproc/ppfig.py | 3 ++- code-postprocessing/bbob_pproc/rungeneric.py | 2 -- code-postprocessing/bbob_pproc/rungeneric1.py | 8 +++----- code-postprocessing/bbob_pproc/rungeneric2.py | 3 ++- code-postprocessing/bbob_pproc/rungenericmany.py | 3 ++- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index e057c7ff0..79f887d37 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -49,12 +49,13 @@ dim_related_markers = ('+', 'v', '*', 'o', 's', 'D', 'x') dim_related_colors = ('c', 'g', 'b', 'k', 'r', 'm', 'k', 'y', 'k', 'c', 'r', 'm') -rldDimsOfInterest = (5, 20) +#rldDimsOfInterest = (5, 20) +# Wassim: rldDimsOfInterest is now part of current_testbed #rldDimsOfInterest = [40, 80] # Wassim: for large scale TODO: use it by generating new large-scale reference data htmlDimsOfInterest = [5, 20] # Wassim: Empirical cumulative distribution functions (ECDF) and ERT loss ratios shown dimensions in html file -htmlDimsOfInterest_ls = [40, 80] # Wassim: for large scale +#htmlDimsOfInterest_ls = [40, 80] # Wassim: for large scale simulated_runlength_bootstrap_sample_size = 10 + 990 / (1 + 10 * max((0, in_a_hurry))) # for tables and plots diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index e1edffd6d..e2d2eab00 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -241,7 +241,8 @@ def save_single_functions_html(filename, addLinkForNextDim = add_to_names.endswith('D') bestAlgExists = not isBiobjective - dimensions = genericsettings.htmlDimsOfInterest_ls if genericsettings.isLargeScale else genericsettings.htmlDimsOfInterest + dimensions = testbedsettings.current_testbed.dimensions_to_display + #genericsettings.htmlDimsOfInterest_ls if genericsettings.isLargeScale else genericsettings.htmlDimsOfInterest if htmlPage is HtmlPage.ONE: f.write('

Average runtime versus dimension for selected targets

\n') diff --git a/code-postprocessing/bbob_pproc/rungeneric.py b/code-postprocessing/bbob_pproc/rungeneric.py index d0607a683..acf1e011e 100644 --- a/code-postprocessing/bbob_pproc/rungeneric.py +++ b/code-postprocessing/bbob_pproc/rungeneric.py @@ -214,8 +214,6 @@ def main(argv=None): genopts = [] outputdir = genericsettings.outputdir for o, a in opts: - if o in ("--large-scale"):# Wassim: added large scale option, instead of just changing dimensions_to_display, use this for easier, further uses - genericsettings.isLargeScale = True if o in ("-h", "--help"): usage() sys.exit() diff --git a/code-postprocessing/bbob_pproc/rungeneric1.py b/code-postprocessing/bbob_pproc/rungeneric1.py index 0b495d4ee..6277c9a5f 100644 --- a/code-postprocessing/bbob_pproc/rungeneric1.py +++ b/code-postprocessing/bbob_pproc/rungeneric1.py @@ -179,9 +179,7 @@ def main(argv=None): # Process options outputdir = genericsettings.outputdir for o, a in opts: - if o in ("--large-scale"):# Wassim: added large scale option, instead of just changing dimensions_to_display, use this for easier, further uses - genericsettings.isLargeScale = True - elif o in ("-v", "--verbose"): + if o in ("-v", "--verbose"): genericsettings.verbose = True elif o in ("-h", "--help"): usage() @@ -375,7 +373,7 @@ def main(argv=None): 'results will be mixed in the "all functions" ' 'ECDF figures.') dictDim = dsList.dictByDim() - for dim in inset.rldDimsOfInterest: + for dim in testbedsettings.current_testbed.rldDimsOfInterest: #inset.rldDimsOfInterest: #Wassim: try: sliceDim = dictDim[dim] except KeyError: @@ -431,7 +429,7 @@ def main(argv=None): except (SyntaxError, NameError, ValueError): print "Float value required." dictDim = sliceNoise.dictByDim() - for d in inset.rldDimsOfInterest: + for d in testbedsettings.current_testbed.rldDimsOfInterest: #inset.rldDimsOfInterest: #Wassim: try: sliceDim = dictDim[d] except KeyError: diff --git a/code-postprocessing/bbob_pproc/rungeneric2.py b/code-postprocessing/bbob_pproc/rungeneric2.py index 7464e6876..d6e7cea9a 100644 --- a/code-postprocessing/bbob_pproc/rungeneric2.py +++ b/code-postprocessing/bbob_pproc/rungeneric2.py @@ -266,7 +266,8 @@ def main(argv=None): if genericsettings.isNoiseFree and not genericsettings.isNoisy: dictAlg[i] = dictAlg[i].dictByNoise().get('noiselessall', DataSetList()) - _dimensions_to_display = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls # Wassim: modify genericsettings.dimensions_to_display directly? + #_dimensions_to_display = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls # Wassim: modify genericsettings.dimensions_to_display directly? + _dimensions_to_display = testbedsettings.current_testbed.dimensions_to_display for i in dsList: #if i.dim not in genericsettings.dimensions_to_display: if i.dim not in _dimensions_to_display: diff --git a/code-postprocessing/bbob_pproc/rungenericmany.py b/code-postprocessing/bbob_pproc/rungenericmany.py index ef417e081..84460e04f 100644 --- a/code-postprocessing/bbob_pproc/rungenericmany.py +++ b/code-postprocessing/bbob_pproc/rungenericmany.py @@ -278,7 +278,8 @@ def main(argv=None): config.target_values(genericsettings.isExpensive) config.config(dsList[0].testbed_name()) - _dimensions_to_display = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls # Wassim: modify genericsettings.dimensions_to_display directly? + #_dimensions_to_display = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls # Wassim: modify genericsettings.dimensions_to_display directly? + _dimensions_to_display = testbedsettings.current_testbed.dimensions_to_display for i in dsList: #if i.dim not in genericsettings.dimensions_to_display: if i.dim not in _dimensions_to_display: From 178b417d5511250939f312157ccd5ee033186aed Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 15:39:49 +0200 Subject: [PATCH 217/446] pproc: tabDimsOfInterest, rldDimsOfInterest and htmlDimsOfInterest from testbedsettings.current_testbed, updated rungeneric2 and rungenericmany --- code-postprocessing/bbob_pproc/genericsettings.py | 4 ++-- code-postprocessing/bbob_pproc/ppfig.py | 2 +- code-postprocessing/bbob_pproc/rungeneric2.py | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 79f887d37..1d4b1e8f3 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -51,10 +51,10 @@ #rldDimsOfInterest = (5, 20) # Wassim: rldDimsOfInterest is now part of current_testbed - #rldDimsOfInterest = [40, 80] # Wassim: for large scale TODO: use it by generating new large-scale reference data -htmlDimsOfInterest = [5, 20] # Wassim: Empirical cumulative distribution functions (ECDF) and ERT loss ratios shown dimensions in html file +#htmlDimsOfInterest = [5, 20] # Wassim: Empirical cumulative distribution functions (ECDF) and ERT loss ratios shown dimensions in html file +# Wassim: htmlDimsOfInterest is now part of current_testbed #htmlDimsOfInterest_ls = [40, 80] # Wassim: for large scale simulated_runlength_bootstrap_sample_size = 10 + 990 / (1 + 10 * max((0, in_a_hurry))) # for tables and plots diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index e2d2eab00..3b2e52432 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -241,7 +241,7 @@ def save_single_functions_html(filename, addLinkForNextDim = add_to_names.endswith('D') bestAlgExists = not isBiobjective - dimensions = testbedsettings.current_testbed.dimensions_to_display + dimensions = testbedsettings.current_testbed.htmlDimsOfInterest #genericsettings.htmlDimsOfInterest_ls if genericsettings.isLargeScale else genericsettings.htmlDimsOfInterest if htmlPage is HtmlPage.ONE: diff --git a/code-postprocessing/bbob_pproc/rungeneric2.py b/code-postprocessing/bbob_pproc/rungeneric2.py index d6e7cea9a..525cb7ecd 100644 --- a/code-postprocessing/bbob_pproc/rungeneric2.py +++ b/code-postprocessing/bbob_pproc/rungeneric2.py @@ -393,7 +393,7 @@ def main(argv=None): # ECDFs of aRT ratios for dim in set(dictDim0.keys()) & set(dictDim1.keys()): - if dim in inset.rldDimsOfInterest: + if dim in testbedsettings.current_testbed.rldDimsOfInterest: #inset.rldDimsOfInterest: # ECDF for all functions altogether try: pprldistr2.main(dictDim0[dim], dictDim1[dim], dim, @@ -456,7 +456,7 @@ def main(argv=None): pprldistr.fmax = None #Resetting the max final value pprldistr.evalfmax = None #Resetting the max #fevalsfactor # ECDFs of all functions altogether - if dim in inset.rldDimsOfInterest: + if dim in testbedsettings.current_testbed.rldDimsOfInterest: #inset.rldDimsOfInterest: try: pprldistr.comp(dictDim1[dim], dictDim0[dim], testbedsettings.current_testbed.rldValsOfInterest, # TODO: let rldVals... possibly be RL-based targets @@ -553,7 +553,7 @@ def split_seq(seq, nbgroups): group1.append(tmp1) for i, g in enumerate(zip(group0, group1)): - pptable2.main(g[0], g[1], inset.tabDimsOfInterest, + pptable2.main(g[0], g[1], testbedsettings.current_testbed.tabDimsOfInterest, #inset.tabDimsOfInterest, outputdir, '%s%d' % (nGroup, i), genericsettings.verbose) else: @@ -568,7 +568,7 @@ def split_seq(seq, nbgroups): # '%s' % (testbedsettings.testbedshortname), genericsettings.verbose) else: pptable2.main(dictNG0[nGroup], dictNG1[nGroup], - inset.tabDimsOfInterest, + testbedsettings.current_testbed.tabDimsOfInterest,# inset.tabDimsOfInterest, outputdir, '%s' % (nGroup), genericsettings.verbose) From d82c8f96f21e4fadf5355df8332e43a22e266673 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 15:39:49 +0200 Subject: [PATCH 218/446] pproc: tabDimsOfInterest, rldDimsOfInterest and htmlDimsOfInterest from testbedsettings.current_testbed, updated rungeneric2 and rungenericmany --- code-postprocessing/bbob_pproc/genericsettings.py | 4 ++-- code-postprocessing/bbob_pproc/ppfig.py | 2 +- code-postprocessing/bbob_pproc/rungeneric2.py | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 79f887d37..1d4b1e8f3 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -51,10 +51,10 @@ #rldDimsOfInterest = (5, 20) # Wassim: rldDimsOfInterest is now part of current_testbed - #rldDimsOfInterest = [40, 80] # Wassim: for large scale TODO: use it by generating new large-scale reference data -htmlDimsOfInterest = [5, 20] # Wassim: Empirical cumulative distribution functions (ECDF) and ERT loss ratios shown dimensions in html file +#htmlDimsOfInterest = [5, 20] # Wassim: Empirical cumulative distribution functions (ECDF) and ERT loss ratios shown dimensions in html file +# Wassim: htmlDimsOfInterest is now part of current_testbed #htmlDimsOfInterest_ls = [40, 80] # Wassim: for large scale simulated_runlength_bootstrap_sample_size = 10 + 990 / (1 + 10 * max((0, in_a_hurry))) # for tables and plots diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index e2d2eab00..3b2e52432 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -241,7 +241,7 @@ def save_single_functions_html(filename, addLinkForNextDim = add_to_names.endswith('D') bestAlgExists = not isBiobjective - dimensions = testbedsettings.current_testbed.dimensions_to_display + dimensions = testbedsettings.current_testbed.htmlDimsOfInterest #genericsettings.htmlDimsOfInterest_ls if genericsettings.isLargeScale else genericsettings.htmlDimsOfInterest if htmlPage is HtmlPage.ONE: diff --git a/code-postprocessing/bbob_pproc/rungeneric2.py b/code-postprocessing/bbob_pproc/rungeneric2.py index d6e7cea9a..525cb7ecd 100644 --- a/code-postprocessing/bbob_pproc/rungeneric2.py +++ b/code-postprocessing/bbob_pproc/rungeneric2.py @@ -393,7 +393,7 @@ def main(argv=None): # ECDFs of aRT ratios for dim in set(dictDim0.keys()) & set(dictDim1.keys()): - if dim in inset.rldDimsOfInterest: + if dim in testbedsettings.current_testbed.rldDimsOfInterest: #inset.rldDimsOfInterest: # ECDF for all functions altogether try: pprldistr2.main(dictDim0[dim], dictDim1[dim], dim, @@ -456,7 +456,7 @@ def main(argv=None): pprldistr.fmax = None #Resetting the max final value pprldistr.evalfmax = None #Resetting the max #fevalsfactor # ECDFs of all functions altogether - if dim in inset.rldDimsOfInterest: + if dim in testbedsettings.current_testbed.rldDimsOfInterest: #inset.rldDimsOfInterest: try: pprldistr.comp(dictDim1[dim], dictDim0[dim], testbedsettings.current_testbed.rldValsOfInterest, # TODO: let rldVals... possibly be RL-based targets @@ -553,7 +553,7 @@ def split_seq(seq, nbgroups): group1.append(tmp1) for i, g in enumerate(zip(group0, group1)): - pptable2.main(g[0], g[1], inset.tabDimsOfInterest, + pptable2.main(g[0], g[1], testbedsettings.current_testbed.tabDimsOfInterest, #inset.tabDimsOfInterest, outputdir, '%s%d' % (nGroup, i), genericsettings.verbose) else: @@ -568,7 +568,7 @@ def split_seq(seq, nbgroups): # '%s' % (testbedsettings.testbedshortname), genericsettings.verbose) else: pptable2.main(dictNG0[nGroup], dictNG1[nGroup], - inset.tabDimsOfInterest, + testbedsettings.current_testbed.tabDimsOfInterest,# inset.tabDimsOfInterest, outputdir, '%s' % (nGroup), genericsettings.verbose) From cc7874be60df33b6acf2be978caf716deb2829c7 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 16:21:21 +0200 Subject: [PATCH 219/446] pproc: now no longer able to switch back to standard dimension from large scale testbed. Needed for rungeric2 and rungenericmany --- code-postprocessing/bbob_pproc/comp2/pptable2.py | 2 +- code-postprocessing/bbob_pproc/compall/pptables.py | 1 - code-postprocessing/bbob_pproc/pproc.py | 5 ++++- code-postprocessing/bbob_pproc/testbedsettings.py | 1 - 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code-postprocessing/bbob_pproc/comp2/pptable2.py b/code-postprocessing/bbob_pproc/comp2/pptable2.py index f68f7e75a..781561716 100644 --- a/code-postprocessing/bbob_pproc/comp2/pptable2.py +++ b/code-postprocessing/bbob_pproc/comp2/pptable2.py @@ -107,7 +107,7 @@ def main(dsList0, dsList1, dimsOfInterest, outputdir, info='', verbose=True): info = '_' + info bestalgentries = bestalg.load_best_algorithm() - + header = [] if isinstance(targetsOfInterest, pproc.RunlengthBasedTargetValues): header = [r'\#FEs/D'] diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 32e83cb4a..99b4f35bf 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -263,7 +263,6 @@ def main(dictAlg, sortedAlgs, isBiobjective, outputdir='.', verbose=True, functi # TODO: method is long, terrible to read, split if possible bestalgentries = bestalg.load_best_algorithm() - testbed = testbedsettings.current_testbed # Sort data per dimension and function diff --git a/code-postprocessing/bbob_pproc/pproc.py b/code-postprocessing/bbob_pproc/pproc.py index 386b8049f..d6b862f49 100644 --- a/code-postprocessing/bbob_pproc/pproc.py +++ b/code-postprocessing/bbob_pproc/pproc.py @@ -663,7 +663,10 @@ def testbed_name(self): testbed = None if hasattr(self, 'suite'): testbed = getattr(self, 'suite') - + if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): + # Wassim: prevents from sitching back to GECCOBBOBTestbed once we are in large-scale + # Wassim: TODO: not perfect, should be done in a better way, by simply keeping a single instace of current_testbed + testbed = testbedsettings.default_testbed_largescale if not testbed: if self.isBiobjective(): testbed = testbedsettings.default_testbed_bi diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index a611e85ac..d2207aa4c 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -27,7 +27,6 @@ def load_current_testbed(testbed_name, target_values): current_testbed = constructor(target_values) else: raise ValueError('Testbed class %s does not exist. Add it to testbedsettings.py to process this data.' % testbed_name) - return current_testbed From 8b1b7e36090659ba21b17ee607029894495e4e0d Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 16:21:21 +0200 Subject: [PATCH 220/446] pproc: now no longer able to switch back to standard dimension from large scale testbed. Needed for rungeric2 and rungenericmany --- code-postprocessing/bbob_pproc/comp2/pptable2.py | 2 +- code-postprocessing/bbob_pproc/compall/pptables.py | 1 - code-postprocessing/bbob_pproc/pproc.py | 5 ++++- code-postprocessing/bbob_pproc/testbedsettings.py | 1 - 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code-postprocessing/bbob_pproc/comp2/pptable2.py b/code-postprocessing/bbob_pproc/comp2/pptable2.py index f68f7e75a..781561716 100644 --- a/code-postprocessing/bbob_pproc/comp2/pptable2.py +++ b/code-postprocessing/bbob_pproc/comp2/pptable2.py @@ -107,7 +107,7 @@ def main(dsList0, dsList1, dimsOfInterest, outputdir, info='', verbose=True): info = '_' + info bestalgentries = bestalg.load_best_algorithm() - + header = [] if isinstance(targetsOfInterest, pproc.RunlengthBasedTargetValues): header = [r'\#FEs/D'] diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 32e83cb4a..99b4f35bf 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -263,7 +263,6 @@ def main(dictAlg, sortedAlgs, isBiobjective, outputdir='.', verbose=True, functi # TODO: method is long, terrible to read, split if possible bestalgentries = bestalg.load_best_algorithm() - testbed = testbedsettings.current_testbed # Sort data per dimension and function diff --git a/code-postprocessing/bbob_pproc/pproc.py b/code-postprocessing/bbob_pproc/pproc.py index 386b8049f..d6b862f49 100644 --- a/code-postprocessing/bbob_pproc/pproc.py +++ b/code-postprocessing/bbob_pproc/pproc.py @@ -663,7 +663,10 @@ def testbed_name(self): testbed = None if hasattr(self, 'suite'): testbed = getattr(self, 'suite') - + if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): + # Wassim: prevents from sitching back to GECCOBBOBTestbed once we are in large-scale + # Wassim: TODO: not perfect, should be done in a better way, by simply keeping a single instace of current_testbed + testbed = testbedsettings.default_testbed_largescale if not testbed: if self.isBiobjective(): testbed = testbedsettings.default_testbed_bi diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index a611e85ac..d2207aa4c 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -27,7 +27,6 @@ def load_current_testbed(testbed_name, target_values): current_testbed = constructor(target_values) else: raise ValueError('Testbed class %s does not exist. Add it to testbedsettings.py to process this data.' % testbed_name) - return current_testbed From 368bda59644ff2cb20e3399266cc87169da38212 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 17:40:27 +0200 Subject: [PATCH 221/446] pproc: added folder to link in main page of templateBBOBarticle.html to show runtime distribution ECDF --- code-postprocessing/bbob_pproc/ppfig.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 3b2e52432..8d4f372fa 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -253,7 +253,8 @@ def save_single_functions_html(filename, headerECDF = ' Runtime distributions (ECDF) over all targets' f.write("

%s

\n" % headerECDF) - f.write(addImage('pprldmany.%s' % (extension), True)) + f.write(addImage('pprldmany-single-functions/pprldmany.%s' % (extension), True)) + # Wassim: added the folder name pprldmany-single-functions elif htmlPage is HtmlPage.TWO: currentHeader = 'Scaling of aRT with dimension' From 72e0127c996af1bc527d6d1f1910af0e1a9e44a9 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 17:40:27 +0200 Subject: [PATCH 222/446] pproc: added folder to link in main page of templateBBOBarticle.html to show runtime distribution ECDF --- code-postprocessing/bbob_pproc/ppfig.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 3b2e52432..8d4f372fa 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -253,7 +253,8 @@ def save_single_functions_html(filename, headerECDF = ' Runtime distributions (ECDF) over all targets' f.write("

%s

\n" % headerECDF) - f.write(addImage('pprldmany.%s' % (extension), True)) + f.write(addImage('pprldmany-single-functions/pprldmany.%s' % (extension), True)) + # Wassim: added the folder name pprldmany-single-functions elif htmlPage is HtmlPage.TWO: currentHeader = 'Scaling of aRT with dimension' From d47fbfa524183934307d586f8c35a18d1221eebd Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 17:53:37 +0200 Subject: [PATCH 223/446] pproc: Runtime distribution plots (per dimension) and Runtime distribution plots by group (per dimension) --- code-postprocessing/bbob_pproc/ppfig.py | 7 ++++--- code-postprocessing/bbob_pproc/testbedsettings.py | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 8d4f372fa..649ef88fc 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -187,13 +187,14 @@ def getRldLink(htmlPage, currentDir, isBiobjective): ignoreFileExists=ignoreFileExists) if htmlPage in (HtmlPage.TWO, HtmlPage.MANY) or not isBiobjective: - fileName = '%s_%02dD.html' % (genericsettings.pprldmany_file_name, 2) - # Wassim: the smallest dimension should not be hard coded but at least reliant on the suite-name + fileName = '%s_%02dD.html' % (genericsettings.pprldmany_file_name, testbedsettings.current_testbed.first_dimension) + # Wassim: now uses testbedsettings.current_testbed.first_dimension instead of hard-coded 2 links += addLink(currentDir, folder, fileName, 'Runtime distribution plots (per dimension)', ignoreFileExists=ignoreFileExists) if htmlPage == HtmlPage.ONE: - fileName = '%s_%02dD.html' % (genericsettings.pprldmany_group_file_name, 2) + fileName = '%s_%02dD.html' % (genericsettings.pprldmany_group_file_name, testbedsettings.current_testbed.first_dimension) + # Wassim: now uses testbedsettings.current_testbed.first_dimension instead of hard-coded 2 links += addLink(currentDir, folder, fileName, 'Runtime distribution plots by group (per dimension)', ignoreFileExists=ignoreFileExists) diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index d2207aa4c..e0ccdbce6 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -152,7 +152,7 @@ class LargeScaleTestbed(SingleObjectiveTestbed): def __init__(self, targetValues): super(LargeScaleTestbed, self).__init__(targetValues) - self.first_dimension = 2 + self.first_dimension = 20 # Wassim: added the following self.dimensions_to_display = [20, 40, 80, 160, 320, 640] self.tabDimsOfInterest = [80, 320] From 3e7d7841bf32216d7deb65733dc43e551c3fa549 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 17:53:37 +0200 Subject: [PATCH 224/446] pproc: Runtime distribution plots (per dimension) and Runtime distribution plots by group (per dimension) --- code-postprocessing/bbob_pproc/ppfig.py | 7 ++++--- code-postprocessing/bbob_pproc/testbedsettings.py | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 8d4f372fa..649ef88fc 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -187,13 +187,14 @@ def getRldLink(htmlPage, currentDir, isBiobjective): ignoreFileExists=ignoreFileExists) if htmlPage in (HtmlPage.TWO, HtmlPage.MANY) or not isBiobjective: - fileName = '%s_%02dD.html' % (genericsettings.pprldmany_file_name, 2) - # Wassim: the smallest dimension should not be hard coded but at least reliant on the suite-name + fileName = '%s_%02dD.html' % (genericsettings.pprldmany_file_name, testbedsettings.current_testbed.first_dimension) + # Wassim: now uses testbedsettings.current_testbed.first_dimension instead of hard-coded 2 links += addLink(currentDir, folder, fileName, 'Runtime distribution plots (per dimension)', ignoreFileExists=ignoreFileExists) if htmlPage == HtmlPage.ONE: - fileName = '%s_%02dD.html' % (genericsettings.pprldmany_group_file_name, 2) + fileName = '%s_%02dD.html' % (genericsettings.pprldmany_group_file_name, testbedsettings.current_testbed.first_dimension) + # Wassim: now uses testbedsettings.current_testbed.first_dimension instead of hard-coded 2 links += addLink(currentDir, folder, fileName, 'Runtime distribution plots by group (per dimension)', ignoreFileExists=ignoreFileExists) diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index d2207aa4c..e0ccdbce6 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -152,7 +152,7 @@ class LargeScaleTestbed(SingleObjectiveTestbed): def __init__(self, targetValues): super(LargeScaleTestbed, self).__init__(targetValues) - self.first_dimension = 2 + self.first_dimension = 20 # Wassim: added the following self.dimensions_to_display = [20, 40, 80, 160, 320, 640] self.tabDimsOfInterest = [80, 320] From 02aae3a16198733513bf61f8fe4618f22d2d867f Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 17:55:24 +0200 Subject: [PATCH 225/446] pproc: the first dimension of Runtime distribution plots (per dimension) and Runtime distribution plots by group (per dimension) is now taken from testbedsetting.current_testbed.first_dimension instead of being fixed at 2 --- code-postprocessing/bbob_pproc/ppfig.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 649ef88fc..f70bb50a9 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -189,12 +189,13 @@ def getRldLink(htmlPage, currentDir, isBiobjective): if htmlPage in (HtmlPage.TWO, HtmlPage.MANY) or not isBiobjective: fileName = '%s_%02dD.html' % (genericsettings.pprldmany_file_name, testbedsettings.current_testbed.first_dimension) # Wassim: now uses testbedsettings.current_testbed.first_dimension instead of hard-coded 2 + # Wassim: TODO: make so that non-present plots are still clickable so one can get the next dim links += addLink(currentDir, folder, fileName, 'Runtime distribution plots (per dimension)', ignoreFileExists=ignoreFileExists) if htmlPage == HtmlPage.ONE: fileName = '%s_%02dD.html' % (genericsettings.pprldmany_group_file_name, testbedsettings.current_testbed.first_dimension) - # Wassim: now uses testbedsettings.current_testbed.first_dimension instead of hard-coded 2 + # Wassim: now uses testbedsettings.current_testbed.first_dimension instead of hard-coded 2 links += addLink(currentDir, folder, fileName, 'Runtime distribution plots by group (per dimension)', ignoreFileExists=ignoreFileExists) From 3572a1c319c3d6a2fc0e5a5ac11b77d003e9500d Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 17:55:24 +0200 Subject: [PATCH 226/446] pproc: the first dimension of Runtime distribution plots (per dimension) and Runtime distribution plots by group (per dimension) is now taken from testbedsetting.current_testbed.first_dimension instead of being fixed at 2 --- code-postprocessing/bbob_pproc/ppfig.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 649ef88fc..f70bb50a9 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -189,12 +189,13 @@ def getRldLink(htmlPage, currentDir, isBiobjective): if htmlPage in (HtmlPage.TWO, HtmlPage.MANY) or not isBiobjective: fileName = '%s_%02dD.html' % (genericsettings.pprldmany_file_name, testbedsettings.current_testbed.first_dimension) # Wassim: now uses testbedsettings.current_testbed.first_dimension instead of hard-coded 2 + # Wassim: TODO: make so that non-present plots are still clickable so one can get the next dim links += addLink(currentDir, folder, fileName, 'Runtime distribution plots (per dimension)', ignoreFileExists=ignoreFileExists) if htmlPage == HtmlPage.ONE: fileName = '%s_%02dD.html' % (genericsettings.pprldmany_group_file_name, testbedsettings.current_testbed.first_dimension) - # Wassim: now uses testbedsettings.current_testbed.first_dimension instead of hard-coded 2 + # Wassim: now uses testbedsettings.current_testbed.first_dimension instead of hard-coded 2 links += addLink(currentDir, folder, fileName, 'Runtime distribution plots by group (per dimension)', ignoreFileExists=ignoreFileExists) From de1cfddd63bc7c653bd305af4c8c962f2842a48d Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 19:26:09 +0200 Subject: [PATCH 227/446] pproc: added large-scale captions to latex_commands_for_html.html --- .../bbob_pproc/compall/pprldmany.py | 1 + code-postprocessing/bbob_pproc/htmldesc.py | 1 - .../bbob_pproc/latex_commands_for_html.html | 176 +++++++++++++++++- code-postprocessing/bbob_pproc/ppfig.py | 7 +- .../bbob_pproc/testbedsettings.py | 7 +- 5 files changed, 183 insertions(+), 9 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/pprldmany.py b/code-postprocessing/bbob_pproc/compall/pprldmany.py index 3d89d16a7..81ec5bb08 100644 --- a/code-postprocessing/bbob_pproc/compall/pprldmany.py +++ b/code-postprocessing/bbob_pproc/compall/pprldmany.py @@ -616,6 +616,7 @@ def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', dictDimList = pp.dictAlgByDim(dictAlg) dims = sorted(dictDimList) + for i, dim in enumerate(dims): divisor = dim if divide_by_dimension else 1 diff --git a/code-postprocessing/bbob_pproc/htmldesc.py b/code-postprocessing/bbob_pproc/htmldesc.py index 27a1b49d9..3c6a5e1bb 100644 --- a/code-postprocessing/bbob_pproc/htmldesc.py +++ b/code-postprocessing/bbob_pproc/htmldesc.py @@ -23,7 +23,6 @@ def getValue(key): if (not descriptions): htmlFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), genericsettings.latex_commands_for_html + '.html') - if not os.path.isfile(htmlFile): return '' diff --git a/code-postprocessing/bbob_pproc/latex_commands_for_html.html b/code-postprocessing/bbob_pproc/latex_commands_for_html.html index 4a5b71d91..ee0a9854a 100644 --- a/code-postprocessing/bbob_pproc/latex_commands_for_html.html +++ b/code-postprocessing/bbob_pproc/latex_commands_for_html.html @@ -402,22 +402,192 @@ Each cross (+) represents a single function, the line is the geometric mean. +
+##bbobECDFslegendlargescalefixed80## + +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 80-D. + +
+##bbobECDFslegendlargescalefixed320## + +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 320-D. + +
+##bbobppfigslegendlargescalefixed## + +Average running time (aRT in number of f-evaluations +as log10 value), divided by dimension for target function value BBOBPPFIGSFTARGET +versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f24. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six). + +
+##bbobpprldistrlegendlargescalefixed## + +Empirical cumulative distribution functions (ECDF), plotting the fraction of +trials with an outcome not larger than the respective value on the x-axis. +Left subplots: ECDF of the number of function evaluations (FEvals) divided by search space dimension D, +to fall below fopt+∆f with ∆f +=10k, where k is the first value in the legend. +The thick red line represents the most difficult target value fopt+10−8. Legends indicate for each target the number of functions that were solved in at +least one trial within the displayed budget. Right subplots: ECDF of the +best achieved ∆f +for running times of 0.5D, 1.2D, 3D, 10D, 100D, 1000D,... +function evaluations +(from right to left cycling cyan-magenta-black...) and final ∆f-value (red), +where ∆f and Df denote the difference to the optimal function value. Light brown lines in the background show ECDFs for the most difficult target of all +algorithms benchmarked during BBOB-2009. + +
+##bbobpprldistrlegendtwolargescalefixed## + +Empirical cumulative distributions (ECDF) +of run lengths and speed-up ratios in 80-D (left) and 320-D (right). +Left sub-columns: ECDF of +the number of function evaluations divided by dimension D +(FEvals/D) to reach a target value fopt+∆f with ∆f +=10k, where +k is given by the first value in the legend, for +algorithmA (°) and algorithmB () . Right sub-columns: +ECDF of FEval ratios of algorithmA divided by algorithmB for target +function values 10k with k given in the legend; all +trial pairs for each function. Pairs where both trials failed are disregarded, +pairs where one trial failed are visible in the limits being > 0 or < 1. The +legend also indicates, after the colon, the number of functions that were +solved in at least one trial (algorithmA first). + +
+##bbobppfigdimlegendlargescalefixed## + +Scaling of runtime to reach fopt+10# with dimension; +runtime is measured in number of f-evaluations and # is given in the legend; +Lines: average runtime (aRT); +Cross (+): median runtime of successful runs to reach the most difficult +target that was reached at least once (but not always); +Cross (×): maximum number of +f-evaluations in any trial. Notched +boxes: interquartile range with median of simulated runs; +All values are divided by dimension and +plotted as log10 values versus dimension. Numbers above aRT-symbols (if appearing) indicate the number of trials +reaching the respective target. Horizontal lines mean linear scaling, slanted +grid lines depict quadratic scaling. + +
+##bbobpptablecaptionlargescalefixed## + +Average running time (aRT in number of function +evaluations). The aRT  +and in braces, as dispersion measure, the half difference between 90 and +10%-tile of bootstrapped run lengths appear in the second row of each cell, +the best aRT  in the first. The different target ∆f-values are shown in the top row. +#succ is the number of trials that reached the (final) target fopt+ 10−8. +The median number of conducted function evaluations is additionally given in +italics, if the target in the last column was never reached. + +
+##bbobpptablestwolegendlargescalefixed## + +Average running time (aRT in number of function +evaluations) in +dimensions 80 (left) and 320 (right). +The aRT and in braces, as dispersion measure, the half difference between 10 +and 90%-tile of bootstrapped run lengths appear for each algorithm and +target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. +#succ is the number of trials that reached the (final) target +fopt+ 10−8. +The median number of conducted function evaluations is additionally given in +italics, if the last target was never reached. +1:algorithmAshort is algorithmA and 2:algorithmBshort is algorithmB. +Bold entries are statistically significantly better compared to the other algorithm, +with p=0.05 or p=10−k where k ∈ {2,3,4,...} is the number +following the ∗ symbol, with Bonferroni correction of 48. + +
+##bbobpptablesmanylegendlargescalefixed80## + +Average running time (aRT in number of function +evaluations) in +dimension 80. +The aRT and in braces, as dispersion measure, the half difference between +10 and 90%-tile of bootstrapped run lengths appear for each algorithm and +target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. +#succ is the number of trials that reached the (final) target +fopt+ 10−8. +The median number of conducted function evaluations is additionally given in +italics, if the target in the last column was never reached. +Entries, succeeded by a star, are statistically significantly better (according to +the rank-sum test) when compared to all other algorithms of the table, with +p = 0.05 or p = 10−k when the number k following the star is larger +than 1, with Bonferroni correction of 48. + +
+##bbobpptablesmanylegendlargescalefixed320## + +Average running time (aRT in number of function +evaluations) in +dimension 320. +The aRT and in braces, as dispersion measure, the half difference between +10 and 90%-tile of bootstrapped run lengths appear for each algorithm and +target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. +#succ is the number of trials that reached the (final) target +fopt+ 10−8. +The median number of conducted function evaluations is additionally given in +italics, if the target in the last column was never reached. +Entries, succeeded by a star, are statistically significantly better (according to +the rank-sum test) when compared to all other algorithms of the table, with +p = 0.05 or p = 10−k when the number k following the star is larger +than 1, with Bonferroni correction of 48. + +
+##bbobppscatterlegendlargescalefixed## + +Average running time (aRT in log10 of number of function evaluations) +of algorithmB (x-axis) versus algorithmA (y-axis) for NBTARGETS target values +∆f ∈ [NBLOW, NBUP] in each dimension on functions f1 - f24. Markers on the upper or right edge indicate that the respective target +value was never reached. Markers represent dimension: +2:+, +3:\triangledown, +5:, +10:°, +20:[¯], +40:\Diamond. + +
+##bbobloglosstablecaptionlargescalefixed## + +aRT loss ratio versus the budget in number of f-evaluations +divided by dimension. +For each given budget FEvals, the target value ft is computed +as the best target f-value reached within the +budget by the given algorithm. +Shown is then the aRT to reach ft for the given algorithm. +Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median +(box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio +(points). The vertical line gives the maximal number of function evaluations +in a single trial in this function subset. See also +the following figure for results on each function subgroup. + +
+##bbobloglossfigurecaptionlargescalefixed## + +aRT loss ratios (see the previous figure for details). +Each cross (+) represents a single function, the line +is the geometric mean. +
##bbobECDFslegendbiobjfixed5## -Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 5-D. +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 5-D.
##bbobECDFslegendbiobjfixed20## -Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 20-D. +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 20-D.
##bbobppfigslegendbiobjfixed## Average running time (aRT in number of f-evaluations as log10 value), divided by dimension for target function value BBOBPPFIGSFTARGET - versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f55. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six). + versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f55. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six).
##bbobpprldistrlegendbiobjfixed## diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index f70bb50a9..d70bb8188 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -180,6 +180,7 @@ def getRldLink(htmlPage, currentDir, isBiobjective): folder = 'pprldmany-single-functions' ignoreFileExists = genericsettings.isRldOnSingleFcts + # Wassim: why is this set to True? We shouldn't generate pages for nonn-existing plots or at least the pages should just be clickable to get the next one if htmlPage in (HtmlPage.ONE, HtmlPage.TWO, HtmlPage.MANY): if htmlPage == HtmlPage.ONE: fileName = '%s.html' % genericsettings.pprldmany_file_name @@ -189,7 +190,7 @@ def getRldLink(htmlPage, currentDir, isBiobjective): if htmlPage in (HtmlPage.TWO, HtmlPage.MANY) or not isBiobjective: fileName = '%s_%02dD.html' % (genericsettings.pprldmany_file_name, testbedsettings.current_testbed.first_dimension) # Wassim: now uses testbedsettings.current_testbed.first_dimension instead of hard-coded 2 - # Wassim: TODO: make so that non-present plots are still clickable so one can get the next dim + # Wassim: TODO: make so that non-present plots are still clickable so one can get the next dim links += addLink(currentDir, folder, fileName, 'Runtime distribution plots (per dimension)', ignoreFileExists=ignoreFileExists) @@ -314,7 +315,7 @@ def save_single_functions_html(filename, f.write(captionStringFormat % '##bbobppfigslegend##') - write_ECDF(f, 5, extension, captionStringFormat, functionGroups) + write_ECDF(f, 5, extension, captionStringFormat, functionGroups) # Wasssim: why constant values?!!! write_ECDF(f, 20, extension, captionStringFormat, functionGroups) write_pptables(f, 5, captionStringFormat, first_function_number, last_function_number, bestAlgExists) @@ -350,7 +351,7 @@ def save_single_functions_html(filename, elif htmlPage is HtmlPage.PPRLDISTR: names = ['pprldistr', 'ppfvdistr'] - dimensions = [5, 20] + dimensions = [5, 20] # Wassim: why constant values??!!! headerECDF = ' Empirical cumulative distribution functions (ECDF)' f.write("

%s

\n" % headerECDF) diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index e0ccdbce6..2a81bb84d 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -5,7 +5,8 @@ scenario_rlbased = 'rlbased' scenario_fixed = 'fixed' scenario_biobjfixed = 'biobjfixed' -all_scenarios = [scenario_rlbased, scenario_fixed, scenario_biobjfixed] +scenario_largescalefixed = 'largescalefixed' +all_scenarios = [scenario_rlbased, scenario_fixed, scenario_biobjfixed, scenario_largescalefixed] testbed_name_single = 'bbob' testbed_name_largescale = 'bbob-largescale' @@ -98,7 +99,6 @@ def __init__(self, targetValues): self.pptable_targetsOfInterest = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7)) # for pptable and pptables self.pptable2_targetsOfInterest = targetValues((1e+1, 1e-1, 1e-3, 1e-5, 1e-7)) # used for pptable2 self.pptablemany_targetsOfInterest = self.pptable_targetsOfInterest - self.scenario = scenario_fixed self.short_names = get_short_names(get_benchmarks_short_infos(False)) # expensive optimization settings: self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting @@ -120,6 +120,7 @@ class GECCOBBOBTestbed(SingleObjectiveTestbed): #Wassim: now inherits from Singl def __init__(self, targetValues): super(GECCOBBOBTestbed, self).__init__(targetValues) self.first_dimension = 2 + self.scenario = scenario_fixed self.dimensions_to_display = [2, 3, 5, 10, 20, 40] self.tabDimsOfInterest = [5, 20] self.rldDimsOfInterest = [5, 20] @@ -136,6 +137,7 @@ def __init__(self, target_values): # Until we clean the code which uses this name we need to use it also here. self.first_dimension = 2 + self.scenario = scenario_fixed self.dimensions_to_display = [2, 3, 5, 10, 20, 40] self.tabDimsOfInterest = [5, 20] self.rldDimsOfInterest = [5, 20] @@ -153,6 +155,7 @@ class LargeScaleTestbed(SingleObjectiveTestbed): def __init__(self, targetValues): super(LargeScaleTestbed, self).__init__(targetValues) self.first_dimension = 20 + self.scenario = scenario_largescalefixed # Wassim: added the following self.dimensions_to_display = [20, 40, 80, 160, 320, 640] self.tabDimsOfInterest = [80, 320] From 5041ee5fe6598f57cb652d7a085a97271b859e9b Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 19:26:09 +0200 Subject: [PATCH 228/446] pproc: added large-scale captions to latex_commands_for_html.html --- .../bbob_pproc/compall/pprldmany.py | 1 + code-postprocessing/bbob_pproc/htmldesc.py | 1 - .../bbob_pproc/latex_commands_for_html.html | 176 +++++++++++++++++- code-postprocessing/bbob_pproc/ppfig.py | 7 +- .../bbob_pproc/testbedsettings.py | 7 +- 5 files changed, 183 insertions(+), 9 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/pprldmany.py b/code-postprocessing/bbob_pproc/compall/pprldmany.py index 3d89d16a7..81ec5bb08 100644 --- a/code-postprocessing/bbob_pproc/compall/pprldmany.py +++ b/code-postprocessing/bbob_pproc/compall/pprldmany.py @@ -616,6 +616,7 @@ def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', dictDimList = pp.dictAlgByDim(dictAlg) dims = sorted(dictDimList) + for i, dim in enumerate(dims): divisor = dim if divide_by_dimension else 1 diff --git a/code-postprocessing/bbob_pproc/htmldesc.py b/code-postprocessing/bbob_pproc/htmldesc.py index 27a1b49d9..3c6a5e1bb 100644 --- a/code-postprocessing/bbob_pproc/htmldesc.py +++ b/code-postprocessing/bbob_pproc/htmldesc.py @@ -23,7 +23,6 @@ def getValue(key): if (not descriptions): htmlFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), genericsettings.latex_commands_for_html + '.html') - if not os.path.isfile(htmlFile): return '' diff --git a/code-postprocessing/bbob_pproc/latex_commands_for_html.html b/code-postprocessing/bbob_pproc/latex_commands_for_html.html index 4a5b71d91..ee0a9854a 100644 --- a/code-postprocessing/bbob_pproc/latex_commands_for_html.html +++ b/code-postprocessing/bbob_pproc/latex_commands_for_html.html @@ -402,22 +402,192 @@ Each cross (+) represents a single function, the line is the geometric mean. +
+##bbobECDFslegendlargescalefixed80## + +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 80-D. + +
+##bbobECDFslegendlargescalefixed320## + +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 320-D. + +
+##bbobppfigslegendlargescalefixed## + +Average running time (aRT in number of f-evaluations +as log10 value), divided by dimension for target function value BBOBPPFIGSFTARGET +versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f24. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six). + +
+##bbobpprldistrlegendlargescalefixed## + +Empirical cumulative distribution functions (ECDF), plotting the fraction of +trials with an outcome not larger than the respective value on the x-axis. +Left subplots: ECDF of the number of function evaluations (FEvals) divided by search space dimension D, +to fall below fopt+∆f with ∆f +=10k, where k is the first value in the legend. +The thick red line represents the most difficult target value fopt+10−8. Legends indicate for each target the number of functions that were solved in at +least one trial within the displayed budget. Right subplots: ECDF of the +best achieved ∆f +for running times of 0.5D, 1.2D, 3D, 10D, 100D, 1000D,... +function evaluations +(from right to left cycling cyan-magenta-black...) and final ∆f-value (red), +where ∆f and Df denote the difference to the optimal function value. Light brown lines in the background show ECDFs for the most difficult target of all +algorithms benchmarked during BBOB-2009. + +
+##bbobpprldistrlegendtwolargescalefixed## + +Empirical cumulative distributions (ECDF) +of run lengths and speed-up ratios in 80-D (left) and 320-D (right). +Left sub-columns: ECDF of +the number of function evaluations divided by dimension D +(FEvals/D) to reach a target value fopt+∆f with ∆f +=10k, where +k is given by the first value in the legend, for +algorithmA (°) and algorithmB () . Right sub-columns: +ECDF of FEval ratios of algorithmA divided by algorithmB for target +function values 10k with k given in the legend; all +trial pairs for each function. Pairs where both trials failed are disregarded, +pairs where one trial failed are visible in the limits being > 0 or < 1. The +legend also indicates, after the colon, the number of functions that were +solved in at least one trial (algorithmA first). + +
+##bbobppfigdimlegendlargescalefixed## + +Scaling of runtime to reach fopt+10# with dimension; +runtime is measured in number of f-evaluations and # is given in the legend; +Lines: average runtime (aRT); +Cross (+): median runtime of successful runs to reach the most difficult +target that was reached at least once (but not always); +Cross (×): maximum number of +f-evaluations in any trial. Notched +boxes: interquartile range with median of simulated runs; +All values are divided by dimension and +plotted as log10 values versus dimension. Numbers above aRT-symbols (if appearing) indicate the number of trials +reaching the respective target. Horizontal lines mean linear scaling, slanted +grid lines depict quadratic scaling. + +
+##bbobpptablecaptionlargescalefixed## + +Average running time (aRT in number of function +evaluations). The aRT  +and in braces, as dispersion measure, the half difference between 90 and +10%-tile of bootstrapped run lengths appear in the second row of each cell, +the best aRT  in the first. The different target ∆f-values are shown in the top row. +#succ is the number of trials that reached the (final) target fopt+ 10−8. +The median number of conducted function evaluations is additionally given in +italics, if the target in the last column was never reached. + +
+##bbobpptablestwolegendlargescalefixed## + +Average running time (aRT in number of function +evaluations) in +dimensions 80 (left) and 320 (right). +The aRT and in braces, as dispersion measure, the half difference between 10 +and 90%-tile of bootstrapped run lengths appear for each algorithm and +target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. +#succ is the number of trials that reached the (final) target +fopt+ 10−8. +The median number of conducted function evaluations is additionally given in +italics, if the last target was never reached. +1:algorithmAshort is algorithmA and 2:algorithmBshort is algorithmB. +Bold entries are statistically significantly better compared to the other algorithm, +with p=0.05 or p=10−k where k ∈ {2,3,4,...} is the number +following the ∗ symbol, with Bonferroni correction of 48. + +
+##bbobpptablesmanylegendlargescalefixed80## + +Average running time (aRT in number of function +evaluations) in +dimension 80. +The aRT and in braces, as dispersion measure, the half difference between +10 and 90%-tile of bootstrapped run lengths appear for each algorithm and +target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. +#succ is the number of trials that reached the (final) target +fopt+ 10−8. +The median number of conducted function evaluations is additionally given in +italics, if the target in the last column was never reached. +Entries, succeeded by a star, are statistically significantly better (according to +the rank-sum test) when compared to all other algorithms of the table, with +p = 0.05 or p = 10−k when the number k following the star is larger +than 1, with Bonferroni correction of 48. + +
+##bbobpptablesmanylegendlargescalefixed320## + +Average running time (aRT in number of function +evaluations) in +dimension 320. +The aRT and in braces, as dispersion measure, the half difference between +10 and 90%-tile of bootstrapped run lengths appear for each algorithm and +target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. +#succ is the number of trials that reached the (final) target +fopt+ 10−8. +The median number of conducted function evaluations is additionally given in +italics, if the target in the last column was never reached. +Entries, succeeded by a star, are statistically significantly better (according to +the rank-sum test) when compared to all other algorithms of the table, with +p = 0.05 or p = 10−k when the number k following the star is larger +than 1, with Bonferroni correction of 48. + +
+##bbobppscatterlegendlargescalefixed## + +Average running time (aRT in log10 of number of function evaluations) +of algorithmB (x-axis) versus algorithmA (y-axis) for NBTARGETS target values +∆f ∈ [NBLOW, NBUP] in each dimension on functions f1 - f24. Markers on the upper or right edge indicate that the respective target +value was never reached. Markers represent dimension: +2:+, +3:\triangledown, +5:, +10:°, +20:[¯], +40:\Diamond. + +
+##bbobloglosstablecaptionlargescalefixed## + +aRT loss ratio versus the budget in number of f-evaluations +divided by dimension. +For each given budget FEvals, the target value ft is computed +as the best target f-value reached within the +budget by the given algorithm. +Shown is then the aRT to reach ft for the given algorithm. +Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median +(box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio +(points). The vertical line gives the maximal number of function evaluations +in a single trial in this function subset. See also +the following figure for results on each function subgroup. + +
+##bbobloglossfigurecaptionlargescalefixed## + +aRT loss ratios (see the previous figure for details). +Each cross (+) represents a single function, the line +is the geometric mean. +
##bbobECDFslegendbiobjfixed5## -Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 5-D. +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 5-D.
##bbobECDFslegendbiobjfixed20## -Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 20-D. +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 20-D.
##bbobppfigslegendbiobjfixed## Average running time (aRT in number of f-evaluations as log10 value), divided by dimension for target function value BBOBPPFIGSFTARGET - versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f55. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six). + versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f55. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six).
##bbobpprldistrlegendbiobjfixed## diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index f70bb50a9..d70bb8188 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -180,6 +180,7 @@ def getRldLink(htmlPage, currentDir, isBiobjective): folder = 'pprldmany-single-functions' ignoreFileExists = genericsettings.isRldOnSingleFcts + # Wassim: why is this set to True? We shouldn't generate pages for nonn-existing plots or at least the pages should just be clickable to get the next one if htmlPage in (HtmlPage.ONE, HtmlPage.TWO, HtmlPage.MANY): if htmlPage == HtmlPage.ONE: fileName = '%s.html' % genericsettings.pprldmany_file_name @@ -189,7 +190,7 @@ def getRldLink(htmlPage, currentDir, isBiobjective): if htmlPage in (HtmlPage.TWO, HtmlPage.MANY) or not isBiobjective: fileName = '%s_%02dD.html' % (genericsettings.pprldmany_file_name, testbedsettings.current_testbed.first_dimension) # Wassim: now uses testbedsettings.current_testbed.first_dimension instead of hard-coded 2 - # Wassim: TODO: make so that non-present plots are still clickable so one can get the next dim + # Wassim: TODO: make so that non-present plots are still clickable so one can get the next dim links += addLink(currentDir, folder, fileName, 'Runtime distribution plots (per dimension)', ignoreFileExists=ignoreFileExists) @@ -314,7 +315,7 @@ def save_single_functions_html(filename, f.write(captionStringFormat % '##bbobppfigslegend##') - write_ECDF(f, 5, extension, captionStringFormat, functionGroups) + write_ECDF(f, 5, extension, captionStringFormat, functionGroups) # Wasssim: why constant values?!!! write_ECDF(f, 20, extension, captionStringFormat, functionGroups) write_pptables(f, 5, captionStringFormat, first_function_number, last_function_number, bestAlgExists) @@ -350,7 +351,7 @@ def save_single_functions_html(filename, elif htmlPage is HtmlPage.PPRLDISTR: names = ['pprldistr', 'ppfvdistr'] - dimensions = [5, 20] + dimensions = [5, 20] # Wassim: why constant values??!!! headerECDF = ' Empirical cumulative distribution functions (ECDF)' f.write("

%s

\n" % headerECDF) diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index e0ccdbce6..2a81bb84d 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -5,7 +5,8 @@ scenario_rlbased = 'rlbased' scenario_fixed = 'fixed' scenario_biobjfixed = 'biobjfixed' -all_scenarios = [scenario_rlbased, scenario_fixed, scenario_biobjfixed] +scenario_largescalefixed = 'largescalefixed' +all_scenarios = [scenario_rlbased, scenario_fixed, scenario_biobjfixed, scenario_largescalefixed] testbed_name_single = 'bbob' testbed_name_largescale = 'bbob-largescale' @@ -98,7 +99,6 @@ def __init__(self, targetValues): self.pptable_targetsOfInterest = targetValues((10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7)) # for pptable and pptables self.pptable2_targetsOfInterest = targetValues((1e+1, 1e-1, 1e-3, 1e-5, 1e-7)) # used for pptable2 self.pptablemany_targetsOfInterest = self.pptable_targetsOfInterest - self.scenario = scenario_fixed self.short_names = get_short_names(get_benchmarks_short_infos(False)) # expensive optimization settings: self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting @@ -120,6 +120,7 @@ class GECCOBBOBTestbed(SingleObjectiveTestbed): #Wassim: now inherits from Singl def __init__(self, targetValues): super(GECCOBBOBTestbed, self).__init__(targetValues) self.first_dimension = 2 + self.scenario = scenario_fixed self.dimensions_to_display = [2, 3, 5, 10, 20, 40] self.tabDimsOfInterest = [5, 20] self.rldDimsOfInterest = [5, 20] @@ -136,6 +137,7 @@ def __init__(self, target_values): # Until we clean the code which uses this name we need to use it also here. self.first_dimension = 2 + self.scenario = scenario_fixed self.dimensions_to_display = [2, 3, 5, 10, 20, 40] self.tabDimsOfInterest = [5, 20] self.rldDimsOfInterest = [5, 20] @@ -153,6 +155,7 @@ class LargeScaleTestbed(SingleObjectiveTestbed): def __init__(self, targetValues): super(LargeScaleTestbed, self).__init__(targetValues) self.first_dimension = 20 + self.scenario = scenario_largescalefixed # Wassim: added the following self.dimensions_to_display = [20, 40, 80, 160, 320, 640] self.tabDimsOfInterest = [80, 320] From c6d903a080d28af616643307b8c6f3f6671c852e Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 23:26:43 +0200 Subject: [PATCH 229/446] pproc: pprldistr html pages now correctly use testbedsetting.current_testbed.htmlDimsOfInterest --- code-postprocessing/bbob_pproc/ppfig.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index d70bb8188..5d687ec01 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -351,8 +351,8 @@ def save_single_functions_html(filename, elif htmlPage is HtmlPage.PPRLDISTR: names = ['pprldistr', 'ppfvdistr'] - dimensions = [5, 20] # Wassim: why constant values??!!! - + #dimensions = [5, 20] # Wassim: why constant values??!!! now uses htmlDimsOfInterest from current_testbed + dimensions = testbedsettings.current_testbed.htmlDimsOfInterest headerECDF = ' Empirical cumulative distribution functions (ECDF)' f.write("

%s

\n" % headerECDF) for dimension in dimensions: From 76f2021be4797ffbcd98f42911c8f8d8c218184c Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 23:26:43 +0200 Subject: [PATCH 230/446] pproc: pprldistr html pages now correctly use testbedsetting.current_testbed.htmlDimsOfInterest --- code-postprocessing/bbob_pproc/ppfig.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index d70bb8188..5d687ec01 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -351,8 +351,8 @@ def save_single_functions_html(filename, elif htmlPage is HtmlPage.PPRLDISTR: names = ['pprldistr', 'ppfvdistr'] - dimensions = [5, 20] # Wassim: why constant values??!!! - + #dimensions = [5, 20] # Wassim: why constant values??!!! now uses htmlDimsOfInterest from current_testbed + dimensions = testbedsettings.current_testbed.htmlDimsOfInterest headerECDF = ' Empirical cumulative distribution functions (ECDF)' f.write("

%s

\n" % headerECDF) for dimension in dimensions: From c5353c4725c47301dd49900d1980649626d15d0c Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 23:53:04 +0200 Subject: [PATCH 231/446] pproc: now aRT loss ratios only plotted when a best_algorithm_filename is provided --- code-postprocessing/bbob_pproc/ppfig.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 5d687ec01..b8cbc0eb6 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -367,8 +367,9 @@ def save_single_functions_html(filename, f.write(captionStringFormat % htmldesc.getValue('##' + key + '##')) elif htmlPage is HtmlPage.PPLOGLOSS: - dimensions = [5, 20] - if not isBiobjective: + # dimensions = [5, 20] # Wassim: should not be constant + dimensions = testbedsettings.current_testbed.htmlDimsOfInterest + if testbedsettings.current_testbed.best_algorithm_filename: #isBiobjective: # Wassim: TODO: should depend on what bestalgorithmdata loads, not isBiobjctive, now checks whether a file is provided currentHeader = 'aRT loss ratios' f.write("

%s

\n" % currentHeader) for dimension in dimensions: From 7c61dbf2887bcd185adebe3470e3d0511f1b0408 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 19 May 2016 23:53:04 +0200 Subject: [PATCH 232/446] pproc: now aRT loss ratios only plotted when a best_algorithm_filename is provided --- code-postprocessing/bbob_pproc/ppfig.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 5d687ec01..b8cbc0eb6 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -367,8 +367,9 @@ def save_single_functions_html(filename, f.write(captionStringFormat % htmldesc.getValue('##' + key + '##')) elif htmlPage is HtmlPage.PPLOGLOSS: - dimensions = [5, 20] - if not isBiobjective: + # dimensions = [5, 20] # Wassim: should not be constant + dimensions = testbedsettings.current_testbed.htmlDimsOfInterest + if testbedsettings.current_testbed.best_algorithm_filename: #isBiobjective: # Wassim: TODO: should depend on what bestalgorithmdata loads, not isBiobjctive, now checks whether a file is provided currentHeader = 'aRT loss ratios' f.write("

%s

\n" % currentHeader) for dimension in dimensions: From c5c9d520de1e9441e206dd75bd6916077d797cae Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 20 May 2016 00:00:13 +0200 Subject: [PATCH 233/446] pproc: updated dimensions used in Empirical Cumulative Distribution Functions (ECDFs) per function group for dimension --- code-postprocessing/bbob_pproc/ppfig.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index b8cbc0eb6..ccdd7a003 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -315,11 +315,11 @@ def save_single_functions_html(filename, f.write(captionStringFormat % '##bbobppfigslegend##') - write_ECDF(f, 5, extension, captionStringFormat, functionGroups) # Wasssim: why constant values?!!! - write_ECDF(f, 20, extension, captionStringFormat, functionGroups) + write_ECDF(f, testbedsettings.current_testbed.htmlDimsOfInterest[0], extension, captionStringFormat, functionGroups) # Wasssim: why constant values?!!! + write_ECDF(f, testbedsettings.current_testbed.htmlDimsOfInterest[1], extension, captionStringFormat, functionGroups) - write_pptables(f, 5, captionStringFormat, first_function_number, last_function_number, bestAlgExists) - write_pptables(f, 20, captionStringFormat, first_function_number, last_function_number, bestAlgExists) + write_pptables(f, testbedsettings.current_testbed.htmlDimsOfInterest[0], captionStringFormat, first_function_number, last_function_number, bestAlgExists) + write_pptables(f, testbedsettings.current_testbed.htmlDimsOfInterest[1], captionStringFormat, first_function_number, last_function_number, bestAlgExists) elif htmlPage is HtmlPage.NON_SPECIFIED: currentHeader = header From 010fb164ae929c7c3a07549321de5b192e36306e Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 20 May 2016 00:00:13 +0200 Subject: [PATCH 234/446] pproc: updated dimensions used in Empirical Cumulative Distribution Functions (ECDFs) per function group for dimension --- code-postprocessing/bbob_pproc/ppfig.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index b8cbc0eb6..ccdd7a003 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -315,11 +315,11 @@ def save_single_functions_html(filename, f.write(captionStringFormat % '##bbobppfigslegend##') - write_ECDF(f, 5, extension, captionStringFormat, functionGroups) # Wasssim: why constant values?!!! - write_ECDF(f, 20, extension, captionStringFormat, functionGroups) + write_ECDF(f, testbedsettings.current_testbed.htmlDimsOfInterest[0], extension, captionStringFormat, functionGroups) # Wasssim: why constant values?!!! + write_ECDF(f, testbedsettings.current_testbed.htmlDimsOfInterest[1], extension, captionStringFormat, functionGroups) - write_pptables(f, 5, captionStringFormat, first_function_number, last_function_number, bestAlgExists) - write_pptables(f, 20, captionStringFormat, first_function_number, last_function_number, bestAlgExists) + write_pptables(f, testbedsettings.current_testbed.htmlDimsOfInterest[0], captionStringFormat, first_function_number, last_function_number, bestAlgExists) + write_pptables(f, testbedsettings.current_testbed.htmlDimsOfInterest[1], captionStringFormat, first_function_number, last_function_number, bestAlgExists) elif htmlPage is HtmlPage.NON_SPECIFIED: currentHeader = header From 05e7193a6d51104c7655b6d849984b96853ab43d Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 20 May 2016 00:03:58 +0200 Subject: [PATCH 235/446] pproc: now aRT loss ratios only plotted when a best_algorithm_filename is provided, using bestAlgExists --- code-postprocessing/bbob_pproc/ppfig.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index ccdd7a003..d97c9ee72 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -242,7 +242,7 @@ def save_single_functions_html(filename, last_function_number = testbedsettings.current_testbed.last_function_number captionStringFormat = '

\n%s\n

' addLinkForNextDim = add_to_names.endswith('D') - bestAlgExists = not isBiobjective + bestAlgExists = bool(testbedsettings.current_testbed.best_algorithm_filename) #not isBiobjective # Wassim: or not isLargescale dimensions = testbedsettings.current_testbed.htmlDimsOfInterest #genericsettings.htmlDimsOfInterest_ls if genericsettings.isLargeScale else genericsettings.htmlDimsOfInterest @@ -369,7 +369,7 @@ def save_single_functions_html(filename, elif htmlPage is HtmlPage.PPLOGLOSS: # dimensions = [5, 20] # Wassim: should not be constant dimensions = testbedsettings.current_testbed.htmlDimsOfInterest - if testbedsettings.current_testbed.best_algorithm_filename: #isBiobjective: # Wassim: TODO: should depend on what bestalgorithmdata loads, not isBiobjctive, now checks whether a file is provided + if bestAlgExists: #isBiobjective: # Wassim: TODO: should depend on what bestalgorithmdata loads, not isBiobjctive, now checks whether a file is provided currentHeader = 'aRT loss ratios' f.write("

%s

\n" % currentHeader) for dimension in dimensions: From 1ae46cd4a02737691049d721a85c2eae75aeba0c Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 20 May 2016 00:03:58 +0200 Subject: [PATCH 236/446] pproc: now aRT loss ratios only plotted when a best_algorithm_filename is provided, using bestAlgExists --- code-postprocessing/bbob_pproc/ppfig.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index ccdd7a003..d97c9ee72 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -242,7 +242,7 @@ def save_single_functions_html(filename, last_function_number = testbedsettings.current_testbed.last_function_number captionStringFormat = '

\n%s\n

' addLinkForNextDim = add_to_names.endswith('D') - bestAlgExists = not isBiobjective + bestAlgExists = bool(testbedsettings.current_testbed.best_algorithm_filename) #not isBiobjective # Wassim: or not isLargescale dimensions = testbedsettings.current_testbed.htmlDimsOfInterest #genericsettings.htmlDimsOfInterest_ls if genericsettings.isLargeScale else genericsettings.htmlDimsOfInterest @@ -369,7 +369,7 @@ def save_single_functions_html(filename, elif htmlPage is HtmlPage.PPLOGLOSS: # dimensions = [5, 20] # Wassim: should not be constant dimensions = testbedsettings.current_testbed.htmlDimsOfInterest - if testbedsettings.current_testbed.best_algorithm_filename: #isBiobjective: # Wassim: TODO: should depend on what bestalgorithmdata loads, not isBiobjctive, now checks whether a file is provided + if bestAlgExists: #isBiobjective: # Wassim: TODO: should depend on what bestalgorithmdata loads, not isBiobjctive, now checks whether a file is provided currentHeader = 'aRT loss ratios' f.write("

%s

\n" % currentHeader) for dimension in dimensions: From af453e04abf4ae5765e12f51be29efdb668c63b8 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sat, 21 May 2016 14:37:03 +0200 Subject: [PATCH 237/446] pproc: more dimension generalizations and got rid of isLargeScale from genericsettings.py --- code-postprocessing/bbob_pproc/genericsettings.py | 2 +- .../bbob_pproc/latex_commands_for_html.html | 3 +-- code-postprocessing/bbob_pproc/preparetexforhtml.py | 12 +++++++----- code-postprocessing/bbob_pproc/testbedsettings.py | 5 +++++ 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 1d4b1e8f3..45255dc23 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -240,7 +240,7 @@ isExpensive = False isRldOnSingleFcts = True isRLDistr = True -isLargeScale = False # Wassim: added large scale tag +#isLargeScale = False # Wassim: should no longer be used, use testbedsetting objects instead ## isLogLoss = True # only affects rungeneric1 isPickled = False # only affects rungeneric1 diff --git a/code-postprocessing/bbob_pproc/latex_commands_for_html.html b/code-postprocessing/bbob_pproc/latex_commands_for_html.html index ee0a9854a..df7781c83 100644 --- a/code-postprocessing/bbob_pproc/latex_commands_for_html.html +++ b/code-postprocessing/bbob_pproc/latex_commands_for_html.html @@ -433,8 +433,7 @@ for running times of 0.5D, 1.2D, 3D, 10D, 100D, 1000D,... function evaluations (from right to left cycling cyan-magenta-black...) and final ∆f-value (red), -where ∆f and Df denote the difference to the optimal function value. Light brown lines in the background show ECDFs for the most difficult target of all -algorithms benchmarked during BBOB-2009. +where ∆f and Df denote the difference to the optimal function value.
##bbobpprldistrlegendtwolargescalefixed## diff --git a/code-postprocessing/bbob_pproc/preparetexforhtml.py b/code-postprocessing/bbob_pproc/preparetexforhtml.py index b67041853..a545fe78f 100644 --- a/code-postprocessing/bbob_pproc/preparetexforhtml.py +++ b/code-postprocessing/bbob_pproc/preparetexforhtml.py @@ -66,7 +66,6 @@ def main(latex_commands_for_html): single_objective_testbed = testbedsettings.default_testbed_single_noisy if genericsettings.isNoisy \ else testbedsettings.default_testbed_single - for scenario in testbedsettings.all_scenarios: # set up scenario, especially wrt genericsettings if scenario == testbedsettings.scenario_rlbased: @@ -78,6 +77,9 @@ def main(latex_commands_for_html): elif scenario == testbedsettings.scenario_biobjfixed: genericsettings.runlength_based_targets = False config.config(testbedsettings.default_testbed_bi) + elif scenario == testbedsettings.scenario_largescalefixed: + genericsettings.runlength_based_targets = False + config.config(testbedsettings.default_testbed_largescale) else: warnings.warn("Scenario not supported yet in HTML") @@ -132,8 +134,8 @@ def main(latex_commands_for_html): # prepare tags for later HTML preparation testbed = testbedsettings.current_testbed # 1. ppfigs - for dim in ['5', '20']: - f.write(prepare_item('bbobECDFslegend' + scenario + dim, 'bbobECDFslegend' + scenario, str(dim))) + for dim in testbed.htmlDimsOfInterest: #['5', '20']: # Wassim: + f.write(prepare_item('bbobECDFslegend' + scenario + str(dim), 'bbobECDFslegend' + scenario, str(dim))) param = '$f_{%d}$ and $f_{%d}$' % (testbed.first_function_number, testbed.last_function_number) f.write(prepare_item('bbobppfigslegend' + scenario, param=param)) @@ -149,9 +151,9 @@ def main(latex_commands_for_html): # 6. pptables command_name = 'bbobpptablesmanylegend' + scenario - for dim in ['5', '20']: + for dim in testbed.htmlDimsOfInterest: #['5', '20']: # Wassim: bonferroni = str(2 * (testbed.last_function_number - testbed.first_function_number + 1)) - f.write(prepare_item_two(command_name + dim, command_name, 'dimension ' + dim, bonferroni)) + f.write(prepare_item_two(command_name + str(dim), command_name, 'dimension ' + str(dim), bonferroni)) # 7. ppscatter param = '$f_{%d}$ - $f_{%d}$' % (testbed.first_function_number, testbed.last_function_number) diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 2a81bb84d..72c05ec3c 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -202,6 +202,11 @@ def __init__(self, targetValues): self.pptable2_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting self.pptables_target_runlengths = [2, 10, 50] # used in config for expensive setting + self.dimensions_to_display = [2, 3, 5, 10, 20, 40] + self.tabDimsOfInterest = [5, 20] + self.rldDimsOfInterest = [5, 20] + self.htmlDimsOfInterest = [5, 20] + From b6988bcd8f1ab062596dce584cddcaecc108c9c8 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sat, 21 May 2016 14:37:03 +0200 Subject: [PATCH 238/446] pproc: more dimension generalizations and got rid of isLargeScale from genericsettings.py --- code-postprocessing/bbob_pproc/genericsettings.py | 2 +- .../bbob_pproc/latex_commands_for_html.html | 3 +-- code-postprocessing/bbob_pproc/preparetexforhtml.py | 12 +++++++----- code-postprocessing/bbob_pproc/testbedsettings.py | 5 +++++ 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/code-postprocessing/bbob_pproc/genericsettings.py b/code-postprocessing/bbob_pproc/genericsettings.py index 1d4b1e8f3..45255dc23 100644 --- a/code-postprocessing/bbob_pproc/genericsettings.py +++ b/code-postprocessing/bbob_pproc/genericsettings.py @@ -240,7 +240,7 @@ isExpensive = False isRldOnSingleFcts = True isRLDistr = True -isLargeScale = False # Wassim: added large scale tag +#isLargeScale = False # Wassim: should no longer be used, use testbedsetting objects instead ## isLogLoss = True # only affects rungeneric1 isPickled = False # only affects rungeneric1 diff --git a/code-postprocessing/bbob_pproc/latex_commands_for_html.html b/code-postprocessing/bbob_pproc/latex_commands_for_html.html index ee0a9854a..df7781c83 100644 --- a/code-postprocessing/bbob_pproc/latex_commands_for_html.html +++ b/code-postprocessing/bbob_pproc/latex_commands_for_html.html @@ -433,8 +433,7 @@ for running times of 0.5D, 1.2D, 3D, 10D, 100D, 1000D,... function evaluations (from right to left cycling cyan-magenta-black...) and final ∆f-value (red), -where ∆f and Df denote the difference to the optimal function value. Light brown lines in the background show ECDFs for the most difficult target of all -algorithms benchmarked during BBOB-2009. +where ∆f and Df denote the difference to the optimal function value.
##bbobpprldistrlegendtwolargescalefixed## diff --git a/code-postprocessing/bbob_pproc/preparetexforhtml.py b/code-postprocessing/bbob_pproc/preparetexforhtml.py index b67041853..a545fe78f 100644 --- a/code-postprocessing/bbob_pproc/preparetexforhtml.py +++ b/code-postprocessing/bbob_pproc/preparetexforhtml.py @@ -66,7 +66,6 @@ def main(latex_commands_for_html): single_objective_testbed = testbedsettings.default_testbed_single_noisy if genericsettings.isNoisy \ else testbedsettings.default_testbed_single - for scenario in testbedsettings.all_scenarios: # set up scenario, especially wrt genericsettings if scenario == testbedsettings.scenario_rlbased: @@ -78,6 +77,9 @@ def main(latex_commands_for_html): elif scenario == testbedsettings.scenario_biobjfixed: genericsettings.runlength_based_targets = False config.config(testbedsettings.default_testbed_bi) + elif scenario == testbedsettings.scenario_largescalefixed: + genericsettings.runlength_based_targets = False + config.config(testbedsettings.default_testbed_largescale) else: warnings.warn("Scenario not supported yet in HTML") @@ -132,8 +134,8 @@ def main(latex_commands_for_html): # prepare tags for later HTML preparation testbed = testbedsettings.current_testbed # 1. ppfigs - for dim in ['5', '20']: - f.write(prepare_item('bbobECDFslegend' + scenario + dim, 'bbobECDFslegend' + scenario, str(dim))) + for dim in testbed.htmlDimsOfInterest: #['5', '20']: # Wassim: + f.write(prepare_item('bbobECDFslegend' + scenario + str(dim), 'bbobECDFslegend' + scenario, str(dim))) param = '$f_{%d}$ and $f_{%d}$' % (testbed.first_function_number, testbed.last_function_number) f.write(prepare_item('bbobppfigslegend' + scenario, param=param)) @@ -149,9 +151,9 @@ def main(latex_commands_for_html): # 6. pptables command_name = 'bbobpptablesmanylegend' + scenario - for dim in ['5', '20']: + for dim in testbed.htmlDimsOfInterest: #['5', '20']: # Wassim: bonferroni = str(2 * (testbed.last_function_number - testbed.first_function_number + 1)) - f.write(prepare_item_two(command_name + dim, command_name, 'dimension ' + dim, bonferroni)) + f.write(prepare_item_two(command_name + str(dim), command_name, 'dimension ' + str(dim), bonferroni)) # 7. ppscatter param = '$f_{%d}$ - $f_{%d}$' % (testbed.first_function_number, testbed.last_function_number) diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 2a81bb84d..72c05ec3c 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -202,6 +202,11 @@ def __init__(self, targetValues): self.pptable2_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting self.pptables_target_runlengths = [2, 10, 50] # used in config for expensive setting + self.dimensions_to_display = [2, 3, 5, 10, 20, 40] + self.tabDimsOfInterest = [5, 20] + self.rldDimsOfInterest = [5, 20] + self.htmlDimsOfInterest = [5, 20] + From 9e3dc0c008dd1b50d0a59ff37fa5bab83deb66b8 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sat, 21 May 2016 15:51:25 +0200 Subject: [PATCH 239/446] added transform_obj_norm_by_dim.c file --- .../src/transform_obj_norm_by_dim.c | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 code-experiments/src/transform_obj_norm_by_dim.c diff --git a/code-experiments/src/transform_obj_norm_by_dim.c b/code-experiments/src/transform_obj_norm_by_dim.c new file mode 100644 index 000000000..0d367d379 --- /dev/null +++ b/code-experiments/src/transform_obj_norm_by_dim.c @@ -0,0 +1,34 @@ +/** + * @file transform_obj_norm_by_dim.c + * @brief Implementation of normalizing the raw fitness functions by the dimensions + * Mostly used to in the large-scale testsuite + */ + +#include + +#include "coco.h" +#include "coco_problem.c" + +/** + * @brief Evaluates the transformation. + */ +static void transform_obj_norm_by_dim_evaluate(coco_problem_t *problem, const double *x, double *y) { + + coco_evaluate_function(coco_problem_transformed_get_inner_problem(problem), x, y); + y[0] *= bbob2009_fmin(1, 40. / ((double) problem->number_of_variables)); + /* Wassim: might want to use a function (with no 40) here that we can put in a helpers file */ + + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Creates the transformation. + */ +static coco_problem_t *transform_obj_norm_by_dim(coco_problem_t *inner_problem) { + coco_problem_t *problem; + + problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL, "transform_obj_norm_by_dim"); + problem->evaluate_function = transform_obj_norm_by_dim_evaluate; + /*problem->best_value[0] *= 1;*/ /*shouldn't matter*/ + return problem; +} From a7acc4eb1791b87a11d9a731dff196a3ea3c595b Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sat, 21 May 2016 15:51:25 +0200 Subject: [PATCH 240/446] added transform_obj_norm_by_dim.c file --- .../src/transform_obj_norm_by_dim.c | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 code-experiments/src/transform_obj_norm_by_dim.c diff --git a/code-experiments/src/transform_obj_norm_by_dim.c b/code-experiments/src/transform_obj_norm_by_dim.c new file mode 100644 index 000000000..0d367d379 --- /dev/null +++ b/code-experiments/src/transform_obj_norm_by_dim.c @@ -0,0 +1,34 @@ +/** + * @file transform_obj_norm_by_dim.c + * @brief Implementation of normalizing the raw fitness functions by the dimensions + * Mostly used to in the large-scale testsuite + */ + +#include + +#include "coco.h" +#include "coco_problem.c" + +/** + * @brief Evaluates the transformation. + */ +static void transform_obj_norm_by_dim_evaluate(coco_problem_t *problem, const double *x, double *y) { + + coco_evaluate_function(coco_problem_transformed_get_inner_problem(problem), x, y); + y[0] *= bbob2009_fmin(1, 40. / ((double) problem->number_of_variables)); + /* Wassim: might want to use a function (with no 40) here that we can put in a helpers file */ + + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Creates the transformation. + */ +static coco_problem_t *transform_obj_norm_by_dim(coco_problem_t *inner_problem) { + coco_problem_t *problem; + + problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL, "transform_obj_norm_by_dim"); + problem->evaluate_function = transform_obj_norm_by_dim_evaluate; + /*problem->best_value[0] *= 1;*/ /*shouldn't matter*/ + return problem; +} From a7927d11a39ecf0ef0f6d9b9079d931a4b63ecf1 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sun, 22 May 2016 01:44:56 +0200 Subject: [PATCH 241/446] fixed bug which leads to raised assert because of non-set best_value in subproblems of f24, also, added transform_obj_norm_by_dim.c and used it --- code-experiments/build/java/.DS_Store | Bin 6148 -> 6148 bytes code-experiments/src/f_attractive_sector.c | 4 ++-- .../src/f_bent_cigar_generalized.c | 4 ++-- code-experiments/src/f_bueche_rastrigin.c | 4 ++-- code-experiments/src/f_different_powers.c | 6 ++---- code-experiments/src/f_discus_generalized.c | 4 ++-- code-experiments/src/f_ellipsoid.c | 8 +++----- code-experiments/src/f_gallagher.c | 6 +++--- code-experiments/src/f_griewank_rosenbrock.c | 4 ++-- code-experiments/src/f_katsuura.c | 4 ++-- code-experiments/src/f_linear_slope.c | 4 ++-- code-experiments/src/f_lunacek_bi_rastrigin.c | 18 ++++++++++-------- code-experiments/src/f_rastrigin.c | 6 +++--- code-experiments/src/f_rosenbrock.c | 6 +++--- code-experiments/src/f_schaffers.c | 4 ++-- code-experiments/src/f_schwefel.c | 1 - code-experiments/src/f_schwefel_generalized.c | 3 ++- code-experiments/src/f_sharp_ridge.c | 4 ++-- code-experiments/src/f_sphere.c | 9 +++------ code-experiments/src/f_step_ellipsoid.c | 4 ++-- code-experiments/src/f_weierstrass.c | 4 ++-- 21 files changed, 51 insertions(+), 56 deletions(-) diff --git a/code-experiments/build/java/.DS_Store b/code-experiments/build/java/.DS_Store index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..ac5cde13983f895fcd52253bba379fcb8cb6e861 100644 GIT binary patch literal 6148 zcmeHL%}T>S5T4Z>O7)O~g2!Au7R*_YP~r<1JS#TEAB^e2-t#DZ4{wU#QG5{}z>D9^ zEG3~SNiR}lChUC4X1?8>FYIo&MC8WvJSGZ>Xn?{P4B=Xg-*Z{99bdB#bkfEXUC|A$ z62;6EFa@?<0iL@Iq1pfjOlDmFoNv!zms0k&jC}R*Fg|Cq1Jb-?Q^46eqo- zK9X>9iK2N^z!YdIu&a+D@BioP&;L!5J(&Wgz`s(!1!AjHu~2NHo+1YW5HK<@2y7PQ5M$Y_z%h$?Gdl-A2T%b}u84%9H(hI5x+KtY8KJ$3PAT diff --git a/code-experiments/src/f_attractive_sector.c b/code-experiments/src/f_attractive_sector.c index 02e5581a1..167b11d07 100644 --- a/code-experiments/src/f_attractive_sector.c +++ b/code-experiments/src/f_attractive_sector.c @@ -17,8 +17,8 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" #include "transform_vars_conditioning.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Data type for the attractive sector problem. @@ -193,7 +193,7 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); problem = f_attractive_sector_allocate(dimension, xopt); - problem = transform_obj_scale(problem, 1. / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_oscillate(problem); problem = transform_obj_power(problem, 0.9); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index 66b43f40a..2b92a7680 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -16,7 +16,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Data type for the versatile_data_t @@ -131,7 +131,7 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1. / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_bueche_rastrigin.c b/code-experiments/src/f_bueche_rastrigin.c index caa5f5b93..4280b83b2 100644 --- a/code-experiments/src/f_bueche_rastrigin.c +++ b/code-experiments/src/f_bueche_rastrigin.c @@ -14,7 +14,7 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" #include "transform_obj_penalize.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Bueche-Rastrigin function without connections to any COCO structures. @@ -91,7 +91,7 @@ static coco_problem_t *f_bueche_rastrigin_bbob_problem_allocate(const size_t fun /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); } problem = transform_obj_shift(problem, fopt); problem = transform_obj_penalize(problem, penalty_factor); diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 45f57200e..403adac0a 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -15,7 +15,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the different powers function without connections to any COCO structures. @@ -124,8 +124,6 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co size_t nb_blocks; size_t swap_range; size_t nb_swaps; - double scaling_factor; - scaling_factor = bbob2009_fmin(1, 40. / ((double) dimension));/*TODO, update on all functions or use a function*/ block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); @@ -148,7 +146,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, scaling_factor); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c index 0dea76935..907d54e60 100644 --- a/code-experiments/src/f_discus_generalized.c +++ b/code-experiments/src/f_discus_generalized.c @@ -14,7 +14,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Data type for the versatile_data_t @@ -134,7 +134,7 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 098275d00..020d53d7f 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -16,7 +16,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the ellipsoid function without connections to any COCO structures. @@ -84,7 +84,7 @@ static coco_problem_t *f_ellipsoid_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); } problem = transform_obj_shift(problem, fopt); @@ -156,8 +156,6 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz size_t nb_blocks; size_t swap_range; size_t nb_swaps; - double scaling_factor; - scaling_factor = bbob2009_fmin(1, 40. / ((double) dimension)); /*TODO, update on all functions or use a function*/ block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); @@ -184,7 +182,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, scaling_factor); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 308207624..fee240439 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -14,9 +14,9 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" #include "transform_vars_permutation_helpers.c" #include "transform_vars_scale.c" +#include "transform_obj_norm_by_dim.c" #include "f_sphere.c" /** @@ -513,8 +513,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz *problem_i = transform_vars_permutation(*problem_i, P1, dimension); *problem_i = transform_vars_shift(*problem_i, y_i, 0); - *problem_i = transform_obj_scale(*problem_i, 1.0 / (double) dimension);/* for the scalar product */ - + *problem_i = transform_obj_norm_by_dim(*problem_i);/* for the scalar product */ + coco_free_memory(P_Lambda); coco_free_memory(y_i); y_i = NULL; diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index fcd8eead9..1afb178c3 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -17,7 +17,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Griewank-Rosenbrock function without connections to any COCO structures. @@ -169,7 +169,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - /*problem = transform_obj_scale(problem, 1.0 / (double) dimension);*//* Wassim: already normalized in the raw function. Should probably be changed so that the raw function is limited to the sum */ + /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: already normalized in the raw function. Should probably be changed so that the raw function is limited to the sum */ problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index b5e59d7fc..ad33733ea 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -15,7 +15,7 @@ #include "transform_vars_affine.c" #include "transform_vars_shift.c" #include "transform_obj_penalize.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Katsuura function without connections to any COCO structures. @@ -193,7 +193,7 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); - /*problem = transform_obj_scale(problem, 1.0 / (double) dimension);*//* Wassim: does not seem to be needed*/ + /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: does not seem to be needed*/ problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); /*TODO: documentation, there is no fopt in the definition of this function*/ diff --git a/code-experiments/src/f_linear_slope.c b/code-experiments/src/f_linear_slope.c index aa500dfe2..2f38af9e5 100644 --- a/code-experiments/src/f_linear_slope.c +++ b/code-experiments/src/f_linear_slope.c @@ -11,7 +11,7 @@ #include "coco_problem.c" #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the linear slope function without connections to any COCO structures. @@ -100,7 +100,7 @@ static coco_problem_t *f_linear_slope_bbob_problem_allocate(const size_t functio /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); } problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index e44e619f3..200398b94 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -10,9 +10,9 @@ #include "coco_problem.c" #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" -#include "transform_obj_scale.c" #include "f_sphere.c" #include "transform_vars_x_hat_generic.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Data type for the Lunacek bi-Rastrigin problem. @@ -231,7 +231,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_sub_problem_allocate(const size_t f_lunacek_bi_rastrigin_sub_evaluate_core, NULL, number_of_variables, -5.0, 5.0, 0.0); problem_i->versatile_data = NULL; coco_problem_set_id(problem_i, "%s_d%04lu", "lunacek_bi_rastrigin_sub", number_of_variables); - /*f_lunacek_bi_rastrigin_sub_evaluate_core(problem_i, problem_i->best_parameter, problem_i->best_value);*/ + f_lunacek_bi_rastrigin_sub_evaluate_core(problem_i, problem_i->best_parameter, problem_i->best_value); return problem_i; } @@ -357,12 +357,11 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); - /* set fopt on the non transformed version. Since sub-problems */ + /* set fopt on the non transformed version.*/ f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); - /* set xopt */ /* Wassim: to silence warning about best_parameter*/ sign_vector = coco_allocate_vector(dimension); - for ( i = 0; i < dimension; i++) { + for ( i = 0; i < dimension; i++) { /* set sign(x_opt)*/ if ( coco_random_normal(rng) < 0.0) {/* Wassim: noraml is used here but unif for Schweffel!!! */ sign_vector[i] = -1.0; } else { @@ -381,7 +380,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat *sub_problem_tmp = transform_vars_x_hat_generic(*sub_problem_tmp, sign_vector); *sub_problem_tmp = transform_obj_shift(*sub_problem_tmp, d * (double) dimension); - *sub_problem_tmp = transform_obj_scale(*sub_problem_tmp, s); + *sub_problem_tmp = transform_obj_norm_by_dim(*sub_problem_tmp); /* transformations on main problem */ problem = transform_vars_permutation(problem, P22, dimension); @@ -392,17 +391,20 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat for ( i = 0; i < dimension; i++) { /* Wassim: to silence warning about best_parameter*/ problem->best_parameter[i] = 0.5 * mu0 * sign_vector[i]; /* TODO: Documentation no 0.5 in documentation! */ } - + problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, mu0_vector, 0); problem = transform_vars_x_hat_generic(problem, sign_vector); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); + /*f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); + printf("\n %f , x_opt[0]= %f\n", problem->best_value[0], problem->best_parameter[0]);*//* Wassim: for testing purposes, might end up being the one kept though*/ + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "block-rotated_weakly-structured"); diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index ea0e2ed19..a019a4199 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -19,7 +19,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Rastrigin function without connections to any COCO structures. @@ -90,7 +90,7 @@ static coco_problem_t *f_rastrigin_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); } problem = transform_obj_shift(problem, fopt); @@ -223,7 +223,7 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index 805f0786d..3eb9b59f6 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -15,7 +15,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Rosenbrock function without connections to any COCO structures. @@ -97,7 +97,7 @@ static coco_problem_t *f_rosenbrock_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); } problem = transform_obj_shift(problem, fopt); @@ -205,7 +205,7 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index eafb9d977..d56a65959 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -19,7 +19,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Schaffer's F7 function without connections to any COCO structures. @@ -190,7 +190,7 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_penalize(problem, penalty_factor / (double) dimension); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_schwefel.c b/code-experiments/src/f_schwefel.c index 71c76612e..c152d91d0 100644 --- a/code-experiments/src/f_schwefel.c +++ b/code-experiments/src/f_schwefel.c @@ -11,7 +11,6 @@ #include "coco_problem.c" #include "suite_bbob_legacy_code.c" #include "transform_vars_conditioning.c" -#include "transform_obj_scale.c" #include "transform_obj_shift.c" #include "transform_vars_scale.c" #include "transform_vars_affine.c" diff --git a/code-experiments/src/f_schwefel_generalized.c b/code-experiments/src/f_schwefel_generalized.c index cb3acd890..5e378a4bc 100644 --- a/code-experiments/src/f_schwefel_generalized.c +++ b/code-experiments/src/f_schwefel_generalized.c @@ -17,6 +17,7 @@ #include "transform_vars_shift.c" #include "transform_vars_z_hat.c" #include "transform_vars_x_hat.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Schwefel function for large scale. @@ -107,7 +108,7 @@ static coco_problem_t *f_schwefel_generalized_bbob_problem_allocate(const size_t problem = transform_vars_z_hat(problem, xopt); problem = transform_vars_scale(problem, 2); problem = transform_vars_x_hat(problem, rseed); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, Schwefel_constant); /* We could add the Schwefel_constant before normalizing */ problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index 07ad86c2b..cca39a64f 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -16,7 +16,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the sharp ridge function without connections to any COCO structures. @@ -175,7 +175,7 @@ static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const s problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_sphere.c b/code-experiments/src/f_sphere.c index 96e09e1ad..d5e2c7c84 100644 --- a/code-experiments/src/f_sphere.c +++ b/code-experiments/src/f_sphere.c @@ -11,7 +11,7 @@ #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" #include "transform_vars_shift.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the sphere function without connections to any COCO structures. @@ -67,8 +67,7 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, double *xopt, fopt; coco_problem_t *problem = NULL; - double scaling_factor; - + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); fopt = bbob2009_compute_fopt(function, instance); @@ -78,9 +77,7 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - - scaling_factor = bbob2009_fmin(1, 40. / ((double) dimension)); /*TODO, update on all functions or use a function*/ - problem = transform_obj_scale(problem, scaling_factor); + problem = transform_obj_norm_by_dim(problem); } problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 65d542b29..e43d3198e 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -22,8 +22,8 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" #include "transform_vars_round_step.c" +#include "transform_obj_norm_by_dim.c" /** @@ -298,7 +298,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index 0ab074101..e1793b98e 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -18,7 +18,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** @brief Number of summands in the Weierstrass problem. */ #define F_WEIERSTRASS_SUMMANDS 12 @@ -220,7 +220,7 @@ static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const s problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); From e3b94cc73e446fb6db56927ddc232abb5043503d Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sun, 22 May 2016 01:44:56 +0200 Subject: [PATCH 242/446] fixed bug which leads to raised assert because of non-set best_value in subproblems of f24, also, added transform_obj_norm_by_dim.c and used it --- code-experiments/build/java/.DS_Store | Bin 6148 -> 6148 bytes code-experiments/src/f_attractive_sector.c | 4 ++-- .../src/f_bent_cigar_generalized.c | 4 ++-- code-experiments/src/f_bueche_rastrigin.c | 4 ++-- code-experiments/src/f_different_powers.c | 6 ++---- code-experiments/src/f_discus_generalized.c | 4 ++-- code-experiments/src/f_ellipsoid.c | 8 +++----- code-experiments/src/f_gallagher.c | 6 +++--- code-experiments/src/f_griewank_rosenbrock.c | 4 ++-- code-experiments/src/f_katsuura.c | 4 ++-- code-experiments/src/f_linear_slope.c | 4 ++-- code-experiments/src/f_lunacek_bi_rastrigin.c | 18 ++++++++++-------- code-experiments/src/f_rastrigin.c | 6 +++--- code-experiments/src/f_rosenbrock.c | 6 +++--- code-experiments/src/f_schaffers.c | 4 ++-- code-experiments/src/f_schwefel.c | 1 - code-experiments/src/f_schwefel_generalized.c | 3 ++- code-experiments/src/f_sharp_ridge.c | 4 ++-- code-experiments/src/f_sphere.c | 9 +++------ code-experiments/src/f_step_ellipsoid.c | 4 ++-- code-experiments/src/f_weierstrass.c | 4 ++-- 21 files changed, 51 insertions(+), 56 deletions(-) diff --git a/code-experiments/build/java/.DS_Store b/code-experiments/build/java/.DS_Store index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..ac5cde13983f895fcd52253bba379fcb8cb6e861 100644 GIT binary patch literal 6148 zcmeHL%}T>S5T4Z>O7)O~g2!Au7R*_YP~r<1JS#TEAB^e2-t#DZ4{wU#QG5{}z>D9^ zEG3~SNiR}lChUC4X1?8>FYIo&MC8WvJSGZ>Xn?{P4B=Xg-*Z{99bdB#bkfEXUC|A$ z62;6EFa@?<0iL@Iq1pfjOlDmFoNv!zms0k&jC}R*Fg|Cq1Jb-?Q^46eqo- zK9X>9iK2N^z!YdIu&a+D@BioP&;L!5J(&Wgz`s(!1!AjHu~2NHo+1YW5HK<@2y7PQ5M$Y_z%h$?Gdl-A2T%b}u84%9H(hI5x+KtY8KJ$3PAT diff --git a/code-experiments/src/f_attractive_sector.c b/code-experiments/src/f_attractive_sector.c index 02e5581a1..167b11d07 100644 --- a/code-experiments/src/f_attractive_sector.c +++ b/code-experiments/src/f_attractive_sector.c @@ -17,8 +17,8 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" #include "transform_vars_conditioning.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Data type for the attractive sector problem. @@ -193,7 +193,7 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); problem = f_attractive_sector_allocate(dimension, xopt); - problem = transform_obj_scale(problem, 1. / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_oscillate(problem); problem = transform_obj_power(problem, 0.9); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index 66b43f40a..2b92a7680 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -16,7 +16,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Data type for the versatile_data_t @@ -131,7 +131,7 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1. / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_bueche_rastrigin.c b/code-experiments/src/f_bueche_rastrigin.c index caa5f5b93..4280b83b2 100644 --- a/code-experiments/src/f_bueche_rastrigin.c +++ b/code-experiments/src/f_bueche_rastrigin.c @@ -14,7 +14,7 @@ #include "transform_vars_shift.c" #include "transform_obj_shift.c" #include "transform_obj_penalize.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Bueche-Rastrigin function without connections to any COCO structures. @@ -91,7 +91,7 @@ static coco_problem_t *f_bueche_rastrigin_bbob_problem_allocate(const size_t fun /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); } problem = transform_obj_shift(problem, fopt); problem = transform_obj_penalize(problem, penalty_factor); diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 45f57200e..403adac0a 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -15,7 +15,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the different powers function without connections to any COCO structures. @@ -124,8 +124,6 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co size_t nb_blocks; size_t swap_range; size_t nb_swaps; - double scaling_factor; - scaling_factor = bbob2009_fmin(1, 40. / ((double) dimension));/*TODO, update on all functions or use a function*/ block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); @@ -148,7 +146,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, scaling_factor); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c index 0dea76935..907d54e60 100644 --- a/code-experiments/src/f_discus_generalized.c +++ b/code-experiments/src/f_discus_generalized.c @@ -14,7 +14,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Data type for the versatile_data_t @@ -134,7 +134,7 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 098275d00..020d53d7f 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -16,7 +16,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the ellipsoid function without connections to any COCO structures. @@ -84,7 +84,7 @@ static coco_problem_t *f_ellipsoid_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); } problem = transform_obj_shift(problem, fopt); @@ -156,8 +156,6 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz size_t nb_blocks; size_t swap_range; size_t nb_swaps; - double scaling_factor; - scaling_factor = bbob2009_fmin(1, 40. / ((double) dimension)); /*TODO, update on all functions or use a function*/ block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); @@ -184,7 +182,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, scaling_factor); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 308207624..fee240439 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -14,9 +14,9 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" #include "transform_vars_permutation_helpers.c" #include "transform_vars_scale.c" +#include "transform_obj_norm_by_dim.c" #include "f_sphere.c" /** @@ -513,8 +513,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz *problem_i = transform_vars_permutation(*problem_i, P1, dimension); *problem_i = transform_vars_shift(*problem_i, y_i, 0); - *problem_i = transform_obj_scale(*problem_i, 1.0 / (double) dimension);/* for the scalar product */ - + *problem_i = transform_obj_norm_by_dim(*problem_i);/* for the scalar product */ + coco_free_memory(P_Lambda); coco_free_memory(y_i); y_i = NULL; diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index fcd8eead9..1afb178c3 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -17,7 +17,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Griewank-Rosenbrock function without connections to any COCO structures. @@ -169,7 +169,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - /*problem = transform_obj_scale(problem, 1.0 / (double) dimension);*//* Wassim: already normalized in the raw function. Should probably be changed so that the raw function is limited to the sum */ + /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: already normalized in the raw function. Should probably be changed so that the raw function is limited to the sum */ problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index b5e59d7fc..ad33733ea 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -15,7 +15,7 @@ #include "transform_vars_affine.c" #include "transform_vars_shift.c" #include "transform_obj_penalize.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Katsuura function without connections to any COCO structures. @@ -193,7 +193,7 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); - /*problem = transform_obj_scale(problem, 1.0 / (double) dimension);*//* Wassim: does not seem to be needed*/ + /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: does not seem to be needed*/ problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); /*TODO: documentation, there is no fopt in the definition of this function*/ diff --git a/code-experiments/src/f_linear_slope.c b/code-experiments/src/f_linear_slope.c index aa500dfe2..2f38af9e5 100644 --- a/code-experiments/src/f_linear_slope.c +++ b/code-experiments/src/f_linear_slope.c @@ -11,7 +11,7 @@ #include "coco_problem.c" #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the linear slope function without connections to any COCO structures. @@ -100,7 +100,7 @@ static coco_problem_t *f_linear_slope_bbob_problem_allocate(const size_t functio /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); } problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index e44e619f3..200398b94 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -10,9 +10,9 @@ #include "coco_problem.c" #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" -#include "transform_obj_scale.c" #include "f_sphere.c" #include "transform_vars_x_hat_generic.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Data type for the Lunacek bi-Rastrigin problem. @@ -231,7 +231,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_sub_problem_allocate(const size_t f_lunacek_bi_rastrigin_sub_evaluate_core, NULL, number_of_variables, -5.0, 5.0, 0.0); problem_i->versatile_data = NULL; coco_problem_set_id(problem_i, "%s_d%04lu", "lunacek_bi_rastrigin_sub", number_of_variables); - /*f_lunacek_bi_rastrigin_sub_evaluate_core(problem_i, problem_i->best_parameter, problem_i->best_value);*/ + f_lunacek_bi_rastrigin_sub_evaluate_core(problem_i, problem_i->best_parameter, problem_i->best_value); return problem_i; } @@ -357,12 +357,11 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); - /* set fopt on the non transformed version. Since sub-problems */ + /* set fopt on the non transformed version.*/ f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); - /* set xopt */ /* Wassim: to silence warning about best_parameter*/ sign_vector = coco_allocate_vector(dimension); - for ( i = 0; i < dimension; i++) { + for ( i = 0; i < dimension; i++) { /* set sign(x_opt)*/ if ( coco_random_normal(rng) < 0.0) {/* Wassim: noraml is used here but unif for Schweffel!!! */ sign_vector[i] = -1.0; } else { @@ -381,7 +380,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat *sub_problem_tmp = transform_vars_x_hat_generic(*sub_problem_tmp, sign_vector); *sub_problem_tmp = transform_obj_shift(*sub_problem_tmp, d * (double) dimension); - *sub_problem_tmp = transform_obj_scale(*sub_problem_tmp, s); + *sub_problem_tmp = transform_obj_norm_by_dim(*sub_problem_tmp); /* transformations on main problem */ problem = transform_vars_permutation(problem, P22, dimension); @@ -392,17 +391,20 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat for ( i = 0; i < dimension; i++) { /* Wassim: to silence warning about best_parameter*/ problem->best_parameter[i] = 0.5 * mu0 * sign_vector[i]; /* TODO: Documentation no 0.5 in documentation! */ } - + problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, mu0_vector, 0); problem = transform_vars_x_hat_generic(problem, sign_vector); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); + /*f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); + printf("\n %f , x_opt[0]= %f\n", problem->best_value[0], problem->best_parameter[0]);*//* Wassim: for testing purposes, might end up being the one kept though*/ + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "block-rotated_weakly-structured"); diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index ea0e2ed19..a019a4199 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -19,7 +19,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Rastrigin function without connections to any COCO structures. @@ -90,7 +90,7 @@ static coco_problem_t *f_rastrigin_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); } problem = transform_obj_shift(problem, fopt); @@ -223,7 +223,7 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index 805f0786d..3eb9b59f6 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -15,7 +15,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Rosenbrock function without connections to any COCO structures. @@ -97,7 +97,7 @@ static coco_problem_t *f_rosenbrock_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); } problem = transform_obj_shift(problem, fopt); @@ -205,7 +205,7 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index eafb9d977..d56a65959 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -19,7 +19,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Schaffer's F7 function without connections to any COCO structures. @@ -190,7 +190,7 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_penalize(problem, penalty_factor / (double) dimension); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_schwefel.c b/code-experiments/src/f_schwefel.c index 71c76612e..c152d91d0 100644 --- a/code-experiments/src/f_schwefel.c +++ b/code-experiments/src/f_schwefel.c @@ -11,7 +11,6 @@ #include "coco_problem.c" #include "suite_bbob_legacy_code.c" #include "transform_vars_conditioning.c" -#include "transform_obj_scale.c" #include "transform_obj_shift.c" #include "transform_vars_scale.c" #include "transform_vars_affine.c" diff --git a/code-experiments/src/f_schwefel_generalized.c b/code-experiments/src/f_schwefel_generalized.c index cb3acd890..5e378a4bc 100644 --- a/code-experiments/src/f_schwefel_generalized.c +++ b/code-experiments/src/f_schwefel_generalized.c @@ -17,6 +17,7 @@ #include "transform_vars_shift.c" #include "transform_vars_z_hat.c" #include "transform_vars_x_hat.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the Schwefel function for large scale. @@ -107,7 +108,7 @@ static coco_problem_t *f_schwefel_generalized_bbob_problem_allocate(const size_t problem = transform_vars_z_hat(problem, xopt); problem = transform_vars_scale(problem, 2); problem = transform_vars_x_hat(problem, rseed); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, Schwefel_constant); /* We could add the Schwefel_constant before normalizing */ problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index 07ad86c2b..cca39a64f 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -16,7 +16,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the sharp ridge function without connections to any COCO structures. @@ -175,7 +175,7 @@ static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const s problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_sphere.c b/code-experiments/src/f_sphere.c index 96e09e1ad..d5e2c7c84 100644 --- a/code-experiments/src/f_sphere.c +++ b/code-experiments/src/f_sphere.c @@ -11,7 +11,7 @@ #include "suite_bbob_legacy_code.c" #include "transform_obj_shift.c" #include "transform_vars_shift.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** * @brief Implements the sphere function without connections to any COCO structures. @@ -67,8 +67,7 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, double *xopt, fopt; coco_problem_t *problem = NULL; - double scaling_factor; - + xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); fopt = bbob2009_compute_fopt(function, instance); @@ -78,9 +77,7 @@ static coco_problem_t *f_sphere_bbob_problem_allocate(const size_t function, /*if large scale test-bed, normalize by dim*/ if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - - scaling_factor = bbob2009_fmin(1, 40. / ((double) dimension)); /*TODO, update on all functions or use a function*/ - problem = transform_obj_scale(problem, scaling_factor); + problem = transform_obj_norm_by_dim(problem); } problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 65d542b29..e43d3198e 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -22,8 +22,8 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" #include "transform_vars_round_step.c" +#include "transform_obj_norm_by_dim.c" /** @@ -298,7 +298,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index 0ab074101..e1793b98e 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -18,7 +18,7 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -#include "transform_obj_scale.c" +#include "transform_obj_norm_by_dim.c" /** @brief Number of summands in the Weierstrass problem. */ #define F_WEIERSTRASS_SUMMANDS 12 @@ -220,7 +220,7 @@ static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const s problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_scale(problem, 1.0 / (double) dimension); + problem = transform_obj_norm_by_dim(problem); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); From fd1c2a4ce05ad1ecd71494b334c6fcd88e09ca1d Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sun, 22 May 2016 10:27:13 +0200 Subject: [PATCH 243/446] logger_bbob.c: fixed bug resulting from not closing index file --- code-experiments/build/c/example_experiment.c | 4 ++-- code-experiments/src/logger_bbob.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index 3ac3a2efb..2fe1268a1 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -15,7 +15,7 @@ * The maximal budget for evaluations done by an optimization algorithm equals dimension * BUDGET_MULTIPLIER. * Increase the budget multiplier value gradually to see how it affects the runtime. */ -static const size_t BUDGET_MULTIPLIER = 1e4; +static const size_t BUDGET_MULTIPLIER = 1e0; /** * The maximal number of independent restarts allowed for an algorithm that restarts itself. @@ -134,7 +134,7 @@ void example_experiment(const char *suite_name, "algorithm_info: \"A simple random search algorithm\"", suite_name); /* Initialize the suite and observer */ - suite = coco_suite(suite_name, "year: 2016", "instance_indices: 1-3 dimensions: 20,40 function_indices: 1,2"); + suite = coco_suite(suite_name, "year: 2016", "instance_indices: 1-10 function_indices: 1-5 dimensions: 2,3,5,10,20,40"); observer = coco_observer(observer_name, observer_options); coco_free_memory(observer_options); diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 59a8894dd..a05728925 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -387,8 +387,8 @@ static void logger_bbob_free(void *stuff) { if (logger->index_file != NULL) { /*fprintf(logger->index_file, ":%lu|%.1e", (unsigned long) logger->number_of_evaluations, - logger->best_fvalue - logger->optimal_fvalue); - fclose(logger->index_file);*/ /*Wassim: now done in logger_bbob_finalize*/ + logger->best_fvalue - logger->optimal_fvalue);*/ + fclose(logger->index_file); /*Wassim: now done in logger_bbob_finalize*/ logger->index_file = NULL; } if (logger->fdata_file != NULL) { From a0c598a159cb2b5dd08ddc5e0d1d209af42388fb Mon Sep 17 00:00:00 2001 From: oaelhara Date: Sun, 22 May 2016 10:27:13 +0200 Subject: [PATCH 244/446] logger_bbob.c: fixed bug resulting from not closing index file --- code-experiments/build/c/example_experiment.c | 4 ++-- code-experiments/src/logger_bbob.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index 3ac3a2efb..2fe1268a1 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -15,7 +15,7 @@ * The maximal budget for evaluations done by an optimization algorithm equals dimension * BUDGET_MULTIPLIER. * Increase the budget multiplier value gradually to see how it affects the runtime. */ -static const size_t BUDGET_MULTIPLIER = 1e4; +static const size_t BUDGET_MULTIPLIER = 1e0; /** * The maximal number of independent restarts allowed for an algorithm that restarts itself. @@ -134,7 +134,7 @@ void example_experiment(const char *suite_name, "algorithm_info: \"A simple random search algorithm\"", suite_name); /* Initialize the suite and observer */ - suite = coco_suite(suite_name, "year: 2016", "instance_indices: 1-3 dimensions: 20,40 function_indices: 1,2"); + suite = coco_suite(suite_name, "year: 2016", "instance_indices: 1-10 function_indices: 1-5 dimensions: 2,3,5,10,20,40"); observer = coco_observer(observer_name, observer_options); coco_free_memory(observer_options); diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 59a8894dd..a05728925 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -387,8 +387,8 @@ static void logger_bbob_free(void *stuff) { if (logger->index_file != NULL) { /*fprintf(logger->index_file, ":%lu|%.1e", (unsigned long) logger->number_of_evaluations, - logger->best_fvalue - logger->optimal_fvalue); - fclose(logger->index_file);*/ /*Wassim: now done in logger_bbob_finalize*/ + logger->best_fvalue - logger->optimal_fvalue);*/ + fclose(logger->index_file); /*Wassim: now done in logger_bbob_finalize*/ logger->index_file = NULL; } if (logger->fdata_file != NULL) { From ddbbf85c05a362499111fb160be756e0c078eff7 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 23 May 2016 18:56:26 +0200 Subject: [PATCH 245/446] reverted example_experiment.c for pull request --- code-experiments/build/c/example_experiment.c | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index 2fe1268a1..fe89ab9ea 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -15,7 +15,7 @@ * The maximal budget for evaluations done by an optimization algorithm equals dimension * BUDGET_MULTIPLIER. * Increase the budget multiplier value gradually to see how it affects the runtime. */ -static const size_t BUDGET_MULTIPLIER = 1e0; +static const size_t BUDGET_MULTIPLIER = 2; /** * The maximal number of independent restarts allowed for an algorithm that restarts itself. @@ -86,25 +86,25 @@ static void timing_data_finalize(timing_data_t *timing_data); * bi-objective suite. */ int main(void) { - + coco_random_state_t *random_generator = coco_random_new(RANDOM_SEED); - + /* Change the log level to "warning" to get less output */ coco_set_log_level("info"); - + printf("Running the example experiment... (might take time, be patient)\n"); fflush(stdout); - - /*example_experiment("bbob-biobj", "bbob-biobj", random_generator); - Uncomment the line below to run the same example experiment on the bbob suite*/ - example_experiment("bbob", "bbob", random_generator); - + example_experiment("bbob-biobj", "bbob-biobj", random_generator); + + /* Uncomment the line below to run the same example experiment on the bbob suite + example_experiment("bbob", "bbob", random_generator); */ + printf("Done!\n"); fflush(stdout); - + coco_random_free(random_generator); - + return 0; } @@ -121,7 +121,7 @@ int main(void) { void example_experiment(const char *suite_name, const char *observer_name, coco_random_state_t *random_generator) { - + size_t run; coco_suite_t *suite; coco_observer_t *observer; @@ -129,12 +129,12 @@ void example_experiment(const char *suite_name, /* Set some options for the observer. See documentation for other options. */ char *observer_options = - coco_strdupf("result_folder: RS_on_%s " - "algorithm_name: RS " - "algorithm_info: \"A simple random search algorithm\"", suite_name); - + coco_strdupf("result_folder: RS_on_%s " + "algorithm_name: RS " + "algorithm_info: \"A simple random search algorithm\"", suite_name); + /* Initialize the suite and observer */ - suite = coco_suite(suite_name, "year: 2016", "instance_indices: 1-10 function_indices: 1-5 dimensions: 2,3,5,10,20,40"); + suite = coco_suite(suite_name, "year: 2016", "dimensions: 2,3,5,10,20,40"); observer = coco_observer(observer_name, observer_options); coco_free_memory(observer_options); @@ -143,19 +143,19 @@ void example_experiment(const char *suite_name, /* Iterate over all problems in the suite */ while ((PROBLEM = coco_suite_get_next_problem(suite, observer)) != NULL) { - + size_t dimension = coco_problem_get_dimension(PROBLEM); - + /* Run the algorithm at least once */ for (run = 1; run <= 1 + INDEPENDENT_RESTARTS; run++) { - + size_t evaluations_done = coco_problem_get_evaluations(PROBLEM); long evaluations_remaining = (long) (dimension * BUDGET_MULTIPLIER) - (long) evaluations_done; - + /* Break the loop if the target was hit or there are no more remaining evaluations */ if (coco_problem_final_target_hit(PROBLEM) || (evaluations_remaining <= 0)) break; - + /* Call the optimization algorithm for the remaining number of evaluations */ my_random_search(evaluate_function, dimension, @@ -164,7 +164,7 @@ void example_experiment(const char *suite_name, coco_problem_get_largest_values_of_interest(PROBLEM), (size_t) evaluations_remaining, random_generator); - + /* Break the loop if the algorithm performed no evaluations or an unexpected thing happened */ if (coco_problem_get_evaluations(PROBLEM) == evaluations_done) { printf("WARNING: Budget has not been exhausted (%lu/%lu evaluations done)!\n", @@ -184,7 +184,7 @@ void example_experiment(const char *suite_name, coco_observer_free(observer); coco_suite_free(suite); - + } /** @@ -206,26 +206,26 @@ void my_random_search(evaluate_function_t evaluate, const double *upper_bounds, const size_t max_budget, coco_random_state_t *random_generator) { - + double *x = coco_allocate_vector(dimension); double *y = coco_allocate_vector(number_of_objectives); double range; size_t i, j; - + for (i = 0; i < max_budget; ++i) { - + /* Construct x as a random point between the lower and upper bounds */ for (j = 0; j < dimension; ++j) { range = upper_bounds[j] - lower_bounds[j]; x[j] = lower_bounds[j] + coco_random_uniform(random_generator) * range; } - + /* Call the evaluate function to evaluate x on the current problem (this is where all the COCO logging * is performed) */ evaluate(x, y); - + } - + coco_free_memory(x); coco_free_memory(y); } @@ -249,7 +249,7 @@ void my_grid_search(evaluate_function_t evaluate, const double *lower_bounds, const double *upper_bounds, const size_t max_budget) { - + double *x = coco_allocate_vector(dimension); double *y = coco_allocate_vector(number_of_objectives); long *nodes = (long *) coco_allocate_memory(sizeof(long) * dimension); @@ -257,33 +257,33 @@ void my_grid_search(evaluate_function_t evaluate, size_t i, j; size_t evaluations = 0; long max_nodes = (long) floor(pow((double) max_budget, 1.0 / (double) dimension)) - 1; - + /* Take care of the borderline case */ if (max_nodes < 1) max_nodes = 1; - + /* Initialization */ for (j = 0; j < dimension; j++) { nodes[j] = 0; grid_step[j] = (upper_bounds[j] - lower_bounds[j]) / (double) max_nodes; } - + while (evaluations < max_budget) { - + /* Construct x and evaluate it */ for (j = 0; j < dimension; j++) { x[j] = lower_bounds[j] + grid_step[j] * (double) nodes[j]; } - + /* Call the evaluate function to evaluate x on the current problem (this is where all the COCO logging * is performed) */ evaluate(x, y); evaluations++; - + /* Inside the grid, move to the next node */ if (nodes[0] < max_nodes) { nodes[0]++; } - + /* At an outside node of the grid, move to the next level */ else if (max_nodes > 0) { for (j = 1; j < dimension; j++) { @@ -294,13 +294,13 @@ void my_grid_search(evaluate_function_t evaluate, break; } } - + /* At the end of the grid, exit */ if ((j == dimension) && (nodes[j - 1] == max_nodes)) break; } } - + coco_free_memory(x); coco_free_memory(y); coco_free_memory(nodes); From 500fe6d2e637efb97fcc9c60d8ea2d3a10bbf628 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 23 May 2016 18:56:26 +0200 Subject: [PATCH 246/446] reverted example_experiment.c for pull request --- code-experiments/build/c/example_experiment.c | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index 2fe1268a1..fe89ab9ea 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -15,7 +15,7 @@ * The maximal budget for evaluations done by an optimization algorithm equals dimension * BUDGET_MULTIPLIER. * Increase the budget multiplier value gradually to see how it affects the runtime. */ -static const size_t BUDGET_MULTIPLIER = 1e0; +static const size_t BUDGET_MULTIPLIER = 2; /** * The maximal number of independent restarts allowed for an algorithm that restarts itself. @@ -86,25 +86,25 @@ static void timing_data_finalize(timing_data_t *timing_data); * bi-objective suite. */ int main(void) { - + coco_random_state_t *random_generator = coco_random_new(RANDOM_SEED); - + /* Change the log level to "warning" to get less output */ coco_set_log_level("info"); - + printf("Running the example experiment... (might take time, be patient)\n"); fflush(stdout); - - /*example_experiment("bbob-biobj", "bbob-biobj", random_generator); - Uncomment the line below to run the same example experiment on the bbob suite*/ - example_experiment("bbob", "bbob", random_generator); - + example_experiment("bbob-biobj", "bbob-biobj", random_generator); + + /* Uncomment the line below to run the same example experiment on the bbob suite + example_experiment("bbob", "bbob", random_generator); */ + printf("Done!\n"); fflush(stdout); - + coco_random_free(random_generator); - + return 0; } @@ -121,7 +121,7 @@ int main(void) { void example_experiment(const char *suite_name, const char *observer_name, coco_random_state_t *random_generator) { - + size_t run; coco_suite_t *suite; coco_observer_t *observer; @@ -129,12 +129,12 @@ void example_experiment(const char *suite_name, /* Set some options for the observer. See documentation for other options. */ char *observer_options = - coco_strdupf("result_folder: RS_on_%s " - "algorithm_name: RS " - "algorithm_info: \"A simple random search algorithm\"", suite_name); - + coco_strdupf("result_folder: RS_on_%s " + "algorithm_name: RS " + "algorithm_info: \"A simple random search algorithm\"", suite_name); + /* Initialize the suite and observer */ - suite = coco_suite(suite_name, "year: 2016", "instance_indices: 1-10 function_indices: 1-5 dimensions: 2,3,5,10,20,40"); + suite = coco_suite(suite_name, "year: 2016", "dimensions: 2,3,5,10,20,40"); observer = coco_observer(observer_name, observer_options); coco_free_memory(observer_options); @@ -143,19 +143,19 @@ void example_experiment(const char *suite_name, /* Iterate over all problems in the suite */ while ((PROBLEM = coco_suite_get_next_problem(suite, observer)) != NULL) { - + size_t dimension = coco_problem_get_dimension(PROBLEM); - + /* Run the algorithm at least once */ for (run = 1; run <= 1 + INDEPENDENT_RESTARTS; run++) { - + size_t evaluations_done = coco_problem_get_evaluations(PROBLEM); long evaluations_remaining = (long) (dimension * BUDGET_MULTIPLIER) - (long) evaluations_done; - + /* Break the loop if the target was hit or there are no more remaining evaluations */ if (coco_problem_final_target_hit(PROBLEM) || (evaluations_remaining <= 0)) break; - + /* Call the optimization algorithm for the remaining number of evaluations */ my_random_search(evaluate_function, dimension, @@ -164,7 +164,7 @@ void example_experiment(const char *suite_name, coco_problem_get_largest_values_of_interest(PROBLEM), (size_t) evaluations_remaining, random_generator); - + /* Break the loop if the algorithm performed no evaluations or an unexpected thing happened */ if (coco_problem_get_evaluations(PROBLEM) == evaluations_done) { printf("WARNING: Budget has not been exhausted (%lu/%lu evaluations done)!\n", @@ -184,7 +184,7 @@ void example_experiment(const char *suite_name, coco_observer_free(observer); coco_suite_free(suite); - + } /** @@ -206,26 +206,26 @@ void my_random_search(evaluate_function_t evaluate, const double *upper_bounds, const size_t max_budget, coco_random_state_t *random_generator) { - + double *x = coco_allocate_vector(dimension); double *y = coco_allocate_vector(number_of_objectives); double range; size_t i, j; - + for (i = 0; i < max_budget; ++i) { - + /* Construct x as a random point between the lower and upper bounds */ for (j = 0; j < dimension; ++j) { range = upper_bounds[j] - lower_bounds[j]; x[j] = lower_bounds[j] + coco_random_uniform(random_generator) * range; } - + /* Call the evaluate function to evaluate x on the current problem (this is where all the COCO logging * is performed) */ evaluate(x, y); - + } - + coco_free_memory(x); coco_free_memory(y); } @@ -249,7 +249,7 @@ void my_grid_search(evaluate_function_t evaluate, const double *lower_bounds, const double *upper_bounds, const size_t max_budget) { - + double *x = coco_allocate_vector(dimension); double *y = coco_allocate_vector(number_of_objectives); long *nodes = (long *) coco_allocate_memory(sizeof(long) * dimension); @@ -257,33 +257,33 @@ void my_grid_search(evaluate_function_t evaluate, size_t i, j; size_t evaluations = 0; long max_nodes = (long) floor(pow((double) max_budget, 1.0 / (double) dimension)) - 1; - + /* Take care of the borderline case */ if (max_nodes < 1) max_nodes = 1; - + /* Initialization */ for (j = 0; j < dimension; j++) { nodes[j] = 0; grid_step[j] = (upper_bounds[j] - lower_bounds[j]) / (double) max_nodes; } - + while (evaluations < max_budget) { - + /* Construct x and evaluate it */ for (j = 0; j < dimension; j++) { x[j] = lower_bounds[j] + grid_step[j] * (double) nodes[j]; } - + /* Call the evaluate function to evaluate x on the current problem (this is where all the COCO logging * is performed) */ evaluate(x, y); evaluations++; - + /* Inside the grid, move to the next node */ if (nodes[0] < max_nodes) { nodes[0]++; } - + /* At an outside node of the grid, move to the next level */ else if (max_nodes > 0) { for (j = 1; j < dimension; j++) { @@ -294,13 +294,13 @@ void my_grid_search(evaluate_function_t evaluate, break; } } - + /* At the end of the grid, exit */ if ((j == dimension) && (nodes[j - 1] == max_nodes)) break; } } - + coco_free_memory(x); coco_free_memory(y); coco_free_memory(nodes); From 5e72ce8508b6fca029ed8e2afcfeb248f07d290e Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 27 May 2016 15:46:54 +0200 Subject: [PATCH 247/446] pproc: several deletion and replacement of static dimension values such as (2, 3,...) --- code-experiments/src/f_ellipsoid.c | 2 +- .../bbob_pproc/comp2/ppfig2.py | 12 ++++++++-- .../bbob_pproc/comp2/ppscatter.py | 4 +++- .../bbob_pproc/compall/ppfigs.py | 22 ++++++++++++++----- .../bbob_pproc/compall/pptables.py | 2 +- code-postprocessing/bbob_pproc/ppfig.py | 1 - code-postprocessing/bbob_pproc/ppfigparam.py | 2 +- code-postprocessing/bbob_pproc/toolsstats.py | 1 + 8 files changed, 33 insertions(+), 13 deletions(-) diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 020d53d7f..a3494f0ed 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -176,7 +176,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = f_ellipsoid_allocate(dimension); problem = transform_vars_oscillate(problem); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_permutation(problem, P2, dimension); problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); diff --git a/code-postprocessing/bbob_pproc/comp2/ppfig2.py b/code-postprocessing/bbob_pproc/comp2/ppfig2.py index 68491c4ed..c9c7296b1 100644 --- a/code-postprocessing/bbob_pproc/comp2/ppfig2.py +++ b/code-postprocessing/bbob_pproc/comp2/ppfig2.py @@ -32,7 +32,9 @@ #from bbob_pproc.toolsstats import ranksumtest #pass -dimensions = (2, 3, 5, 10, 20, 40) +#dimensions = (2, 3, 5, 10, 20, 40) #Wassim: deleted + + styles = [{'color': 'c', 'marker': '+', 'markeredgecolor': 'c', 'markerfacecolor': 'None'}, {'color': 'g', 'marker': 'v', 'markeredgecolor': 'g', @@ -57,7 +59,7 @@ fthresh = 1e-8 xmax = 1000 -dimension_index = dict([(dimensions[i], i) for i in xrange(len(dimensions))]) +#dimension_index = dict([(dimensions[i], i) for i in xrange(len(dimensions))]) # Wassim: Deleted def _generateData(entry0, entry1, fthresh=None, downsampling=None): @@ -198,6 +200,9 @@ def annotate(entry0, entry1, dim, minfvalue=1e-8, nbtests=1): tmp2 = str(int(line[0][2])) txt = tmp + '/' + tmp2 + dimensions = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display + dimension_index = dict([(dimensions[i], i) for i in xrange(len(dimensions))]) + dims = dimension_index ax = plt.gca() assert line[0][2] > 0 or line[1][2] > 0 @@ -266,6 +271,9 @@ def main(dsList0, dsList1, minfvalue=1e-8, outputdir='', verbose=True): dictFun0 = dsList0.dictByFunc() dictFun1 = dsList1.dictByFunc() + dimensions = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display + dimension_index = dict([(dimensions[i], i) for i in xrange(len(dimensions))]) + for func in set.intersection(set(dictFun0), set(dictFun1)): dictDim0 = dictFun0[func].dictByDim() dictDim1 = dictFun1[func].dictByDim() diff --git a/code-postprocessing/bbob_pproc/comp2/ppscatter.py b/code-postprocessing/bbob_pproc/comp2/ppscatter.py index 0d3c66919..6492859dc 100644 --- a/code-postprocessing/bbob_pproc/comp2/ppscatter.py +++ b/code-postprocessing/bbob_pproc/comp2/ppscatter.py @@ -45,7 +45,7 @@ from .. import toolsdivers from .. import pproc -dimensions = (2, 3, 5, 10, 20, 40) +#dimensions = (2, 3, 5, 10, 20, 40) ## Wassim: # # formattings markersize = 14 # modified in config.py @@ -175,6 +175,8 @@ def main(dsList0, dsList1, outputdir, verbose=True): funInfos = ppfigparam.read_fun_infos() + dimensions = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display + for f in funcs: dictDim0 = dictFunc0[f].dictByDim() dictDim1 = dictFunc1[f].dictByDim() diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index cfd98da1d..0ec543fec 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -335,18 +335,29 @@ def beautify(legend=False, rightlegend=False): # ticks on axes #axisHandle.invert_xaxis() - dimticklist = (2, 3, 5, 10, 20, 40) # TODO: should become input arg at some point? - dimannlist = (2, 3, 5, 10, 20, 40) # TODO: should become input arg at some point? + #dimticklist = (2, 3, 5, 10, 20, 40) # TODO: should become input arg at some point? + dimticklist = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display + # dimannlist = (2, 3, 5, 10, 20, 40) # TODO: should become input arg at some point? + dimannlist = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display # TODO: All these should depend on (xlim, ylim) axisHandle.set_xticks(dimticklist) axisHandle.set_xticklabels([str(n) for n in dimannlist]) - # axes limites + # axes limites # Wassim: what do these numbers mean exactly?! + + # Wassim: to dynamically set xlim + import numpy + dim_min_margin = testbedsettings.current_testbed.dimensions_to_display[0] * 0.9 + dim_max_margin = testbedsettings.current_testbed.dimensions_to_display[-1] * 1.125 + if rightlegend: - plt.xlim(1.8, 101) # 101 is 10 ** (numpy.log10(45/1.8)*1.25) * 1.8 + #plt.xlim(1.8, 101) # 101 is 10 ** (numpy.log10(45/1.8)*1.25) * 1.8 + #plt.xlim(19.8, 4500) # Wassim: for large-scale, the following is tentative + plt.xlim( dim_min_margin, 10 ** (numpy.log10(dim_max_margin / dim_min_margin)*1.25) * dim_min_margin) else: - plt.xlim(1.8, 45) # Should depend on xmin and xmax + #plt.xlim(1.8, 45) # Should depend on xmin and xmax + plt.xlim(dim_min_margin, dim_max_margin) # Wassim: for large-scale tmp = axisHandle.get_yticks() tmp2 = [] @@ -439,7 +450,6 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd dimnbsucc.append(dim) ynbsucc.append(float(data[0])/dim) nbsucc.append('%d' % data[2]) - # Draw lines if 1 < 3: # new version # omit the line if a point in between is missing diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 43d4c3090..04d7d7f23 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -374,7 +374,7 @@ def main(dictAlg, sortedAlgs, isBiobjective, outputdir='.', verbose=True, functi # significance test of best given algorithm against all others best_alg_idx = numpy.array(algerts).argsort(0)[0, :] # indexed by target index - significance_versus_others = significance_all_best_vs_other(algentries, targetsOfInterest, best_alg_idx)[0] + significance_versus_others = significance_all_best_vs_other(algentries, targetsOfInterest, best_alg_idx)[0] # Wassim: seems to crash when data is incomplete # Create the table table = [] diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 8558bb1cb..58e27625d 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -274,7 +274,6 @@ def save_single_functions_html(filename, for ifun in range(first_function_number, last_function_number + 1): f.write(addImage('ppfigs_f%03d%s.%s' % (ifun, add_to_names, extension), True)) f.write(captionStringFormat % '##bbobppfigslegend##') - currentHeader = 'Scatter plots per function' f.write("\n

%s

\n" % currentHeader) if addLinkForNextDim: diff --git a/code-postprocessing/bbob_pproc/ppfigparam.py b/code-postprocessing/bbob_pproc/ppfigparam.py index 6a3cffd79..d4699fb74 100755 --- a/code-postprocessing/bbob_pproc/ppfigparam.py +++ b/code-postprocessing/bbob_pproc/ppfigparam.py @@ -37,7 +37,7 @@ refcolor = 'wheat' # should correspond with the colors in pprldistr. -dimsBBOB = (2, 3, 5, 10, 20, 40) +#dimsBBOB = (2, 3, 5, 10, 20, 40) # Wassim: Deleted # Get benchmark short infos, prepended with the function id. def read_fun_infos(): diff --git a/code-postprocessing/bbob_pproc/toolsstats.py b/code-postprocessing/bbob_pproc/toolsstats.py index 956e57fc7..56ba2ac72 100644 --- a/code-postprocessing/bbob_pproc/toolsstats.py +++ b/code-postprocessing/bbob_pproc/toolsstats.py @@ -714,6 +714,7 @@ def significance_all_best_vs_other(datasets, targets, best_alg_idx=None): erts = [] for ds in datasets: erts.append(ds.detERT(targets)) + best_alg_idx2 = np.array(erts).argsort(0)[0, :] # indexed by target index assert all(best_alg_idx2 == best_alg_idx) From 95f2475915cceffed3e3be86579686e35f68cd83 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 27 May 2016 15:46:54 +0200 Subject: [PATCH 248/446] pproc: several deletion and replacement of static dimension values such as (2, 3,...) --- code-experiments/src/f_ellipsoid.c | 2 +- .../bbob_pproc/comp2/ppfig2.py | 12 ++++++++-- .../bbob_pproc/comp2/ppscatter.py | 4 +++- .../bbob_pproc/compall/ppfigs.py | 22 ++++++++++++++----- .../bbob_pproc/compall/pptables.py | 2 +- code-postprocessing/bbob_pproc/ppfig.py | 1 - code-postprocessing/bbob_pproc/ppfigparam.py | 2 +- code-postprocessing/bbob_pproc/toolsstats.py | 1 + 8 files changed, 33 insertions(+), 13 deletions(-) diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index 020d53d7f..a3494f0ed 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -176,7 +176,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz problem = f_ellipsoid_allocate(dimension); problem = transform_vars_oscillate(problem); - problem = transform_vars_permutation(problem, P2, dimension);/* LIFO */ + problem = transform_vars_permutation(problem, P2, dimension); problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); problem = transform_vars_shift(problem, xopt, 0); diff --git a/code-postprocessing/bbob_pproc/comp2/ppfig2.py b/code-postprocessing/bbob_pproc/comp2/ppfig2.py index 68491c4ed..c9c7296b1 100644 --- a/code-postprocessing/bbob_pproc/comp2/ppfig2.py +++ b/code-postprocessing/bbob_pproc/comp2/ppfig2.py @@ -32,7 +32,9 @@ #from bbob_pproc.toolsstats import ranksumtest #pass -dimensions = (2, 3, 5, 10, 20, 40) +#dimensions = (2, 3, 5, 10, 20, 40) #Wassim: deleted + + styles = [{'color': 'c', 'marker': '+', 'markeredgecolor': 'c', 'markerfacecolor': 'None'}, {'color': 'g', 'marker': 'v', 'markeredgecolor': 'g', @@ -57,7 +59,7 @@ fthresh = 1e-8 xmax = 1000 -dimension_index = dict([(dimensions[i], i) for i in xrange(len(dimensions))]) +#dimension_index = dict([(dimensions[i], i) for i in xrange(len(dimensions))]) # Wassim: Deleted def _generateData(entry0, entry1, fthresh=None, downsampling=None): @@ -198,6 +200,9 @@ def annotate(entry0, entry1, dim, minfvalue=1e-8, nbtests=1): tmp2 = str(int(line[0][2])) txt = tmp + '/' + tmp2 + dimensions = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display + dimension_index = dict([(dimensions[i], i) for i in xrange(len(dimensions))]) + dims = dimension_index ax = plt.gca() assert line[0][2] > 0 or line[1][2] > 0 @@ -266,6 +271,9 @@ def main(dsList0, dsList1, minfvalue=1e-8, outputdir='', verbose=True): dictFun0 = dsList0.dictByFunc() dictFun1 = dsList1.dictByFunc() + dimensions = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display + dimension_index = dict([(dimensions[i], i) for i in xrange(len(dimensions))]) + for func in set.intersection(set(dictFun0), set(dictFun1)): dictDim0 = dictFun0[func].dictByDim() dictDim1 = dictFun1[func].dictByDim() diff --git a/code-postprocessing/bbob_pproc/comp2/ppscatter.py b/code-postprocessing/bbob_pproc/comp2/ppscatter.py index 0d3c66919..6492859dc 100644 --- a/code-postprocessing/bbob_pproc/comp2/ppscatter.py +++ b/code-postprocessing/bbob_pproc/comp2/ppscatter.py @@ -45,7 +45,7 @@ from .. import toolsdivers from .. import pproc -dimensions = (2, 3, 5, 10, 20, 40) +#dimensions = (2, 3, 5, 10, 20, 40) ## Wassim: # # formattings markersize = 14 # modified in config.py @@ -175,6 +175,8 @@ def main(dsList0, dsList1, outputdir, verbose=True): funInfos = ppfigparam.read_fun_infos() + dimensions = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display + for f in funcs: dictDim0 = dictFunc0[f].dictByDim() dictDim1 = dictFunc1[f].dictByDim() diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index cfd98da1d..0ec543fec 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -335,18 +335,29 @@ def beautify(legend=False, rightlegend=False): # ticks on axes #axisHandle.invert_xaxis() - dimticklist = (2, 3, 5, 10, 20, 40) # TODO: should become input arg at some point? - dimannlist = (2, 3, 5, 10, 20, 40) # TODO: should become input arg at some point? + #dimticklist = (2, 3, 5, 10, 20, 40) # TODO: should become input arg at some point? + dimticklist = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display + # dimannlist = (2, 3, 5, 10, 20, 40) # TODO: should become input arg at some point? + dimannlist = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display # TODO: All these should depend on (xlim, ylim) axisHandle.set_xticks(dimticklist) axisHandle.set_xticklabels([str(n) for n in dimannlist]) - # axes limites + # axes limites # Wassim: what do these numbers mean exactly?! + + # Wassim: to dynamically set xlim + import numpy + dim_min_margin = testbedsettings.current_testbed.dimensions_to_display[0] * 0.9 + dim_max_margin = testbedsettings.current_testbed.dimensions_to_display[-1] * 1.125 + if rightlegend: - plt.xlim(1.8, 101) # 101 is 10 ** (numpy.log10(45/1.8)*1.25) * 1.8 + #plt.xlim(1.8, 101) # 101 is 10 ** (numpy.log10(45/1.8)*1.25) * 1.8 + #plt.xlim(19.8, 4500) # Wassim: for large-scale, the following is tentative + plt.xlim( dim_min_margin, 10 ** (numpy.log10(dim_max_margin / dim_min_margin)*1.25) * dim_min_margin) else: - plt.xlim(1.8, 45) # Should depend on xmin and xmax + #plt.xlim(1.8, 45) # Should depend on xmin and xmax + plt.xlim(dim_min_margin, dim_max_margin) # Wassim: for large-scale tmp = axisHandle.get_yticks() tmp2 = [] @@ -439,7 +450,6 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd dimnbsucc.append(dim) ynbsucc.append(float(data[0])/dim) nbsucc.append('%d' % data[2]) - # Draw lines if 1 < 3: # new version # omit the line if a point in between is missing diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 43d4c3090..04d7d7f23 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -374,7 +374,7 @@ def main(dictAlg, sortedAlgs, isBiobjective, outputdir='.', verbose=True, functi # significance test of best given algorithm against all others best_alg_idx = numpy.array(algerts).argsort(0)[0, :] # indexed by target index - significance_versus_others = significance_all_best_vs_other(algentries, targetsOfInterest, best_alg_idx)[0] + significance_versus_others = significance_all_best_vs_other(algentries, targetsOfInterest, best_alg_idx)[0] # Wassim: seems to crash when data is incomplete # Create the table table = [] diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 8558bb1cb..58e27625d 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -274,7 +274,6 @@ def save_single_functions_html(filename, for ifun in range(first_function_number, last_function_number + 1): f.write(addImage('ppfigs_f%03d%s.%s' % (ifun, add_to_names, extension), True)) f.write(captionStringFormat % '##bbobppfigslegend##') - currentHeader = 'Scatter plots per function' f.write("\n

%s

\n" % currentHeader) if addLinkForNextDim: diff --git a/code-postprocessing/bbob_pproc/ppfigparam.py b/code-postprocessing/bbob_pproc/ppfigparam.py index 6a3cffd79..d4699fb74 100755 --- a/code-postprocessing/bbob_pproc/ppfigparam.py +++ b/code-postprocessing/bbob_pproc/ppfigparam.py @@ -37,7 +37,7 @@ refcolor = 'wheat' # should correspond with the colors in pprldistr. -dimsBBOB = (2, 3, 5, 10, 20, 40) +#dimsBBOB = (2, 3, 5, 10, 20, 40) # Wassim: Deleted # Get benchmark short infos, prepended with the function id. def read_fun_infos(): diff --git a/code-postprocessing/bbob_pproc/toolsstats.py b/code-postprocessing/bbob_pproc/toolsstats.py index 956e57fc7..56ba2ac72 100644 --- a/code-postprocessing/bbob_pproc/toolsstats.py +++ b/code-postprocessing/bbob_pproc/toolsstats.py @@ -714,6 +714,7 @@ def significance_all_best_vs_other(datasets, targets, best_alg_idx=None): erts = [] for ds in datasets: erts.append(ds.detERT(targets)) + best_alg_idx2 = np.array(erts).argsort(0)[0, :] # indexed by target index assert all(best_alg_idx2 == best_alg_idx) From fbc7921c56295082c5047958e3bd7ab84802a9bd Mon Sep 17 00:00:00 2001 From: NDManh Date: Fri, 27 May 2016 16:23:51 +0200 Subject: [PATCH 249/446] display tables with caption in run many --- .../bbob_pproc/compall/determineFtarget2.py | 2 +- .../bbob_pproc/compall/pptables.py | 63 +++++++++++++------ 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/determineFtarget2.py b/code-postprocessing/bbob_pproc/compall/determineFtarget2.py index 2802533c0..d1dcf4ab2 100644 --- a/code-postprocessing/bbob_pproc/compall/determineFtarget2.py +++ b/code-postprocessing/bbob_pproc/compall/determineFtarget2.py @@ -434,7 +434,7 @@ def main(argv=None): sys.exit() verboseflag = False - dims = [2,3,5,10,20,40] # default values list() + dims = testbedsettings.current_testbed.dimensions_to_display # Manh funcs = range(1,25) # default values list() directory = args # directories which contains data... # Process options diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 04d7d7f23..8ade4cd79 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -27,13 +27,22 @@ def get_table_caption(): preferably with a single latex command. """ - table_caption_one = r"""% - Average running time (\aRT\ in number of function - evaluations) divided by the respective best \aRT\ measured during BBOB-2009 in - #1. - The \aRT\ and in braces, as dispersion measure, the half difference between - 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and - """ + if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale + table_caption_one = r"""% + Average running time (\aRT\ in number of function + evaluations) divided by the respective best \aRT\ measured during BBOB-2009 in + #1. + The \aRT\ and in braces, as dispersion measure, the half difference between + 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and + """ + else: + table_caption_one = r"""% + Average running time (\aRT\ in number of function + evaluations) divided by the respective best \aRT\ measured during BBOB-2016 in + #1. + The \aRT\ and in braces, as dispersion measure, the half difference between + 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and + """ table_caption_two1 = r"""% target, the corresponding best \aRT\ in the first row. The different target \Df-values are shown in the top row. @@ -54,18 +63,32 @@ def get_table_caption(): \#succ is the number of trials that reached the last target $\hvref + """ + testbedsettings.current_testbed.hardesttargetlatex + r"""$. """ - table_caption_rest = (r"""% - The median number of conducted function evaluations is additionally given in - \textit{italics}, if the target in the last column was never reached. - Entries, succeeded by a star, are statistically significantly better (according to - the rank-sum test) when compared to all other algorithms of the table, with - $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger - than 1, with Bonferroni correction of #2. """ + - (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-2009.""" - if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) - else "") + r"""Best results are printed in bold. - """) + if max(testbedsettings.current_testbed.dimensions_to_display) <= 40: # Manh : option large scale + table_caption_rest = (r"""% + The median number of conducted function evaluations is additionally given in + \textit{italics}, if the target in the last column was never reached. + Entries, succeeded by a star, are statistically significantly better (according to + the rank-sum test) when compared to all other algorithms of the table, with + $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger + than 1, with Bonferroni correction of #2. """ + + (r"""A $\downarrow$ indicates the same tested against the best + algorithm of BBOB-2009.""" + if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) + else "") + r"""Best results are printed in bold. + """) + else: + table_caption_rest = (r"""% + The median number of conducted function evaluations is additionally given in + \textit{italics}, if the target in the last column was never reached. + Entries, succeeded by a star, are statistically significantly better (according to + the rank-sum test) when compared to all other algorithms of the table, with + $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger + than 1, with Bonferroni correction of #2. """ + + (r"""A $\downarrow$ indicates the same tested against the best + algorithm of BBOB-2016.""" + if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) + else "") + r"""Best results are printed in bold. + """) if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: # NOTE: no runlength-based targets supported yet @@ -650,7 +673,7 @@ def main(dictAlg, sortedAlgs, isBiobjective, outputdir='.', verbose=True, functi res = ("").join(str(item) for item in tableHtml) res = '\n\n%s
\n

\n' % res - if df[0] in (5, 20): + if df[0] in testbedsettings.current_testbed.tabDimsOfInterest: # Manh filename = os.path.join(outputdir, genericsettings.many_algorithm_file_name + '.html') lines = [] with open(filename) as infile: From d8dd7be26793c51488dd33868d2d6dde35204c90 Mon Sep 17 00:00:00 2001 From: NDManh Date: Fri, 27 May 2016 16:23:51 +0200 Subject: [PATCH 250/446] display tables with caption in run many --- .../bbob_pproc/compall/determineFtarget2.py | 2 +- .../bbob_pproc/compall/pptables.py | 63 +++++++++++++------ 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/determineFtarget2.py b/code-postprocessing/bbob_pproc/compall/determineFtarget2.py index 2802533c0..d1dcf4ab2 100644 --- a/code-postprocessing/bbob_pproc/compall/determineFtarget2.py +++ b/code-postprocessing/bbob_pproc/compall/determineFtarget2.py @@ -434,7 +434,7 @@ def main(argv=None): sys.exit() verboseflag = False - dims = [2,3,5,10,20,40] # default values list() + dims = testbedsettings.current_testbed.dimensions_to_display # Manh funcs = range(1,25) # default values list() directory = args # directories which contains data... # Process options diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 04d7d7f23..8ade4cd79 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -27,13 +27,22 @@ def get_table_caption(): preferably with a single latex command. """ - table_caption_one = r"""% - Average running time (\aRT\ in number of function - evaluations) divided by the respective best \aRT\ measured during BBOB-2009 in - #1. - The \aRT\ and in braces, as dispersion measure, the half difference between - 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and - """ + if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale + table_caption_one = r"""% + Average running time (\aRT\ in number of function + evaluations) divided by the respective best \aRT\ measured during BBOB-2009 in + #1. + The \aRT\ and in braces, as dispersion measure, the half difference between + 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and + """ + else: + table_caption_one = r"""% + Average running time (\aRT\ in number of function + evaluations) divided by the respective best \aRT\ measured during BBOB-2016 in + #1. + The \aRT\ and in braces, as dispersion measure, the half difference between + 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and + """ table_caption_two1 = r"""% target, the corresponding best \aRT\ in the first row. The different target \Df-values are shown in the top row. @@ -54,18 +63,32 @@ def get_table_caption(): \#succ is the number of trials that reached the last target $\hvref + """ + testbedsettings.current_testbed.hardesttargetlatex + r"""$. """ - table_caption_rest = (r"""% - The median number of conducted function evaluations is additionally given in - \textit{italics}, if the target in the last column was never reached. - Entries, succeeded by a star, are statistically significantly better (according to - the rank-sum test) when compared to all other algorithms of the table, with - $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger - than 1, with Bonferroni correction of #2. """ + - (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-2009.""" - if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) - else "") + r"""Best results are printed in bold. - """) + if max(testbedsettings.current_testbed.dimensions_to_display) <= 40: # Manh : option large scale + table_caption_rest = (r"""% + The median number of conducted function evaluations is additionally given in + \textit{italics}, if the target in the last column was never reached. + Entries, succeeded by a star, are statistically significantly better (according to + the rank-sum test) when compared to all other algorithms of the table, with + $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger + than 1, with Bonferroni correction of #2. """ + + (r"""A $\downarrow$ indicates the same tested against the best + algorithm of BBOB-2009.""" + if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) + else "") + r"""Best results are printed in bold. + """) + else: + table_caption_rest = (r"""% + The median number of conducted function evaluations is additionally given in + \textit{italics}, if the target in the last column was never reached. + Entries, succeeded by a star, are statistically significantly better (according to + the rank-sum test) when compared to all other algorithms of the table, with + $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger + than 1, with Bonferroni correction of #2. """ + + (r"""A $\downarrow$ indicates the same tested against the best + algorithm of BBOB-2016.""" + if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) + else "") + r"""Best results are printed in bold. + """) if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: # NOTE: no runlength-based targets supported yet @@ -650,7 +673,7 @@ def main(dictAlg, sortedAlgs, isBiobjective, outputdir='.', verbose=True, functi res = ("").join(str(item) for item in tableHtml) res = '\n\n%s
\n

\n' % res - if df[0] in (5, 20): + if df[0] in testbedsettings.current_testbed.tabDimsOfInterest: # Manh filename = os.path.join(outputdir, genericsettings.many_algorithm_file_name + '.html') lines = [] with open(filename) as infile: From 77893c58b0d3a3baa537c002e0f256d4dc1d81e1 Mon Sep 17 00:00:00 2001 From: NDManh Date: Fri, 27 May 2016 17:01:03 +0200 Subject: [PATCH 251/446] update caption for Empirical Cumulative Distribution Functions (ECDFs) per function group for each dimension --- .../bbob_pproc/compall/ppfigs.py | 80 +++++++++++++------ .../bbob_pproc/compall/pptables.py | 14 ++-- 2 files changed, 62 insertions(+), 32 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index 0ec543fec..823de1b57 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -106,11 +106,18 @@ def scaling_figure_caption(for_html = False): def prepare_ecdfs_figure_caption(): - best2009text = ( - r"The ``best 2009'' line " + - r"corresponds to the best \aRT\ observed during BBOB 2009 " + - r"for each selected target." - ) + if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale + best2009text = ( + r"The ``best 2009'' line " + + r"corresponds to the best \aRT\ observed during BBOB 2009 " + + r"for each selected target." + ) + else: + best2009text = ( + r"The ``best 2016'' line " + + r"corresponds to the best \aRT\ observed during BBOB 2016 " + + r"for each selected target." + ) ecdfs_figure_caption_standard = ( r"Bootstrapped empirical cumulative distribution of the number " + r"of objective function evaluations divided by dimension " + @@ -255,11 +262,18 @@ def plotLegend(handles, maxval=None): for k in sorted(ys[j].keys()): #enforce best 2009 comes first in case of equality tmp = [] - for h in ys[j][k]: - if plt.getp(h, 'label') == 'best 2009': - tmp.insert(0, h) - else: - tmp.append(h) + if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale + for h in ys[j][k]: + if plt.getp(h, 'label') == 'best 2009': + tmp.insert(0, h) + else: + tmp.append(h) + else: + for h in ys[j][k]: + if plt.getp(h, 'label') == 'best 2016': + tmp.insert(0, h) + else: + tmp.append(h) #tmp.reverse() ys[j][k] = tmp @@ -568,22 +582,38 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd alg_definitions.append((', ' if i > 0 else '') + '%s: %s' % (symb, '\\algorithm' + abc[i % len(abc)])) alg_definitions_html += (', ' if i > 0 else '') + '%s: %s' % (symb_html, toolsdivers.str_to_latex(toolsdivers.strip_pathname1(sortedAlgs[i]))) - toolsdivers.prepend_to_file(latex_commands_filename, - [#'\\providecommand{\\bbobppfigsftarget}{\\ensuremath{10^{%s}}}' - # % target.loglabel(0), # int(numpy.round(numpy.log10(target))), - '\\providecommand{\\bbobppfigslegend}[1]{', - scaling_figure_caption(), - 'Legend: '] + alg_definitions + ['}'] - ) - toolsdivers.prepend_to_file(latex_commands_filename, - ['\\providecommand{\\bbobECDFslegend}[1]{', - ecdfs_figure_caption(), '}'] - ) - + if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale + toolsdivers.prepend_to_file(latex_commands_filename, + [#'\\providecommand{\\bbobppfigsftarget}{\\ensuremath{10^{%s}}}' + # % target.loglabel(0), # int(numpy.round(numpy.log10(target))), + '\\providecommand{\\bbobppfigslegend}[1]{', + scaling_figure_caption(), + 'Legend: '] + alg_definitions + ['}'] + ) + toolsdivers.prepend_to_file(latex_commands_filename, + ['\\providecommand{\\bbobECDFslegend}[1]{', + ecdfs_figure_caption(), '}'] + ) + else: + toolsdivers.prepend_to_file(latex_commands_filename, + [#'\\providecommand{\\bbobppfigsftarget}{\\ensuremath{10^{%s}}}' + # % target.loglabel(0), # int(numpy.round(numpy.log10(target))), + '\\providecommand{\\bbobppfigslegendlargescalefixed}[1]{', + scaling_figure_caption(), + 'Legend: '] + alg_definitions + ['}'] + ) + toolsdivers.prepend_to_file(latex_commands_filename, + ['\\providecommand{\\bbobECDFslegendlargescalefixed}[1]{', + ecdfs_figure_caption(), '}'] + ) + toolsdivers.replace_in_file(htmlFile, '##bbobppfigslegend##', scaling_figure_caption(True) + 'Legend: ' + alg_definitions_html) - toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend5##', ecdfs_figure_caption(True, 5)) - toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend20##', ecdfs_figure_caption(True, 20)) - + if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale + toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend80##', ecdfs_figure_caption(True, 80)) + toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend320##', ecdfs_figure_caption(True, 320)) + else: + toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend5##', ecdfs_figure_caption(True, 5)) + toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend20##', ecdfs_figure_caption(True, 20)) if verbose: print 'Wrote commands and legend to %s' % filename diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 8ade4cd79..04f3139b5 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -30,7 +30,7 @@ def get_table_caption(): if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale table_caption_one = r"""% Average running time (\aRT\ in number of function - evaluations) divided by the respective best \aRT\ measured during BBOB-2009 in + evaluations) divided by the respective best \aRT\ measured during BBOB-2016 in #1. The \aRT\ and in braces, as dispersion measure, the half difference between 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and @@ -38,7 +38,7 @@ def get_table_caption(): else: table_caption_one = r"""% Average running time (\aRT\ in number of function - evaluations) divided by the respective best \aRT\ measured during BBOB-2016 in + evaluations) divided by the respective best \aRT\ measured during BBOB-2009 in #1. The \aRT\ and in braces, as dispersion measure, the half difference between 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and @@ -63,7 +63,7 @@ def get_table_caption(): \#succ is the number of trials that reached the last target $\hvref + """ + testbedsettings.current_testbed.hardesttargetlatex + r"""$. """ - if max(testbedsettings.current_testbed.dimensions_to_display) <= 40: # Manh : option large scale + if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale table_caption_rest = (r"""% The median number of conducted function evaluations is additionally given in \textit{italics}, if the target in the last column was never reached. @@ -72,7 +72,7 @@ def get_table_caption(): $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger than 1, with Bonferroni correction of #2. """ + (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-2009.""" + algorithm of BBOB-2016.""" if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) else "") + r"""Best results are printed in bold. """) @@ -84,11 +84,11 @@ def get_table_caption(): the rank-sum test) when compared to all other algorithms of the table, with $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger than 1, with Bonferroni correction of #2. """ + - (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-2016.""" + (r"""A $\downarrow$ indicates the same tested against the best + algorithm of BBOB-2009.""" if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) else "") + r"""Best results are printed in bold. - """) + """) if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: # NOTE: no runlength-based targets supported yet From fde7c8dd59db689e42bfbca3ade976a1336185f1 Mon Sep 17 00:00:00 2001 From: NDManh Date: Fri, 27 May 2016 17:01:03 +0200 Subject: [PATCH 252/446] update caption for Empirical Cumulative Distribution Functions (ECDFs) per function group for each dimension --- .../bbob_pproc/compall/ppfigs.py | 80 +++++++++++++------ .../bbob_pproc/compall/pptables.py | 14 ++-- 2 files changed, 62 insertions(+), 32 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index 0ec543fec..823de1b57 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -106,11 +106,18 @@ def scaling_figure_caption(for_html = False): def prepare_ecdfs_figure_caption(): - best2009text = ( - r"The ``best 2009'' line " + - r"corresponds to the best \aRT\ observed during BBOB 2009 " + - r"for each selected target." - ) + if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale + best2009text = ( + r"The ``best 2009'' line " + + r"corresponds to the best \aRT\ observed during BBOB 2009 " + + r"for each selected target." + ) + else: + best2009text = ( + r"The ``best 2016'' line " + + r"corresponds to the best \aRT\ observed during BBOB 2016 " + + r"for each selected target." + ) ecdfs_figure_caption_standard = ( r"Bootstrapped empirical cumulative distribution of the number " + r"of objective function evaluations divided by dimension " + @@ -255,11 +262,18 @@ def plotLegend(handles, maxval=None): for k in sorted(ys[j].keys()): #enforce best 2009 comes first in case of equality tmp = [] - for h in ys[j][k]: - if plt.getp(h, 'label') == 'best 2009': - tmp.insert(0, h) - else: - tmp.append(h) + if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale + for h in ys[j][k]: + if plt.getp(h, 'label') == 'best 2009': + tmp.insert(0, h) + else: + tmp.append(h) + else: + for h in ys[j][k]: + if plt.getp(h, 'label') == 'best 2016': + tmp.insert(0, h) + else: + tmp.append(h) #tmp.reverse() ys[j][k] = tmp @@ -568,22 +582,38 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd alg_definitions.append((', ' if i > 0 else '') + '%s: %s' % (symb, '\\algorithm' + abc[i % len(abc)])) alg_definitions_html += (', ' if i > 0 else '') + '%s: %s' % (symb_html, toolsdivers.str_to_latex(toolsdivers.strip_pathname1(sortedAlgs[i]))) - toolsdivers.prepend_to_file(latex_commands_filename, - [#'\\providecommand{\\bbobppfigsftarget}{\\ensuremath{10^{%s}}}' - # % target.loglabel(0), # int(numpy.round(numpy.log10(target))), - '\\providecommand{\\bbobppfigslegend}[1]{', - scaling_figure_caption(), - 'Legend: '] + alg_definitions + ['}'] - ) - toolsdivers.prepend_to_file(latex_commands_filename, - ['\\providecommand{\\bbobECDFslegend}[1]{', - ecdfs_figure_caption(), '}'] - ) - + if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale + toolsdivers.prepend_to_file(latex_commands_filename, + [#'\\providecommand{\\bbobppfigsftarget}{\\ensuremath{10^{%s}}}' + # % target.loglabel(0), # int(numpy.round(numpy.log10(target))), + '\\providecommand{\\bbobppfigslegend}[1]{', + scaling_figure_caption(), + 'Legend: '] + alg_definitions + ['}'] + ) + toolsdivers.prepend_to_file(latex_commands_filename, + ['\\providecommand{\\bbobECDFslegend}[1]{', + ecdfs_figure_caption(), '}'] + ) + else: + toolsdivers.prepend_to_file(latex_commands_filename, + [#'\\providecommand{\\bbobppfigsftarget}{\\ensuremath{10^{%s}}}' + # % target.loglabel(0), # int(numpy.round(numpy.log10(target))), + '\\providecommand{\\bbobppfigslegendlargescalefixed}[1]{', + scaling_figure_caption(), + 'Legend: '] + alg_definitions + ['}'] + ) + toolsdivers.prepend_to_file(latex_commands_filename, + ['\\providecommand{\\bbobECDFslegendlargescalefixed}[1]{', + ecdfs_figure_caption(), '}'] + ) + toolsdivers.replace_in_file(htmlFile, '##bbobppfigslegend##', scaling_figure_caption(True) + 'Legend: ' + alg_definitions_html) - toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend5##', ecdfs_figure_caption(True, 5)) - toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend20##', ecdfs_figure_caption(True, 20)) - + if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale + toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend80##', ecdfs_figure_caption(True, 80)) + toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend320##', ecdfs_figure_caption(True, 320)) + else: + toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend5##', ecdfs_figure_caption(True, 5)) + toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend20##', ecdfs_figure_caption(True, 20)) if verbose: print 'Wrote commands and legend to %s' % filename diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 8ade4cd79..04f3139b5 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -30,7 +30,7 @@ def get_table_caption(): if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale table_caption_one = r"""% Average running time (\aRT\ in number of function - evaluations) divided by the respective best \aRT\ measured during BBOB-2009 in + evaluations) divided by the respective best \aRT\ measured during BBOB-2016 in #1. The \aRT\ and in braces, as dispersion measure, the half difference between 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and @@ -38,7 +38,7 @@ def get_table_caption(): else: table_caption_one = r"""% Average running time (\aRT\ in number of function - evaluations) divided by the respective best \aRT\ measured during BBOB-2016 in + evaluations) divided by the respective best \aRT\ measured during BBOB-2009 in #1. The \aRT\ and in braces, as dispersion measure, the half difference between 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and @@ -63,7 +63,7 @@ def get_table_caption(): \#succ is the number of trials that reached the last target $\hvref + """ + testbedsettings.current_testbed.hardesttargetlatex + r"""$. """ - if max(testbedsettings.current_testbed.dimensions_to_display) <= 40: # Manh : option large scale + if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale table_caption_rest = (r"""% The median number of conducted function evaluations is additionally given in \textit{italics}, if the target in the last column was never reached. @@ -72,7 +72,7 @@ def get_table_caption(): $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger than 1, with Bonferroni correction of #2. """ + (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-2009.""" + algorithm of BBOB-2016.""" if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) else "") + r"""Best results are printed in bold. """) @@ -84,11 +84,11 @@ def get_table_caption(): the rank-sum test) when compared to all other algorithms of the table, with $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger than 1, with Bonferroni correction of #2. """ + - (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-2016.""" + (r"""A $\downarrow$ indicates the same tested against the best + algorithm of BBOB-2009.""" if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) else "") + r"""Best results are printed in bold. - """) + """) if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: # NOTE: no runlength-based targets supported yet From 13371eda9cfbea2ed571b38d1cbf6602eb5c0791 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 30 May 2016 11:11:19 +0200 Subject: [PATCH 253/446] pproc: compall/ppfigs.py modifications to better accomodate large-scale and future test-beds --- .../bbob_pproc/compall/ppfigs.py | 52 ++++++++++--------- .../bbob_pproc/testbedsettings.py | 4 +- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index 823de1b57..28d932f9b 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -106,18 +106,12 @@ def scaling_figure_caption(for_html = False): def prepare_ecdfs_figure_caption(): - if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale - best2009text = ( - r"The ``best 2009'' line " + - r"corresponds to the best \aRT\ observed during BBOB 2009 " + - r"for each selected target." - ) - else: - best2009text = ( - r"The ``best 2016'' line " + - r"corresponds to the best \aRT\ observed during BBOB 2016 " + - r"for each selected target." - ) + bestyeartext = ( + r"The ``best %d'' line " % testbedsettings.current_testbed.best_algorithm_year + + r"corresponds to the best \aRT\ observed during BBOB %d " % testbedsettings.current_testbed.best_algorithm_year + + r"for each selected target." + ) + ecdfs_figure_caption_standard = ( r"Bootstrapped empirical cumulative distribution of the number " + r"of objective function evaluations divided by dimension " + @@ -135,16 +129,26 @@ def prepare_ecdfs_figure_caption(): r"with $k\in \{0.5, 1.2, 3, 10, 50\}$. " ) - if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: - # NOTE: no runlength-based targets supported yet - figure_caption = ecdfs_figure_caption_standard - elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: + + if testbedsettings.current_testbed.best_algorithm_filename: if genericsettings.runlength_based_targets: - figure_caption = ecdfs_figure_caption_rlbased + best2009text + figure_caption = ecdfs_figure_caption_rlbased + bestyeartext else: - figure_caption = ecdfs_figure_caption_standard + best2009text + figure_caption = ecdfs_figure_caption_standard + bestyeartext else: - warnings.warn("Current settings do not support ppfigdim caption.") + figure_caption = ecdfs_figure_caption_standard + + # Wassim: relaced what's below to have more generic code +# if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: + # NOTE: no runlength-based targets supported yet +# figure_caption = ecdfs_figure_caption_standard +# elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: +# if genericsettings.runlength_based_targets: +# figure_caption = ecdfs_figure_caption_rlbased + bestyeartext +# else: +# figure_caption = ecdfs_figure_caption_standard + bestyeartext +# else: +# warnings.warn("Current settings do not support ppfigdim caption.") return figure_caption @@ -608,12 +612,10 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd ) toolsdivers.replace_in_file(htmlFile, '##bbobppfigslegend##', scaling_figure_caption(True) + 'Legend: ' + alg_definitions_html) - if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale - toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend80##', ecdfs_figure_caption(True, 80)) - toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend320##', ecdfs_figure_caption(True, 320)) - else: - toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend5##', ecdfs_figure_caption(True, 5)) - toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend20##', ecdfs_figure_caption(True, 20)) + # Wassim: generalized what's below + for i in xrange(len(testbedsettings.current_testbed.rldDimsOfInterest)): + toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend%d##' % testbedsettings.current_testbed.rldDimsOfInterest[i], ecdfs_figure_caption(True, testbedsettings.current_testbed.rldDimsOfInterest[i])) + if verbose: print 'Wrote commands and legend to %s' % filename diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index a1f2bd0df..11ef8312a 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -148,6 +148,7 @@ def __init__(self, target_values): self.first_function_number = 101 self.last_function_number = 130 self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' + self.best_algorithm_year = 2009 class LargeScaleTestbed(SingleObjectiveTestbed): """First large scale Testbed @@ -162,7 +163,8 @@ def __init__(self, targetValues): self.tabDimsOfInterest = [80, 320] self.rldDimsOfInterest = [80, 320] self.htmlDimsOfInterest = [80, 320] - self.best_algorithm_filename = '' #Wassim: TODO: upadate pptable.py caption to no longer mention bestAlg (for now) + self.best_algorithm_filename = '' #'' #Wassim: TODO: upadate pptable.py caption to no longer mention bestAlg (for now) + self.best_algorithm_year = 2016 class GECCOBiObjBBOBTestbed(Testbed): From 1f01a73eec94c4c763975551916ef6b3be6775dd Mon Sep 17 00:00:00 2001 From: oaelhara Date: Mon, 30 May 2016 11:11:19 +0200 Subject: [PATCH 254/446] pproc: compall/ppfigs.py modifications to better accomodate large-scale and future test-beds --- .../bbob_pproc/compall/ppfigs.py | 52 ++++++++++--------- .../bbob_pproc/testbedsettings.py | 4 +- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index 823de1b57..28d932f9b 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -106,18 +106,12 @@ def scaling_figure_caption(for_html = False): def prepare_ecdfs_figure_caption(): - if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale - best2009text = ( - r"The ``best 2009'' line " + - r"corresponds to the best \aRT\ observed during BBOB 2009 " + - r"for each selected target." - ) - else: - best2009text = ( - r"The ``best 2016'' line " + - r"corresponds to the best \aRT\ observed during BBOB 2016 " + - r"for each selected target." - ) + bestyeartext = ( + r"The ``best %d'' line " % testbedsettings.current_testbed.best_algorithm_year + + r"corresponds to the best \aRT\ observed during BBOB %d " % testbedsettings.current_testbed.best_algorithm_year + + r"for each selected target." + ) + ecdfs_figure_caption_standard = ( r"Bootstrapped empirical cumulative distribution of the number " + r"of objective function evaluations divided by dimension " + @@ -135,16 +129,26 @@ def prepare_ecdfs_figure_caption(): r"with $k\in \{0.5, 1.2, 3, 10, 50\}$. " ) - if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: - # NOTE: no runlength-based targets supported yet - figure_caption = ecdfs_figure_caption_standard - elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: + + if testbedsettings.current_testbed.best_algorithm_filename: if genericsettings.runlength_based_targets: - figure_caption = ecdfs_figure_caption_rlbased + best2009text + figure_caption = ecdfs_figure_caption_rlbased + bestyeartext else: - figure_caption = ecdfs_figure_caption_standard + best2009text + figure_caption = ecdfs_figure_caption_standard + bestyeartext else: - warnings.warn("Current settings do not support ppfigdim caption.") + figure_caption = ecdfs_figure_caption_standard + + # Wassim: relaced what's below to have more generic code +# if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: + # NOTE: no runlength-based targets supported yet +# figure_caption = ecdfs_figure_caption_standard +# elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: +# if genericsettings.runlength_based_targets: +# figure_caption = ecdfs_figure_caption_rlbased + bestyeartext +# else: +# figure_caption = ecdfs_figure_caption_standard + bestyeartext +# else: +# warnings.warn("Current settings do not support ppfigdim caption.") return figure_caption @@ -608,12 +612,10 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd ) toolsdivers.replace_in_file(htmlFile, '##bbobppfigslegend##', scaling_figure_caption(True) + 'Legend: ' + alg_definitions_html) - if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale - toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend80##', ecdfs_figure_caption(True, 80)) - toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend320##', ecdfs_figure_caption(True, 320)) - else: - toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend5##', ecdfs_figure_caption(True, 5)) - toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend20##', ecdfs_figure_caption(True, 20)) + # Wassim: generalized what's below + for i in xrange(len(testbedsettings.current_testbed.rldDimsOfInterest)): + toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend%d##' % testbedsettings.current_testbed.rldDimsOfInterest[i], ecdfs_figure_caption(True, testbedsettings.current_testbed.rldDimsOfInterest[i])) + if verbose: print 'Wrote commands and legend to %s' % filename diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index a1f2bd0df..11ef8312a 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -148,6 +148,7 @@ def __init__(self, target_values): self.first_function_number = 101 self.last_function_number = 130 self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' + self.best_algorithm_year = 2009 class LargeScaleTestbed(SingleObjectiveTestbed): """First large scale Testbed @@ -162,7 +163,8 @@ def __init__(self, targetValues): self.tabDimsOfInterest = [80, 320] self.rldDimsOfInterest = [80, 320] self.htmlDimsOfInterest = [80, 320] - self.best_algorithm_filename = '' #Wassim: TODO: upadate pptable.py caption to no longer mention bestAlg (for now) + self.best_algorithm_filename = '' #'' #Wassim: TODO: upadate pptable.py caption to no longer mention bestAlg (for now) + self.best_algorithm_year = 2016 class GECCOBiObjBBOBTestbed(Testbed): From fd7e068699367b0c773cdc21814dc46f70b18bba Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 1 Jun 2016 01:26:00 +0200 Subject: [PATCH 255/446] pproc: added missing attributes to non large-scale testbeds in testbedsettings.py --- code-experiments/build/c/example_experiment.c | 6 +++--- code-postprocessing/bbob_pproc/testbedsettings.py | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index 0de5a4bd6..fe89ab9ea 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -95,10 +95,10 @@ int main(void) { printf("Running the example experiment... (might take time, be patient)\n"); fflush(stdout); - /*example_experiment("bbob-biobj", "bbob-biobj", random_generator);*/ + example_experiment("bbob-biobj", "bbob-biobj", random_generator); - /* Uncomment the line below to run the same example experiment on the bbob suite*/ - example_experiment("bbob", "bbob", random_generator); + /* Uncomment the line below to run the same example experiment on the bbob suite + example_experiment("bbob", "bbob", random_generator); */ printf("Done!\n"); fflush(stdout); diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 11ef8312a..6d102b55e 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -127,6 +127,7 @@ def __init__(self, targetValues): self.rldDimsOfInterest = [5, 20] self.htmlDimsOfInterest = [5, 20] self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' + self.best_algorithm_year = 2016 class GECCOBBOBNoisyTestbed(GECCOBBOBTestbed): @@ -201,6 +202,7 @@ def __init__(self, targetValues): self.pptablemany_targetsOfInterest = targetValues((1e-0, 1e-2, 1e-5)) # used for pptables self.scenario = scenario_biobjfixed self.best_algorithm_filename = '' + self.best_algorithm_year = 2016 self.short_names = get_short_names(self.shortinfo_filename) # expensive optimization settings: self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting @@ -211,7 +213,7 @@ def __init__(self, targetValues): self.tabDimsOfInterest = [5, 20] self.rldDimsOfInterest = [5, 20] self.htmlDimsOfInterest = [5, 20] - + self.first_dimension = 2 From 064079850f897ae061f2eb82b8822f482f941ce0 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 1 Jun 2016 01:26:00 +0200 Subject: [PATCH 256/446] pproc: added missing attributes to non large-scale testbeds in testbedsettings.py --- code-experiments/build/c/example_experiment.c | 6 +++--- code-postprocessing/bbob_pproc/testbedsettings.py | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index 0de5a4bd6..fe89ab9ea 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -95,10 +95,10 @@ int main(void) { printf("Running the example experiment... (might take time, be patient)\n"); fflush(stdout); - /*example_experiment("bbob-biobj", "bbob-biobj", random_generator);*/ + example_experiment("bbob-biobj", "bbob-biobj", random_generator); - /* Uncomment the line below to run the same example experiment on the bbob suite*/ - example_experiment("bbob", "bbob", random_generator); + /* Uncomment the line below to run the same example experiment on the bbob suite + example_experiment("bbob", "bbob", random_generator); */ printf("Done!\n"); fflush(stdout); diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 11ef8312a..6d102b55e 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -127,6 +127,7 @@ def __init__(self, targetValues): self.rldDimsOfInterest = [5, 20] self.htmlDimsOfInterest = [5, 20] self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' + self.best_algorithm_year = 2016 class GECCOBBOBNoisyTestbed(GECCOBBOBTestbed): @@ -201,6 +202,7 @@ def __init__(self, targetValues): self.pptablemany_targetsOfInterest = targetValues((1e-0, 1e-2, 1e-5)) # used for pptables self.scenario = scenario_biobjfixed self.best_algorithm_filename = '' + self.best_algorithm_year = 2016 self.short_names = get_short_names(self.shortinfo_filename) # expensive optimization settings: self.pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # [0.5, 2, 10, 50] # used in config for expensive setting @@ -211,7 +213,7 @@ def __init__(self, targetValues): self.tabDimsOfInterest = [5, 20] self.rldDimsOfInterest = [5, 20] self.htmlDimsOfInterest = [5, 20] - + self.first_dimension = 2 From 6ee93ea90dd1b5c27f2f5ffa1072ff0b104bb1ce Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 1 Jun 2016 19:43:07 +0200 Subject: [PATCH 257/446] rosenbrock functions: work-around to no longer trigger best_parameter not updated, by setting the best parameter manually --- code-experiments/src/f_griewank_rosenbrock.c | 13 ++++++++++++- code-experiments/src/f_rosenbrock.c | 14 +++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 1afb178c3..7d2377cdb 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -84,6 +84,7 @@ static coco_problem_t *f_griewank_rosenbrock_bbob_problem_allocate(const size_t double *b = coco_allocate_vector(dimension); double *shift = coco_allocate_vector(dimension); double scales, **rot1; + double tmp; /* Wassim: will serve to set the optimal solution "manually"*/ fopt = bbob2009_compute_fopt(function, instance); for (i = 0; i < dimension; ++i) { @@ -103,8 +104,18 @@ static coco_problem_t *f_griewank_rosenbrock_bbob_problem_allocate(const size_t problem = transform_obj_shift(problem, fopt); problem = transform_vars_shift(problem, shift, 0); bbob2009_copy_rotation_matrix(rot1, M, b, dimension); - problem = transform_vars_affine(problem, M, b, dimension); + for (i = 0; i < dimension; i++) { + problem->best_parameter[i] = 0; /* Wassim: TODO: not a proper way of avoiding to trigger coco_warning("transform_vars_affine(): 'best_parameter' not updated, set to NAN")*/ + } + problem = transform_vars_affine(problem, M, b, dimension); + for (j = 0; j < dimension; ++j) { /* Wassim: manually set xopt = rot1^T ones(dimension)/(2*factor) */ + tmp = 0; + for (i = 0; i < dimension; ++i) { + tmp += rot1[i][j]; + } + problem->best_parameter[j] = tmp / (2. * scales); + } bbob2009_free_matrix(rot1, dimension); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index 3eb9b59f6..a0dac7869 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -127,6 +127,7 @@ static coco_problem_t *f_rosenbrock_rotated_bbob_problem_allocate(const size_t f double *M = coco_allocate_vector(dimension * dimension); double *b = coco_allocate_vector(dimension); double *current_row, **rot1, factor; + double tmp; /* Wassim: will serve to set the optimal solution "manually"*/ fopt = bbob2009_compute_fopt(function, instance); rot1 = bbob2009_allocate_matrix(dimension, dimension); @@ -141,12 +142,23 @@ static coco_problem_t *f_rosenbrock_rotated_bbob_problem_allocate(const size_t f } b[row] = 0.5; } - bbob2009_free_matrix(rot1, dimension); + /*bbob2009_free_matrix(rot1, dimension);*/ problem = f_rosenbrock_allocate(dimension); + for (row = 0; row < dimension; row++) { + problem->best_parameter[row] = 0; /* Wassim: TODO: not a proper way of avoiding to trigger coco_warning("transform_vars_affine(): 'best_parameter' not updated, set to NAN")*/ + } problem = transform_vars_affine(problem, M, b, dimension); problem = transform_obj_shift(problem, fopt); + for (column = 0; column < dimension; ++column) { /* Wassim: manually set xopt = rot1^T ones(dimension)/(2*factor) */ + tmp = 0; + for (row = 0; row < dimension; ++row) { + tmp += rot1[row][column]; + } + problem->best_parameter[column] = tmp / (2. * factor); + } + bbob2009_free_matrix(rot1, dimension); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "2-moderate"); From 3c18e191a70d62e9366cbc9cac8af5df3030c235 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 1 Jun 2016 19:43:07 +0200 Subject: [PATCH 258/446] rosenbrock functions: work-around to no longer trigger best_parameter not updated, by setting the best parameter manually --- code-experiments/src/f_griewank_rosenbrock.c | 13 ++++++++++++- code-experiments/src/f_rosenbrock.c | 14 +++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 1afb178c3..7d2377cdb 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -84,6 +84,7 @@ static coco_problem_t *f_griewank_rosenbrock_bbob_problem_allocate(const size_t double *b = coco_allocate_vector(dimension); double *shift = coco_allocate_vector(dimension); double scales, **rot1; + double tmp; /* Wassim: will serve to set the optimal solution "manually"*/ fopt = bbob2009_compute_fopt(function, instance); for (i = 0; i < dimension; ++i) { @@ -103,8 +104,18 @@ static coco_problem_t *f_griewank_rosenbrock_bbob_problem_allocate(const size_t problem = transform_obj_shift(problem, fopt); problem = transform_vars_shift(problem, shift, 0); bbob2009_copy_rotation_matrix(rot1, M, b, dimension); - problem = transform_vars_affine(problem, M, b, dimension); + for (i = 0; i < dimension; i++) { + problem->best_parameter[i] = 0; /* Wassim: TODO: not a proper way of avoiding to trigger coco_warning("transform_vars_affine(): 'best_parameter' not updated, set to NAN")*/ + } + problem = transform_vars_affine(problem, M, b, dimension); + for (j = 0; j < dimension; ++j) { /* Wassim: manually set xopt = rot1^T ones(dimension)/(2*factor) */ + tmp = 0; + for (i = 0; i < dimension; ++i) { + tmp += rot1[i][j]; + } + problem->best_parameter[j] = tmp / (2. * scales); + } bbob2009_free_matrix(rot1, dimension); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index 3eb9b59f6..a0dac7869 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -127,6 +127,7 @@ static coco_problem_t *f_rosenbrock_rotated_bbob_problem_allocate(const size_t f double *M = coco_allocate_vector(dimension * dimension); double *b = coco_allocate_vector(dimension); double *current_row, **rot1, factor; + double tmp; /* Wassim: will serve to set the optimal solution "manually"*/ fopt = bbob2009_compute_fopt(function, instance); rot1 = bbob2009_allocate_matrix(dimension, dimension); @@ -141,12 +142,23 @@ static coco_problem_t *f_rosenbrock_rotated_bbob_problem_allocate(const size_t f } b[row] = 0.5; } - bbob2009_free_matrix(rot1, dimension); + /*bbob2009_free_matrix(rot1, dimension);*/ problem = f_rosenbrock_allocate(dimension); + for (row = 0; row < dimension; row++) { + problem->best_parameter[row] = 0; /* Wassim: TODO: not a proper way of avoiding to trigger coco_warning("transform_vars_affine(): 'best_parameter' not updated, set to NAN")*/ + } problem = transform_vars_affine(problem, M, b, dimension); problem = transform_obj_shift(problem, fopt); + for (column = 0; column < dimension; ++column) { /* Wassim: manually set xopt = rot1^T ones(dimension)/(2*factor) */ + tmp = 0; + for (row = 0; row < dimension; ++row) { + tmp += rot1[row][column]; + } + problem->best_parameter[column] = tmp / (2. * factor); + } + bbob2009_free_matrix(rot1, dimension); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "2-moderate"); From 181262e1732f4b463fc93e681f7b2fbffdf0cf20 Mon Sep 17 00:00:00 2001 From: NDManh Date: Sun, 5 Jun 2016 23:15:53 +0700 Subject: [PATCH 259/446] the caption and header varies in best_algorithm_year --- .../bbob_pproc/compall/pptables.py | 61 ++++++------------- code-postprocessing/bbob_pproc/ppfig.py | 9 ++- code-postprocessing/bbob_pproc/pptable.py | 8 +-- .../bbob_pproc/testbedsettings.py | 2 +- 4 files changed, 30 insertions(+), 50 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index f08a9eea5..8b9185129 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -27,22 +27,13 @@ def get_table_caption(): preferably with a single latex command. """ - if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale - table_caption_one = r"""% - Average running time (\aRT\ in number of function - evaluations) divided by the respective best \aRT\ measured during BBOB-2016 in - #1. - The \aRT\ and in braces, as dispersion measure, the half difference between - 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and - """ - else: - table_caption_one = r"""% - Average running time (\aRT\ in number of function - evaluations) divided by the respective best \aRT\ measured during BBOB-2009 in - #1. - The \aRT\ and in braces, as dispersion measure, the half difference between - 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and - """ + table_caption_one = r"""% + Average running time (\aRT\ in number of function + evaluations) divided by the respective best \aRT\ measured during""" + (""" BBOB-%s in + #1.""" %str(testbedsettings.current_testbed.best_algorithm_year)) + r""" + The \aRT\ and in braces, as dispersion measure, the half difference between + 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and + """ # Manh : the caption varies in best_algorithm_year table_caption_two1 = r"""% target, the corresponding best \aRT\ in the first row. The different target \Df-values are shown in the top row. @@ -63,32 +54,18 @@ def get_table_caption(): \#succ is the number of trials that reached the last target $\hvref + """ + testbedsettings.current_testbed.hardesttargetlatex + r"""$. """ - if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale - table_caption_rest = (r"""% - The median number of conducted function evaluations is additionally given in - \textit{italics}, if the target in the last column was never reached. - Entries, succeeded by a star, are statistically significantly better (according to - the rank-sum test) when compared to all other algorithms of the table, with - $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger - than 1, with Bonferroni correction of #2. """ + - (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-2016.""" - if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) - else "") + r"""Best results are printed in bold. - """) - else: - table_caption_rest = (r"""% - The median number of conducted function evaluations is additionally given in - \textit{italics}, if the target in the last column was never reached. - Entries, succeeded by a star, are statistically significantly better (according to - the rank-sum test) when compared to all other algorithms of the table, with - $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger - than 1, with Bonferroni correction of #2. """ + - (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-2009.""" - if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) - else "") + r"""Best results are printed in bold. - """) + table_caption_rest = (r"""% + The median number of conducted function evaluations is additionally given in + \textit{italics}, if the target in the last column was never reached. + Entries, succeeded by a star, are statistically significantly better (according to + the rank-sum test) when compared to all other algorithms of the table, with + $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger + than 1, with Bonferroni correction of #2. """ + + (r"""A $\downarrow$ indicates the same tested against the best + algorithm of BBOB-%s.""" %str(testbedsettings.current_testbed.best_algorithm_year) + if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) + else "") + r"""Best results are printed in bold. + """) # Manh : the caption varies in best_algorithm_year if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: # NOTE: no runlength-based targets supported yet diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 9f1b2508b..f8ec7d270 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -347,7 +347,8 @@ def save_single_functions_html(filename, elif htmlPage is HtmlPage.PPTABLE2: currentHeader = 'Table showing the aRT in number of function evaluations' if bestAlgExists: - currentHeader += ' divided by the best aRT measured during BBOB-2009' + currentHeader += ' divided by the best aRT measured during BBOB-%s' %str(testbedsettings.current_testbed.best_algorithm_year) + # Manh : the caption varies in best_algorithm_year f.write("\n

%s

\n" % currentHeader) f.write("\n\n") @@ -441,8 +442,10 @@ def write_ECDF(f, dimension, extension, captionStringFormat, functionGroups): def write_pptables(f, dimension, captionStringFormat, first_function_number, last_function_number, bestAlgExists): """Writes line for pptables images.""" - - additionalText = 'divided by the best aRT measured during BBOB-2009' if bestAlgExists else '' + + additionalText = ('divided by the best aRT measured during BBOB-%s' %str(testbedsettings.current_testbed.best_algorithm_year)) if bestAlgExists else '' + # Manh : the caption varies in best_algorithm_year + currentHeader = 'Table showing the aRT in number of function evaluations %s ' \ 'for dimension %d' % (additionalText, dimension) diff --git a/code-postprocessing/bbob_pproc/pptable.py b/code-postprocessing/bbob_pproc/pptable.py index 60cbe1670..e0f6c6f6e 100644 --- a/code-postprocessing/bbob_pproc/pptable.py +++ b/code-postprocessing/bbob_pproc/pptable.py @@ -56,11 +56,11 @@ def get_table_caption(): table_caption_one = r"""% Average running time (\aRT\ in number of function - evaluations) divided by the best \aRT\ measured during BBOB-2009. The \aRT\ + evaluations) divided by the best \aRT\ measured during""" + (""" BBOB-%s.""" %str(testbedsettings.current_testbed.best_algorithm_year)) + r""" The \aRT\ and in braces, as dispersion measure, the half difference between 90 and 10\%-tile of bootstrapped run lengths appear in the second row of each cell, the best \aRT\ - """ + """ # Manh : the caption varies in best_algorithm_year table_caption_two1 = (r"""% in the first. The different target \Df-values are shown in the top row. \#succ is the number of trials that reached the (final) target $\fopt + """ @@ -74,11 +74,11 @@ def get_table_caption(): The median number of conducted function evaluations is additionally given in \textit{italics}, if the target in the last column was never reached. \textbf{Bold} entries are statistically significantly better (according to - the rank-sum test) compared to the best algorithm in BBOB-2009, with + the rank-sum test) compared to the best algorithm in""" + (""" BBOB-%s, """ %str(testbedsettings.current_testbed.best_algorithm_year)) + r"""with $p = 0.05$ or $p = 10^{-k}$ when the number $k > 1$ is following the $\downarrow$ symbol, with Bonferroni correction by the number of functions. - """ + """ # Manh : the caption varies in best_algorithm_year if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: # NOTE: no runlength-based targets supported yet diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 6d102b55e..3c3bf6e0f 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -164,7 +164,7 @@ def __init__(self, targetValues): self.tabDimsOfInterest = [80, 320] self.rldDimsOfInterest = [80, 320] self.htmlDimsOfInterest = [80, 320] - self.best_algorithm_filename = '' #'' #Wassim: TODO: upadate pptable.py caption to no longer mention bestAlg (for now) + self.best_algorithm_filename = 'bestalgentries2016LS.pickle' #'' #Wassim: TODO: upadate pptable.py caption to no longer mention bestAlg (for now) self.best_algorithm_year = 2016 From 830293eca68f67a0c8e4a9fc50beee2a37165380 Mon Sep 17 00:00:00 2001 From: NDManh Date: Sun, 5 Jun 2016 23:15:53 +0700 Subject: [PATCH 260/446] the caption and header varies in best_algorithm_year --- .../bbob_pproc/compall/pptables.py | 61 ++++++------------- code-postprocessing/bbob_pproc/ppfig.py | 9 ++- code-postprocessing/bbob_pproc/pptable.py | 8 +-- .../bbob_pproc/testbedsettings.py | 2 +- 4 files changed, 30 insertions(+), 50 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index f08a9eea5..8b9185129 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -27,22 +27,13 @@ def get_table_caption(): preferably with a single latex command. """ - if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale - table_caption_one = r"""% - Average running time (\aRT\ in number of function - evaluations) divided by the respective best \aRT\ measured during BBOB-2016 in - #1. - The \aRT\ and in braces, as dispersion measure, the half difference between - 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and - """ - else: - table_caption_one = r"""% - Average running time (\aRT\ in number of function - evaluations) divided by the respective best \aRT\ measured during BBOB-2009 in - #1. - The \aRT\ and in braces, as dispersion measure, the half difference between - 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and - """ + table_caption_one = r"""% + Average running time (\aRT\ in number of function + evaluations) divided by the respective best \aRT\ measured during""" + (""" BBOB-%s in + #1.""" %str(testbedsettings.current_testbed.best_algorithm_year)) + r""" + The \aRT\ and in braces, as dispersion measure, the half difference between + 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and + """ # Manh : the caption varies in best_algorithm_year table_caption_two1 = r"""% target, the corresponding best \aRT\ in the first row. The different target \Df-values are shown in the top row. @@ -63,32 +54,18 @@ def get_table_caption(): \#succ is the number of trials that reached the last target $\hvref + """ + testbedsettings.current_testbed.hardesttargetlatex + r"""$. """ - if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale - table_caption_rest = (r"""% - The median number of conducted function evaluations is additionally given in - \textit{italics}, if the target in the last column was never reached. - Entries, succeeded by a star, are statistically significantly better (according to - the rank-sum test) when compared to all other algorithms of the table, with - $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger - than 1, with Bonferroni correction of #2. """ + - (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-2016.""" - if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) - else "") + r"""Best results are printed in bold. - """) - else: - table_caption_rest = (r"""% - The median number of conducted function evaluations is additionally given in - \textit{italics}, if the target in the last column was never reached. - Entries, succeeded by a star, are statistically significantly better (according to - the rank-sum test) when compared to all other algorithms of the table, with - $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger - than 1, with Bonferroni correction of #2. """ + - (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-2009.""" - if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) - else "") + r"""Best results are printed in bold. - """) + table_caption_rest = (r"""% + The median number of conducted function evaluations is additionally given in + \textit{italics}, if the target in the last column was never reached. + Entries, succeeded by a star, are statistically significantly better (according to + the rank-sum test) when compared to all other algorithms of the table, with + $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger + than 1, with Bonferroni correction of #2. """ + + (r"""A $\downarrow$ indicates the same tested against the best + algorithm of BBOB-%s.""" %str(testbedsettings.current_testbed.best_algorithm_year) + if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) + else "") + r"""Best results are printed in bold. + """) # Manh : the caption varies in best_algorithm_year if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: # NOTE: no runlength-based targets supported yet diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 9f1b2508b..f8ec7d270 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -347,7 +347,8 @@ def save_single_functions_html(filename, elif htmlPage is HtmlPage.PPTABLE2: currentHeader = 'Table showing the aRT in number of function evaluations' if bestAlgExists: - currentHeader += ' divided by the best aRT measured during BBOB-2009' + currentHeader += ' divided by the best aRT measured during BBOB-%s' %str(testbedsettings.current_testbed.best_algorithm_year) + # Manh : the caption varies in best_algorithm_year f.write("\n

%s

\n" % currentHeader) f.write("\n\n") @@ -441,8 +442,10 @@ def write_ECDF(f, dimension, extension, captionStringFormat, functionGroups): def write_pptables(f, dimension, captionStringFormat, first_function_number, last_function_number, bestAlgExists): """Writes line for pptables images.""" - - additionalText = 'divided by the best aRT measured during BBOB-2009' if bestAlgExists else '' + + additionalText = ('divided by the best aRT measured during BBOB-%s' %str(testbedsettings.current_testbed.best_algorithm_year)) if bestAlgExists else '' + # Manh : the caption varies in best_algorithm_year + currentHeader = 'Table showing the aRT in number of function evaluations %s ' \ 'for dimension %d' % (additionalText, dimension) diff --git a/code-postprocessing/bbob_pproc/pptable.py b/code-postprocessing/bbob_pproc/pptable.py index 60cbe1670..e0f6c6f6e 100644 --- a/code-postprocessing/bbob_pproc/pptable.py +++ b/code-postprocessing/bbob_pproc/pptable.py @@ -56,11 +56,11 @@ def get_table_caption(): table_caption_one = r"""% Average running time (\aRT\ in number of function - evaluations) divided by the best \aRT\ measured during BBOB-2009. The \aRT\ + evaluations) divided by the best \aRT\ measured during""" + (""" BBOB-%s.""" %str(testbedsettings.current_testbed.best_algorithm_year)) + r""" The \aRT\ and in braces, as dispersion measure, the half difference between 90 and 10\%-tile of bootstrapped run lengths appear in the second row of each cell, the best \aRT\ - """ + """ # Manh : the caption varies in best_algorithm_year table_caption_two1 = (r"""% in the first. The different target \Df-values are shown in the top row. \#succ is the number of trials that reached the (final) target $\fopt + """ @@ -74,11 +74,11 @@ def get_table_caption(): The median number of conducted function evaluations is additionally given in \textit{italics}, if the target in the last column was never reached. \textbf{Bold} entries are statistically significantly better (according to - the rank-sum test) compared to the best algorithm in BBOB-2009, with + the rank-sum test) compared to the best algorithm in""" + (""" BBOB-%s, """ %str(testbedsettings.current_testbed.best_algorithm_year)) + r"""with $p = 0.05$ or $p = 10^{-k}$ when the number $k > 1$ is following the $\downarrow$ symbol, with Bonferroni correction by the number of functions. - """ + """ # Manh : the caption varies in best_algorithm_year if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: # NOTE: no runlength-based targets supported yet diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 6d102b55e..3c3bf6e0f 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -164,7 +164,7 @@ def __init__(self, targetValues): self.tabDimsOfInterest = [80, 320] self.rldDimsOfInterest = [80, 320] self.htmlDimsOfInterest = [80, 320] - self.best_algorithm_filename = '' #'' #Wassim: TODO: upadate pptable.py caption to no longer mention bestAlg (for now) + self.best_algorithm_filename = 'bestalgentries2016LS.pickle' #'' #Wassim: TODO: upadate pptable.py caption to no longer mention bestAlg (for now) self.best_algorithm_year = 2016 From 48913410cd71e0e2a8a279ee56997b89381680af Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 6 Jun 2016 09:09:42 +0700 Subject: [PATCH 261/446] Update f_step_ellipsoid from Wassim's folk --- code-experiments/src/f_step_ellipsoid.c | 160 ------------------------ 1 file changed, 160 deletions(-) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index b6d9112bc..e43d3198e 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -22,13 +22,8 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -<<<<<<< HEAD -#include "transform_obj_norm_by_dim.c" -#include "transform_vars_round_step.c" -======= #include "transform_vars_round_step.c" #include "transform_obj_norm_by_dim.c" ->>>>>>> wassim/devel-LS /** @@ -40,19 +35,11 @@ typedef struct { double **rot1, **rot2; } f_step_ellipsoid_data_t; -<<<<<<< HEAD - -======= ->>>>>>> wassim/devel-LS /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ static double f_step_ellipsoid_raw(const double *x, const size_t number_of_variables, f_step_ellipsoid_data_t *data) { -<<<<<<< HEAD - -======= ->>>>>>> wassim/devel-LS static const double condition = 100; static const double alpha = 10.0; size_t i, j; @@ -82,11 +69,7 @@ static double f_step_ellipsoid_raw(const double *x, const size_t number_of_varia x1 = data->x[0]; for (i = 0; i < number_of_variables; ++i) { -<<<<<<< HEAD - if (fabs(data->x[i]) > 0.5) -======= if (fabs(data->x[i]) > 0.5) /* TODO: Documentation: no fabs() in documentation */ ->>>>>>> wassim/devel-LS data->x[i] = coco_double_round(data->x[i]); else data->x[i] = coco_double_round(alpha * data->x[i]) / alpha; @@ -108,11 +91,7 @@ static double f_step_ellipsoid_raw(const double *x, const size_t number_of_varia ; } result = 0.1 * coco_double_max(fabs(x1) * 1.0e-4, result) + penalty + data->fopt; -<<<<<<< HEAD - -======= ->>>>>>> wassim/devel-LS return result; } @@ -156,13 +135,8 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct f_step_ellipsoid_data_t *data; size_t i; coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", -<<<<<<< HEAD - f_step_ellipsoid_evaluate, f_step_ellipsoid_free, dimension, -5.0, 5.0, 0); - -======= f_step_ellipsoid_evaluate, f_step_ellipsoid_free, dimension, -5.0, 5.0, 0); ->>>>>>> wassim/devel-LS data = (f_step_ellipsoid_data_t *) coco_allocate_memory(sizeof(*data)); /* Allocate temporary storage and space for the rotation matrices */ data->x = coco_allocate_vector(dimension); @@ -344,137 +318,3 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons return problem; } - - - - - - -/** - * @brief Implements the step ellipsoid function without connections to any COCO structures. - */ -static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { - - static const double condition = 100; - size_t i; - double result; - result = 0.0; - - for (i = 0; i < number_of_variables; ++i) { - double exponent; - exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); - result += pow(condition, exponent) * x[i] * x[i]; - ; - } - result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ - return result; -} - - -/** - * @brief Uses the raw function to evaluate the ls COCO problem. - */ -static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { - assert(problem->number_of_objectives == 1); - y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); - assert(y[0] + 1e-13 >= problem->best_value[0]); -} - -/** - * @brief Allocates the basic step ellipsoid problem. - * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. - */ -static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { - - coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); - problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ - problem->best_parameter[number_of_variables] = -1.0; - - coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); - /* Compute best solution */ - f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); - - return problem; -} - -/** - * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. - */ -static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - double alpha = 10.; /*parameter of rounding*/ - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B1, **B2; - const double *const *B1_copy; - const double *const *B2_copy; - size_t *P11, *P12, *P21, *P22; - size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; - double penalty_factor = 1.; - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); - swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); - swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); - nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1; - B2_copy = (const double *const *)B2; - coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); - - P11 = coco_allocate_vector_size_t(dimension); - P12 = coco_allocate_vector_size_t(dimension); - P21 = coco_allocate_vector_size_t(dimension); - P22 = coco_allocate_vector_size_t(dimension); - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); - - problem = f_step_ellipsoid_allocate(dimension); - - problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ - - problem = transform_vars_conditioning(problem, 10.0); - problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); - problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_penalize(problem, penalty_factor); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - coco_free_block_matrix(B1, dimension); - coco_free_block_matrix(B2, dimension); - coco_free_memory(P11); - coco_free_memory(P21); - coco_free_memory(P12); - coco_free_memory(P22); - coco_free_memory(block_sizes1); - coco_free_memory(block_sizes2); - coco_free_memory(xopt); - -return problem; -} - From e702b276883a845b4ea3e350455204b89befdb4d Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 6 Jun 2016 09:09:42 +0700 Subject: [PATCH 262/446] Update f_step_ellipsoid from Wassim's folk --- code-experiments/src/f_step_ellipsoid.c | 160 ------------------------ 1 file changed, 160 deletions(-) diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index b6d9112bc..e43d3198e 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -22,13 +22,8 @@ #include "transform_vars_permutation.c" #include "transform_vars_blockrotation.c" -<<<<<<< HEAD -#include "transform_obj_norm_by_dim.c" -#include "transform_vars_round_step.c" -======= #include "transform_vars_round_step.c" #include "transform_obj_norm_by_dim.c" ->>>>>>> wassim/devel-LS /** @@ -40,19 +35,11 @@ typedef struct { double **rot1, **rot2; } f_step_ellipsoid_data_t; -<<<<<<< HEAD - -======= ->>>>>>> wassim/devel-LS /** * @brief Implements the step ellipsoid function without connections to any COCO structures. */ static double f_step_ellipsoid_raw(const double *x, const size_t number_of_variables, f_step_ellipsoid_data_t *data) { -<<<<<<< HEAD - -======= ->>>>>>> wassim/devel-LS static const double condition = 100; static const double alpha = 10.0; size_t i, j; @@ -82,11 +69,7 @@ static double f_step_ellipsoid_raw(const double *x, const size_t number_of_varia x1 = data->x[0]; for (i = 0; i < number_of_variables; ++i) { -<<<<<<< HEAD - if (fabs(data->x[i]) > 0.5) -======= if (fabs(data->x[i]) > 0.5) /* TODO: Documentation: no fabs() in documentation */ ->>>>>>> wassim/devel-LS data->x[i] = coco_double_round(data->x[i]); else data->x[i] = coco_double_round(alpha * data->x[i]) / alpha; @@ -108,11 +91,7 @@ static double f_step_ellipsoid_raw(const double *x, const size_t number_of_varia ; } result = 0.1 * coco_double_max(fabs(x1) * 1.0e-4, result) + penalty + data->fopt; -<<<<<<< HEAD - -======= ->>>>>>> wassim/devel-LS return result; } @@ -156,13 +135,8 @@ static coco_problem_t *f_step_ellipsoid_bbob_problem_allocate(const size_t funct f_step_ellipsoid_data_t *data; size_t i; coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", -<<<<<<< HEAD - f_step_ellipsoid_evaluate, f_step_ellipsoid_free, dimension, -5.0, 5.0, 0); - -======= f_step_ellipsoid_evaluate, f_step_ellipsoid_free, dimension, -5.0, 5.0, 0); ->>>>>>> wassim/devel-LS data = (f_step_ellipsoid_data_t *) coco_allocate_memory(sizeof(*data)); /* Allocate temporary storage and space for the rotation matrices */ data->x = coco_allocate_vector(dimension); @@ -344,137 +318,3 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons return problem; } - - - - - - -/** - * @brief Implements the step ellipsoid function without connections to any COCO structures. - */ -static double f_step_ellipsoid_core(const double *x, const size_t number_of_variables) { - - static const double condition = 100; - size_t i; - double result; - result = 0.0; - - for (i = 0; i < number_of_variables; ++i) { - double exponent; - exponent = (double) (long) i / ((double) (long) number_of_variables - 1.0); - result += pow(condition, exponent) * x[i] * x[i]; - ; - } - result = 0.1 * coco_double_max(x[number_of_variables] * 1.0e-4, result); /*x[number_of_variables] is \hat{z}_1 thanks to transform_vars_round_step.c */ - return result; -} - - -/** - * @brief Uses the raw function to evaluate the ls COCO problem. - */ -static void f_step_ellipsoid_permblock_evaluate(coco_problem_t *problem, const double *x, double *y) { - assert(problem->number_of_objectives == 1); - y[0] = f_step_ellipsoid_core(x, problem->number_of_variables); - assert(y[0] + 1e-13 >= problem->best_value[0]); -} - -/** - * @brief Allocates the basic step ellipsoid problem. - * an additional coordinate is added that will contain the value of \hat{z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. - */ -static coco_problem_t *f_step_ellipsoid_allocate(const size_t number_of_variables) { - - coco_problem_t *problem = coco_problem_allocate_from_scalars("step ellipsoid function", - f_step_ellipsoid_permblock_evaluate, NULL, number_of_variables + 1, -5.0, 5.0, 0.0); - problem->number_of_variables = number_of_variables; /* force it since otherwise it would be set to dim+1 and used so everywhere*/ - problem->best_parameter[number_of_variables] = -1.0; - - coco_problem_set_id(problem, "%s_d%02lu", "step_ellipsoid", number_of_variables); - /* Compute best solution */ - f_step_ellipsoid_permblock_evaluate(problem, problem->best_parameter, problem->best_value); - - return problem; -} - -/** - * @brief Creates the BBOB permuted block-rotated step ellipsoid problem. - */ -static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - double alpha = 10.; /*parameter of rounding*/ - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B1, **B2; - const double *const *B1_copy; - const double *const *B2_copy; - size_t *P11, *P12, *P21, *P22; - size_t *block_sizes1, *block_sizes2, nb_blocks1, nb_blocks2, swap_range1, swap_range2, nb_swaps1, nb_swaps2; - double penalty_factor = 1.; - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); - swap_range1 = coco_get_swap_range(dimension, "bbob-largescale"); - swap_range2 = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps1 = coco_get_nb_swaps(dimension, "bbob-largescale"); - nb_swaps2 = coco_get_nb_swaps(dimension, "bbob-largescale"); - - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1; - B2_copy = (const double *const *)B2; - coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); - - P11 = coco_allocate_vector_size_t(dimension); - P12 = coco_allocate_vector_size_t(dimension); - P21 = coco_allocate_vector_size_t(dimension); - P22 = coco_allocate_vector_size_t(dimension); - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 2000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 3000000, dimension, nb_swaps1, swap_range1); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps2, swap_range2); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 5000000, dimension, nb_swaps2, swap_range2); - - problem = f_step_ellipsoid_allocate(dimension); - - problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_round_step(problem, alpha);/* also puts \hat{z}_1 in x[dimension]*/ - - problem = transform_vars_conditioning(problem, 10.0); - problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); - problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_penalize(problem, penalty_factor); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); - - coco_free_block_matrix(B1, dimension); - coco_free_block_matrix(B2, dimension); - coco_free_memory(P11); - coco_free_memory(P21); - coco_free_memory(P12); - coco_free_memory(P22); - coco_free_memory(block_sizes1); - coco_free_memory(block_sizes2); - coco_free_memory(xopt); - -return problem; -} - From c6a6db86cc50e63e82d385be54360b0c9bffedec Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 6 Jun 2016 23:37:14 +0700 Subject: [PATCH 263/446] Display caption for Empirical Cumulative Distribution Functions (ECDFs) per function group for dimension 80 & 320 --- .../bbob_pproc/compall/ppfigs.py | 22 ++++++++----------- .../bbob_pproc/rungenericmany.py | 6 +++-- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index 28d932f9b..5768a7ca5 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -138,17 +138,16 @@ def prepare_ecdfs_figure_caption(): else: figure_caption = ecdfs_figure_caption_standard - # Wassim: relaced what's below to have more generic code -# if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: + if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: # NOTE: no runlength-based targets supported yet -# figure_caption = ecdfs_figure_caption_standard -# elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: -# if genericsettings.runlength_based_targets: -# figure_caption = ecdfs_figure_caption_rlbased + bestyeartext -# else: -# figure_caption = ecdfs_figure_caption_standard + bestyeartext -# else: -# warnings.warn("Current settings do not support ppfigdim caption.") + figure_caption = ecdfs_figure_caption_standard + elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: + if genericsettings.runlength_based_targets: + figure_caption = ecdfs_figure_caption_rlbased + bestyeartext + else: + figure_caption = ecdfs_figure_caption_standard + bestyeartext + else: + warnings.warn("Current settings do not support ppfigdim caption.") return figure_caption @@ -612,9 +611,6 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd ) toolsdivers.replace_in_file(htmlFile, '##bbobppfigslegend##', scaling_figure_caption(True) + 'Legend: ' + alg_definitions_html) - # Wassim: generalized what's below - for i in xrange(len(testbedsettings.current_testbed.rldDimsOfInterest)): - toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend%d##' % testbedsettings.current_testbed.rldDimsOfInterest[i], ecdfs_figure_caption(True, testbedsettings.current_testbed.rldDimsOfInterest[i])) if verbose: print 'Wrote commands and legend to %s' % filename diff --git a/code-postprocessing/bbob_pproc/rungenericmany.py b/code-postprocessing/bbob_pproc/rungenericmany.py index e707b208e..9b736e191 100644 --- a/code-postprocessing/bbob_pproc/rungenericmany.py +++ b/code-postprocessing/bbob_pproc/rungenericmany.py @@ -373,8 +373,10 @@ def main(argv=None): ) htmlFile = os.path.join(outputdir, genericsettings.many_algorithm_file_name + '.html') - replace_in_file(htmlFile, '##bbobECDFslegend5##', ppfigs.ecdfs_figure_caption(True, 5)) - replace_in_file(htmlFile, '##bbobECDFslegend20##', ppfigs.ecdfs_figure_caption(True, 20)) + + # Manh: generalization + for i in xrange(len(testbedsettings.current_testbed.rldDimsOfInterest)): + replace_in_file(htmlFile, '##bbobECDFslegend%d##' % testbedsettings.current_testbed.rldDimsOfInterest[i], ppfigs.ecdfs_figure_caption(True, testbedsettings.current_testbed.rldDimsOfInterest[i])) print_done() From e70df44855cbc6d71041b70e1585d9245584337a Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 6 Jun 2016 23:37:14 +0700 Subject: [PATCH 264/446] Display caption for Empirical Cumulative Distribution Functions (ECDFs) per function group for dimension 80 & 320 --- .../bbob_pproc/compall/ppfigs.py | 22 ++++++++----------- .../bbob_pproc/rungenericmany.py | 6 +++-- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index 28d932f9b..5768a7ca5 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -138,17 +138,16 @@ def prepare_ecdfs_figure_caption(): else: figure_caption = ecdfs_figure_caption_standard - # Wassim: relaced what's below to have more generic code -# if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: + if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: # NOTE: no runlength-based targets supported yet -# figure_caption = ecdfs_figure_caption_standard -# elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: -# if genericsettings.runlength_based_targets: -# figure_caption = ecdfs_figure_caption_rlbased + bestyeartext -# else: -# figure_caption = ecdfs_figure_caption_standard + bestyeartext -# else: -# warnings.warn("Current settings do not support ppfigdim caption.") + figure_caption = ecdfs_figure_caption_standard + elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: + if genericsettings.runlength_based_targets: + figure_caption = ecdfs_figure_caption_rlbased + bestyeartext + else: + figure_caption = ecdfs_figure_caption_standard + bestyeartext + else: + warnings.warn("Current settings do not support ppfigdim caption.") return figure_caption @@ -612,9 +611,6 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd ) toolsdivers.replace_in_file(htmlFile, '##bbobppfigslegend##', scaling_figure_caption(True) + 'Legend: ' + alg_definitions_html) - # Wassim: generalized what's below - for i in xrange(len(testbedsettings.current_testbed.rldDimsOfInterest)): - toolsdivers.replace_in_file(htmlFile, '##bbobECDFslegend%d##' % testbedsettings.current_testbed.rldDimsOfInterest[i], ecdfs_figure_caption(True, testbedsettings.current_testbed.rldDimsOfInterest[i])) if verbose: print 'Wrote commands and legend to %s' % filename diff --git a/code-postprocessing/bbob_pproc/rungenericmany.py b/code-postprocessing/bbob_pproc/rungenericmany.py index e707b208e..9b736e191 100644 --- a/code-postprocessing/bbob_pproc/rungenericmany.py +++ b/code-postprocessing/bbob_pproc/rungenericmany.py @@ -373,8 +373,10 @@ def main(argv=None): ) htmlFile = os.path.join(outputdir, genericsettings.many_algorithm_file_name + '.html') - replace_in_file(htmlFile, '##bbobECDFslegend5##', ppfigs.ecdfs_figure_caption(True, 5)) - replace_in_file(htmlFile, '##bbobECDFslegend20##', ppfigs.ecdfs_figure_caption(True, 20)) + + # Manh: generalization + for i in xrange(len(testbedsettings.current_testbed.rldDimsOfInterest)): + replace_in_file(htmlFile, '##bbobECDFslegend%d##' % testbedsettings.current_testbed.rldDimsOfInterest[i], ppfigs.ecdfs_figure_caption(True, testbedsettings.current_testbed.rldDimsOfInterest[i])) print_done() From 91fb31e849bea3f23f1f69e9a8420e0b038a88a8 Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 7 Jun 2016 15:32:50 +0700 Subject: [PATCH 265/446] some update from branh coco/development and display tables for run 2, many --- README.md | 17 +++++++++++++++++ .../bbob_pproc/compall/pptables.py | 2 +- code-postprocessing/bbob_pproc/ppfig.py | 14 ++++++++++---- code-postprocessing/bbob_pproc/pplogloss.py | 1 + code-postprocessing/bbob_pproc/rungeneric2.py | 9 +++++++++ 5 files changed, 38 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 452b8e5d0..ce3645bf4 100644 --- a/README.md +++ b/README.md @@ -464,6 +464,23 @@ Details Jenkins on one ubuntu 12.04 machine, one OSX 10.9 machine, and one 32-bit Windows 7 machine with cygwin. +Citation +-------- +You may cite this work in a scientific context as + +N. Hansen, A. Auger, O. Mersmann, T. Tušar, D. Brockhoff. [COCO: A Platform for Comparing Continuous Optimizers in a Black-Box Setting](http://numbbo.github.io/coco-doc/), _ArXiv e-prints_, [arXiv:1603.08785](http://arxiv.org/abs/1603.08785), 2016. + +``` +@ARTICLE{hansen2016cocoplat, + author = {Hansen, N. and Auger, A. and Mersmann, O. and + Tu{\v s}ar, T. and Brockhoff, D.}, + title = {{COCO}: A Platform for Comparing Continuous Optimizers + in a Black-Box Setting}, + journal = {ArXiv e-prints}, + volume = {arXiv:1603.08785}, + year = 2016 +} +``` Links and Documentation ----------------------- diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 8b9185129..d8c7a6010 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -651,7 +651,7 @@ def main(dictAlg, sortedAlgs, isBiobjective, outputdir='.', verbose=True, functi res = '\n\n%s
\n

\n' % res if df[0] in testbedsettings.current_testbed.tabDimsOfInterest: # Manh - filename = os.path.join(outputdir, genericsettings.many_algorithm_file_name + '.html') + filename = os.path.join(outputdir, genericsettings.pptables_file_name + '.html') lines = [] with open(filename) as infile: for line in infile: diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index f8ec7d270..906d8ddaa 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -243,7 +243,7 @@ def save_single_functions_html(filename, functionGroups = OrderedDict([]) function_group = "nzall" if genericsettings.isNoisy else "noiselessall" - if not htmlPage == HtmlPage.PPRLDMANY_BY_GROUP: + if not htmlPage in (HtmlPage.PPRLDMANY_BY_GROUP, HtmlPage.PPLOGLOSS): tempFunctionGroups = OrderedDict([(function_group, 'All functions')]) tempFunctionGroups.update(functionGroups) functionGroups = tempFunctionGroups @@ -401,15 +401,21 @@ def save_single_functions_html(filename, if bestAlgExists: # biObj is not the only one that has no bestAlg yet currentHeader = 'aRT loss ratios' f.write("

%s

\n" % currentHeader) + + dimensionList = '-D, '.join(str(x) for x in dimensions) + '-D' + index = dimensionList.rfind(",") + dimensionList = dimensionList[:index] + ' and' + dimensionList[index + 1:] + + f.write('

%s in %s

' % ('All functions', dimensionList)) + f.write('
') for dimension in dimensions: f.write(addImage('pplogloss_%02dD_%s.%s' % (dimension, function_group, extension), True)) + f.write('
') + f.write("\n\n") scenario = testbedsettings.current_testbed.scenario f.write(captionStringFormat % htmldesc.getValue('##bbobloglosstablecaption' + scenario + '##')) - dimensionList = '-D, '.join(str(x) for x in dimensions) + '-D' - index = dimensionList.rfind(",") - dimensionList = dimensionList[:index] + ' and' + dimensionList[index + 1:] for typeKey, typeValue in functionGroups.iteritems(): f.write('

%s in %s

' % (typeValue, dimensionList)) f.write('
') diff --git a/code-postprocessing/bbob_pproc/pplogloss.py b/code-postprocessing/bbob_pproc/pplogloss.py index 84c616bad..01bd78d91 100644 --- a/code-postprocessing/bbob_pproc/pplogloss.py +++ b/code-postprocessing/bbob_pproc/pplogloss.py @@ -849,6 +849,7 @@ def generateFigure(dsList, CrE=0., isStoringXRange=True, outputdir='.', text = consecutiveNumbers(sorted(funcs), 'f') else: text = 'f%d' % (funcs.pop()) + text = text + ', %d-D' % d plt.text(0.5, 0.93, text, horizontalalignment="center", transform=plt.gca().transAxes) beautify() diff --git a/code-postprocessing/bbob_pproc/rungeneric2.py b/code-postprocessing/bbob_pproc/rungeneric2.py index a222727ea..33ff0b0fc 100644 --- a/code-postprocessing/bbob_pproc/rungeneric2.py +++ b/code-postprocessing/bbob_pproc/rungeneric2.py @@ -403,6 +403,15 @@ def main(argv=None): parentFileName=genericsettings.two_algorithm_file_name ) + ppfig.save_single_functions_html( + os.path.join(outputdir, genericsettings.pptables_file_name), + '', # algorithms names are clearly visible in the figure + htmlPage=ppfig.HtmlPage.PPTABLES, + isBiobjective=dsList[0].isBiobjective(), + functionGroups=dsList0.getFuncGroups(), + parentFileName=genericsettings.many_algorithm_file_name + ) + if genericsettings.isFig: print("log aRT1/aRT0 vs target function values...") plt.rc("axes", **inset.rcaxeslarger) From 6c74c8d2d0035d50778aaca99d7163a1e0704c4c Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 7 Jun 2016 15:32:50 +0700 Subject: [PATCH 266/446] some update from branh coco/development and display tables for run 2, many --- README.md | 17 +++++++++++++++++ .../bbob_pproc/compall/pptables.py | 2 +- code-postprocessing/bbob_pproc/ppfig.py | 14 ++++++++++---- code-postprocessing/bbob_pproc/pplogloss.py | 1 + code-postprocessing/bbob_pproc/rungeneric2.py | 9 +++++++++ 5 files changed, 38 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 452b8e5d0..ce3645bf4 100644 --- a/README.md +++ b/README.md @@ -464,6 +464,23 @@ Details Jenkins on one ubuntu 12.04 machine, one OSX 10.9 machine, and one 32-bit Windows 7 machine with cygwin. +Citation +-------- +You may cite this work in a scientific context as + +N. Hansen, A. Auger, O. Mersmann, T. Tušar, D. Brockhoff. [COCO: A Platform for Comparing Continuous Optimizers in a Black-Box Setting](http://numbbo.github.io/coco-doc/), _ArXiv e-prints_, [arXiv:1603.08785](http://arxiv.org/abs/1603.08785), 2016. + +``` +@ARTICLE{hansen2016cocoplat, + author = {Hansen, N. and Auger, A. and Mersmann, O. and + Tu{\v s}ar, T. and Brockhoff, D.}, + title = {{COCO}: A Platform for Comparing Continuous Optimizers + in a Black-Box Setting}, + journal = {ArXiv e-prints}, + volume = {arXiv:1603.08785}, + year = 2016 +} +``` Links and Documentation ----------------------- diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 8b9185129..d8c7a6010 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -651,7 +651,7 @@ def main(dictAlg, sortedAlgs, isBiobjective, outputdir='.', verbose=True, functi res = '\n\n%s
\n

\n' % res if df[0] in testbedsettings.current_testbed.tabDimsOfInterest: # Manh - filename = os.path.join(outputdir, genericsettings.many_algorithm_file_name + '.html') + filename = os.path.join(outputdir, genericsettings.pptables_file_name + '.html') lines = [] with open(filename) as infile: for line in infile: diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index f8ec7d270..906d8ddaa 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -243,7 +243,7 @@ def save_single_functions_html(filename, functionGroups = OrderedDict([]) function_group = "nzall" if genericsettings.isNoisy else "noiselessall" - if not htmlPage == HtmlPage.PPRLDMANY_BY_GROUP: + if not htmlPage in (HtmlPage.PPRLDMANY_BY_GROUP, HtmlPage.PPLOGLOSS): tempFunctionGroups = OrderedDict([(function_group, 'All functions')]) tempFunctionGroups.update(functionGroups) functionGroups = tempFunctionGroups @@ -401,15 +401,21 @@ def save_single_functions_html(filename, if bestAlgExists: # biObj is not the only one that has no bestAlg yet currentHeader = 'aRT loss ratios' f.write("

%s

\n" % currentHeader) + + dimensionList = '-D, '.join(str(x) for x in dimensions) + '-D' + index = dimensionList.rfind(",") + dimensionList = dimensionList[:index] + ' and' + dimensionList[index + 1:] + + f.write('

%s in %s

' % ('All functions', dimensionList)) + f.write('
') for dimension in dimensions: f.write(addImage('pplogloss_%02dD_%s.%s' % (dimension, function_group, extension), True)) + f.write('
') + f.write("\n\n") scenario = testbedsettings.current_testbed.scenario f.write(captionStringFormat % htmldesc.getValue('##bbobloglosstablecaption' + scenario + '##')) - dimensionList = '-D, '.join(str(x) for x in dimensions) + '-D' - index = dimensionList.rfind(",") - dimensionList = dimensionList[:index] + ' and' + dimensionList[index + 1:] for typeKey, typeValue in functionGroups.iteritems(): f.write('

%s in %s

' % (typeValue, dimensionList)) f.write('
') diff --git a/code-postprocessing/bbob_pproc/pplogloss.py b/code-postprocessing/bbob_pproc/pplogloss.py index 84c616bad..01bd78d91 100644 --- a/code-postprocessing/bbob_pproc/pplogloss.py +++ b/code-postprocessing/bbob_pproc/pplogloss.py @@ -849,6 +849,7 @@ def generateFigure(dsList, CrE=0., isStoringXRange=True, outputdir='.', text = consecutiveNumbers(sorted(funcs), 'f') else: text = 'f%d' % (funcs.pop()) + text = text + ', %d-D' % d plt.text(0.5, 0.93, text, horizontalalignment="center", transform=plt.gca().transAxes) beautify() diff --git a/code-postprocessing/bbob_pproc/rungeneric2.py b/code-postprocessing/bbob_pproc/rungeneric2.py index a222727ea..33ff0b0fc 100644 --- a/code-postprocessing/bbob_pproc/rungeneric2.py +++ b/code-postprocessing/bbob_pproc/rungeneric2.py @@ -403,6 +403,15 @@ def main(argv=None): parentFileName=genericsettings.two_algorithm_file_name ) + ppfig.save_single_functions_html( + os.path.join(outputdir, genericsettings.pptables_file_name), + '', # algorithms names are clearly visible in the figure + htmlPage=ppfig.HtmlPage.PPTABLES, + isBiobjective=dsList[0].isBiobjective(), + functionGroups=dsList0.getFuncGroups(), + parentFileName=genericsettings.many_algorithm_file_name + ) + if genericsettings.isFig: print("log aRT1/aRT0 vs target function values...") plt.rc("axes", **inset.rcaxeslarger) From 5fc6120cee6e25811f68566ea118d4dbb051041b Mon Sep 17 00:00:00 2001 From: NDManh Date: Wed, 8 Jun 2016 00:00:10 +0700 Subject: [PATCH 267/446] Display the legend 'best 2009(or 2016)' in figures of html file --- .../bbob_pproc/compall/ppfigs.py | 39 ++++++++----------- .../bbob_pproc/compall/pprldmany.py | 10 +++-- .../bbob_pproc/testbedsettings.py | 2 +- 3 files changed, 24 insertions(+), 27 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index 5768a7ca5..bf1f1d8a5 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -138,16 +138,16 @@ def prepare_ecdfs_figure_caption(): else: figure_caption = ecdfs_figure_caption_standard - if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: - # NOTE: no runlength-based targets supported yet - figure_caption = ecdfs_figure_caption_standard - elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: - if genericsettings.runlength_based_targets: - figure_caption = ecdfs_figure_caption_rlbased + bestyeartext - else: - figure_caption = ecdfs_figure_caption_standard + bestyeartext - else: - warnings.warn("Current settings do not support ppfigdim caption.") +# if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: +# # NOTE: no runlength-based targets supported yet +# figure_caption = ecdfs_figure_caption_standard +# elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: +# if genericsettings.runlength_based_targets: +# figure_caption = ecdfs_figure_caption_rlbased + bestyeartext +# else: +# figure_caption = ecdfs_figure_caption_standard + bestyeartext +# else: +# warnings.warn("Current settings do not support ppfigdim caption.") return figure_caption @@ -265,18 +265,13 @@ def plotLegend(handles, maxval=None): for k in sorted(ys[j].keys()): #enforce best 2009 comes first in case of equality tmp = [] - if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale - for h in ys[j][k]: - if plt.getp(h, 'label') == 'best 2009': - tmp.insert(0, h) - else: - tmp.append(h) - else: - for h in ys[j][k]: - if plt.getp(h, 'label') == 'best 2016': - tmp.insert(0, h) - else: - tmp.append(h) + # Manh : a generalization + best_year = 'best %d' %testbedsettings.current_testbed.best_algorithm_year + for h in ys[j][k]: + if plt.getp(h, 'label') == best_year: + tmp.insert(0, h) + else: + tmp.append(h) #tmp.reverse() ys[j][k] = tmp diff --git a/code-postprocessing/bbob_pproc/compall/pprldmany.py b/code-postprocessing/bbob_pproc/compall/pprldmany.py index 81ec5bb08..45c90b7fe 100644 --- a/code-postprocessing/bbob_pproc/compall/pprldmany.py +++ b/code-postprocessing/bbob_pproc/compall/pprldmany.py @@ -343,12 +343,13 @@ def get_label_length(labelList): fontsize = genericsettings.minmax_algorithm_fontsize[0] + np.min((1, np.exp(9-lh))) * ( genericsettings.minmax_algorithm_fontsize[-1] - genericsettings.minmax_algorithm_fontsize[0]) i = 0 # loop over the elements of ys + best_year = 'best %d' % testbedsettings.current_testbed.best_algorithm_year # Manh : set 'best 2009/2016' for j in sorted(ys.keys()): for k in reversed(sorted(ys[j].keys())): #enforce best ever comes last in case of equality tmp = [] for h in ys[j][k]: - if plt.getp(h, 'label') == 'best 2009': + if plt.getp(h, 'label') == best_year: tmp.insert(0, h) else: tmp.append(h) @@ -694,11 +695,12 @@ def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', # Display data lines = [] + best_year = 'best %d' %testbedsettings.current_testbed.best_algorithm_year # Manh : set 'best 2009/2016' if displaybest2009: args = {'ls': '-', 'linewidth': 6, 'marker': 'D', 'markersize': 11., 'markeredgewidth': 1.5, 'markerfacecolor': refcolor, 'markeredgecolor': refcolor, 'color': refcolor, - 'label': 'best 2009', 'zorder': -1} + 'label': best_year, 'zorder': -1} lines.append(plotdata(np.array(xbest2009), x_limit, maxevalsbest2009, CrE = 0., **args)) @@ -752,8 +754,8 @@ def algname_to_label(algname, dirname=None): algtocommand[algname_to_label(alg)] = tmp if displaybest2009: tmp = r'\algzeroperfprof' - f.write(r'\providecommand{%s}{best 2009}' % (tmp)) - algtocommand['best 2009'] = tmp + f.write(r'\providecommand{%s}{best %d}' % (tmp, testbedsettings.current_testbed.best_algorithm_year )) # Manh + algtocommand[best_year] = tmp # Manh commandnames = [] for label in labels: diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 3c3bf6e0f..8c365c6da 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -127,7 +127,7 @@ def __init__(self, targetValues): self.rldDimsOfInterest = [5, 20] self.htmlDimsOfInterest = [5, 20] self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' - self.best_algorithm_year = 2016 + self.best_algorithm_year = 2009 class GECCOBBOBNoisyTestbed(GECCOBBOBTestbed): From 99776f644522785b3c5cb5937c6befb1b0fab7f1 Mon Sep 17 00:00:00 2001 From: NDManh Date: Wed, 8 Jun 2016 00:00:10 +0700 Subject: [PATCH 268/446] Display the legend 'best 2009(or 2016)' in figures of html file --- .../bbob_pproc/compall/ppfigs.py | 39 ++++++++----------- .../bbob_pproc/compall/pprldmany.py | 10 +++-- .../bbob_pproc/testbedsettings.py | 2 +- 3 files changed, 24 insertions(+), 27 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index 5768a7ca5..bf1f1d8a5 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -138,16 +138,16 @@ def prepare_ecdfs_figure_caption(): else: figure_caption = ecdfs_figure_caption_standard - if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: - # NOTE: no runlength-based targets supported yet - figure_caption = ecdfs_figure_caption_standard - elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: - if genericsettings.runlength_based_targets: - figure_caption = ecdfs_figure_caption_rlbased + bestyeartext - else: - figure_caption = ecdfs_figure_caption_standard + bestyeartext - else: - warnings.warn("Current settings do not support ppfigdim caption.") +# if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: +# # NOTE: no runlength-based targets supported yet +# figure_caption = ecdfs_figure_caption_standard +# elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: +# if genericsettings.runlength_based_targets: +# figure_caption = ecdfs_figure_caption_rlbased + bestyeartext +# else: +# figure_caption = ecdfs_figure_caption_standard + bestyeartext +# else: +# warnings.warn("Current settings do not support ppfigdim caption.") return figure_caption @@ -265,18 +265,13 @@ def plotLegend(handles, maxval=None): for k in sorted(ys[j].keys()): #enforce best 2009 comes first in case of equality tmp = [] - if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale - for h in ys[j][k]: - if plt.getp(h, 'label') == 'best 2009': - tmp.insert(0, h) - else: - tmp.append(h) - else: - for h in ys[j][k]: - if plt.getp(h, 'label') == 'best 2016': - tmp.insert(0, h) - else: - tmp.append(h) + # Manh : a generalization + best_year = 'best %d' %testbedsettings.current_testbed.best_algorithm_year + for h in ys[j][k]: + if plt.getp(h, 'label') == best_year: + tmp.insert(0, h) + else: + tmp.append(h) #tmp.reverse() ys[j][k] = tmp diff --git a/code-postprocessing/bbob_pproc/compall/pprldmany.py b/code-postprocessing/bbob_pproc/compall/pprldmany.py index 81ec5bb08..45c90b7fe 100644 --- a/code-postprocessing/bbob_pproc/compall/pprldmany.py +++ b/code-postprocessing/bbob_pproc/compall/pprldmany.py @@ -343,12 +343,13 @@ def get_label_length(labelList): fontsize = genericsettings.minmax_algorithm_fontsize[0] + np.min((1, np.exp(9-lh))) * ( genericsettings.minmax_algorithm_fontsize[-1] - genericsettings.minmax_algorithm_fontsize[0]) i = 0 # loop over the elements of ys + best_year = 'best %d' % testbedsettings.current_testbed.best_algorithm_year # Manh : set 'best 2009/2016' for j in sorted(ys.keys()): for k in reversed(sorted(ys[j].keys())): #enforce best ever comes last in case of equality tmp = [] for h in ys[j][k]: - if plt.getp(h, 'label') == 'best 2009': + if plt.getp(h, 'label') == best_year: tmp.insert(0, h) else: tmp.append(h) @@ -694,11 +695,12 @@ def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', # Display data lines = [] + best_year = 'best %d' %testbedsettings.current_testbed.best_algorithm_year # Manh : set 'best 2009/2016' if displaybest2009: args = {'ls': '-', 'linewidth': 6, 'marker': 'D', 'markersize': 11., 'markeredgewidth': 1.5, 'markerfacecolor': refcolor, 'markeredgecolor': refcolor, 'color': refcolor, - 'label': 'best 2009', 'zorder': -1} + 'label': best_year, 'zorder': -1} lines.append(plotdata(np.array(xbest2009), x_limit, maxevalsbest2009, CrE = 0., **args)) @@ -752,8 +754,8 @@ def algname_to_label(algname, dirname=None): algtocommand[algname_to_label(alg)] = tmp if displaybest2009: tmp = r'\algzeroperfprof' - f.write(r'\providecommand{%s}{best 2009}' % (tmp)) - algtocommand['best 2009'] = tmp + f.write(r'\providecommand{%s}{best %d}' % (tmp, testbedsettings.current_testbed.best_algorithm_year )) # Manh + algtocommand[best_year] = tmp # Manh commandnames = [] for label in labels: diff --git a/code-postprocessing/bbob_pproc/testbedsettings.py b/code-postprocessing/bbob_pproc/testbedsettings.py index 3c3bf6e0f..8c365c6da 100644 --- a/code-postprocessing/bbob_pproc/testbedsettings.py +++ b/code-postprocessing/bbob_pproc/testbedsettings.py @@ -127,7 +127,7 @@ def __init__(self, targetValues): self.rldDimsOfInterest = [5, 20] self.htmlDimsOfInterest = [5, 20] self.best_algorithm_filename = 'bestalgentries2009.pickle.gz' - self.best_algorithm_year = 2016 + self.best_algorithm_year = 2009 class GECCOBBOBNoisyTestbed(GECCOBBOBTestbed): From a8c23861cdcff7786d180a3df9bbde0a776f4139 Mon Sep 17 00:00:00 2001 From: NDManh Date: Thu, 9 Jun 2016 00:13:01 +0700 Subject: [PATCH 269/446] Update Post-processing for latex processing in large scale --- .../bbob_pproc/comp2/ppscatter.py | 12 +- .../bbob_pproc/comp2/pptable2.py | 11 +- .../bbob_pproc/compall/ppfigs.py | 14 +- .../bbob_pproc/compall/pptables.py | 10 +- .../bbob_pproc/latex_commands_for_html.html | 12 +- code-postprocessing/bbob_pproc/ppfig.py | 4 +- code-postprocessing/bbob_pproc/ppfigdim.py | 11 +- code-postprocessing/bbob_pproc/pplogloss.py | 11 +- code-postprocessing/bbob_pproc/pprldistr.py | 17 +- code-postprocessing/bbob_pproc/pptable.py | 6 +- .../latex-templates/templateBBOBLSarticle.tex | 453 ++++++++++++++ .../latex-templates/templateBBOBLScmp.tex | 481 +++++++++++++++ .../latex-templates/templateBBOBLSmany.tex | 558 ++++++++++++++++++ 13 files changed, 1548 insertions(+), 52 deletions(-) create mode 100644 code-postprocessing/latex-templates/templateBBOBLSarticle.tex create mode 100644 code-postprocessing/latex-templates/templateBBOBLScmp.tex create mode 100644 code-postprocessing/latex-templates/templateBBOBLSmany.tex diff --git a/code-postprocessing/bbob_pproc/comp2/ppscatter.py b/code-postprocessing/bbob_pproc/comp2/ppscatter.py index 6492859dc..e8b9f5d31 100644 --- a/code-postprocessing/bbob_pproc/comp2/ppscatter.py +++ b/code-postprocessing/bbob_pproc/comp2/ppscatter.py @@ -71,12 +71,12 @@ def prepare_figure_caption(): caption_finish = r"""Markers on the upper or right edge indicate that the respective target value was never reached. Markers represent dimension: - 2:{\color{cyan}+}, - 3:{\color{green!45!black}$\triangledown$}, - 5:{\color{blue}$\star$}, - 10:$\circ$, - 20:{\color{red}$\Box$}, - 40:{\color{magenta}$\Diamond$}. """ + %d:{\color{cyan}+}, + %d:{\color{green!45!black}$\triangledown$}, + %d:{\color{blue}$\star$}, + %d:$\circ$, + %d:{\color{red}$\Box$}, + %d:{\color{magenta}$\Diamond$}. """ %tuple(testbedsettings.current_testbed.dimensions_to_display) # Manh if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: diff --git a/code-postprocessing/bbob_pproc/comp2/pptable2.py b/code-postprocessing/bbob_pproc/comp2/pptable2.py index 904765f23..39883ee61 100644 --- a/code-postprocessing/bbob_pproc/comp2/pptable2.py +++ b/code-postprocessing/bbob_pproc/comp2/pptable2.py @@ -25,11 +25,12 @@ def get_table_caption(): """ Sets table caption, based on the testbedsettings.current_testbed and genericsettings.runlength_based_targets. """ - + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + tabDimsOfInterest = testbedsettings.current_testbed.tabDimsOfInterest table_caption_one = r"""% Average running time (\aRT\ in number of function - evaluations) divided by the respective best \aRT\ measured during BBOB-2009 in - dimensions 5 (left) and 20 (right). + evaluations) divided by the respective best \aRT\ measured during""" + (""" BBOB-%d in + dimensions %d (left) and %d (right). """ %tuple([best_year] + tabDimsOfInterest)) + r"""% The \aRT\ and in braces, as dispersion measure, the half difference between 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and """ @@ -46,7 +47,7 @@ def get_table_caption(): """ table_caption_bi = r"""% Average runtime (\aRT) to reach given targets, measured - in number of function evaluations in dimensions 5 (left) and 20 (right). + in number of function evaluations in""" + ("""dimensions %d (left) and %d (right). """ %tuple(tabDimsOfInterest)) + r"""% For each function, the \aRT\ and, in braces as dispersion measure, the half difference between 10 and 90\%-tile of (bootstrapped) runtimes is shown for the different @@ -62,7 +63,7 @@ def get_table_caption(): with $p=0.05$ or $p=10^{-k}$ where $k\in\{2,3,4,\dots\}$ is the number following the $\star$ symbol, with Bonferroni correction of #1.""" + (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-2009.""" + algorithm of """ + ("""BBOB-%d.""" %best_year) if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) else "") ) diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index bf1f1d8a5..ea35da288 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -105,10 +105,10 @@ def scaling_figure_caption(for_html = False): def prepare_ecdfs_figure_caption(): - + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh bestyeartext = ( - r"The ``best %d'' line " % testbedsettings.current_testbed.best_algorithm_year + - r"corresponds to the best \aRT\ observed during BBOB %d " % testbedsettings.current_testbed.best_algorithm_year + + r"The ``best %d'' line " % best_year + + r"corresponds to the best \aRT\ observed during BBOB %d " % best_year + r"for each selected target." ) @@ -266,9 +266,9 @@ def plotLegend(handles, maxval=None): #enforce best 2009 comes first in case of equality tmp = [] # Manh : a generalization - best_year = 'best %d' %testbedsettings.current_testbed.best_algorithm_year + best_year_label = 'best %d' %testbedsettings.current_testbed.best_algorithm_year for h in ys[j][k]: - if plt.getp(h, 'label') == best_year: + if plt.getp(h, 'label') == best_year_label: tmp.insert(0, h) else: tmp.append(h) @@ -596,12 +596,12 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd toolsdivers.prepend_to_file(latex_commands_filename, [#'\\providecommand{\\bbobppfigsftarget}{\\ensuremath{10^{%s}}}' # % target.loglabel(0), # int(numpy.round(numpy.log10(target))), - '\\providecommand{\\bbobppfigslegendlargescalefixed}[1]{', + '\\providecommand{\\bbobppfigslegend}[1]{', scaling_figure_caption(), 'Legend: '] + alg_definitions + ['}'] ) toolsdivers.prepend_to_file(latex_commands_filename, - ['\\providecommand{\\bbobECDFslegendlargescalefixed}[1]{', + ['\\providecommand{\\bbobECDFslegend}[1]{', ecdfs_figure_caption(), '}'] ) diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index d8c7a6010..7d268f54a 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -26,11 +26,11 @@ def get_table_caption(): TODO: \hvref and \fopt should be defined via the current_testbed, preferably with a single latex command. """ - + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh table_caption_one = r"""% Average running time (\aRT\ in number of function - evaluations) divided by the respective best \aRT\ measured during""" + (""" BBOB-%s in - #1.""" %str(testbedsettings.current_testbed.best_algorithm_year)) + r""" + evaluations) divided by the respective best \aRT\ measured during""" + (""" BBOB-%d in + #1.""" %best_year) + r""" The \aRT\ and in braces, as dispersion measure, the half difference between 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and """ # Manh : the caption varies in best_algorithm_year @@ -61,8 +61,8 @@ def get_table_caption(): the rank-sum test) when compared to all other algorithms of the table, with $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger than 1, with Bonferroni correction of #2. """ + - (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-%s.""" %str(testbedsettings.current_testbed.best_algorithm_year) + (r""" A $\downarrow$ indicates the same tested against the best + algorithm of BBOB-%d. """ %best_year if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) else "") + r"""Best results are printed in bold. """) # Manh : the caption varies in best_algorithm_year diff --git a/code-postprocessing/bbob_pproc/latex_commands_for_html.html b/code-postprocessing/bbob_pproc/latex_commands_for_html.html index df7781c83..0ddaa8517 100644 --- a/code-postprocessing/bbob_pproc/latex_commands_for_html.html +++ b/code-postprocessing/bbob_pproc/latex_commands_for_html.html @@ -542,12 +542,12 @@ of algorithmB (x-axis) versus algorithmA (y-axis) for NBTARGETS target values ∆f ∈ [NBLOW, NBUP] in each dimension on functions f1 - f24. Markers on the upper or right edge indicate that the respective target value was never reached. Markers represent dimension: -2:+, -3:\triangledown, -5:, -10:°, -20:[¯], -40:\Diamond. +20:+, +40:\triangledown, +80:, +160:°, +320:[¯], +640:\Diamond.
##bbobloglosstablecaptionlargescalefixed## diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 906d8ddaa..ae3b22061 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -347,7 +347,7 @@ def save_single_functions_html(filename, elif htmlPage is HtmlPage.PPTABLE2: currentHeader = 'Table showing the aRT in number of function evaluations' if bestAlgExists: - currentHeader += ' divided by the best aRT measured during BBOB-%s' %str(testbedsettings.current_testbed.best_algorithm_year) + currentHeader += ' divided by the best aRT measured during BBOB-%d' %testbedsettings.current_testbed.best_algorithm_year # Manh : the caption varies in best_algorithm_year f.write("\n

%s

\n" % currentHeader) @@ -449,7 +449,7 @@ def write_ECDF(f, dimension, extension, captionStringFormat, functionGroups): def write_pptables(f, dimension, captionStringFormat, first_function_number, last_function_number, bestAlgExists): """Writes line for pptables images.""" - additionalText = ('divided by the best aRT measured during BBOB-%s' %str(testbedsettings.current_testbed.best_algorithm_year)) if bestAlgExists else '' + additionalText = ('divided by the best aRT measured during BBOB-%d' %testbedsettings.current_testbed.best_algorithm_year) if bestAlgExists else '' # Manh : the caption varies in best_algorithm_year currentHeader = 'Table showing the aRT in number of function evaluations %s ' \ diff --git a/code-postprocessing/bbob_pproc/ppfigdim.py b/code-postprocessing/bbob_pproc/ppfigdim.py index 54fb81e86..c56db8e91 100644 --- a/code-postprocessing/bbob_pproc/ppfigdim.py +++ b/code-postprocessing/bbob_pproc/ppfigdim.py @@ -113,12 +113,13 @@ def scaling_figure_caption(): # "$\\fopt+\\Df$ was not surpassed in a trial, from all " + # "(successful and unsuccessful) trials, and \\fopt\\ is the optimal " + # "function value. " + + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh scaling_figure_caption_fixed = caption_part_one + r"""% % Shown are $\Df = 10^{\{values_of_interest\}}$. Numbers above \aRT-symbols (if appearing) indicate the number of trials reaching the respective target. """ + ( # TODO: add here "(out of XYZ trials)" r"""The light thick line with - diamonds indicates the respective best result from BBOB-2009 for + diamonds indicates the respective best result from BBOB-%d """ %best_year + r"""for $\Df=10^{-8}$. """ if testbedsettings.current_testbed.name != 'bbob-biobj' else "") + """Horizontal lines mean linear scaling, slanted grid lines depict quadratic scaling. @@ -127,15 +128,15 @@ def scaling_figure_caption(): Shown is the \aRT\ for targets just not reached by % the largest $\Df$-values $\ge10^{-8}$ for which the \aRT\ of - the artificial GECCO-BBOB-2009 best algorithm + the artificial""" + (""" GECCO-BBOB-%d""" %best_year) + r""" best algorithm within the given budget $k\times\DIM$, where $k$ is shown in the legend. % was above $\{values_of_interest\}\times\DIM$ evaluations. Numbers above \aRT-symbols indicate the number of trials reaching the respective target. - The light thick line with diamonds indicates the respective best result from BBOB-2009 for + The light thick line with diamonds indicates the respective best result from """ + ("""BBOB-%d""" %best_year) + r""" for the most difficult target. Slanted grid lines indicate a scaling with ${\cal O}(\DIM)$ compared to ${\cal O}(1)$ - when using the respective 2009 best algorithm. - """ + when using the respective %d best algorithm. + """ %best_year # r"Shown is the \aRT\ for the smallest $\Df$-values $\ge10^{-8}$ for which the \aRT\ of the GECCO-BBOB-2009 best algorithm " + # r"was below $10^{\{values_of_interest\}}\times\DIM$ evaluations. " + diff --git a/code-postprocessing/bbob_pproc/pplogloss.py b/code-postprocessing/bbob_pproc/pplogloss.py index 01bd78d91..1a29147b9 100644 --- a/code-postprocessing/bbob_pproc/pplogloss.py +++ b/code-postprocessing/bbob_pproc/pplogloss.py @@ -25,6 +25,7 @@ from . import toolsstats, bestalg from .pptex import writeFEvals2 from .ppfig import saveFigure, consecutiveNumbers +from . import testbedsettings """ aRT loss ratio of an algorithm A for comparison to BBOB-best2009. This works @@ -123,6 +124,7 @@ def table_caption(): + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh caption = r"""% \aRT\ loss ratio versus the budget in number of $f$-evaluations divided by dimension. @@ -130,15 +132,14 @@ def table_caption(): as the best target $f$-value reached within the budget by the given algorithm. Shown is then the \aRT\ to reach \ftarget\ for the given algorithm - or the budget, if the GECCO-BBOB-2009 best algorithm + or the budget, """ + (r"""if the GECCO-BBOB-%d best algorithm reached a better target within the budget, - divided by the best \aRT\ - seen in GECCO-BBOB-2009 to reach \ftarget. + divided by the best \aRT\ seen in GECCO-BBOB-%d""" %(best_year, best_year)) + r""" to reach \ftarget. Line: geometric mean. Box-Whisker error bar: 25-75\%-ile with median (box), 10-90\%-ile (caps), and minimum and maximum \aRT\ loss ratio (points). The vertical line gives the maximal number of function evaluations in a single trial in this function subset. See also - Figure~\ref{fig:ERTlogloss} for results on each function subgroup. + Figure~\ref{fig:aRTlogloss} for results on each function subgroup. """ # Currently all scenarios have the same caption. @@ -147,7 +148,7 @@ def table_caption(): def figure_caption(): caption = r"""% - \aRT\ loss ratios (see Figure~\ref{tab:ERTloss} for details). + \aRT\ loss ratios (see Figure~\ref{tab:aRTloss} for details). Each cross ({\color{blue}$+$}) represents a single function, the line is the geometric mean. """ diff --git a/code-postprocessing/bbob_pproc/pprldistr.py b/code-postprocessing/bbob_pproc/pprldistr.py index 7440a8896..8c717b41c 100644 --- a/code-postprocessing/bbob_pproc/pprldistr.py +++ b/code-postprocessing/bbob_pproc/pprldistr.py @@ -135,6 +135,7 @@ def load_previous_RLBdata(filename=previous_RLBdata_filename): def caption_single(): + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh caption_part_one = r"""% Empirical cumulative distribution functions (ECDF), plotting the fraction of trials with an outcome not larger than the respective value on the $x$-axis. @@ -147,8 +148,8 @@ def caption_single(): caption_left_rlbased_targets = r"""% Left subplots: ECDF of number of function evaluations (FEvals) divided by search space dimension $D$, to fall below $\fopt+\Df$ where \Df\ is the - target just not reached by the GECCO-BBOB-2009 best algorithm within a budget of - % largest $\Df$-value $\ge10^{-8}$ for which the best \ART\ seen in the GECCO-BBOB-2009 was yet above + target just not reached by the""" + ("""GECCO-BBOB-%d""" %best_year) + r""" best algorithm within a budget of + % largest $\Df$-value $\ge10^{-8}$ for which the best \ART\ seen in the """ + ("""GECCO-BBOB-%d""" %best_year) + r""" was yet above $k\times\DIM$ evaluations, where $k$ is the first value in the legend. """ caption_wrap_up = r"""% Legends indicate for each target the number of functions that were solved in at @@ -161,7 +162,7 @@ def caption_single(): (from right to left cycling cyan-magenta-black\dots) and final $\Df$-value (red), where \Df\ and \textsf{Df} denote the difference to the optimal function value. """ + ( r"""Light brown lines in the background show ECDFs for the most difficult target of all - algorithms benchmarked during BBOB-2009.""" if testbedsettings.current_testbed.name != testbedsettings.testbed_name_bi + algorithms benchmarked during """ + ("""BBOB-%d.""" %best_year) if testbedsettings.current_testbed.name != testbedsettings.testbed_name_bi else r"""Shown are aggregations over functions where the single objectives are in the same BBOB function class, as indicated on the left side and the aggregation over all 55 functions in the last @@ -187,10 +188,10 @@ def caption_single(): return figure_caption.replace(r'TO_BE_REPLACED', '$' + 'D, '.join([str(i) for i in single_runlength_factors[:6]]) + 'D,\dots$') def caption_two(): + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh caption_two_part_one = r"""% Empirical cumulative distributions (ECDF) - of run lengths and speed-up ratios in 5-D (left) and 20-D (right). - Left sub-columns: ECDF of + of run lengths and speed-up ratios """ + ("""in %d-D (left) and %d-D (right). """ %tuple(testbedsettings.current_testbed.tabDimsOfInterest)) + r"""Left sub-columns: ECDF of the number of function evaluations divided by dimension $D$ (FEvals/D) """ @@ -206,9 +207,9 @@ def caption_two(): caption_two_fixed_targets_part3 = r""")% . """ + (r"""Light beige lines show the ECDF of FEvals for target value $\Df=10^{-8}$ of all algorithms benchmarked during - BBOB-2009. """ if testbedsettings.current_testbed.name != testbedsettings.testbed_name_bi + """ + ("""BBOB-%d. """ %best_year) if testbedsettings.current_testbed.name != testbedsettings.testbed_name_bi else "") + r"""Right sub-columns: - ECDF of FEval ratios of \algorithmA\ divided by \algorithmB for target + ECDF of FEval ratios of \algorithmA\ divided by \algorithmB\ for target function values $10^k$ with $k$ given in the legend; all trial pairs for each function. Pairs where both trials failed are disregarded, pairs where one trial failed are visible in the limits being $>0$ or $<1$. The @@ -219,7 +220,7 @@ def caption_two(): \algorithmA\ (""" caption_two_rlbased_targets_part2 = r""") and \algorithmB\ (""" caption_two_rlbased_targets_part3 = r"""% - ) where \Df\ is the target just not reached by the GECCO-BBOB-2009 best + ) where \Df\ is the target just not reached by the""" + (""" GECCO-BBOB-%d""" %best_year) + r""" best algorithm within a budget of $k\times\DIM$ evaluations, with $k$ being the value in the legend. Right sub-columns: diff --git a/code-postprocessing/bbob_pproc/pptable.py b/code-postprocessing/bbob_pproc/pptable.py index e0f6c6f6e..e315d8a8c 100644 --- a/code-postprocessing/bbob_pproc/pptable.py +++ b/code-postprocessing/bbob_pproc/pptable.py @@ -53,10 +53,10 @@ def get_table_caption(): """ Sets table caption, based on the testbedsettings.current_testbed and genericsettings.runlength_based_targets. """ - + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh table_caption_one = r"""% Average running time (\aRT\ in number of function - evaluations) divided by the best \aRT\ measured during""" + (""" BBOB-%s.""" %str(testbedsettings.current_testbed.best_algorithm_year)) + r""" The \aRT\ + evaluations) divided by the best \aRT\ measured during""" + (""" BBOB-%d.""" %best_year) + r""" The \aRT\ and in braces, as dispersion measure, the half difference between 90 and 10\%-tile of bootstrapped run lengths appear in the second row of each cell, the best \aRT\ @@ -74,7 +74,7 @@ def get_table_caption(): The median number of conducted function evaluations is additionally given in \textit{italics}, if the target in the last column was never reached. \textbf{Bold} entries are statistically significantly better (according to - the rank-sum test) compared to the best algorithm in""" + (""" BBOB-%s, """ %str(testbedsettings.current_testbed.best_algorithm_year)) + r"""with + the rank-sum test) compared to the best algorithm in""" + (""" BBOB-%d, """ %best_year) + r"""with $p = 0.05$ or $p = 10^{-k}$ when the number $k > 1$ is following the $\downarrow$ symbol, with Bonferroni correction by the number of functions. diff --git a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex new file mode 100644 index 000000000..190753536 --- /dev/null +++ b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex @@ -0,0 +1,453 @@ +% This is "sig-alternate.tex" V2.1 April 2013 +% This file should be compiled with V2.5 of "sig-alternate.cls" May 2012 +% +% This example file demonstrates the use of the 'sig-alternate.cls' +% V2.5 LaTeX2e document class file. It is for those submitting +% articles to ACM Conference Proceedings WHO DO NOT WISH TO +% STRICTLY ADHERE TO THE SIGS (PUBS-BOARD-ENDORSED) STYLE. +% The 'sig-alternate.cls' file will produce a similar-looking, +% albeit, 'tighter' paper resulting in, invariably, fewer pages. +% +% ---------------------------------------------------------------------------------------------------------------- +% This .tex file (and associated .cls V2.5) produces: +% 1) The Permission Statement +% 2) The Conference (location) Info information +% 3) The Copyright Line with ACM data +% 4) NO page numbers +% +% as against the acm_proc_article-sp.cls file which +% DOES NOT produce 1) thru' 3) above. +% +% Using 'sig-alternate.cls' you have control, however, from within +% the source .tex file, over both the CopyrightYear +% (defaulted to 200X) and the ACM Copyright Data +% (defaulted to X-XXXXX-XX-X/XX/XX). +% e.g. +% \CopyrightYear{2007} will cause 2007 to appear in the copyright line. +% \crdata{0-12345-67-8/90/12} will cause 0-12345-67-8/90/12 to appear in the copyright line. +% +% --------------------------------------------------------------------------------------------------------------- +% This .tex source is an example which *does* use +% the .bib file (from which the .bbl file % is produced). +% REMEMBER HOWEVER: After having produced the .bbl file, +% and prior to final submission, you *NEED* to 'insert' +% your .bbl file into your source .tex file so as to provide +% ONE 'self-contained' source file. +% +% ================= IF YOU HAVE QUESTIONS ======================= +% Questions regarding the SIGS styles, SIGS policies and +% procedures, Conferences etc. should be sent to +% Adrienne Griscti (griscti@acm.org) +% +% Technical questions _only_ to +% Gerald Murray (murray@hq.acm.org) +% +% Technical questions related to COCO/BBOB to bbob@lri.fr +% =============================================================== +% +% For tracking purposes - this is V2.0 - May 2012 + +\documentclass{sig-alternate} + +\usepackage{graphicx} +\usepackage{rotating} +\usepackage[dvipsnames]{xcolor} % color is sufficient +%\usepackage[hidelinks]{hyperref} % make COCO papers clickable + + +\pdfpagewidth=8.5in +\pdfpageheight=11in +\special{papersize=8.5in,11in} + + \renewcommand{\topfraction}{1} % max fraction of floats at top + \renewcommand{\bottomfraction}{1} % max fraction of floats at bottom + % Parameters for TEXT pages (not float pages): + \setcounter{topnumber}{3} + \setcounter{bottomnumber}{3} + \setcounter{totalnumber}{3} % 2 may work better + \setcounter{dbltopnumber}{4} % for 2-column pages + \renewcommand{\dbltopfraction}{1} % fit big float above 2-col. text + \renewcommand{\textfraction}{0.0} % allow minimal text w. figs + % Parameters for FLOAT pages (not text pages): + \renewcommand{\floatpagefraction}{0.80} % require fuller float pages + % N.B.: floatpagefraction MUST be less than topfraction !! + \renewcommand{\dblfloatpagefraction}{0.7} % require fuller float pages + +%%%%%%%%%%%%%%%%%%%%%% END OF PREAMBLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%% TO BE EDITED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% rungeneric.py writes data into a subfolder of ppdata +\newcommand{\bbobdatapath}{ppdata/} % default output folder of rungeneric.py +\input{\bbobdatapath bbob_pproc_commands.tex} % provide default of algname and algfolder +% \renewcommand{\algname}{MYNAME} % name of algorithm as it should appear in the text +% \renewcommand{\algfolder}{ABC/} % subfolder of \bbobdatapath for processed algorithm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\graphicspath{{\bbobdatapath\algfolder}} + +\newcommand{\DIM}{\ensuremath{\mathrm{DIM}}} +\newcommand{\aRT}{\ensuremath{\mathrm{aRT}}} +\newcommand{\FEvals}{\ensuremath{\mathrm{FEvals}}} +\newcommand{\nruns}{\ensuremath{\mathrm{Nruns}}} +\newcommand{\Dfb}{\ensuremath{\Delta f_{\mathrm{best}}}} +\newcommand{\Df}{\ensuremath{\Delta f}} +\newcommand{\nbFEs}{\ensuremath{\mathrm{\#FEs}}} +\newcommand{\fopt}{\ensuremath{f_\mathrm{opt}}} +\newcommand{\ftarget}{\ensuremath{f_\mathrm{t}}} +\newcommand{\CrE}{\ensuremath{\mathrm{CrE}}} +\newcommand{\change}[1]{{\color{red} #1}} + +\begin{document} +% +% --- Author Metadata here --- +\conferenceinfo{GECCO'13,} {July 6-10, 2013, Amsterdam, The Netherlands.} +\CopyrightYear{2013} +\crdata{TBA} +\clubpenalty=10000 +\widowpenalty = 10000 +% --- End of Author Metadata --- + +\title{Black-Box Optimization Benchmarking Template for Noiseless Function +Testbed +% \titlenote{If needed} +} +\subtitle{Draft version +\titlenote{Submission deadline: March 28th.}} +%Camera-ready paper due April 17th.}} + +% +% You need the command \numberofauthors to handle the 'placement +% and alignment' of the authors beneath the title. +% +% For aesthetic reasons, we recommend 'three authors at a time' +% i.e. three 'name/affiliation blocks' be placed beneath the title. +% +% NOTE: You are NOT restricted in how many 'rows' of +% "name/affiliations" may appear. We just ask that you restrict +% the number of 'columns' to three. +% +% Because of the available 'opening page real-estate' +% we ask you to refrain from putting more than six authors +% (two rows with three columns) beneath the article title. +% More than six makes the first-page appear very cluttered indeed. +% +% Use the \alignauthor commands to handle the names +% and affiliations for an 'aesthetic maximum' of six authors. +% Add names, affiliations, addresses for +% the seventh etc. author(s) as the argument for the +% \additionalauthors command. +% These 'additional authors' will be output/set for you +% without further effort on your part as the last section in +% the body of your article BEFORE References or any Appendices. + +\numberofauthors{1} % in this sample file, there are a *total* +% of EIGHT authors. SIX appear on the 'first-page' (for formatting +% reasons) and the remaining two appear in the \additionalauthors section. +% +\author{ +% You can go ahead and credit any number of authors here, +% e.g. one 'row of three' or two rows (consisting of one row of three +% and a second row of one, two or three). +% +% The command \alignauthor (no curly braces needed) should +% precede each author name, affiliation/snail-mail address and +% e-mail address. Additionally, tag each line of +% affiliation/address with \affaddr, and tag the +% e-mail address with \email. +% +% 1st. author +\alignauthor +Forename Name\\ %\titlenote{Dr.~Trovato insisted his name be first.}\\ +% \affaddr{Institute for Clarity in Documentation}\\ +% \affaddr{1932 Wallamaloo Lane}\\ +% \affaddr{Wallamaloo, New Zealand}\\ +% \email{trovato@corporation.com} +%% 2nd. author +%\alignauthor +%G.K.M. Tobin\titlenote{The secretary disavows +%any knowledge of this author's actions.}\\ +% \affaddr{Institute for Clarity in Documentation}\\ +% \affaddr{P.O. Box 1212}\\ +% \affaddr{Dublin, Ohio 43017-6221}\\ +% \email{webmaster@marysville-ohio.com} +%% 3rd. author +%\alignauthor Lars Th{\o}rv{\"a}ld\titlenote{This author is the +%one who did all the really hard work.}\\ +% \affaddr{The Th{\o}rv{\"a}ld Group}\\ +% \affaddr{1 Th{\o}rv{\"a}ld Circle}\\ +% \affaddr{Hekla, Iceland}\\ +% \email{larst@affiliation.org} +%\and % use '\and' if you need 'another row' of author names +%% 4th. author +%\alignauthor Lawrence P. Leipuner\\ +% \affaddr{Brookhaven Laboratories}\\ +% \affaddr{Brookhaven National Lab}\\ +% \affaddr{P.O. Box 5000}\\ +% \email{lleipuner@researchlabs.org} +%% 5th. author +%\alignauthor Sean Fogarty\\ +% \affaddr{NASA Ames Research Center}\\ +% \affaddr{Moffett Field}\\ +% \affaddr{California 94035}\\ +% \email{fogartys@amesres.org} +%% 6th. author +%\alignauthor Charles Palmer\\ +% \affaddr{Palmer Research Laboratories}\\ +% \affaddr{8600 Datapoint Drive}\\ +% \affaddr{San Antonio, Texas 78229}\\ +% \email{cpalmer@prl.com} +} % author +%% There's nothing stopping you putting the seventh, eighth, etc. +%% author on the opening page (as the 'third row') but we ask, +%% for aesthetic reasons that you place these 'additional authors' +%% in the \additional authors block, viz. +%\additionalauthors{Additional authors: John Smith (The Th{\o}rv{\"a}ld Group, +%email: {\texttt{jsmith@affiliation.org}}) and Julius P.~Kumquat +%(The Kumquat Consortium, email: {\texttt{jpkumquat@consortium.net}}).} +%\date{30 July 1999} +%% Just remember to make sure that the TOTAL number of authors +%% is the number that will appear on the first page PLUS the +%% number that will appear in the \additionalauthors section. + +\maketitle +\begin{abstract} +to be written +\end{abstract} + +% Add any ACM category that you feel is needed, not mandatory anymore +%\category{G.1.6}{Numerical Analysis}{Optimization}[global optimization, +%unconstrained optimization] +%\category{F.2.1}{Analysis of Algorithms and Problem Complexity}{Numerical Algorithms and Problems} + +% Complete with anything that is needed +\terms{Algorithms} + +% Complete with anything that is needed +\keywords{Benchmarking, Black-box optimization} + +% \section{Introduction} +% +% \section{Algorithm Presentation} +% +% \section{Experimental Procedure} +% \subsection{Parameter Tuning} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{CPU Timing} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% note that the following text is just a proposal and can/should be changed to your needs: +In order to evaluate the CPU timing of the algorithm, we have run the \change{MY-ALGORITHM-NAME} on the \change{bbob test suite \cite{hansen2009fun}} with restarts for a maximum budget equal to \change{$400 (D + 2)$} function evaluations. The code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Results} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Results of \algname\ from experiments according to \cite{hansen2016exp} and \cite{hansen2016perfass} on the benchmark +functions given in \cite{wp200901_2010,hansen2012fun} are presented in +Figures~\ref{fig:aRTgraphs}, \ref{fig:RLDs}, \ref{tab:aRTloss}, and \ref{fig:aRTlogloss} and in +Tables~\ref{tab:aRTs}. The experiments were performed with COCO \cite{hansen2016cocoplat}, version \change{1.0.1}, the plots were produced with version \change{1.0.4}. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Scaling of aRT with dimension + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} +\begin{tabular}{l@{\hspace*{-0.025\textwidth}}l@{\hspace*{-0.025\textwidth}}l@{\hspace*{-0.025\textwidth}}l} +\includegraphics[width=0.268\textwidth]{ppfigdim_f001}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f002}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f003}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f004}\\[-2.2ex] +\includegraphics[width=0.268\textwidth]{ppfigdim_f005}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f006}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f007}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f008}\\[-2.2ex] +\includegraphics[width=0.268\textwidth]{ppfigdim_f009}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f010}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f011}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f012}\\[-2.2ex] +\includegraphics[width=0.268\textwidth]{ppfigdim_f013}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f014}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f015}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f016}\\[-2.2ex] +\includegraphics[width=0.268\textwidth]{ppfigdim_f017}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f018}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f019}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f020}\\[-2.2ex] +\includegraphics[width=0.268\textwidth]{ppfigdim_f021}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f022}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f023}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f024} +\end{tabular} +\vspace{-3ex} + \caption{\label{fig:aRTgraphs} + \bbobppfigdimlegend{$f_1$ and $f_{24}$} + } +\end{figure*} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Table showing the average runtime (aRT in number of function +% evaluations) divided by the best aRT measured during BBOB-2009 (given in the +% first row of each cell) for functions $f_1$--$f_{24}$. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*} +\centering {\tiny +\parbox{0.499\textwidth}{\centering + {\small 80-D}\\ + \input{\bbobdatapath\algfolder pptable_80D_noiselessall}}% +\parbox{0.499\textwidth}{\centering + {\small 320-D}\\ + \input{\bbobdatapath\algfolder pptable_320D_noiselessall}}}% + \caption[Table of aRTs]{\label{tab:aRTs}\bbobpptablecaption{} +} +\end{table*} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Empirical cumulative distribution functions (ECDFs) per function group. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\rot}[2][2.5]{ + \hspace*{-3.5\baselineskip}% + \begin{rotate}{90}\hspace{#1em}#2 + \end{rotate}} +\begin{figure*} +\begin{tabular}{l@{\hspace*{-0.025\textwidth}}l@{\hspace*{-0.00\textwidth}}|l@{\hspace*{-0.025\textwidth}}l} +\multicolumn{2}{c}{$D=80$} & \multicolumn{2}{c}{$D=320$}\\[-0.5ex] +\rot{separable fcts} +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_separ} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_separ} & +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_separ} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_separ} \\[-2ex] +\rot[1]{misc.\ moderate fcts} +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_lcond} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_lcond} & +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_lcond} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_lcond} \\[-2ex] +\rot[1.3]{ill-conditioned fcts} +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_hcond} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_hcond} & +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_hcond} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_hcond} \\[-2ex] +\rot[1.6]{multi-modal fcts} +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_multi} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_multi} & +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_multi} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_multi} \\[-2ex] +\rot[1.0]{weak structure fcts} +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_mult2} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_mult2} & +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_mult2} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_mult2}\\[-2ex] +\rot{all functions} +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_noiselessall} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_noiselessall} & +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_noiselessall} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_noiselessall} +\vspace*{-0.5ex} +\end{tabular} +\caption{\label{fig:RLDs} + \bbobpprldistrlegend{} + } +\end{figure*} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% aRT loss ratios (figure and table) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure} +\centering +\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_noiselessall}% +\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_noiselessall}% +\\[-6.2ex] +\parbox{0.49\columnwidth}{\centering 80-D}% +\parbox{0.49\columnwidth}{\centering 320-D}\\[5ex] +% +\input{\bbobdatapath\algfolder pploglosstable_80D_noiselessall}\\ +\input{\bbobdatapath\algfolder pploglosstable_320D_noiselessall} +\caption{\label{tab:aRTloss}% +\bbobloglosstablecaption{} +} +\end{figure} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% aRT loss ratios per function group + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure} +\begin{tabular}{@{}l@{}@{}l@{}} +\multicolumn{1}{c}{80-D} & \multicolumn{1}{c}{320-D}\\ +%\rot{all functions} +%\hspace*{-2mm} +\rot{separable fcts} +\hspace*{-2mm} +\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_separ} & +\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_separ}\\[-2ex] +\rot[2]{moderate fcts} +\hspace*{-2mm} +\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_lcond} & +\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_lcond}\\[-2ex] +\rot[1.3]{ill-conditioned fcts} +\hspace*{-2mm} +\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_hcond} & +\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_hcond}\\[-2ex] +\rot[1.6]{multi-modal fcts} +\hspace*{-2mm} +\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_multi} & +\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_multi}\\[-2ex] +\rot[1.0]{weak structure fcts} +\hspace*{-2mm} +\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_mult2} & +\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_mult2} +\vspace*{-0.5ex} +\end{tabular} +\caption{\label{fig:aRTlogloss}% + \bbobloglossfigurecaption{} +} +\end{figure} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\section{Discussion} % and or conclusion, summary... +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% +% The following two commands are all you need in the +% initial runs of your .tex file to +% produce the bibliography for the citations in your paper. +\bibliographystyle{abbrv} +\bibliography{bbob} % bbob.bib is the name of the Bibliography in this case +% You must have a proper ".bib" file +% and remember to run: +% latex bibtex latex latex +% to resolve all references +% to create the ~.bbl file. Insert that ~.bbl file into +% the .tex source file and comment out +% the command \texttt{{\char'134}thebibliography}. +% +% ACM needs 'a single self-contained file'! +% + +\clearpage % otherwise the last figure might be missing +\end{document} diff --git a/code-postprocessing/latex-templates/templateBBOBLScmp.tex b/code-postprocessing/latex-templates/templateBBOBLScmp.tex new file mode 100644 index 000000000..7bb28249c --- /dev/null +++ b/code-postprocessing/latex-templates/templateBBOBLScmp.tex @@ -0,0 +1,481 @@ +% This is "sig-alternate.tex" V2.1 April 2013 +% This file should be compiled with V2.5 of "sig-alternate.cls" May 2012 +% +% This example file demonstrates the use of the 'sig-alternate.cls' +% V2.5 LaTeX2e document class file. It is for those submitting +% articles to ACM Conference Proceedings WHO DO NOT WISH TO +% STRICTLY ADHERE TO THE SIGS (PUBS-BOARD-ENDORSED) STYLE. +% The 'sig-alternate.cls' file will produce a similar-looking, +% albeit, 'tighter' paper resulting in, invariably, fewer pages. +% +% ---------------------------------------------------------------------------------------------------------------- +% This .tex file (and associated .cls V2.5) produces: +% 1) The Permission Statement +% 2) The Conference (location) Info information +% 3) The Copyright Line with ACM data +% 4) NO page numbers +% +% as against the acm_proc_article-sp.cls file which +% DOES NOT produce 1) thru' 3) above. +% +% Using 'sig-alternate.cls' you have control, however, from within +% the source .tex file, over both the CopyrightYear +% (defaulted to 200X) and the ACM Copyright Data +% (defaulted to X-XXXXX-XX-X/XX/XX). +% e.g. +% \CopyrightYear{2007} will cause 2007 to appear in the copyright line. +% \crdata{0-12345-67-8/90/12} will cause 0-12345-67-8/90/12 to appear in the copyright line. +% +% --------------------------------------------------------------------------------------------------------------- +% This .tex source is an example which *does* use +% the .bib file (from which the .bbl file % is produced). +% REMEMBER HOWEVER: After having produced the .bbl file, +% and prior to final submission, you *NEED* to 'insert' +% your .bbl file into your source .tex file so as to provide +% ONE 'self-contained' source file. +% +% ================= IF YOU HAVE QUESTIONS ======================= +% Questions regarding the SIGS styles, SIGS policies and +% procedures, Conferences etc. should be sent to +% Adrienne Griscti (griscti@acm.org) +% +% Technical questions _only_ to +% Gerald Murray (murray@hq.acm.org) +% +% Technical questions related to COCO/BBOB to bbob@lri.fr +% =============================================================== +% +% For tracking purposes - this is V2.0 - May 2012 + +\documentclass{sig-alternate} +\pdfpagewidth=8.5in +\pdfpageheight=11in +\special{papersize=8.5in,11in} + \renewcommand{\topfraction}{1} % max fraction of floats at top + \renewcommand{\bottomfraction}{1} % max fraction of floats at bottom + % Parameters for TEXT pages (not float pages): + \setcounter{topnumber}{3} + \setcounter{bottomnumber}{3} + \setcounter{totalnumber}{3} % 2 may work better + \setcounter{dbltopnumber}{4} % for 2-column pages + \renewcommand{\dbltopfraction}{1} % fit big float above 2-col. text + \renewcommand{\textfraction}{0.0} % allow minimal text w. figs + % Parameters for FLOAT pages (not text pages): + \renewcommand{\floatpagefraction}{0.80} % require fuller float pages + % N.B.: floatpagefraction MUST be less than topfraction !! + \renewcommand{\dblfloatpagefraction}{0.7} % require fuller float pages + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages +\usepackage{graphicx} +\usepackage{tabularx} +\usepackage[dvipsnames]{xcolor} +\usepackage{float} +\usepackage{rotating} +\usepackage{xstring} % for string operations +\usepackage{wasysym} % Table legend with symbols input from post-processing +\usepackage{MnSymbol} % Table legend with symbols input from post-processing +%\usepackage[hidelinks]{hyperref} % make COCO papers clickable + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Definitions + +% specify acronyms for algorithm1 (1st arg. of post-processing) and algorithm2 (2nd arg.) +%\newcommand{\algorithmA}{algorithmB} % first argument in the post-processing +%\newcommand{\algorithmB}{algorithmB} % second argument in the post-processing +% for the short acronyms in the tables, adjust the following to lines if required. +%\newcommand{\algorithmAshort}{algA} % first argument in the post-processing +%\newcommand{\algorithmBshort}{algB} % second argument in the post-processing + +% location of pictures files +\newcommand{\bbobdatapath}{ppdata/} +\input{\bbobdatapath bbob_pproc_commands.tex} +\graphicspath{{\bbobdatapath}} + +% pre-defined commands +\newcommand{\DIM}{\ensuremath{\mathrm{DIM}}} +\newcommand{\aRT}{\ensuremath{\mathrm{aRT}}} +\newcommand{\FEvals}{\ensuremath{\mathrm{FEvals}}} +\newcommand{\nruns}{\ensuremath{\mathrm{Nruns}}} +\newcommand{\Dfb}{\ensuremath{\Delta f_{\mathrm{best}}}} +\newcommand{\Df}{\ensuremath{\Delta f}} +\newcommand{\nbFEs}{\ensuremath{\mathrm{\#FEs}}} +\newcommand{\fopt}{\ensuremath{f_\mathrm{opt}}} +\newcommand{\ftarget}{\ensuremath{f_\mathrm{t}}} +\newcommand{\CrE}{\ensuremath{\mathrm{CrE}}} +\newcommand{\change}[1]{{\color{red} #1}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{document} + +% +% --- Author Metadata here --- +\conferenceinfo{GECCO'13,} {July 6-10, 2013, Amsterdam, The Netherlands.} +\CopyrightYear{2013} +\crdata{TBA} +\clubpenalty=10000 +\widowpenalty = 10000 +% --- End of Author Metadata --- + +\title{Black-Box Optimization Benchmarking Template for the Comparison of Two Algorithms on the Noiseless Testbed} +\subtitle{Draft version +\titlenote{Submission deadline: March 28th.}} +%Camera-ready paper due April 16th.}} + +% +% You need the command \numberofauthors to handle the 'placement +% and alignment' of the authors beneath the title. +% +% For aesthetic reasons, we recommend 'three authors at a time' +% i.e. three 'name/affiliation blocks' be placed beneath the title. +% +% NOTE: You are NOT restricted in how many 'rows' of +% "name/affiliations" may appear. We just ask that you restrict +% the number of 'columns' to three. +% +% Because of the available 'opening page real-estate' +% we ask you to refrain from putting more than six authors +% (two rows with three columns) beneath the article title. +% More than six makes the first-page appear very cluttered indeed. +% +% Use the \alignauthor commands to handle the names +% and affiliations for an 'aesthetic maximum' of six authors. +% Add names, affiliations, addresses for +% the seventh etc. author(s) as the argument for the +% \additionalauthors command. +% These 'additional authors' will be output/set for you +% without further effort on your part as the last section in +% the body of your article BEFORE References or any Appendices. + +\numberofauthors{1} % in this sample file, there are a *total* +% of EIGHT authors. SIX appear on the 'first-page' (for formatting +% reasons) and the remaining two appear in the \additionalauthors section. +% +\author{ +% You can go ahead and credit any number of authors here, +% e.g. one 'row of three' or two rows (consisting of one row of three +% and a second row of one, two or three). +% +% The command \alignauthor (no curly braces needed) should +% precede each author name, affiliation/snail-mail address and +% e-mail address. Additionally, tag each line of +% affiliation/address with \affaddr, and tag the +% e-mail address with \email. +% +% 1st. author +\alignauthor +Forename Name\\ %\titlenote{Dr.~Trovato insisted his name be first.}\\ +% \affaddr{Institute for Clarity in Documentation}\\ +% \affaddr{1932 Wallamaloo Lane}\\ +% \affaddr{Wallamaloo, New Zealand}\\ +% \email{trovato@corporation.com} +%% 2nd. author +%\alignauthor +%G.K.M. Tobin\titlenote{The secretary disavows +%any knowledge of this author's actions.}\\ +% \affaddr{Institute for Clarity in Documentation}\\ +% \affaddr{P.O. Box 1212}\\ +% \affaddr{Dublin, Ohio 43017-6221}\\ +% \email{webmaster@marysville-ohio.com} +%% 3rd. author +%\alignauthor Lars Th{\o}rv{\"a}ld\titlenote{This author is the +%one who did all the really hard work.}\\ +% \affaddr{The Th{\o}rv{\"a}ld Group}\\ +% \affaddr{1 Th{\o}rv{\"a}ld Circle}\\ +% \affaddr{Hekla, Iceland}\\ +% \email{larst@affiliation.org} +%\and % use '\and' if you need 'another row' of author names +%% 4th. author +%\alignauthor Lawrence P. Leipuner\\ +% \affaddr{Brookhaven Laboratories}\\ +% \affaddr{Brookhaven National Lab}\\ +% \affaddr{P.O. Box 5000}\\ +% \email{lleipuner@researchlabs.org} +%% 5th. author +%\alignauthor Sean Fogarty\\ +% \affaddr{NASA Ames Research Center}\\ +% \affaddr{Moffett Field}\\ +% \affaddr{California 94035}\\ +% \email{fogartys@amesres.org} +%% 6th. author +%\alignauthor Charles Palmer\\ +% \affaddr{Palmer Research Laboratories}\\ +% \affaddr{8600 Datapoint Drive}\\ +% \affaddr{San Antonio, Texas 78229}\\ +% \email{cpalmer@prl.com} +} % author +%% There's nothing stopping you putting the seventh, eighth, etc. +%% author on the opening page (as the 'third row') but we ask, +%% for aesthetic reasons that you place these 'additional authors' +%% in the \additional authors block, viz. +%\additionalauthors{Additional authors: John Smith (The Th{\o}rv{\"a}ld Group, +%email: {\texttt{jsmith@affiliation.org}}) and Julius P.~Kumquat +%(The Kumquat Consortium, email: {\texttt{jpkumquat@consortium.net}}).} +%\date{30 July 1999} +%% Just remember to make sure that the TOTAL number of authors +%% is the number that will appear on the first page PLUS the +%% number that will appear in the \additionalauthors section. + +\maketitle +\begin{abstract} +to be written +\end{abstract} + +% Add any ACM category that you feel is needed, not mandatory anymore +%\category{G.1.6}{Numerical Analysis}{Optimization}[global optimization, +%unconstrained optimization] +%\category{F.2.1}{Analysis of Algorithms and Problem Complexity}{Numerical Algorithms and Problems} + +% Complete with anything that is needed +\terms{Algorithms} + +% Complete with anything that is needed +\keywords{Benchmarking, Black-box optimization} + +% \section{Introduction} +% +% \section{Algorithm Presentation} +% +% \section{Experimental Procedure} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{CPU Timing} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% note that the following text is just a proposal and can/should be changed to your needs: +In order to evaluate the CPU timing of the algorithm, we have run the \change{MY-ALGORITHM-NAME} on the \change{bbob test suite \cite{hansen2009fun}} with restarts for a maximum budget equal to \change{$400 (D + 2)$} function evaluations. The code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. + +\change{repeat the above for the second algorithm} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Results} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Results from experiments according to \cite{hansen2016exp} and \cite{hansen2016perfass} on the benchmark +functions given in \cite{wp200901_2010,hansen2012fun} are presented in +Figures~\ref{fig:scaling}, \ref{fig:scatterplots} and \ref{fig:RLDs} and +in Table~\ref{tab:aRTs}. The experiments were performed with COCO \cite{hansen2016cocoplat}, +version \change{1.0.1}, the plots were produced with version \change{1.0.4}. + +The \textbf{average runtime (aRT)}, used in the figures and table, depends on a +given target function value, $\ftarget=\fopt+\Df$, and is computed over all relevant trials +as the number of function evaluations executed during each trial while the best +function value did not reach \ftarget, summed over all trials +and divided by the number of trials that actually reached \ftarget\ +\cite{hansen2012exp,price1997dev}. +\textbf{Statistical significance} is tested with the rank-sum test for a given +target $\Delta\ftarget$ ($10^{-8}$ as in Figure~\ref{fig:scaling}) using, +for each trial, either the number of needed function evaluations to reach +$\Delta\ftarget$ (inverted and multiplied by $-1$), or, if the target was not +reached, the best $\Df$-value achieved, measured only up to the smallest number +of overall function evaluations for any unsuccessful trial under consideration. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Scaling of aRT with dimension + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} +\centering +\begin{tabular}{@{}c@{}c@{}c@{}c@{}} +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f001}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f002}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f003}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f004}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f005}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f006}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f007}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f008}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f009}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f010}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f011}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f012}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f013}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f014}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f015}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f016}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f017}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f018}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f019}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f020}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f021}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f022}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f023}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f024} +\end{tabular} +\vspace*{-0.2cm} +\caption[Expected running time divided by dimension versus dimension]{ +\label{fig:scaling} +\bbobppfigslegend{$f_1$ and $f_{24}$}. % note: \algorithmA and \algorithmB can be defined above +} +% +\end{figure*} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Scatter plots per function. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\rot}[2][2.5]{ + \hspace*{-3.5\baselineskip}% + \begin{rotate}{90}\hspace{#1em}#2 + \end{rotate}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{figure*} +\begin{tabular}{*{4}{@{}c@{}}} +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 1 Sphere\hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f001}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 2 Ellipsoid separable\hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f002}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 3 Rastrigin separable\hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f003}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 4 Skew Rastrigin-Bueche\hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f004}\\[-2.2ex] +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 5 Linear slope \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f005}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 6 Attractive sector \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f006}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 7 Step-ellipsoid \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f007}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 8 Rosenbrock original \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f008}\\[-2.2ex] +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 9 Rosenbrock rotated \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f009}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 10 Ellipsoid \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f010}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 11 Discus \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f011}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 12 Bent cigar \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f012}\\[-2.2ex] +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 13 Sharp ridge \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f013}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf~~14 Sum of diff.\ powers \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f014}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 15 Rastrigin \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f015}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 16 Weierstrass \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f016}\\[-2.2ex] +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 17 Schaffer F7, cond.10 \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f017}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 18 Schaffer F7, cond.1000 \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f018}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 19 Griewank-Rosenbrock \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f019}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 20 Schwefel x*sin(x) \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f020}\\[-2.2ex] +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 21 Gallagher 101 peaks \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f021}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 22 Gallagher 21 peaks \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f022}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 23 Katsuuras \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f023}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 24 Lunacek bi-Rastrigin \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f024} +\end{tabular} +\caption{\label{fig:scatterplots} +\bbobppscatterlegend{$f_1$--$f_{24}$} +} +\end{figure*} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Empirical cumulative distribution functions (ECDFs) per function group. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} + \begin{tabular}{l@{\hspace*{-0.025\textwidth}}l|l@{\hspace*{-0.025\textwidth}}l} + \multicolumn{2}{c}{80-D} & \multicolumn{2}{c}{320-D} \\ + \rot{separable fcts} + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_separ} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_separ} & + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_separ} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_separ} \\ + \rot[2]{moderate fcts} + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_lcond} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_lcond} & + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_lcond} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_lcond}\\ + \rot[1.3]{ill-conditioned fcts} + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_hcond} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_hcond} & + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_hcond} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_hcond} \\ + \rot[1.6]{multi-modal fcts} + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_multi} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_multi} & + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_multi} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_multi} \\ + \rot[1.0]{weak structure fcts} + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_mult2} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_mult2} & + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_mult2} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_mult2}\\ + \rot{all functions} + \includegraphics[width=0.268\textwidth,trim=0cm 0mm 0mm 15mm, clip]{pprldistr_80D_noiselessall} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_noiselessall} & + \includegraphics[width=0.268\textwidth,trim=0cm 0mm 0mm 15mm, clip]{pprldistr_320D_noiselessall} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_noiselessall} + \end{tabular} +\vspace*{-0.2cm} + \caption{\label{fig:RLDs} + \bbobpprldistrlegendtwo{} + } +\end{figure*} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Table showing the average runtime (aRT in number of function +% evaluations) divided by the best aRT measured during BBOB-2009 (given in the +% first row of each cell) for functions $f_1$--$f_{24}$. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*} +\centering +\hfill80-D\hfill320-D\hfill~\\[1ex] +\tiny +\mbox{ +\input{\bbobdatapath pptable2_80D_noiselessall}\hfill% +\input{\bbobdatapath pptable2_320D_noiselessall}} +\caption{\label{tab:aRTs} +\bbobpptablestwolegend{48} +} +\end{table*} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% The following two commands are all you need in the +% initial runs of your .tex file to +% produce the bibliography for the citations in your paper. +\bibliographystyle{abbrv} +\bibliography{bbob} % bbob.bib is the name of the Bibliography in this case +% You must have a proper ".bib" file +% and remember to run: +% latex bibtex latex latex +% to resolve all references +% to create the ~.bbl file. Insert that ~.bbl file into +% the .tex source file and comment out +% the command \texttt{{\char'134}thebibliography}. +% +% ACM needs 'a single self-contained file'! +% + +% \clearpage % otherwise the last figure might be missing +\end{document} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/code-postprocessing/latex-templates/templateBBOBLSmany.tex b/code-postprocessing/latex-templates/templateBBOBLSmany.tex new file mode 100644 index 000000000..f6d6ea1a5 --- /dev/null +++ b/code-postprocessing/latex-templates/templateBBOBLSmany.tex @@ -0,0 +1,558 @@ +% This is "sig-alternate.tex" V2.1 April 2013 +% This file should be compiled with V2.5 of "sig-alternate.cls" May 2012 +% +% This example file demonstrates the use of the 'sig-alternate.cls' +% V2.5 LaTeX2e document class file. It is for those submitting +% articles to ACM Conference Proceedings WHO DO NOT WISH TO +% STRICTLY ADHERE TO THE SIGS (PUBS-BOARD-ENDORSED) STYLE. +% The 'sig-alternate.cls' file will produce a similar-looking, +% albeit, 'tighter' paper resulting in, invariably, fewer pages. +% +% ---------------------------------------------------------------------------------------------------------------- +% This .tex file (and associated .cls V2.5) produces: +% 1) The Permission Statement +% 2) The Conference (location) Info information +% 3) The Copyright Line with ACM data +% 4) NO page numbers +% +% as against the acm_proc_article-sp.cls file which +% DOES NOT produce 1) thru' 3) above. +% +% Using 'sig-alternate.cls' you have control, however, from within +% the source .tex file, over both the CopyrightYear +% (defaulted to 200X) and the ACM Copyright Data +% (defaulted to X-XXXXX-XX-X/XX/XX). +% e.g. +% \CopyrightYear{2007} will cause 2007 to appear in the copyright line. +% \crdata{0-12345-67-8/90/12} will cause 0-12345-67-8/90/12 to appear in the copyright line. +% +% --------------------------------------------------------------------------------------------------------------- +% This .tex source is an example which *does* use +% the .bib file (from which the .bbl file % is produced). +% REMEMBER HOWEVER: After having produced the .bbl file, +% and prior to final submission, you *NEED* to 'insert' +% your .bbl file into your source .tex file so as to provide +% ONE 'self-contained' source file. +% +% ================= IF YOU HAVE QUESTIONS ======================= +% Questions regarding the SIGS styles, SIGS policies and +% procedures, Conferences etc. should be sent to +% Adrienne Griscti (griscti@acm.org) +% +% Technical questions _only_ to +% Gerald Murray (murray@hq.acm.org) +% +% Technical questions related to COCO/BBOB to bbob@lri.fr +% =============================================================== +% +% For tracking purposes - this is V2.0 - May 2012 + +\documentclass{sig-alternate} +\pdfpagewidth=8.5in +\pdfpageheight=11in +\special{papersize=8.5in,11in} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages +\usepackage{graphicx} +\usepackage{tabularx} +\usepackage[dvipsnames]{xcolor} +\usepackage{float} +\usepackage{rotating} +\usepackage{xstring} % for string operations +\usepackage{wasysym} % Table legend with symbols input from post-processing +\usepackage{MnSymbol} % Table legend with symbols input from post-processing +%\usepackage[hidelinks]{hyperref} % make COCO papers clickable + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Definitions + +% Algorithm names on the right of the ECDF figures can be modified by +% uncommenting the following lines and inputting some text in the last +% brackets, make sure the algorithms are in the same order as for the post-processing: +% \newcommand{\algaperfprof}{Algorithm a short name} +% \newcommand{\algbperfprof}{Algorithm b short name} +% \newcommand{\algcperfprof}{Algorithm c short name} +% \newcommand{\algdperfprof}{Algorithm c short name} +% ... +% Algorithm names as they appear in the tables, uncomment if necessary +% \newcommand{\algatables}{\algaperfprof} % first argument in the post-processing +% \newcommand{\algbtables}{\algbperfprof} % first argument in the post-processing +% \newcommand{\algctables}{\algcperfprof} % first argument in the post-processing +% \newcommand{\algdtables}{\algdperfprof} % second argument in the post-processing +% ... +% location of pictures files +\newcommand{\bbobdatapath}{ppdata/} +\input{\bbobdatapath bbob_pproc_commands.tex} +\graphicspath{{\bbobdatapath}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% pre-defined commands +\newcommand{\DIM}{\ensuremath{\mathrm{DIM}}} +\newcommand{\aRT}{\ensuremath{\mathrm{aRT}}} +\newcommand{\FEvals}{\ensuremath{\mathrm{FEvals}}} +\newcommand{\nruns}{\ensuremath{\mathrm{Nruns}}} +\newcommand{\Dfb}{\ensuremath{\Delta f_{\mathrm{best}}}} +\newcommand{\Df}{\ensuremath{\Delta f}} +\newcommand{\nbFEs}{\ensuremath{\mathrm{\#FEs}}} +\newcommand{\fopt}{\ensuremath{f_\mathrm{opt}}} +\newcommand{\ftarget}{\ensuremath{f_\mathrm{t}}} +\newcommand{\CrE}{\ensuremath{\mathrm{CrE}}} +\newcommand{\change}[1]{{\color{red} #1}} + + \renewcommand{\topfraction}{1} % max fraction of floats at top + \renewcommand{\bottomfraction}{1} % max fraction of floats at bottom + % Parameters for TEXT pages (not float pages): + \setcounter{topnumber}{3} + \setcounter{bottomnumber}{3} + \setcounter{totalnumber}{3} % 2 may work better + \setcounter{dbltopnumber}{4} % for 2-column pages + \renewcommand{\dbltopfraction}{1} % fit big float above 2-col. text + \renewcommand{\textfraction}{0.0} % allow minimal text w. figs + % Parameters for FLOAT pages (not text pages): + \renewcommand{\floatpagefraction}{0.80} % require fuller float pages + % N.B.: floatpagefraction MUST be less than topfraction !! + \renewcommand{\dblfloatpagefraction}{0.7} % require fuller float pages + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{document} + + +% +% --- Author Metadata here --- +\conferenceinfo{GECCO'13,} {July 6-10, 2013, Amsterdam, The Netherlands.} +\CopyrightYear{2013} +\crdata{TBA} +\clubpenalty=10000 +\widowpenalty = 10000 +% --- End of Author Metadata --- + +\title{Black-Box Optimization Benchmarking Template for the Comparison of More than Two Algorithms on the Noiseless Testbed} +\subtitle{Draft version +\titlenote{Submission deadline: March 28th.}} +%Camera-ready paper due April 16th.}} + +% +% You need the command \numberofauthors to handle the 'placement +% and alignment' of the authors beneath the title. +% +% For aesthetic reasons, we recommend 'three authors at a time' +% i.e. three 'name/affiliation blocks' be placed beneath the title. +% +% NOTE: You are NOT restricted in how many 'rows' of +% "name/affiliations" may appear. We just ask that you restrict +% the number of 'columns' to three. +% +% Because of the available 'opening page real-estate' +% we ask you to refrain from putting more than six authors +% (two rows with three columns) beneath the article title. +% More than six makes the first-page appear very cluttered indeed. +% +% Use the \alignauthor commands to handle the names +% and affiliations for an 'aesthetic maximum' of six authors. +% Add names, affiliations, addresses for +% the seventh etc. author(s) as the argument for the +% \additionalauthors command. +% These 'additional authors' will be output/set for you +% without further effort on your part as the last section in +% the body of your article BEFORE References or any Appendices. + +\numberofauthors{1} % in this sample file, there are a *total* +% of EIGHT authors. SIX appear on the 'first-page' (for formatting +% reasons) and the remaining two appear in the \additionalauthors section. +% +\author{ +% You can go ahead and credit any number of authors here, +% e.g. one 'row of three' or two rows (consisting of one row of three +% and a second row of one, two or three). +% +% The command \alignauthor (no curly braces needed) should +% precede each author name, affiliation/snail-mail address and +% e-mail address. Additionally, tag each line of +% affiliation/address with \affaddr, and tag the +% e-mail address with \email. +% +% 1st. author +\alignauthor +Forename Name\\ %\titlenote{Dr.~Trovato insisted his name be first.}\\ +% \affaddr{Institute for Clarity in Documentation}\\ +% \affaddr{1932 Wallamaloo Lane}\\ +% \affaddr{Wallamaloo, New Zealand}\\ +% \email{trovato@corporation.com} +%% 2nd. author +%\alignauthor +%G.K.M. Tobin\titlenote{The secretary disavows +%any knowledge of this author's actions.}\\ +% \affaddr{Institute for Clarity in Documentation}\\ +% \affaddr{P.O. Box 1212}\\ +% \affaddr{Dublin, Ohio 43017-6221}\\ +% \email{webmaster@marysville-ohio.com} +%% 3rd. author +%\alignauthor Lars Th{\o}rv{\"a}ld\titlenote{This author is the +%one who did all the really hard work.}\\ +% \affaddr{The Th{\o}rv{\"a}ld Group}\\ +% \affaddr{1 Th{\o}rv{\"a}ld Circle}\\ +% \affaddr{Hekla, Iceland}\\ +% \email{larst@affiliation.org} +%\and % use '\and' if you need 'another row' of author names +%% 4th. author +%\alignauthor Lawrence P. Leipuner\\ +% \affaddr{Brookhaven Laboratories}\\ +% \affaddr{Brookhaven National Lab}\\ +% \affaddr{P.O. Box 5000}\\ +% \email{lleipuner@researchlabs.org} +%% 5th. author +%\alignauthor Sean Fogarty\\ +% \affaddr{NASA Ames Research Center}\\ +% \affaddr{Moffett Field}\\ +% \affaddr{California 94035}\\ +% \email{fogartys@amesres.org} +%% 6th. author +%\alignauthor Charles Palmer\\ +% \affaddr{Palmer Research Laboratories}\\ +% \affaddr{8600 Datapoint Drive}\\ +% \affaddr{San Antonio, Texas 78229}\\ +% \email{cpalmer@prl.com} +} % author +%% There's nothing stopping you putting the seventh, eighth, etc. +%% author on the opening page (as the 'third row') but we ask, +%% for aesthetic reasons that you place these 'additional authors' +%% in the \additional authors block, viz. +%\additionalauthors{Additional authors: John Smith (The Th{\o}rv{\"a}ld Group, +%email: {\texttt{jsmith@affiliation.org}}) and Julius P.~Kumquat +%(The Kumquat Consortium, email: {\texttt{jpkumquat@consortium.net}}).} +%\date{30 July 1999} +%% Just remember to make sure that the TOTAL number of authors +%% is the number that will appear on the first page PLUS the +%% number that will appear in the \additionalauthors section. + +\maketitle +\begin{abstract} +to be written +\end{abstract} + +% Add any ACM category that you feel is needed, not mandatory anymore +%\category{G.1.6}{Numerical Analysis}{Optimization}[global optimization, +%unconstrained optimization] +%\category{F.2.1}{Analysis of Algorithms and Problem Complexity}{Numerical Algorithms and Problems} + +% Complete with anything that is needed +\terms{Algorithms} + +% Complete with anything that is needed +\keywords{Benchmarking, Black-box optimization} + +% \section{Introduction} +% +% \section{Algorithm Presentation} +% +% \section{Experimental Procedure} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{CPU Timing} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% note that the following text is just a proposal and can/should be changed to your needs: +In order to evaluate the CPU timing of the algorithm, we have run the \change{MY-ALGORITHM-NAME} on the \change{bbob test suite \cite{hansen2009fun}} with restarts for a maximum budget equal to \change{$400 (D + 2)$} function evaluations. The code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. + +\change{repeat the above for any algorithm tested} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Results} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Results from experiments according to \cite{hansen2016exp} and \cite{hansen2016perfass} on the +benchmark functions given in \cite{wp200901_2010,hansen2012fun} are +presented in Figures~\ref{fig:scaling}, \ref{fig:ECDFs05D} and +\ref{fig:ECDFs320D} and in Tables~\ref{tab:aRTs5} and~\ref{tab:aRTs20}. +The experiments were performed with COCO \cite{hansen2016cocoplat}, version +\change{1.0.1}, the plots were produced with version \change{1.0.4}. + +The \textbf{average runtime (aRT)}, used in the figures and tables, +depends on a given target function value, $\ftarget=\fopt+\Df$, and is +computed over all relevant trials as the number of function +evaluations executed during each trial while the best function value +did not reach \ftarget, summed over all trials and divided by the +number of trials that actually reached \ftarget\ +\cite{hansen2012exp,price1997dev}. \textbf{Statistical significance} +is tested with the rank-sum test for a given target $\Delta\ftarget$ +%($10^{-8}$ as in Figure~\ref{fig:scaling}) +using, for each trial, +either the number of needed function evaluations to reach +$\Delta\ftarget$ (inverted and multiplied by $-1$), or, if the target +was not reached, the best $\Df$-value achieved, measured only up to +the smallest number of overall function evaluations for any +unsuccessful trial under consideration. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Scaling of aRT with dimension + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} +\centering +\begin{tabular}{@{}c@{}c@{}c@{}c@{}} +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f001}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f002}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f003}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f004}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f005}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f006}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f007}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f008}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f009}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f010}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f011}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f012}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f013}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f014}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f015}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f016}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f017}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f018}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f019}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f020}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f021}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f022}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f023}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f024} +\end{tabular} +\vspace*{-0.2cm} +\caption[Expected running time divided by dimension +versus dimension]{ +\label{fig:scaling} +% command defined in bbob_pproc_commands.tex: +\bbobppfigslegend{$f_1$ and $f_{24}$} % \algorithmA can be defined above, see above +} +% +\end{figure*} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Empirical Cumulative Distribution Functions (ECDFs) per function group +% for dimension 5. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\rot}[2][2.5]{ + \hspace*{-3.5\baselineskip}% + \begin{rotate}{90}\hspace{#1em}#2 + \end{rotate}} +\newcommand{\includeperfprof}[1]{% include and annotate at the side + \input{\bbobdatapath #1}% + \includegraphics[width=0.4135\textwidth,trim=0mm 0mm 34mm 10mm, clip]{#1}% + \raisebox{.037\textwidth}{\parbox[b][.3\textwidth]{.0868\textwidth}{\begin{scriptsize} + \perfprofsidepanel % this is "\algaperfprof \vfill \algbperfprof \vfill" etc + \end{scriptsize}}} +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} +\begin{tabular}{@{}c@{}c@{}} + separable fcts & moderate fcts \\ + \includeperfprof{pprldmany_80D_separ} & + \includeperfprof{pprldmany_80D_lcond} \\ +ill-conditioned fcts & multi-modal fcts \\ + \includeperfprof{pprldmany_80D_hcond} & + \includeperfprof{pprldmany_80D_multi} \\ + weakly structured multi-modal fcts & all functions\\ + \includeperfprof{pprldmany_80D_mult2} & + \includeperfprof{pprldmany_80D_noiselessall} + \end{tabular} +\caption{ +\label{fig:ECDFs80D} +\bbobECDFslegend{80} +} +\end{figure*} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Empirical Cumulative Distribution Functions (ECDFs) per function group +% for dimension 20. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} + \begin{tabular}{@{}c@{}c@{}} + separable fcts & moderate fcts \\ + \includeperfprof{pprldmany_320D_separ} & + \includeperfprof{pprldmany_320D_lcond} \\ +ill-conditioned fcts & multi-modal fcts \\ + \includeperfprof{pprldmany_320D_hcond} & + \includeperfprof{pprldmany_320D_multi} \\ + weakly structured multi-modal fcts & all functions\\ + \includeperfprof{pprldmany_320D_mult2} & + \includeperfprof{pprldmany_320D_noiselessall} + \end{tabular} +\caption{ +\label{fig:ECDFs320D} +\bbobECDFslegend{320} +} +\end{figure*} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Average runtime (aRT in number of function evaluations) +% divided by the best aRT measured during BBOB-2009 (given in the respective +% first row) for functions $f_1$--$f_{24}$ for dimension 5. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*}\tiny +%\hfill5-D\hfill~\\[1ex] +\mbox{\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\input{\bbobdatapath pptables_f001_80D} + +\input{\bbobdatapath pptables_f002_80D} + +\input{\bbobdatapath pptables_f003_80D} + +\input{\bbobdatapath pptables_f004_80D} + +\input{\bbobdatapath pptables_f005_80D} + +\input{\bbobdatapath pptables_f006_80D} + +\input{\bbobdatapath pptables_f007_80D} + +\input{\bbobdatapath pptables_f008_80D} + +\input{\bbobdatapath pptables_f009_80D} + +\input{\bbobdatapath pptables_f010_80D} + +\input{\bbobdatapath pptables_f011_80D} + +\input{\bbobdatapath pptables_f012_80D} + +\end{minipage} +\hspace{0.002\textwidth} +\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\input{\bbobdatapath pptables_f013_80D} + +\input{\bbobdatapath pptables_f014_80D} + +\input{\bbobdatapath pptables_f015_80D} + +\input{\bbobdatapath pptables_f016_80D} + +\input{\bbobdatapath pptables_f017_80D} + +\input{\bbobdatapath pptables_f018_80D} + +\input{\bbobdatapath pptables_f019_80D} + +\input{\bbobdatapath pptables_f020_80D} + +\input{\bbobdatapath pptables_f021_80D} + +\input{\bbobdatapath pptables_f022_80D} + +\input{\bbobdatapath pptables_f023_80D} + +\input{\bbobdatapath pptables_f024_80D} +\end{minipage}} + + \caption{\label{tab:aRTs80} + \bbobpptablesmanylegend{dimension $80$}{110} % Bonferroni correction: #dimensions * #functions + } +\end{table*} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Average runtime (aRT in number of function evaluations) +% divided by the best aRT measured during BBOB-2009 (given in the respective +% first row) for functions $f_1$--$f_{24}$ for dimension 20. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*}\tiny +%\hfill20-D\hfill~\\[1ex] +\mbox{\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\input{\bbobdatapath pptables_f001_320D} + +\input{\bbobdatapath pptables_f002_320D} + +\input{\bbobdatapath pptables_f003_320D} + +\input{\bbobdatapath pptables_f004_320D} + +\input{\bbobdatapath pptables_f005_320D} + +\input{\bbobdatapath pptables_f006_320D} + +\input{\bbobdatapath pptables_f007_320D} + +\input{\bbobdatapath pptables_f008_320D} + +\input{\bbobdatapath pptables_f009_320D} + +\input{\bbobdatapath pptables_f010_320D} + +\input{\bbobdatapath pptables_f011_320D} + +\input{\bbobdatapath pptables_f012_320D} +\end{minipage} +\hspace{0.002\textwidth} +\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\input{\bbobdatapath pptables_f013_320D} + +\input{\bbobdatapath pptables_f014_320D} + +\input{\bbobdatapath pptables_f015_320D} + +\input{\bbobdatapath pptables_f016_320D} + +\input{\bbobdatapath pptables_f017_320D} + +\input{\bbobdatapath pptables_f018_320D} + +\input{\bbobdatapath pptables_f019_320D} + +\input{\bbobdatapath pptables_f020_320D} + +\input{\bbobdatapath pptables_f021_320D} + +\input{\bbobdatapath pptables_f022_320D} + +\input{\bbobdatapath pptables_f023_320D} + +\input{\bbobdatapath pptables_f024_320D} +\end{minipage}} + \caption{\label{tab:aRTs320} + \bbobpptablesmanylegend{dimension $320$}{110} % Bonferroni correction: #dimensions * #functions +} +\end{table*} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% The following two commands are all you need in the +% initial runs of your .tex file to +% produce the bibliography for the citations in your paper. +\bibliographystyle{abbrv} +\bibliography{bbob} % bbob.bib is the name of the Bibliography in this case +% You must have a proper ".bib" file +% and remember to run: +% latex bibtex latex latex +% to resolve all references +% to create the ~.bbl file. Insert that ~.bbl file into +% the .tex source file and comment out +% the command \texttt{{\char'134}thebibliography}. +% +% ACM needs 'a single self-contained file'! +% + +% \clearpage % otherwise the last figure might be missing +\end{document} From f3413a7a0a1282a8e1133080d28b468e6dac0c34 Mon Sep 17 00:00:00 2001 From: NDManh Date: Thu, 9 Jun 2016 00:13:01 +0700 Subject: [PATCH 270/446] Update Post-processing for latex processing in large scale --- .../bbob_pproc/comp2/ppscatter.py | 12 +- .../bbob_pproc/comp2/pptable2.py | 11 +- .../bbob_pproc/compall/ppfigs.py | 14 +- .../bbob_pproc/compall/pptables.py | 10 +- .../bbob_pproc/latex_commands_for_html.html | 12 +- code-postprocessing/bbob_pproc/ppfig.py | 4 +- code-postprocessing/bbob_pproc/ppfigdim.py | 11 +- code-postprocessing/bbob_pproc/pplogloss.py | 11 +- code-postprocessing/bbob_pproc/pprldistr.py | 17 +- code-postprocessing/bbob_pproc/pptable.py | 6 +- .../latex-templates/templateBBOBLSarticle.tex | 453 ++++++++++++++ .../latex-templates/templateBBOBLScmp.tex | 481 +++++++++++++++ .../latex-templates/templateBBOBLSmany.tex | 558 ++++++++++++++++++ 13 files changed, 1548 insertions(+), 52 deletions(-) create mode 100644 code-postprocessing/latex-templates/templateBBOBLSarticle.tex create mode 100644 code-postprocessing/latex-templates/templateBBOBLScmp.tex create mode 100644 code-postprocessing/latex-templates/templateBBOBLSmany.tex diff --git a/code-postprocessing/bbob_pproc/comp2/ppscatter.py b/code-postprocessing/bbob_pproc/comp2/ppscatter.py index 6492859dc..e8b9f5d31 100644 --- a/code-postprocessing/bbob_pproc/comp2/ppscatter.py +++ b/code-postprocessing/bbob_pproc/comp2/ppscatter.py @@ -71,12 +71,12 @@ def prepare_figure_caption(): caption_finish = r"""Markers on the upper or right edge indicate that the respective target value was never reached. Markers represent dimension: - 2:{\color{cyan}+}, - 3:{\color{green!45!black}$\triangledown$}, - 5:{\color{blue}$\star$}, - 10:$\circ$, - 20:{\color{red}$\Box$}, - 40:{\color{magenta}$\Diamond$}. """ + %d:{\color{cyan}+}, + %d:{\color{green!45!black}$\triangledown$}, + %d:{\color{blue}$\star$}, + %d:$\circ$, + %d:{\color{red}$\Box$}, + %d:{\color{magenta}$\Diamond$}. """ %tuple(testbedsettings.current_testbed.dimensions_to_display) # Manh if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: diff --git a/code-postprocessing/bbob_pproc/comp2/pptable2.py b/code-postprocessing/bbob_pproc/comp2/pptable2.py index 904765f23..39883ee61 100644 --- a/code-postprocessing/bbob_pproc/comp2/pptable2.py +++ b/code-postprocessing/bbob_pproc/comp2/pptable2.py @@ -25,11 +25,12 @@ def get_table_caption(): """ Sets table caption, based on the testbedsettings.current_testbed and genericsettings.runlength_based_targets. """ - + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + tabDimsOfInterest = testbedsettings.current_testbed.tabDimsOfInterest table_caption_one = r"""% Average running time (\aRT\ in number of function - evaluations) divided by the respective best \aRT\ measured during BBOB-2009 in - dimensions 5 (left) and 20 (right). + evaluations) divided by the respective best \aRT\ measured during""" + (""" BBOB-%d in + dimensions %d (left) and %d (right). """ %tuple([best_year] + tabDimsOfInterest)) + r"""% The \aRT\ and in braces, as dispersion measure, the half difference between 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and """ @@ -46,7 +47,7 @@ def get_table_caption(): """ table_caption_bi = r"""% Average runtime (\aRT) to reach given targets, measured - in number of function evaluations in dimensions 5 (left) and 20 (right). + in number of function evaluations in""" + ("""dimensions %d (left) and %d (right). """ %tuple(tabDimsOfInterest)) + r"""% For each function, the \aRT\ and, in braces as dispersion measure, the half difference between 10 and 90\%-tile of (bootstrapped) runtimes is shown for the different @@ -62,7 +63,7 @@ def get_table_caption(): with $p=0.05$ or $p=10^{-k}$ where $k\in\{2,3,4,\dots\}$ is the number following the $\star$ symbol, with Bonferroni correction of #1.""" + (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-2009.""" + algorithm of """ + ("""BBOB-%d.""" %best_year) if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) else "") ) diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index bf1f1d8a5..ea35da288 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -105,10 +105,10 @@ def scaling_figure_caption(for_html = False): def prepare_ecdfs_figure_caption(): - + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh bestyeartext = ( - r"The ``best %d'' line " % testbedsettings.current_testbed.best_algorithm_year + - r"corresponds to the best \aRT\ observed during BBOB %d " % testbedsettings.current_testbed.best_algorithm_year + + r"The ``best %d'' line " % best_year + + r"corresponds to the best \aRT\ observed during BBOB %d " % best_year + r"for each selected target." ) @@ -266,9 +266,9 @@ def plotLegend(handles, maxval=None): #enforce best 2009 comes first in case of equality tmp = [] # Manh : a generalization - best_year = 'best %d' %testbedsettings.current_testbed.best_algorithm_year + best_year_label = 'best %d' %testbedsettings.current_testbed.best_algorithm_year for h in ys[j][k]: - if plt.getp(h, 'label') == best_year: + if plt.getp(h, 'label') == best_year_label: tmp.insert(0, h) else: tmp.append(h) @@ -596,12 +596,12 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd toolsdivers.prepend_to_file(latex_commands_filename, [#'\\providecommand{\\bbobppfigsftarget}{\\ensuremath{10^{%s}}}' # % target.loglabel(0), # int(numpy.round(numpy.log10(target))), - '\\providecommand{\\bbobppfigslegendlargescalefixed}[1]{', + '\\providecommand{\\bbobppfigslegend}[1]{', scaling_figure_caption(), 'Legend: '] + alg_definitions + ['}'] ) toolsdivers.prepend_to_file(latex_commands_filename, - ['\\providecommand{\\bbobECDFslegendlargescalefixed}[1]{', + ['\\providecommand{\\bbobECDFslegend}[1]{', ecdfs_figure_caption(), '}'] ) diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index d8c7a6010..7d268f54a 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -26,11 +26,11 @@ def get_table_caption(): TODO: \hvref and \fopt should be defined via the current_testbed, preferably with a single latex command. """ - + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh table_caption_one = r"""% Average running time (\aRT\ in number of function - evaluations) divided by the respective best \aRT\ measured during""" + (""" BBOB-%s in - #1.""" %str(testbedsettings.current_testbed.best_algorithm_year)) + r""" + evaluations) divided by the respective best \aRT\ measured during""" + (""" BBOB-%d in + #1.""" %best_year) + r""" The \aRT\ and in braces, as dispersion measure, the half difference between 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and """ # Manh : the caption varies in best_algorithm_year @@ -61,8 +61,8 @@ def get_table_caption(): the rank-sum test) when compared to all other algorithms of the table, with $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger than 1, with Bonferroni correction of #2. """ + - (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-%s.""" %str(testbedsettings.current_testbed.best_algorithm_year) + (r""" A $\downarrow$ indicates the same tested against the best + algorithm of BBOB-%d. """ %best_year if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi) else "") + r"""Best results are printed in bold. """) # Manh : the caption varies in best_algorithm_year diff --git a/code-postprocessing/bbob_pproc/latex_commands_for_html.html b/code-postprocessing/bbob_pproc/latex_commands_for_html.html index df7781c83..0ddaa8517 100644 --- a/code-postprocessing/bbob_pproc/latex_commands_for_html.html +++ b/code-postprocessing/bbob_pproc/latex_commands_for_html.html @@ -542,12 +542,12 @@ of algorithmB (x-axis) versus algorithmA (y-axis) for NBTARGETS target values ∆f ∈ [NBLOW, NBUP] in each dimension on functions f1 - f24. Markers on the upper or right edge indicate that the respective target value was never reached. Markers represent dimension: -2:+, -3:\triangledown, -5:, -10:°, -20:[¯], -40:\Diamond. +20:+, +40:\triangledown, +80:, +160:°, +320:[¯], +640:\Diamond.
##bbobloglosstablecaptionlargescalefixed## diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index 906d8ddaa..ae3b22061 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -347,7 +347,7 @@ def save_single_functions_html(filename, elif htmlPage is HtmlPage.PPTABLE2: currentHeader = 'Table showing the aRT in number of function evaluations' if bestAlgExists: - currentHeader += ' divided by the best aRT measured during BBOB-%s' %str(testbedsettings.current_testbed.best_algorithm_year) + currentHeader += ' divided by the best aRT measured during BBOB-%d' %testbedsettings.current_testbed.best_algorithm_year # Manh : the caption varies in best_algorithm_year f.write("\n

%s

\n" % currentHeader) @@ -449,7 +449,7 @@ def write_ECDF(f, dimension, extension, captionStringFormat, functionGroups): def write_pptables(f, dimension, captionStringFormat, first_function_number, last_function_number, bestAlgExists): """Writes line for pptables images.""" - additionalText = ('divided by the best aRT measured during BBOB-%s' %str(testbedsettings.current_testbed.best_algorithm_year)) if bestAlgExists else '' + additionalText = ('divided by the best aRT measured during BBOB-%d' %testbedsettings.current_testbed.best_algorithm_year) if bestAlgExists else '' # Manh : the caption varies in best_algorithm_year currentHeader = 'Table showing the aRT in number of function evaluations %s ' \ diff --git a/code-postprocessing/bbob_pproc/ppfigdim.py b/code-postprocessing/bbob_pproc/ppfigdim.py index 54fb81e86..c56db8e91 100644 --- a/code-postprocessing/bbob_pproc/ppfigdim.py +++ b/code-postprocessing/bbob_pproc/ppfigdim.py @@ -113,12 +113,13 @@ def scaling_figure_caption(): # "$\\fopt+\\Df$ was not surpassed in a trial, from all " + # "(successful and unsuccessful) trials, and \\fopt\\ is the optimal " + # "function value. " + + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh scaling_figure_caption_fixed = caption_part_one + r"""% % Shown are $\Df = 10^{\{values_of_interest\}}$. Numbers above \aRT-symbols (if appearing) indicate the number of trials reaching the respective target. """ + ( # TODO: add here "(out of XYZ trials)" r"""The light thick line with - diamonds indicates the respective best result from BBOB-2009 for + diamonds indicates the respective best result from BBOB-%d """ %best_year + r"""for $\Df=10^{-8}$. """ if testbedsettings.current_testbed.name != 'bbob-biobj' else "") + """Horizontal lines mean linear scaling, slanted grid lines depict quadratic scaling. @@ -127,15 +128,15 @@ def scaling_figure_caption(): Shown is the \aRT\ for targets just not reached by % the largest $\Df$-values $\ge10^{-8}$ for which the \aRT\ of - the artificial GECCO-BBOB-2009 best algorithm + the artificial""" + (""" GECCO-BBOB-%d""" %best_year) + r""" best algorithm within the given budget $k\times\DIM$, where $k$ is shown in the legend. % was above $\{values_of_interest\}\times\DIM$ evaluations. Numbers above \aRT-symbols indicate the number of trials reaching the respective target. - The light thick line with diamonds indicates the respective best result from BBOB-2009 for + The light thick line with diamonds indicates the respective best result from """ + ("""BBOB-%d""" %best_year) + r""" for the most difficult target. Slanted grid lines indicate a scaling with ${\cal O}(\DIM)$ compared to ${\cal O}(1)$ - when using the respective 2009 best algorithm. - """ + when using the respective %d best algorithm. + """ %best_year # r"Shown is the \aRT\ for the smallest $\Df$-values $\ge10^{-8}$ for which the \aRT\ of the GECCO-BBOB-2009 best algorithm " + # r"was below $10^{\{values_of_interest\}}\times\DIM$ evaluations. " + diff --git a/code-postprocessing/bbob_pproc/pplogloss.py b/code-postprocessing/bbob_pproc/pplogloss.py index 01bd78d91..1a29147b9 100644 --- a/code-postprocessing/bbob_pproc/pplogloss.py +++ b/code-postprocessing/bbob_pproc/pplogloss.py @@ -25,6 +25,7 @@ from . import toolsstats, bestalg from .pptex import writeFEvals2 from .ppfig import saveFigure, consecutiveNumbers +from . import testbedsettings """ aRT loss ratio of an algorithm A for comparison to BBOB-best2009. This works @@ -123,6 +124,7 @@ def table_caption(): + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh caption = r"""% \aRT\ loss ratio versus the budget in number of $f$-evaluations divided by dimension. @@ -130,15 +132,14 @@ def table_caption(): as the best target $f$-value reached within the budget by the given algorithm. Shown is then the \aRT\ to reach \ftarget\ for the given algorithm - or the budget, if the GECCO-BBOB-2009 best algorithm + or the budget, """ + (r"""if the GECCO-BBOB-%d best algorithm reached a better target within the budget, - divided by the best \aRT\ - seen in GECCO-BBOB-2009 to reach \ftarget. + divided by the best \aRT\ seen in GECCO-BBOB-%d""" %(best_year, best_year)) + r""" to reach \ftarget. Line: geometric mean. Box-Whisker error bar: 25-75\%-ile with median (box), 10-90\%-ile (caps), and minimum and maximum \aRT\ loss ratio (points). The vertical line gives the maximal number of function evaluations in a single trial in this function subset. See also - Figure~\ref{fig:ERTlogloss} for results on each function subgroup. + Figure~\ref{fig:aRTlogloss} for results on each function subgroup. """ # Currently all scenarios have the same caption. @@ -147,7 +148,7 @@ def table_caption(): def figure_caption(): caption = r"""% - \aRT\ loss ratios (see Figure~\ref{tab:ERTloss} for details). + \aRT\ loss ratios (see Figure~\ref{tab:aRTloss} for details). Each cross ({\color{blue}$+$}) represents a single function, the line is the geometric mean. """ diff --git a/code-postprocessing/bbob_pproc/pprldistr.py b/code-postprocessing/bbob_pproc/pprldistr.py index 7440a8896..8c717b41c 100644 --- a/code-postprocessing/bbob_pproc/pprldistr.py +++ b/code-postprocessing/bbob_pproc/pprldistr.py @@ -135,6 +135,7 @@ def load_previous_RLBdata(filename=previous_RLBdata_filename): def caption_single(): + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh caption_part_one = r"""% Empirical cumulative distribution functions (ECDF), plotting the fraction of trials with an outcome not larger than the respective value on the $x$-axis. @@ -147,8 +148,8 @@ def caption_single(): caption_left_rlbased_targets = r"""% Left subplots: ECDF of number of function evaluations (FEvals) divided by search space dimension $D$, to fall below $\fopt+\Df$ where \Df\ is the - target just not reached by the GECCO-BBOB-2009 best algorithm within a budget of - % largest $\Df$-value $\ge10^{-8}$ for which the best \ART\ seen in the GECCO-BBOB-2009 was yet above + target just not reached by the""" + ("""GECCO-BBOB-%d""" %best_year) + r""" best algorithm within a budget of + % largest $\Df$-value $\ge10^{-8}$ for which the best \ART\ seen in the """ + ("""GECCO-BBOB-%d""" %best_year) + r""" was yet above $k\times\DIM$ evaluations, where $k$ is the first value in the legend. """ caption_wrap_up = r"""% Legends indicate for each target the number of functions that were solved in at @@ -161,7 +162,7 @@ def caption_single(): (from right to left cycling cyan-magenta-black\dots) and final $\Df$-value (red), where \Df\ and \textsf{Df} denote the difference to the optimal function value. """ + ( r"""Light brown lines in the background show ECDFs for the most difficult target of all - algorithms benchmarked during BBOB-2009.""" if testbedsettings.current_testbed.name != testbedsettings.testbed_name_bi + algorithms benchmarked during """ + ("""BBOB-%d.""" %best_year) if testbedsettings.current_testbed.name != testbedsettings.testbed_name_bi else r"""Shown are aggregations over functions where the single objectives are in the same BBOB function class, as indicated on the left side and the aggregation over all 55 functions in the last @@ -187,10 +188,10 @@ def caption_single(): return figure_caption.replace(r'TO_BE_REPLACED', '$' + 'D, '.join([str(i) for i in single_runlength_factors[:6]]) + 'D,\dots$') def caption_two(): + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh caption_two_part_one = r"""% Empirical cumulative distributions (ECDF) - of run lengths and speed-up ratios in 5-D (left) and 20-D (right). - Left sub-columns: ECDF of + of run lengths and speed-up ratios """ + ("""in %d-D (left) and %d-D (right). """ %tuple(testbedsettings.current_testbed.tabDimsOfInterest)) + r"""Left sub-columns: ECDF of the number of function evaluations divided by dimension $D$ (FEvals/D) """ @@ -206,9 +207,9 @@ def caption_two(): caption_two_fixed_targets_part3 = r""")% . """ + (r"""Light beige lines show the ECDF of FEvals for target value $\Df=10^{-8}$ of all algorithms benchmarked during - BBOB-2009. """ if testbedsettings.current_testbed.name != testbedsettings.testbed_name_bi + """ + ("""BBOB-%d. """ %best_year) if testbedsettings.current_testbed.name != testbedsettings.testbed_name_bi else "") + r"""Right sub-columns: - ECDF of FEval ratios of \algorithmA\ divided by \algorithmB for target + ECDF of FEval ratios of \algorithmA\ divided by \algorithmB\ for target function values $10^k$ with $k$ given in the legend; all trial pairs for each function. Pairs where both trials failed are disregarded, pairs where one trial failed are visible in the limits being $>0$ or $<1$. The @@ -219,7 +220,7 @@ def caption_two(): \algorithmA\ (""" caption_two_rlbased_targets_part2 = r""") and \algorithmB\ (""" caption_two_rlbased_targets_part3 = r"""% - ) where \Df\ is the target just not reached by the GECCO-BBOB-2009 best + ) where \Df\ is the target just not reached by the""" + (""" GECCO-BBOB-%d""" %best_year) + r""" best algorithm within a budget of $k\times\DIM$ evaluations, with $k$ being the value in the legend. Right sub-columns: diff --git a/code-postprocessing/bbob_pproc/pptable.py b/code-postprocessing/bbob_pproc/pptable.py index e0f6c6f6e..e315d8a8c 100644 --- a/code-postprocessing/bbob_pproc/pptable.py +++ b/code-postprocessing/bbob_pproc/pptable.py @@ -53,10 +53,10 @@ def get_table_caption(): """ Sets table caption, based on the testbedsettings.current_testbed and genericsettings.runlength_based_targets. """ - + best_year = testbedsettings.current_testbed.best_algorithm_year # Manh table_caption_one = r"""% Average running time (\aRT\ in number of function - evaluations) divided by the best \aRT\ measured during""" + (""" BBOB-%s.""" %str(testbedsettings.current_testbed.best_algorithm_year)) + r""" The \aRT\ + evaluations) divided by the best \aRT\ measured during""" + (""" BBOB-%d.""" %best_year) + r""" The \aRT\ and in braces, as dispersion measure, the half difference between 90 and 10\%-tile of bootstrapped run lengths appear in the second row of each cell, the best \aRT\ @@ -74,7 +74,7 @@ def get_table_caption(): The median number of conducted function evaluations is additionally given in \textit{italics}, if the target in the last column was never reached. \textbf{Bold} entries are statistically significantly better (according to - the rank-sum test) compared to the best algorithm in""" + (""" BBOB-%s, """ %str(testbedsettings.current_testbed.best_algorithm_year)) + r"""with + the rank-sum test) compared to the best algorithm in""" + (""" BBOB-%d, """ %best_year) + r"""with $p = 0.05$ or $p = 10^{-k}$ when the number $k > 1$ is following the $\downarrow$ symbol, with Bonferroni correction by the number of functions. diff --git a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex new file mode 100644 index 000000000..190753536 --- /dev/null +++ b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex @@ -0,0 +1,453 @@ +% This is "sig-alternate.tex" V2.1 April 2013 +% This file should be compiled with V2.5 of "sig-alternate.cls" May 2012 +% +% This example file demonstrates the use of the 'sig-alternate.cls' +% V2.5 LaTeX2e document class file. It is for those submitting +% articles to ACM Conference Proceedings WHO DO NOT WISH TO +% STRICTLY ADHERE TO THE SIGS (PUBS-BOARD-ENDORSED) STYLE. +% The 'sig-alternate.cls' file will produce a similar-looking, +% albeit, 'tighter' paper resulting in, invariably, fewer pages. +% +% ---------------------------------------------------------------------------------------------------------------- +% This .tex file (and associated .cls V2.5) produces: +% 1) The Permission Statement +% 2) The Conference (location) Info information +% 3) The Copyright Line with ACM data +% 4) NO page numbers +% +% as against the acm_proc_article-sp.cls file which +% DOES NOT produce 1) thru' 3) above. +% +% Using 'sig-alternate.cls' you have control, however, from within +% the source .tex file, over both the CopyrightYear +% (defaulted to 200X) and the ACM Copyright Data +% (defaulted to X-XXXXX-XX-X/XX/XX). +% e.g. +% \CopyrightYear{2007} will cause 2007 to appear in the copyright line. +% \crdata{0-12345-67-8/90/12} will cause 0-12345-67-8/90/12 to appear in the copyright line. +% +% --------------------------------------------------------------------------------------------------------------- +% This .tex source is an example which *does* use +% the .bib file (from which the .bbl file % is produced). +% REMEMBER HOWEVER: After having produced the .bbl file, +% and prior to final submission, you *NEED* to 'insert' +% your .bbl file into your source .tex file so as to provide +% ONE 'self-contained' source file. +% +% ================= IF YOU HAVE QUESTIONS ======================= +% Questions regarding the SIGS styles, SIGS policies and +% procedures, Conferences etc. should be sent to +% Adrienne Griscti (griscti@acm.org) +% +% Technical questions _only_ to +% Gerald Murray (murray@hq.acm.org) +% +% Technical questions related to COCO/BBOB to bbob@lri.fr +% =============================================================== +% +% For tracking purposes - this is V2.0 - May 2012 + +\documentclass{sig-alternate} + +\usepackage{graphicx} +\usepackage{rotating} +\usepackage[dvipsnames]{xcolor} % color is sufficient +%\usepackage[hidelinks]{hyperref} % make COCO papers clickable + + +\pdfpagewidth=8.5in +\pdfpageheight=11in +\special{papersize=8.5in,11in} + + \renewcommand{\topfraction}{1} % max fraction of floats at top + \renewcommand{\bottomfraction}{1} % max fraction of floats at bottom + % Parameters for TEXT pages (not float pages): + \setcounter{topnumber}{3} + \setcounter{bottomnumber}{3} + \setcounter{totalnumber}{3} % 2 may work better + \setcounter{dbltopnumber}{4} % for 2-column pages + \renewcommand{\dbltopfraction}{1} % fit big float above 2-col. text + \renewcommand{\textfraction}{0.0} % allow minimal text w. figs + % Parameters for FLOAT pages (not text pages): + \renewcommand{\floatpagefraction}{0.80} % require fuller float pages + % N.B.: floatpagefraction MUST be less than topfraction !! + \renewcommand{\dblfloatpagefraction}{0.7} % require fuller float pages + +%%%%%%%%%%%%%%%%%%%%%% END OF PREAMBLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%% TO BE EDITED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% rungeneric.py writes data into a subfolder of ppdata +\newcommand{\bbobdatapath}{ppdata/} % default output folder of rungeneric.py +\input{\bbobdatapath bbob_pproc_commands.tex} % provide default of algname and algfolder +% \renewcommand{\algname}{MYNAME} % name of algorithm as it should appear in the text +% \renewcommand{\algfolder}{ABC/} % subfolder of \bbobdatapath for processed algorithm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\graphicspath{{\bbobdatapath\algfolder}} + +\newcommand{\DIM}{\ensuremath{\mathrm{DIM}}} +\newcommand{\aRT}{\ensuremath{\mathrm{aRT}}} +\newcommand{\FEvals}{\ensuremath{\mathrm{FEvals}}} +\newcommand{\nruns}{\ensuremath{\mathrm{Nruns}}} +\newcommand{\Dfb}{\ensuremath{\Delta f_{\mathrm{best}}}} +\newcommand{\Df}{\ensuremath{\Delta f}} +\newcommand{\nbFEs}{\ensuremath{\mathrm{\#FEs}}} +\newcommand{\fopt}{\ensuremath{f_\mathrm{opt}}} +\newcommand{\ftarget}{\ensuremath{f_\mathrm{t}}} +\newcommand{\CrE}{\ensuremath{\mathrm{CrE}}} +\newcommand{\change}[1]{{\color{red} #1}} + +\begin{document} +% +% --- Author Metadata here --- +\conferenceinfo{GECCO'13,} {July 6-10, 2013, Amsterdam, The Netherlands.} +\CopyrightYear{2013} +\crdata{TBA} +\clubpenalty=10000 +\widowpenalty = 10000 +% --- End of Author Metadata --- + +\title{Black-Box Optimization Benchmarking Template for Noiseless Function +Testbed +% \titlenote{If needed} +} +\subtitle{Draft version +\titlenote{Submission deadline: March 28th.}} +%Camera-ready paper due April 17th.}} + +% +% You need the command \numberofauthors to handle the 'placement +% and alignment' of the authors beneath the title. +% +% For aesthetic reasons, we recommend 'three authors at a time' +% i.e. three 'name/affiliation blocks' be placed beneath the title. +% +% NOTE: You are NOT restricted in how many 'rows' of +% "name/affiliations" may appear. We just ask that you restrict +% the number of 'columns' to three. +% +% Because of the available 'opening page real-estate' +% we ask you to refrain from putting more than six authors +% (two rows with three columns) beneath the article title. +% More than six makes the first-page appear very cluttered indeed. +% +% Use the \alignauthor commands to handle the names +% and affiliations for an 'aesthetic maximum' of six authors. +% Add names, affiliations, addresses for +% the seventh etc. author(s) as the argument for the +% \additionalauthors command. +% These 'additional authors' will be output/set for you +% without further effort on your part as the last section in +% the body of your article BEFORE References or any Appendices. + +\numberofauthors{1} % in this sample file, there are a *total* +% of EIGHT authors. SIX appear on the 'first-page' (for formatting +% reasons) and the remaining two appear in the \additionalauthors section. +% +\author{ +% You can go ahead and credit any number of authors here, +% e.g. one 'row of three' or two rows (consisting of one row of three +% and a second row of one, two or three). +% +% The command \alignauthor (no curly braces needed) should +% precede each author name, affiliation/snail-mail address and +% e-mail address. Additionally, tag each line of +% affiliation/address with \affaddr, and tag the +% e-mail address with \email. +% +% 1st. author +\alignauthor +Forename Name\\ %\titlenote{Dr.~Trovato insisted his name be first.}\\ +% \affaddr{Institute for Clarity in Documentation}\\ +% \affaddr{1932 Wallamaloo Lane}\\ +% \affaddr{Wallamaloo, New Zealand}\\ +% \email{trovato@corporation.com} +%% 2nd. author +%\alignauthor +%G.K.M. Tobin\titlenote{The secretary disavows +%any knowledge of this author's actions.}\\ +% \affaddr{Institute for Clarity in Documentation}\\ +% \affaddr{P.O. Box 1212}\\ +% \affaddr{Dublin, Ohio 43017-6221}\\ +% \email{webmaster@marysville-ohio.com} +%% 3rd. author +%\alignauthor Lars Th{\o}rv{\"a}ld\titlenote{This author is the +%one who did all the really hard work.}\\ +% \affaddr{The Th{\o}rv{\"a}ld Group}\\ +% \affaddr{1 Th{\o}rv{\"a}ld Circle}\\ +% \affaddr{Hekla, Iceland}\\ +% \email{larst@affiliation.org} +%\and % use '\and' if you need 'another row' of author names +%% 4th. author +%\alignauthor Lawrence P. Leipuner\\ +% \affaddr{Brookhaven Laboratories}\\ +% \affaddr{Brookhaven National Lab}\\ +% \affaddr{P.O. Box 5000}\\ +% \email{lleipuner@researchlabs.org} +%% 5th. author +%\alignauthor Sean Fogarty\\ +% \affaddr{NASA Ames Research Center}\\ +% \affaddr{Moffett Field}\\ +% \affaddr{California 94035}\\ +% \email{fogartys@amesres.org} +%% 6th. author +%\alignauthor Charles Palmer\\ +% \affaddr{Palmer Research Laboratories}\\ +% \affaddr{8600 Datapoint Drive}\\ +% \affaddr{San Antonio, Texas 78229}\\ +% \email{cpalmer@prl.com} +} % author +%% There's nothing stopping you putting the seventh, eighth, etc. +%% author on the opening page (as the 'third row') but we ask, +%% for aesthetic reasons that you place these 'additional authors' +%% in the \additional authors block, viz. +%\additionalauthors{Additional authors: John Smith (The Th{\o}rv{\"a}ld Group, +%email: {\texttt{jsmith@affiliation.org}}) and Julius P.~Kumquat +%(The Kumquat Consortium, email: {\texttt{jpkumquat@consortium.net}}).} +%\date{30 July 1999} +%% Just remember to make sure that the TOTAL number of authors +%% is the number that will appear on the first page PLUS the +%% number that will appear in the \additionalauthors section. + +\maketitle +\begin{abstract} +to be written +\end{abstract} + +% Add any ACM category that you feel is needed, not mandatory anymore +%\category{G.1.6}{Numerical Analysis}{Optimization}[global optimization, +%unconstrained optimization] +%\category{F.2.1}{Analysis of Algorithms and Problem Complexity}{Numerical Algorithms and Problems} + +% Complete with anything that is needed +\terms{Algorithms} + +% Complete with anything that is needed +\keywords{Benchmarking, Black-box optimization} + +% \section{Introduction} +% +% \section{Algorithm Presentation} +% +% \section{Experimental Procedure} +% \subsection{Parameter Tuning} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{CPU Timing} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% note that the following text is just a proposal and can/should be changed to your needs: +In order to evaluate the CPU timing of the algorithm, we have run the \change{MY-ALGORITHM-NAME} on the \change{bbob test suite \cite{hansen2009fun}} with restarts for a maximum budget equal to \change{$400 (D + 2)$} function evaluations. The code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Results} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Results of \algname\ from experiments according to \cite{hansen2016exp} and \cite{hansen2016perfass} on the benchmark +functions given in \cite{wp200901_2010,hansen2012fun} are presented in +Figures~\ref{fig:aRTgraphs}, \ref{fig:RLDs}, \ref{tab:aRTloss}, and \ref{fig:aRTlogloss} and in +Tables~\ref{tab:aRTs}. The experiments were performed with COCO \cite{hansen2016cocoplat}, version \change{1.0.1}, the plots were produced with version \change{1.0.4}. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Scaling of aRT with dimension + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} +\begin{tabular}{l@{\hspace*{-0.025\textwidth}}l@{\hspace*{-0.025\textwidth}}l@{\hspace*{-0.025\textwidth}}l} +\includegraphics[width=0.268\textwidth]{ppfigdim_f001}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f002}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f003}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f004}\\[-2.2ex] +\includegraphics[width=0.268\textwidth]{ppfigdim_f005}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f006}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f007}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f008}\\[-2.2ex] +\includegraphics[width=0.268\textwidth]{ppfigdim_f009}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f010}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f011}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f012}\\[-2.2ex] +\includegraphics[width=0.268\textwidth]{ppfigdim_f013}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f014}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f015}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f016}\\[-2.2ex] +\includegraphics[width=0.268\textwidth]{ppfigdim_f017}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f018}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f019}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f020}\\[-2.2ex] +\includegraphics[width=0.268\textwidth]{ppfigdim_f021}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f022}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f023}& +\includegraphics[width=0.268\textwidth]{ppfigdim_f024} +\end{tabular} +\vspace{-3ex} + \caption{\label{fig:aRTgraphs} + \bbobppfigdimlegend{$f_1$ and $f_{24}$} + } +\end{figure*} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Table showing the average runtime (aRT in number of function +% evaluations) divided by the best aRT measured during BBOB-2009 (given in the +% first row of each cell) for functions $f_1$--$f_{24}$. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*} +\centering {\tiny +\parbox{0.499\textwidth}{\centering + {\small 80-D}\\ + \input{\bbobdatapath\algfolder pptable_80D_noiselessall}}% +\parbox{0.499\textwidth}{\centering + {\small 320-D}\\ + \input{\bbobdatapath\algfolder pptable_320D_noiselessall}}}% + \caption[Table of aRTs]{\label{tab:aRTs}\bbobpptablecaption{} +} +\end{table*} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Empirical cumulative distribution functions (ECDFs) per function group. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\rot}[2][2.5]{ + \hspace*{-3.5\baselineskip}% + \begin{rotate}{90}\hspace{#1em}#2 + \end{rotate}} +\begin{figure*} +\begin{tabular}{l@{\hspace*{-0.025\textwidth}}l@{\hspace*{-0.00\textwidth}}|l@{\hspace*{-0.025\textwidth}}l} +\multicolumn{2}{c}{$D=80$} & \multicolumn{2}{c}{$D=320$}\\[-0.5ex] +\rot{separable fcts} +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_separ} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_separ} & +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_separ} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_separ} \\[-2ex] +\rot[1]{misc.\ moderate fcts} +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_lcond} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_lcond} & +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_lcond} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_lcond} \\[-2ex] +\rot[1.3]{ill-conditioned fcts} +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_hcond} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_hcond} & +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_hcond} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_hcond} \\[-2ex] +\rot[1.6]{multi-modal fcts} +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_multi} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_multi} & +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_multi} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_multi} \\[-2ex] +\rot[1.0]{weak structure fcts} +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_mult2} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_mult2} & +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_mult2} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_mult2}\\[-2ex] +\rot{all functions} +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_noiselessall} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_noiselessall} & +\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_noiselessall} & +\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_noiselessall} +\vspace*{-0.5ex} +\end{tabular} +\caption{\label{fig:RLDs} + \bbobpprldistrlegend{} + } +\end{figure*} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% aRT loss ratios (figure and table) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure} +\centering +\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_noiselessall}% +\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_noiselessall}% +\\[-6.2ex] +\parbox{0.49\columnwidth}{\centering 80-D}% +\parbox{0.49\columnwidth}{\centering 320-D}\\[5ex] +% +\input{\bbobdatapath\algfolder pploglosstable_80D_noiselessall}\\ +\input{\bbobdatapath\algfolder pploglosstable_320D_noiselessall} +\caption{\label{tab:aRTloss}% +\bbobloglosstablecaption{} +} +\end{figure} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% aRT loss ratios per function group + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure} +\begin{tabular}{@{}l@{}@{}l@{}} +\multicolumn{1}{c}{80-D} & \multicolumn{1}{c}{320-D}\\ +%\rot{all functions} +%\hspace*{-2mm} +\rot{separable fcts} +\hspace*{-2mm} +\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_separ} & +\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_separ}\\[-2ex] +\rot[2]{moderate fcts} +\hspace*{-2mm} +\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_lcond} & +\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_lcond}\\[-2ex] +\rot[1.3]{ill-conditioned fcts} +\hspace*{-2mm} +\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_hcond} & +\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_hcond}\\[-2ex] +\rot[1.6]{multi-modal fcts} +\hspace*{-2mm} +\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_multi} & +\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_multi}\\[-2ex] +\rot[1.0]{weak structure fcts} +\hspace*{-2mm} +\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_mult2} & +\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_mult2} +\vspace*{-0.5ex} +\end{tabular} +\caption{\label{fig:aRTlogloss}% + \bbobloglossfigurecaption{} +} +\end{figure} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\section{Discussion} % and or conclusion, summary... +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% +% The following two commands are all you need in the +% initial runs of your .tex file to +% produce the bibliography for the citations in your paper. +\bibliographystyle{abbrv} +\bibliography{bbob} % bbob.bib is the name of the Bibliography in this case +% You must have a proper ".bib" file +% and remember to run: +% latex bibtex latex latex +% to resolve all references +% to create the ~.bbl file. Insert that ~.bbl file into +% the .tex source file and comment out +% the command \texttt{{\char'134}thebibliography}. +% +% ACM needs 'a single self-contained file'! +% + +\clearpage % otherwise the last figure might be missing +\end{document} diff --git a/code-postprocessing/latex-templates/templateBBOBLScmp.tex b/code-postprocessing/latex-templates/templateBBOBLScmp.tex new file mode 100644 index 000000000..7bb28249c --- /dev/null +++ b/code-postprocessing/latex-templates/templateBBOBLScmp.tex @@ -0,0 +1,481 @@ +% This is "sig-alternate.tex" V2.1 April 2013 +% This file should be compiled with V2.5 of "sig-alternate.cls" May 2012 +% +% This example file demonstrates the use of the 'sig-alternate.cls' +% V2.5 LaTeX2e document class file. It is for those submitting +% articles to ACM Conference Proceedings WHO DO NOT WISH TO +% STRICTLY ADHERE TO THE SIGS (PUBS-BOARD-ENDORSED) STYLE. +% The 'sig-alternate.cls' file will produce a similar-looking, +% albeit, 'tighter' paper resulting in, invariably, fewer pages. +% +% ---------------------------------------------------------------------------------------------------------------- +% This .tex file (and associated .cls V2.5) produces: +% 1) The Permission Statement +% 2) The Conference (location) Info information +% 3) The Copyright Line with ACM data +% 4) NO page numbers +% +% as against the acm_proc_article-sp.cls file which +% DOES NOT produce 1) thru' 3) above. +% +% Using 'sig-alternate.cls' you have control, however, from within +% the source .tex file, over both the CopyrightYear +% (defaulted to 200X) and the ACM Copyright Data +% (defaulted to X-XXXXX-XX-X/XX/XX). +% e.g. +% \CopyrightYear{2007} will cause 2007 to appear in the copyright line. +% \crdata{0-12345-67-8/90/12} will cause 0-12345-67-8/90/12 to appear in the copyright line. +% +% --------------------------------------------------------------------------------------------------------------- +% This .tex source is an example which *does* use +% the .bib file (from which the .bbl file % is produced). +% REMEMBER HOWEVER: After having produced the .bbl file, +% and prior to final submission, you *NEED* to 'insert' +% your .bbl file into your source .tex file so as to provide +% ONE 'self-contained' source file. +% +% ================= IF YOU HAVE QUESTIONS ======================= +% Questions regarding the SIGS styles, SIGS policies and +% procedures, Conferences etc. should be sent to +% Adrienne Griscti (griscti@acm.org) +% +% Technical questions _only_ to +% Gerald Murray (murray@hq.acm.org) +% +% Technical questions related to COCO/BBOB to bbob@lri.fr +% =============================================================== +% +% For tracking purposes - this is V2.0 - May 2012 + +\documentclass{sig-alternate} +\pdfpagewidth=8.5in +\pdfpageheight=11in +\special{papersize=8.5in,11in} + \renewcommand{\topfraction}{1} % max fraction of floats at top + \renewcommand{\bottomfraction}{1} % max fraction of floats at bottom + % Parameters for TEXT pages (not float pages): + \setcounter{topnumber}{3} + \setcounter{bottomnumber}{3} + \setcounter{totalnumber}{3} % 2 may work better + \setcounter{dbltopnumber}{4} % for 2-column pages + \renewcommand{\dbltopfraction}{1} % fit big float above 2-col. text + \renewcommand{\textfraction}{0.0} % allow minimal text w. figs + % Parameters for FLOAT pages (not text pages): + \renewcommand{\floatpagefraction}{0.80} % require fuller float pages + % N.B.: floatpagefraction MUST be less than topfraction !! + \renewcommand{\dblfloatpagefraction}{0.7} % require fuller float pages + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages +\usepackage{graphicx} +\usepackage{tabularx} +\usepackage[dvipsnames]{xcolor} +\usepackage{float} +\usepackage{rotating} +\usepackage{xstring} % for string operations +\usepackage{wasysym} % Table legend with symbols input from post-processing +\usepackage{MnSymbol} % Table legend with symbols input from post-processing +%\usepackage[hidelinks]{hyperref} % make COCO papers clickable + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Definitions + +% specify acronyms for algorithm1 (1st arg. of post-processing) and algorithm2 (2nd arg.) +%\newcommand{\algorithmA}{algorithmB} % first argument in the post-processing +%\newcommand{\algorithmB}{algorithmB} % second argument in the post-processing +% for the short acronyms in the tables, adjust the following to lines if required. +%\newcommand{\algorithmAshort}{algA} % first argument in the post-processing +%\newcommand{\algorithmBshort}{algB} % second argument in the post-processing + +% location of pictures files +\newcommand{\bbobdatapath}{ppdata/} +\input{\bbobdatapath bbob_pproc_commands.tex} +\graphicspath{{\bbobdatapath}} + +% pre-defined commands +\newcommand{\DIM}{\ensuremath{\mathrm{DIM}}} +\newcommand{\aRT}{\ensuremath{\mathrm{aRT}}} +\newcommand{\FEvals}{\ensuremath{\mathrm{FEvals}}} +\newcommand{\nruns}{\ensuremath{\mathrm{Nruns}}} +\newcommand{\Dfb}{\ensuremath{\Delta f_{\mathrm{best}}}} +\newcommand{\Df}{\ensuremath{\Delta f}} +\newcommand{\nbFEs}{\ensuremath{\mathrm{\#FEs}}} +\newcommand{\fopt}{\ensuremath{f_\mathrm{opt}}} +\newcommand{\ftarget}{\ensuremath{f_\mathrm{t}}} +\newcommand{\CrE}{\ensuremath{\mathrm{CrE}}} +\newcommand{\change}[1]{{\color{red} #1}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{document} + +% +% --- Author Metadata here --- +\conferenceinfo{GECCO'13,} {July 6-10, 2013, Amsterdam, The Netherlands.} +\CopyrightYear{2013} +\crdata{TBA} +\clubpenalty=10000 +\widowpenalty = 10000 +% --- End of Author Metadata --- + +\title{Black-Box Optimization Benchmarking Template for the Comparison of Two Algorithms on the Noiseless Testbed} +\subtitle{Draft version +\titlenote{Submission deadline: March 28th.}} +%Camera-ready paper due April 16th.}} + +% +% You need the command \numberofauthors to handle the 'placement +% and alignment' of the authors beneath the title. +% +% For aesthetic reasons, we recommend 'three authors at a time' +% i.e. three 'name/affiliation blocks' be placed beneath the title. +% +% NOTE: You are NOT restricted in how many 'rows' of +% "name/affiliations" may appear. We just ask that you restrict +% the number of 'columns' to three. +% +% Because of the available 'opening page real-estate' +% we ask you to refrain from putting more than six authors +% (two rows with three columns) beneath the article title. +% More than six makes the first-page appear very cluttered indeed. +% +% Use the \alignauthor commands to handle the names +% and affiliations for an 'aesthetic maximum' of six authors. +% Add names, affiliations, addresses for +% the seventh etc. author(s) as the argument for the +% \additionalauthors command. +% These 'additional authors' will be output/set for you +% without further effort on your part as the last section in +% the body of your article BEFORE References or any Appendices. + +\numberofauthors{1} % in this sample file, there are a *total* +% of EIGHT authors. SIX appear on the 'first-page' (for formatting +% reasons) and the remaining two appear in the \additionalauthors section. +% +\author{ +% You can go ahead and credit any number of authors here, +% e.g. one 'row of three' or two rows (consisting of one row of three +% and a second row of one, two or three). +% +% The command \alignauthor (no curly braces needed) should +% precede each author name, affiliation/snail-mail address and +% e-mail address. Additionally, tag each line of +% affiliation/address with \affaddr, and tag the +% e-mail address with \email. +% +% 1st. author +\alignauthor +Forename Name\\ %\titlenote{Dr.~Trovato insisted his name be first.}\\ +% \affaddr{Institute for Clarity in Documentation}\\ +% \affaddr{1932 Wallamaloo Lane}\\ +% \affaddr{Wallamaloo, New Zealand}\\ +% \email{trovato@corporation.com} +%% 2nd. author +%\alignauthor +%G.K.M. Tobin\titlenote{The secretary disavows +%any knowledge of this author's actions.}\\ +% \affaddr{Institute for Clarity in Documentation}\\ +% \affaddr{P.O. Box 1212}\\ +% \affaddr{Dublin, Ohio 43017-6221}\\ +% \email{webmaster@marysville-ohio.com} +%% 3rd. author +%\alignauthor Lars Th{\o}rv{\"a}ld\titlenote{This author is the +%one who did all the really hard work.}\\ +% \affaddr{The Th{\o}rv{\"a}ld Group}\\ +% \affaddr{1 Th{\o}rv{\"a}ld Circle}\\ +% \affaddr{Hekla, Iceland}\\ +% \email{larst@affiliation.org} +%\and % use '\and' if you need 'another row' of author names +%% 4th. author +%\alignauthor Lawrence P. Leipuner\\ +% \affaddr{Brookhaven Laboratories}\\ +% \affaddr{Brookhaven National Lab}\\ +% \affaddr{P.O. Box 5000}\\ +% \email{lleipuner@researchlabs.org} +%% 5th. author +%\alignauthor Sean Fogarty\\ +% \affaddr{NASA Ames Research Center}\\ +% \affaddr{Moffett Field}\\ +% \affaddr{California 94035}\\ +% \email{fogartys@amesres.org} +%% 6th. author +%\alignauthor Charles Palmer\\ +% \affaddr{Palmer Research Laboratories}\\ +% \affaddr{8600 Datapoint Drive}\\ +% \affaddr{San Antonio, Texas 78229}\\ +% \email{cpalmer@prl.com} +} % author +%% There's nothing stopping you putting the seventh, eighth, etc. +%% author on the opening page (as the 'third row') but we ask, +%% for aesthetic reasons that you place these 'additional authors' +%% in the \additional authors block, viz. +%\additionalauthors{Additional authors: John Smith (The Th{\o}rv{\"a}ld Group, +%email: {\texttt{jsmith@affiliation.org}}) and Julius P.~Kumquat +%(The Kumquat Consortium, email: {\texttt{jpkumquat@consortium.net}}).} +%\date{30 July 1999} +%% Just remember to make sure that the TOTAL number of authors +%% is the number that will appear on the first page PLUS the +%% number that will appear in the \additionalauthors section. + +\maketitle +\begin{abstract} +to be written +\end{abstract} + +% Add any ACM category that you feel is needed, not mandatory anymore +%\category{G.1.6}{Numerical Analysis}{Optimization}[global optimization, +%unconstrained optimization] +%\category{F.2.1}{Analysis of Algorithms and Problem Complexity}{Numerical Algorithms and Problems} + +% Complete with anything that is needed +\terms{Algorithms} + +% Complete with anything that is needed +\keywords{Benchmarking, Black-box optimization} + +% \section{Introduction} +% +% \section{Algorithm Presentation} +% +% \section{Experimental Procedure} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{CPU Timing} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% note that the following text is just a proposal and can/should be changed to your needs: +In order to evaluate the CPU timing of the algorithm, we have run the \change{MY-ALGORITHM-NAME} on the \change{bbob test suite \cite{hansen2009fun}} with restarts for a maximum budget equal to \change{$400 (D + 2)$} function evaluations. The code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. + +\change{repeat the above for the second algorithm} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Results} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Results from experiments according to \cite{hansen2016exp} and \cite{hansen2016perfass} on the benchmark +functions given in \cite{wp200901_2010,hansen2012fun} are presented in +Figures~\ref{fig:scaling}, \ref{fig:scatterplots} and \ref{fig:RLDs} and +in Table~\ref{tab:aRTs}. The experiments were performed with COCO \cite{hansen2016cocoplat}, +version \change{1.0.1}, the plots were produced with version \change{1.0.4}. + +The \textbf{average runtime (aRT)}, used in the figures and table, depends on a +given target function value, $\ftarget=\fopt+\Df$, and is computed over all relevant trials +as the number of function evaluations executed during each trial while the best +function value did not reach \ftarget, summed over all trials +and divided by the number of trials that actually reached \ftarget\ +\cite{hansen2012exp,price1997dev}. +\textbf{Statistical significance} is tested with the rank-sum test for a given +target $\Delta\ftarget$ ($10^{-8}$ as in Figure~\ref{fig:scaling}) using, +for each trial, either the number of needed function evaluations to reach +$\Delta\ftarget$ (inverted and multiplied by $-1$), or, if the target was not +reached, the best $\Df$-value achieved, measured only up to the smallest number +of overall function evaluations for any unsuccessful trial under consideration. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Scaling of aRT with dimension + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} +\centering +\begin{tabular}{@{}c@{}c@{}c@{}c@{}} +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f001}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f002}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f003}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f004}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f005}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f006}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f007}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f008}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f009}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f010}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f011}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f012}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f013}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f014}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f015}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f016}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f017}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f018}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f019}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f020}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f021}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f022}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f023}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f024} +\end{tabular} +\vspace*{-0.2cm} +\caption[Expected running time divided by dimension versus dimension]{ +\label{fig:scaling} +\bbobppfigslegend{$f_1$ and $f_{24}$}. % note: \algorithmA and \algorithmB can be defined above +} +% +\end{figure*} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Scatter plots per function. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\rot}[2][2.5]{ + \hspace*{-3.5\baselineskip}% + \begin{rotate}{90}\hspace{#1em}#2 + \end{rotate}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{figure*} +\begin{tabular}{*{4}{@{}c@{}}} +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 1 Sphere\hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f001}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 2 Ellipsoid separable\hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f002}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 3 Rastrigin separable\hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f003}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 4 Skew Rastrigin-Bueche\hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f004}\\[-2.2ex] +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 5 Linear slope \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f005}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 6 Attractive sector \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f006}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 7 Step-ellipsoid \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f007}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 8 Rosenbrock original \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f008}\\[-2.2ex] +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 9 Rosenbrock rotated \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f009}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 10 Ellipsoid \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f010}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 11 Discus \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f011}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 12 Bent cigar \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f012}\\[-2.2ex] +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 13 Sharp ridge \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f013}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf~~14 Sum of diff.\ powers \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f014}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 15 Rastrigin \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f015}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 16 Weierstrass \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f016}\\[-2.2ex] +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 17 Schaffer F7, cond.10 \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f017}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 18 Schaffer F7, cond.1000 \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f018}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 19 Griewank-Rosenbrock \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f019}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 20 Schwefel x*sin(x) \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f020}\\[-2.2ex] +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 21 Gallagher 101 peaks \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f021}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 22 Gallagher 21 peaks \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f022}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 23 Katsuuras \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f023}& +\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 24 Lunacek bi-Rastrigin \hfill~}\end{turn} + \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f024} +\end{tabular} +\caption{\label{fig:scatterplots} +\bbobppscatterlegend{$f_1$--$f_{24}$} +} +\end{figure*} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Empirical cumulative distribution functions (ECDFs) per function group. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} + \begin{tabular}{l@{\hspace*{-0.025\textwidth}}l|l@{\hspace*{-0.025\textwidth}}l} + \multicolumn{2}{c}{80-D} & \multicolumn{2}{c}{320-D} \\ + \rot{separable fcts} + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_separ} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_separ} & + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_separ} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_separ} \\ + \rot[2]{moderate fcts} + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_lcond} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_lcond} & + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_lcond} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_lcond}\\ + \rot[1.3]{ill-conditioned fcts} + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_hcond} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_hcond} & + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_hcond} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_hcond} \\ + \rot[1.6]{multi-modal fcts} + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_multi} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_multi} & + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_multi} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_multi} \\ + \rot[1.0]{weak structure fcts} + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_mult2} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_mult2} & + \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_mult2} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_mult2}\\ + \rot{all functions} + \includegraphics[width=0.268\textwidth,trim=0cm 0mm 0mm 15mm, clip]{pprldistr_80D_noiselessall} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_noiselessall} & + \includegraphics[width=0.268\textwidth,trim=0cm 0mm 0mm 15mm, clip]{pprldistr_320D_noiselessall} & + \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_noiselessall} + \end{tabular} +\vspace*{-0.2cm} + \caption{\label{fig:RLDs} + \bbobpprldistrlegendtwo{} + } +\end{figure*} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Table showing the average runtime (aRT in number of function +% evaluations) divided by the best aRT measured during BBOB-2009 (given in the +% first row of each cell) for functions $f_1$--$f_{24}$. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*} +\centering +\hfill80-D\hfill320-D\hfill~\\[1ex] +\tiny +\mbox{ +\input{\bbobdatapath pptable2_80D_noiselessall}\hfill% +\input{\bbobdatapath pptable2_320D_noiselessall}} +\caption{\label{tab:aRTs} +\bbobpptablestwolegend{48} +} +\end{table*} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% The following two commands are all you need in the +% initial runs of your .tex file to +% produce the bibliography for the citations in your paper. +\bibliographystyle{abbrv} +\bibliography{bbob} % bbob.bib is the name of the Bibliography in this case +% You must have a proper ".bib" file +% and remember to run: +% latex bibtex latex latex +% to resolve all references +% to create the ~.bbl file. Insert that ~.bbl file into +% the .tex source file and comment out +% the command \texttt{{\char'134}thebibliography}. +% +% ACM needs 'a single self-contained file'! +% + +% \clearpage % otherwise the last figure might be missing +\end{document} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/code-postprocessing/latex-templates/templateBBOBLSmany.tex b/code-postprocessing/latex-templates/templateBBOBLSmany.tex new file mode 100644 index 000000000..f6d6ea1a5 --- /dev/null +++ b/code-postprocessing/latex-templates/templateBBOBLSmany.tex @@ -0,0 +1,558 @@ +% This is "sig-alternate.tex" V2.1 April 2013 +% This file should be compiled with V2.5 of "sig-alternate.cls" May 2012 +% +% This example file demonstrates the use of the 'sig-alternate.cls' +% V2.5 LaTeX2e document class file. It is for those submitting +% articles to ACM Conference Proceedings WHO DO NOT WISH TO +% STRICTLY ADHERE TO THE SIGS (PUBS-BOARD-ENDORSED) STYLE. +% The 'sig-alternate.cls' file will produce a similar-looking, +% albeit, 'tighter' paper resulting in, invariably, fewer pages. +% +% ---------------------------------------------------------------------------------------------------------------- +% This .tex file (and associated .cls V2.5) produces: +% 1) The Permission Statement +% 2) The Conference (location) Info information +% 3) The Copyright Line with ACM data +% 4) NO page numbers +% +% as against the acm_proc_article-sp.cls file which +% DOES NOT produce 1) thru' 3) above. +% +% Using 'sig-alternate.cls' you have control, however, from within +% the source .tex file, over both the CopyrightYear +% (defaulted to 200X) and the ACM Copyright Data +% (defaulted to X-XXXXX-XX-X/XX/XX). +% e.g. +% \CopyrightYear{2007} will cause 2007 to appear in the copyright line. +% \crdata{0-12345-67-8/90/12} will cause 0-12345-67-8/90/12 to appear in the copyright line. +% +% --------------------------------------------------------------------------------------------------------------- +% This .tex source is an example which *does* use +% the .bib file (from which the .bbl file % is produced). +% REMEMBER HOWEVER: After having produced the .bbl file, +% and prior to final submission, you *NEED* to 'insert' +% your .bbl file into your source .tex file so as to provide +% ONE 'self-contained' source file. +% +% ================= IF YOU HAVE QUESTIONS ======================= +% Questions regarding the SIGS styles, SIGS policies and +% procedures, Conferences etc. should be sent to +% Adrienne Griscti (griscti@acm.org) +% +% Technical questions _only_ to +% Gerald Murray (murray@hq.acm.org) +% +% Technical questions related to COCO/BBOB to bbob@lri.fr +% =============================================================== +% +% For tracking purposes - this is V2.0 - May 2012 + +\documentclass{sig-alternate} +\pdfpagewidth=8.5in +\pdfpageheight=11in +\special{papersize=8.5in,11in} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages +\usepackage{graphicx} +\usepackage{tabularx} +\usepackage[dvipsnames]{xcolor} +\usepackage{float} +\usepackage{rotating} +\usepackage{xstring} % for string operations +\usepackage{wasysym} % Table legend with symbols input from post-processing +\usepackage{MnSymbol} % Table legend with symbols input from post-processing +%\usepackage[hidelinks]{hyperref} % make COCO papers clickable + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Definitions + +% Algorithm names on the right of the ECDF figures can be modified by +% uncommenting the following lines and inputting some text in the last +% brackets, make sure the algorithms are in the same order as for the post-processing: +% \newcommand{\algaperfprof}{Algorithm a short name} +% \newcommand{\algbperfprof}{Algorithm b short name} +% \newcommand{\algcperfprof}{Algorithm c short name} +% \newcommand{\algdperfprof}{Algorithm c short name} +% ... +% Algorithm names as they appear in the tables, uncomment if necessary +% \newcommand{\algatables}{\algaperfprof} % first argument in the post-processing +% \newcommand{\algbtables}{\algbperfprof} % first argument in the post-processing +% \newcommand{\algctables}{\algcperfprof} % first argument in the post-processing +% \newcommand{\algdtables}{\algdperfprof} % second argument in the post-processing +% ... +% location of pictures files +\newcommand{\bbobdatapath}{ppdata/} +\input{\bbobdatapath bbob_pproc_commands.tex} +\graphicspath{{\bbobdatapath}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% pre-defined commands +\newcommand{\DIM}{\ensuremath{\mathrm{DIM}}} +\newcommand{\aRT}{\ensuremath{\mathrm{aRT}}} +\newcommand{\FEvals}{\ensuremath{\mathrm{FEvals}}} +\newcommand{\nruns}{\ensuremath{\mathrm{Nruns}}} +\newcommand{\Dfb}{\ensuremath{\Delta f_{\mathrm{best}}}} +\newcommand{\Df}{\ensuremath{\Delta f}} +\newcommand{\nbFEs}{\ensuremath{\mathrm{\#FEs}}} +\newcommand{\fopt}{\ensuremath{f_\mathrm{opt}}} +\newcommand{\ftarget}{\ensuremath{f_\mathrm{t}}} +\newcommand{\CrE}{\ensuremath{\mathrm{CrE}}} +\newcommand{\change}[1]{{\color{red} #1}} + + \renewcommand{\topfraction}{1} % max fraction of floats at top + \renewcommand{\bottomfraction}{1} % max fraction of floats at bottom + % Parameters for TEXT pages (not float pages): + \setcounter{topnumber}{3} + \setcounter{bottomnumber}{3} + \setcounter{totalnumber}{3} % 2 may work better + \setcounter{dbltopnumber}{4} % for 2-column pages + \renewcommand{\dbltopfraction}{1} % fit big float above 2-col. text + \renewcommand{\textfraction}{0.0} % allow minimal text w. figs + % Parameters for FLOAT pages (not text pages): + \renewcommand{\floatpagefraction}{0.80} % require fuller float pages + % N.B.: floatpagefraction MUST be less than topfraction !! + \renewcommand{\dblfloatpagefraction}{0.7} % require fuller float pages + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{document} + + +% +% --- Author Metadata here --- +\conferenceinfo{GECCO'13,} {July 6-10, 2013, Amsterdam, The Netherlands.} +\CopyrightYear{2013} +\crdata{TBA} +\clubpenalty=10000 +\widowpenalty = 10000 +% --- End of Author Metadata --- + +\title{Black-Box Optimization Benchmarking Template for the Comparison of More than Two Algorithms on the Noiseless Testbed} +\subtitle{Draft version +\titlenote{Submission deadline: March 28th.}} +%Camera-ready paper due April 16th.}} + +% +% You need the command \numberofauthors to handle the 'placement +% and alignment' of the authors beneath the title. +% +% For aesthetic reasons, we recommend 'three authors at a time' +% i.e. three 'name/affiliation blocks' be placed beneath the title. +% +% NOTE: You are NOT restricted in how many 'rows' of +% "name/affiliations" may appear. We just ask that you restrict +% the number of 'columns' to three. +% +% Because of the available 'opening page real-estate' +% we ask you to refrain from putting more than six authors +% (two rows with three columns) beneath the article title. +% More than six makes the first-page appear very cluttered indeed. +% +% Use the \alignauthor commands to handle the names +% and affiliations for an 'aesthetic maximum' of six authors. +% Add names, affiliations, addresses for +% the seventh etc. author(s) as the argument for the +% \additionalauthors command. +% These 'additional authors' will be output/set for you +% without further effort on your part as the last section in +% the body of your article BEFORE References or any Appendices. + +\numberofauthors{1} % in this sample file, there are a *total* +% of EIGHT authors. SIX appear on the 'first-page' (for formatting +% reasons) and the remaining two appear in the \additionalauthors section. +% +\author{ +% You can go ahead and credit any number of authors here, +% e.g. one 'row of three' or two rows (consisting of one row of three +% and a second row of one, two or three). +% +% The command \alignauthor (no curly braces needed) should +% precede each author name, affiliation/snail-mail address and +% e-mail address. Additionally, tag each line of +% affiliation/address with \affaddr, and tag the +% e-mail address with \email. +% +% 1st. author +\alignauthor +Forename Name\\ %\titlenote{Dr.~Trovato insisted his name be first.}\\ +% \affaddr{Institute for Clarity in Documentation}\\ +% \affaddr{1932 Wallamaloo Lane}\\ +% \affaddr{Wallamaloo, New Zealand}\\ +% \email{trovato@corporation.com} +%% 2nd. author +%\alignauthor +%G.K.M. Tobin\titlenote{The secretary disavows +%any knowledge of this author's actions.}\\ +% \affaddr{Institute for Clarity in Documentation}\\ +% \affaddr{P.O. Box 1212}\\ +% \affaddr{Dublin, Ohio 43017-6221}\\ +% \email{webmaster@marysville-ohio.com} +%% 3rd. author +%\alignauthor Lars Th{\o}rv{\"a}ld\titlenote{This author is the +%one who did all the really hard work.}\\ +% \affaddr{The Th{\o}rv{\"a}ld Group}\\ +% \affaddr{1 Th{\o}rv{\"a}ld Circle}\\ +% \affaddr{Hekla, Iceland}\\ +% \email{larst@affiliation.org} +%\and % use '\and' if you need 'another row' of author names +%% 4th. author +%\alignauthor Lawrence P. Leipuner\\ +% \affaddr{Brookhaven Laboratories}\\ +% \affaddr{Brookhaven National Lab}\\ +% \affaddr{P.O. Box 5000}\\ +% \email{lleipuner@researchlabs.org} +%% 5th. author +%\alignauthor Sean Fogarty\\ +% \affaddr{NASA Ames Research Center}\\ +% \affaddr{Moffett Field}\\ +% \affaddr{California 94035}\\ +% \email{fogartys@amesres.org} +%% 6th. author +%\alignauthor Charles Palmer\\ +% \affaddr{Palmer Research Laboratories}\\ +% \affaddr{8600 Datapoint Drive}\\ +% \affaddr{San Antonio, Texas 78229}\\ +% \email{cpalmer@prl.com} +} % author +%% There's nothing stopping you putting the seventh, eighth, etc. +%% author on the opening page (as the 'third row') but we ask, +%% for aesthetic reasons that you place these 'additional authors' +%% in the \additional authors block, viz. +%\additionalauthors{Additional authors: John Smith (The Th{\o}rv{\"a}ld Group, +%email: {\texttt{jsmith@affiliation.org}}) and Julius P.~Kumquat +%(The Kumquat Consortium, email: {\texttt{jpkumquat@consortium.net}}).} +%\date{30 July 1999} +%% Just remember to make sure that the TOTAL number of authors +%% is the number that will appear on the first page PLUS the +%% number that will appear in the \additionalauthors section. + +\maketitle +\begin{abstract} +to be written +\end{abstract} + +% Add any ACM category that you feel is needed, not mandatory anymore +%\category{G.1.6}{Numerical Analysis}{Optimization}[global optimization, +%unconstrained optimization] +%\category{F.2.1}{Analysis of Algorithms and Problem Complexity}{Numerical Algorithms and Problems} + +% Complete with anything that is needed +\terms{Algorithms} + +% Complete with anything that is needed +\keywords{Benchmarking, Black-box optimization} + +% \section{Introduction} +% +% \section{Algorithm Presentation} +% +% \section{Experimental Procedure} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{CPU Timing} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% note that the following text is just a proposal and can/should be changed to your needs: +In order to evaluate the CPU timing of the algorithm, we have run the \change{MY-ALGORITHM-NAME} on the \change{bbob test suite \cite{hansen2009fun}} with restarts for a maximum budget equal to \change{$400 (D + 2)$} function evaluations. The code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. + +\change{repeat the above for any algorithm tested} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Results} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Results from experiments according to \cite{hansen2016exp} and \cite{hansen2016perfass} on the +benchmark functions given in \cite{wp200901_2010,hansen2012fun} are +presented in Figures~\ref{fig:scaling}, \ref{fig:ECDFs05D} and +\ref{fig:ECDFs320D} and in Tables~\ref{tab:aRTs5} and~\ref{tab:aRTs20}. +The experiments were performed with COCO \cite{hansen2016cocoplat}, version +\change{1.0.1}, the plots were produced with version \change{1.0.4}. + +The \textbf{average runtime (aRT)}, used in the figures and tables, +depends on a given target function value, $\ftarget=\fopt+\Df$, and is +computed over all relevant trials as the number of function +evaluations executed during each trial while the best function value +did not reach \ftarget, summed over all trials and divided by the +number of trials that actually reached \ftarget\ +\cite{hansen2012exp,price1997dev}. \textbf{Statistical significance} +is tested with the rank-sum test for a given target $\Delta\ftarget$ +%($10^{-8}$ as in Figure~\ref{fig:scaling}) +using, for each trial, +either the number of needed function evaluations to reach +$\Delta\ftarget$ (inverted and multiplied by $-1$), or, if the target +was not reached, the best $\Df$-value achieved, measured only up to +the smallest number of overall function evaluations for any +unsuccessful trial under consideration. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Scaling of aRT with dimension + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} +\centering +\begin{tabular}{@{}c@{}c@{}c@{}c@{}} +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f001}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f002}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f003}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f004}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f005}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f006}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f007}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f008}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f009}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f010}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f011}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f012}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f013}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f014}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f015}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f016}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f017}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f018}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f019}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f020}\\ +\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f021}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f022}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f023}& +\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f024} +\end{tabular} +\vspace*{-0.2cm} +\caption[Expected running time divided by dimension +versus dimension]{ +\label{fig:scaling} +% command defined in bbob_pproc_commands.tex: +\bbobppfigslegend{$f_1$ and $f_{24}$} % \algorithmA can be defined above, see above +} +% +\end{figure*} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Empirical Cumulative Distribution Functions (ECDFs) per function group +% for dimension 5. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\rot}[2][2.5]{ + \hspace*{-3.5\baselineskip}% + \begin{rotate}{90}\hspace{#1em}#2 + \end{rotate}} +\newcommand{\includeperfprof}[1]{% include and annotate at the side + \input{\bbobdatapath #1}% + \includegraphics[width=0.4135\textwidth,trim=0mm 0mm 34mm 10mm, clip]{#1}% + \raisebox{.037\textwidth}{\parbox[b][.3\textwidth]{.0868\textwidth}{\begin{scriptsize} + \perfprofsidepanel % this is "\algaperfprof \vfill \algbperfprof \vfill" etc + \end{scriptsize}}} +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} +\begin{tabular}{@{}c@{}c@{}} + separable fcts & moderate fcts \\ + \includeperfprof{pprldmany_80D_separ} & + \includeperfprof{pprldmany_80D_lcond} \\ +ill-conditioned fcts & multi-modal fcts \\ + \includeperfprof{pprldmany_80D_hcond} & + \includeperfprof{pprldmany_80D_multi} \\ + weakly structured multi-modal fcts & all functions\\ + \includeperfprof{pprldmany_80D_mult2} & + \includeperfprof{pprldmany_80D_noiselessall} + \end{tabular} +\caption{ +\label{fig:ECDFs80D} +\bbobECDFslegend{80} +} +\end{figure*} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Empirical Cumulative Distribution Functions (ECDFs) per function group +% for dimension 20. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} + \begin{tabular}{@{}c@{}c@{}} + separable fcts & moderate fcts \\ + \includeperfprof{pprldmany_320D_separ} & + \includeperfprof{pprldmany_320D_lcond} \\ +ill-conditioned fcts & multi-modal fcts \\ + \includeperfprof{pprldmany_320D_hcond} & + \includeperfprof{pprldmany_320D_multi} \\ + weakly structured multi-modal fcts & all functions\\ + \includeperfprof{pprldmany_320D_mult2} & + \includeperfprof{pprldmany_320D_noiselessall} + \end{tabular} +\caption{ +\label{fig:ECDFs320D} +\bbobECDFslegend{320} +} +\end{figure*} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Average runtime (aRT in number of function evaluations) +% divided by the best aRT measured during BBOB-2009 (given in the respective +% first row) for functions $f_1$--$f_{24}$ for dimension 5. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*}\tiny +%\hfill5-D\hfill~\\[1ex] +\mbox{\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\input{\bbobdatapath pptables_f001_80D} + +\input{\bbobdatapath pptables_f002_80D} + +\input{\bbobdatapath pptables_f003_80D} + +\input{\bbobdatapath pptables_f004_80D} + +\input{\bbobdatapath pptables_f005_80D} + +\input{\bbobdatapath pptables_f006_80D} + +\input{\bbobdatapath pptables_f007_80D} + +\input{\bbobdatapath pptables_f008_80D} + +\input{\bbobdatapath pptables_f009_80D} + +\input{\bbobdatapath pptables_f010_80D} + +\input{\bbobdatapath pptables_f011_80D} + +\input{\bbobdatapath pptables_f012_80D} + +\end{minipage} +\hspace{0.002\textwidth} +\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\input{\bbobdatapath pptables_f013_80D} + +\input{\bbobdatapath pptables_f014_80D} + +\input{\bbobdatapath pptables_f015_80D} + +\input{\bbobdatapath pptables_f016_80D} + +\input{\bbobdatapath pptables_f017_80D} + +\input{\bbobdatapath pptables_f018_80D} + +\input{\bbobdatapath pptables_f019_80D} + +\input{\bbobdatapath pptables_f020_80D} + +\input{\bbobdatapath pptables_f021_80D} + +\input{\bbobdatapath pptables_f022_80D} + +\input{\bbobdatapath pptables_f023_80D} + +\input{\bbobdatapath pptables_f024_80D} +\end{minipage}} + + \caption{\label{tab:aRTs80} + \bbobpptablesmanylegend{dimension $80$}{110} % Bonferroni correction: #dimensions * #functions + } +\end{table*} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Average runtime (aRT in number of function evaluations) +% divided by the best aRT measured during BBOB-2009 (given in the respective +% first row) for functions $f_1$--$f_{24}$ for dimension 20. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*}\tiny +%\hfill20-D\hfill~\\[1ex] +\mbox{\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\input{\bbobdatapath pptables_f001_320D} + +\input{\bbobdatapath pptables_f002_320D} + +\input{\bbobdatapath pptables_f003_320D} + +\input{\bbobdatapath pptables_f004_320D} + +\input{\bbobdatapath pptables_f005_320D} + +\input{\bbobdatapath pptables_f006_320D} + +\input{\bbobdatapath pptables_f007_320D} + +\input{\bbobdatapath pptables_f008_320D} + +\input{\bbobdatapath pptables_f009_320D} + +\input{\bbobdatapath pptables_f010_320D} + +\input{\bbobdatapath pptables_f011_320D} + +\input{\bbobdatapath pptables_f012_320D} +\end{minipage} +\hspace{0.002\textwidth} +\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\input{\bbobdatapath pptables_f013_320D} + +\input{\bbobdatapath pptables_f014_320D} + +\input{\bbobdatapath pptables_f015_320D} + +\input{\bbobdatapath pptables_f016_320D} + +\input{\bbobdatapath pptables_f017_320D} + +\input{\bbobdatapath pptables_f018_320D} + +\input{\bbobdatapath pptables_f019_320D} + +\input{\bbobdatapath pptables_f020_320D} + +\input{\bbobdatapath pptables_f021_320D} + +\input{\bbobdatapath pptables_f022_320D} + +\input{\bbobdatapath pptables_f023_320D} + +\input{\bbobdatapath pptables_f024_320D} +\end{minipage}} + \caption{\label{tab:aRTs320} + \bbobpptablesmanylegend{dimension $320$}{110} % Bonferroni correction: #dimensions * #functions +} +\end{table*} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% The following two commands are all you need in the +% initial runs of your .tex file to +% produce the bibliography for the citations in your paper. +\bibliographystyle{abbrv} +\bibliography{bbob} % bbob.bib is the name of the Bibliography in this case +% You must have a proper ".bib" file +% and remember to run: +% latex bibtex latex latex +% to resolve all references +% to create the ~.bbl file. Insert that ~.bbl file into +% the .tex source file and comment out +% the command \texttt{{\char'134}thebibliography}. +% +% ACM needs 'a single self-contained file'! +% + +% \clearpage % otherwise the last figure might be missing +\end{document} From fcce77a38aafd9157a9353298b1b03fbff4c5fbc Mon Sep 17 00:00:00 2001 From: NDManh Date: Wed, 6 Jul 2016 17:53:29 +0200 Subject: [PATCH 271/446] Update pptables procedure, and latex_commands_for_html.html for caption --- .../bbob_pproc/compall/pptables.py | 2 +- .../bbob_pproc/latex_commands_for_html.html | 32 +++---------------- .../bbob_pproc/preparetexforhtml.py | 5 ++- 3 files changed, 7 insertions(+), 32 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 9f3713ffe..0aaef95ff 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -675,7 +675,7 @@ def main(dictAlg, sortedAlgs, outputdir='.', verbose=True, function_targets_line res = '

%d-D

' % df[0] + res firstFunction = False - if df[0] in testbedsettings.current_testbed.tabDimsOfInterest: # Manh + if True: filename = os.path.join(outputdir, genericsettings.pptables_file_name + '.html') lines = [] diff --git a/code-postprocessing/bbob_pproc/latex_commands_for_html.html b/code-postprocessing/bbob_pproc/latex_commands_for_html.html index 5626d015f..9dc9c0142 100644 --- a/code-postprocessing/bbob_pproc/latex_commands_for_html.html +++ b/code-postprocessing/bbob_pproc/latex_commands_for_html.html @@ -356,14 +356,9 @@ is the geometric mean.
-##bbobECDFslegendlargescalefixed80## +##bbobECDFslegendlargescalefixed## -Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 80-D. - -
-##bbobECDFslegendlargescalefixed320## - -Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 320-D. +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in DIMVALUE-D.
##bbobppfigslegendlargescalefixed## @@ -453,29 +448,10 @@ following the ∗ symbol, with Bonferroni correction of 48.
-##bbobpptablesmanylegendlargescalefixed80## - -Average running time (aRT in number of function -evaluations) in -dimension 80. -The aRT and in braces, as dispersion measure, the half difference between -10 and 90%-tile of bootstrapped run lengths appear for each algorithm and -target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. -#succ is the number of trials that reached the (final) target -fopt+ 10−8. -The median number of conducted function evaluations is additionally given in -italics, if the target in the last column was never reached. -Entries, succeeded by a star, are statistically significantly better (according to -the rank-sum test) when compared to all other algorithms of the table, with -p = 0.05 or p = 10−k when the number k following the star is larger -than 1, with Bonferroni correction of 48. - -
-##bbobpptablesmanylegendlargescalefixed320## +##bbobpptablesmanylegendlargescalefixed## Average running time (aRT in number of function -evaluations) in -dimension 320. +evaluations) in different dimensions. The aRT and in braces, as dispersion measure, the half difference between 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. diff --git a/code-postprocessing/bbob_pproc/preparetexforhtml.py b/code-postprocessing/bbob_pproc/preparetexforhtml.py index d89f1f8aa..d397e4840 100644 --- a/code-postprocessing/bbob_pproc/preparetexforhtml.py +++ b/code-postprocessing/bbob_pproc/preparetexforhtml.py @@ -150,9 +150,8 @@ def main(latex_commands_for_html): # 6. pptables command_name = 'bbobpptablesmanylegend' + scenario - for dim in testbed.htmlDimsOfInterest: #['5', '20']: # Wassim: - bonferroni = str(2 * (testbed.last_function_number - testbed.first_function_number + 1)) - f.write(prepare_item_two(command_name + str(dim), command_name, 'dimension ' + str(dim), bonferroni)) + bonferroni = str(2 * (testbed.last_function_number - testbed.first_function_number + 1)) + f.write(prepare_item_two(command_name, command_name, 'different dimensions', bonferroni)) # 7. ppscatter param = '$f_{%d}$ - $f_{%d}$' % (testbed.first_function_number, testbed.last_function_number) From ddcc9aae2c955e6880c2bcdaae91e0e3d5b10b70 Mon Sep 17 00:00:00 2001 From: NDManh Date: Wed, 6 Jul 2016 17:53:29 +0200 Subject: [PATCH 272/446] Update pptables procedure, and latex_commands_for_html.html for caption --- .../bbob_pproc/compall/pptables.py | 2 +- .../bbob_pproc/latex_commands_for_html.html | 32 +++---------------- .../bbob_pproc/preparetexforhtml.py | 5 ++- 3 files changed, 7 insertions(+), 32 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 9f3713ffe..0aaef95ff 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -675,7 +675,7 @@ def main(dictAlg, sortedAlgs, outputdir='.', verbose=True, function_targets_line res = '

%d-D

' % df[0] + res firstFunction = False - if df[0] in testbedsettings.current_testbed.tabDimsOfInterest: # Manh + if True: filename = os.path.join(outputdir, genericsettings.pptables_file_name + '.html') lines = [] diff --git a/code-postprocessing/bbob_pproc/latex_commands_for_html.html b/code-postprocessing/bbob_pproc/latex_commands_for_html.html index 5626d015f..9dc9c0142 100644 --- a/code-postprocessing/bbob_pproc/latex_commands_for_html.html +++ b/code-postprocessing/bbob_pproc/latex_commands_for_html.html @@ -356,14 +356,9 @@ is the geometric mean.
-##bbobECDFslegendlargescalefixed80## +##bbobECDFslegendlargescalefixed## -Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 80-D. - -
-##bbobECDFslegendlargescalefixed320## - -Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in 320-D. +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in DIMVALUE-D.
##bbobppfigslegendlargescalefixed## @@ -453,29 +448,10 @@ following the ∗ symbol, with Bonferroni correction of 48.
-##bbobpptablesmanylegendlargescalefixed80## - -Average running time (aRT in number of function -evaluations) in -dimension 80. -The aRT and in braces, as dispersion measure, the half difference between -10 and 90%-tile of bootstrapped run lengths appear for each algorithm and -target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. -#succ is the number of trials that reached the (final) target -fopt+ 10−8. -The median number of conducted function evaluations is additionally given in -italics, if the target in the last column was never reached. -Entries, succeeded by a star, are statistically significantly better (according to -the rank-sum test) when compared to all other algorithms of the table, with -p = 0.05 or p = 10−k when the number k following the star is larger -than 1, with Bonferroni correction of 48. - -
-##bbobpptablesmanylegendlargescalefixed320## +##bbobpptablesmanylegendlargescalefixed## Average running time (aRT in number of function -evaluations) in -dimension 320. +evaluations) in different dimensions. The aRT and in braces, as dispersion measure, the half difference between 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. diff --git a/code-postprocessing/bbob_pproc/preparetexforhtml.py b/code-postprocessing/bbob_pproc/preparetexforhtml.py index d89f1f8aa..d397e4840 100644 --- a/code-postprocessing/bbob_pproc/preparetexforhtml.py +++ b/code-postprocessing/bbob_pproc/preparetexforhtml.py @@ -150,9 +150,8 @@ def main(latex_commands_for_html): # 6. pptables command_name = 'bbobpptablesmanylegend' + scenario - for dim in testbed.htmlDimsOfInterest: #['5', '20']: # Wassim: - bonferroni = str(2 * (testbed.last_function_number - testbed.first_function_number + 1)) - f.write(prepare_item_two(command_name + str(dim), command_name, 'dimension ' + str(dim), bonferroni)) + bonferroni = str(2 * (testbed.last_function_number - testbed.first_function_number + 1)) + f.write(prepare_item_two(command_name, command_name, 'different dimensions', bonferroni)) # 7. ppscatter param = '$f_{%d}$ - $f_{%d}$' % (testbed.first_function_number, testbed.last_function_number) From 76270eb62ca8fc39ab551dc5b4018da1810766f2 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 7 Jul 2016 14:52:07 +0200 Subject: [PATCH 273/446] possible fix for failed ci in pproc: commented out remainings of old cod --- code-experiments/src/logger_bbob.c | 2 +- code-postprocessing/bbob_pproc/ppfig.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index b9db048c0..77f8ecfdc 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -225,7 +225,7 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, fprintf(*target_file, "funcId = %d, DIM = %lu, Precision = %.3e, algId = '%s'\n", (int) strtol(function_id, NULL, 10), (unsigned long) logger->number_of_variables, logger->observer->target_precision, logger->observer->algorithm_name); - fprintf(*target_file, "%% coco_version = %s\n", coco_version); + /* fprintf(*target_file, "%% coco_version = %s\n", coco_version);*/ /*Wassim: does not work in current version*/ fprintf(*target_file, "%%\n"); strncat(used_dataFile_path, "_i", COCO_PATH_MAX - strlen(used_dataFile_path) - 1); strncat(used_dataFile_path, bbob_infoFile_firstInstance_char, diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index b105255d2..fa8ef0a72 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -283,8 +283,8 @@ def save_single_functions_html(filename, % genericsettings.pptables_file_name) # Wassim: kept these two instructions from older code - write_ECDF(f, testbedsettings.current_testbed.htmlDimsOfInterest[0], extension, captionStringFormat, functionGroups) - write_ECDF(f, testbedsettings.current_testbed.htmlDimsOfInterest[1], extension, captionStringFormat, functionGroups) + #write_ECDF(f, testbedsettings.current_testbed.htmlDimsOfInterest[0], extension, captionStringFormat, functionGroups) + #write_ECDF(f, testbedsettings.current_testbed.htmlDimsOfInterest[1], extension, captionStringFormat, functionGroups) elif htmlPage is HtmlPage.PPSCATTER: @@ -349,8 +349,8 @@ def save_single_functions_html(filename, elif htmlPage is HtmlPage.PPTABLES: # Wassim: kept these two instructions below from older code - write_pptables(f, testbedsettings.current_testbed.htmlDimsOfInterest[0], captionStringFormat, first_function_number, last_function_number, bestAlgExists) - write_pptables(f, testbedsettings.current_testbed.htmlDimsOfInterest[1], captionStringFormat, first_function_number, last_function_number, bestAlgExists) + #write_pptables(f, testbedsettings.current_testbed.htmlDimsOfInterest[0], captionStringFormat, first_function_number, last_function_number, bestAlgExists) + #write_pptables(f, testbedsettings.current_testbed.htmlDimsOfInterest[1], captionStringFormat, first_function_number, last_function_number, bestAlgExists) write_tables(f, captionStringFormat, bestAlgExists, 'pptablesHtml', 'bbobpptablesmanylegend') From 0ee0d2edc279f460a37adb563bafb037a96ce6fc Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 7 Jul 2016 14:52:07 +0200 Subject: [PATCH 274/446] possible fix for failed ci in pproc: commented out remainings of old cod --- code-experiments/src/logger_bbob.c | 2 +- code-postprocessing/bbob_pproc/ppfig.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index b9db048c0..77f8ecfdc 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -225,7 +225,7 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, fprintf(*target_file, "funcId = %d, DIM = %lu, Precision = %.3e, algId = '%s'\n", (int) strtol(function_id, NULL, 10), (unsigned long) logger->number_of_variables, logger->observer->target_precision, logger->observer->algorithm_name); - fprintf(*target_file, "%% coco_version = %s\n", coco_version); + /* fprintf(*target_file, "%% coco_version = %s\n", coco_version);*/ /*Wassim: does not work in current version*/ fprintf(*target_file, "%%\n"); strncat(used_dataFile_path, "_i", COCO_PATH_MAX - strlen(used_dataFile_path) - 1); strncat(used_dataFile_path, bbob_infoFile_firstInstance_char, diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index b105255d2..fa8ef0a72 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -283,8 +283,8 @@ def save_single_functions_html(filename, % genericsettings.pptables_file_name) # Wassim: kept these two instructions from older code - write_ECDF(f, testbedsettings.current_testbed.htmlDimsOfInterest[0], extension, captionStringFormat, functionGroups) - write_ECDF(f, testbedsettings.current_testbed.htmlDimsOfInterest[1], extension, captionStringFormat, functionGroups) + #write_ECDF(f, testbedsettings.current_testbed.htmlDimsOfInterest[0], extension, captionStringFormat, functionGroups) + #write_ECDF(f, testbedsettings.current_testbed.htmlDimsOfInterest[1], extension, captionStringFormat, functionGroups) elif htmlPage is HtmlPage.PPSCATTER: @@ -349,8 +349,8 @@ def save_single_functions_html(filename, elif htmlPage is HtmlPage.PPTABLES: # Wassim: kept these two instructions below from older code - write_pptables(f, testbedsettings.current_testbed.htmlDimsOfInterest[0], captionStringFormat, first_function_number, last_function_number, bestAlgExists) - write_pptables(f, testbedsettings.current_testbed.htmlDimsOfInterest[1], captionStringFormat, first_function_number, last_function_number, bestAlgExists) + #write_pptables(f, testbedsettings.current_testbed.htmlDimsOfInterest[0], captionStringFormat, first_function_number, last_function_number, bestAlgExists) + #write_pptables(f, testbedsettings.current_testbed.htmlDimsOfInterest[1], captionStringFormat, first_function_number, last_function_number, bestAlgExists) write_tables(f, captionStringFormat, bestAlgExists, 'pptablesHtml', 'bbobpptablesmanylegend') From ca9dd5a1245f9683d3ee99cccd682b3068aa879c Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 7 Jul 2016 15:11:54 +0200 Subject: [PATCH 275/446] commented out testmode(interface) to look for other potential erros --- code-experiments/build/python/coco_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/build/python/coco_test.py b/code-experiments/build/python/coco_test.py index 001fe9d97..0af67f1f0 100755 --- a/code-experiments/build/python/coco_test.py +++ b/code-experiments/build/python/coco_test.py @@ -90,7 +90,7 @@ def run_doctests(): if not sys.version.startswith('3'): print(" CAVEAT: doctest OF cocoex.interface IS, FOR SOME REASON, " + "INEFFECTIVE IN PYTHON 2 ") - testmod(interface) + #testmod(interface) testmod(example_experiment) def _clean_up(folder, start_matches, protected): From 9a900b73ce08baae8e3bc2cd2d51ca4c381689d5 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Thu, 7 Jul 2016 15:11:54 +0200 Subject: [PATCH 276/446] commented out testmode(interface) to look for other potential erros --- code-experiments/build/python/coco_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/build/python/coco_test.py b/code-experiments/build/python/coco_test.py index 001fe9d97..0af67f1f0 100755 --- a/code-experiments/build/python/coco_test.py +++ b/code-experiments/build/python/coco_test.py @@ -90,7 +90,7 @@ def run_doctests(): if not sys.version.startswith('3'): print(" CAVEAT: doctest OF cocoex.interface IS, FOR SOME REASON, " + "INEFFECTIVE IN PYTHON 2 ") - testmod(interface) + #testmod(interface) testmod(example_experiment) def _clean_up(folder, start_matches, protected): From 463d10b41e7c328f4b5657723545f6f3b491924f Mon Sep 17 00:00:00 2001 From: NDManh Date: Fri, 8 Jul 2016 15:17:15 +0200 Subject: [PATCH 277/446] Some update for veriry-postprocessing --- code-postprocessing/bbob_pproc/pplogloss.py | 4 ++-- code-postprocessing/bbob_pproc/pprldistr.py | 2 +- code-postprocessing/bbob_pproc/preparetexforhtml.py | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code-postprocessing/bbob_pproc/pplogloss.py b/code-postprocessing/bbob_pproc/pplogloss.py index 1a29147b9..2e8564ce6 100644 --- a/code-postprocessing/bbob_pproc/pplogloss.py +++ b/code-postprocessing/bbob_pproc/pplogloss.py @@ -98,7 +98,7 @@ \aRT\ loss ratio. The aRT of the considered algorithm, the budget, is shown in the first column. For the loss ratio the budget is divided by the aRT for the -respective best result from BBOB-2009 (see also Table~\ref{tab:ERTloss}). +respective best result from BBOB-2009 (see also Table~\ref{tab:aRTloss}). The last row $\text{RL}_{\text{US}}/\text{D}$ gives the number of function evaluations in unsuccessful runs divided by dimension. Shown are the smallest, 10\%-ile, 25\%-ile, 50\%-ile, 75\%-ile and 90\%-ile value (smaller values are @@ -107,7 +107,7 @@ \aRT\ loss ratio. The aRT of the considered algorithm, the budget, is shown in the first column. For the loss ratio the budget is divided by the aRT for the -respective best result from BBOB-2009 (see also Figure~\ref{fig:ERTlogloss}). +respective best result from BBOB-2009 (see also Figure~\ref{fig:aRTlogloss}). The last row $\text{RL}_{\text{US}}/\text{D}$ gives the number of function evaluations in unsuccessful runs divided by dimension. Shown are the smallest, 10\%-ile, 25\%-ile, 50\%-ile, 75\%-ile and 90\%-ile value (smaller values are diff --git a/code-postprocessing/bbob_pproc/pprldistr.py b/code-postprocessing/bbob_pproc/pprldistr.py index 8c717b41c..4ef576dfa 100644 --- a/code-postprocessing/bbob_pproc/pprldistr.py +++ b/code-postprocessing/bbob_pproc/pprldistr.py @@ -148,7 +148,7 @@ def caption_single(): caption_left_rlbased_targets = r"""% Left subplots: ECDF of number of function evaluations (FEvals) divided by search space dimension $D$, to fall below $\fopt+\Df$ where \Df\ is the - target just not reached by the""" + ("""GECCO-BBOB-%d""" %best_year) + r""" best algorithm within a budget of + target just not reached by the """ + ("""GECCO-BBOB-%d""" %best_year) + r""" best algorithm within a budget of % largest $\Df$-value $\ge10^{-8}$ for which the best \ART\ seen in the """ + ("""GECCO-BBOB-%d""" %best_year) + r""" was yet above $k\times\DIM$ evaluations, where $k$ is the first value in the legend. """ caption_wrap_up = r"""% diff --git a/code-postprocessing/bbob_pproc/preparetexforhtml.py b/code-postprocessing/bbob_pproc/preparetexforhtml.py index d397e4840..d8da5c46c 100644 --- a/code-postprocessing/bbob_pproc/preparetexforhtml.py +++ b/code-postprocessing/bbob_pproc/preparetexforhtml.py @@ -125,10 +125,10 @@ def main(latex_commands_for_html): # 8. pplogloss f.writelines(prepare_providecommand('bbobloglosstablecaption', scenario, - pplogloss.table_caption().replace('Figure~\\ref{fig:ERTlogloss}', + pplogloss.table_caption().replace('Figure~\\ref{fig:aRTlogloss}', 'the following figure'))) f.writelines(prepare_providecommand('bbobloglossfigurecaption', scenario, - pplogloss.figure_caption().replace('Figure~\\ref{tab:ERTloss}', + pplogloss.figure_caption().replace('Figure~\\ref{tab:aRTloss}', 'the previous figure'))) # prepare tags for later HTML preparation From 5d6d4877320b401200c88d62b13e4c6119d7f7ed Mon Sep 17 00:00:00 2001 From: NDManh Date: Fri, 8 Jul 2016 15:17:15 +0200 Subject: [PATCH 278/446] Some update for veriry-postprocessing --- code-postprocessing/bbob_pproc/pplogloss.py | 4 ++-- code-postprocessing/bbob_pproc/pprldistr.py | 2 +- code-postprocessing/bbob_pproc/preparetexforhtml.py | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code-postprocessing/bbob_pproc/pplogloss.py b/code-postprocessing/bbob_pproc/pplogloss.py index 1a29147b9..2e8564ce6 100644 --- a/code-postprocessing/bbob_pproc/pplogloss.py +++ b/code-postprocessing/bbob_pproc/pplogloss.py @@ -98,7 +98,7 @@ \aRT\ loss ratio. The aRT of the considered algorithm, the budget, is shown in the first column. For the loss ratio the budget is divided by the aRT for the -respective best result from BBOB-2009 (see also Table~\ref{tab:ERTloss}). +respective best result from BBOB-2009 (see also Table~\ref{tab:aRTloss}). The last row $\text{RL}_{\text{US}}/\text{D}$ gives the number of function evaluations in unsuccessful runs divided by dimension. Shown are the smallest, 10\%-ile, 25\%-ile, 50\%-ile, 75\%-ile and 90\%-ile value (smaller values are @@ -107,7 +107,7 @@ \aRT\ loss ratio. The aRT of the considered algorithm, the budget, is shown in the first column. For the loss ratio the budget is divided by the aRT for the -respective best result from BBOB-2009 (see also Figure~\ref{fig:ERTlogloss}). +respective best result from BBOB-2009 (see also Figure~\ref{fig:aRTlogloss}). The last row $\text{RL}_{\text{US}}/\text{D}$ gives the number of function evaluations in unsuccessful runs divided by dimension. Shown are the smallest, 10\%-ile, 25\%-ile, 50\%-ile, 75\%-ile and 90\%-ile value (smaller values are diff --git a/code-postprocessing/bbob_pproc/pprldistr.py b/code-postprocessing/bbob_pproc/pprldistr.py index 8c717b41c..4ef576dfa 100644 --- a/code-postprocessing/bbob_pproc/pprldistr.py +++ b/code-postprocessing/bbob_pproc/pprldistr.py @@ -148,7 +148,7 @@ def caption_single(): caption_left_rlbased_targets = r"""% Left subplots: ECDF of number of function evaluations (FEvals) divided by search space dimension $D$, to fall below $\fopt+\Df$ where \Df\ is the - target just not reached by the""" + ("""GECCO-BBOB-%d""" %best_year) + r""" best algorithm within a budget of + target just not reached by the """ + ("""GECCO-BBOB-%d""" %best_year) + r""" best algorithm within a budget of % largest $\Df$-value $\ge10^{-8}$ for which the best \ART\ seen in the """ + ("""GECCO-BBOB-%d""" %best_year) + r""" was yet above $k\times\DIM$ evaluations, where $k$ is the first value in the legend. """ caption_wrap_up = r"""% diff --git a/code-postprocessing/bbob_pproc/preparetexforhtml.py b/code-postprocessing/bbob_pproc/preparetexforhtml.py index d397e4840..d8da5c46c 100644 --- a/code-postprocessing/bbob_pproc/preparetexforhtml.py +++ b/code-postprocessing/bbob_pproc/preparetexforhtml.py @@ -125,10 +125,10 @@ def main(latex_commands_for_html): # 8. pplogloss f.writelines(prepare_providecommand('bbobloglosstablecaption', scenario, - pplogloss.table_caption().replace('Figure~\\ref{fig:ERTlogloss}', + pplogloss.table_caption().replace('Figure~\\ref{fig:aRTlogloss}', 'the following figure'))) f.writelines(prepare_providecommand('bbobloglossfigurecaption', scenario, - pplogloss.figure_caption().replace('Figure~\\ref{tab:ERTloss}', + pplogloss.figure_caption().replace('Figure~\\ref{tab:aRTloss}', 'the previous figure'))) # prepare tags for later HTML preparation From 343c8d5dd67a460d5816ee0e7253a8c9c6edcc9c Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 8 Jul 2016 17:24:02 +0200 Subject: [PATCH 279/446] added generalized sharp ridge function f_sharp_ridge_generalized.c --- code-experiments/src/f_sharp_ridge.c | 79 -------- .../src/f_sharp_ridge_generalized.c | 180 ++++++++++++++++++ code-experiments/src/suite_largescale.c | 9 +- 3 files changed, 186 insertions(+), 82 deletions(-) create mode 100644 code-experiments/src/f_sharp_ridge_generalized.c diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index cca39a64f..c53c7f6b2 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -116,83 +116,4 @@ static coco_problem_t *f_sharp_ridge_bbob_problem_allocate(const size_t function return problem; } -/** - * @brief Creates the BBOB permuted block-rotated sharp ridge problem - */ -static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B1; - double **B2; - const double *const *B1_copy; - const double *const *B2_copy; - size_t *P11 = coco_allocate_vector_size_t(dimension); - size_t *P21 = coco_allocate_vector_size_t(dimension); - size_t *P12 = coco_allocate_vector_size_t(dimension); - size_t *P22 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes1; - size_t *block_sizes2; - size_t nb_blocks1; - size_t nb_blocks2; - size_t swap_range; - size_t nb_swaps; - - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); - swap_range = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1; - B2_copy = (const double *const *)B2; - - coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); - - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); - - - problem = f_sharp_ridge_allocate(dimension); - problem = transform_vars_permutation(problem, P21, dimension);/* LIFO */ - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); - problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_conditioning(problem, 10.0); - problem = transform_vars_permutation(problem, P22, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); /*TODO: no large scale prefix*/ - - coco_free_block_matrix(B1, dimension); - coco_free_block_matrix(B2, dimension); - coco_free_memory(P11); - coco_free_memory(P21); - coco_free_memory(P12); - coco_free_memory(P22); - coco_free_memory(block_sizes1); - coco_free_memory(block_sizes2); - coco_free_memory(xopt); - - return problem; -} - diff --git a/code-experiments/src/f_sharp_ridge_generalized.c b/code-experiments/src/f_sharp_ridge_generalized.c new file mode 100644 index 000000000..c22265b7c --- /dev/null +++ b/code-experiments/src/f_sharp_ridge_generalized.c @@ -0,0 +1,180 @@ +/** + * @file f_sharp_ridge_generalized.c + * @brief Implementation of the generalized sharp ridge function and problem. + */ + +#include +#include + +#include "coco.h" +#include "coco_problem.c" +#include "suite_bbob_legacy_code.c" +#include "transform_obj_shift.c" +#include "transform_vars_affine.c" +#include "transform_vars_shift.c" +#include "transform_vars_conditioning.c" + +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" + +/** + * @brief Data type for the versatile_data_t + */ +typedef struct { + size_t proportion_of_linear_dims; +} f_sharp_ridge_generalized_versatile_data_t; + + +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_sharp_ridge_generalized_versatile_data_free(coco_problem_t *problem) { + + f_sharp_ridge_generalized_versatile_data_t *versatile_data = (f_sharp_ridge_generalized_versatile_data_t *) problem->versatile_data; + coco_free_memory(versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + + +/** + * @brief Implements the generalized sharp ridge function without connections to any COCO structures. + */ +static double f_sharp_ridge_generalized_raw(const double *x, const size_t number_of_variables, f_sharp_ridge_generalized_versatile_data_t* f_sharp_ridge_generalized_versatile_data) { + + static const double alpha = 100.0; + size_t i = 0, number_linear_dimensions; + double result; + + assert(number_of_variables > 1); + + if (coco_vector_contains_nan(x, number_of_variables)) + return NAN; + + result = 0.0; + number_linear_dimensions = number_of_variables / f_sharp_ridge_generalized_versatile_data->proportion_of_linear_dims; + if (number_of_variables % f_sharp_ridge_generalized_versatile_data->proportion_of_linear_dims != 0) { + number_linear_dimensions += 1; + } + for (i = number_linear_dimensions; i < number_of_variables; ++i) { + result += x[i] * x[i]; + } + result = alpha * sqrt(result); + for (i = 0; i < number_linear_dimensions; i++) { + result += x[i] * x[i]; + } + + return result; +} + +/** + * @brief Uses the raw function to evaluate the COCO problem. + */ +static void f_sharp_ridge_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_sharp_ridge_generalized_raw(x, problem->number_of_variables, (f_sharp_ridge_generalized_versatile_data_t *)problem->versatile_data); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic sharp ridge problem. + */ +static coco_problem_t *f_sharp_ridge_generalized_allocate(const size_t number_of_variables, size_t proportion_of_linear_dims) { + /* Wassim: proportion_of_linear_dims should probably be allowed to be non-integer */ + coco_problem_t *problem = coco_problem_allocate_from_scalars("sharp ridge function", + f_sharp_ridge_generalized_evaluate, f_sharp_ridge_generalized_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); + + coco_problem_set_id(problem, "%s_d%02lu", "sharp_ridge_generalized", number_of_variables); + problem->versatile_data = (f_sharp_ridge_generalized_versatile_data_t *) coco_allocate_memory(sizeof(f_sharp_ridge_generalized_versatile_data_t)); + ((f_sharp_ridge_generalized_versatile_data_t *) problem->versatile_data)->proportion_of_linear_dims = proportion_of_linear_dims; + + /* Compute best solution */ + f_sharp_ridge_generalized_evaluate(problem, problem->best_parameter, problem->best_value); + return problem; +} + + +/** + * @brief Creates the BBOB permuted block-rotated generalized sharp ridge problem + */ +static coco_problem_t *f_sharp_ridge_generalized_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1; + size_t *block_sizes2; + size_t nb_blocks1; + size_t nb_blocks2; + size_t swap_range; + size_t nb_swaps; + + const size_t proportion_of_linear_dims = 40; + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); + + + problem = f_sharp_ridge_generalized_allocate(dimension, proportion_of_linear_dims); + problem = transform_vars_permutation(problem, P21, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_permutation(problem, P22, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); /*TODO: no large scale prefix*/ + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + + return problem; +} + + diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 70719f799..e96bfdcee 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -16,7 +16,8 @@ #include "f_rastrigin.c" #include "f_schaffers.c" #include "f_schwefel_generalized.c" -#include "f_sharp_ridge.c" +/*#include "f_sharp_ridge.c"*/ +#include "f_sharp_ridge_generalized.c" #include "f_sphere.c" #include "f_step_ellipsoid.c" #include "f_weierstrass.c" @@ -90,8 +91,10 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 13) { - problem = f_sharp_ridge_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + /*problem = f_sharp_ridge_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + problem = f_sharp_ridge_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 14) { problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); From 9623cb55fdcdc538993ff1bd24f7ae11957ab556 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Fri, 8 Jul 2016 17:24:02 +0200 Subject: [PATCH 280/446] added generalized sharp ridge function f_sharp_ridge_generalized.c --- code-experiments/src/f_sharp_ridge.c | 79 -------- .../src/f_sharp_ridge_generalized.c | 180 ++++++++++++++++++ code-experiments/src/suite_largescale.c | 9 +- 3 files changed, 186 insertions(+), 82 deletions(-) create mode 100644 code-experiments/src/f_sharp_ridge_generalized.c diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index cca39a64f..c53c7f6b2 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -116,83 +116,4 @@ static coco_problem_t *f_sharp_ridge_bbob_problem_allocate(const size_t function return problem; } -/** - * @brief Creates the BBOB permuted block-rotated sharp ridge problem - */ -static coco_problem_t *f_sharp_ridge_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { - double *xopt, fopt; - coco_problem_t *problem = NULL; - double **B1; - double **B2; - const double *const *B1_copy; - const double *const *B2_copy; - size_t *P11 = coco_allocate_vector_size_t(dimension); - size_t *P21 = coco_allocate_vector_size_t(dimension); - size_t *P12 = coco_allocate_vector_size_t(dimension); - size_t *P22 = coco_allocate_vector_size_t(dimension); - size_t *block_sizes1; - size_t *block_sizes2; - size_t nb_blocks1; - size_t nb_blocks2; - size_t swap_range; - size_t nb_swaps; - - block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); - block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); - swap_range = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); - - xopt = coco_allocate_vector(dimension); - fopt = bbob2009_compute_fopt(function, instance); - bbob2009_compute_xopt(xopt, rseed, dimension); - - B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); - B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1; - B2_copy = (const double *const *)B2; - - coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); - - coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); - - - problem = f_sharp_ridge_allocate(dimension); - problem = transform_vars_permutation(problem, P21, dimension);/* LIFO */ - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); - problem = transform_vars_permutation(problem, P11, dimension); - problem = transform_vars_conditioning(problem, 10.0); - problem = transform_vars_permutation(problem, P22, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); - problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_shift(problem, xopt, 0); - - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_shift(problem, fopt); - - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); - coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); /*TODO: no large scale prefix*/ - - coco_free_block_matrix(B1, dimension); - coco_free_block_matrix(B2, dimension); - coco_free_memory(P11); - coco_free_memory(P21); - coco_free_memory(P12); - coco_free_memory(P22); - coco_free_memory(block_sizes1); - coco_free_memory(block_sizes2); - coco_free_memory(xopt); - - return problem; -} - diff --git a/code-experiments/src/f_sharp_ridge_generalized.c b/code-experiments/src/f_sharp_ridge_generalized.c new file mode 100644 index 000000000..c22265b7c --- /dev/null +++ b/code-experiments/src/f_sharp_ridge_generalized.c @@ -0,0 +1,180 @@ +/** + * @file f_sharp_ridge_generalized.c + * @brief Implementation of the generalized sharp ridge function and problem. + */ + +#include +#include + +#include "coco.h" +#include "coco_problem.c" +#include "suite_bbob_legacy_code.c" +#include "transform_obj_shift.c" +#include "transform_vars_affine.c" +#include "transform_vars_shift.c" +#include "transform_vars_conditioning.c" + +#include "transform_vars_permutation.c" +#include "transform_vars_blockrotation.c" +#include "transform_obj_norm_by_dim.c" + +/** + * @brief Data type for the versatile_data_t + */ +typedef struct { + size_t proportion_of_linear_dims; +} f_sharp_ridge_generalized_versatile_data_t; + + +/** + * @brief allows to free the versatile_data part of the problem. + */ +static void f_sharp_ridge_generalized_versatile_data_free(coco_problem_t *problem) { + + f_sharp_ridge_generalized_versatile_data_t *versatile_data = (f_sharp_ridge_generalized_versatile_data_t *) problem->versatile_data; + coco_free_memory(versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + + +/** + * @brief Implements the generalized sharp ridge function without connections to any COCO structures. + */ +static double f_sharp_ridge_generalized_raw(const double *x, const size_t number_of_variables, f_sharp_ridge_generalized_versatile_data_t* f_sharp_ridge_generalized_versatile_data) { + + static const double alpha = 100.0; + size_t i = 0, number_linear_dimensions; + double result; + + assert(number_of_variables > 1); + + if (coco_vector_contains_nan(x, number_of_variables)) + return NAN; + + result = 0.0; + number_linear_dimensions = number_of_variables / f_sharp_ridge_generalized_versatile_data->proportion_of_linear_dims; + if (number_of_variables % f_sharp_ridge_generalized_versatile_data->proportion_of_linear_dims != 0) { + number_linear_dimensions += 1; + } + for (i = number_linear_dimensions; i < number_of_variables; ++i) { + result += x[i] * x[i]; + } + result = alpha * sqrt(result); + for (i = 0; i < number_linear_dimensions; i++) { + result += x[i] * x[i]; + } + + return result; +} + +/** + * @brief Uses the raw function to evaluate the COCO problem. + */ +static void f_sharp_ridge_generalized_evaluate(coco_problem_t *problem, const double *x, double *y) { + assert(problem->number_of_objectives == 1); + y[0] = f_sharp_ridge_generalized_raw(x, problem->number_of_variables, (f_sharp_ridge_generalized_versatile_data_t *)problem->versatile_data); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + +/** + * @brief Allocates the basic sharp ridge problem. + */ +static coco_problem_t *f_sharp_ridge_generalized_allocate(const size_t number_of_variables, size_t proportion_of_linear_dims) { + /* Wassim: proportion_of_linear_dims should probably be allowed to be non-integer */ + coco_problem_t *problem = coco_problem_allocate_from_scalars("sharp ridge function", + f_sharp_ridge_generalized_evaluate, f_sharp_ridge_generalized_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); + + coco_problem_set_id(problem, "%s_d%02lu", "sharp_ridge_generalized", number_of_variables); + problem->versatile_data = (f_sharp_ridge_generalized_versatile_data_t *) coco_allocate_memory(sizeof(f_sharp_ridge_generalized_versatile_data_t)); + ((f_sharp_ridge_generalized_versatile_data_t *) problem->versatile_data)->proportion_of_linear_dims = proportion_of_linear_dims; + + /* Compute best solution */ + f_sharp_ridge_generalized_evaluate(problem, problem->best_parameter, problem->best_value); + return problem; +} + + +/** + * @brief Creates the BBOB permuted block-rotated generalized sharp ridge problem + */ +static coco_problem_t *f_sharp_ridge_generalized_permblockdiag_bbob_problem_allocate(const size_t function, + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { + double *xopt, fopt; + coco_problem_t *problem = NULL; + double **B1; + double **B2; + const double *const *B1_copy; + const double *const *B2_copy; + size_t *P11 = coco_allocate_vector_size_t(dimension); + size_t *P21 = coco_allocate_vector_size_t(dimension); + size_t *P12 = coco_allocate_vector_size_t(dimension); + size_t *P22 = coco_allocate_vector_size_t(dimension); + size_t *block_sizes1; + size_t *block_sizes2; + size_t nb_blocks1; + size_t nb_blocks2; + size_t swap_range; + size_t nb_swaps; + + const size_t proportion_of_linear_dims = 40; + + block_sizes1 = coco_get_block_sizes(&nb_blocks1, dimension, "bbob-largescale"); + block_sizes2 = coco_get_block_sizes(&nb_blocks2, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + + xopt = coco_allocate_vector(dimension); + fopt = bbob2009_compute_fopt(function, instance); + bbob2009_compute_xopt(xopt, rseed, dimension); + + B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); + B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); + B1_copy = (const double *const *)B1; + B2_copy = (const double *const *)B2; + + coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); + coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + + coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P12, rseed + 5000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P22, rseed + 6000000, dimension, nb_swaps, swap_range); + + + problem = f_sharp_ridge_generalized_allocate(dimension, proportion_of_linear_dims); + problem = transform_vars_permutation(problem, P21, dimension);/* LIFO */ + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_permutation(problem, P11, dimension); + problem = transform_vars_conditioning(problem, 10.0); + problem = transform_vars_permutation(problem, P22, dimension);/*Consider replacing P11 and 22 by a single permutation P3*/ + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_permutation(problem, P12, dimension); + problem = transform_vars_shift(problem, xopt, 0); + + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); + coco_problem_set_name(problem, problem_name_template, function, instance, dimension); + coco_problem_set_type(problem, "large_scale_block_rotated"); /*TODO: no large scale prefix*/ + + coco_free_block_matrix(B1, dimension); + coco_free_block_matrix(B2, dimension); + coco_free_memory(P11); + coco_free_memory(P21); + coco_free_memory(P12); + coco_free_memory(P22); + coco_free_memory(block_sizes1); + coco_free_memory(block_sizes2); + coco_free_memory(xopt); + + return problem; +} + + diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 70719f799..e96bfdcee 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -16,7 +16,8 @@ #include "f_rastrigin.c" #include "f_schaffers.c" #include "f_schwefel_generalized.c" -#include "f_sharp_ridge.c" +/*#include "f_sharp_ridge.c"*/ +#include "f_sharp_ridge_generalized.c" #include "f_sphere.c" #include "f_step_ellipsoid.c" #include "f_weierstrass.c" @@ -90,8 +91,10 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 13) { - problem = f_sharp_ridge_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + /*problem = f_sharp_ridge_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template);*/ + problem = f_sharp_ridge_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, + problem_id_template, problem_name_template); } else if (function == 14) { problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); From 1836ff52c2956991f052e6becedb886605896cc4 Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 11 Jul 2016 11:23:09 +0200 Subject: [PATCH 281/446] Change latex_commands_for_html.html for verify-postprocessing and remove some flags --- .../bbob_pproc/comp2/ppscatter.py | 2 +- .../bbob_pproc/comp2/pptable2.py | 4 +- .../bbob_pproc/compall/determineFtarget2.py | 2 +- .../bbob_pproc/compall/ppfigs.py | 5 +- .../bbob_pproc/compall/pprldmany.py | 8 +- .../bbob_pproc/compall/pptables.py | 6 +- .../bbob_pproc/latex_commands_for_html.html | 357 +++++++++--------- code-postprocessing/bbob_pproc/ppfigdim.py | 8 +- code-postprocessing/bbob_pproc/pplogloss.py | 2 +- code-postprocessing/bbob_pproc/pprldistr.py | 7 +- code-postprocessing/bbob_pproc/pptable.py | 6 +- code-postprocessing/bbob_pproc/preparehtml.py | 2 +- 12 files changed, 210 insertions(+), 199 deletions(-) diff --git a/code-postprocessing/bbob_pproc/comp2/ppscatter.py b/code-postprocessing/bbob_pproc/comp2/ppscatter.py index e8b9f5d31..49b0ae0a4 100644 --- a/code-postprocessing/bbob_pproc/comp2/ppscatter.py +++ b/code-postprocessing/bbob_pproc/comp2/ppscatter.py @@ -76,7 +76,7 @@ def prepare_figure_caption(): %d:{\color{blue}$\star$}, %d:$\circ$, %d:{\color{red}$\Box$}, - %d:{\color{magenta}$\Diamond$}. """ %tuple(testbedsettings.current_testbed.dimensions_to_display) # Manh + %d:{\color{magenta}$\Diamond$}. """ %tuple(testbedsettings.current_testbed.dimensions_to_display) if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: diff --git a/code-postprocessing/bbob_pproc/comp2/pptable2.py b/code-postprocessing/bbob_pproc/comp2/pptable2.py index 39883ee61..0829737b7 100644 --- a/code-postprocessing/bbob_pproc/comp2/pptable2.py +++ b/code-postprocessing/bbob_pproc/comp2/pptable2.py @@ -25,7 +25,7 @@ def get_table_caption(): """ Sets table caption, based on the testbedsettings.current_testbed and genericsettings.runlength_based_targets. """ - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year tabDimsOfInterest = testbedsettings.current_testbed.tabDimsOfInterest table_caption_one = r"""% Average running time (\aRT\ in number of function @@ -47,7 +47,7 @@ def get_table_caption(): """ table_caption_bi = r"""% Average runtime (\aRT) to reach given targets, measured - in number of function evaluations in""" + ("""dimensions %d (left) and %d (right). """ %tuple(tabDimsOfInterest)) + r"""% + in number of function evaluations in """ + ("""dimensions %d (left) and %d (right). """ %tuple(tabDimsOfInterest)) + r"""% For each function, the \aRT\ and, in braces as dispersion measure, the half difference between 10 and 90\%-tile of (bootstrapped) runtimes is shown for the different diff --git a/code-postprocessing/bbob_pproc/compall/determineFtarget2.py b/code-postprocessing/bbob_pproc/compall/determineFtarget2.py index d1dcf4ab2..a95c72390 100644 --- a/code-postprocessing/bbob_pproc/compall/determineFtarget2.py +++ b/code-postprocessing/bbob_pproc/compall/determineFtarget2.py @@ -434,7 +434,7 @@ def main(argv=None): sys.exit() verboseflag = False - dims = testbedsettings.current_testbed.dimensions_to_display # Manh + dims = testbedsettings.current_testbed.dimensions_to_display funcs = range(1,25) # default values list() directory = args # directories which contains data... # Process options diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index 19552f6e9..12c2236e0 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -105,7 +105,7 @@ def scaling_figure_caption(for_html = False): def prepare_ecdfs_figure_caption(): - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year bestyeartext = ( r"The ``best %d'' line " % best_year + r"corresponds to the best \aRT\ observed during BBOB %d " % best_year + @@ -266,7 +266,6 @@ def plotLegend(handles, maxval=None): for k in sorted(ys[j].keys()): #enforce best 2009 comes first in case of equality tmp = [] - # Manh : a generalization best_year_label = 'best %d' %testbedsettings.current_testbed.best_algorithm_year for h in ys[j][k]: if plt.getp(h, 'label') == best_year_label: @@ -581,7 +580,7 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd alg_definitions.append((', ' if i > 0 else '') + '%s: %s' % (symb, '\\algorithm' + abc[i % len(abc)])) alg_definitions_html += (', ' if i > 0 else '') + '%s: %s' % (symb_html, toolsdivers.str_to_latex(toolsdivers.strip_pathname1(sortedAlgs[i]))) - if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale + if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): toolsdivers.prepend_to_file(latex_commands_filename, [#'\\providecommand{\\bbobppfigsftarget}{\\ensuremath{10^{%s}}}' # % target.loglabel(0), # int(numpy.round(numpy.log10(target))), diff --git a/code-postprocessing/bbob_pproc/compall/pprldmany.py b/code-postprocessing/bbob_pproc/compall/pprldmany.py index d8c3a2d34..8b356efa0 100644 --- a/code-postprocessing/bbob_pproc/compall/pprldmany.py +++ b/code-postprocessing/bbob_pproc/compall/pprldmany.py @@ -350,7 +350,7 @@ def get_label_length(labelList): fontsize = genericsettings.minmax_algorithm_fontsize[0] + np.min((1, np.exp(9 - lh))) * ( genericsettings.minmax_algorithm_fontsize[-1] - genericsettings.minmax_algorithm_fontsize[0]) i = 0 # loop over the elements of ys - best_year = 'best %d' % testbedsettings.current_testbed.best_algorithm_year # Manh : set 'best 2009/2016' + best_year = 'best %d' % testbedsettings.current_testbed.best_algorithm_year for j in sorted(ys.keys()): for k in reversed(sorted(ys[j].keys())): # enforce best ever comes last in case of equality @@ -712,7 +712,7 @@ def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', # Display data lines = [] - best_year = 'best %d' %testbedsettings.current_testbed.best_algorithm_year # Manh : set 'best 2009/2016' + best_year = 'best %d' %testbedsettings.current_testbed.best_algorithm_year if displaybest2009: args = {'ls': '-', 'linewidth': 6, 'marker': 'D', 'markersize': 11., 'markeredgewidth': 1.5, 'markerfacecolor': refcolor, @@ -772,8 +772,8 @@ def algname_to_label(algname, dirname=None): algtocommand[algname_to_label(alg)] = tmp if displaybest2009: tmp = r'\algzeroperfprof' - f.write(r'\providecommand{%s}{best %d}' % (tmp, testbedsettings.current_testbed.best_algorithm_year )) # Manh - algtocommand[best_year] = tmp # Manh + f.write(r'\providecommand{%s}{best %d}' % (tmp, testbedsettings.current_testbed.best_algorithm_year )) + algtocommand[best_year] = tmp commandnames = [] for label in labels: diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 0aaef95ff..2d3f5c593 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -27,14 +27,14 @@ def get_table_caption(): TODO: \hvref and \fopt should be defined via the current_testbed, preferably with a single latex command. """ - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year table_caption_one = r"""% Average running time (\aRT\ in number of function evaluations) divided by the respective best \aRT\ measured during""" + (""" BBOB-%d in #1.""" %best_year) + r""" The \aRT\ and in braces, as dispersion measure, the half difference between 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and - """ # Manh : the caption varies in best_algorithm_year + """ table_caption_two1 = r"""% target, the corresponding best \aRT\ in the first row. The different target \Df-values are shown in the top row. @@ -64,7 +64,7 @@ def get_table_caption(): $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger than 1, with Bonferroni correction of #2. """ + (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-%d. """ %best_year # Manh : the caption varies in best_algorithm_year + algorithm of BBOB-%d. """ %best_year if (testbedsettings.current_testbed.best_algorithm_filename) else "") + r"""Best results are printed in bold. """) diff --git a/code-postprocessing/bbob_pproc/latex_commands_for_html.html b/code-postprocessing/bbob_pproc/latex_commands_for_html.html index 9dc9c0142..7ec9c0643 100644 --- a/code-postprocessing/bbob_pproc/latex_commands_for_html.html +++ b/code-postprocessing/bbob_pproc/latex_commands_for_html.html @@ -101,8 +101,7 @@ ##bbobpptablecaptionrlbased## Average running time (aRT in number of function - evaluations) divided by the best aRT measured during BBOB-2009. The aRT  - and in braces, as dispersion measure, the half difference between 90 and + evaluations) divided by the best aRT measured during BBOB-2009. The aRT  and in braces, as dispersion measure, the half difference between 90 and 10%-tile of bootstrapped run lengths appear in the second row of each cell, the best aRT  (preceded by the target ∆f-value in italics) in the first. #succ is the number of trials that reached the target value of the last column. @@ -119,8 +118,7 @@ Average running time (aRT in number of function evaluations) divided by the respective best aRT measured during BBOB-2009 in - dimensions 5 (left) and 20 (right). - The aRT and in braces, as dispersion measure, the half difference between 10 + dimensions 5 (left) and 20 (right). The aRT and in braces, as dispersion measure, the half difference between 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and run-length based target, the corresponding best aRT  (preceded by the target ∆f-value in italics) in the first row. #succ is the number of trials that reached the target value of the last column. @@ -135,15 +133,15 @@
##bbobpptablesmanylegendrlbased## - Average running time (aRT in number of function + Average running time (aRT in number of function evaluations) divided by the respective best aRT measured during BBOB-2009 in different dimensions. - The aRT and in braces, as dispersion measure, the half difference between - 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and + The aRT and in braces, as dispersion measure, the half difference between + 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and run-length based target, the corresponding best aRT  (preceded by the target ∆f-value in italics) in the first row. #succ is the number of trials that reached the target value of the last column. The median number of conducted function evaluations is additionally given in - italics, if the target in the last column was never reached. + italics, if the target in the last column was never reached. Entries, succeeded by a star, are statistically significantly better (according to the rank-sum test) when compared to all other algorithms of the table, with p = 0.05 or p = 10−k when the number k following the star is larger @@ -178,7 +176,7 @@ Shown is then the aRT to reach ft for the given algorithm or the budget, if the GECCO-BBOB-2009 best algorithm reached a better target within the budget, - divided by the best aRT  seen in GECCO-BBOB-2009 to reach ft. + divided by the best aRT seen in GECCO-BBOB-2009 to reach ft. Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median (box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio (points). The vertical line gives the maximal number of function evaluations @@ -235,7 +233,7 @@ ∆f =10−8 of all algorithms benchmarked during BBOB-2009. Right sub-columns: - ECDF of FEval ratios of algorithmA divided by algorithmB for target + ECDF of FEval ratios of algorithmA divided by algorithmB for target function values 10k with k given in the legend; all trial pairs for each function. Pairs where both trials failed are disregarded, pairs where one trial failed are visible in the limits being > 0 or < 1. The @@ -265,8 +263,7 @@ ##bbobpptablecaptionfixed## Average running time (aRT in number of function - evaluations) divided by the best aRT measured during BBOB-2009. The aRT  - and in braces, as dispersion measure, the half difference between 90 and + evaluations) divided by the best aRT measured during BBOB-2009. The aRT  and in braces, as dispersion measure, the half difference between 90 and 10%-tile of bootstrapped run lengths appear in the second row of each cell, the best aRT  in the first. The different target ∆f-values are shown in the top row. #succ is the number of trials that reached the (final) target fopt+ 10−8. @@ -283,8 +280,7 @@ Average running time (aRT in number of function evaluations) divided by the respective best aRT measured during BBOB-2009 in - dimensions 5 (left) and 20 (right). - The aRT and in braces, as dispersion measure, the half difference between 10 + dimensions 5 (left) and 20 (right). The aRT and in braces, as dispersion measure, the half difference between 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. #succ is the number of trials that reached the (final) target @@ -300,16 +296,16 @@
##bbobpptablesmanylegendfixed## - Average running time (aRT in number of function + Average running time (aRT in number of function evaluations) divided by the respective best aRT measured during BBOB-2009 in different dimensions. - The aRT and in braces, as dispersion measure, the half difference between - 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and + The aRT and in braces, as dispersion measure, the half difference between + 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. #succ is the number of trials that reached the (final) target fopt+ 10−8. The median number of conducted function evaluations is additionally given in - italics, if the target in the last column was never reached. + italics, if the target in the last column was never reached. Entries, succeeded by a star, are statistically significantly better (according to the rank-sum test) when compared to all other algorithms of the table, with p = 0.05 or p = 10−k when the number k following the star is larger @@ -341,7 +337,7 @@ Shown is then the aRT to reach ft for the given algorithm or the budget, if the GECCO-BBOB-2009 best algorithm reached a better target within the budget, - divided by the best aRT  seen in GECCO-BBOB-2009 to reach ft. + divided by the best aRT seen in GECCO-BBOB-2009 to reach ft. Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median (box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio (points). The vertical line gives the maximal number of function evaluations @@ -355,162 +351,17 @@ Each cross (+) represents a single function, the line is the geometric mean. -
-##bbobECDFslegendlargescalefixed## - -Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in DIMVALUE-D. - -
-##bbobppfigslegendlargescalefixed## - -Average running time (aRT in number of f-evaluations -as log10 value), divided by dimension for target function value BBOBPPFIGSFTARGET -versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f24. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six). - -
-##bbobpprldistrlegendlargescalefixed## - -Empirical cumulative distribution functions (ECDF), plotting the fraction of -trials with an outcome not larger than the respective value on the x-axis. -Left subplots: ECDF of the number of function evaluations (FEvals) divided by search space dimension D, -to fall below fopt+∆f with ∆f -=10k, where k is the first value in the legend. -The thick red line represents the most difficult target value fopt+10−8. Legends indicate for each target the number of functions that were solved in at -least one trial within the displayed budget. Right subplots: ECDF of the -best achieved ∆f -for running times of 0.5D, 1.2D, 3D, 10D, 100D, 1000D,... -function evaluations -(from right to left cycling cyan-magenta-black...) and final ∆f-value (red), -where ∆f and Df denote the difference to the optimal function value. - -
-##bbobpprldistrlegendtwolargescalefixed## - -Empirical cumulative distributions (ECDF) -of run lengths and speed-up ratios in 80-D (left) and 320-D (right). -Left sub-columns: ECDF of -the number of function evaluations divided by dimension D -(FEvals/D) to reach a target value fopt+∆f with ∆f -=10k, where -k is given by the first value in the legend, for -algorithmA (°) and algorithmB () . Right sub-columns: -ECDF of FEval ratios of algorithmA divided by algorithmB for target -function values 10k with k given in the legend; all -trial pairs for each function. Pairs where both trials failed are disregarded, -pairs where one trial failed are visible in the limits being > 0 or < 1. The -legend also indicates, after the colon, the number of functions that were -solved in at least one trial (algorithmA first). - -
-##bbobppfigdimlegendlargescalefixed## - -Scaling of runtime to reach fopt+10# with dimension; -runtime is measured in number of f-evaluations and # is given in the legend; -Lines: average runtime (aRT); -Cross (+): median runtime of successful runs to reach the most difficult -target that was reached at least once (but not always); -Cross (×): maximum number of -f-evaluations in any trial. Notched -boxes: interquartile range with median of simulated runs; -All values are divided by dimension and -plotted as log10 values versus dimension. Numbers above aRT-symbols (if appearing) indicate the number of trials -reaching the respective target. Horizontal lines mean linear scaling, slanted -grid lines depict quadratic scaling. - -
-##bbobpptablecaptionlargescalefixed## - -Average running time (aRT in number of function -evaluations). The aRT  -and in braces, as dispersion measure, the half difference between 90 and -10%-tile of bootstrapped run lengths appear in the second row of each cell, -the best aRT  in the first. The different target ∆f-values are shown in the top row. -#succ is the number of trials that reached the (final) target fopt+ 10−8. -The median number of conducted function evaluations is additionally given in -italics, if the target in the last column was never reached. - -
-##bbobpptablestwolegendlargescalefixed## - -Average running time (aRT in number of function -evaluations) in -dimensions 80 (left) and 320 (right). -The aRT and in braces, as dispersion measure, the half difference between 10 -and 90%-tile of bootstrapped run lengths appear for each algorithm and -target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. -#succ is the number of trials that reached the (final) target -fopt+ 10−8. -The median number of conducted function evaluations is additionally given in -italics, if the last target was never reached. -1:algorithmAshort is algorithmA and 2:algorithmBshort is algorithmB. -Bold entries are statistically significantly better compared to the other algorithm, -with p=0.05 or p=10−k where k ∈ {2,3,4,...} is the number -following the ∗ symbol, with Bonferroni correction of 48. - -
-##bbobpptablesmanylegendlargescalefixed## - -Average running time (aRT in number of function -evaluations) in different dimensions. -The aRT and in braces, as dispersion measure, the half difference between -10 and 90%-tile of bootstrapped run lengths appear for each algorithm and -target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. -#succ is the number of trials that reached the (final) target -fopt+ 10−8. -The median number of conducted function evaluations is additionally given in -italics, if the target in the last column was never reached. -Entries, succeeded by a star, are statistically significantly better (according to -the rank-sum test) when compared to all other algorithms of the table, with -p = 0.05 or p = 10−k when the number k following the star is larger -than 1, with Bonferroni correction of 48. - -
-##bbobppscatterlegendlargescalefixed## - -Average running time (aRT in log10 of number of function evaluations) -of algorithmB (x-axis) versus algorithmA (y-axis) for NBTARGETS target values -∆f ∈ [NBLOW, NBUP] in each dimension on functions f1 - f24. Markers on the upper or right edge indicate that the respective target -value was never reached. Markers represent dimension: -20:+, -40:\triangledown, -80:, -160:°, -320:[¯], -640:\Diamond. - -
-##bbobloglosstablecaptionlargescalefixed## - -aRT loss ratio versus the budget in number of f-evaluations -divided by dimension. -For each given budget FEvals, the target value ft is computed -as the best target f-value reached within the -budget by the given algorithm. -Shown is then the aRT to reach ft for the given algorithm. -Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median -(box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio -(points). The vertical line gives the maximal number of function evaluations -in a single trial in this function subset. See also -the following figure for results on each function subgroup. - -
-##bbobloglossfigurecaptionlargescalefixed## - -aRT loss ratios (see the previous figure for details). -Each cross (+) represents a single function, the line -is the geometric mean. -
##bbobECDFslegendbiobjfixed## -Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in DIMVALUE-D. +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in DIMVALUE-D.
##bbobppfigslegendbiobjfixed## Average running time (aRT in number of f-evaluations as log10 value), divided by dimension for target function value BBOBPPFIGSFTARGET - versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f55. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six). + versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f55. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six).
##bbobpprldistrlegendbiobjfixed## @@ -542,7 +393,7 @@ =10k, where k is given by the first value in the legend, for algorithmA (°) and algorithmB () . Right sub-columns: - ECDF of FEval ratios of algorithmA divided by algorithmB for target + ECDF of FEval ratios of algorithmA divided by algorithmB for target function values 10k with k given in the legend; all trial pairs for each function. Pairs where both trials failed are disregarded, pairs where one trial failed are visible in the limits being > 0 or < 1. The @@ -582,8 +433,7 @@ ##bbobpptablestwolegendbiobjfixed## Average runtime (aRT) to reach given targets, measured - in number of function evaluations in dimensions 5 (left) and 20 (right). - For each function, the aRT  + in number of function evaluations in dimensions 5 (left) and 20 (right). For each function, the aRT  and, in braces as dispersion measure, the half difference between 10 and 90%-tile of (bootstrapped) runtimes is shown for the different target ∆f-values as shown in the top row. @@ -607,7 +457,7 @@ #succ is the number of trials that reached the last target Iref+ 10−5. The median number of conducted function evaluations is additionally given in - italics, if the target in the last column was never reached. + italics, if the target in the last column was never reached. Entries, succeeded by a star, are statistically significantly better (according to the rank-sum test) when compared to all other algorithms of the table, with p = 0.05 or p = 10−k when the number k following the star is larger @@ -636,9 +486,9 @@ as the best target f-value reached within the budget by the given algorithm. Shown is then the aRT to reach ft for the given algorithm - or the budget, if the GECCO-BBOB-2009 best algorithm + or the budget, if the GECCO-BBOB-2016 best algorithm reached a better target within the budget, - divided by the best aRT  seen in GECCO-BBOB-2009 to reach ft. + divided by the best aRT seen in GECCO-BBOB-2016 to reach ft. Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median (box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio (points). The vertical line gives the maximal number of function evaluations @@ -652,6 +502,167 @@ Each cross (+) represents a single function, the line is the geometric mean. +
+##bbobECDFslegendlargescalefixed## + +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in DIMVALUE-D. The "best 2016" line corresponds to the best aRT observed during BBOB 2016 for each selected target. + +
+##bbobppfigslegendlargescalefixed## + +Average running time (aRT in number of f-evaluations + as log10 value), divided by dimension for target function value BBOBPPFIGSFTARGET + versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f24. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six). + +
+##bbobpprldistrlegendlargescalefixed## + + Empirical cumulative distribution functions (ECDF), plotting the fraction of + trials with an outcome not larger than the respective value on the x-axis. + Left subplots: ECDF of the number of function evaluations (FEvals) divided by search space dimension D, + to fall below fopt+∆f with ∆f +=10k, where k is the first value in the legend. + The thick red line represents the most difficult target value fopt+10−8. Legends indicate for each target the number of functions that were solved in at + least one trial within the displayed budget. Right subplots: ECDF of the + best achieved ∆f + for running times of 0.5D, 1.2D, 3D, 10D, 100D, 1000D,... + function evaluations + (from right to left cycling cyan-magenta-black...) and final ∆f-value (red), + where ∆f and Df denote the difference to the optimal function value. Light brown lines in the background show ECDFs for the most difficult target of all + algorithms benchmarked during BBOB-2016. + +
+##bbobpprldistrlegendtwolargescalefixed## + + Empirical cumulative distributions (ECDF) + of run lengths and speed-up ratios in 80-D (left) and 320-D (right). + Left sub-columns: ECDF of + the number of function evaluations divided by dimension D + (FEvals/D) to reach a target value fopt+∆f with ∆f +=10k, where + k is given by the first value in the legend, for + algorithmA (°) and algorithmB () . Light beige lines show the ECDF of FEvals for target value + ∆f +=10−8 of all algorithms benchmarked during + BBOB-2016. Right sub-columns: + ECDF of FEval ratios of algorithmA divided by algorithmB for target + function values 10k with k given in the legend; all + trial pairs for each function. Pairs where both trials failed are disregarded, + pairs where one trial failed are visible in the limits being > 0 or < 1. The + legend also indicates, after the colon, the number of functions that were + solved in at least one trial (algorithmA first). + +
+##bbobppfigdimlegendlargescalefixed## + + Scaling of runtime to reach fopt+10# with dimension; + runtime is measured in number of f-evaluations and # is given in the legend; + Lines: average runtime (aRT); + Cross (+): median runtime of successful runs to reach the most difficult + target that was reached at least once (but not always); + Cross (×): maximum number of + f-evaluations in any trial. Notched + boxes: interquartile range with median of simulated runs; + All values are divided by dimension and + plotted as log10 values versus dimension. Numbers above aRT-symbols (if appearing) indicate the number of trials + reaching the respective target. The light thick line with + diamonds indicates the respective best result from BBOB-2016 for + ∆f +=10−8. Horizontal lines mean linear scaling, slanted + grid lines depict quadratic scaling. + +
+##bbobpptablecaptionlargescalefixed## + + Average running time (aRT in number of function + evaluations) divided by the best aRT measured during BBOB-2016. The aRT  and in braces, as dispersion measure, the half difference between 90 and + 10%-tile of bootstrapped run lengths appear in the second row of each cell, + the best aRT  in the first. The different target ∆f-values are shown in the top row. + #succ is the number of trials that reached the (final) target fopt+ 10−8. + The median number of conducted function evaluations is additionally given in + italics, if the target in the last column was never reached. + Bold entries are statistically significantly better (according to + the rank-sum test) compared to the best algorithm in BBOB-2016, with + p = 0.05 or p = 10−k when the number k > 1 is following the + ↓ symbol, with Bonferroni correction by the number of + functions. + +
+##bbobpptablestwolegendlargescalefixed## + + Average running time (aRT in number of function + evaluations) divided by the respective best aRT measured during BBOB-2016 in + dimensions 80 (left) and 320 (right). The aRT and in braces, as dispersion measure, the half difference between 10 + and 90%-tile of bootstrapped run lengths appear for each algorithm and + target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. + #succ is the number of trials that reached the (final) target + fopt+ 10−8. + The median number of conducted function evaluations is additionally given in + italics, if the last target was never reached. + 1:algorithmAshort is algorithmA and 2:algorithmBshort is algorithmB. + Bold entries are statistically significantly better compared to the other algorithm, + with p=0.05 or p=10−k where k ∈ {2,3,4,...} is the number + following the ∗ symbol, with Bonferroni correction of 48.A ↓ indicates the same tested against the best + algorithm of BBOB-2016. + +
+##bbobpptablesmanylegendlargescalefixed## + + Average running time (aRT in number of function + evaluations) divided by the respective best aRT measured during BBOB-2016 in + different dimensions. + The aRT and in braces, as dispersion measure, the half difference between + 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and + target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. + #succ is the number of trials that reached the (final) target + fopt+ 10−8. + The median number of conducted function evaluations is additionally given in + italics, if the target in the last column was never reached. + Entries, succeeded by a star, are statistically significantly better (according to + the rank-sum test) when compared to all other algorithms of the table, with + p = 0.05 or p = 10−k when the number k following the star is larger + than 1, with Bonferroni correction of 48. A ↓ indicates the same tested against the best + algorithm of BBOB-2016. Best results are printed in bold. + +
+##bbobppscatterlegendlargescalefixed## + +Average running time (aRT in log10 of number of function evaluations) + of algorithmB (x-axis) versus algorithmA (y-axis) for NBTARGETS target values + ∆f ∈ [NBLOW, NBUP] in each dimension on functions f1 - f24. Markers on the upper or right edge indicate that the respective target + value was never reached. Markers represent dimension: + 20:+, + 40:\triangledown, + 80:, + 160:°, + 320:[¯], + 640:\Diamond. + +
+##bbobloglosstablecaptionlargescalefixed## + + aRT loss ratio versus the budget in number of f-evaluations + divided by dimension. + For each given budget FEvals, the target value ft is computed + as the best target f-value reached within the + budget by the given algorithm. + Shown is then the aRT to reach ft for the given algorithm + or the budget, if the GECCO-BBOB-2016 best algorithm + reached a better target within the budget, + divided by the best aRT seen in GECCO-BBOB-2016 to reach ft. + Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median + (box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio + (points). The vertical line gives the maximal number of function evaluations + in a single trial in this function subset. See also + the following figure for results on each function subgroup. + +
+##bbobloglossfigurecaptionlargescalefixed## + + aRT loss ratios (see the previous figure for details). + Each cross (+) represents a single function, the line + is the geometric mean. +
### @@ -659,5 +670,5 @@ TEX by TTH, -version 4.08.
On 08 Jun 2016, 11:37. +version 4.08.
On 10 Jul 2016, 22:03. diff --git a/code-postprocessing/bbob_pproc/ppfigdim.py b/code-postprocessing/bbob_pproc/ppfigdim.py index 34c9e68f0..e3e58bc26 100644 --- a/code-postprocessing/bbob_pproc/ppfigdim.py +++ b/code-postprocessing/bbob_pproc/ppfigdim.py @@ -113,7 +113,7 @@ def scaling_figure_caption(): # "$\\fopt+\\Df$ was not surpassed in a trial, from all " + # "(successful and unsuccessful) trials, and \\fopt\\ is the optimal " + # "function value. " + - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year scaling_figure_caption_fixed = caption_part_one + r"""% % Shown are $\Df = 10^{\{values_of_interest\}}$. Numbers above \aRT-symbols (if appearing) indicate the number of trials @@ -128,14 +128,14 @@ def scaling_figure_caption(): Shown is the \aRT\ for targets just not reached by % the largest $\Df$-values $\ge10^{-8}$ for which the \aRT\ of - the artificial""" + (""" GECCO-BBOB-%d""" %best_year) + r""" best algorithm + the artificial""" + (""" GECCO-BBOB-%d best algorithm """ %best_year) + r""" within the given budget $k\times\DIM$, where $k$ is shown in the legend. % was above $\{values_of_interest\}\times\DIM$ evaluations. Numbers above \aRT-symbols indicate the number of trials reaching the respective target. - The light thick line with diamonds indicates the respective best result from """ + ("""BBOB-%d""" %best_year) + r""" for + The light thick line with diamonds indicates the respective best result from """ + ("""BBOB-%d for """ %best_year) + r""" the most difficult target. Slanted grid lines indicate a scaling with ${\cal O}(\DIM)$ compared to ${\cal O}(1)$ - when using the respective %d best algorithm. + when using the respective %d best algorithm. """ %best_year # r"Shown is the \aRT\ for the smallest $\Df$-values $\ge10^{-8}$ for which the \aRT\ of the GECCO-BBOB-2009 best algorithm " + # r"was below $10^{\{values_of_interest\}}\times\DIM$ evaluations. " + diff --git a/code-postprocessing/bbob_pproc/pplogloss.py b/code-postprocessing/bbob_pproc/pplogloss.py index 2e8564ce6..40f9eff4e 100644 --- a/code-postprocessing/bbob_pproc/pplogloss.py +++ b/code-postprocessing/bbob_pproc/pplogloss.py @@ -124,7 +124,7 @@ def table_caption(): - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year caption = r"""% \aRT\ loss ratio versus the budget in number of $f$-evaluations divided by dimension. diff --git a/code-postprocessing/bbob_pproc/pprldistr.py b/code-postprocessing/bbob_pproc/pprldistr.py index 4ef576dfa..4a80026d8 100644 --- a/code-postprocessing/bbob_pproc/pprldistr.py +++ b/code-postprocessing/bbob_pproc/pprldistr.py @@ -135,7 +135,7 @@ def load_previous_RLBdata(filename=previous_RLBdata_filename): def caption_single(): - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year caption_part_one = r"""% Empirical cumulative distribution functions (ECDF), plotting the fraction of trials with an outcome not larger than the respective value on the $x$-axis. @@ -188,10 +188,11 @@ def caption_single(): return figure_caption.replace(r'TO_BE_REPLACED', '$' + 'D, '.join([str(i) for i in single_runlength_factors[:6]]) + 'D,\dots$') def caption_two(): - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year caption_two_part_one = r"""% Empirical cumulative distributions (ECDF) - of run lengths and speed-up ratios """ + ("""in %d-D (left) and %d-D (right). """ %tuple(testbedsettings.current_testbed.tabDimsOfInterest)) + r"""Left sub-columns: ECDF of + of run lengths and speed-up ratios """ + ("""in %d-D (left) and %d-D (right).""" % tuple(testbedsettings.current_testbed.tabDimsOfInterest)) + r""" + Left sub-columns: ECDF of the number of function evaluations divided by dimension $D$ (FEvals/D) """ diff --git a/code-postprocessing/bbob_pproc/pptable.py b/code-postprocessing/bbob_pproc/pptable.py index e315d8a8c..fc91d97ea 100644 --- a/code-postprocessing/bbob_pproc/pptable.py +++ b/code-postprocessing/bbob_pproc/pptable.py @@ -53,14 +53,14 @@ def get_table_caption(): """ Sets table caption, based on the testbedsettings.current_testbed and genericsettings.runlength_based_targets. """ - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year table_caption_one = r"""% Average running time (\aRT\ in number of function evaluations) divided by the best \aRT\ measured during""" + (""" BBOB-%d.""" %best_year) + r""" The \aRT\ and in braces, as dispersion measure, the half difference between 90 and 10\%-tile of bootstrapped run lengths appear in the second row of each cell, the best \aRT\ - """ # Manh : the caption varies in best_algorithm_year + """ table_caption_two1 = (r"""% in the first. The different target \Df-values are shown in the top row. \#succ is the number of trials that reached the (final) target $\fopt + """ @@ -78,7 +78,7 @@ def get_table_caption(): $p = 0.05$ or $p = 10^{-k}$ when the number $k > 1$ is following the $\downarrow$ symbol, with Bonferroni correction by the number of functions. - """ # Manh : the caption varies in best_algorithm_year + """ if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: # NOTE: no runlength-based targets supported yet diff --git a/code-postprocessing/bbob_pproc/preparehtml.py b/code-postprocessing/bbob_pproc/preparehtml.py index b66233da1..4c503a6cd 100644 --- a/code-postprocessing/bbob_pproc/preparehtml.py +++ b/code-postprocessing/bbob_pproc/preparehtml.py @@ -41,7 +41,7 @@ def prepare_html(texFile): print('pdflatex done') - tthFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tth\\tth.exe') + tthFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tth_C/tth') args = "%s %s" % (tthFile, texFile) subprocess.call(args.split(), stdout=FNULL, stderr=FNULL, shell=False) From 98b6d5ee5ffb8475bff84b3af4319a633c34e88a Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 11 Jul 2016 11:23:09 +0200 Subject: [PATCH 282/446] Change latex_commands_for_html.html for verify-postprocessing and remove some flags --- .../bbob_pproc/comp2/ppscatter.py | 2 +- .../bbob_pproc/comp2/pptable2.py | 4 +- .../bbob_pproc/compall/determineFtarget2.py | 2 +- .../bbob_pproc/compall/ppfigs.py | 5 +- .../bbob_pproc/compall/pprldmany.py | 8 +- .../bbob_pproc/compall/pptables.py | 6 +- .../bbob_pproc/latex_commands_for_html.html | 357 +++++++++--------- code-postprocessing/bbob_pproc/ppfigdim.py | 8 +- code-postprocessing/bbob_pproc/pplogloss.py | 2 +- code-postprocessing/bbob_pproc/pprldistr.py | 7 +- code-postprocessing/bbob_pproc/pptable.py | 6 +- code-postprocessing/bbob_pproc/preparehtml.py | 2 +- 12 files changed, 210 insertions(+), 199 deletions(-) diff --git a/code-postprocessing/bbob_pproc/comp2/ppscatter.py b/code-postprocessing/bbob_pproc/comp2/ppscatter.py index e8b9f5d31..49b0ae0a4 100644 --- a/code-postprocessing/bbob_pproc/comp2/ppscatter.py +++ b/code-postprocessing/bbob_pproc/comp2/ppscatter.py @@ -76,7 +76,7 @@ def prepare_figure_caption(): %d:{\color{blue}$\star$}, %d:$\circ$, %d:{\color{red}$\Box$}, - %d:{\color{magenta}$\Diamond$}. """ %tuple(testbedsettings.current_testbed.dimensions_to_display) # Manh + %d:{\color{magenta}$\Diamond$}. """ %tuple(testbedsettings.current_testbed.dimensions_to_display) if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: diff --git a/code-postprocessing/bbob_pproc/comp2/pptable2.py b/code-postprocessing/bbob_pproc/comp2/pptable2.py index 39883ee61..0829737b7 100644 --- a/code-postprocessing/bbob_pproc/comp2/pptable2.py +++ b/code-postprocessing/bbob_pproc/comp2/pptable2.py @@ -25,7 +25,7 @@ def get_table_caption(): """ Sets table caption, based on the testbedsettings.current_testbed and genericsettings.runlength_based_targets. """ - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year tabDimsOfInterest = testbedsettings.current_testbed.tabDimsOfInterest table_caption_one = r"""% Average running time (\aRT\ in number of function @@ -47,7 +47,7 @@ def get_table_caption(): """ table_caption_bi = r"""% Average runtime (\aRT) to reach given targets, measured - in number of function evaluations in""" + ("""dimensions %d (left) and %d (right). """ %tuple(tabDimsOfInterest)) + r"""% + in number of function evaluations in """ + ("""dimensions %d (left) and %d (right). """ %tuple(tabDimsOfInterest)) + r"""% For each function, the \aRT\ and, in braces as dispersion measure, the half difference between 10 and 90\%-tile of (bootstrapped) runtimes is shown for the different diff --git a/code-postprocessing/bbob_pproc/compall/determineFtarget2.py b/code-postprocessing/bbob_pproc/compall/determineFtarget2.py index d1dcf4ab2..a95c72390 100644 --- a/code-postprocessing/bbob_pproc/compall/determineFtarget2.py +++ b/code-postprocessing/bbob_pproc/compall/determineFtarget2.py @@ -434,7 +434,7 @@ def main(argv=None): sys.exit() verboseflag = False - dims = testbedsettings.current_testbed.dimensions_to_display # Manh + dims = testbedsettings.current_testbed.dimensions_to_display funcs = range(1,25) # default values list() directory = args # directories which contains data... # Process options diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index 19552f6e9..12c2236e0 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -105,7 +105,7 @@ def scaling_figure_caption(for_html = False): def prepare_ecdfs_figure_caption(): - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year bestyeartext = ( r"The ``best %d'' line " % best_year + r"corresponds to the best \aRT\ observed during BBOB %d " % best_year + @@ -266,7 +266,6 @@ def plotLegend(handles, maxval=None): for k in sorted(ys[j].keys()): #enforce best 2009 comes first in case of equality tmp = [] - # Manh : a generalization best_year_label = 'best %d' %testbedsettings.current_testbed.best_algorithm_year for h in ys[j][k]: if plt.getp(h, 'label') == best_year_label: @@ -581,7 +580,7 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd alg_definitions.append((', ' if i > 0 else '') + '%s: %s' % (symb, '\\algorithm' + abc[i % len(abc)])) alg_definitions_html += (', ' if i > 0 else '') + '%s: %s' % (symb_html, toolsdivers.str_to_latex(toolsdivers.strip_pathname1(sortedAlgs[i]))) - if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): # Manh : option large scale + if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): toolsdivers.prepend_to_file(latex_commands_filename, [#'\\providecommand{\\bbobppfigsftarget}{\\ensuremath{10^{%s}}}' # % target.loglabel(0), # int(numpy.round(numpy.log10(target))), diff --git a/code-postprocessing/bbob_pproc/compall/pprldmany.py b/code-postprocessing/bbob_pproc/compall/pprldmany.py index d8c3a2d34..8b356efa0 100644 --- a/code-postprocessing/bbob_pproc/compall/pprldmany.py +++ b/code-postprocessing/bbob_pproc/compall/pprldmany.py @@ -350,7 +350,7 @@ def get_label_length(labelList): fontsize = genericsettings.minmax_algorithm_fontsize[0] + np.min((1, np.exp(9 - lh))) * ( genericsettings.minmax_algorithm_fontsize[-1] - genericsettings.minmax_algorithm_fontsize[0]) i = 0 # loop over the elements of ys - best_year = 'best %d' % testbedsettings.current_testbed.best_algorithm_year # Manh : set 'best 2009/2016' + best_year = 'best %d' % testbedsettings.current_testbed.best_algorithm_year for j in sorted(ys.keys()): for k in reversed(sorted(ys[j].keys())): # enforce best ever comes last in case of equality @@ -712,7 +712,7 @@ def main(dictAlg, isBiobjective, order=None, outputdir='.', info='default', # Display data lines = [] - best_year = 'best %d' %testbedsettings.current_testbed.best_algorithm_year # Manh : set 'best 2009/2016' + best_year = 'best %d' %testbedsettings.current_testbed.best_algorithm_year if displaybest2009: args = {'ls': '-', 'linewidth': 6, 'marker': 'D', 'markersize': 11., 'markeredgewidth': 1.5, 'markerfacecolor': refcolor, @@ -772,8 +772,8 @@ def algname_to_label(algname, dirname=None): algtocommand[algname_to_label(alg)] = tmp if displaybest2009: tmp = r'\algzeroperfprof' - f.write(r'\providecommand{%s}{best %d}' % (tmp, testbedsettings.current_testbed.best_algorithm_year )) # Manh - algtocommand[best_year] = tmp # Manh + f.write(r'\providecommand{%s}{best %d}' % (tmp, testbedsettings.current_testbed.best_algorithm_year )) + algtocommand[best_year] = tmp commandnames = [] for label in labels: diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 0aaef95ff..2d3f5c593 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -27,14 +27,14 @@ def get_table_caption(): TODO: \hvref and \fopt should be defined via the current_testbed, preferably with a single latex command. """ - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year table_caption_one = r"""% Average running time (\aRT\ in number of function evaluations) divided by the respective best \aRT\ measured during""" + (""" BBOB-%d in #1.""" %best_year) + r""" The \aRT\ and in braces, as dispersion measure, the half difference between 10 and 90\%-tile of bootstrapped run lengths appear for each algorithm and - """ # Manh : the caption varies in best_algorithm_year + """ table_caption_two1 = r"""% target, the corresponding best \aRT\ in the first row. The different target \Df-values are shown in the top row. @@ -64,7 +64,7 @@ def get_table_caption(): $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger than 1, with Bonferroni correction of #2. """ + (r"""A $\downarrow$ indicates the same tested against the best - algorithm of BBOB-%d. """ %best_year # Manh : the caption varies in best_algorithm_year + algorithm of BBOB-%d. """ %best_year if (testbedsettings.current_testbed.best_algorithm_filename) else "") + r"""Best results are printed in bold. """) diff --git a/code-postprocessing/bbob_pproc/latex_commands_for_html.html b/code-postprocessing/bbob_pproc/latex_commands_for_html.html index 9dc9c0142..7ec9c0643 100644 --- a/code-postprocessing/bbob_pproc/latex_commands_for_html.html +++ b/code-postprocessing/bbob_pproc/latex_commands_for_html.html @@ -101,8 +101,7 @@ ##bbobpptablecaptionrlbased## Average running time (aRT in number of function - evaluations) divided by the best aRT measured during BBOB-2009. The aRT  - and in braces, as dispersion measure, the half difference between 90 and + evaluations) divided by the best aRT measured during BBOB-2009. The aRT  and in braces, as dispersion measure, the half difference between 90 and 10%-tile of bootstrapped run lengths appear in the second row of each cell, the best aRT  (preceded by the target ∆f-value in italics) in the first. #succ is the number of trials that reached the target value of the last column. @@ -119,8 +118,7 @@ Average running time (aRT in number of function evaluations) divided by the respective best aRT measured during BBOB-2009 in - dimensions 5 (left) and 20 (right). - The aRT and in braces, as dispersion measure, the half difference between 10 + dimensions 5 (left) and 20 (right). The aRT and in braces, as dispersion measure, the half difference between 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and run-length based target, the corresponding best aRT  (preceded by the target ∆f-value in italics) in the first row. #succ is the number of trials that reached the target value of the last column. @@ -135,15 +133,15 @@
##bbobpptablesmanylegendrlbased## - Average running time (aRT in number of function + Average running time (aRT in number of function evaluations) divided by the respective best aRT measured during BBOB-2009 in different dimensions. - The aRT and in braces, as dispersion measure, the half difference between - 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and + The aRT and in braces, as dispersion measure, the half difference between + 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and run-length based target, the corresponding best aRT  (preceded by the target ∆f-value in italics) in the first row. #succ is the number of trials that reached the target value of the last column. The median number of conducted function evaluations is additionally given in - italics, if the target in the last column was never reached. + italics, if the target in the last column was never reached. Entries, succeeded by a star, are statistically significantly better (according to the rank-sum test) when compared to all other algorithms of the table, with p = 0.05 or p = 10−k when the number k following the star is larger @@ -178,7 +176,7 @@ Shown is then the aRT to reach ft for the given algorithm or the budget, if the GECCO-BBOB-2009 best algorithm reached a better target within the budget, - divided by the best aRT  seen in GECCO-BBOB-2009 to reach ft. + divided by the best aRT seen in GECCO-BBOB-2009 to reach ft. Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median (box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio (points). The vertical line gives the maximal number of function evaluations @@ -235,7 +233,7 @@ ∆f =10−8 of all algorithms benchmarked during BBOB-2009. Right sub-columns: - ECDF of FEval ratios of algorithmA divided by algorithmB for target + ECDF of FEval ratios of algorithmA divided by algorithmB for target function values 10k with k given in the legend; all trial pairs for each function. Pairs where both trials failed are disregarded, pairs where one trial failed are visible in the limits being > 0 or < 1. The @@ -265,8 +263,7 @@ ##bbobpptablecaptionfixed## Average running time (aRT in number of function - evaluations) divided by the best aRT measured during BBOB-2009. The aRT  - and in braces, as dispersion measure, the half difference between 90 and + evaluations) divided by the best aRT measured during BBOB-2009. The aRT  and in braces, as dispersion measure, the half difference between 90 and 10%-tile of bootstrapped run lengths appear in the second row of each cell, the best aRT  in the first. The different target ∆f-values are shown in the top row. #succ is the number of trials that reached the (final) target fopt+ 10−8. @@ -283,8 +280,7 @@ Average running time (aRT in number of function evaluations) divided by the respective best aRT measured during BBOB-2009 in - dimensions 5 (left) and 20 (right). - The aRT and in braces, as dispersion measure, the half difference between 10 + dimensions 5 (left) and 20 (right). The aRT and in braces, as dispersion measure, the half difference between 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. #succ is the number of trials that reached the (final) target @@ -300,16 +296,16 @@
##bbobpptablesmanylegendfixed## - Average running time (aRT in number of function + Average running time (aRT in number of function evaluations) divided by the respective best aRT measured during BBOB-2009 in different dimensions. - The aRT and in braces, as dispersion measure, the half difference between - 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and + The aRT and in braces, as dispersion measure, the half difference between + 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. #succ is the number of trials that reached the (final) target fopt+ 10−8. The median number of conducted function evaluations is additionally given in - italics, if the target in the last column was never reached. + italics, if the target in the last column was never reached. Entries, succeeded by a star, are statistically significantly better (according to the rank-sum test) when compared to all other algorithms of the table, with p = 0.05 or p = 10−k when the number k following the star is larger @@ -341,7 +337,7 @@ Shown is then the aRT to reach ft for the given algorithm or the budget, if the GECCO-BBOB-2009 best algorithm reached a better target within the budget, - divided by the best aRT  seen in GECCO-BBOB-2009 to reach ft. + divided by the best aRT seen in GECCO-BBOB-2009 to reach ft. Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median (box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio (points). The vertical line gives the maximal number of function evaluations @@ -355,162 +351,17 @@ Each cross (+) represents a single function, the line is the geometric mean. -
-##bbobECDFslegendlargescalefixed## - -Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in DIMVALUE-D. - -
-##bbobppfigslegendlargescalefixed## - -Average running time (aRT in number of f-evaluations -as log10 value), divided by dimension for target function value BBOBPPFIGSFTARGET -versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f24. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six). - -
-##bbobpprldistrlegendlargescalefixed## - -Empirical cumulative distribution functions (ECDF), plotting the fraction of -trials with an outcome not larger than the respective value on the x-axis. -Left subplots: ECDF of the number of function evaluations (FEvals) divided by search space dimension D, -to fall below fopt+∆f with ∆f -=10k, where k is the first value in the legend. -The thick red line represents the most difficult target value fopt+10−8. Legends indicate for each target the number of functions that were solved in at -least one trial within the displayed budget. Right subplots: ECDF of the -best achieved ∆f -for running times of 0.5D, 1.2D, 3D, 10D, 100D, 1000D,... -function evaluations -(from right to left cycling cyan-magenta-black...) and final ∆f-value (red), -where ∆f and Df denote the difference to the optimal function value. - -
-##bbobpprldistrlegendtwolargescalefixed## - -Empirical cumulative distributions (ECDF) -of run lengths and speed-up ratios in 80-D (left) and 320-D (right). -Left sub-columns: ECDF of -the number of function evaluations divided by dimension D -(FEvals/D) to reach a target value fopt+∆f with ∆f -=10k, where -k is given by the first value in the legend, for -algorithmA (°) and algorithmB () . Right sub-columns: -ECDF of FEval ratios of algorithmA divided by algorithmB for target -function values 10k with k given in the legend; all -trial pairs for each function. Pairs where both trials failed are disregarded, -pairs where one trial failed are visible in the limits being > 0 or < 1. The -legend also indicates, after the colon, the number of functions that were -solved in at least one trial (algorithmA first). - -
-##bbobppfigdimlegendlargescalefixed## - -Scaling of runtime to reach fopt+10# with dimension; -runtime is measured in number of f-evaluations and # is given in the legend; -Lines: average runtime (aRT); -Cross (+): median runtime of successful runs to reach the most difficult -target that was reached at least once (but not always); -Cross (×): maximum number of -f-evaluations in any trial. Notched -boxes: interquartile range with median of simulated runs; -All values are divided by dimension and -plotted as log10 values versus dimension. Numbers above aRT-symbols (if appearing) indicate the number of trials -reaching the respective target. Horizontal lines mean linear scaling, slanted -grid lines depict quadratic scaling. - -
-##bbobpptablecaptionlargescalefixed## - -Average running time (aRT in number of function -evaluations). The aRT  -and in braces, as dispersion measure, the half difference between 90 and -10%-tile of bootstrapped run lengths appear in the second row of each cell, -the best aRT  in the first. The different target ∆f-values are shown in the top row. -#succ is the number of trials that reached the (final) target fopt+ 10−8. -The median number of conducted function evaluations is additionally given in -italics, if the target in the last column was never reached. - -
-##bbobpptablestwolegendlargescalefixed## - -Average running time (aRT in number of function -evaluations) in -dimensions 80 (left) and 320 (right). -The aRT and in braces, as dispersion measure, the half difference between 10 -and 90%-tile of bootstrapped run lengths appear for each algorithm and -target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. -#succ is the number of trials that reached the (final) target -fopt+ 10−8. -The median number of conducted function evaluations is additionally given in -italics, if the last target was never reached. -1:algorithmAshort is algorithmA and 2:algorithmBshort is algorithmB. -Bold entries are statistically significantly better compared to the other algorithm, -with p=0.05 or p=10−k where k ∈ {2,3,4,...} is the number -following the ∗ symbol, with Bonferroni correction of 48. - -
-##bbobpptablesmanylegendlargescalefixed## - -Average running time (aRT in number of function -evaluations) in different dimensions. -The aRT and in braces, as dispersion measure, the half difference between -10 and 90%-tile of bootstrapped run lengths appear for each algorithm and -target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. -#succ is the number of trials that reached the (final) target -fopt+ 10−8. -The median number of conducted function evaluations is additionally given in -italics, if the target in the last column was never reached. -Entries, succeeded by a star, are statistically significantly better (according to -the rank-sum test) when compared to all other algorithms of the table, with -p = 0.05 or p = 10−k when the number k following the star is larger -than 1, with Bonferroni correction of 48. - -
-##bbobppscatterlegendlargescalefixed## - -Average running time (aRT in log10 of number of function evaluations) -of algorithmB (x-axis) versus algorithmA (y-axis) for NBTARGETS target values -∆f ∈ [NBLOW, NBUP] in each dimension on functions f1 - f24. Markers on the upper or right edge indicate that the respective target -value was never reached. Markers represent dimension: -20:+, -40:\triangledown, -80:, -160:°, -320:[¯], -640:\Diamond. - -
-##bbobloglosstablecaptionlargescalefixed## - -aRT loss ratio versus the budget in number of f-evaluations -divided by dimension. -For each given budget FEvals, the target value ft is computed -as the best target f-value reached within the -budget by the given algorithm. -Shown is then the aRT to reach ft for the given algorithm. -Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median -(box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio -(points). The vertical line gives the maximal number of function evaluations -in a single trial in this function subset. See also -the following figure for results on each function subgroup. - -
-##bbobloglossfigurecaptionlargescalefixed## - -aRT loss ratios (see the previous figure for details). -Each cross (+) represents a single function, the line -is the geometric mean. -
##bbobECDFslegendbiobjfixed## -Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in DIMVALUE-D. +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in DIMVALUE-D.
##bbobppfigslegendbiobjfixed## Average running time (aRT in number of f-evaluations as log10 value), divided by dimension for target function value BBOBPPFIGSFTARGET - versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f55. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six). + versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f55. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six).
##bbobpprldistrlegendbiobjfixed## @@ -542,7 +393,7 @@ =10k, where k is given by the first value in the legend, for algorithmA (°) and algorithmB () . Right sub-columns: - ECDF of FEval ratios of algorithmA divided by algorithmB for target + ECDF of FEval ratios of algorithmA divided by algorithmB for target function values 10k with k given in the legend; all trial pairs for each function. Pairs where both trials failed are disregarded, pairs where one trial failed are visible in the limits being > 0 or < 1. The @@ -582,8 +433,7 @@ ##bbobpptablestwolegendbiobjfixed## Average runtime (aRT) to reach given targets, measured - in number of function evaluations in dimensions 5 (left) and 20 (right). - For each function, the aRT  + in number of function evaluations in dimensions 5 (left) and 20 (right). For each function, the aRT  and, in braces as dispersion measure, the half difference between 10 and 90%-tile of (bootstrapped) runtimes is shown for the different target ∆f-values as shown in the top row. @@ -607,7 +457,7 @@ #succ is the number of trials that reached the last target Iref+ 10−5. The median number of conducted function evaluations is additionally given in - italics, if the target in the last column was never reached. + italics, if the target in the last column was never reached. Entries, succeeded by a star, are statistically significantly better (according to the rank-sum test) when compared to all other algorithms of the table, with p = 0.05 or p = 10−k when the number k following the star is larger @@ -636,9 +486,9 @@ as the best target f-value reached within the budget by the given algorithm. Shown is then the aRT to reach ft for the given algorithm - or the budget, if the GECCO-BBOB-2009 best algorithm + or the budget, if the GECCO-BBOB-2016 best algorithm reached a better target within the budget, - divided by the best aRT  seen in GECCO-BBOB-2009 to reach ft. + divided by the best aRT seen in GECCO-BBOB-2016 to reach ft. Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median (box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio (points). The vertical line gives the maximal number of function evaluations @@ -652,6 +502,167 @@ Each cross (+) represents a single function, the line is the geometric mean. +
+##bbobECDFslegendlargescalefixed## + +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for BBOBPPFIGSFTARGET targets with target precision in BBOBPPFIGSTARGETRANGE for all functions and subgroups in DIMVALUE-D. The "best 2016" line corresponds to the best aRT observed during BBOB 2016 for each selected target. + +
+##bbobppfigslegendlargescalefixed## + +Average running time (aRT in number of f-evaluations + as log10 value), divided by dimension for target function value BBOBPPFIGSFTARGET + versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f24. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six). + +
+##bbobpprldistrlegendlargescalefixed## + + Empirical cumulative distribution functions (ECDF), plotting the fraction of + trials with an outcome not larger than the respective value on the x-axis. + Left subplots: ECDF of the number of function evaluations (FEvals) divided by search space dimension D, + to fall below fopt+∆f with ∆f +=10k, where k is the first value in the legend. + The thick red line represents the most difficult target value fopt+10−8. Legends indicate for each target the number of functions that were solved in at + least one trial within the displayed budget. Right subplots: ECDF of the + best achieved ∆f + for running times of 0.5D, 1.2D, 3D, 10D, 100D, 1000D,... + function evaluations + (from right to left cycling cyan-magenta-black...) and final ∆f-value (red), + where ∆f and Df denote the difference to the optimal function value. Light brown lines in the background show ECDFs for the most difficult target of all + algorithms benchmarked during BBOB-2016. + +
+##bbobpprldistrlegendtwolargescalefixed## + + Empirical cumulative distributions (ECDF) + of run lengths and speed-up ratios in 80-D (left) and 320-D (right). + Left sub-columns: ECDF of + the number of function evaluations divided by dimension D + (FEvals/D) to reach a target value fopt+∆f with ∆f +=10k, where + k is given by the first value in the legend, for + algorithmA (°) and algorithmB () . Light beige lines show the ECDF of FEvals for target value + ∆f +=10−8 of all algorithms benchmarked during + BBOB-2016. Right sub-columns: + ECDF of FEval ratios of algorithmA divided by algorithmB for target + function values 10k with k given in the legend; all + trial pairs for each function. Pairs where both trials failed are disregarded, + pairs where one trial failed are visible in the limits being > 0 or < 1. The + legend also indicates, after the colon, the number of functions that were + solved in at least one trial (algorithmA first). + +
+##bbobppfigdimlegendlargescalefixed## + + Scaling of runtime to reach fopt+10# with dimension; + runtime is measured in number of f-evaluations and # is given in the legend; + Lines: average runtime (aRT); + Cross (+): median runtime of successful runs to reach the most difficult + target that was reached at least once (but not always); + Cross (×): maximum number of + f-evaluations in any trial. Notched + boxes: interquartile range with median of simulated runs; + All values are divided by dimension and + plotted as log10 values versus dimension. Numbers above aRT-symbols (if appearing) indicate the number of trials + reaching the respective target. The light thick line with + diamonds indicates the respective best result from BBOB-2016 for + ∆f +=10−8. Horizontal lines mean linear scaling, slanted + grid lines depict quadratic scaling. + +
+##bbobpptablecaptionlargescalefixed## + + Average running time (aRT in number of function + evaluations) divided by the best aRT measured during BBOB-2016. The aRT  and in braces, as dispersion measure, the half difference between 90 and + 10%-tile of bootstrapped run lengths appear in the second row of each cell, + the best aRT  in the first. The different target ∆f-values are shown in the top row. + #succ is the number of trials that reached the (final) target fopt+ 10−8. + The median number of conducted function evaluations is additionally given in + italics, if the target in the last column was never reached. + Bold entries are statistically significantly better (according to + the rank-sum test) compared to the best algorithm in BBOB-2016, with + p = 0.05 or p = 10−k when the number k > 1 is following the + ↓ symbol, with Bonferroni correction by the number of + functions. + +
+##bbobpptablestwolegendlargescalefixed## + + Average running time (aRT in number of function + evaluations) divided by the respective best aRT measured during BBOB-2016 in + dimensions 80 (left) and 320 (right). The aRT and in braces, as dispersion measure, the half difference between 10 + and 90%-tile of bootstrapped run lengths appear for each algorithm and + target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. + #succ is the number of trials that reached the (final) target + fopt+ 10−8. + The median number of conducted function evaluations is additionally given in + italics, if the last target was never reached. + 1:algorithmAshort is algorithmA and 2:algorithmBshort is algorithmB. + Bold entries are statistically significantly better compared to the other algorithm, + with p=0.05 or p=10−k where k ∈ {2,3,4,...} is the number + following the ∗ symbol, with Bonferroni correction of 48.A ↓ indicates the same tested against the best + algorithm of BBOB-2016. + +
+##bbobpptablesmanylegendlargescalefixed## + + Average running time (aRT in number of function + evaluations) divided by the respective best aRT measured during BBOB-2016 in + different dimensions. + The aRT and in braces, as dispersion measure, the half difference between + 10 and 90%-tile of bootstrapped run lengths appear for each algorithm and + target, the corresponding best aRT  in the first row. The different target ∆f-values are shown in the top row. + #succ is the number of trials that reached the (final) target + fopt+ 10−8. + The median number of conducted function evaluations is additionally given in + italics, if the target in the last column was never reached. + Entries, succeeded by a star, are statistically significantly better (according to + the rank-sum test) when compared to all other algorithms of the table, with + p = 0.05 or p = 10−k when the number k following the star is larger + than 1, with Bonferroni correction of 48. A ↓ indicates the same tested against the best + algorithm of BBOB-2016. Best results are printed in bold. + +
+##bbobppscatterlegendlargescalefixed## + +Average running time (aRT in log10 of number of function evaluations) + of algorithmB (x-axis) versus algorithmA (y-axis) for NBTARGETS target values + ∆f ∈ [NBLOW, NBUP] in each dimension on functions f1 - f24. Markers on the upper or right edge indicate that the respective target + value was never reached. Markers represent dimension: + 20:+, + 40:\triangledown, + 80:, + 160:°, + 320:[¯], + 640:\Diamond. + +
+##bbobloglosstablecaptionlargescalefixed## + + aRT loss ratio versus the budget in number of f-evaluations + divided by dimension. + For each given budget FEvals, the target value ft is computed + as the best target f-value reached within the + budget by the given algorithm. + Shown is then the aRT to reach ft for the given algorithm + or the budget, if the GECCO-BBOB-2016 best algorithm + reached a better target within the budget, + divided by the best aRT seen in GECCO-BBOB-2016 to reach ft. + Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median + (box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio + (points). The vertical line gives the maximal number of function evaluations + in a single trial in this function subset. See also + the following figure for results on each function subgroup. + +
+##bbobloglossfigurecaptionlargescalefixed## + + aRT loss ratios (see the previous figure for details). + Each cross (+) represents a single function, the line + is the geometric mean. +
### @@ -659,5 +670,5 @@ TEX by TTH, -version 4.08.
On 08 Jun 2016, 11:37. +version 4.08.
On 10 Jul 2016, 22:03. diff --git a/code-postprocessing/bbob_pproc/ppfigdim.py b/code-postprocessing/bbob_pproc/ppfigdim.py index 34c9e68f0..e3e58bc26 100644 --- a/code-postprocessing/bbob_pproc/ppfigdim.py +++ b/code-postprocessing/bbob_pproc/ppfigdim.py @@ -113,7 +113,7 @@ def scaling_figure_caption(): # "$\\fopt+\\Df$ was not surpassed in a trial, from all " + # "(successful and unsuccessful) trials, and \\fopt\\ is the optimal " + # "function value. " + - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year scaling_figure_caption_fixed = caption_part_one + r"""% % Shown are $\Df = 10^{\{values_of_interest\}}$. Numbers above \aRT-symbols (if appearing) indicate the number of trials @@ -128,14 +128,14 @@ def scaling_figure_caption(): Shown is the \aRT\ for targets just not reached by % the largest $\Df$-values $\ge10^{-8}$ for which the \aRT\ of - the artificial""" + (""" GECCO-BBOB-%d""" %best_year) + r""" best algorithm + the artificial""" + (""" GECCO-BBOB-%d best algorithm """ %best_year) + r""" within the given budget $k\times\DIM$, where $k$ is shown in the legend. % was above $\{values_of_interest\}\times\DIM$ evaluations. Numbers above \aRT-symbols indicate the number of trials reaching the respective target. - The light thick line with diamonds indicates the respective best result from """ + ("""BBOB-%d""" %best_year) + r""" for + The light thick line with diamonds indicates the respective best result from """ + ("""BBOB-%d for """ %best_year) + r""" the most difficult target. Slanted grid lines indicate a scaling with ${\cal O}(\DIM)$ compared to ${\cal O}(1)$ - when using the respective %d best algorithm. + when using the respective %d best algorithm. """ %best_year # r"Shown is the \aRT\ for the smallest $\Df$-values $\ge10^{-8}$ for which the \aRT\ of the GECCO-BBOB-2009 best algorithm " + # r"was below $10^{\{values_of_interest\}}\times\DIM$ evaluations. " + diff --git a/code-postprocessing/bbob_pproc/pplogloss.py b/code-postprocessing/bbob_pproc/pplogloss.py index 2e8564ce6..40f9eff4e 100644 --- a/code-postprocessing/bbob_pproc/pplogloss.py +++ b/code-postprocessing/bbob_pproc/pplogloss.py @@ -124,7 +124,7 @@ def table_caption(): - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year caption = r"""% \aRT\ loss ratio versus the budget in number of $f$-evaluations divided by dimension. diff --git a/code-postprocessing/bbob_pproc/pprldistr.py b/code-postprocessing/bbob_pproc/pprldistr.py index 4ef576dfa..4a80026d8 100644 --- a/code-postprocessing/bbob_pproc/pprldistr.py +++ b/code-postprocessing/bbob_pproc/pprldistr.py @@ -135,7 +135,7 @@ def load_previous_RLBdata(filename=previous_RLBdata_filename): def caption_single(): - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year caption_part_one = r"""% Empirical cumulative distribution functions (ECDF), plotting the fraction of trials with an outcome not larger than the respective value on the $x$-axis. @@ -188,10 +188,11 @@ def caption_single(): return figure_caption.replace(r'TO_BE_REPLACED', '$' + 'D, '.join([str(i) for i in single_runlength_factors[:6]]) + 'D,\dots$') def caption_two(): - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year caption_two_part_one = r"""% Empirical cumulative distributions (ECDF) - of run lengths and speed-up ratios """ + ("""in %d-D (left) and %d-D (right). """ %tuple(testbedsettings.current_testbed.tabDimsOfInterest)) + r"""Left sub-columns: ECDF of + of run lengths and speed-up ratios """ + ("""in %d-D (left) and %d-D (right).""" % tuple(testbedsettings.current_testbed.tabDimsOfInterest)) + r""" + Left sub-columns: ECDF of the number of function evaluations divided by dimension $D$ (FEvals/D) """ diff --git a/code-postprocessing/bbob_pproc/pptable.py b/code-postprocessing/bbob_pproc/pptable.py index e315d8a8c..fc91d97ea 100644 --- a/code-postprocessing/bbob_pproc/pptable.py +++ b/code-postprocessing/bbob_pproc/pptable.py @@ -53,14 +53,14 @@ def get_table_caption(): """ Sets table caption, based on the testbedsettings.current_testbed and genericsettings.runlength_based_targets. """ - best_year = testbedsettings.current_testbed.best_algorithm_year # Manh + best_year = testbedsettings.current_testbed.best_algorithm_year table_caption_one = r"""% Average running time (\aRT\ in number of function evaluations) divided by the best \aRT\ measured during""" + (""" BBOB-%d.""" %best_year) + r""" The \aRT\ and in braces, as dispersion measure, the half difference between 90 and 10\%-tile of bootstrapped run lengths appear in the second row of each cell, the best \aRT\ - """ # Manh : the caption varies in best_algorithm_year + """ table_caption_two1 = (r"""% in the first. The different target \Df-values are shown in the top row. \#succ is the number of trials that reached the (final) target $\fopt + """ @@ -78,7 +78,7 @@ def get_table_caption(): $p = 0.05$ or $p = 10^{-k}$ when the number $k > 1$ is following the $\downarrow$ symbol, with Bonferroni correction by the number of functions. - """ # Manh : the caption varies in best_algorithm_year + """ if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: # NOTE: no runlength-based targets supported yet diff --git a/code-postprocessing/bbob_pproc/preparehtml.py b/code-postprocessing/bbob_pproc/preparehtml.py index b66233da1..4c503a6cd 100644 --- a/code-postprocessing/bbob_pproc/preparehtml.py +++ b/code-postprocessing/bbob_pproc/preparehtml.py @@ -41,7 +41,7 @@ def prepare_html(texFile): print('pdflatex done') - tthFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tth\\tth.exe') + tthFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tth_C/tth') args = "%s %s" % (tthFile, texFile) subprocess.call(args.split(), stdout=FNULL, stderr=FNULL, shell=False) From f659dd89bef6af31e39398057cd15f555ff43044 Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 11 Jul 2016 11:33:23 +0200 Subject: [PATCH 283/446] Revert to 'tth\tth.exe for' testing in Windows --- code-postprocessing/bbob_pproc/preparehtml.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-postprocessing/bbob_pproc/preparehtml.py b/code-postprocessing/bbob_pproc/preparehtml.py index 4c503a6cd..b66233da1 100644 --- a/code-postprocessing/bbob_pproc/preparehtml.py +++ b/code-postprocessing/bbob_pproc/preparehtml.py @@ -41,7 +41,7 @@ def prepare_html(texFile): print('pdflatex done') - tthFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tth_C/tth') + tthFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tth\\tth.exe') args = "%s %s" % (tthFile, texFile) subprocess.call(args.split(), stdout=FNULL, stderr=FNULL, shell=False) From 7851cbc7c25e71d7e4b92395a6932c358636c2b1 Mon Sep 17 00:00:00 2001 From: NDManh Date: Mon, 11 Jul 2016 11:33:23 +0200 Subject: [PATCH 284/446] Revert to 'tth\tth.exe for' testing in Windows --- code-postprocessing/bbob_pproc/preparehtml.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-postprocessing/bbob_pproc/preparehtml.py b/code-postprocessing/bbob_pproc/preparehtml.py index 4c503a6cd..b66233da1 100644 --- a/code-postprocessing/bbob_pproc/preparehtml.py +++ b/code-postprocessing/bbob_pproc/preparehtml.py @@ -41,7 +41,7 @@ def prepare_html(texFile): print('pdflatex done') - tthFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tth_C/tth') + tthFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tth\\tth.exe') args = "%s %s" % (tthFile, texFile) subprocess.call(args.split(), stdout=FNULL, stderr=FNULL, shell=False) From 056a8cbe74da577d7512c20856f0119c1264936d Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 12 Jul 2016 14:09:24 +0200 Subject: [PATCH 285/446] Update 'verify-postprocessing' test for Mac --- code-postprocessing/bbob_pproc/preparehtml.py | 6 +- code-postprocessing/bbob_pproc/tth_C/CHANGES | 1303 + code-postprocessing/bbob_pproc/tth_C/INSTALL | 7 + .../bbob_pproc/tth_C/latex2gif | 19 + .../bbob_pproc/tth_C/license.txt | 17 + code-postprocessing/bbob_pproc/tth_C/ps2gif | 18 + code-postprocessing/bbob_pproc/tth_C/ps2png | 20 + code-postprocessing/bbob_pproc/tth_C/tth | Bin 0 -> 716960 bytes code-postprocessing/bbob_pproc/tth_C/tth.1 | 362 + code-postprocessing/bbob_pproc/tth_C/tth.c | 28980 ++++++++++++++++ code-postprocessing/bbob_pproc/tth_C/tth.gif | Bin 0 -> 7341 bytes .../bbob_pproc/tth_C/tth_manual.html | 3123 ++ .../bbob_pproc/tth_C/tthsplit.c | 60 + 13 files changed, 33914 insertions(+), 1 deletion(-) create mode 100644 code-postprocessing/bbob_pproc/tth_C/CHANGES create mode 100644 code-postprocessing/bbob_pproc/tth_C/INSTALL create mode 100644 code-postprocessing/bbob_pproc/tth_C/latex2gif create mode 100644 code-postprocessing/bbob_pproc/tth_C/license.txt create mode 100644 code-postprocessing/bbob_pproc/tth_C/ps2gif create mode 100644 code-postprocessing/bbob_pproc/tth_C/ps2png create mode 100755 code-postprocessing/bbob_pproc/tth_C/tth create mode 100644 code-postprocessing/bbob_pproc/tth_C/tth.1 create mode 100644 code-postprocessing/bbob_pproc/tth_C/tth.c create mode 100644 code-postprocessing/bbob_pproc/tth_C/tth.gif create mode 100644 code-postprocessing/bbob_pproc/tth_C/tth_manual.html create mode 100644 code-postprocessing/bbob_pproc/tth_C/tthsplit.c diff --git a/code-postprocessing/bbob_pproc/preparehtml.py b/code-postprocessing/bbob_pproc/preparehtml.py index b66233da1..23586d17a 100644 --- a/code-postprocessing/bbob_pproc/preparehtml.py +++ b/code-postprocessing/bbob_pproc/preparehtml.py @@ -41,7 +41,11 @@ def prepare_html(texFile): print('pdflatex done') - tthFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tth\\tth.exe') + if ('win32' in sys.platform): + tthFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tth\\tth.exe') + else: + tthFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tth_C/tth') + args = "%s %s" % (tthFile, texFile) subprocess.call(args.split(), stdout=FNULL, stderr=FNULL, shell=False) diff --git a/code-postprocessing/bbob_pproc/tth_C/CHANGES b/code-postprocessing/bbob_pproc/tth_C/CHANGES new file mode 100644 index 000000000..525705478 --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/CHANGES @@ -0,0 +1,1303 @@ +Version 4.07 +____________ +Fix the tthverbatim command so it can be used as planned to end environments. + +Version 4.07 +____________ +Add Polish characters (from package fontenc} to those recognized by default. + +Version 4.06 +____________ +Implement \tthverbatim{} command. + +Version 4.05 +____________ +Reimplement mathml bold as mathvariant. Implement \bm as bold-italic. +Make environment abstract redefinable. +Add class to citation, citeref. + +Version 4.04 +____________ +Fix bug in \not= when inside \edef. +Fix bug in refs.xml reference while splitting. + +Version 4.03 +____________ +Make former -w4 html style of font size changes the default. +Now -w4 turns it off. +Replace with (mostly) and appropriate styles. +Fix bug with big /. +Fix bug with \index entries in footnotes. +Change to to satisfy xhtml 1.1. + +Version 4.02 +____________ +Fix order of

in chapter/section headers to work around kindlegen bug. +Fix index links not to include a new line, which breaks spacing. +Fix xhtml DTD reference. +Various fixes to improve XHTML conformity. +Remove unallowed characters from automatically generated name attributes. +Prevent \item[] from causing a standard violation in xhtml. +Fix ampersands in URLs. Need to appear as $amp; even in the href. +Make
into
... +Make one giant
(because strict does not allow text outside + of containers). +Prevent multiple citations from generating multiple anchors with same name. +Differentiate anchors from multiple identical index entries. +Remove compact attributes from
no longer honored or valid. +Remove width attributes from index and use instead. + +Version 4.01 Release of Full Public Version of Lex Source +_________________________________________________________ +Release under the GPL2. Adjust some readme and other files accordingly. + +Version 4.00 Release of Full Public Version of Lex Source +_________________________________________________________ + 5 Dec 2010 + +Changes between versions 3.88 and 3.89 +______________________________________ +Fix bug in unoptimized version handling newcommand definitions. + +Changes between versions 3.87 and 3.88 +______________________________________ +Fix bug in $$A_\textrm{blah}$$ parsing. + +Changes between versions 3.86 and 3.87 +______________________________________ +Change unicode coding of varphi and varepsilon to accommodate the +inconsistent unicode glyphs. +Make -u2 the default tth coding. +Make -y3 the default compression. I.e. use inline over accents. + +Changes between versions 3.85 and 3.86 +______________________________________ +Fix ifcase to support \else and nesting. +Implement \value. 12 Sep 09 + +Changes between versions 3.84 and 3.85 +______________________________________ +Make unicode hbar the default. +Add align="left" to tabular td even when it is formally unnecessary + to work around IE6.0 bug. + +Changes between versions 3.83 and 3.84 +______________________________________ +Add support for newcommand*, renewcommand* providecommand* + +Changes between versions 3.82 and 3.83 +______________________________________ +Fix segfault risks in macarg and related states. +Fix \url to allow % characters in url. 6 Sep 08. + +Changes between versions 3.81 and 3.82 +______________________________________ +Fix utf-8 bugs in bracket encoding. +Fix ifx bug. + +Changes between versions 3.80 and 3.81 +______________________________________ +Adjust flex source to accommodate bugs in new versions of flex (>2.5.4a) +Should be no changes to behaviour. 3 Jun 08. + +Changes between versions 3.79 and 3.80 +______________________________________ +Define an null AtEndDocument in latex to silence hyperref error messages. + +Changes between versions 3.78 and 3.79 +______________________________________ +Fix escaping of # before a digit when in parameter substitution. + +Changes between versions 3.77 and 3.78 +______________________________________ +Fix \hyperref incorrectly escaping #. + +Changes between versions 3.76 and 3.77 +______________________________________ +TtH license changed to allow free use, even commercial. + +Changes between versions 3.75 and 3.76 +______________________________________ +Fix ignoring of %%tth: before LaTeX \item. 31 Aug 06 + +Changes between versions 3.74 and 3.75 +______________________________________ +Make fatal error exits more systematic. +Implement orderly termination at return value in tthfunc. + +Changes between versions 3.73 and 3.74 +______________________________________ +Fix unembraced $^\the\counter$ bug. 1 Apr 06. + +Changes between versions 3.72 and 3.73 +______________________________________ +Fix omitted embracing of complex expressions in in-line fractions when using +unicode, arising from TTH_COMPLEX inadequate definition. 23 Mar 06. + +Changes between versions 3.71 and 3.72 +______________________________________ +Implement -i switch for ttm to force even multicharacter sequences to be +italic in mathml. 27 Dec 05. + +Changes between versions 3.70 and 3.71 +______________________________________ +19 Nov 05 Accept (ghastly style) space between accent and character. + +Changes between versions 3.69 and 3.70 +______________________________________ +Revert to HTML4.0 DOCTYPE by default because gecko is reported then to +give proper symbols on windows platforms. +Fix charset meta declaration between XML and HTML again: fell out. + +Changes between versions 3.68 and 3.69 +______________________________________ +23 Aug 2005 Fix noalign when it occurs in array in equation. +Fix problem with charset meta declaration between XML and HTML. + +Changes between versions 3.67 and 3.68 +______________________________________ +30 May 2005. Add a meta declaration of charset for -u0 (HTML) versions. +This is necessitated by increasing assumption that documents are utf-8 +(by default) by modern browsers and file systems. + +Changes between versions 3.66 and 3.67 +______________________________________ +Make /,|, vertical arrows, langl and rangl non-stretchy by default. (MathML) + +Changes between versions 3.65 and 3.66 +______________________________________ +Make .xml the default file extension for MathML (ttm). +Improve accuracy of ttm_manual. + +Changes between versions 3.64 and 3.65 +______________________________________ +Make verb[atim] translate spaces as  . + +Changes between versions 3.63 and 3.64 +______________________________________ +Fix bug with @ used as an identifier in equations with subscripts. +Fix infinite loop with null or improper alignment arguments. + +Changes between versions 3.62 and 3.63 +______________________________________ +Fix bug in \prod. (MathML) +Fix \nolimits bugs in MathML. +Fix \iff bug in MathML. + +Changes between versions 3.61 and 3.62 +______________________________________ +Fix bug in MathML with nested sub&supscripts. + +Changes between versions 3.60 and 3.61 +______________________________________ +Fix bug in e.g. \}^n_{i=1} handling of subdefer in \} \{ etc. Mathml only. +Fix bug in \left(^U_D by adding subdefer. Mathml. + +Changes between versions 3.59 and 3.60 +______________________________________ +Fix problem with dimensions mm and ex. + +Changes between versions 3.58 and 3.59 +______________________________________ +The changes in 3.58 probably caused more problems than they fixed, +especially with \multicolumn cases. Take out most of the changes till +they can be considered more carefully. + +Changes between versions 3.57 and 3.58 +______________________________________ +Implement implied grouping for each cell of a matrix or tabular. +This should fix an number of problems with e.g. \vbox in \halign +and setting of fonts within cells giving xml parse errors. + +Changes between versions 3.56 and 3.57 +______________________________________ +Discard \noindent silently in equations (can occur in \noaligns). +Recognize \crcr and \multispan in \matrix. +Allow silencing unknown command warnings via -v32768 + +Changes between versions 3.55 and 3.56 +______________________________________ +Fix \noalign. Avoids some situations with negative closure count. +Fix internal command recognition tth_ errors in \edefs and \setboxes. + +Changes between versions 3.54 and 3.55 +______________________________________ +Fix obscure bug involving \vbox{} in \halign. (remove \\cr). + +Changes between versions 3.53 and 3.54 +______________________________________ +Fix further scanner push-back problems, hopefully for good. +Prevent the appearance of extra space in e.g. $^1$ in HTML (not MathML). + +Changes between versions 3.52 and 3.53 +______________________________________ +Improve comment handling between \items to prevent extra space. +spacing independent of -w switch. +Fix syntax of \buildrel. + +Changes between versions 3.51 and 3.52 +______________________________________ +Fix scanner push-back error arising from "Special Inline" equation code. + +Changes between versions 3.50 and 3.51 +______________________________________ +Fix broken footnotes inside equations in MathML. +Fix optional arguments in itemize/enumerate that do [{[blah]}]. +Define tabularnewline=\\ +Fix improper grouping arising in paragraph and subparagraph. +Fix noalign in tth to avoid improper grouping. +Improve title checking state to avoid many improper tags in the head. +Most of these are for using strict XHTML. + +Changes between versions 3.49 and 3.50 +______________________________________ +Fix \delta non-recognition due to typing. +Improve boldmath handling in mathml. + +Changes between versions 3.48 and 3.49 +______________________________________ +Fix \textsf and similar constructs in mathml. + +Changes between versions 3.47 and 3.48 +______________________________________ +Fix some title generation problems for xml compatibility. + +Changes between versions 3.45 and 3.47 +______________________________________ +Version 3.45 had serious bugs in matrix and eqalign code. Don't use it. +Fix those bugs (I hope!) +Infrastructure changes affecting the code for \choose, \sqrt, \textboxes, +matrices, and other active concepts. + + +Changes between versions 3.44 and 3.45 +______________________________________ +Fix Mathml syntax problem with textboxes. +Fix plain tex footnote in equations to obey xml syntax. +Fix double subscripting of operators MathML syntax problem. + +Changes between versions 3.43 and 3.44 +______________________________________ +Try again on the matrix/eqalign code to fix both simultaneously. + +Changes between versions 3.42 and 3.43 +______________________________________ +Fix line-end error when \overline starts a line. + +Changes between versions 3.41 and 3.42 +______________________________________ +Recognize \displaylines and \leqalignno as synonyms for \eqalign(no). +Make | in text mode give - +Implement \acute \i. +Fix a corruption of \matrix code that arose before version 3.37. + +Changes between versions 3.40 and 3.41 +______________________________________ +Restore some cellpadding to space out major equation terms better. +Remove additional space at start of numerators arising from alignment fix. + +Changes between versions 3.39 and 3.40 +______________________________________ +Change file extension for makeindex style to .tms to avoid overwriting. +Ensure paragraph style sheet is included in split files. + +Changes between versions 3.38 and 3.39 +______________________________________ +Fix XHTML incompatibility/standard violation in equalign and eqnarray. + +Changes between versions 3.37 and 3.38 +______________________________________ +Fix \index{...} to grab its whole argument even if it contains (e.g.) %. + +Changes between versions 3.36 and 3.37 +______________________________________ +Fix a bug in \hsize during edefs, setboxes etc. + +Changes between versions 3.35 and 3.36 +______________________________________ +Recognize a number of additional operators and symbols in MathML. + +Changes between versions 3.34 and 3.35 +______________________________________ +Fix ttm not to use mrow when using horizontally stretchy constructs. +Fix some other mrow enclosure logic. +Change DOCTYPE of mathml output to refer to mathml, hence enabling entites. + +Changes between versions 3.33 and 3.34 +______________________________________ +Use some alternate MathML entities for ones that Mozilla fails to recognize +Change DOCTYPE to refer to 4.01 by default to switch off quirks mode in Mozilla +Introduce writing style -w4 to use CSS to change sizes. + This improves the formal standard-compliance, but not rendering much. +Use for sub/supscripts on large symbols for compatibility. +Add cellpadding and cellspacing=0 in several places: improves layout. +Adjust height of stretched delimiters. +Fix \lefteq bug in html and mathml. + +Changes between versions 3.32 and 3.33 +______________________________________ +Support \valign with a single row. +Fix bug in hsize of a vbox. + +Changes between versions 3.31 and 3.32 +______________________________________ +Fix input filenames or comments at end of file with no new line. +Report unknown commands or dimensions only the first time. +Define floatingfigure environment. +Reduced verbosity of figure conversion/inclusion messages. + +Changes between versions 3.30 and 3.31 +______________________________________ +Accommodate graphics when a pdf file or even no source ps/pdf exists. + +Changes between versions 3.22 and 3.30 +______________________________________ +Make the removal of

permanent. +Implement \newdimen +Implement advancing of dimensions. +Cope with expansion of macros when searching for counters/numbers/dimensions. +Update the built-in help texts. +Output http type message rationally with -c switch. +Explicitly discard footlines. +Add hrules to index for visual improvement. +Improve layout of \eqnarray etc. +Make citet etc work in footnotes. + +Changes between versions 3.21 and 3.22 +______________________________________ +Fix tag nesting error in index from \indexspace +Change -w2 handling of paragraphs to improve font handling. +Remove commenting of -w2 stylesheet to prevent XML browsers ignoring it. + +Changes between versions 3.20 and 3.21 +______________________________________ +Fix bug in verbatiminput. +Fix bug in \itemsep. + +Changes between versions 3.13 and 3.20 +______________________________________ +Include tth-gui with TtHgold Windows version. +Change Windows version compilation to mingw cross-compiler. +Move split page links NEXT and PREVIOUS to right hand side of page. + + +Changes between versions 3.12 and 3.13 +______________________________________ +Add displaystyle to MathML for rendering improvements. +TtM fixes of unmatched underover tags. + +Changes between versions 3.11 and 3.12 +______________________________________ +Add mathml mstyle displaystyle="true" to equations. +Fix mathml munderover termination bug. + +Changes between versions 3.11 and 3.12 +______________________________________ +Fix problem with multiple-level mbox inside textstyle equation. +Fix erroneous columnalign=0 in ttm. + +Changes between versions 3.10 and 3.11 +______________________________________ +Fix obscure bug with conditionals in math arrays. +Fix hbox bug introduced at 3.09. + +Changes between versions 3.09 and 3.10 +______________________________________ +Fix mathml bug in limited operators introduced by null fix in 3.07 + +Changes between versions 3.08 and 3.09 +______________________________________ +Improve standard validity of lists. +Improve the box behaviour of \includegraphics. +Fix bugs in extension handling of figure names. +Improve handling of \hsize changes in \hbox and \vbox. + +Changes between versions 3.07 and 3.08 +______________________________________ +Implement improved HTML title interpretation and -n switch. + +Changes between versions 3.06 and 3.07 +______________________________________ +Reimplement file \input name acquisition to allow macro expansion in the name. +Explicitly recognize \jobname. +Correct colspan reference in TtM. +Enable \cite{} to contain spaces (LaTeX permits it, but it's daft). +Fix null mrow for constructs like {}_i in MathML. + +Changes between versions 3.05 and 3.06 +______________________________________ +Remove the from -u1 and -u2 char encoding cases. +Implement -pNULL as a switch preventing \input or \include. + +Changes between versions 3.04 and 3.05 +______________________________________ +Inprove compatibility of \href and \url with URLs containing %. +Change tthnatbib.sty name to tthntbib.sty to avoid 8.3 length truncation. +Prevent buffer overflow in -p switch argument handling. +Fix \& bug in equations. +Improve title behaviour when LaTeX has e.g. \date before \title. + +Changes between versions 3.03 and 3.04 +______________________________________ +Improve makeindex operation, avoiding file overlap with latex. +Define \glossary to be equivalent to \index. + +Changes between versions 3.02 and 3.03 +______________________________________ +Implement renewenvironment as newenvironment with a warning. + +Changes between versions 3.01 and 3.02 +______________________________________ +Fix \\end {...} bad style. +Fix MathML problem with embraced single characters and sub/super scripts. +Implement automatic .aux and .bbl file creation with -a switch. +Implement work around for DOS file handles limitations. +Fix bug in ifnum. + +Changes between versions 3.00 and 3.01 +______________________________________ +Fix mangled HTML for \root 3 \of ... +Fix TtM \sqrt. +Improve vertical layout of \underbrace etc. +Improve TtM equation numbering layout. +Correct \bar to be a non-stretch overline. + +Changes between versions 2.92 and 3.0 +______________________________________ +Implement unicode support in the -u switch +Implement Two-column index. +Improve line counting for diagnostics. +Make height compression (-y1) the default. + +Correct colspan=0. +Fix missing

s +Work around Konqueror alignment bug. + + +Changes between versions 2.91 and 2.92 +______________________________________ +Oops. Footnotes were broken in 2.91. Don't use it. Use 2.92. + +Changes between versions 2.90 and 2.91 +______________________________________ +Fix optional argument detection that broke \root \of and \sqrt[] + +Changes between versions 2.89 and 2.90 +______________________________________ +Fix that directory is fopened successfully even though it can't be read. +Implement \day \month \year, so dates can be redefined. +Remove extra

before equations in HTML mode (arose from XHTML compat). +Improve error handling of tthsplit. + +Changes between versions 2.88 and 2.89 +______________________________________ +Really fix the space after \item. +Fix \verb< < use of & < > as delimiters with verb. +Fix incorrect file references to floats in split files. +Fix latex_builtins3. + +Changes between versions 2.87 and 2.88 +______________________________________ +Allow space between \item and its optional argument in description env. +Force a new paragraph at the \end{abstract}. +Improve natbib compatibility in TtH and in tthnatbib.sty +Change \verbatiminput to allow "\end{verbatim}" in the input file. + +Changes between versions 2.86 and 2.87 +______________________________________ + +Fix newline not escaped in latex_builtins3. +Allow Part to be added to toc. +Fix handling of toc contentsline with more arguments (e.g. with hyperref). + +Changes between versions 2.85 and 2.86 +______________________________________ +Fix excessive space compression in delimited arguments. +Remove compress variable (housekeeping). +Enable index entry in table of contents in TtH. + +Changes between versions 2.84 and 2.85 +______________________________________ +Work around apparent HTML validator bug in parsing. +Count multiple bibliographies and make separate split files (refs not correct). +Implement tthrfcat for concatenating multiple refs files when splitting (gold). + +Changes between versions 2.83 and 2.84 +______________________________________ +Fix diacriticals broken at 2.83. +Implement \H as if it were a plain umlaut. +Implement \b underbar. + +Changes between versions 2.82 and 2.83 +______________________________________ +Fix edef expansion of builtins etc to include spaces if necessary. +Improve whitespace ignoring in \cite(s) +Remove spurious whitespace from builtins to clean up top of html files. +Fix \expandafter in some bare token situations (e.g. \ifx). +Detect accents etc as the first thing in the title. (Can't handle them). +Prevent incorrect expansion of \H, \c etc inside \xdefs such as footnotes. +Document some Mozilla symbol font problems. + +Changes between versions 2.81 and 2.82 +______________________________________ +Fix unquoted alignments in \author and \date. +Disable -i switch in TtM. + +Changes between versions 2.80 and 2.81 +______________________________________ +Fix generator meta syntax in XHTML version. +Make -w2 the default for TtM, so that Amaya 4.0 can parse. +Add xmlns to TtM math element. Again, Amaya 4.0 changed to be really picky. + +Changes between versions 2.79 and 2.80 +______________________________________ +Improve \vspace handling to prevent it improperly absorbing following numbers. +Include xmlns declaration in -w2 style. +Implement redefinable macros for split files' top and tail navigators (gold). +Add reference to index in navigators. +Allow non-letter characters in equations to have their fonts changed. +Implement \tthtensor. + +Changes between versions 2.78 and 2.79 +______________________________________ +Improve epsfbox layout to be more TeX-like. +Fix space ignoring after e.g. \ss and \i. +Correct upper case /TD /TR to lower case (for XHTML). + +Changes between versions 2.77 and 2.78 +______________________________________ +Fix placement of title when triggered by raw output. +Fix recognition of file names in capitals from Wind@ws drop on executable. +Put back the

before

  • when the writing style is 0. Gives better layout. + +Changes between versions 2.76 and 2.77 +______________________________________ +Implement command-line specification of input and implied output files. +Reorganize output file descriptors for the above. +Adjust startup messages to reflect knowledge of input file. +Prevent null index generation when base latex filename is unknown. +Adjust the usage and help output to report new behavior. + +Changes between versions 2.75 and 2.76 +______________________________________ +Move static function definitions to global to satisfy Compaq CC. +Implement \setbox recognition and edefinition as if box is a macro. +Implement \savebox, \sbox, \usebox. +Fix incorrect absorption of space after \cite{thecite}. + +Changes between versions 2.73 and 2.75 +______________________________________ +Consolidate document headers into macros in mathstrings. +Implement -w switch 0: no title insertion, 1 head and body tags. +Rework paragraphing to enable XML-style completion (when -w2 is used). +Rework \item and some other list elements for XML-style. +Change colorbox interpretation to for better standardization. +Add \marginpar to builtins. +Add XHTML style terminators to zero-content tags

    . +Fix obscure bug in \hang inside \vbox. +Fix detection of horizontal mode in delimited parameter searching. + +Changes between versions 2.72 and 2.73 +______________________________________ +Make all tags lower case, all attributes quoted and explicit. +Add some tags even though not compulsory. +All this to move (slowly) towards XHTML compatibility, although what to do +about

    and nesting is not at all obvious at this stage. +Make implementation of \uppercase and \scshape more robust. + +Changes between versions 2.71 and 2.72 +______________________________________ +Fix bug with counters in LaTeX files translated without the -L switch + (introduced at version 2.67). + +Changes between versions 2.70 and 2.71 +______________________________________ +Remove the default
    after the image in includegraphics to make the image + alignment more flexible. +Complete the namespace separation of tthfunc and ttmfunc. +Change tthhalcode to be a macro, and make various strings macros. +Fix TtM to use the full tabular argument for alignment etc. +Add handling of optional argument to \cite. +Fix bug with conditional clauses during macro argument searching. +Generalize cite and bibitem to handle the natbib extensions. +Create tthnatbib.sty file for TtHgold implementing variable citep, citet, + and other useful aspects of natbib. +Handle automatic conversion of \section argument into title if it comes first. + +Changes between versions 2.69 and 2.70 +______________________________________ +Fix bug introduced in revised initial scan of tabular argument (at 2.68). +Improve alignment of eqnarray equations to make more centered. + +Changes between versions 2.68 and 2.69 +______________________________________ +Fix broken .ind file removal broken at version 2.68. +Improve handling of vboxes to behave more like TeX. +Make \tthfootnotes the name of the footnotes section, default Footnotes. + +Changes between versions 2.67 and 2.68 +______________________________________ +Improve handling of minipage to behave more like LaTeX. +Modify some rescanning, esp in wrap-up, to fix memory leaks. +Fix error in initial scan of tabular argument. +Prevent spurious paragraphs caused by \else or \fi alone on a line. +Fix bugs with \% percent in conditional text. +Implement a facility for scanning TeX strings at closures. [Infrastructure]. +Define \columnwidth to be a synonym for \hsize. +Improve the table of contents handling of paragraph and subparagraph. + +Changes between versions 2.66 and 2.67 +______________________________________ +Implement \% as equivalent to % within rawhtml for macro purposes. +Make all
    into
    to satisfy validators. + +Changes between versions 2.65 and 2.66 +______________________________________ +Further improve handling of \eqno with \eqalign not to hide wide equations. +Fix bug with single line eqnarray. +Make \caption a command string so it can be redefined. +Implement column counting in tabular. +Fix obscure bug in conditionals with argument finding \else. +Fix bug in delimited parameter matching of blank line as \par. +Ensure \cr in LaTeX is equivalent to \nonumber\\. +Fix incorrect group nesting when using a newenvironment. +Add some tags in tables, even though optional. +Change counter order to prevent spurious title "Footnotes" in plain TeX. +Change tth.gif logo: more realistic document flight. +Implement longtables. + +Changes between versions 2.64 and 2.65 +______________________________________ +Correct misinterpretations of glue removal from (e.g.) \offinterlineskip. +Ensure \hfil is recognized in \halign template. +Improve scanning of template to remove rule dimensions of \vrules. +Fix HTML width error when \eqno is used with \eqalign. + +Changes between versions 2.63 and 2.64 +______________________________________ +Prevent spurious

    at start of environments such as lists, figures etc. +Discard spurious whitespace inside tabular alignment argument. + +Changes between versions 2.62 and 2.63 +______________________________________ +Fix improper termination of \item by display equations. +Improve alignment of equation numbers inside list, items, indented sections. + +Changes between versions 2.61 and 2.62 +______________________________________ +Fix TTHINPUTS and -p to accept consecutive path separators. + +Changes between versions 2.60 and 2.61 +______________________________________ +Fix the accident that -c implies -d. +Implement \colorbox, \fcolorbox, and \pagecolor (deprecated). [Not in eqs]. +Replace printf with a macro for easier editing and subroutines. +Remove unnecessary static declaration from some global variables. +Define \setlength to prevent it putting spurious lengths into text. +Implement corrected array/tabular inside in-line (textstyle) equations. + [But only if the array is the only thing in the equation]. +Prevent erroneous freeing of internal definitions of cross-references. +Fix bug in \hsize setting when accidentally invoked in an error situation. +Improve consistency of setting of TeX and TtH in manual. + +Changes between versions 2.58 and 2.60 +______________________________________ +Improve the layout of equation numbering. Now it is properly right aligned. +Fix bug in VMS compile introduced at 2.56. +Improve alignment of big symbols with limits using -y switch. +Force display equations to clear inline equations using -t switch. + +Changes between versions 2.57 and 2.58 +______________________________________ +Enable \part redefinition to remove possible Plain incompatibility. +Enable garbaging of locally defined macros if they aren't trapped by global. +Fix obscure bug in \indexspace. +Fix spurious \par sometimes arising from \advance and other counter ops. + +Changes between versions 2.56 and 2.57 +______________________________________ +Add diagnostic message when *.bbl bibliography file not found. +Fix obscure problems with null inline equation inside a tabular. +Make e.g. \textrm in equations recognize that this is a text box. +Add switch -k to prescribe filename without forcing LaTeX state. +Fix space problem in attribution string. +Add install file and l2h.exe to tthgold DOS/Windows distribution. + +Changes between versions 2.55 and 2.56 +______________________________________ +Implement pre-expansion of bare command sequence arguments of \sqrt. + (That's pretty bizarre. \sqrt is not really a macro with arguments in TeX!) +Implement multiple directories in -p switch. +Implement recognition of TTHINPUTS as a path for input files. + +Changes between versions 2.54 and 2.55 +______________________________________ +Fix omission of 8 standard colors in lower case in LaTeX. + +Changes between versions 2.53 and 2.54 +______________________________________ +Implement comprehensive color support, \color \textcolor and \definecolor. + +Changes between versions 2.52 and 2.53 +______________________________________ +Reimplement a few constructs: stackrel, pmatrix, cases ... as TeX functions. +Remove the cnvting states which are now obsolete. (Housekeeping). +Make NEXT and PREVIOUS into macros in TtHgold so they can easily be changed. +Obey \textstyle in display equations provided explicitly embraced. + +Changes between versions 2.51 and 2.52 +______________________________________ +Adjust version reporting in startup code. +Improve hbox handling in vertical mode. +Fix centerheader invisible formal HTML bug. +Change \centerline to enclose output in an HTML table for better compatibility. +Improve alignment of first \item. +Recognize \land \gets \mid \lbrack \rbrack \not\in \not\subset +Make - symbol font in equations because some non-adobe times fonts have + a very short hyphen sign. This might cause other problems. We'll see... +Trap \centerline in titlecheck state. +Rework buildrel as a delimited parameter. +Fix small alignment bugs in atop. +Remove spurious space after the 2 in e.g. \hat{v}^2. + +Changes between versions 2.50 and 2.51 +______________________________________ +Work around DOS executable system call non-detection of failure of ps2png etc. +Improve hbox and vbox code to accommodate NS table peculiarities. +Trap explicit \par in titlecheck state. + + +Changes between versions 2.34 and 2.50 +______________________________________ +Implement dimension interpretation. + \hskip \hspace implemented as scaled number of nonbreak spaces. + \vskip \vspace implemented as scaled number of
    s. + p{dimension} in tabular argument as scaled width="pixels" + Float times a dimension implemented. E.g X.YZ\hsize. + \hsize = ... supported inside a brace group (e.g. a \vbox) +Some box handling. But browsers currently won't put text before and after +the table into which these are translated. + \hbox to ... implemented as table of scaled % width. [Not in equations] + \hfil and \hss implemented inside \hbox to.. But spacing is imperfect. + \makebox, \framebox with specified size and alignment. + No \newdimen's. + Prevent \hbox constructs from containing the accidentally. + +Implement *{num} interpretation in tabular alignment argument. +Fix minor inconsistency in definition of \proclaim. +Improve recognition of known but inappropriate parameters e.g. \tolerance. +Improve consistency of parameter discarding of unknown commands. +Improve consistency of paragraph detection near }. +Rewrite the graphics file conversion code to call ps2png, then ps2gif. +Compile DOS executable unoptimized because we are out of memory (again). + +Changes between versions 2.33 and 2.34 +______________________________________ +Implement \subitem for itemize and enumerate environments. +Implement \proclaim. +Correct grouping in definition of \frac. +Correct the missing semicolon from 233. +Fix bug with refs and bibitems whose key has spaces. + +Changes between versions 2.32 and 2.33 +______________________________________ +Accommodate \item[...] in enumerate with a kludged item label. +Implement \url, \hypertarget, \hyperlink, for better compatibility. +Fix tthsplit for tthgold. + +Changes between versions 2.31 and 2.32 +______________________________________ +Fix handling of \rm outside groups in TtHgold (not TtH). +Fix expansion of \if clauses in situations that need it, e.g. limitops. + +Changes between versions 2.30 and 2.31 +______________________________________ +Fix handling of \{ and \} in situations like footnotes. + +Changes between versions 2.27 and 2.3 +______________________________________ +Put the name= reference into quotes for cite and a few other places. +Fix bug with unembraced arguments like \phantom\{ . +Improve vertical placement of overaccents in denominators too. +Improve vertical placement of lone sqrts in fractions. +Fix bug with \right. in in-line equations. +Remove spurious extra space after \over in in-line equations. + +Changes between versions 2.26 and 2.27 +______________________________________ +Improve vertical placement of simple expressions with over accents in + fraction numerators. + +Changes between versions 2.25 and 2.26 +______________________________________ +Reinstitute -O optimization of DOS executable with more compile memory +Fix warnings about ambiguous else on egcs compiler. +Improve compatibility of grabbing unused embraced arguments to + begin{thebibliography},\\begin\{tabular(\*|x)\},\\begin\{minipage\} + +Changes between versions 2.24 and 2.25 +______________________________________ +Fix the title generation code for Mac line-end compatibility. + +Changes between versions 2.23 and 2.24 +______________________________________ +Rework all line-end code to implement work-around for Mac files. + +Changes between versions 2.22 and 2.23 +______________________________________ +Implement work-around for flex line-end bug on Macintosh files. +Fix bug in \color inside equations. + +Changes between versions 2.21 and 2.22 +______________________________________ +Reimplement the redundant brace group delimiter fix to avoid bugs in 2.21. +Fix problem with \iftth following &. + +Changes between versions 2.20 and 2.21 +______________________________________ +Make \.*size check first if it is a user-defined macro before discarding. +Enable proper sub/superscript positioning on large delimiters even when in + (redundant) brace groups. [Fix associated # problems] +Fix problem with \else in nested false conditionals. + +Changes between versions 2.10 and 2.20 +______________________________________ +Implement epsf file handling to accept a filename without extension and search + for .ps or .eps files. +Make equation, figure, and table numbered within chapter by default. +Fix \thanks in title in preamble. +Implement correct (I hope) tabular handling _inside equations_. +Use tabular code for \begin{array} so cell alignment is now honored. +Improve height tracking of matrices. +Remove optimization from DOS executable because of compile memory limitations. + +Changes between versions 2.01 and 2.10 +______________________________________ +Remove some spurious additional cells from equations for better layout. +Reimplement sqrt to work more compatibly. +Implement some extensibility in large sqrt signs. +Reimplement \root \of as a delimited-parameter command. +Implement interpretation of TeX code in index of sqrt[] and \root..\of. +Changed name of top file in tthgold split output to "index.html". +Implement an optional style-sheet approach for equation height compression in + tthgold. +Fix order of closing of improperly nested font changes etc. +Prevent various known unsupported commands from inserting unwanted <p>. +Fix bug with \cite inside footnotes. +Improve \newtheorem to recognize optional arguments (but still not quite + numbering in "within" correctly). +Add handling of \charNNN and \symbol{}. + +Changes between versions 2.00 and 2.01 +______________________________________ +Improve layout of \root \of. +Fix inline sqrt without embedded groups. +Added unsupported alpha diacritical accent commands as null macros to prevent + discarding their arguments. +Implement recognition of "`, "', "<, and "> from the german style. +Fix uninitialized labelchar that occasionally gave \label problems. + +Changes between versions 1.98 and 2.00 +______________________________________ +Recognize \begin with spurious following space. Warn and fix with unput. +Improve recognition of multicolumn hidden in macros, in arrays in equations. +Make first cell of first line of eqalign/eqnarray right aligned. + +Changes between versions 1.96 and 1.98 +______________________________________ +Finally fixed the \halign and \tabular code (I hope). + +Found a serious problem with version 1.97 when tabular environment is +renamed. Withdrew 1.97 from release. + +Changes between versions 1.96 and 1.97 +______________________________________ +Rewrite \halign code to use the template line for alignment and insert strings. +Change tabular alignment coding. Fix @-strings at premature row ends. +Fix insertion of & during verbatim output. + +Changes between versions 1.95 and 1.96 +______________________________________ +Fix \halign, broken by the improvements to \tabular. +Fix \uppercase bug in equations. + +Changes between versions 1.94 and 1.95 +______________________________________ +Implement tabular alignment argument interpretation. (Not *{num} style). +Prevent spurious \par caused by newlines in equations. +Fix bug with LaTeX \input{filename} that regarded the input as within a group + and thus discarded the newcommands that were defined within it, since the + implementation of commands being local in TtH if defined locally (v 1.90). +Correct the anchor at the subsubsection in book class when secnumdepth is >2. +Make \textsc and \uppercase work in equations provided no math or other + complicated constructs are used inside their arguments. + +Changes between versions 1.93 and 1.94 +______________________________________ +Fix bug with auxiliary files and \include{}. + +Changes between versions 1.92 and 1.93 +______________________________________ +Fix obscure bug with \\ at end of argument of macros. +Recognize \+ does not mean a settabs tabbing start in LaTeX (just omit). +If \amslatex is a defined command, recognize | as a synonym for \verb|. +Fix \choose when its second argument has subscripts. +Rework equation start and end always to start and end an implied group. + This is rationalizes treatment of such things as $$n \choose k$$. +Improve brace matching in ignored groups that contain \{ or \}. +Improve dimension and parameter command removal with macros. +Improve counter setting with macros. +Improve eqalign (eqnarray) alignment of first cell (align right). +Make book class equation numbering consistent with LaTeX default. +Split a long string constant to work around brain-dead VisualC++ limitations. +Improve string overflow detection and message. +Reorganize verbose messages. + +Changes between versions 1.90 and 1.92 +______________________________________ +Fix bug with zero length \phantom. + +Changes between versions 1.90 and 1.91 +______________________________________ +Improve \phantom to cope with braces within its argument. + +Changes between versions 1.68 and 1.90 +______________________________________ +Implement command definitions as local within groups for TeX compatibility. + Counters are (incompatibly) still all global. +Implement plain TeX conditionals. + All are working with some limitations except + \loop, \ifdimen, \ifvoid, \ifinner, \ifcat. +Add timestamp to the translation credits. +Rework delimited parameter macros to be compatible with TeX space compression. +Add implied \par to several commands, e.g. \hrule, \bigskip, ... +Implement \[h]phantom as a horizontal space of the approximate length. +Rework bibitem to allow it to function correctly when renamed. +Fix \bye. +Improve error message for string overflow. + +Changes between versions 1.67 and 1.68 +______________________________________ +Fix fatal bug caused by ungrouped \over construct in inline equation. +Use the compiler -O optimization on executables to decrease their size. + +Changes between versions 1.66 and 1.67 +______________________________________ +Permit \headline= syntax. +Permit omission of braces from plain footnote first argument. +Obey optional argument to footnote in LaTeX. +Fix bug in improper \\ handling at lowest closure depth. + +Changes between versions 1.65 and 1.66 +______________________________________ +Correct the behaviour of a command alone on a line. Treat as a non-null line. +Handle improper use of \\ or \cr outside of array environment in an equation. + LaTeX simply ignores it, though it should not be used. + +Changes between versions 1.60 and 1.65 +______________________________________ +Implement HTML title construction or warning for files without title. +Implement \paragraph and \subparagraph. +Implement \secnumdepth handling. +Accept optional arguments on \author etc. +Kludge \dag and \ddag, since they are not available as single glyphs. +Rework \item in description environment to handle optional arguments better. +Improve \noalign rendering. +Improve font handling for inline equations in boxes in displaystyle equations. +Group multiple-letter entities in equations inside font codes (for mathitalic). +Prevent ^\prime from being a superscript in-line. HTML is unlike TeX. +Standardize warning and error syntax. +Correct handling of braces inside of optional arguments. +Fix (rare) bug in glue removal state that defeats paragraphing. +Fix bugs for absent optional argument with no other arguments. +Fix (invisible) bug in \item followed immediately by \end. +Fix incorrect pushdepth induced by display table state. + +Changes between versions 1.59 and 1.60 +______________________________________ +Implement verbatiminput +Fix various entities not to introduce spurious par if on line by themselves. + +Changes between versions 1.58 and 1.59 +______________________________________ +Implement optional parameter handling internal macro call. +Fix recognition of unknown* environments. +Work around strange amslatex use of \newlabel in aux file. +Fix \varphi. + +Changes between versions 1.57 and 1.58 +______________________________________ +Recognize file extensions .ps* .eps* (e.g. .epsi) as valid postscript. +Recode \headline and \title to avoid putting markup in <title>. +Rework epsfbox etc to improve compatibility with non-standard usage. +Add alt="..." to the img tags to conform to HTML4.0. + +Changes between versions 1.56 and 1.57 +______________________________________ +Reduce additional horizontal space with large delimiters in some cases. +Change tabular handling to allow \multicolumn to be inside a macro. +Fix bug with single non-alpha commands as subscripts, (e.g. x_\|). +Fix disabling of \par by \href and \special{html:...}. +Make color codes quoted for syntax validation. + +Changes between versions 1.55 and 1.56 +______________________________________ +Implement \{, \} in macro arguments so that e.g. \subsection{\{} works. +Fix (invisible) incorrect state at close of LaTeX files. +Fix \choose to remove fraction bar. + +Changes between versions 1.54 and 1.55 +______________________________________ +Fix bug in appendix chapter or section title: grouping not honored. + +Changes between versions 1.53 and 1.54 +______________________________________ +Fix large square-root display for Macs. + +Changes between versions 1.52 and 1.53 +______________________________________ +Use <br clear=all> at start of table layout of inline equations with -t switch +Ensure \begin{html} and related code does not cause spurious \par. +Ensure \tthdump is not expanded in (e.g.) edefs or footnotes. + +Changes between versions 1.50 and 1.52 +______________________________________ +Rework \begin{array} for improved compatibility. +Implement \Roman, \roman. +Make \# output # in raw HTML output. +Implement \char`\. as a literal character quoting mechanism. +Make \\cal into italic helvetica. +Various TtHgold improvements to label, etc. + +Changes between versions 1.46 and 1.50 +______________________________________ +Rework \textit ... \mathrm ... to use rescanning of a braced switch. This + resolves ambiguities in equations (the swaparg state), and allows + macros to rename these even using bad (non-argument) style. +Rework \underline and colordvi commands similarly. +Improve picture conversion code by including graphics packages in the + latex file that is output, and fix comment bug. +Rework mbox and raisebox code for greater compatibility. +Remove the eqtokarg state, mostly used in subpscripts. +Implement the exptokarg state, for expanding command sequences immediately + following ^ _ and overaccent-style builtin TeX commands in equations. + This new approach correctly mimics TeX's handling of unembraced command- + sequence arguments in math mode, and removes ambiguities. +Correct internal bug associated with dupstore in tthref. +Rework macro calling to allow internal use of code. +Implement \expandafter. +Improve pattern matching in delimited argument interpretation. +Fix bug in \let interpretation (rare). +Fix footnote wrapup bug that broke \end[{document}}] +Rework \href using special, so it works in equations. +Edit manual to reflect changes. + +Summary: +1) Substantially improved [La]TeX compatibility in + Expansion of macros and boxes in equations; \expandafter support. +2) Improved picture handling code. +3) Various small bug fixes. + +Changes between versions 1.45 and 1.46 +______________________________________ +Simplified some dimension and glue removal code. +Internal output statement rationalization. +Fixed bugs in some accents. e.g. \~ \`O and \'{\i }. + +Changes between versions 1.41 and 1.45 +______________________________________ +Implement optional argument support for newcommand and newenvironment. +Implement "within" capability of newcounter. +Implement \@addtoreset command. +Rework equation labeling to use \theequation command. +Rework sectioning commands to use more latex-like approach involving + \thesection.\arabic{subsection} etc, for greater compatibility with + different sectioning and numbering styles. +Fix bug in \Alph and \alph +Fix bug in \chapter* +Fix bibitem interpretation with parens in optional argument. +Ensure a newtheorem starts a new paragraph. +Rework figure and table numbering in caption to use \thefigure etc, + and observe numbering with chapters of book style, for compatibility. +Make sectioning commands able to be redefined, in case a TeX file does so. +Rework \newlabel code to allow more general label formats (e.g. from a + redefined \theequation or \thefigure command in aux file). + + +Changes between versions 1.40 and 1.41 +______________________________________ +Fix bug in eqnarrays with \\ after e.g. \frac{}{}, \right) etc. + +Changes between versions 1.32 and 1.40 +______________________________________ +Reimplement \bibcite as \def, for greater compatibility with different + bibliography styles such as natbib. +Reworked some equation recognition code to remove tth_eqn. +Rationalized the equation state earlier in the flex code. +Defined many strings as macros for easier editting. +Defined macros TTH_MATHC and TTH_SCAN_STRING. +Reworked some number removal for brevity. +Reworked halign/tabular end of line multicolumn code for clarity and brevity. +Resultant C code is nearly 100k shorter. +Separate -? and -h help text. + +Changes between versions 1.31 and 1.32 +______________________________________ +Implement workaround for browser table font bug in upright math mode. +Fix spurious <p> arising in toc if whole section title is a macro. + +Changes between versions 1.30 and 1.31 +______________________________________ +Implement \multicolumn in array environment. +Improve \eqalign recognition. +Make \bordermatrix a synonym for \matrix to prevent parse errors. +Prevent additional spurious </td> in equations. +Increase buffer size to TTH_DLEN 6000. +Change literal and non-literal treatment in tags for formal HTML conformance. +Add doctype 4.0 statement in standard header. +Fix omission of </a> from indexing tags. +Fix subsubsection labeling in appendix. +Fix \ref and \pageref in footnotes. + +Changes between versions 1.24 and 1.3 +_____________________________________ +Improve placement of subscripts etc on over-accented characters. +Fix bug arising from commands terminated by % in macro arguments. +Change default fraction level to 5. +Improve rendering of single-character fractions in inline equations + and exponents using slash. +Remove unnecessary braces in \frac definition. +Trap most common token ambiguities: \frac \mathrm and \mbox. +Fix scanner error at ambiguous token error. +Fix erroneous \big\ bug. +Adjust bracket height for very large items, e.g. matrices. + +Changes between versions 1.23 and 1.24 +_____________________________________ +Fix bug with \emph inside textbox inside equation. +Fix bug in \cite recognition with []. +Fix footnote bug introduced in equation-compatibility code. +Improve recognition of \begin{list}{}{}. +Fix bug in \(over|under)brace causing buffer overrun and possible crash. + +Changes between versions 1.22 and 1.23 +_____________________________________ +Fix \root n \of bug. + +Changes between versions 1.21 and 1.22 +_____________________________________ +Implement \sqrt[n]{ } and \root n \of. +Fix appendix index reference. + +Changes between versions 1.2 and 1.21 +_____________________________________ +Fix bug misinterpreting \} \{ in macro arguments. + +Changes between versions 1.15 and 1.2 +_____________________________________ +Document the -t switch for built-up textstyle equations. +Document the -a switch for automatic picture conversion. +Include latex2gif in distribution. + +Changes between versions 1.14 and 1.15 +______________________________________ +Omit \null from equations too. +Fix \ at end of line to be nbsp. +Make widehat a synonym for hat, like widetilde. +Add a newline end after </html>. +Add \alph,\Alph,(\roman,\Roman = \arabic). +Fix footnotes to work inside equations. +Add parentheses around \hbar. + +Changes between versions 1.13 and 1.14 +______________________________________ +Add recognition of \bigg/ and \bigg\ etc. +Fix bug in unrecognized \bigg etc. + +Changes between versions 1.12 and 1.13 +______________________________________ +Fix \\ bug arising from optional arg to \\ causing arrays to break. +Fix accent bug in \uppercase. +Add "s German ss usage. +Implement experimental -t switch. + +Changes between versions 1.11 and 1.12 +______________________________________ +Fix appendix subsection alphanumeric label bug. +Fix subsubsection bug that put in spurious name tags. + +Changes between versions 1.1 and 1.11 +_____________________________________ + +Fix the footnote "head.html" bug. +Correct to \dots in paragraph mode. +Add FAQ to manual. + +Changes between versions 1.03 and 1.1 +_____________________________________ + +Implement Indexing. +Improve space removal after numerator of fractions for alignment. +Tidy up some pattern recognition to remove trailing contexts. +Improve documentclass tracking. +Change ps2gif to use -ppmraw to save time and space. +Fix \verb+<font>+ to translate <> correctly to &ls; etc. +Make figure and table section-numbering 2-digit. +Fix space after Chapter names etc. +Fix spurious \\par insertion in \label (etc) on a line by itself. +Fix equations with _{\rm p} climbing up a hill. +Fix eqnarray* bug. +Fix lefteq bug. +Fix bug in interaction between TeX and Latex equation numbering. +Check for existence of .ps file before attempting conversion. +Add l2h script to packages. + +Changes between versions 1.02 and 1.03 +______________________________________ + +Fix space omitted after e.g. Figure. +Recognize .jpg or as a valid graphic file extension; if file.jpg exists, +don't do conversion from file.ps. +Add double hline recognition internal to tables. +Fix obscure bug in sub/superscripts as initial part of a definition. +Rework subscript code for more compact internals. +Remove space before \over, \atop (etc.) commands to improve alignment. + +Changes between versions 1.00 and 1.02 +______________________________________ + +Change glue removal code to save substantial size and improve compatibility. +Change paragraph recognition algorithm to do a better job when the +two line ends are in e.g. different macros. +Improve length overflow checking consistency. +Improve h|vrule handling. +Recognize "fil" as a dimension unit for removal. +Correct \bigg and \left\right delimiter algorithm to correspond to TeX. +Add meta tag to header. + +Changes between version 0.99 and 1.00 +_____________________________________ + +Redefined default states for the -g switch: +Defaults to guessing meaning of font commands; -g means discard construct. + +Changed default eqnarray numbering to be more LaTeX like. Each line is +numbered by default. Switch -n reverts to older style: one number per +environment. Implemented \nonumber. + +Documented -p switch to provide an additional directory for input files. + +Implemented \thanks as a synonym for \footnote in author or title. + +Updates to documentation. + +Added web link to home site in credit line. + +Various small bug fixes: + Allow spaces after \\ + Removed [] from possible macro names to avoid misinterpretation. + Changed handling of \textstyle to avoid consequent errors. + Fixed bug in fractional superscripts to large delimiters. + Improved removal of \penalty and similar commands. + Allow decimal point sizes in font commands. + Trap negative closure counts to prevent crash. diff --git a/code-postprocessing/bbob_pproc/tth_C/INSTALL b/code-postprocessing/bbob_pproc/tth_C/INSTALL new file mode 100644 index 000000000..fa3fea75a --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/INSTALL @@ -0,0 +1,7 @@ +Compile the C code by doing, for example: + +gcc -o tth tth.c + +Copy the executable, tth, to somewhere on your path, e.g. /usr/local/bin/ + +If you find symbols are missing in your browser, run Xfonts.fix as root. diff --git a/code-postprocessing/bbob_pproc/tth_C/latex2gif b/code-postprocessing/bbob_pproc/tth_C/latex2gif new file mode 100644 index 000000000..66f448a80 --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/latex2gif @@ -0,0 +1,19 @@ +#!/bin/sh +#latex2gif script by Ian Hutchinson 1998; use at your own risk. +#You need latex, dvips and ps2gif. +if [ $# != 1 ] ; then + echo " Usage: latex2gif <file> (no extension)" 1>&2 + exit 1 +else + echo "Calling latex, dvips, and ps2gif, please wait ..." >&2 + latex $1 >&2 + dvips -o $1.ps $1 >&2 + ps2gif $1.ps $1.gif + rm $1.tex + rm $1.aux + rm $1.dvi + rm $1.log + rm $1.ps +fi + + diff --git a/code-postprocessing/bbob_pproc/tth_C/license.txt b/code-postprocessing/bbob_pproc/tth_C/license.txt new file mode 100644 index 000000000..d6fb36039 --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/license.txt @@ -0,0 +1,17 @@ +License for TtH, a TeX to HTML translator +_________________________________________ + +tth is copyright Ian Hutchinson, 1997-2007 (hutch@psfc.mit.edu). + +You may freely use this software. + +If you distribute any copies, you must include this file and these +conditions must apply to the recipient. + +No warranty of fitness for any purpose whatever is given, intended, or +implied. + +You use this software entirely at your own risk. If you choose to use +tth, by your actions you acknowledge that any consequential damage +whatever is your responsibility, not mine. + diff --git a/code-postprocessing/bbob_pproc/tth_C/ps2gif b/code-postprocessing/bbob_pproc/tth_C/ps2gif new file mode 100644 index 000000000..8ef783c61 --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/ps2gif @@ -0,0 +1,18 @@ +#!/bin/sh +#ps2gif script by Ian Hutchinson 1998; use at your own risk. +#You need Ghostscript and the pbmplus utilities installed. +if [ $# -lt 2 ] ; then + echo " Usage: ps2gif <file.ps> <file.gif> [<icon.gif>]" 1>&2 + exit 1 +else + echo "Calling ghostscript to convert, please wait ..." >&2 + filein=$1 + gs -sDEVICE=ppmraw -sOutputFile=- -sNOPAUSE -q $filein -c showpage -c quit | pnmcrop| pnmmargin -white 10 | ppmtogif >$2 + shift 2 + if [ $# -eq 1 ] ;then +# Make an icon file. + gs -sDEVICE=ppmraw -sOutputFile=- -sNOPAUSE -r12 -q $filein -c showpage -c quit | pnmcrop| ppmtogif >$1 + fi +fi + + diff --git a/code-postprocessing/bbob_pproc/tth_C/ps2png b/code-postprocessing/bbob_pproc/tth_C/ps2png new file mode 100644 index 000000000..039b7eb19 --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/ps2png @@ -0,0 +1,20 @@ +#!/bin/sh +#ps2png script by Ian Hutchinson 1999; use at your own risk. +#You need Ghostscript and the netpbm utilities installed. +if [ $# -lt 2 ] ; then + echo " Usage: ps2png <file.ps> <file.gif> [<icon.gif>]" 1>&2 + exit 1 +else + echo "Calling ghostscript to convert, please wait ..." >&2 + filein=$1 +# The following uses the internal gs driver but does no cropping etc. +# gs -sDEVICE=png256 -sOutputFile=$2 -sNOPAUSE -q $filein -c showpage -c quit + gs -sDEVICE=ppmraw -sOutputFile=- -sNOPAUSE -q $filein -c showpage -c quit | pnmcrop| pnmmargin -white 10 | pnmtopng >$2 + shift 2 + if [ $# -eq 1 ] ;then +# Make an icon file. + gs -sDEVICE=ppmraw -sOutputFile=- -sNOPAUSE -r12 -q $filein -c showpage -c quit | pnmcrop| pnmtopng >$1 + fi +fi + + diff --git a/code-postprocessing/bbob_pproc/tth_C/tth b/code-postprocessing/bbob_pproc/tth_C/tth new file mode 100755 index 0000000000000000000000000000000000000000..b2a32e7df82d57879b6a576934636a9dd66d2b5d GIT binary patch literal 716960 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͋d&s-@7Jis@!jc%A@CrlKi=YnCDmufW5K-j2#t<#eQlTf#Q(=G<V1C&6zJ z^b$BS_oURXsh_RRcNbLrR!~u0OGhZNiF8e}TOt%GKNx~qCJRzVUtwn}F5xqgb1DC} zU@uZG+7piw;R%wFxk4{zN2282$imKvu2m!xDK7*`NK=y66u`nOval6Gf7VW@=HC{_ z!{n0>S8&a5YZ{8owJBO^d1{5#VroIfy9E_hEJ&B_#4^M-hTINXcDQbjM)^a<O%xy{ z0=RZc*5treqKs|aE0`k8gl-ihW{U&u*y)+>VvJ20!j?nKWHtYyk+F)UMx6*`g*!aX zb`vvM(Swjtsx?3d#z!AFr`&7!uqxSZiBwDU5Rpn39Q%Ii-Bd>{b-|?kf{J*}V{{Oa zeJQ<1H@q<u<(5gIQi~GUt(malb{uL$mf6y)DreylxpPu3-N5*O4@*^*w5mwtEZ+I$ zBxA6U76B@9pv)D_yUG+Iqg~2@aT0cH|1JA~Bf~Z9#$YtFjGF1qLrEtmWeoWTm5NWp zV|K{7@KFx*k3)d;0bm@&@yD?A?-6+Vul%!#f4=9RZ~5m-{`oimtl^&z_~%{zS<XLi z@Xtd2c@2LS@+yS$cza}@Mb<LzzZb*8+MHxP{P}ro13~U9Ht$0l6tAI-=sNk(aXN%^ z49J<VE2$ASyUMuhV2ASsteOBzo9qpYF3zeOsSji6Wc5(|1!);sOlD-jsb(eIeKoea z5+wp^O*YH0`;oF4Z|kyzRsLp~+Uj8B5-e5QAq-;N(&X!JmZ22Pu&IV&nPCl?r4?^x zkqa#~b1Qc43?-{2u8)|<0H)ULs3o(Ex2K|w);1M`!~hS2ocoIy<lK*FknoG+=wMwE zR<31JjY7+$aA-$sCiR{MOC;kpATua3`D9YCj9UaJKVemk1BMm-eHt!^gq+KOP-{M< zd85P81zPV5E0-8$AW&Ow7Oc>dOEUfrZV5p<J)AB>4${n*M-#ZTSwU=Gujo`m7q=yk zEWo4=jdjkw%|lkS9Z08ECzs}=Vh1CcDA~rLG+|X!59ja4z)j*rOPOUL>D+iUyoF|R zZ8jx|+Mvy*-{sqko1w7TDL;$N4qh!byXEh$&7k$5hiRtqAgvaZ7^dJT(mtx~7Ip;< zXJ<RG<@V#kF3fI3b|EirIp45?S7j{Y@P>?6ZxY6jtP;k11Q~z#Pcj|{#tS+1Sjt76 zoJ7g8gf;mc<!SbG7y*4>9_ZZ2Ej8=D+p$w?48)LA0ud10q2ZXV^&DHq{PaMSC9CU! ziRL;MnR(n%Of5zOG^1E{wd^Tcot&1C2xcy2%e4a_3>Q=Kultbl$FHBlM=q>(f(So? zkN^z*5tAo~>oa+7hA<fzU{beHj5J;`342VI12kn0@R;1$-0(H&n4w8QkjXxY<RZ)% z?>YsFR}m>-qM|~B6t7&x>k*p@A$Z^nvlx0^EG!F&a1gjz#@_$nh_r`v!1qC-*60Ns z88+hABIWn0b~n(g{9g6M-O{U?fMT#$B}jX5GwD?wKtT5@kY)_?_Zh)nbv<(ERVDI} zUR6NsK(CU#;94fr2|I57L~DkB#At3smreFMS2dD_C5z8aHCf~wag;PdKB;wrEXnv` zkX8>?3y}&r`yL6uW@;h!aN+-LfnitIaWm02&R+@QwhX-`(V{h&Yg$Zo+FS^Xul7O5 zV2=S*?Nt!p4(C9iT9Yv^&6Y^n?AWy?M?9V__+8iUfc|(1f8?<0+z$TfJ3t(5`1y~} z(2B3OWWIXrL2#su804Xkb5T&z*i-LAQknJ=CE+JOf}~BRIM-hwbY_6gJf4BDGl*(V zD-!D_Vw&wqZEsLpSbzfOKSw}<CRC3j0Mr{yF)%85+EBe+YlF&=GY>@6xbXtXRW+qY zH##e!B@ZP7yOP@!nBll@?=&rCmpBThb7nv?U;2*ReJ-hDO~RV9g<Jkk?+2)+i!Y}D zcD3IA&!ci3u7`_<hfczHxvpt)E81Uo`zL=8&O+2O&beMZ8{OknP)wO^fV+@4|CX8^ zvCSQFzRZIz>Aj&^A1e6)vS_BqzTYRbP|Ujx=Iw}WZl~&g)TGQ@5J=AlyeEJ7_Bt6Q z2$jH4bcX_LO2DZA1i7OrlVvQpPK2?dy{1V2dK{3+_!lX3#gy3u@ZK~xO+k9oTq}hz z1_;3p86uBP<WXYW4>Fk@@|*jE9daFV=#VSrAsw>*abO2Jq~zJunC6&9Gd>PGpc`C) z*};mQ3J!X<J03~5Lr$g1Qszcdo4J<}auzBZjuBi_%#x}FgaZht4XtBUF`dX+nn*51 zFj}Q%3fXm88X91Q@2+UjtnEn+^M9$B5OFMV(5wTevsu@JTryq>G=ESlazS;dP&ZkO zej*TpHe5@&e=x*`7lA;g4IiBzwBZcoV8bc$5F4%`cEE;`*EVDt#>>N`U`4mx=^5`Q zB>hl<dN_rLiw)~YZ2)BPCcW!GYj%#FgLHRGq^g$zu)?gx--sCnh-F+0qRF*QIM`P% zs<2r#NdV@{l!-&t*nZ!!G2>e{>=T-mlZf>C4S@;?IUn9D+~*;kE>#Szcy|(1{TmEt zqprey5r18VTkptV$f`*K08X!^#cdt|r-U6XcNwk#LlVNO0WJ3=xTefm$a`I>N{!Lg zbvOlbdZPZN98UyuCLk;9hw;}H;l@l6ST)JyUs%0|;(fBuJN2G(4;78GUq>d|TG4R( zQEb#M9;521WMtkIU=+?|#HvXG0A1HAU02E@x&#j~?g}ejJc)!WNiJ1gfxn5=M^N3e znT7$LsH6ePkx7qmo0$giB^igh3iI#y>#CeIGpx?4Ndh1T;ygQ#B}9^V7grKCGYL7r zOp|6FiZtg8p0wd?U5?nQ2eL3#>s$w!0I#xUf1+KfikMF1)FvkERQ5X+B7@r@U{h!t z{e)?y5Ved|BczvF;Q=Y>bN>S8l-Umy(nkO-(B2}1n!nCf;w1p(xj*kYgUM~6?uC95 z^Er76x_~s>DyW{{io2apQLOlca+zWagmpK71-MEipuFt!d!Vo#%L9^ULKQ0Dq!Cz7 zwE$>yRcdp!M~$?mnMate6vnDnrDkguwU?qwrm^TvOxTuTwXY#6tag|~iCwEbJX~At zXdG?AKTL2=nXN$K53JUj;-$={gld~ZU5uZWtH=-w8JT`#AAC)VR5Ry1N_Ytg)y_w3 zZlIDJK`caK+>?P}T2MrddyQX>DS}V{79K*dj2KuUk*V7EU@{rsF%j4FBjx~9C#(CR z2$}Pcv5cotlU$o8*e4L%j{Q>_(Kt?Y2v5FN`lc1#|4t^F!YZTxL91+kjN1VJxdRby z4YmO`Baz;Z%b)mE(DWyPbA*5&*}erp5a|FS!AYPV<kHU0CY(r%Kp=Axn1MjrUoTEa z4wFDi9x@4RBz9mDkUZ3(HJHYr`{Ork>2NDdFjn-(3Eo`r6_V~m+WR1}zC&u4Ko-kL zq1LsJUJkw>gpB6P*v8=z!^A#nVRO;lw9I;-yJ6ma1pXg}dG8<ShIzF}rQhAr#ETje z{{^{;9=UNOcRR?z96P?EIo$A$ah<>PbG{f%JtQ0~sZ>$n>#HOx{9r09q{nZ*HUWRR zYCZkaC>csa<YNm%AxwLd2v+!0Y?z?EPXl7gTuaN!GEzc2M$QtQl-N4<d`Gyvb(gfm z8bCY0Kxki3Rs(4*Bh;sdaE<lt?S2dC0Q3}gD7#XHgT{&>A{b<t3$iKmLr{g-M+=aO zEF;t^CDD)SnS5CYt|L)Vvc}MLX<W0R#+#_I4oW{%qAE!4JY}Np?V|F%77X?(78Am< z_64<P#eRyHRV{>Y)r6{FPuh0O7JzCNarjRu7%iQLQA3Oqh+$PRy|f87NmZ>CYX&1Z z2PM$_W!u^Ov2Lo-Ubx1!%>z>y%|Ce?jJa-4MDr>0br6Y^>wTls2w%IH`x^<{cz6ZS zO2X6l7`B{EnaEkj$*TpZK;zkz<+KARz47TAjLpNJ;ZbYWU>yfTgeFDTBc6t&+ySjP z0Er5&JxZzxkib@QN@^0R*c=5X)u~S2o~eRAc2oD%vYsh66$wqst%yz*_=bC?BT$}B z{w~T-r0-kCOM_kIXV_H!>05o}p9?A<C%mWpqsvA4`}oLEJ_0IGekPTVM@9M1mx%IT z;8AP7?kWGR-Kg>e$WZ=O1-IME-zD%3l^>1r^c~wo`Decr<>w4?m7h78%0D;WSN<VU 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 E0mrFAO#lD@ literal 0 HcmV?d00001 diff --git a/code-postprocessing/bbob_pproc/tth_C/tth.1 b/code-postprocessing/bbob_pproc/tth_C/tth.1 new file mode 100644 index 000000000..8dcc375eb --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/tth.1 @@ -0,0 +1,362 @@ +.TH TTH 1 "1 May 2002" 3.10 "TeX to HTML translator" +.SH NAME +tth, latex2gif, ps2gif, ps2png \- TeX and LaTeX to HTML translator +and its auxiliary program +.SH SYNOPSIS +.B tth +[\fIoptions\fP] [\fI<file.tex\fP] [\fI>file.html\fP] [\fI2>err\fP] +.sp +.B tth +[\fIoptions\fP] \fIfile.tex\fP [\fI2>err\fP] +.sp +.B latex2gif +.I file +(no extension) +.sp +.B ps2gif +.I file.ps file.gif +[\fIicon.gif\fP] +.sp +.B ps2png +.I file.ps file.gif +[\fIicon.gif\fP] +.SH DESCRIPTION +.PP +.I tth +translates TeX source that uses the plain macro package or LaTeX, +including most mathematics, into a near equivalent in HTML. The formal +standard that TTH-translated documents follow is strictly HTML4.0 +Transitional. +.PP +The complete documentation is contained in "tth_manual.html" distributed +with the program. This man page is an incomplete summary and updated on an +irregular basis. [Last updated 1 May 2002 by Hans Fredrik Nordhaug.] +.PP +The program is a filter, i.e. it reads from standard input and +writes to standard output. In addition, diagnostic messages concerning +its detection of unknown +or untranslated constructs are sent to standard error. +.PP +In handling embedded graphical files \fItth\fP +can make use of auxiliary programs, \fI ps2gif\fP or \fIps2png\fP, +which in turn make use of the ghostscript interpreter \fIgs\fP (1) +and the Portable Bitmap Graphics suite of commands, see \fIpbm\fP (1). +.PP +.I tth +is extremely fast in default mode on any reasonable hardware. +Conversion of even large TeX files should be a matter of a second or +two. This makes it possible to use \fItth\fP in a CGI script to output +HTML directly from TeX source if desired; (standard error may then +need to be redirected.) +.PP +To discuss how to get the best from \fItth\fP, you can subscribe to a +mailing list by sending an email containing the message +subscribe tth_mailing_list to "majordomo@hutchinson.belmont.ma.us". +Then you can send messages to "tth_mailing_list@hutchinson.belmont.ma.us". +.PP +\fItth\fP handles TeX things like: +.nf +.in 1i +Almost all mathematics, including symbols, fractions, delimiters. +{} \\begingroup\\endgroup grouping. +\\it \\bf \\sl etc styles. +\\beginsection. +\\centerline{}. +\\item{...} \\itemitem{...} {\\obeylines ...}. +Almost all accented latin characters written like \\"o, or \\"{e}. +\\hang \\hangindent \\narrower for entire paragraphs + (\\hangafter ignored). +\\headline is made into a title. +% Comments. Simply removed. +\\halign tables, checks template for the presence of \\vrule, + to decide if the table is to be border style. +\\settabs \\+ style tables. +\\input: But, of course, not from the implicit texinputs path. +\\newcount, \\number, \\advance and counter setting. +\\def, \\edef, \\xdef but no delimited arguments. + All definitions are global. +\\matrix, \\pmatrix but not \\bordermatrix. \\cases. +.in +.fi +.PP +LaTeX support includes essentially all mathematics plus the following +environments: +.in 1i +em, verbatim, center, flushright [one paragraph only], verse, +quotation, quote, itemize, enumerate, description, list [treated +as if description], figure, table, tabular[*,x], equation, +displaymath, eqnarray [only one equation number], math, array, +thebibliography, [raw]html, index [as description]. +.in +.fi +and Latex commands: +.in 1i +[re]newcommand, newenvironment [optional arg not permitted], chapter, +section, subsection, subsubsection, caption, label, ref, pageref [no +number], emph, textit, texttt, textbf, centering, raggedleft, +includegraphics, [e]psfig, title, author, date [not automatic], +lefteqn, frac, tableofcontents, input, include [as input], textcolor, +color [8 standard colors], footnote [ignoring optional arg], cite, +bibitem, bibliography, tiny ... normalsize ... Huge, newcounter [no +``within'' support], setcounter, addtocounter, value [inside set or +addto counter], arabic, the, stepcounter, newline, verb[*], bfseries, +itshape, ttfamily, textsc, ensuremath, listoftables, listoffigures, +newtheorem [no optional arguments permitted], today, printindex, +boldmath, unboldmath, newfont, thanks, makeindex, index. +.in +.fi +.PP +Hypertext cross-references within the document are automatically +generated by (e.g.) ref, and tableofcontents. +.PP +When \fItth\fP encounters TeX constructs that it cannot handle either +because there is no HTML equivalent, or because it is not clever +enough, it tries to remove the mess they would otherwise cause in the +HTML code, generally giving a warning of the action if it is not sure +what it is doing. +Untranslatable TeX math tokens are inserted verbatim. +.SH "Independence of [La]TeX installation and the -L switch" +A major difference between \fItth\fP and \fIlatex2html\fP is that \fItth\fP +does not call the \fIlatex\fP or \fItex\fP programs at all by default, +and is not specifically dependent upon these, or indeed any other +(e.g. \fIperl\fP), programs being installed on the translating system. +Its portability is therefore virtually universal. +.PP +Forward references in LaTeX are handled by multiple passes that write +auxiliary files. \fItth\fP does only a single pass through the source. +If you want \fItth\fP to use LaTeX constructs (e.g. tableofcontents, +bibliographic commands, etc.) that depend on auxiliary files, then +you do need to run LaTeX on the code so that these files are +generated. Alternatively, the \fItth\fP switch -a +causes \fItth\fP automatically to attempt to run \fIlatex\fP on the file, +if no auxiliary file .aux exists. +.PP +When run specifying a filename on the command line as a non-switch argument, +x \fItth\fP constructs the name of the expected auxiliary LaTeX files in the +usual way and looks for them in the same directory as the file. +If you are using \fItth\fP as a filter, you must tell \fItth\fP , using the +switch -Lfilename, the base file name of these auxiliary files +(which is the name of the original file omitting the extension). If +\fItth\fP cannot find the relevant auxiliary file because you didn't +run LaTeX and generate the files or didn't include the switch, then it +will omit the construct and warn you. +Forward references via ref will not work if the .aux file is +unavailable, but backward references will. The -L switch with no +filename may be used to tell \fItth\fP that the document being translated +is to be interpreted as a LaTeX file even though it lacks the usual +LaTeX header commands. This may be useful for translating single +equations that (unwisely) use the \\frac command. +.SH "BibTeX bibliographies" +\fItth\fP supports bibliographies that are created by hand using +\\begin{thebibliography} etc. Such bibliographies do not require +anything beyond the .aux file. \fItth\fP also supports +bibliographies created using BibTeX from a biblography database. The +filename.bbl file is input at the correct place in the document. +However, this filename.bbl is not created +automatically by \fIlatex\fP. In addition to running \fIlatex\fP on the source +file to create the auxiliary file, you must also execute +bibtex filename in the same directory, to create the +filename.bbl file, and then run \fIlatex\fP again to get the +references right. (This is, of course, no more than the standard +procedure for using \fIbibtex\fP with \fIlatex\fP but it must be done if you +want \fItth\fP to get your bibliography right). If you don't create the + .bbl file, or if you create it somewhere else that \fItth\fP does not +search, then naturally \fItth\fP won't find it. Since the BibTeX process +is relatively tortuous, \fItth\fP offers an alternative. Using the -a +switch with \fItth\fP will cause it to attempt to generate the required .bbl +file automatically using \fIbibtex\fP and \fIlatex\fP. +.PP +There are many different styles for bibliographies and a large number +of different LaTeX extension packages has grown up to implement +them, which \fItth\fP does not support. More recently, a significant +rationalization of the situation has been achieved by the package +natbib. \fItth\fP has rudimentary support built in for its +commands \\citep and citet in the default author-date +form without a second optional argument. A style file for +natbib is distributed with TTHgold which makes it possible to +accommodate most of its more useful styles and commands and easily switch from +author-date citation to numeric citation. +.SH "Indexing" +\fItth\fP can make an extremely useful hyperlinked index using LaTeX automatic +indexing entries. But indexing an HTML document is different +from indexing a printed document, because a printed index refers to +page numbers, which have no meaning in HTML because there are no page +breaks. TTH indexes LaTeX documents by section number rather +than by page; assuming, of course, that they have been prepared with +index entries in the standard LaTeX fashion. +.PP +\fItth\fP will construct an index based on the standard LaTeX commands +"\\makeindex" and "\\index{...}", and automatically process it and read it +in when "\\printindex" is encountered. The command line for calling the +makeindex program (not part of this distribution) may be changed using +the +.I -x +switch. For a file without the "\\makeindex" command, tth will write no +index files, just read in an existing one "file.ind" if it exists. +.SH "Graphics inclusion: epsfbox/includegraphics" +.PP +The standard way in plain TeX to include a graphic is using the epsf +macros. The work is done by \\epsfbox{file.ps} which +.I tth +can parse. By +default +.I tth +produces a simple link to such a postscript file, or indeed any format file. +.PP +Optionally TTH can use a more appropriate graphics format, by using +.I ps2gif +or +.I ps2png +to convert the postscript file to a png or gif file, "file.png" or file.gif" +When the switch -e1 or -e2 is specified, if +``file.png'', ``file.gif'' or ``file.jpg'' already exists in the same +directory as implied by the reference to ``file.ps'' then no +conversion is done and the file found is used instead. That graphics +file is then automatically either linked (-e1) or inlined (-e2) in the +document. If no such file is found, TTH tries to find a postscript +file with extension that starts either .ps or .eps and convert it, +first using ps2png then, if unsuccessful, ps2gif. By popular request, +a third graphics option -e3 for generating icons is now available. +.PP +The LaTeX command \\includegraphics{...} and the older +\\[e]psfig{file=...} are treated the same as \\epsfbox. +Their optional arguments are ignored. +.SH "Picture Environments" +The picture environment cannot be translated to HTML. Pictures using +the built-in LaTeX commands must be converted to a graphics file such +as a gif or png, and then included using \\includegraphics. The switch -a, +causes \fItth\fP to attempt automatic picture conversion using +\fIlatex2gif\fP. +.SH OPTIONS +.TP +.B -a +attempt automatic conversion of picture environments. Default omit. +.TP +.B -c +prefix header "Content-type: text/HTML" (for direct web serving). +.TP +.B -d +disable definitions with delimited arguments. Default enable. +.TP +.BR -e ? +epsfbox handling: +.B -e1 +convert figure to png/gif using user-supplied ps2png/ps2gif. +.B -e2 +convert and include inline. +.B -e2 +as e2 but with icon. +.B -e0 +(default) no conversion, just ref. +.TP +.BR -f ? +sets the depth of grouping to which fractions are constructed built-up +.B f5 +(default) allows five levels built-up, +.B f0 +none, +.B f9 +lots. +.TP +.B -g +don't guess an HTML equivalent for font definitions, just remove. +.TP +.B -h +print some help. +.B -? +print usage +.TP +.B -i +use italic font for equations (like TeX). Default roman. +.TP +.B -j? +use index page length ?. Default 20 lines. -j single column. +.TP +.B -Lfile +tells \fItth\fP the base file (no extension) for LaTeX auxiliary input. +.TP +.B -n? +HTML title format control. 0 raw. 1 expand macros. 2 expand eqns. +.TP +.B -ppath +specify additional directories (path) to search for input files. +.TP +.B -r +output raw HTML (no preamble or postlude) for inclusion in other HTML. +.TP +.B -t +permit built-up items in textstyle equations. Default in-line items only. +.TP +.B -u +unicode character encoding. (Default iso-8859-1). +.TP +.B -v +give verbose commentary. +.TP +.B -V +even more verbose (for debugging). +.TP +.B -w? +HTML writing style. Default no head/body tags. -w -w0 no title. +-w1 single title only, head/body tags. -w2 XHTML. +.TP +.B -xmakindxcmd +specify a non-standard makeindex command line. +.TP +.B -y? +equation style: bit 1 compress vertically; bit 2 inline overaccents. + +.SH "SEE ALSO" +The tth manual which is more likely to be up-to-date. +.B http://hutchinson.belmont.ma.us/tth/manual.cgi +(or preferably your local copy). In addition reading the man pages for +\fIlatex\fP, \fIlatex2html\fP, \fItex\fP and \fImakeindex\fP +might be useful. +.SH "Browser Problems" +\fitth\fP translates (La)TeX into standard HTML and takes account as far as +possible of the idiosyncrasies of the major browsers. Nevertheless, +there are several problems that are associated with the +browsers. Authors and publishers should recognize that these are +not \fitth\fP bugs. +.PP +Many of the most serious difficulties of Mathematics rendering in HTML +are associated with the need for extra symbols. In addition to various +Greek letters and mathematical operators, one needs access to the +glyphs used to build up from parts the large brackets matching the +height of built-up fractions. These symbols are almost universally +present on systems with graphical browsers, which all have a +``Symbol'' font, generally based on that made freely available by +Adobe. The problem lies in accessing the font because of +shortcomings in the browsers and the HTML standards that relate to font use. +.PP +For more information please read the section "Browser Problems" in the +manual. +.SH AUTHOR +.PP +.I tth +is copyright (c) 1997-2002 Ian Hutchinson (hutch@psfc.mit.edu). +.SH LICENSE +.PP +You may freely use this software for non-commercial purposes. +It may not be used for commercial purposes without an additional +license. +If you distribute any copies, you must include this file and these +conditions must apply to the recipient. +No warranty of fitness for any purpose whatever is given, intended, or +implied. +You use this software entirely at your own risk. If you choose to use +tth, by your actions you acknowledge that any direct or consequential damage +whatever is your responsibility, not mine. + + For details see http://hutchinson.belmont.ma.us/tth/. +.SH ACKNOWLEDGEMENTS +.PP +Many thanks for useful discussions and input to +Robert Curtis, Ken Yap, Paul Gomme, Bruce Lipschultz, Mike Fridberg, +Michael Sanders, Michael Patra, Bryan Anderson, Wolfram Gloger, +Ray Mines, John Murdie, David Johnson, Jonathan Barron, Michael +Hirsch, Jon Nimmo, Alan Flavell, Ron Kumon. + + + + diff --git a/code-postprocessing/bbob_pproc/tth_C/tth.c b/code-postprocessing/bbob_pproc/tth_C/tth.c new file mode 100644 index 000000000..588368c7b --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/tth.c @@ -0,0 +1,28980 @@ +/* TtH TeX to HTML translator. +TtH Version +"4.08" + (c) Ian Hutchinson +Fri Apr 10 10:13:46 EDT 2015 +*/ + +#line 3 "lex.yy.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include <stdio.h> +#include <string.h> +#include <errno.h> +#include <stdlib.h> + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include <inttypes.h> +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! C99 */ + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart(yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else +#define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +extern int yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart (FILE *input_file ); +void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); +void yy_delete_buffer (YY_BUFFER_STATE b ); +void yy_flush_buffer (YY_BUFFER_STATE b ); +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state (void ); + +static void yyensure_buffer_stack (void ); +static void yy_load_buffer_state (void ); +static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); + +void *yyalloc (yy_size_t ); +void *yyrealloc (void *,yy_size_t ); +void yyfree (void * ); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define yywrap(n) 1 +#define YY_SKIP_YYWRAP + +typedef unsigned char YY_CHAR; + +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; + +typedef int yy_state_type; + +extern int yylineno; + +int yylineno = 1; + +extern char *yytext; +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 1316 +#define YY_END_OF_BUFFER 1317 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[11276] = + { 0, + 1239, 1239, 1239, 1239, 1239, 1239, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 150, 150, 1019, 1019, 0, 0, 1019, 1019, 1026, 1026, + 0, 0, 0, 0, 522, 522, 866, 866, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 839, 839, 0, 0, 856, 856, + 0, 0, 1239, 1239, 0, 0, 679, 679, 0, 0, + 0, 0, 1239, 1239, 512, 512, 1239, 1239, 1237, 1237, + + 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 795, 795, + 606, 606, 0, 0, 0, 0, 0, 0, 0, 0, + 820, 820, 0, 0, 0, 0, 0, 0, 0, 0, + 1239, 1239, 1239, 1239, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1317, 1240, 1239, 761, 761, 1240, 1240, 1053, 102, 673, + 1240, 1240, 1135, 1133, 1240, 1240, 883, 742, 887, 1069, + + 748, 748, 1239, 1240, 755, 759, 759, 1053, 1240, 968, + 1242, 1316, 968, 99, 968, 967, 1044, 1316, 101, 1044, + 1043, 1040, 1040, 1039, 1036, 1034, 1033, 1033, 99, 1036, + 1032, 1238, 1042, 1042, 1238, 1011, 1010, 1136, 1112, 1134, + 1132, 1238, 1235, 1042, 20, 1238, 1207, 99, 1207, 972, + 1003, 1207, 970, 1207, 1001, 643, 1041, 643, 643, 132, + 132, 99, 132, 100, 132, 139, 139, 139, 100, 139, + 141, 141, 161, 161, 158, 158, 154, 153, 153, 150, + 152, 154, 1241, 1019, 1018, 1018, 1241, 1022, 1021, 1020, + 1241, 1316, 1024, 1316, 1019, 1018, 1018, 1241, 1017, 1241, + + 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, + 1027, 1026, 1025, 1025, 894, 894, 101, 894, 890, 891, + 961, 960, 959, 959, 961, 529, 522, 522, 522, 529, + 524, 524, 195, 871, 866, 865, 865, 101, 871, 867, + 869, 868, 1316, 1316, 1316, 1316, 1316, 101, 1316, 1316, + 874, 881, 877, 876, 876, 878, 879, 741, 990, 989, + 989, 990, 986, 862, 1299, 1299, 1297, 843, 843, 837, + 837, 847, 839, 839, 844, 845, 847, 847, 847, 855, + 855, 860, 856, 860, 858, 856, 860, 857, 806, 805, + 803, 100, 801, 806, 1053, 1240, 695, 688, 689, 689, + + 100, 695, 694, 684, 679, 678, 678, 100, 684, 183, + 182, 100, 183, 809, 1316, 670, 1240, 1229, 1239, 165, + 165, 512, 516, 1229, 1229, 236, 102, 180, 292, 515, + 322, 517, 331, 516, 332, 511, 1229, 212, 213, 1229, + 194, 297, 197, 1069, 1053, 1240, 1238, 1238, 1237, 761, + 1238, 1238, 1049, 102, 673, 1238, 1238, 1135, 1133, 1238, + 1238, 194, 742, 197, 1069, 1239, 761, 761, 1053, 102, + 1240, 1239, 761, 761, 102, 1240, 1238, 1053, 1238, 795, + 883, 887, 607, 1238, 606, 99, 990, 988, 1207, 101, + 1207, 998, 1000, 997, 1207, 999, 993, 991, 992, 993, + + 822, 820, 818, 818, 817, 822, 821, 819, 1301, 1302, + 1301, 1301, 1301, 983, 983, 983, 982, 1310, 1308, 1310, + 1313, 1312, 1311, 1311, 1312, 77, 47, 47, 77, 77, + 1053, 77, 77, 77, 77, 77, 1240, 77, 883, 77, + 77, 1240, 591, 590, 592, 1029, 1029, 1029, 1029, 1315, + 1315, 1315, 1315, 1315, 545, 532, 533, 544, 543, 534, + 545, 535, 542, 640, 640, 640, 29, 30, 29, 29, + 669, 664, 661, 663, 669, 660, 668, 100, 665, 668, + 666, 935, 937, 950, 950, 947, 950, 942, 930, 658, + 648, 647, 647, 656, 651, 658, 650, 653, 649, 1243, + + 747, 747, 746, 746, 1046, 101, 1046, 103, 103, 1207, + 971, 1002, 1207, 89, 553, 1063, 1061, 1061, 1061, 1063, + 1239, 0, 0, 0, 761, 1186, 1187, 1188, 1083, 1089, + 1094, 1102, 1109, 1185, 1119, 1130, 1144, 1153, 1166, 1161, + 1164, 1189, 0, 0, 1060, 102, 102, 102, 1190, 1221, + 1072, 1071, 1219, 0, 1215, 1214, 1204, 1113, 0, 1055, + 895, 1071, 1252, 0, 1220, 0, 1167, 1073, 1155, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1100, 1104, + 1296, 1105, 1296, 1296, 548, 677, 1124, 1218, 0, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1151, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1216, 1217, 1157, 1191, 748, 1239, 0, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1100, 1104, + 1296, 1105, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1151, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 759, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 0, 99, 99, 99, + 1202, 969, 0, 1043, 101, 101, 101, 1045, 1044, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 0, + 0, 1033, 1035, 1035, 1035, 1035, 1042, 1236, 0, 0, + + 0, 19, 18, 18, 18, 18, 18, 18, 18, 0, + 972, 1003, 1206, 1206, 972, 1003, 1041, 0, 0, 117, + 0, 0, 0, 100, 100, 100, 0, 0, 0, 0, + 0, 0, 162, 157, 150, 151, 151, 151, 151, 151, + 151, 151, 1019, 1018, 1022, 1021, 1023, 1023, 1024, 1024, + 1019, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1018, 1017, 1015, 1015, 1012, 0, 0, 1027, 1026, + 1025, 1205, 892, 893, 959, 0, 0, 0, 0, 522, + 522, 527, 527, 527, 527, 527, 527, 525, 526, 866, + 865, 1203, 870, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 101, 101, 101, 101, 0, 1203, 969, + 876, 880, 878, 989, 984, 985, 987, 0, 1298, 841, + 836, 839, 844, 845, 846, 846, 0, 0, 854, 854, + 854, 854, 856, 856, 0, 858, 0, 856, 859, 804, + 0, 0, 0, 1296, 1296, 689, 700, 700, 700, 700, + 700, 700, 700, 700, 700, 700, 679, 678, 683, 683, + 683, 683, 683, 683, 188, 188, 188, 188, 188, 188, + 0, 0, 1296, 1296, 1239, 0, 518, 0, 165, 512, + 518, 0, 0, 198, 0, 292, 517, 333, 518, 335, + 511, 1071, 514, 514, 514, 514, 238, 238, 0, 1167, + + 1155, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1100, 1104, 1228, 1105, 1228, 1228, 1228, 1228, + 1228, 1228, 190, 202, 514, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1151, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 300, 327, 0, 1048, 0, 1237, 1051, 1296, 1296, 1239, + 0, 0, 0, 761, 1060, 102, 102, 102, 1296, 1296, + 1239, 0, 0, 0, 761, 102, 102, 102, 1296, 1296, + 1296, 1296, 1296, 796, 796, 796, 796, 796, 796, 796, + 796, 0, 0, 1124, 0, 1296, 1157, 795, 1296, 606, + + 1208, 0, 0, 0, 0, 0, 0, 0, 820, 818, + 817, 817, 817, 824, 824, 1302, 1303, 1304, 0, 1300, + 0, 0, 0, 977, 977, 977, 977, 977, 977, 977, + 977, 1308, 1308, 1308, 1309, 1311, 77, 0, 47, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 0, 66, 77, + 77, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 65, 65, 65, 77, + + 0, 0, 1296, 1296, 1296, 1296, 1296, 1296, 1151, 1296, + 1296, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, + 0, 0, 30, 0, 0, 667, 951, 951, 947, 0, + 951, 942, 0, 647, 0, 0, 746, 746, 1047, 1046, + 1047, 1047, 1047, 1047, 1047, 1047, 1209, 1209, 104, 104, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1057, 0, 0, 0, 0, 0, 102, 0, 0, 0, + 1221, 1071, 1294, 0, 1084, 1090, 1095, 1103, 1110, 0, + 1120, 1131, 1145, 1154, 1162, 1165, 0, 0, 1077, 1170, + + 1086, 1092, 1173, 1098, 1174, 1106, 1111, 1175, 0, 1116, + 1178, 1126, 1140, 1181, 1149, 1182, 1158, 1163, 1183, 0, + 1071, 1176, 1184, 0, 0, 0, 0, 0, 1167, 1073, + 1296, 1296, 1296, 1296, 1081, 1076, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 0, 1296, 1296, 1296, 1296, 1296, 677, 677, + 0, 1078, 1087, 1093, 1099, 1107, 0, 1117, 1127, 1142, + 1150, 1159, 1079, 1088, 1091, 1097, 1108, 0, 1115, 1128, + 1137, 1148, 1160, 1122, 1296, 1296, 1114, 1296, 1296, 1296, + 1296, 1296, 1296, 901, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 676, 1296, 1296, 1296, 1296, + 1296, 1261, 1296, 1296, 1296, 1296, 608, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 126, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1259, 1296, 156, 1296, 1296, 905, 1296, 1296, 0, + 1296, 1296, 1296, 1296, 1296, 0, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1151, 1296, 1296, 1296, 133, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 913, 1296, 1296, 0, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 906, 1296, 1296, 1168, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 908, 1296, 1296, 1296, 1296, 0, 1296, + 1296, 1296, 1296, 1129, 1296, 1296, 1296, 1296, 1260, 1296, + 1082, 1096, 1101, 1118, 1147, 1152, 0, 1081, 1076, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1122, + 1296, 1296, 1114, 1296, 1296, 1296, 1296, 1296, 1296, 901, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 676, 1296, 1296, 1296, 1296, 1296, 1261, 1296, 1296, + 1296, 1296, 608, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 126, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1259, 1296, 156, + 1296, 1296, 905, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 133, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 913, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 906, 1296, 1296, 1168, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 908, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1129, 1296, 1296, 1296, 1296, 1260, + 1296, 1296, 1296, 1296, 1296, 1296, 905, 1296, 1296, 1296, + 0, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + + 1045, 1045, 1045, 1045, 1045, 1043, 0, 1037, 1037, 1037, + 1037, 0, 0, 0, 3, 18, 18, 4, 6, 5, + 18, 18, 18, 18, 0, 0, 0, 131, 119, 0, + 0, 138, 135, 134, 0, 151, 151, 151, 151, 151, + 151, 1023, 1015, 0, 0, 0, 0, 527, 125, 155, + 527, 527, 0, 870, 0, 0, 0, 873, 101, 0, + 846, 0, 0, 854, 854, 854, 807, 0, 0, 0, + 1296, 1296, 700, 700, 700, 125, 700, 155, 700, 700, + 700, 700, 683, 125, 155, 683, 683, 188, 125, 155, + 188, 188, 811, 0, 0, 671, 908, 0, 0, 0, + + 513, 0, 0, 0, 1071, 1292, 0, 0, 0, 0, + 1167, 1228, 1228, 1228, 1228, 1081, 1076, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 288, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 274, 460, 1228, 421, 286, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 273, 1228, 190, 190, 0, 1122, + 1228, 1228, 1228, 1114, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 901, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 192, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 608, + + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 126, + 1228, 1228, 1228, 1228, 1228, 383, 336, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 156, 1228, 1228, 395, 1228, 905, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 382, 1228, 452, + 1228, 334, 453, 1228, 1228, 1228, 1228, 1228, 1228, 345, + 253, 1228, 389, 398, 1228, 254, 1151, 1228, 1228, 1228, + 1228, 1228, 133, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 256, 344, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 913, 1228, 1228, 1228, 1228, + + 1228, 1228, 1228, 1228, 1228, 906, 1228, 1228, 1228, 1168, + 1228, 1228, 1228, 1228, 1228, 1228, 408, 1228, 908, 1228, + 1228, 1228, 1228, 0, 1228, 1228, 1228, 1228, 1228, 1129, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 284, 1228, 255, + 1228, 327, 0, 0, 1296, 908, 0, 0, 0, 0, + 0, 0, 0, 0, 102, 0, 0, 0, 905, 1296, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, + 0, 0, 0, 1296, 1296, 1296, 905, 1296, 908, 797, + 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, + 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, + + 797, 797, 797, 797, 797, 797, 908, 797, 797, 797, + 908, 996, 0, 0, 0, 995, 0, 0, 824, 0, + 0, 0, 0, 977, 977, 125, 977, 155, 977, 977, + 977, 77, 77, 67, 77, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 905, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 65, 65, 65, 65, 65, 65, 0, 0, + 0, 1296, 1296, 1296, 71, 70, 1296, 1296, 68, 1296, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 663, 951, 0, 951, 0, 0, 0, 1047, 1047, 1047, + 1047, 1047, 1047, 1047, 1047, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1068, 1068, 1146, 0, 0, + 1170, 1173, 1174, 1175, 1141, 1178, 1181, 1182, 1183, 1170, + 1173, 1174, 1175, 1178, 1181, 1182, 1183, 1176, 1184, 0, + + 0, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1199, 1296, 1296, 1296, 1296, 1296, 1296, 1172, + 1296, 95, 1296, 1296, 1296, 0, 677, 1143, 1138, 1122, + 1296, 1296, 1296, 1296, 98, 1296, 1296, 1296, 1296, 901, + 1296, 1296, 1296, 1296, 1296, 1296, 1267, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 434, + 1296, 863, 1296, 1296, 1296, 1258, 1296, 1296, 1296, 1296, + 608, 1296, 1291, 1296, 1296, 1296, 1296, 1296, 1296, 126, + 126, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 952, 1256, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 160, 1296, 1296, 1296, 1296, + 905, 1296, 1296, 1296, 1296, 0, 0, 0, 0, 1296, + 1296, 1296, 1296, 861, 1296, 1296, 1296, 1180, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 760, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 913, 1296, 1296, 1296, 0, 0, 1296, 1296, + 1296, 1296, 1296, 1296, 939, 1296, 1296, 1296, 1296, 906, + 1296, 1296, 1296, 1296, 1168, 1296, 1296, 1296, 1296, 852, + + 1296, 1296, 1296, 1296, 1296, 908, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1129, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1257, 1296, 0, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1199, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 95, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 98, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1267, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 434, 1296, 863, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 754, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 952, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 160, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 861, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 749, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 939, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 852, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1291, 1296, 1296, + 1296, 758, 1296, 0, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 851, 1045, 1045, 0, 1037, 1037, + 1037, 0, 0, 0, 18, 18, 18, 18, 18, 18, + 0, 0, 0, 131, 130, 119, 0, 0, 135, 0, + 106, 151, 151, 148, 151, 151, 1023, 1015, 0, 958, + 0, 0, 527, 125, 527, 527, 527, 527, 527, 159, + 527, 527, 875, 0, 101, 101, 101, 101, 0, 0, + + 872, 846, 0, 0, 0, 0, 109, 854, 854, 0, + 802, 0, 1296, 760, 700, 700, 700, 700, 700, 700, + 700, 700, 700, 159, 700, 700, 700, 700, 683, 683, + 683, 683, 683, 683, 159, 683, 683, 188, 188, 188, + 188, 188, 188, 159, 188, 188, 0, 810, 1296, 1296, + 0, 0, 0, 0, 0, 0, 0, 0, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 499, + 1228, 1228, 1199, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 288, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 277, 274, + 460, 0, 278, 286, 95, 1228, 1228, 1228, 1228, 1228, + + 1228, 1228, 1228, 1228, 273, 1228, 0, 190, 1122, 1228, + 1228, 1228, 1228, 1228, 1228, 98, 1228, 1228, 1228, 1228, + 441, 337, 1228, 1228, 1228, 1228, 495, 1228, 1228, 901, + 1228, 1228, 1228, 499, 1228, 1228, 1228, 1228, 324, 1228, + 1228, 1228, 1228, 343, 1228, 1228, 1228, 1228, 1228, 266, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 442, 444, + 0, 0, 1228, 1228, 166, 446, 1228, 342, 434, 1228, + 1228, 863, 447, 1228, 1228, 463, 1228, 448, 1228, 376, + 1228, 494, 1228, 1258, 1228, 1228, 1228, 280, 1228, 608, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 246, 1228, 1228, + + 449, 1228, 1228, 1228, 126, 1228, 1228, 1228, 1228, 1228, + 462, 1228, 383, 384, 1228, 1228, 336, 1228, 1228, 1228, + 1228, 1228, 1228, 491, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 450, 1228, 1228, 1228, 1228, 952, 1256, + 1228, 1228, 1228, 179, 1228, 1228, 1228, 1228, 1228, 1228, + 160, 1228, 1228, 395, 1228, 1228, 461, 1228, 355, 1228, + 905, 1228, 1228, 1228, 1228, 1228, 451, 1228, 1228, 1228, + 1228, 1228, 1228, 382, 1228, 1228, 381, 1228, 861, 1228, + 452, 469, 1228, 1228, 334, 453, 454, 1228, 346, 1228, + 1228, 1228, 1228, 1228, 464, 1228, 1228, 1228, 380, 465, + + 177, 345, 253, 1228, 1228, 1228, 389, 317, 388, 1228, + 398, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 254, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 760, 1228, 1228, 264, 256, 344, + 1228, 1228, 1228, 1228, 1228, 1228, 267, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 258, + 1228, 913, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 455, 1228, 939, 1228, 1228, 1228, 328, 456, 1228, 1228, + 906, 1228, 1228, 1228, 1228, 1228, 1168, 1228, 1228, 1228, + 364, 466, 1228, 1228, 458, 262, 1228, 852, 1228, 1228, + + 1228, 1228, 1228, 323, 1228, 908, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 492, 347, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1257, 1228, 1228, 284, 1228, 255, 1228, 0, 0, 1296, + 1296, 0, 0, 0, 0, 1296, 1296, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1296, 1291, 1296, 1296, + 1296, 1296, 1296, 1296, 0, 0, 0, 0, 0, 824, + 0, 0, 0, 977, 977, 977, 977, 977, 977, 977, + 977, 159, 977, 977, 977, 977, 0, 77, 65, 65, + 65, 65, 65, 1296, 1296, 1296, 63, 1296, 1296, 1296, + + 1296, 1296, 46, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 59, 1296, 1296, 1296, 71, 70, 1296, 1296, 68, 1296, + 1296, 0, 1028, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 951, 0, 0, 951, 0, 0, 0, 1047, 1047, 1047, + 1047, 1047, 1047, 1047, 0, 98, 0, 0, 0, 1065, + 0, 0, 1146, 1193, 0, 1141, 1170, 1173, 1174, 1175, + 1178, 1181, 1182, 1183, 0, 0, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 94, 1296, 91, 1296, 713, 1296, 1296, + 1296, 1296, 1296, 1296, 1143, 1138, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1262, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1268, 674, 1212, 1296, 436, 1296, + 1296, 1222, 864, 1296, 1296, 128, 610, 0, 0, 1296, + 1296, 0, 1296, 1296, 1296, 1296, 954, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 919, 1200, 943, 1296, 1296, + 953, 1296, 1296, 1296, 1296, 83, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 788, 1296, 1296, 963, 1169, 1171, + 1177, 1179, 1296, 1296, 1296, 946, 1296, 1296, 1296, 1296, + + 1296, 1275, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1225, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1074, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 966, 1080, 1121, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 931, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 852, 705, 1296, + 1296, 1296, 112, 1296, 0, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 743, 743, 743, 743, 743, + + 743, 743, 743, 743, 743, 743, 1296, 939, 1296, 1296, + 940, 745, 1296, 1296, 1296, 1296, 1296, 940, 0, 1296, + 1296, 1296, 94, 1296, 91, 1296, 713, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1268, 674, 1212, 1296, 436, 1296, 1296, 1222, 864, 1296, + 1296, 128, 610, 1296, 1296, 1296, 1296, 1296, 1296, 954, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 919, 1200, + 943, 1296, 1296, 953, 1296, 1296, 1296, 1296, 83, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 750, 1296, 1296, + 963, 1296, 1296, 1296, 946, 1296, 1296, 1296, 1296, 1296, + 1275, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1225, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1074, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 966, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 931, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 705, 1296, 1296, 1296, 112, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 743, 743, 743, 743, 743, 743, 1296, 939, 1296, 1296, + 940, 745, 1296, 1296, 1296, 1296, 1296, 940, 1296, 1296, + 1296, 1296, 1296, 1296, 788, 1296, 1296, 1296, 0, 1045, + 1045, 609, 1045, 221, 221, 1045, 1045, 1045, 1045, 851, + 0, 1045, 0, 1037, 1037, 127, 0, 0, 0, 15, + 0, 18, 18, 18, 0, 18, 0, 0, 129, 0, + 137, 0, 151, 151, 148, 151, 1023, 0, 1015, 0, + 0, 127, 527, 527, 527, 527, 527, 527, 527, 0, + + 527, 0, 0, 0, 0, 0, 846, 840, 0, 854, + 107, 802, 0, 1296, 700, 127, 0, 700, 700, 700, + 700, 700, 700, 700, 700, 700, 697, 700, 127, 683, + 683, 683, 683, 683, 683, 683, 681, 127, 188, 188, + 188, 188, 188, 188, 188, 188, 810, 671, 1296, 0, + 0, 0, 0, 0, 0, 0, 0, 1228, 1228, 1228, + 1228, 1228, 499, 499, 500, 499, 1228, 94, 1228, 91, + 1228, 1228, 1228, 1228, 713, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 277, 0, 0, 278, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 301, 1228, 1228, 1228, 1228, 1228, 1228, + + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 441, 337, 209, 1228, 1228, 1228, 495, 495, 483, 1228, + 240, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 330, 1228, 1228, 324, 1262, 1228, 1228, + 0, 287, 285, 0, 343, 1228, 1228, 341, 1228, 1228, + 1228, 266, 1228, 326, 1228, 1228, 1228, 1228, 1228, 401, + 1228, 1228, 442, 443, 444, 445, 192, 1212, 446, 1228, + 342, 1228, 436, 494, 447, 1228, 1228, 463, 0, 1228, + 448, 1228, 376, 1228, 494, 494, 1222, 481, 1228, 864, + 1228, 1228, 280, 128, 610, 1228, 0, 1228, 1228, 0, + + 1228, 1228, 1228, 1228, 498, 1228, 246, 1228, 1228, 449, + 1228, 1228, 221, 1228, 1228, 1228, 1228, 1228, 1228, 462, + 0, 384, 1228, 403, 1228, 1228, 1228, 1228, 919, 491, + 491, 478, 1200, 221, 1228, 1228, 1228, 953, 1228, 1228, + 1228, 1228, 450, 83, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 461, 0, 1228, 1228, 355, 0, 249, 788, + 1228, 1228, 1228, 1228, 451, 963, 1228, 348, 1228, 1228, + 1228, 1228, 1228, 1228, 503, 381, 1228, 1228, 1228, 469, + 0, 1228, 1228, 946, 1228, 454, 1228, 346, 1228, 1228, + + 1228, 1228, 1228, 1228, 1228, 464, 0, 221, 1228, 1228, + 1228, 380, 1228, 465, 0, 177, 1228, 1228, 1228, 317, + 388, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 0, 387, 0, 1228, 1225, + 1228, 1228, 1228, 357, 1228, 1228, 1228, 1228, 1228, 209, + 399, 1228, 1228, 1228, 1228, 1228, 325, 264, 1228, 329, + 1228, 1228, 1228, 365, 1228, 1228, 1228, 1228, 267, 1228, + 477, 1074, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 258, 1228, 1228, 1228, 966, 482, 1228, 1228, 1228, + 1228, 455, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + + 1228, 328, 1228, 456, 457, 931, 1228, 1228, 1228, 1228, + 1228, 1228, 485, 1228, 338, 1228, 1228, 364, 0, 466, + 0, 1228, 296, 1228, 458, 459, 262, 1228, 852, 1228, + 1228, 1228, 705, 1228, 1228, 323, 1228, 112, 1228, 0, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 743, 743, 743, 743, 743, 743, 743, + 743, 743, 1228, 939, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 221, 1228, 492, 492, 479, 347, 745, 298, 1228, + 1228, 1228, 1228, 1228, 940, 1228, 1228, 245, 0, 0, + + 943, 0, 0, 0, 0, 780, 1296, 1296, 0, 0, + 0, 0, 0, 0, 0, 0, 1296, 0, 1296, 785, + 1296, 1296, 1296, 0, 0, 127, 0, 0, 127, 127, + 824, 0, 0, 0, 0, 0, 0, 0, 0, 977, + 127, 977, 977, 977, 977, 977, 977, 977, 977, 977, + 0, 977, 977, 77, 77, 65, 65, 65, 65, 65, + 1296, 1296, 1296, 1296, 64, 1296, 62, 1296, 54, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 73, 1296, 1296, 1296, + 1296, 1296, 1296, 1314, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 542, 0, 0, 0, 0, 951, + + 0, 947, 951, 0, 0, 0, 1047, 609, 1047, 1047, + 1047, 1047, 1047, 1047, 0, 0, 0, 0, 0, 0, + 0, 0, 112, 1296, 1296, 1296, 1296, 0, 32, 96, + 719, 93, 713, 712, 711, 1296, 97, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1056, 1296, 1210, 1296, 1296, 1296, 0, + 0, 0, 0, 1296, 0, 0, 0, 0, 1296, 728, + 1296, 1263, 1296, 1296, 1296, 1296, 1296, 897, 128, 128, + 1234, 1296, 1296, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1232, 1296, 1296, 1296, 1296, 111, 1296, 0, + + 827, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 0, 1296, 1296, 1296, 953, 925, 938, 703, 1296, + 769, 934, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 143, + 145, 1296, 114, 1296, 1296, 1296, 1296, 1296, 816, 1296, + 1296, 1296, 710, 1296, 1296, 1296, 1296, 964, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 567, 1296, 1296, + 1296, 1296, 1296, 34, 1075, 1296, 965, 1276, 1296, 1296, + 1296, 1296, 0, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 708, 1280, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 705, 43, 1296, 1296, 1296, 0, 0, 0, 0, + 0, 0, 0, 0, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 0, 1296, 744, + 744, 744, 744, 744, 744, 744, 1296, 744, 744, 744, + 744, 744, 744, 1271, 1296, 770, 936, 1296, 750, 32, + 96, 719, 93, 712, 711, 1296, 97, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1056, 1296, 1210, 1296, 1296, 1296, 1296, + 1296, 728, 1296, 1296, 1296, 1296, 1296, 1296, 897, 1296, + 1296, 1296, 1296, 1296, 1296, 111, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 953, 925, 938, 703, 1296, 752, 934, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 143, 145, 1296, 114, 1296, 1296, + 1296, 1296, 1296, 816, 1296, 1296, 1296, 710, 1296, 1296, + 1296, 1296, 964, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 34, 1075, 1296, + 965, 1276, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 708, 1280, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 43, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 744, 1296, 744, 744, 744, 744, 744, 1271, + + 1296, 770, 936, 1296, 1296, 1296, 1296, 1296, 1296, 769, + 1296, 1296, 1296, 708, 0, 1045, 1045, 1045, 221, 221, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 0, 1045, 0, 1037, 1037, + 127, 0, 0, 0, 0, 1007, 0, 0, 0, 18, + 18, 18, 18, 18, 18, 18, 18, 0, 18, 0, + 0, 0, 0, 151, 151, 1023, 0, 1015, 0, 0, + 0, 527, 527, 142, 144, 527, 113, 527, 0, 527, + 0, 0, 0, 882, 846, 0, 108, 800, 1296, 700, + 0, 0, 685, 700, 700, 142, 144, 700, 113, 700, + + 700, 700, 683, 683, 142, 144, 683, 113, 683, 188, + 188, 142, 144, 188, 113, 188, 188, 1296, 0, 208, + 0, 0, 0, 0, 112, 1228, 1228, 1228, 32, 500, + 500, 500, 96, 719, 270, 1228, 269, 93, 713, 712, + 1228, 711, 1228, 1228, 1228, 1228, 1228, 279, 0, 0, + 1228, 275, 271, 1228, 1228, 1228, 301, 97, 1228, 209, + 1228, 1228, 1228, 1228, 281, 239, 291, 1228, 1228, 1228, + 1228, 1228, 1228, 209, 209, 1228, 1228, 1228, 0, 1228, + 240, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 506, 330, 1228, 1228, 1228, 1210, + + 1228, 287, 285, 0, 0, 218, 1228, 341, 430, 1228, + 1228, 0, 0, 1228, 326, 1228, 0, 1228, 1228, 728, + 401, 1228, 1263, 1228, 443, 445, 1228, 1228, 1228, 431, + 242, 1228, 0, 0, 1228, 1228, 1228, 426, 427, 428, + 1228, 1228, 897, 128, 1228, 1228, 1228, 0, 0, 0, + 0, 1228, 1228, 1228, 1228, 1228, 0, 0, 0, 0, + 1292, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 385, 1228, + 1228, 1228, 111, 221, 1228, 0, 1228, 1228, 1228, 1228, + 1228, 241, 0, 0, 379, 1228, 1228, 1228, 1228, 1228, + 1228, 221, 1228, 1228, 1228, 1228, 953, 925, 938, 703, + + 1228, 769, 934, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 143, 145, 1228, 114, 1228, 1228, 282, 1228, 1228, 1228, + 0, 0, 290, 816, 0, 249, 1228, 1228, 283, 1228, + 250, 1228, 348, 1228, 710, 1228, 308, 429, 1228, 503, + 503, 1228, 1228, 1228, 1228, 378, 1228, 1228, 0, 0, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 964, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 0, 0, 1228, 1228, 1228, 1228, 0, + 0, 1228, 295, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 387, 0, + + 0, 397, 1228, 1228, 1228, 357, 0, 268, 1228, 350, + 1228, 1228, 1228, 1228, 1228, 1228, 399, 1228, 1228, 1228, + 1228, 1228, 325, 1228, 1228, 293, 1228, 365, 0, 1228, + 1228, 1228, 34, 1075, 1228, 965, 1228, 1228, 306, 1228, + 1228, 1228, 1228, 504, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 260, 400, 457, 1228, + 708, 510, 1228, 1228, 1228, 490, 490, 1228, 338, 1228, + 1228, 1228, 0, 0, 0, 1228, 296, 1228, 459, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 247, + 493, 377, 705, 43, 1228, 1228, 1228, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 257, 1228, 1228, 1228, + 221, 1228, 432, 744, 744, 744, 744, 744, 1228, 744, + 744, 744, 744, 744, 298, 1228, 1228, 770, 936, 1228, + 0, 349, 1228, 1228, 245, 0, 0, 0, 0, 780, + 0, 0, 0, 0, 781, 1296, 1296, 1296, 0, 0, + 785, 0, 0, 0, 0, 0, 0, 1296, 0, 1296, + + 784, 785, 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 1296, 1296, 1296, 0, 0, 0, 994, 824, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 977, 975, 976, 977, + 977, 142, 144, 977, 113, 977, 977, 978, 977, 977, + 0, 77, 65, 65, 65, 65, 65, 1296, 1296, 1296, + 1296, 64, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 42, + 1296, 1296, 73, 75, 76, 74, 1296, 1296, 72, 0, + 0, 0, 536, 0, 0, 0, 537, 0, 639, 0, + 0, 0, 951, 0, 951, 0, 0, 0, 0, 1047, + + 1047, 0, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, + 1047, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 111, 1296, 814, 1296, 1295, 0, 712, 711, 1296, + 92, 0, 0, 0, 1296, 1296, 1296, 1296, 1296, 1233, + 1233, 1296, 1296, 0, 1296, 885, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 0, 1067, 1066, 1066, 1296, + 0, 0, 0, 560, 0, 702, 1296, 1296, 1296, 28, + 1296, 1296, 889, 1296, 1296, 1296, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1296, 1296, 1296, 1296, + 1296, 827, 827, 827, 827, 827, 827, 1296, 1296, 1296, + + 1296, 1227, 1296, 1296, 1296, 1296, 0, 1296, 1296, 1296, + 0, 0, 0, 1296, 1296, 932, 1296, 1296, 147, 1296, + 1296, 1296, 116, 114, 114, 1296, 1296, 1296, 1224, 1296, + 1296, 1296, 1296, 710, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 0, 0, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 853, 1296, 1296, 962, 1296, 1296, 1296, + 1296, 1156, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 931, + 1296, 1296, 0, 955, 1296, 1296, 1296, 1296, 957, 1296, + 1296, 1296, 1296, 1296, 708, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 599, 1296, 602, 597, 1296, + 600, 605, 604, 601, 603, 1296, 1296, 1296, 1296, 902, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 88, 1296, 1296, 1296, + 1296, 1269, 1296, 1296, 1266, 1296, 1296, 0, 0, 0, + 0, 1296, 1296, 1296, 933, 0, 1296, 92, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 0, 1296, 885, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 28, 1296, 1296, 757, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1227, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 932, 1296, 1296, + 147, 1296, 1296, 1296, 116, 1296, 1296, 1296, 1224, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 853, 1296, 1296, 962, 1296, 1296, 1296, 1296, 1156, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 931, 1296, 1296, 1296, + 1296, 1296, 1296, 957, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 599, + 1296, 602, 597, 1296, 600, 605, 604, 601, 603, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 88, 1296, 1296, + 1296, 1296, 1269, 1296, 1296, 1266, 1296, 1296, 1296, 1296, + 1296, 933, 1296, 1296, 889, 1296, 1296, 1296, 1296, 1296, + 1296, 0, 1045, 27, 1045, 0, 172, 1045, 173, 170, + 176, 175, 850, 1045, 225, 227, 223, 1045, 222, 230, + 229, 226, 228, 0, 1045, 1045, 1038, 1037, 1031, 0, + + 0, 0, 0, 0, 0, 18, 7, 8, 18, 14, + 12, 10, 9, 11, 18, 0, 18, 0, 0, 0, + 0, 149, 0, 0, 1023, 0, 1015, 0, 958, 0, + 146, 527, 115, 113, 523, 0, 0, 527, 0, 0, + 875, 0, 846, 0, 1296, 0, 687, 0, 0, 0, + 0, 146, 700, 115, 700, 700, 700, 700, 146, 683, + 115, 683, 683, 146, 188, 115, 188, 188, 188, 1296, + 0, 0, 0, 111, 1228, 814, 1228, 270, 1228, 269, + 712, 272, 711, 1228, 1228, 1228, 1228, 1228, 279, 0, + 1228, 275, 271, 1228, 1228, 1228, 92, 0, 1228, 1228, + + 1228, 281, 239, 291, 1228, 386, 438, 439, 440, 433, + 1228, 1228, 476, 1233, 1233, 1228, 1228, 0, 1228, 885, + 1228, 1228, 1228, 1228, 358, 359, 1228, 1228, 1228, 360, + 1228, 1228, 1228, 1228, 340, 1228, 430, 1228, 1228, 1067, + 209, 1228, 0, 1228, 1228, 1228, 1228, 28, 435, 1228, + 431, 242, 1228, 0, 0, 1228, 1228, 1228, 426, 427, + 428, 1228, 889, 1228, 1228, 1228, 1228, 0, 0, 0, + 0, 1228, 1228, 1228, 1228, 1228, 497, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 385, 1228, 316, 1228, 1228, 1228, + 1228, 1228, 315, 1228, 241, 0, 0, 379, 505, 1228, + + 1228, 1228, 1228, 0, 1228, 1228, 1228, 1228, 0, 1228, + 1228, 932, 1228, 1228, 147, 1228, 1228, 1228, 116, 114, + 1228, 1228, 282, 1228, 1224, 1228, 0, 0, 290, 0, + 1228, 1228, 283, 1228, 250, 251, 310, 710, 304, 302, + 308, 429, 1228, 1228, 1228, 1228, 1228, 1228, 378, 309, + 0, 0, 467, 367, 468, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 407, 172, 1228, 173, 1228, + 170, 176, 175, 1228, 0, 0, 1228, 1228, 1228, 1228, + 0, 0, 1228, 1228, 295, 1228, 1228, 1228, 1228, 1228, + 0, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + + 1228, 396, 0, 397, 853, 1228, 1228, 0, 268, 962, + 350, 352, 351, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1156, 293, 1228, 0, 402, 1228, + 1228, 1228, 1228, 311, 305, 303, 306, 1228, 1228, 931, + 307, 504, 504, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 957, 1228, 1228, 1228, 1228, 1228, 260, 400, 1228, 708, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 391, 1228, + 0, 0, 0, 393, 1228, 1228, 1228, 225, 1228, 227, + 223, 1228, 222, 230, 229, 226, 1228, 228, 1228, 247, + 493, 493, 480, 377, 1228, 1228, 1228, 0, 0, 191, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 88, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 0, 1228, 265, 257, 259, 1228, 1228, 1228, 432, 1228, + 1228, 933, 349, 1228, 1228, 211, 0, 0, 0, 0, + 780, 1296, 1296, 1296, 0, 0, 785, 0, 0, 785, + 0, 785, 0, 0, 1296, 0, 1296, 1296, 1296, 1296, + 0, 0, 0, 824, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 977, 146, 977, 115, 977, 973, 977, 977, 77, 77, + 65, 65, 65, 65, 1296, 0, 1296, 1296, 1296, 0, + 1296, 1296, 1296, 1296, 1296, 1296, 51, 1296, 1296, 75, + 76, 74, 1296, 1296, 72, 0, 540, 534, 538, 541, + 535, 539, 0, 0, 0, 947, 942, 0, 942, 0, + 0, 27, 1047, 172, 1047, 173, 170, 176, 175, 1047, + 87, 1047, 1047, 1062, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1296, 1296, 832, 90, 1139, 0, 1296, + 1296, 838, 1296, 1226, 1296, 1296, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1231, 1296, 1296, 1296, 1296, 1296, 772, + 1296, 1248, 1296, 1296, 1296, 1296, 1067, 1067, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 36, 1296, 1296, + 1296, 1296, 827, 827, 827, 827, 827, 1296, 1296, 1296, + 1296, 0, 1296, 0, 0, 1296, 799, 1296, 1296, 945, + 1223, 1296, 928, 0, 924, 1296, 932, 1296, 1296, 122, + 124, 120, 116, 116, 123, 1296, 815, 1296, 1296, 903, + 1201, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 955, + + 1296, 1296, 1296, 1296, 774, 1296, 1296, 1296, 1296, 1296, + 1296, 0, 1211, 1296, 1265, 1296, 1296, 1296, 1296, 1296, + 853, 1296, 1296, 1296, 1296, 1296, 1226, 1156, 1296, 1270, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 0, 1296, 914, + 1296, 1296, 956, 1296, 1296, 1296, 1296, 904, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 902, 1289, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 84, 1296, 1296, 1296, 1296, 568, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1264, + 911, 1296, 0, 0, 808, 0, 849, 940, 1296, 1296, + 1296, 933, 0, 90, 1296, 1296, 838, 1296, 1226, 1296, + 1296, 0, 1296, 1296, 1296, 1296, 1296, 753, 1296, 1248, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 36, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1223, 1296, 928, 924, + 1296, 1296, 1296, 122, 124, 120, 123, 1296, 815, 1296, + 1296, 903, 1201, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 955, 1296, 1296, 1296, 1296, 753, 1296, 1296, 1296, + + 1296, 1296, 1296, 1211, 1296, 1265, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1226, 1296, 1270, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 914, 1296, 1296, + 1296, 1296, 1296, 904, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 84, 1296, 1296, 1296, 1296, 568, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 911, 1296, 1296, 1296, 1296, 1296, 772, 1296, + 1296, 1296, 774, 1296, 1296, 0, 1045, 1045, 235, 174, + + 850, 1045, 1045, 0, 1045, 1045, 1037, 0, 0, 0, + 0, 0, 0, 18, 18, 16, 0, 18, 0, 0, + 0, 0, 149, 0, 848, 1023, 0, 1015, 0, 0, + 121, 115, 0, 0, 527, 0, 875, 846, 0, 1296, + 0, 0, 0, 121, 700, 700, 696, 700, 121, 683, + 683, 121, 188, 188, 188, 1296, 0, 0, 0, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 90, 0, 1228, 424, + 1228, 276, 1228, 1228, 838, 1228, 386, 438, 439, 440, + 433, 1228, 1226, 0, 1228, 1228, 0, 0, 1228, 1228, + 1228, 1228, 1228, 358, 0, 359, 0, 1228, 1228, 772, + + 360, 0, 1228, 1228, 1228, 1228, 340, 1228, 1228, 1228, + 1228, 1228, 1067, 1228, 1228, 1228, 1228, 1228, 437, 1228, + 0, 339, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 0, + 0, 0, 0, 0, 1228, 36, 1228, 243, 1228, 1228, + 1228, 1228, 939, 1228, 1228, 1228, 1228, 316, 1228, 1228, + 1228, 1228, 1228, 315, 1228, 0, 1228, 0, 1228, 1228, + 1228, 235, 1223, 1228, 928, 1228, 924, 1228, 1228, 1228, + 122, 118, 118, 124, 120, 116, 123, 1228, 815, 1228, + 0, 0, 1228, 903, 1201, 251, 252, 310, 304, 302, + 1228, 1228, 1228, 163, 1228, 1228, 309, 0, 467, 0, + + 367, 468, 0, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 955, 1228, 1228, 174, 0, 0, 470, 0, 0, + 216, 0, 1228, 1228, 774, 1228, 0, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1211, 1228, 189, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 396, 0, 853, 1228, 1228, 0, + 352, 351, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 289, 1226, 219, 1156, 1228, 0, 402, 1228, 1228, 1228, + 1228, 311, 305, 303, 1228, 1228, 1228, 307, 1228, 1228, + 1228, 914, 1228, 1228, 956, 1228, 1228, 1228, 1228, 1228, + 904, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 391, + + 1228, 1228, 0, 0, 393, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 84, 1228, 1228, 1228, 1228, 568, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1264, 411, 1228, 911, 263, 1228, + 0, 1228, 265, 259, 1228, 1228, 1228, 1228, 1228, 211, + 0, 0, 0, 0, 0, 0, 0, 781, 0, 779, + 782, 1296, 0, 0, 0, 0, 0, 785, 0, 0, + + 563, 0, 1296, 786, 1296, 1296, 0, 0, 0, 823, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 977, 121, 977, 973, + 977, 977, 0, 77, 65, 65, 1296, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1231, 1296, 1296, 53, 0, 0, + 1296, 58, 64, 1296, 1296, 57, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 0, 0, 0, 0, 0, 0, 0, + 1047, 174, 1047, 1047, 1047, 0, 0, 0, 0, 0, + 0, 1307, 1058, 0, 1296, 1296, 1192, 1296, 1296, 566, + + 1226, 1226, 1296, 1296, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 900, 1283, 1296, + 1296, 771, 916, 1296, 1296, 1296, 569, 1067, 1296, 729, + 1296, 1296, 1296, 888, 1290, 1296, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 1296, + 1296, 827, 827, 827, 827, 827, 827, 827, 1296, 1293, + 792, 0, 0, 1296, 0, 1296, 1296, 1296, 45, 0, + 1296, 1296, 1296, 122, 122, 124, 124, 120, 120, 123, + 123, 1296, 1296, 1296, 789, 903, 1296, 1296, 764, 1296, + + 1296, 1296, 1296, 1254, 1296, 1296, 1296, 910, 773, 1296, + 918, 1277, 1296, 835, 1296, 0, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 909, 0, 955, 1296, 576, + 1296, 1296, 1296, 0, 0, 0, 0, 915, 904, 1296, + 1296, 1296, 0, 0, 0, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 907, 0, 0, 0, + 944, 0, 0, 0, 0, 0, 0, 0, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 0, 1287, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 766, 1296, 911, 1296, 0, 0, 1296, 1296, + 1296, 0, 1296, 1296, 566, 1296, 1296, 0, 900, 1296, + 1296, 753, 916, 1296, 1296, 1296, 1296, 729, 1296, 1296, + 1296, 756, 1290, 1296, 35, 1296, 1296, 1296, 1293, 792, + 1296, 1296, 1296, 1296, 45, 1296, 1296, 1296, 1296, 1296, + 1296, 751, 1296, 1296, 764, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 910, 753, 1296, 918, 1277, 1296, 835, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 909, + + 1296, 1296, 1296, 915, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 907, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 766, 1296, 1296, 1296, 1296, 1296, 771, 888, 789, + 773, 1296, 1296, 1306, 1045, 1045, 1045, 1045, 232, 765, + 1045, 1037, 0, 0, 0, 0, 0, 17, 18, 0, + 18, 0, 0, 0, 0, 1023, 0, 1015, 0, 0, + 121, 0, 0, 527, 846, 0, 1296, 0, 0, 0, + + 700, 700, 0, 974, 683, 683, 188, 188, 188, 1296, + 0, 0, 207, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 0, 1228, 1228, 276, 1228, 1228, 566, 1228, 1226, 1226, + 0, 1228, 1228, 0, 0, 900, 1228, 1228, 771, 0, + 0, 363, 1228, 0, 361, 916, 1228, 1228, 1228, 1228, + 1228, 1228, 318, 729, 1228, 1228, 0, 339, 1228, 1228, + 1228, 1228, 294, 888, 1228, 1228, 0, 0, 0, 0, + 0, 1228, 35, 243, 0, 0, 1228, 215, 1228, 1228, + 1228, 931, 1228, 1228, 1228, 1228, 1228, 792, 0, 1228, + 1228, 1228, 1228, 45, 1228, 1228, 1228, 1228, 122, 118, + + 118, 1228, 120, 178, 120, 118, 118, 1228, 1228, 1228, + 0, 0, 789, 903, 252, 1228, 1228, 1228, 764, 1228, + 0, 0, 0, 0, 0, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1254, 1228, 1228, 1228, 0, 910, 773, 1228, + 0, 1228, 1228, 918, 1228, 1228, 835, 1228, 1228, 1228, + 1228, 1228, 169, 1228, 1228, 1228, 0, 1228, 1228, 0, + 1228, 1228, 1228, 496, 1228, 1228, 299, 1228, 289, 1228, + 0, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 909, 1228, + 1228, 1228, 1228, 1228, 314, 0, 0, 915, 904, 1228, + 1228, 1228, 1228, 0, 164, 1228, 1228, 392, 1228, 0, + + 0, 394, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 907, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 231, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 0, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 766, 1228, 1228, 911, 263, 1228, + 1228, 261, 248, 1228, 1228, 1228, 0, 779, 0, 0, + 0, 0, 0, 0, 1296, 0, 0, 786, 0, 0, + 0, 0, 0, 1296, 1296, 1296, 0, 0, 0, 1305, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 587, 0, 0, 0, 0, 0, 981, 977, 977, 977, + 77, 77, 65, 65, 1296, 0, 60, 60, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1296, 1296, 53, 0, 1296, 44, 1296, 57, 0, 1296, + 1296, 50, 1296, 1296, 68, 0, 0, 0, 0, 942, + 0, 0, 1047, 1047, 765, 1047, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1296, 1296, 1296, 1247, + 1296, 1296, 0, 0, 0, 0, 0, 611, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 900, 1296, 1284, 916, + 1296, 714, 1296, 1282, 1296, 1125, 1296, 1296, 791, 0, + 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, + 0, 1296, 730, 0, 0, 827, 827, 827, 827, 827, + 827, 827, 827, 1296, 1293, 1293, 792, 0, 1296, 0, + 0, 776, 0, 0, 0, 921, 1296, 45, 0, 769, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1250, 1296, 1296, + 1296, 1296, 551, 1278, 910, 790, 1296, 1296, 1296, 110, + 1296, 1296, 0, 1296, 1296, 1296, 1296, 898, 1296, 731, + + 922, 1296, 1296, 1296, 0, 1296, 1296, 1296, 909, 0, + 1296, 1296, 1296, 1296, 0, 0, 0, 915, 1296, 777, + 1296, 0, 0, 0, 0, 1296, 1296, 1296, 1296, 720, + 1296, 727, 1296, 928, 926, 907, 0, 0, 675, 1014, + 0, 0, 105, 0, 0, 0, 1296, 1296, 1296, 1296, + 1296, 1296, 0, 0, 0, 1296, 86, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 768, 1296, 0, 1296, 1296, 1281, 751, 1296, 1247, 1296, + 1296, 0, 1296, 1296, 714, 1296, 1296, 1125, 1296, 1296, + + 791, 1296, 730, 1296, 1296, 776, 921, 1296, 769, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1250, 1296, 1296, 1296, + 1296, 551, 1278, 790, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 898, 1296, 731, 922, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 753, 1296, 1296, + 1296, 1296, 1296, 720, 1296, 727, 1296, 928, 926, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 86, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 768, 1296, 1296, 1296, 1296, 777, 1045, 1045, 0, 1045, + + 767, 1037, 1009, 0, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, 1013, 0, 0, 0, 0, + 0, 353, 0, 0, 0, 1296, 0, 0, 0, 700, + 698, 683, 682, 188, 184, 188, 1296, 519, 1228, 1228, + 425, 417, 1228, 1228, 1228, 1228, 460, 1228, 1228, 1228, + 1228, 313, 0, 1228, 1228, 0, 0, 900, 1228, 0, + 0, 363, 0, 362, 0, 361, 0, 916, 1228, 1228, + 1228, 714, 1228, 318, 1228, 1125, 0, 1228, 1228, 1228, + 1228, 412, 294, 791, 0, 0, 0, 0, 237, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 730, 1228, 1293, 1292, + + 792, 1228, 0, 776, 0, 921, 1228, 45, 320, 769, + 1228, 1228, 124, 123, 1228, 1228, 1228, 0, 0, 1228, + 1228, 404, 1228, 0, 0, 0, 0, 0, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 551, 1228, 0, + 910, 790, 0, 1228, 184, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 0, 898, 0, 1228, 1228, 1228, + 496, 496, 484, 1228, 731, 299, 922, 1228, 0, 1228, + 1228, 0, 1228, 1228, 1228, 1228, 909, 1228, 1228, 1228, + 1228, 1228, 314, 0, 915, 1228, 777, 1228, 321, 1228, + 1228, 392, 1228, 0, 0, 394, 1228, 720, 1228, 727, + + 1228, 507, 928, 926, 907, 0, 0, 0, 0, 0, + 520, 0, 0, 0, 0, 0, 0, 0, 501, 502, + 234, 1228, 1228, 1228, 1228, 1228, 1228, 0, 1228, 1228, + 86, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 354, 1228, 1228, 1228, 1228, 1228, 768, 1228, 1228, 1228, + 248, 1228, 1228, 0, 0, 0, 779, 1296, 0, 0, + 0, 0, 786, 0, 0, 1296, 1296, 1296, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 977, 0, 0, 65, 65, + + 1296, 0, 0, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1296, 1296, 0, 0, 0, 44, 78, 0, + 0, 1296, 1296, 50, 52, 69, 68, 543, 0, 0, + 31, 0, 0, 0, 1047, 85, 767, 0, 0, 0, + 629, 0, 0, 0, 0, 0, 0, 1296, 1296, 1296, + 1247, 884, 1296, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1296, 1296, 763, + 1296, 1296, 1296, 0, 0, 0, 0, 0, 0, 0, + + 634, 0, 0, 0, 0, 1296, 0, 0, 0, 0, + 827, 827, 827, 827, 827, 827, 827, 927, 0, 792, + 1296, 863, 0, 0, 0, 920, 0, 79, 1296, 1296, + 1296, 778, 1245, 1244, 1250, 0, 1296, 1296, 1296, 1296, + 736, 1296, 1296, 1296, 1296, 1198, 1197, 1196, 1195, 1296, + 1296, 912, 709, 1296, 554, 1296, 715, 0, 1274, 1296, + 1296, 0, 0, 0, 955, 706, 1296, 1296, 0, 0, + 775, 1296, 0, 0, 1296, 1296, 1296, 1296, 1296, 598, + 0, 0, 0, 0, 0, 0, 0, 1296, 1296, 585, + 1296, 570, 1296, 929, 37, 1296, 1296, 571, 552, 941, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 577, 1296, 1296, + 1296, 1296, 1296, 1296, 1246, 1296, 949, 917, 1296, 0, + 940, 1296, 1296, 884, 1296, 0, 1296, 1296, 763, 1296, + 1296, 1296, 1296, 927, 1296, 920, 79, 1296, 1296, 1296, + 778, 1245, 1244, 1296, 1296, 1296, 1296, 736, 1296, 1296, + 1296, 1296, 1296, 1296, 912, 709, 1296, 554, 1296, 715, + 1296, 1296, 706, 1296, 753, 1296, 1296, 1296, 1296, 1296, + 1296, 598, 1296, 1296, 585, 1296, 570, 1296, 37, 1296, + 1296, 571, 552, 941, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 577, 1296, 1296, 1296, 1296, 1296, 1296, 1246, 1296, + + 949, 917, 1296, 940, 1296, 775, 171, 1045, 0, 220, + 224, 1030, 0, 0, 0, 0, 13, 0, 980, 0, + 0, 136, 140, 1016, 0, 0, 353, 842, 0, 0, + 1296, 0, 693, 0, 0, 700, 683, 188, 188, 1296, + 1228, 1228, 1228, 1228, 1228, 1228, 460, 419, 1228, 1228, + 1247, 313, 0, 884, 1228, 0, 0, 1228, 0, 0, + 0, 362, 0, 0, 0, 171, 1228, 763, 1228, 463, + 1228, 1228, 1228, 1228, 167, 0, 0, 0, 473, 1228, + 1228, 1228, 1228, 1228, 927, 1228, 462, 920, 320, 79, + 1228, 1228, 1228, 778, 461, 366, 1228, 1228, 1228, 469, + + 0, 0, 1250, 1228, 1228, 1228, 1228, 406, 1228, 1228, + 1228, 464, 465, 1228, 736, 1228, 1228, 1228, 1228, 1228, + 1228, 912, 709, 390, 0, 0, 0, 471, 1228, 1228, + 1228, 554, 0, 1228, 715, 0, 220, 1228, 1228, 0, + 409, 706, 1228, 1228, 1228, 775, 1228, 321, 1228, 1228, + 1228, 0, 466, 1228, 1228, 224, 0, 0, 0, 0, + 0, 0, 0, 521, 0, 0, 0, 0, 0, 1228, + 1228, 585, 1228, 570, 1228, 1228, 37, 1228, 1228, 571, + 552, 941, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 577, + 1228, 1228, 486, 1228, 1228, 1228, 354, 1228, 1228, 1228, + + 949, 917, 1228, 1228, 244, 940, 1228, 1050, 0, 783, + 0, 0, 0, 0, 0, 0, 626, 787, 1296, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 979, 77, 65, + 65, 1296, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1296, 49, 0, 0, 0, + 55, 1296, 69, 0, 0, 0, 0, 1047, 0, 0, + 0, 0, 0, 778, 0, 1059, 0, 0, 1296, 0, + 558, 558, 1296, 1296, 1296, 82, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 624, 1054, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1296, 1296, 1296, 1296, 1296, 0, 0, 0, 0, 633, + 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 827, 827, 827, 827, 827, 827, 1296, 864, + 0, 704, 1296, 1296, 1296, 0, 0, 1296, 1296, 1296, + 1255, 733, 0, 0, 0, 1296, 0, 1296, 0, 1085, + 1123, 0, 1251, 1296, 912, 709, 1296, 1296, 0, 0, + 1296, 1296, 0, 706, 1296, 0, 0, 0, 0, 0, + 1296, 0, 0, 1296, 579, 1296, 1296, 1296, 0, 0, + + 0, 0, 0, 0, 0, 0, 2, 1296, 1296, 574, + 573, 948, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 572, + 1296, 1296, 1296, 1296, 1005, 917, 0, 0, 596, 0, + 1296, 1296, 1296, 0, 1296, 1296, 1296, 1296, 1296, 25, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1255, 1296, 1296, + 1251, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 2, 1296, 1296, 574, 573, 948, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 572, 1296, 1296, 1296, 1296, 1005, + 1296, 24, 220, 0, 0, 0, 0, 0, 1052, 0, + 0, 0, 0, 0, 24, 686, 690, 680, 185, 188, + + 1296, 1228, 1228, 1228, 1228, 1228, 1228, 414, 1228, 0, + 1228, 0, 237, 1228, 0, 0, 0, 0, 0, 0, + 1228, 1228, 463, 319, 1228, 1228, 1228, 0, 0, 0, + 1226, 1228, 1226, 1228, 25, 1228, 462, 1228, 1228, 1228, + 461, 366, 1228, 469, 0, 0, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 464, 465, 185, 0, 1228, 1228, 1228, + 1228, 912, 709, 390, 356, 1228, 1228, 1228, 0, 1228, + 220, 0, 1228, 1228, 706, 509, 1228, 0, 1228, 1228, + 1228, 0, 466, 1228, 1228, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 181, 0, 0, 2, 1228, 1228, + + 1228, 574, 573, 948, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 572, 1228, 1228, 1228, 1228, 1005, 917, 413, 0, + 244, 1228, 0, 0, 626, 787, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 586, 0, 0, 0, 0, 65, + 65, 1296, 39, 0, 0, 0, 0, 0, 0, 0, + 60, 60, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1296, 0, 0, 55, 1296, 0, + 0, 0, 655, 24, 0, 0, 0, 0, 0, 0, + 778, 0, 0, 831, 762, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 617, + 0, 632, 0, 0, 0, 0, 0, 615, 1296, 80, + 1296, 1296, 1296, 0, 0, 0, 621, 0, 0, 0, + 701, 0, 0, 0, 0, 827, 0, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 707, 0, + 1288, 1279, 1296, 1250, 1296, 556, 1296, 0, 828, 1296, + 0, 0, 1070, 0, 0, 1251, 0, 1296, 923, 1296, + 0, 1274, 735, 1296, 0, 1296, 0, 0, 0, 0, + 0, 0, 1249, 1249, 0, 0, 0, 0, 0, 1296, + 1296, 1296, 0, 793, 0, 0, 0, 0, 0, 0, + + 722, 1296, 593, 1296, 1296, 583, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 0, 0, 0, 0, 1296, 831, + 762, 0, 1296, 80, 1296, 1296, 1296, 707, 1279, 1296, + 1296, 556, 1296, 1296, 1070, 1296, 923, 1296, 735, 1296, + 1296, 1296, 1296, 1296, 593, 1296, 1296, 583, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 220, 0, 220, + 0, 0, 0, 0, 0, 642, 0, 0, 188, 1296, + 1228, 1228, 1228, 1228, 831, 0, 762, 214, 1228, 0, + 0, 0, 0, 0, 0, 80, 1228, 319, 508, 1228, + 1228, 0, 0, 0, 1226, 1226, 1228, 707, 1228, 1228, + + 1228, 0, 0, 1228, 556, 1228, 1228, 1228, 1228, 1228, + 1070, 1251, 1228, 356, 923, 1228, 1228, 0, 1228, 0, + 220, 735, 1228, 1228, 0, 1249, 0, 1228, 374, 1228, + 1228, 233, 193, 0, 0, 0, 0, 0, 489, 0, + 203, 0, 1228, 593, 1228, 1228, 1228, 583, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 778, 0, 778, + 787, 0, 0, 564, 813, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 60, 0, 60, 0, 0, 0, + + 0, 0, 60, 61, 0, 0, 1296, 0, 638, 0, + 0, 0, 621, 0, 0, 0, 0, 0, 613, 0, + 0, 0, 0, 0, 0, 0, 631, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 0, 0, 1296, + 0, 0, 0, 1296, 1296, 0, 1230, 0, 718, 0, + 630, 0, 0, 827, 827, 0, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 707, 0, 1296, + 557, 1253, 1296, 0, 1070, 1194, 0, 0, 1272, 1296, + 0, 0, 732, 1296, 0, 0, 1296, 0, 0, 0, + 0, 0, 81, 0, 833, 1296, 1296, 312, 0, 0, + + 0, 899, 794, 23, 1296, 1296, 0, 1296, 528, 1296, + 1296, 1296, 580, 1296, 0, 0, 0, 22, 0, 1296, + 1296, 1296, 1296, 557, 1253, 1296, 1272, 1296, 1296, 1296, + 1296, 312, 1296, 1296, 1296, 528, 1296, 1296, 1296, 580, + 1296, 22, 220, 0, 1004, 0, 0, 1004, 0, 0, + 0, 188, 672, 1228, 418, 1228, 1228, 214, 0, 1228, + 0, 0, 0, 0, 0, 0, 0, 1228, 1228, 0, + 0, 168, 0, 200, 707, 1228, 1228, 467, 468, 557, + 405, 1228, 1228, 1228, 1228, 1070, 1228, 475, 1228, 375, + 1228, 220, 0, 1228, 1228, 1228, 374, 1228, 312, 0, + + 0, 199, 0, 472, 0, 488, 1228, 1228, 1228, 1228, + 528, 1228, 1228, 1228, 580, 1228, 22, 0, 627, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, + 0, 60, 0, 0, 0, 21, 0, 0, 0, 0, + 0, 0, 0, 0, 41, 56, 0, 659, 0, 0, + 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 620, 0, 636, 0, 0, 632, 0, + 0, 645, 0, 0, 0, 0, 1296, 0, 565, 0, + 0, 0, 0, 0, 623, 0, 0, 827, 0, 827, + + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 0, 1296, 1253, 0, 1253, 1253, 1253, 1296, 0, + 0, 1251, 737, 0, 1274, 1296, 0, 1296, 0, 0, + 0, 0, 0, 0, 0, 581, 1296, 312, 0, 826, + 0, 0, 899, 1296, 1296, 0, 721, 886, 1296, 1296, + 1296, 1296, 0, 724, 0, 0, 1296, 1296, 1296, 737, + 1296, 1296, 1296, 1296, 886, 1296, 1296, 1296, 1296, 0, + 220, 0, 0, 825, 641, 0, 196, 0, 423, 1228, + 420, 0, 1228, 0, 0, 0, 0, 0, 0, 0, + 1228, 416, 467, 468, 1228, 410, 1253, 1253, 1253, 1228, + + 474, 375, 737, 0, 220, 1228, 1228, 1228, 312, 0, + 0, 0, 0, 1228, 0, 1228, 886, 1228, 1228, 1228, + 1228, 627, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 60, 0, 60, 0, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 56, 637, 0, + 623, 0, 1058, 0, 834, 0, 0, 550, 0, 0, + 549, 0, 546, 0, 631, 0, 717, 0, 644, 0, + 625, 0, 0, 612, 1296, 559, 0, 0, 0, 594, + 0, 0, 827, 0, 827, 827, 827, 827, 827, 827, + + 827, 827, 827, 827, 0, 798, 33, 1253, 0, 0, + 0, 734, 1296, 1273, 1296, 830, 0, 0, 0, 0, + 0, 726, 555, 0, 0, 575, 1296, 578, 1296, 584, + 1296, 0, 716, 1296, 33, 1296, 555, 575, 1296, 578, + 1296, 584, 1296, 0, 210, 0, 1228, 214, 1228, 368, + 369, 0, 0, 370, 0, 0, 33, 1228, 1228, 1228, + 555, 204, 205, 206, 217, 575, 0, 1228, 578, 1228, + 584, 1228, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 589, 0, + 0, 60, 0, 60, 0, 60, 0, 60, 0, 60, + + 0, 0, 60, 0, 58, 0, 0, 0, 0, 0, + 622, 0, 616, 0, 0, 1296, 0, 0, 619, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 33, 0, 0, 739, 0, 740, 0, 0, + 1286, 0, 0, 896, 0, 0, 0, 0, 1, 0, + 582, 0, 1296, 1, 582, 1008, 186, 1228, 1228, 368, + 369, 0, 0, 370, 0, 201, 1228, 187, 1, 582, + 812, 0, 0, 0, 0, 0, 0, 829, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 60, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 614, 0, 0, + + 1296, 0, 0, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 0, 33, 0, 738, 0, 0, 0, + 0, 0, 0, 0, 723, 0, 1296, 1228, 1228, 373, + 0, 371, 1228, 0, 0, 0, 0, 0, 0, 0, + 487, 0, 0, 0, 0, 0, 0, 60, 0, 0, + 0, 0, 0, 628, 547, 0, 618, 1285, 0, 0, + 827, 827, 827, 827, 827, 827, 0, 0, 0, 725, + 0, 1064, 0, 595, 422, 373, 372, 371, 415, 0, + 0, 0, 0, 0, 652, 654, 0, 0, 0, 0, + 0, 38, 0, 60, 0, 0, 0, 0, 0, 827, + + 827, 827, 0, 33, 0, 0, 0, 562, 372, 0, + 0, 0, 0, 0, 0, 0, 0, 588, 1213, 0, + 40, 0, 0, 827, 0, 0, 0, 0, 0, 0, + 0, 657, 646, 0, 0, 0, 0, 0, 0, 0, + 662, 0, 0, 0, 0, 0, 0, 561, 0, 0, + 0, 0, 0, 699, 0, 0, 60, 0, 0, 0, + 691, 692, 26, 0, 0, 635, 0, 0, 1006, 0, + 0, 0, 0, 559, 0 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, + 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 26, 27, 27, 27, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 40, 40, 44, 45, 46, 47, 48, + 40, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int32_t yy_meta[94] = + { 0, + 1, 1, 2, 3, 4, 5, 1, 1, 6, 7, + 8, 9, 1, 1, 1, 10, 1, 1, 1, 11, + 1, 12, 12, 12, 12, 12, 12, 1, 1, 1, + 13, 1, 1, 14, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 16, 17, 18, + 19, 20, 19, 21, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, + 1, 24, 1 + + } ; + +static yyconst flex_int32_t yy_base[12007] = + { 0, + 0, 91, 16, 19, 23, 30, 39, 61, 50, 111, + 22, 47, 121, 130, 69, 72, 141, 162, 10, 12, + 183, 186, 127, 138, 25, 28, 151, 153, 174, 198, + 203, 218, 227, 230, 37, 43,36609,36607,36604,36603, + 287, 344, 401, 458, 229, 241, 515, 0, 221, 266, + 239, 269, 278, 298, 319, 330, 349, 379, 27, 56, + 437, 446, 339, 409,36657,36656, 303, 432, 49, 85, + 36594,36593, 3, 54, 596, 684, 101, 140, 527, 608, + 489, 498, 772, 863, 565, 600, 637, 641, 659, 668, + 9, 20, 59, 320, 956, 0, 237, 268, 1048, 1140, + + 672, 709, 729, 741, 750, 759, 305, 306, 1232, 0, + 1324, 0, 737, 762, 503, 520, 748, 778, 467, 789, + 811, 838, 449, 712, 297, 329, 226, 340, 560, 719, + 1415, 1506,36595,36594,36648,36647,36646,36641, 807, 820, + 852, 1087, 1102, 1105, 375, 385, 200, 335, 1100, 1101, + 638, 787, 0, 0, 0, 0, 1065, 1078, 1097, 1124, + 0, 0, 1201, 1454, 0, 0, 884, 901, 1205, 1215, + 819, 1179, 310, 398, 0, 0, 0, 0, 1059, 1219, + 36644,45164, 1426, 1435, 1445, 1587,36560,36632, 33,45164, + 36628,36617,45164,45164, 1675,36572,45164,45164,45164,45164, + + 1462, 1478, 1487, 1765,45164, 1536, 1545,45164, 845,45164, + 45164,45164,36551, 172,36622,45164,45164, 1496, 271, 1178, + 0,45164,36567,45164,45164,45164,45164,36600, 290, 1858, + 45164,45164,45164,36551, 792,45164,45164,45164,45164,45164, + 45164, 237,45164,36550,45164, 1546, 73, 368, 500,45164, + 45164,45164,45164, 822,45164,45164,45164,36549, 104,45164, + 36548, 412, 873, 426, 434,45164,36547,36463, 461, 1216, + 45164,36462,45164, 0,45164, 0,45164,45164,45164, 909, + 45164, 1487,45164, 453,45164,36540,36460, 1554, 924,45164, + 36459, 1565, 1618, 0, 1949, 1967, 1985, 1936, 1954,36454, + + 36457, 76,36468, 400,36462,36456,36452, 275,36448,36445, + 0, 491,45164,36521,45164,36520, 511, 517,45164,45164, + 45164,45164,45164,36517, 490,45164, 1069, 1082, 1091, 1538, + 36430,36429,45164,45164, 582,45164,36514, 573,36506,45164, + 45164,45164,36507, 1989, 1997, 2004, 1942, 1193, 1535, 2067, + 45164,45164,45164,45164,36511, 2152,45164,45164,45164,45164, + 36510, 601,45164,45164,45164,36452,45164,45164,36423,45164, + 0,45164, 1247, 1449, 2148, 2156,36424,36418,36413,45164, + 662,45164, 620, 2167, 2175, 623, 0,45164,45164,45164, + 45164, 632,45164, 1974, 0, 2223,45164,45164,45164,36500, + + 664, 2137,45164,45164, 650,45164,36499, 676, 1454,45164, + 45164, 680, 1403,45164, 523,45164, 477,45164, 2314, 2318, + 2327, 2331,45164, 2378,36415, 1643, 690,45164, 473,45164, + 36478, 2328,36466, 1458,36463, 0, 2466,36435,45164,36426, + 1657,45164,45164,45164,36478,36419,45164,36418, 2360, 2364, + 0,36402,45164, 732,45164,36467,36460,45164,45164, 1552, + 36415,45164,45164,45164,45164, 2376, 2389, 2393,36467, 815, + 826, 2423, 2557, 2561, 835, 1207, 2608, 0, 2370, 0, + 45164,45164,45164, 722, 0, 887, 2315,45164,36393, 935, + 2567,45164,45164,45164, 2564,45164,45164,45164,45164,36403, + + 45164, 696,45164,36466, 1072,36396,45164,45164,45164,45164, + 36464, 2561, 1112,45164,36384, 2523,45164,45164, 1094, 2570, + 45164,45164,45164,36462,45164,36432, 2599, 2608, 2694, 391, + 36427,36430, 517, 826,36429,36428, 2785, 234, 699,36423, + 36422, 2667,45164,45164,45164,45164, 2698,36355,36351,45164, + 2876,36357,36355,36348,45164,45164,45164,45164,45164,45164, + 2633,45164,45164,45164,36408, 785,45164,45164,36414,36349, + 45164,45164,45164,45164,36326,45164,45164, 1110,45164, 1120, + 45164,45164,45164,45164,36350, 2658,36346, 2716,45164,45164, + 45164,45164,36406,45164,45164,36326,45164,45164,45164,45164, + + 45164, 2213,45164,36403,45164, 1173, 2565,45164, 1180, 2330, + 45164,45164, 1196,45164,45164,36337,36336,45164,36335, 228, + 2880, 2889, 1208, 1173, 2893,45164,45164,45164,45164,45164, + 45164,45164,45164,45164,45164,45164,45164,45164,45164,45164, + 45164,45164,36310,36382,36332, 1224, 2902, 2906,45164,36371, + 45164, 766,45164, 2960,45164,45164,45164,45164, 3045,45164, + 45164,36383,45164, 1387,45164, 2909, 2932,36382,45164, 1184, + 3130, 3208, 2672, 2389, 2692, 2550, 2907, 2393, 2693, 2844, + 2846, 2898, 2938, 2955,45164, 1578, 3132,45164, 3217, 2988, + 3224, 3172, 3254, 3267, 3108, 2902, 3312, 3281, 2962, 2971, + + 3293, 3263, 3015, 3065, 3342, 3183, 3343, 3391, 3408, 3360, + 3486, 3043, 3053,45164,45164, 3447,45164, 2983, 3308, 1209, + 3564, 3642, 3115, 2998, 3327, 3406, 3442, 3386, 3149, 3326, + 3444, 3425, 3455, 3466, 3538, 3581, 3611, 3558, 3656, 3638, + 3464, 3701, 3679, 3485, 3504, 3729, 3738, 3756, 3771, 3783, + 3675, 3798, 3846, 3826, 3859, 3936, 3720, 3805, 3940, 3884, + 709,36236, 3906, 3828, 3948,36236,36228, 1253,45164,36306, + 45164, 0, 3214, 0, 1261,45164,36305, 0, 0,36230, + 36221, 480,36237,36236, 1222,36216,36235, 1460,36193,36177, + 36198,45164,45164, 0, 365,36192,45164,45164,36189,36184, + + 36177,45164, 0,36190, 1359,36175,36181, 850, 1541, 769, + 45164,45164,45164, 810,45164,45164,45164,36188,36175,45164, + 36176,36178,36180, 1438,45164,36244,36160,36167,36169,36171, + 36158,36154, 0, 0, 2729, 0,36170,36155,36148,36160, + 36166,36161, 912,45164, 1091, 2903, 0,36115, 3944, 0, + 3982, 4028,36110, 1013,36121, 979,36113,36107,36107, 854, + 36097, 4062, 3970, 0,36084,45164,36091,36079, 0, 1130, + 45164,45164,45164,45164,45164,36084,36096,36050, 1404, 2218, + 2593, 0,36057,36059,36061,36057,36041,45164,45164, 1233, + 45164,45164, 1163,36114, 3421, 3733, 4032, 4066, 4054, 3671, + + 4079, 4108, 40, 2963,36113, 876, 4128, 317,36112, 4166, + 45164,45164, 0,45164,45164,45164,45164,36060,45164,45164, + 0, 3369, 1276, 4096, 0,36035,36025, 4257, 0,36052, + 36037,36046, 1562, 1577, 1614, 4136, 0,36107, 0,45164, + 36031, 1533,36030, 4342, 4424,45164, 0,36032, 1420,36034, + 36030,36035,36019,35996,35997,35988, 1521,45164, 0,35995, + 35996,35998,35982,35989, 0,35989,35991,35991,35973,35973, + 35974, 1534, 4200, 4202, 4283, 4287, 3881, 1602, 4296, 4300, + 4039,35971, 4142,45164, 4316,36047, 4310,45164, 4320,45164, + 0, 1626,45164,45164,45164,45164,45164,45164, 4357, 4410, + + 45164, 1933, 4502, 4580, 3505, 3566, 3549, 4314, 3737, 3612, + 4388, 3599, 3757, 3981, 4319, 3782, 4030, 3931, 4031, 4327, + 3883, 4328, 2396,45164,45164, 4621, 4470, 4549, 4504, 4662, + 4576, 4601, 4707, 4399, 4422, 4488, 4688, 4649, 4554, 4790, + 4737, 4437, 4756, 4834, 4773, 4725, 4913, 4521, 4395, 4487, + 45164, 4817,35972,45164,35980, 4879,45164, 4858, 4879, 4926, + 4960, 1672, 1958, 4964, 0, 1686, 4994, 4998, 4810, 4994, + 5021, 5025, 1776, 2936, 5034, 2007, 5038, 5083, 5031, 5079, + 5046,35965, 5054,45164,45164,45164,45164,45164,45164,45164, + 45164, 5161, 5246, 5133, 5134, 5189, 5302, 0, 5275, 0, + + 45164, 1411, 1973, 1946, 2317, 1645, 2942,35973, 1792,45164, + 2019,45164,36043, 0,35968,45164,45164,45164,35872,45164, + 35913, 1973,35838, 0,35848,35844,35846,35831,35843, 1574, + 35828, 2037,45164,35906,45164,45164,35903,35902, 5372,35898, + 35897,35896,35895,35894,35889,35888,35887,35886,35885,35883, + 35880,35879,35878,35877,35876,35875, 2277,35867,45164,35870, + 2206, 0, 0, 2179, 0, 5426, 0, 0, 0, 0, + 5511, 0, 0,35869, 0, 2257, 0, 5365, 5375,35868, + 0, 2697, 0, 2400, 5378, 0, 5408, 5596, 5674, 5694, + 5718, 5426, 5451, 5743, 5456, 5565, 0, 0, 5376,35867, + + 1209, 1955, 5638, 5577, 5767,35787, 5786, 5804, 5822, 5840, + 35794, 4335,35796,35792,35789,35781, 4949,35796,35795,35784, + 35776,35782,35786,35788, 2715, 2956,35779,45164,45164,35763, + 35777,35767,45164,35766,35746,45164, 0,35767, 4631,35765, + 35765, 4703, 2347,45164,35751, 4346,45164,35825, 0, 0, + 35746, 2090,35762,35762,35742,35743,45164,35815,45164,45164, + 35759, 1115, 1940, 2234, 5404, 5538,35740,35739,35738,35741, + 45164, 2194, 2317, 5603,35737, 5678, 5721, 5922, 2339, 2352, + 45164, 2353,45164, 2355,45164,45164,45164,45164,45164,35736, + 45164,45164,45164,45164,45164,45164,35748, 273,45164,35714, + + 45164,45164,35713,45164,35685,45164,45164,35684,35703,45164, + 35682,45164,45164,35681,45164,35629,45164,45164,35604, 5218, + 35689,35602,35601, 2139, 2409, 2577, 2699, 2584, 2611,35686, + 0,35621,35610,35605, 5000, 5209, 5650, 5506, 5864, 5867, + 5872, 5894, 5904, 5929, 5938, 5948, 5959, 5972, 5980, 5985, + 6014, 5995,35593, 6019, 6006, 6036, 6061, 6062, 2397, 2438, + 35624,45164,45164,45164,45164,45164,35611,45164,45164,45164, + 45164,45164,45164,45164,45164,45164,45164,35610,45164,45164, + 45164,45164,45164, 6069, 6084, 6091, 6099, 6108, 6116, 6138, + 6146, 6133, 6165, 6155, 6176, 6198, 6209, 6220, 6241, 6246, + + 6256, 6275, 6265, 6280, 6297, 6304, 6328, 6345, 6352, 6360, + 6381, 6428, 6391, 6398, 6436, 6443, 6451, 6462, 5668, 4988, + 6472, 6475, 6494, 6499, 6520, 6525, 6549, 6556, 6564, 6583, + 6588, 6605, 6614, 6633, 6638, 6648, 6669, 6670, 6691, 6698, + 6719, 6783, 6732, 6856, 6747, 6755, 6788, 6758, 6779, 3039, + 6809, 6824, 6832, 6871, 6879,35586, 6892, 6914, 6922, 6941, + 6948, 6949, 6970, 6978, 6999, 2639, 7004, 7025, 7030, 7035, + 7054, 7059, 7076, 7067, 7093, 7101, 7112, 7125, 7144, 7153, + 7136, 7175, 7178, 1518, 7201, 7206, 7216, 7227, 7238, 7246, + 7261, 7269, 7293, 7298, 7308, 7323, 7331, 7332, 7353, 7358, + + 7379, 7380, 7401, 7422, 7423, 6462, 7430, 7445, 3041, 7464, + 7469, 7477, 7500, 7490, 6084, 7515, 7540, 7555, 6684, 6856, + 45164,45164,45164,45164,45164,45164, 1779, 7635, 7713,35613, + 35608,35596,35606, 2375,35574, 1584, 574,35564,35575,35585, + 35577,35574,35594,35561,35571,35569,35559,35562,35558,35626, + 35543, 2835, 0,35547,35558, 2539,35560,35556,35548, 1981, + 35536, 2994,35552, 2082,35547,35531,35494,35497,35477,35487, + 2494, 877, 3134,35488, 1702, 2561, 2644, 7564,35489,35471, + 35483,35468, 2633,35482, 1976,35480,35464,35467, 2373,35463, + 2571, 2591,35476,35471,35413,35384,35397, 2813, 2873,35392, + + 35395, 2644,35383,35381,35383, 1412, 3200, 7604,35372, 7526, + 35373, 3081, 3100,35384,35367,35363, 1079, 3201, 2867,35357, + 2890, 3011, 3030,35375,35374,35359,35349, 5497, 2915, 3013, + 3074,35366, 0,35365, 2987,35355,35347, 1988, 3427,35346, + 35362, 3044, 3433, 1595,35349,35349,35338, 3081, 3081, 3162, + 35353,35328,35344, 3023,35351, 3102, 3540, 2928,35346,35343, + 35319,35337, 2657, 3102,35320, 5113, 3693, 3180,35328, 3354, + 35285, 3193,35203, 3104,35191, 2556,35171, 4385,35176, 7620, + 35185,35182, 3508,35170,35128, 2675, 3529,35119, 3168,35121, + 35111, 0,35106,35103,35073,35072,35070,35061,35054,35060, + + 35062,35038,35055,35051,35024,45164,35006, 0,35015,35003, + 35000,35003,35001,34996, 0,34986,34997, 0, 0, 0, + 34995,34850,34869,34859,34858,34860,34843, 3195, 0,34847, + 34835,45164, 0,45164,34845,34821,34830,34824,34830,34822, + 34832,34805,34797,34797,34777,34792,34784,34779, 3314, 4466, + 34757,34758, 3005,45164, 3036, 2966, 3176,45164, 3696, 7667, + 34755, 4480, 7672,34736,34746,34729,45164,34694,34683,34680, + 34673, 3228,34678,34667,34652, 3360,34639, 5286,34634,34638, + 34628, 3232,34611, 3385, 5358,34616,34618,34607, 3386, 5836, + 34571,34565,45164,34560,34543, 2918, 5138, 3348,34552,34514, + + 4855,34504, 6592,34468, 3118,45164, 3317, 3482, 3811, 3709, + 3512, 0,34473,34462,34456, 7791, 7869,34471,32704,32688, + 32697, 3845,32681, 2331, 3515, 2375,32671,32679,32686,32672, + 32658,32665,32666,32662,32723,32679, 3490,32652,32637,32642, + 32625,32620,32685, 2647, 3953, 0, 3373,32610,32601,32493, + 32485, 4075,32448,32443,32495,32412, 3188, 3201,32420, 51, + 3352, 122, 3593, 0, 3743, 3342, 3799, 3642, 4371, 3147, + 3778, 3279, 3553, 320, 3753, 3554, 3852, 379, 417, 4233, + 3247, 436, 3827, 3371, 3490, 4595, 6311, 5479, 493, 526, + 4201, 4760, 4437, 3974, 7681, 598, 645, 766, 3670, 3496, + + 3018, 3590, 4233, 3697, 1255, 3758, 1358, 3710, 1456, 3617, + 4418, 1503, 1561, 1605, 1640, 4640, 1729, 1747, 1897, 1932, + 3649, 4345, 3775, 2120, 2143, 3512, 2181, 2268, 3847, 3437, + 5066, 7728, 2269, 7690, 2422, 2537, 5096, 2526, 4633, 2582, + 2601, 2634, 2820, 3896, 3459, 2878, 3879, 6184, 2987, 3088, + 4010, 3133, 3272, 4834, 5199, 4062, 4067, 3249, 4437, 3740, + 3857, 3917, 5012, 3341, 7726, 4574, 4322, 4245, 4097, 3320, + 3368, 3971, 0, 4980, 3935, 3394, 3394, 3798, 4279, 3432, + 3547, 4602, 3516, 3950, 4915, 3544, 3557, 3588, 4674, 3899, + 3602, 4692, 3616, 3633, 3698, 4261, 3751, 3806, 4323, 4265, + + 4195, 5337, 3839, 5394, 3878, 4290, 3991, 4493, 4008, 5512, + 4523, 4705, 4733, 4004, 4030, 5528, 4515, 4031, 5413, 4782, + 5198, 4050, 4623, 4808, 4406, 4280, 4547, 4644, 4329, 4067, + 4306, 4172, 5772, 4217, 7759, 4278, 4294, 4404, 4317, 4384, + 4310, 4484, 4363, 4389, 4531, 6180, 4506, 6964, 7468, 4598, + 4506, 7717, 4451, 7825, 7829, 7838, 4656, 5116, 4939, 4485, + 4714, 7842, 7856, 4481, 4653, 4489, 7860, 4571, 7874, 7901, + 7905, 4788, 5219, 4981, 4508, 4907, 5336, 4533, 6222,45164, + 45164,45164,45164,45164,45164,45164,45164, 4518,45164,45164, + 4520,45164, 4536,45164,45164, 4564,45164,45164,45164,45164, + + 45164,45164,45164,45164,45164,45164, 6330,45164,45164,45164, + 6505,45164, 5268, 4672, 5357,45164, 5023, 4612, 4661, 4677, + 6633, 4887, 4688, 4678, 4701, 4953, 4715, 6345, 4726, 4735, + 4873, 4820, 4864,45164, 4832, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4750, 0, + 0, 4758, 0, 4797, 0, 0, 4805, 0, 4809, 0, + 0, 4813, 0, 4829, 0, 0, 4833, 4842, 4856, 7915, + 7943, 7953, 4938, 5037, 5013, 5027, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 8029, 8107, 5053, 5029, + + 5056, 5410, 5106, 6540, 5227, 5515, 5110, 5076, 5222, 5261, + 5663, 5549, 0, 0, 0, 0, 0, 0, 4907, 4910, + 4933, 5133, 5122, 5113, 5878, 6920, 5177, 5683, 5667, 5295, + 4949, 4968, 4981, 5021, 5028, 5084, 5074, 5078, 5127, 5144, + 5145, 5175, 5191, 5188, 5206, 5223, 5270, 5284, 5295, 5273, + 45164, 5286, 5357, 5304, 5326, 5312, 5324, 0, 5328, 5349, + 5350, 5355, 5369, 5386, 5392, 5422, 7924, 5408, 5410, 5412, + 5433, 5496, 5659, 7950, 5555,45164, 5435, 5502, 5429, 5453, + 45164,45164,45164,45164, 5524,45164,45164,45164,45164, 5443, + 5444, 5448, 5460, 5463, 5472, 5474, 5490,45164,45164, 5772, + + 5604, 5529, 5534, 5543, 5548, 5539, 5727, 5574, 5610, 5573, + 5697, 5635, 5557, 5593, 5577, 5691, 5717, 5736, 5634,45164, + 5755, 5784, 5728, 5714, 5782, 5597,45164, 5670, 5680, 5810, + 5783, 6111, 5756, 5806, 5813, 5870, 5656, 5873, 5816, 5957, + 5932, 5899, 6664, 5915, 5881, 5829, 7963, 5910, 6047, 5907, + 5951, 6703, 5630, 6000, 5966, 5930, 5753, 5977, 5992, 5677, + 6046, 6005, 6085, 6054, 6420, 7975, 6220, 6041, 5814, 6514, + 6010, 6131, 7989, 6773, 5776, 6403, 5890, 5934, 5918, 5914, + 6129, 6011, 6019, 6115, 6304, 6080, 6053, 6100, 6144, 6097, + 6203, 6182, 5788, 6205, 6132, 6165, 6161, 5859, 6366, 6235, + + 6278, 6152, 6405, 6617, 7990, 6313, 6606, 6397, 6442, 6242, + 6291, 6307, 6225, 6555, 6414, 5954, 6456, 6317, 6532, 6691, + 6318, 6472, 7613, 6435, 5981, 5980, 6000, 6168, 6183, 6468, + 6280, 6486, 6588, 6490, 6619, 6780, 6653,45164, 6261, 6701, + 6538, 6842, 7026, 6914, 6488, 7954, 6752, 6670, 6201, 6535, + 6807, 6550, 6363, 6697, 6715, 6818, 6251, 6750, 6863, 6835, + 6725, 6298, 6321, 6639, 6718, 6829, 6884, 6570, 6663, 6865, + 6895, 6970, 6657, 6947, 6919, 6917, 6326, 6329, 6932, 6971, + 6940, 7846, 6897, 6984, 6999, 7278, 7059, 7002, 6415, 7056, + 7956, 7072, 6955, 7011, 7099, 7048, 7131, 7123, 7079, 7090, + + 7024, 7149, 7108, 7446, 7169, 7157, 7172, 8129, 7164, 7200, + 7197, 7223, 7970, 8214, 7253,45164, 7337, 7185, 7244, 7245, + 7275, 7270, 7009, 7386, 7292, 8058, 7372, 6407, 8302, 8380, + 7190, 6797, 7335, 7356, 7131, 7208, 7457, 7506, 7313, 7324, + 7582, 7470, 7362, 7410, 7502, 7580, 7581, 7596, 7641, 7677, + 0, 7492, 7530, 7645, 7547, 7567, 7752, 7597, 8039, 7786, + 7659, 7703, 8047, 7694, 7879, 7815, 7731, 7940, 7606, 7701, + 7819, 6464, 7740, 7977, 7968, 7661, 7854, 7675, 7692, 7994, + 8019, 8024, 8048, 7784, 8068, 6443, 8345, 8075, 8077, 7371, + 8020, 8082, 7801, 8052, 8054, 8084, 8088, 8097, 8099, 8090, + + 8056, 8109, 8242, 8114, 8110, 8244, 8134, 8246, 8248, 8263, + 8270, 8274, 8284, 8250, 7405, 8286, 8293, 6522, 8139, 8302, + 8303, 8304, 8324, 8320, 8341, 8322, 8276, 8285, 8326, 8294, + 7480, 8350, 8357, 8359, 8366, 8370, 8371, 8381, 8382, 8389, + 8328, 8400, 8387, 8393, 8405, 8409, 8410, 8420, 8418, 8424, + 8432, 8442, 8440, 8441, 8448, 7413, 8446, 8453, 8461, 8462, + 8463, 8467, 8468, 8469, 8475, 8484, 8483, 8485, 8493, 8495, + 8501, 8503, 8509, 8513, 8518, 8517, 8519, 8528, 8530, 8529, + 8534, 8535, 8536, 8541, 8543, 8548, 6548, 8552, 8557, 8561, + 8563, 8565, 8570, 8578, 8582, 8572, 8590, 8592, 8594, 8618, + + 8600, 8598, 8607, 7381, 8611, 8616, 8628, 8633, 8638, 8637, + 8653, 8654, 8728, 8757, 8755, 8761, 8766, 8652, 8774, 8772, + 8778, 7428, 8783, 8784, 8793, 8798, 8799, 8868, 8807, 8808, + 8818, 8819, 8817, 6579, 6676, 6709, 6717, 6754, 6732, 6748, + 6778, 6822, 6822, 6825, 6924, 6883, 6881, 6940, 6947, 6961, + 6972, 6964, 7023, 7055, 7057, 7055, 7098, 7100, 7117, 7470, + 7147, 7149, 7179, 8827, 0, 0, 7177, 7222, 0, 7218, + 0, 7232, 7259, 7335, 7265, 7287, 7303, 7726, 8900, 7388, + 7338, 7336, 7351, 8838, 7367, 7403, 7432, 7453, 7706, 0, + 7480, 7554,45164, 8904, 8907, 7791, 8910, 7650, 8917, 8872, + + 45164, 7486, 7705, 8921, 8929, 7483, 0, 7493, 7512, 7531, + 45164, 7535, 7622, 8859, 7540, 7633, 7625, 7656, 7670, 7755, + 7753, 7771, 7890, 0, 7756, 7807, 7806, 7832, 7845, 7862, + 7867, 7848, 7876, 7922, 0, 7861, 7875, 7894, 7899, 7908, + 7898, 7924, 7942, 0, 7927, 7975, 7974,45164, 8847, 8960, + 7972, 7980, 7989, 8000, 8010, 7991, 8862, 8919, 8019, 8025, + 8033, 9040, 9118, 8902, 8116, 8780, 8300, 8142, 8368, 9005, + 8097, 8041, 8075, 8423, 8306, 8254, 8417, 8095, 8411, 8507, + 8928, 8616, 8492, 8594, 8598, 8615, 8579, 8748, 8888, 8929, + 8955, 8820, 8895, 8957, 8909, 8112, 8356, 8228, 8841, 8911, + + 8913, 8930, 8907, 8929, 8968, 8466, 8260,45164, 8987, 8939, + 8937, 8964, 8972, 8940, 8982, 8965, 8639, 8992, 8958, 9006, + 9011, 9032, 8976, 9022, 8822, 9001, 9096, 8857, 9015, 9053, + 9041, 8978, 9054, 9199, 9000, 9028, 9030, 9036, 9055, 9131, + 9050, 8656, 9119, 9105, 9091, 9061, 9009, 9052, 9085, 9114, + 9056, 8334, 9106, 8919, 9095, 9070, 9123, 9101, 9144, 9169, + 9218, 9222, 9111, 9122,45164, 9132, 9112, 9173, 9141, 9143, + 9153, 8270, 9172, 9154, 9163, 9174, 8301, 9190, 9183, 9226, + 9158, 9267, 9167, 9270, 8377, 9178, 9192, 9229, 9214, 9232, + 9232, 9313, 9215, 9252, 9185, 9228, 9075, 9261, 9202, 9231, + + 9292, 9247, 9235, 9255, 9330, 9249, 9251, 9271, 8380, 8393, + 9303, 8456, 9332, 9306, 9272, 9276, 9333, 9277, 9274, 9289, + 9290, 9138, 9297, 9372, 9317, 9283, 9310, 9321, 9315, 9316, + 9320, 9318, 9330, 9345, 9331, 9333, 9338, 9347, 9344, 9407, + 9349, 9351, 9364, 9371, 8483, 8497, 9360, 9350, 9373, 8534, + 8607, 9361, 9369, 9349, 9366, 9385, 9437, 9387, 9440, 9394, + 9451, 8759, 9405, 9383, 9410, 9399, 9454, 9404, 9418, 9413, + 9426, 9392, 9408, 9486, 9419, 9417, 9459, 9429, 9430, 9431, + 9492, 9504, 9446, 9453, 9506, 9509, 9513, 9456, 9518, 9465, + 9462, 9466, 9475, 9474, 9522, 9471, 9488, 9501, 9540, 9542, + + 9543, 9547, 9548, 9485, 9495, 9491, 9559, 9567, 9568, 9527, + 9569, 9509, 9533, 9520, 9511, 9539, 9529, 9556, 8781, 9598, + 9600, 9547, 9552, 9549, 9558, 9559, 9557, 9562, 9565, 9572, + 8881, 9569, 9570, 9579, 9589, 9587, 9580, 9624, 9648, 9652, + 9584, 9515, 9592, 9601, 9606, 9590, 9658, 9611, 9608, 9604, + 9618, 9614, 9623, 9628, 9625, 9631, 9634, 9637, 9630, 9675, + 9641, 9697, 9650, 9651, 9648, 9642, 9653, 9643, 9659, 9665, + 9714, 9670, 9672, 9677, 9680, 8904, 9716, 9717, 9681, 9682, + 9719, 9691, 9693, 9704, 9700, 9696, 9758, 9715, 9706, 9719, + 9739, 9748, 9711, 9730, 9767, 9768, 9726, 9780, 9732, 9735, + + 9724, 9742, 9745, 9798, 9746, 9804, 9755, 9813, 9756, 9761, + 9758, 9776, 9752, 9777, 9786, 9898, 9771, 9789, 9920, 9772, + 9788, 9989, 9991, 9811, 9792, 9826, 9810, 9928, 9941, 9931, + 10002, 9943, 9801, 9992, 8932,10006, 9954, 8965, 8980, 9963, + 9952,10035, 9048,10048,10031, 9987, 9998,10070, 9179, 9302, + 9333, 9762, 9938,10079,10038,10040,10024,10097, 9778,10041, + 10054, 9992, 9954,10009,10036,10038,10045,10067, 9761, 9774, + 9805,10077, 9824, 9825, 9833, 9959, 9997,10000, 9984,10005, + 10006, 0,10006,10032,10049,10031,10107,10113,10151,10166, + 10086,10100,10089,10245,10323,10061,10144,10060,10068,10079, + + 10083,10102,10088,10048,10117,10120,10050,10121,10118,10127, + 45164,10130,10122,10136,10201,10202,10139,10132,10205,10157, + 10142,10059,45164,10093,10110,10147,10149,10158,10165,10158, + 10153,10167,10174,10167,10163,10159,10172,10172,10155,10180, + 10169,10177,10170,10175,10169,10183,10194,10193,10187,10195, + 10173,10190,10194,10195,10205,45164,10175,10198,10192,45164, + 10264,10276,10269,45164,10276,10277,45164,45164,45164,45164, + 45164,45164,45164,45164,10278,10284,10202,10202,10204,10205, + 10206,10228,10217,10210,10218,10211,10221,10289,10268,10235, + 10225,10236,10238,10242,10299,10316,10258,10252,10249,10257, + + 10261,10291,10288,10276,10283,10286,10297,10295,10311,10312, + 10329,10304,10328,10392,10259,10306,10342,10290,10423,10254, + 10427,10339,10353,10373,10435,10294,10308,10359,10316,10356, + 10387,10397,10330,10360,10317,10418,10326,10449,10469,10357, + 10399,10452,10412,10384,10406,10419,10381,10416,10472,10455, + 10420,10415,10439,10428,10422,10451,10425,10503,10429,10474, + 10454,10457,10468,10475,10470,10482,10479,10484,10488,10442, + 10493,10486,10489,10492,10495,10498,10512,10499,10513,10507, + 10511,10504,10521,10431,10494,10529,10535,10458,45164,45164, + 45164,45164,10532,10533,10527,10538,10528,10526,10541,10551, + + 10555,10531,10547,10558,10561,10554,10562,10568,10564,10569, + 10567,10576,10578,10585,10575,10588,10580,10590,10598,10534, + 10601,10589,10602,10603,10597,10611,10605,10659,10614,10612, + 10595,10622,10619,10623,10625,10628,10630,10635,10627,10618, + 10632,10636,10639,10616,45164,45164,10652,10637,10645,10661, + 10651,10660,10667,10655,10664,10675,10665,10647,10672,10671, + 10688,10681,10668,10695,10698,10684,10720,10759,10762,10701, + 10692,10710,10693,10704,10739,10730,10747,10744,10750,10705, + 10716,10761,10751,10767,10775,10768,10779,10737,10769,10778, + 10734,10787,10793,10786,10755,45164,10834,45164, 0,10696, + + 10784,10798,10794,10805,10806,10801,10818,10819,10815,10807, + 10880,10963,10816,10817,10824,10814,10829,11051,10713,11129, + 11214,10839,10840,10841,10842,10850,11052,10876,10852,10854, + 10860,10864,10861,10879,10872,10885,10882,10889,10866,10892, + 10995,10996,10997,10999,11007,11014,10836,11021,11023,11034, + 11035,11027,11044,11056,11123,11054,11137,11005,11093,11097, + 11145,11042,11067,11109,11095,11112,11113,11149,11115,11119, + 11133,11201,11136,11161,11180,11182,11146,11186,11192,11160, + 11189,11225,11231,11204,11205,11222,11207,11241,11213,11243, + 11253,11249,11252,11250,11260,11262,11269,11271,11272,11275, + + 11278,11282,11281,11290,11291,11292,11299,11300,11306,11312, + 11302,11319,11320,11323,11327,11330,11336,11344,11345,11346, + 11354,11356,11358,11364,11365,11367,11368,11371,11382,11383, + 11389,11393,11063,11395,11404,11406,11223,11407,11413,11414, + 11422,11424,11428,11434,11437,11441,11445,11443,11447,11046, + 11453,11455,11456,11457,11466,11467,11473,11470,11479,11483, + 11485,11486,11492,11500,11504,11506,11512,11496,11513,11521, + 11524,11525,11523,11532,11534,11540,11542,11543,11554,11121, + 11544,11561,11562,11563,11564,11572,11573,11581,11590,11574, + 11596,11599,11606,11647,11608,11612,11597,11587,11618,11621, + + 11619,11622,11630,11653,11632,11641,11662,11670,11673,11680, + 11687,11681,11699,11702,11705,11708,11709,11165,11711,11712, + 11715,10857,11723,11729,11731,11732,11296,11738,11744,11747, + 11754,11836,11753,11755,11757,11866,11765,11925,11869,10853, + 11868,11870,11879,11771,11740,11418,11883,11889,10863,10870, + 10879, 0,10985,11703,11962,11897,11002,11012,11905,11078, + 11017,11026,11033,11053,11054,11229,11181,11106,11333, 0, + 11073,11108,11918,11148,11907,11161,11211,11220,45164,11220, + 45164,11234,11257,11294,11366,11317,11321,11332,11340,11935, + 11349,11435,11953,11968,11999,12000,12005,12006,12007,11378, + + 11689,12016,11963,12004,12033,11400,11389,45164,11415,11409, + 0,11425,11440,11927,11465,11641,11495,11473,11475,11496, + 11503,11524,11511,11873,11533,11544, 0,11533,11824,12038, + 12042,12043,12044,12048,12053,12049,12054,12055,12059,12060, + 12066,12067,12065,12075,12073,12077,11559,11928,12022,11550, + 11578,11591,11598,11643,11653,12068,12079,11653,11654,11664, + 12148,12233,12089,12109,12122,12152,12033,12034,12067,12036, + 12074,12075,12095,12099,12116,12098,11947,12097,12114,12124, + 12125,12132,11967,11681,11683,12009,12140,12142,12143,12156, + 12160,12164,12173,12171,12183,12199,12201,12207,12209,12210, + + 12217,12220,12153,12235,12232,12241,12015,12242,12253,12260, + 12102,12276,12327,12270,12226,12273,12340,12344, 0,12249, + 12287,12288,12289,12296,12299,12310,11707,12297,12319,12335, + 12308,12321,12323,12348,12342,12351,12349,12407,12371,12357, + 12408,12336,12358,12138,12417,12373,12372,12380,12392,12395, + 12462,12422,12408,12437,12410,12477,12407,11751,12427,12440, + 12443,12491,12463,12441,12489,12493,12524,12428,12513,12469, + 12516,12468,12470,12545,12537,12492,12490,12546,11957,12500, + 12552,12511,12559,12518,12592,12597,12565,45164,12512,12520, + 12535,12542,12560,12604,12544,12548,12638,12551,12576,12622, + + 12582,12583,12585,12592,12728,12593,12644,12602,12613,12661, + 12624,12635,12819,12601,12820,12642,12646,12654,12631,12821, + 12041,12696,12764,12767,12765,12778,12780,12768,12786,12856, + 12860,45164,12787,12864,12807,12828,12817,12818,12837,12809, + 12840,12838,12888,12847,12849,12858,12865,12861,12871,12872, + 12874,12878,12881,12882,12893,12884,12900,12901,12903,12911, + 12917,12919,12946,12133,12921,12928,12960,11719,12938,12944, + 12929,12946,12954,12957,12981,12958,12177,12967,12964,12973, + 12974,12980,12981,12983,13061,12998,12984,13006,12993,13048, + 12425,13008,13018,13029,13031,13050,13035,13052,13020,13048, + + 13050,13062,13079,13091,13068,13090,12547,13161,13106,12145, + 13112,13097,13077,13146,12649,13107,13119,13125,13126,13162, + 13165,12115,13134,13137,13138,13144,13146,13154,13163,13164, + 13170,13171,13177,13180,13178,13205,11944,12481,13187,13188, + 12185,13190,13194,13213,13191,13205,13206,13212,13215,13292, + 13239,13221,13235,13209,13245,13237,13261,13274,13255,13252, + 13268,13258,13270,13286,13279,13296,13277,13299,13309,13308, + 45164,13302,13312,13314,13315,13323,13327,13329,13331,13330, + 13337,13379,13339,13345,13343,13349,45164,13359,13361,13362, + 13363,13398,13370,13369,11955,13376,13388,13386,13395,13396, + + 13380,13405,13397,13431,13399,13405,13406,13407,13415,13424, + 13426,13427,13497,13440,13441,13447,13453,13447,11884,13492, + 12797,13460,13474,13462,13502,13475,13514,13539,13529,13472, + 13484,13485,13501,13494,13500,13540,13504,13508,13510,13558, + 13513,13516,13580,13520,13526,13549,13581,13524,13568,13589, + 13602,13608,13610,13618,13537,13619,13627,12091,13587,13612, + 13626,13543,13635,13661,45164, 0,13636,11916,13645,13647, + 13653,13654,12167,13662,13637,13665,13671,13673,13682,13688, + 13690,13760,13703,13770,13774,45164,13752,13842,13722,13674, + 13718,13720,13728,13730,13749,13734,13740,13763,12012,12006, + + 13764,13871,12054,13154,13551,13940,13737,13893,12110,12150, + 12156,12803,12198,13587,13933,13743,13757,13948,13883,14040, + 13899,13907,13915,14069,14074,14138,14144,14157,13977,12277, + 12208,12233,14097,12836,12612,12906,13932,12946,12247,13751, + 12851,12267,12254,12287,12294,12330,12324,13743,12375,12405, + 0,12501,12419,12517,12824,14159,14169,12625,12490,12880, + 14244,14322,13922,13274,13479,13950,13767,13961,12978,12644, + 13958,14129,14152,12952,14130,13929,14164,13037,13114,13131, + 14094,14134,14147,45164,12459,12510,12543,12592,12597,12602, + 12650,12829,12837,12843,45164,12896,12923,12924,12950,12950, + + 12986,45164,12984,13005,13008,13082,13030, 0,13031,13117, + 14174,13053,13063,13097,13766,14176,13092,13122,14204,13945, + 13730,14221,13806,13142,13139,13161,14257, 0,13250,13880, + 13924,14068,13963,14220,14225,14194,14109,14218,14284,14219, + 14186,14234,14251,14239,14238,14328,14223,14262,14282,14110, + 13263,14131,14283,14246,14290,14289,14302,14295,13170,14389, + 14416,14401,13212,13906,14378,14445,13240,13210,14366,14310, + 14331,14439,14399,14391,14406,14404,14407,13270,13440,14333, + 45164,14405,14411,13266,14155,14413,14245,14294,14363,14361, + 14415,14438,45164,14428,14426,14440,14432,14445,14447,14429, + + 14528,14433,14448,14449,14472,14474,14479,14468,14476,14487, + 14493,14491,13291,14494,14495,14451,14470,14500,14576,14515, + 14507,14516,14518,14520,14522,14523,14534,14536,14539,14537, + 14540,14541,14617,14554,14556,14558,14559,14561,13329,14562, + 14570,14579,14605,14582,14584,14597,14601,14563,14590,13399, + 14613,14612,13921,14614,14596,14616,14619,14625,14628,14631, + 14632,14645,14644,14630,14650,14652,14651,14656,14657,14658, + 14659,14670,14676,14671,14663,14677,14684,45164,14678,14685, + 13966,14691,14703,14690,14696,14705,14710,14698,14714,14709, + 14718,14727,13405,14716,14725,14729,14730,14732,14733,14738, + + 14744,14746,14752,14773,14755,14757,14764,14759,14768,14775, + 14761,14776,14781,14780,14784,14793,14788,14796,14807,13592, + 14812,13980,14800,14819,14818,14820,13436,13440,13894,14829, + 13436,13560,14087,13472,14832,14823,14834,14839,14836,14840, + 14847,14851,14856,14863,14864,14871,14872,14876,14877,14878, + 14883,14897,14894,14902,14879,14900,14909,14905,14914,14920, + 14921,14922,14925,14928,14939,14934,15015,14985,14954,45164, + 14268, 0,14640,45164, 0,14945,14957,14963,14961,14966, + 14968,14975,13491,14970,14974,14977,14982,14983,13506,15100, + 15178, 0, 0,13594,13603,13547, 0,13561,14920,14597, + + 14990,13618,13726,13631,13616,15067,13647,13641,13656,13693, + 14978,13742,13766, 0,13777, 0,13779,13870,14997,14325, + 14129,13908,13918,13936,13951,13963,14030,14069,14126,14127, + 14256,14307,14149,15006,14178,14174,14192,14224,14236,14264, + 14294,14790,14721,14312,14340,14361,14360,14999,14380,15013, + 0, 0, 0,15085,15024,14388,14390,14412,14427,14468, + 15027,14469,14497,14510, 0,14545,14560,14699,14566,14598, + 14665,14677,14739,14785,14787,14798,14813,14899,15015,14834, + 14933,14852, 0,14840,15016,15033,14866,14880,14899,14926, + 14937,14948,14951,14976,15026,14974,15057,14999,15011,15018, + + 15039,15036,15040,15041,15037,15032,15042,15050,15036,15034, + 15041,15053,15038,15060,15057,15064,15065, 0,15065,15069, + 15073, 0,15075,15072,15073,15082,15079,15069,15072,15068, + 15066,15070,15078,15091,15086,15080,15155, 0,15094,15100, + 15088,15102,15104,15092,15093,15108,15095,15091,15108,15098, + 15102,15119,15112,15108, 0,15122,15108,15120,15159,15125, + 15119,15135,15122,15131,15132,15142,15145,15139,15150,15157, + 15134,15148,15142,15157,15145,15162,15161,15165,15144,15158, + 15158,15153,15168,15174,15153,15163,15165,15159,15181,15171, + 15247,15190, 0,15187,15191,15188,15191,15199,15185, 0, + + 15182, 0,15198,15200,15271,15204,15206,15200,15202,15212, + 15199,15215,15212,15280,15207,15199,15220,15222,15287,15291, + 15229,15235,15217,15225,15233,15220,15223,15240,15237,15224, + 15241,15231,15234,15245,15229,15248,15250,15237,15247,15239, + 15316,15238,15259,15232,15258,45164,15250,15256,15261,15266, + 15262,15249,15255,15258,15269,15253,15257,15262,15266,15253, + 15274,15282,15283,15268,15351,15275,15270,15282,15280,15282, + 15287,15296,15283, 0, 0,15298,15364,15286,15298,15294, + 15363,15372,15376,45164,15307,15309, 0,45164,15319,15381, + 15307,15325,15387,15388,15390,15389,15391,15392,15396,15401, + + 15394,15397,15333,15322, 0, 0,15337,15403,15342,15342, + 15329, 0, 0,15344,15410,15348,15331,15345,15350,45164, + 15337,15350,15340,15420,15416,15347,15344,15360,15486,15428, + 15432,15567,15439,15490,15494,15498,15518,15522,15423,15526, + 15531,15535,15539,15543,15551,15555,15571,15577,15363,15365, + 15581,15599,15603,15607,15618,15625,15443,15632,15636,15652, + 15657,15661,15665,15669,15673,15677,15683,15687,15693,15701, + 15705,15709,15714,15720,15725,15737,15754,15758,15356,15765, + 15444,15769,15773,15778,15789,15796,15800,15804,15812,15827, + 15833,15840,15845,15853,15859,15459,15866,15872,15876,15882, + + 15893,45164,45164,15360,15363,15903,15911,15483,15918,15922, + 15928,15958,15943,15933,15557,15950,15994,16005,16009,16013, + 15594,16026,16014,16043,15612,15620,16050,16054,16058,16062, + 16066,16070,15385,15380,16082,16086,16093,16101,16105,16116, + 16134,16140,16148,15782,16152,16163,16167,15808,16107,16097, + 15887,16177,16187,16191,16197,16203,15449,16118,15451,16275, + 15458,16368,16461,15405,15402,15408,15678,15407,16207,16552, + 16556,16560,16564,16217,16568,15888,16572,16576,16580,16584, + 16588,16224,15433,15428,16232,16593,16597,16601,16605,16610, + 16625,16641,16651,16659,16670,16680,16249,16253,16263,16684, + + 16689,16695,16700,16704,16708,16712,16722,16717,16730,16742, + 16746,16750,16774,16778,16782,16797,16801,16807,16811,16816, + 15435,15437,16820,16824,15444,15759,16828,16833,16840,16847, + 16851,16856,15790,16863,16867,16872,16876,16880,16884,16900, + 16904,16910,16922,16933,16938,16953,16957,16961,15446,15441, + 16967,16971,16975,16979,16983,16989,16995,17003,17008,17012, + 17016,17029,17034,17041,17058,17062,17066,17073,17082,17086, + 17095,17099,17111,15461,15472,17117,17129,17134,17138,15480, + 15484,17142,17146,17154,17167,17175,17180,17187,17196,17206, + 17210,17222,17226,17230,17238,17244,17249,17257,15558,15489, + + 15483,17263,17272,17278,17296,16020,15503,17307,17315,17319, + 17324,17330,17335,17339,17343,17352,15887,17356,17361,17365, + 17369,17373,15898,17377,17397,17401,17414,16157,15519,17422, + 17435,17439,17447,17454,17458,17463,17467,17471,17477,17484, + 17490,17499,17504,17508,17512,17526,17543,17548,17556,17560, + 17565,17570,17574,17588,17592,17596,17602,17609,15904,17613, + 17617,17625,17632,17636,17641,17655,17666,17670,15942,17674, + 17680,17684,15519,15542,15538,17690,15996,17703,16094,17710, + 17716,17720,17724,17728,17732,17736,17750,17761,17771,17786, + 17796,17823,16096,17800,17832,17842,17846,15624,15674,15865, + + 15549,15630,15549,15566,15649,15795,17850,17854,17858,17863, + 17870,17874,17879,17895,17899,17903,17907,17916,17925,17911, + 17929,17935,17939,17943,17953,17958,17990,17995,17999,18007, + 18024,18011,18031,18035,18039,18043,18047,18051,18058,18062, + 18069,18079,18074,18084,18090,18098,18102,18108,18112,18126, + 18130,18138,18159,16110,16156,45164, 0,18143,18149,18172, + 18184,18192,18199,18163,16208,18215,18219,18234,18239,18243, + 16764,18250,18258,18271,16211,15579,15572,16997,16153,18275, + 16613,16038,18279,18283,45164,15751,15670,15587,17220,15566, + 15678,15651,15669,15690,16628,16128,17046,15926,18143,15707, + + 45164,16219,16241,45164, 0, 0,15733,15743,15729,15752, + 15919,15749,15955,15769,15777,15776,15957,16853,45164,15814, + 15814,15818,15860,15866,15890,15891,15908,15931,16015,16167, + 16092,16012,16120,16628,16661,15966,15966, 0, 0,16012, + 16030, 0, 0,16049,16237,16067,16066, 0,16072,16084, + 16158,16192,18293,18303,16561,16588,16601,18359,18447,16193, + 16183,17042,16540,16599,16659,16555,16694,16560,18229,16105, + 17031,16585,16636,16759,16760,16852,16660,16819,17123,16158, + 16176,16724,45164,16181,16555,16825,45164,16569,45164,16562, + 16667,16682,16688,16694,16692,16697,16723,16716,16739,16767, + + 16781,16913,16794,16828,16812,16820,16828,16818,16851,16843, + 16857,16891,16853,16853,16851,16875,16878,16869,16874,17117, + 17022,17024,16909, 0,16928,18329,16912,17077,17188,17215, + 16942,17378,16952, 0,17087,17367,17014,17452,17581,18287, + 18341,16960,17469,18522,17029,17085,17227,17126,17142,17157, + 17158,17175,17189,17712,16975,18344,18372,45164, 0,17226, + 17014,17034,17062,45164,17320,45164,17586,17233,17316,17074, + 17271,17141,17204,17442,17676,17630,17729,17731,17541,17511, + 17321,17878,17694,17518,17797,17687,17327,17403,17681,17904, + 17250,18401,18412,18416,18431,18453,18496,17349,17459,17307, + + 17753,17438,17417,18482,17895,17701,17096,17094,17811,17508, + 18371,18487,17124,17942,17902,17528,17365,17457,17715,18111, + 17884,17885,18118,17887,18178,18092,17373,18112,17909,18471, + 18191,18147,18189,17258,17733,17739,18042,18232,18385,18330, + 17751,17501,17941,17759,18240,17636,18187,18451,18255,17600, + 18153,18261,18119,18000,17131,18311,18130,17669,18310,18333, + 17567,18363,18319,18224,18398,18365,18380,17697,18016,18428, + 18427,18505,18429,18213,18452,18466,18476,18443,18467,18267, + 18231,18344,17179,17239,18477,18485,18490,18534,18558,18493, + 17800,18528,18364,18488,17416,18396,18532,18544,18422,18535, + + 18468,18547,17855,18542,18184,18540,18545,18546,18562,17410, + 17418,17474,18553,17543,18554,18090,18556,17988,18561,17650, + 17622,17686,17730,17766,17793,17853,17887,17918,17940,18003, + 18030,18039,18560,18565,18576,18566,18571,18581,18572,18586, + 18592,18582,18584,18589,18259,18058,18598,18600,18607,18278, + 18591,18603,18308,18613,18602,18601,18057,18621,18625,18627, + 18450,18687,18619,18635,18069,18408,18693,18714,18718,18166, + 18261,18647,18653,18648,18342,18290,18803,18881,18335,18668, + 18387,18665,18670,18386,18667,18949,18436,18474,18497,18506, + 18512,18531,18517,18606,18637,18675,18646,18652,18676,18660, + + 18675, 0,18665,18674,18685,18671,18688,18689,18671,18684, + 18693,18698,18699,18693,18690,18686,18706,18712,18705,18772, + 18696,18713,18700,18708,18707,18708,18716,18773,18726,18728, + 18714,18726,18727,18728,18796,18729,18719,18735,18727,18738, + 18743,18739,18745,18738,18739,18739,18750,18750,18748,18743, + 18736,18757,18748,18764,18771,18757,18770,18771,18774,18765, + 18766,18773,18778,18769,18774,18772,18774,18787,18776,18787, + 18848,18780,18790,18791,18785,18786,18795,18786,18859,18789, + 18788,18804,18805,18811,18798,18800,18813,18804,18796,18806, + 18822,18814,18858,18871,18822,18830,18837,18827,18841,18847, + + 18842,18849,18842,18834,18837,18857,18853,18848,18858, 0, + 18851,18851,18862,18851, 0, 0, 0, 0,18856,18868, + 18860,18868,18865,18863,18867,18875,18865,18868,18879,18870, + 18882,18888,18885,18878,18882,18887,18892,18894,18898,18903, + 18896,18886,18904,18901,18910,18892,18899, 0,18912,18911, + 18914,18908,18974,18914,18915, 0,18910,19000,18926,18936, + 18907,18972,18926,18914,18941,18926,18944,18947,18934,18955, + 18959,18944,18959, 0,18973,18960, 0,18964, 0, 0, + 0, 0,19034,18964, 0, 0, 0,18962, 0, 0, + 0, 0, 0,18966,18981,18974,45164,18966, 0,18972, + + 18963,18969,18984,18977,18972,18979, 0, 0,18974, 0, + 0, 0, 0, 0,18966,18974,18990,18980,18994,18981, + 18982,19058,19062,18977,19002,18999,19004,18992,45164,19006, + 0,19007,19073,19074, 0,19000,19003,19000,19074,19082, + 19024,19089,19021,19012,19033,19092,45164,19018,19035,19099, + 19035, 0,19039,19105,19031,19031,19035,19034, 0,19046, + 19112,19038,19038, 0,19051,19117,19043,19043,19049,19042, + 19058,19045,19125,19126,19052, 0,19066,19130,19177,19131, + 19132,19255,19134,19058,19071,19073,19073,19081,19138,19074, + 19066,19142,19143,19064,19087,19076, 0,19150,19076,19102, + + 19087,19154,19161,19162,19103,19170,19171,19172,19174,19178, + 19122,19123,45164,19184,19209,19113,19148,19323,19128,19130, + 19143,19136,19135,19153,19217,19224,19134,19143,19145,19225, + 19157,19143,19152,19153,19226,19165,19231,19163,19155,19241, + 19245,19163,19240,19180,19191,19170,19184, 0, 0,19176, + 19264,19267,19192,19211,19213,19223,19203,19216,19288,19290, + 19294,19216,19233,19234,19219,19239,19237,19294,19296,19328, + 19301,19237,19227,19240,19239,19241,45164,19420,19259,19264, + 19261,19260,19275,19276,19323,19266,19339,19268,19281,19276, + 19273,19269,19347,19292,19351,19282,19284,19354,19302,19294, + + 19511,19280,19297,19288,19286,19291,19290,19450,19522,19293, + 19299,19357,19310,19313,19300,19342,19517,19312,19526,19527, + 19532,19299,19513,19315,19318,19468,19321,19326,19515,19333, + 19463,19349,19531,19350,19533,19537,19413,19539,19542,19543, + 19544,19545,19476,19478,19474,19479,19480,19489,19555,19554, + 19487,19490,19560,19561,19562,19501,19504,19502,19493,19504, + 19505,19499,19492,19513,19499,19508, 0,19509,19510,19586, + 0, 0,19515,19592,19523,19527,19535,19540,19526,19538, + 19531,19533,19531,19543,19607,19546,19550,19544,19546,19552, + 19619,19558,19549,19551,19557,19555,19560,19569,19575,19563, + + 19573,19635,19579,19639,19640,19570,19580,19577,19646,19583, + 19650,19647,19651,19594,19584,19591,19584,19592,19588,19596, + 19597,19591,19591,19580,19662,19665,19595,19595,19668,19592, + 19612,19615,19620,19679,19680,19681,19682,19611,19614,19627, + 19687,19696,19700,19613,19620,19610,19629,19640,19632,19676, + 19715,19635,19644,19631,19653,19641,19714,19715,19650,19716, + 19663,19681,19660,19684,19651,19660,19645,19649,19727,19684, + 19675,19675,19682,19753,19691,19686,19696, 0,19689,19687, + 19699,19688, 0, 0, 0, 0,19692,19693,19705,19767, + 19771,19778,45164,19772,19702,19715,19711,19700,19710,45164, + + 19722,19721,19722,19718,19729,19718,19719,19710,19722,19724, + 19729,19739,19727,19731,19742,19732,19737,19745,19751,19748, + 19741,19745,19751,19755,19757,19758,19764,19755,19746,19764, + 19761,19751,19772,19755,19755,19762, 0,19775,19774,19779, + 19772,19839,19780,19759,19782,19781,19775, 0,19779,19866, + 19870,19809,19849,19851,19850,19783,19784,19810,19873,19808, + 19806,19869,19881,19805,19814,19884,19828,19815,19826,19891, + 19894,19823,19827,19841,19835,19825,19902,19841,19845,19905, + 19910,19912,19915,19917,19848,19911,19857,19850,19866,19868, + 19861,19866,19923,19867,19858,19857,19877,19867,19857,19876, + + 19864,19881,19938,19940,19941,19942,19944,19945,19946,19878, + 19875, 0,19891,19958,19885,19957,19897,19887,19961,19962, + 19963,19937,19936,19938,20036,20119,20207,19902,20008,19897, + 19948,19909,19955,19921,19962,19964,19934,19976,19993,19993, + 19998,20025,19978,20000,20038,19918,45164,45164,45164,45164, + 45164,45164,19916,19934,19958,20211,20216,19972,45164,19976, + 19980, 0,19990, 0,19991, 0, 0, 0, 0,20009, + 0,20010,20004,20018,19996,19997,20014,20002,20017,20007, + 20070,20208,20219,20019,20016,45164,20041,45164,19997,20164, + 20171,20178,20184,20220,20186,20194,19998,20211,20212,20228, + + 20238,20231,20246,20236,20252,20261,20265,20264,20267,20268, + 20277,20283,20281,45164,20242,20290,20296,20310,20312,20320, + 20318,20326,20332,20334,20341,20347,20401,20281,20358,20365, + 20367,20372,20379,20384,20391,20393,20400,20282,20394,20339, + 20398,20356,20316,20401,20405,20430,20437,20412,20428,20436, + 20441,20453,20515,20529,20534,20614,20539,20476,20455,20481, + 20486,20032,20434,20559,20563,20500,45164,20509,20514,45164, + 20520,20533,20538,20027,20551,20572,45164,20583,20585,20629, + 20645,20656,20103,20319,20658,20595,20601,20611,20609,20618, + 20616,20627,20635,20643,20671,20666,20676,20684,20700,20691, + + 20689,20698,20706,20708,20718,20720,20725,20733,20738,20740, + 20745,20038,20747,20753,20758,20760,20772,20766,20774,20783, + 20296,20788,20790,20796,20798,20803,20833,20303,20810,20812, + 20820,20826,20828,20835,20841,20850,20848,20051,20859,20866, + 20873,20039,20929,20875,20890,20968,20892,20926,20900,20906, + 20933,21006,20942,20911,20950,20957,20955,20973,20978,20983, + 20989,20996,20966,20994,20111,45164,20157,20157,20179,20213, + 20216,20234,20261,20267,20268,20272,20278,21004,21012,21014, + 21022,21027,21029,21040,21042,21047,21057,21064,21071,21073, + 21079,21081,21088,21094,21099,21106,21108,21119,21117,21124, + + 21134,21140,21145,21147,21129,21156,21165,21171,21173,21233, + 21197,21190,21272,21276,45164,20253,45164,20352,21195,21212, + 21214,45164,20278,21361,21439,20310,20267,20390,21265,20286, + 20719,21231,20376,20401,20515,20492,20568,20506,20674,20531, + 20546,20635,20625,20404,20690,20652,20918,20470,21148,20431, + 20504,20544,21213,20295,20804,20825,20833,21083,20900,20856, + 21230,20700,20730,20764,21231,20947,20357,21053,21056,20996, + 20619,20875,20923,21298,21313,21314,21315,21256,21165,21238, + 20873,21267,20385,21025,21049,21242,21074,20681,21227,20950, + 21332,21254,21245,21268,20410,20855,21257,21266,20885,20989, + + 21091,20968,20895,20452,21129,21169,21264,21289,20471,21258, + 21291,21292,21285,21296,21290,21317,21373,21297,21294,21330, + 21334,21321,21331,21088,21345,21329,21353,21216,21394,21328, + 21336,21518,21346,21416,21363,21352,21366,21449,21250,21396, + 21367,21372,21364,21375,21391,21395,21399,21392,21388,21393, + 21410,21403,21412,21429,21405,21414,21486,21436,21423,21433, + 21441,21425,21427,20518,21442,21149,21435,21450,21452,21467, + 21481,21476,21431,21488,21489,21491,21471,21494,21499,21498, + 21500,21503,21526,21504,21482,21495,21520,21515,21517,21514, + 21521,21532,21523,21540,21528,21595,20600,20623,45164, 0, + + 20815,20831,20944,20983,21010,21039,21254,21358,21375,21544, + 21446,21506,21529,21521,21537,45164,21550,21538,21551,21542, + 21558,21561,21624,21539,45164,21555,21544,21557,21567,21560, + 21635,21636,21562,21561,21641,21645,45164,21568,21578,21583, + 21589,21571,21581,21654,21655,21656,21660,21662,21666,21667, + 21668,21672,21673,21674,21678,21604,21580,21687,21691,21615, + 21613,21778,21856,21627,21621,21629,21608,21604,21625,21624, + 21630,21703,21632,21646,21635,21636,21709,21712,21715,21716, + 21719,21649,21720,21653,21650,21675,21718,21721,21651,21666, + 21658,21677,21684,21758,21672,21759,21680,21681,21692,21698, + + 21765,21690,21700,21701,21704,21709,21780,21699,21729,21737, + 21702,21775,21789,21744,21745,21738,21748,21756,21728,21751, + 21736,21825,21754,21757,21741,21759,21768,21761,21770,21825, + 21834,21836,21838,21839,21794,21781,21795,21858,21863,21953, + 21797,21807,21808,21809,21820,21824,21826,21864,21827,21834, + 21836,21840,21841,21885,21833,21843,21865,22044,21844,21859, + 21864,45164,21846,21983,21984,21872,21847,21870,21986,21868, + 22051,45164,22049,22057,22062,22053,22068,22004,22003,22021, + 21861,21875,22010,22064,21871,22063,22071,22081,22084,22085, + 21874,21980,22014,22015,22027,22025,22091,22026,22095,22025, + + 22100,22101,22033,22040,22039,22045,22036,22069,22042,22077, + 22139,22070,22088,22046,22061,22164,22168,45164,22172,22177, + 45164,22073,22075,22110,22111,22112,22078,22117,22133,22122, + 22120,22138,22126,22134,22074,22140,22080,22141,22118,22149, + 22144,22136,22081,22160,22180,22105,22200,22158,22157,22129, + 22218,22233,22163,22162,22164,22175,22173,22167,22177,22183, + 22240,22242,22172,22250,22190,22188,22259,22188,22204,22201, + 22196,22265,22266,22269,22200,22199,22221,22280,22210,22214, + 22236,22216,22271,22214,22299,22220,22223,22231,22344,22229, + 22306,22259,22256,22263,22260,22339,22258,22238,22268,22325, + + 22273,22280,22223,22263,22341,22277,22296,22261,22299,22281, + 22300,22304,22297,22315,22313,22308,22294,22305,22320,22317, + 22318,22311,22327,22317,22323,22335,22318,22334,22326,22329, + 22327,22336,22343,22337,22346,22400,22347,22354,22349,22365, + 22366,22356,22357,22358,22360,22402,22367,22363,22370,22372, + 22386,22381,22377,22388,22393,22395,22409,22417,22384,22406, + 22407,22410,22408,22414,22476,22387,22415,22470,22488,22433, + 22509,22430,22498,22500,22445,22446,22448,22442,22452,22511, + 22438,22445,22446,22528,22531,22538,22547,22534,22541,22486, + 22471,22473,22491,22481,22485,22490,22559,22563,22567,22569, + + 22481,22559,22514,22492,22496,22500,22493,22499,22575, 0, + 22568,22502,22522,22505,22534,22537,22519,22529,22594,22595, + 22598,22599,22603,22606,22602,22620,22543,22614,22549,22612, + 22544,22616,22617,22631,22596,22602,22701,22540,22541,22784, + 22587,22571,22583,22593,22557,22565,22577,22597,22572,22594, + 22588,22609,22611,22608,22585,22872,22611,22662,22684,22876, + 22623,45164,45164,22616,22624,22677,22692,22631,22636,22648, + 22632,22637,22643,22630,22641,22634,22642,22651,22637,22644, + 22653, 0,22654,22653,22659,22671,22662,22663,22657,22676, + 22678,45164,22873,22881,22661,22669,45164,22678,22679,22681, + + 22744,45164,22685,22688,22871,22872,22875,22876,22877,22873, + 22886,22895,22892,22889,22885,22884,22893,22888,22897,22899, + 22917,22908,22902,22928,22922,22926,22911,22930,45164,22690, + 22683,22684,22878,22693,22694,22695,45164,45164,22691,22697, + 22851,22846,22933,22708,22842,22862,22915,22932,22937,22931, + 22934,22918,22940,22979,22997,23001,23000,23005,22709,22957, + 22954,23039,23119,23045,23199,23279,23359,23051,22959,23022, + 23028,22710,22712,22854,22812,23032,22965,22984,23000,22840, + 22990,22849,22991,23033,23073,23061,23075,23077,23081,23082, + 23099,23030,23027,23033,22853,23122,23007,23046,22867,23043, + + 23048,23064,23067,23131,23083,23072,22969,23113,22998,23081, + 23052,23082,23084,23087,23088, 0,23086,23095,23109,23089, + 23102,23103,23090,23104,23120,23092,23108,23107,23114,23128, + 23123,23125,23131,23126,23127,23191,23140,23150,23142,45164, + 23145,23149,23161,23227,23242,23250,23291,23228,23205,23173, + 23192,23145,23283,23288,23229,23172,23170,23255,23230,23239, + 23175,23244,23260,23258,23144,23262,23272,23154,23165,23164, + 45164,23193,23196,23208,23239,23250,23251,23261,23267,23269, + 23270,23274,23276,23281,23352,23340,45164,23323,23283,23298, + 23292,23309,23299,23307,23327,23328,23326,23329,23331,23332, + + 23334,23335,23304,23346,23338,23360,23340,23339,23341,23354, + 23365,23348,23306,23308,23419,23364,23374,23356,23372,23376, + 23377,23370,23462,23540,23379,23381,23383,23436,23447,23390, + 23387,23388,23454,23395,23394,23393,23401,23403,23404,23407, + 23426,23405,23427,23414,23406,23415,23412,23432,23475,23501, + 23442,23511,23433,23455,23480,23434,23444,23452,23469,23457, + 23468,23450,23482,23484,23458,23479,23472,23489,23492,23504, + 23505,23467,23552,23487,23493,23507,23509,23510,23512,23516, + 23514,23517,23529,23525,23527,23532,23536,23530,23538,23533, + 23547,23548,23531,23543,23549,23542,23559,23561,23562,23607, + + 23566,23568,23569,23632,23575,23573,23574,23576,23580,23585, + 23582,23586,23588,23593,23598,23600,23577,23595,23659,23601, + 23605,23608,23612,23613,23616,23692,23621,23614,23633,23619, + 23624,23625,23634,23640,23641,23639,23642,23644,23645,23646, + 23647,23654,23658,23651,23663,23669,23665,23652,23672,23680, + 23667,23653,23673,23677,23685,23684,23678,23686,23689,23691, + 23693,23698,23695,45164,23686,23682,23677,23705,45164, 0, + 23702,23687,23680,23709,23707,23710,23713,45164,23714,23709, + 23774,23715,23698,23719,23720,23779,23718,23781,23724,23783, + 23787,23709,23724,23713,23789,23706,23729,23710,23724,23728, + + 23718,23726,23798,45164,23721,23729,23723,23731,23737,23746, + 23732,23812,45164,23731,23744,23899,23980,23737,23763,23738, + 23743,23748,23749,23822,23759,23761,23745,23783,23831,45164, + 23751,23766,23760,23847,23823,23864,23792,23774,23772,23781, + 23783,23875,23785,23787,23860,23862,23808,23790,23810,23805, + 23803,23793,23876,23791,23825,23801,23802,23886,23883,23891, + 23832,23804,23897,23827,23823,23854,23892,23896,23928,23904, + 23900,23859,23816,23921,23994,24012,23882,45164,24102,23908, + 23904,23839,23927,23870,23904,23887,23988,23964,23846,23927, + 24006,23940,23947,23962,23942,23952,23963,23958,24026,24031, + + 24036,24193,24048,24065,24197,24052,24058,23992,23954,24007, + 23848,23852,23855,24066,24069,24009,24010,23924,23955,23996, + 23997,24011,24007,24014,24009,24123,24128,24139,24141,24138, + 24005,24143,24202,24149,24144,24148,24007,24209,24008,24015, + 24016,24152,24140,24125,24132,24146,24169,24162,24171,24177, + 24182,24174,24157,24168,24176,24178,24178,24183,24202,24180, + 24190,24192,24207,24286,24189,24201,24253,24211,24268,24212, + 24212,24218,24217,24215,24224,24230,24220,24231,24302,24225, + 24234,24249,24247,24248,24312,24318,24330,24315,24317,24265, + 24279,24244,24245,24363,24246,24276,24285,24340,24304,24271, + + 24277,24358,24295,24293,24296,24306,24311,24309,24322,24317, + 24319,24385,24324,24334,24324,24329,24323,24332,24334,24343, + 24331,24341,24335,24347,24344,24393,24351,45164,24342,24349, + 24344,24345,24356,24360,24444,24423,24365,24377,24371,24354, + 24384,24379,24388,24378,24380,24394,24383,24381,24401,24405, + 24397,24398,24408,24407,24391,24400,24416,24424,24411,24412, + 24347,24429,24436,24418,24350,24431,24425,24501,24502,24435, + 24438,24423,24512,24455,24448,24437,24454,45164,24524,24532, + 24541,24550,24554,24535,24494,24477,24462,45164,24448,24546, + 24559,24562,24552,24503,24502,24505,24469,24498,24571,45164, + + 24494,24491,24506,24501,24498,24505,24576,24503,24512,24579, + 24580,24583,24584,24586,24585,24513,45164,24519,24542,24596, + 24598,24599,24572,24576,24659,24515,45164,45164,24519,24742, + 24570,24539,24525,24534,24542,24550,24537,24546,24555,24542, + 24544,24551,24548,24566,24555,24550,24572,24570,24568,24559, + 24830,24579,45164,24563,24636,24614,24585,45164,24641,24593, + 24594,24644,24624,24595,24655,24591,24601,24584,24601,24611, + 24608,24602,24592,24608, 0,24611,24599,24619,24617,24599, + 24622,24620,24633,24827,24829,24837,24633,24634,24639,24832, + 24641,24645,24824,24827,24832,24828,24830,45164,24829,24842, + + 24844,24831,24835,24843,24849,24846,24855,24856,24847,24850, + 24854,24860,24865,24888,24866,24916,24698,24642,45164,24704, + 24649,24650,24663,45164,24661,24654,24803,24887,24805,24871, + 24876,24864,24934,24873,45164,24948,24874,24951,24938,24953, + 24955,24908,24651,24647,24668,25045,25053,25133,25018,25082, + 25099,25030,25120,24810,24844,45164,24969,24965,24910,24667, + 24669,24675,24973,24979,24669,24785,24820,45164,24796,24813, + 24930,24919,24929,24815,24909,24937,24945,25025,24932,24943, + 24980,24953,24821,24827,24998,24975,24988,25010,25020, 0, + 24978,25028,25048,24935,25034,25057,25052,25080,24982,24950, + + 25017,25042,25043,25064,24927,24996,25081,25102,25137,25030, + 25103,25045,25105,25085,25128,25075,25164,25167,25115,25108, + 25113,25084,25168,25100,25097,25126,25119,25135,25129,25121, + 25139,25136,25144,25137,25141,25203,25135,25139,45164,45164, + 25158,25156,45164,25147,25158,25148,25162,25163,25164,25166, + 25165,25167,25232,25244, 0,25168,25181,25169,25187,25189, + 25190,25195,25198,25188,25196,25197,25200,25201,25209,25216, + 25214,25217,25218,25222,25220,25223,25224,25228,25226,25233, + 25231,25244,25215,25243,25245,45164,45164,25317,25395,25293, + 25308,25299,25310,25311,25312,25313,25315,25314,25318,25330, + + 25319,25327,25320,25323,25340,25321,25322,25324,25325,25347, + 25331,25328,25326,25343,25348,25356,25352,25341,25363,25332, + 25355,25329,25339,25353,25367,25351,25358,25357,25373,25379, + 25371,25359,25377,25382,25360,25344,25361,25364,25370,25369, + 25397,25368,25441,25442,25447,25449,25451,25452,25457,25458, + 25453,25459,25460,25346,25466,25349,25469,25350,25354,25462, + 25470,25473,25475,25464,25476,25461,25477,25463,25465,25488, + 25481,25490,25482,25485,25484,25497,25495,25489,25494,25496, + 25491,25498,25508,25493,25510,25502,25501,25507,25499,25509, + 25362,25513,25515,25506,25516,25523,25398,25412,25392,25410, + + 0,25407,45164,25406,25411,25418,25423,25434,25443,25458, + 0,25435,25442,25450,25458,45164,25474, 0,25517,25520, + 25524,25590,25538, 0,25506,25593,25585,25536,25525,25527, + 0,25528, 0,25529, 0,25524,25601,45164,25540,25541, + 25672,25750,25546,25530,25540,25549,25608,25529,25538,25534, + 25612,25613,25539,25542,25550,25609,25610,25617,25550,25555, + 25556,25626,25556,25641,25559,25629,25559,25631,25563,25561, + 25573, 0,25573,25637,25572,25567,25564,25577,25575,25575, + 25584, 0,25648,25573,25639,25643,25648,25649,45164,25604, + 25713,25833,25598,25601,25605,25636, 0,25583,25680,45164, + + 25699,25652,25592, 0,25702, 0,25606,45164,25684, 0, + 25646,25613,25722,25739,25626,25629,25642,25630,25641,25664, + 25666, 0,25672,25656,25667,25669,25670,25672,25742,25665, + 25688,25677,25687,25682,25700,25682,25691, 0, 0,25685, + 25762,25691,25689,25703, 0,25713,25701,25706,25709,25723, + 25722,25723,25706,25724,25711,25727,25713,25924,25713,25717, + 25801,25928,45164,25738, 0,25929,25730,25733,25734,25735, + 25729,25721,25750,25737,25930,25733,25931,25753,25747,25746, + 25743,25735,25932,25933,25934,25752,25759,25750,25935,25874, + 25753,25937,25748,25872,25863,25940,25870, 0,25881, 0, + + 25873, 0, 0, 0,25944,25873,25873,25889,25882,25882, + 45164,25889,25887,25891,25883,25904,25893,25899,45164,45164, + 45164,25896,25901,25902,25904,25900,25905,25980,25905,25901, + 25912,25926,25904,25926,25919,25928,25934,25933,25924,25937, + 25935,25926,25931,25932,25935,25938,25937,25954,25936,25958, + 26015,25948,25947,25953,25939,25956, 0,25950,25961,25953, + 26026,25966,25958,25944,26033,26040,26037,26041,25971,25983, + 25982,26048,26050,26054,26040,26054,26055,26057,25983,26000, + 25993,25998,25995,25984,26060,26061,25988,26008,26009,26065, + 26066,26067,26069,26070,26009,26000, 0,26076,26050,26051, + + 26140,26223,26042,45164,26039,26044,26045,26043,26046,26048, + 26050,26047,26049,26052,26057,26056,26058,26069,26060,26103, + 26094,26104,26311,26038,26097,26145,26024,45164,26043,26108, + 26033,26075,26076,26147,26082,26314,26149,45164,26067,26073, + 45164,26086,26095,26088,26104, 0, 0,26101,26096,26092, + 45164,26117,26116,26116,26175,26308,26317,26104,26394,26121, + 26184,26124,26128,26472,26473,26474,26475,26476,26477,26478, + 26479,26480,26482,26484,26481,26483,26498,26487,26494,26490, + 26492,26488,26509,26506,26520,26523,26521,26126,26133,26129, + 26131,26146,26252,26512,26511,26528,26501,26526,26527,26110, + + 45164,26514,26524,26532,26513,26136,26622,26147,26324,26630, + 26604,26655,26626,26659,26666,26670,26689,26261,26331,45164, + 26274,45164,26145,26318,26134,26265,26152,26154,26285,26258, + 26292,26256,26293,26294,26660,26738,26298,26306,26435,26260, + 26621,26699,26299,26297,26318,26645,45164,45164,45164,26438, + 26451,26720,26325,26434,26301,26444,26454,26297,26673,26449, + 26456,26679, 0,26464,45164,26611,26461,26711,26474,26457, + 26471,26631,26471,26471,26655,26535,26661,26555,26547,26482, + 26543,26540,26572,26568,26595,26616,26605,26682,26658,26629, + 26700,26632,26657, 0,26654,26692,26701,26683,26665,26703, + + 26707,26708,26710,26714,26709,26728,26718,26716,26725,26719, + 26736,26738,26740,26742,26732,26746,26744,26809,26811,26750, + 26813,26754,26896,26974,26756,26807,26754,26758,26759,26760, + 26767,26761,26762,26764,26768,26770,26772,26773,26776,26777, + 26778,26779,26783,26784,26785,26786,26792,26846,26867,26798, + 26795,26809,26814,26815,26861,26878,26819,26800,26821,26822, + 26828,26825,26885,26903,26824,26836,26844,26882,26856,26848, + 26868,26842,26847,26858,26845,26865,26870,26873,26874,26875, + 26879,26880,26881,26886,26883,26887,26890,26898,26892,26913, + 26904,26884,26901,26918,26914,26934,26920,26936,26908,26939, + + 26921,26984,27003,27004,26943,26923, 0,26914,26921,27010, + 0, 0,26945,26953,26941,26948, 0,26941, 0,26939, + 26956,45164,45164, 0,26959,26945,27024, 0,26939,27026, + 26965,26942,45164,26954,26968,26961,26963,26966,26965,26977, + 26964,27118,27206,27284,26978,26969,27045,26973,26974,26995, + 27052,27056,27000,26997,26988,27203,27200,26999,27002,27003, + 26999,27207,27002,27009,27004,27003,27017,27007,27013,27083, + 27014,27021,27027,27022,45164,27205,27204,27202,27011,27367, + 27033,27167,27174,27018,27028,27023,27105,27036,27216,27032, + 27146,27176,27136,27133,27218,27219,27177,27178,27145,27228, + + 27164,27171,27244,27171,27193,27179,27195,27188,27181,27200, + 27198,27258,27264,27205,27261,27458,27222,27223,27218,27231, + 27252,27277,27459,27294,27219,27463,27467,45164,27242,27233, + 27238,27240,27250,27249,27246,27234,27468,27251,27253,27469, + 27254,27470,27269,27266,27474,27257,27264,27475,27259,27466, + 27275,27258,27337,27263,27420,27267,27270,27276,27293,27295, + 27288,27296,27279,45164,27286,27417,27404,27418,27420,27407, + 27408,27410,27413,27412,27423,27431,27415,27421,27426,27440, + 27430,27434,27433,27444,27441,27448,27436,27456,27452,27437, + 27457,27451,27473,27464,27471,27488,27536,27480,27454,27487, + + 27463,27540,27484,27544,27560,27565,27493,45164,27571,27505, + 27510,27510,27503,27576,27580,27567,27514,27518,27519,27520, + 27514,27513,27510,27515,27514,27517,27512,27513,27515,27518, + 27519,27592,27594,27595,27596,27587,27539, 0, 0,27573, + 27670,27758,27841,27540,27547,27535,27534,27537,27548,27551, + 27528,27530,27552,27558,27546,27701,27573,27553,27698,27574, + 27695,27575,27703,27706,27704,27929,27583,27765,27571,27578, + 27758,27590,27769,27571,27589,27581,27592,27583,27694,27712, + 27709,27703,27711,45164,27776,45164,27926,27934,27937,27797, + 45164,27784,28027,27723,27726,45164,27928,27921,27931,27932, + + 27929,27933,27934,28105,28106,27930,45164,45164,28107,28108, + 28110,28109,28111,28112,28113,28114,28115,28126,28127,28117, + 27729,27731,27737,27738,27740,28128,28129,28130,27717,45164, + 28122,28125,28136,28123,28137,28135,27742,27964,27736,28151, + 27730,27733,28161,28180,28232,28236,28242,28252,27748,45164, + 27746,45164,27889,27751,27760,27951,28252,27753,27890,27754, + 27761,45164,28246,28282,27738,27766,27743,27770,28253,45164, + 45164,28095,28226,27924,27976,28128,27891,27897,27904,27904, + 27936,28072,27874,28129,28265,28298,28317,27888,27915,27940, + 28334,27938,27942,28322,45164,28069,28090,28068,27936,28081, + + 28082,28091,28092,28088,28088,28082,28221,28113,28197,28107, + 28213,28108,28121,28224,28261,28229,28165,28240,28263,28110, + 28249,28267,28271,28265,28112,28332,28336,28134,28149,28167, + 28198,28421,28499,28328,28221,28288,28294,28270,28291,28183, + 28302,28296,28298,28306,28308,28305,28318,28184,28316,28321, + 28372,28320,28323,28339,28332,28328,28412,28418,28333,28373, + 28331,28385,28365,28342,28304,28337,28329,28379,28383,28390, + 28388,28386,28401,28393,28340,28391,28396,28413,28400,28351, + 28414, 0,28474,28423,28409,28412,28405,28417,45164,28413, + 28404,28422,28435,28500,28430,45164, 0, 0, 0,28445, + + 28440,28508,28598,28686,28764,28449,28437,28438,28450,28431, + 28457,28679,45164,28451,28460,28461,28463,28462,28465,28467, + 28467,28476,28540,28688,28479,28471,28477,28680,28685,28682, + 28847,28729,28488,28710,28472,28483,28552,28481,28485,28497, + 28563,28564,28496,28566,28490,28496,28512,28505,28506,28515, + 28507,28511,28513,28588,28589,28518,28718,28625,28629,28721, + 28621,28694,28698,28591,28699,28650,28628,28652,28631,28662, + 28725,28655,28665,28658,28713,28659,28742,28938,28939,28943, + 28660,28657,28736,28684,28672,28687,28671,28677,28678,28686, + 28696,28707,28697,28706,45164,28705,28724,28728,28737,28726, + + 28746,28715,28716,28735,28741,28739,28750,28744,28745,28762, + 28747,28749,28755,28757,28889,28760,28761,28944,28766,28945, + 28946,28902,28968,28777,45164,45164,28974,28949,28958,28865, + 28879,28896,28911,28917,28906,28920,28921,28904,28905,28906, + 28919,28982,28983,28984,28985,28972,28981,28917,28920,29006, + 29096,29184,45164,29267,28921,28932,28942,28948,28934,28937, + 45164,45164,28956,28949,28938,28941,28946,29345,28968,28976, + 28967,28962,28970,28966,29432,28967,28971,45164,28978,28971, + 28968,28980,45164, 0,28979,28980,28973,28994,28981,29182, + 29065,29359,28979,28996,28997,29350,29351,29352,29354,29353, + + 29355,29356,29358,29360,29359,29369,29361,29368,29390,45164, + 28982,29017,29383,29392,29373,29385,29397,45164,29000,29003, + 29397,29123,29012,29398,29379,29404,45164,29382,28991,29384, + 45164,29402,29389,29463,29017,29082,29005,29499,29514,29520, + 29525,29529,29539,29546,29561,29611,29626,29630,29410,29002, + 45164,29145,29122,45164,29120,29148,29151,29000,45164,29154, + 29002,29037,29417,29398,29101,29194,29220,29174,29157,29181, + 29152,29367,29493,29310,29405,29150,29131,29641,29157,29152, + 29657,29628,29642,29680,29167,29231,29710,29714,29168,29306, + 29316,29653,29196,45164,29181,29301,29312,29313,29305,29298, + + 45164,29326,29334,29352,29431,29348,29478,29504,29518,29472, + 29519,29532,29492,29597,29336,29319,29357,29355,29543,29799, + 29877,29640,29410, 0,29500,29654,29415,29479,29623,29438, + 29434,29665,29445,29460,29532,29457, 0,29464,29555,29478, + 29480,29481,29670,29508,29509,29508,29507, 0,29517,29538, + 29544,29543,29563,29561,29556,29550,29566,29652,29599,29665, + 29568,29595,29624,29606,29631,45164,29623,29664,29658,29663, + 29955,30033,29660,29669,29662,29657,29664,29693,29670,29681, + 29682,29685,29683,29687,29689,29676,29757,29758,29679,29698, + 29699,29752,29753,29757,29765,29764,30119,29770,29709,29706, + + 29701,29700,29704,29708,29725,29702,29715,29724,29726,29729, + 29785,29801,29727,29802,29728,29731,29741,29736,29743,29768, + 29828,29819,29768,29767,29890,29900,29857,29760,29832,29762, + 29805,45164,45164,29759,29769,29774,29769,29784,45164,29774, + 45164,29766,29789,29794,29781,29782,29784,29769,29806,29850, + 29851,29809,29864,29808,29846,29803,29847,29893,29782,29930, + 29934,29924,29849,45164,45164,29877,29936,29869,29880,29872, + 29870,29884,29882,29883,29888,29874,29875,29953,29880,29881, + 29894,29888,29891,30212,29904,29905,29892,29955,29901,29906, + 29913,29883,29908,29915,45164,29893,29930,29909,29916,29926, + + 29912,29920,45164,29930,29910,29974,29933,29935,45164,29945, + 29943,29949,45164,29941,29931,30014,29933,30023,45164,30014, + 30015,30016,30019,30026,30290,29944,29982,30025,30291,30292, + 45164,30293,30294,29983,30300,30296,30302,30298,30299,29994, + 29952,30305,29953,30011,30013,30315,45164,30304,45164,30306, + 45164,30305,29979,45164,30044,29981,30335,30341,30345,30349, + 30360,30429,30433,30440,30444,30524,30450,30045,29982,30012, + 30251,30539,30252,29992,30055,45164,30440,30460,30344,30029, + 29995,29994,45164,30253,30311, 0,29993,30533,30554,29993, + 29996,30068,45164,29988,45164,30297,30345,30396,30075,30018, + + 30020,30098,45164,45164,30376,30398,30017,30280,30261,30413, + 30424,30437,30281,30513,30232,30249,30260,30476,30442,30618, + 30696,30449,30524,30316,30781,30529,30383,30537,30558,30592, + 30579,30619,30657,30636,30599,30670,30683,30741,30753,30752, + 30772,30780,30352,30309,45164,30291,30371,45164,30288,30299, + 30335,30321,30789,30874,30955,30351,30336,30372, 0,30587, + 30357,30368,30392,30397,30395,30414,30615,30801,30443,30615, + 30399,45164,30403,45164,30500,30432,30421,30518,30519,30600, + 0,30489,30454,30887,30459,30562,30607, 0,30483,30566, + 30508,30578,30526,30522,30530,30586,30601,30527,30611,30554, + + 30544,45164,30560,45164,30547,45164,30550,30544,30634,30559, + 0,30556,30576,30577, 0,30639,30580,30571,45164,30601, + 30593,30616,30603,30679,30612,30615,30632,30636,30632,30633, + 30641,30736,30661,30662,30667,30656,45164,31038,30660,30669, + 30644,30679,30679,30667,30688,45164,30675,30691,30773,30693, + 30694,30699,30707,30671,30723,30800,30680,45164,30706,30693, + 30718,45164,30808,30788,30703,30848,30825,30780,30798,30829, + 30835,30737,30852,45164,30858,45164,30866,30742,45164,30730, + 30867,45164,30870,30871,30872,30876,30850,30731,45164,30736, + 30739,30773,30742,30878,45164,30903,30900,30929,30896,31129, + + 30968,31133,31137,31141,31145,31225,31151,31305,31385,31465, + 31157,31166,30848,30979,30989,31006,31153,31240,31105,30775, + 31231,45164,31137,30776,45164,30866,30745,30809,30878,31250, + 31268,30810,30820,30838,30873,45164,30943,30945,30916,45164, + 30842,30864,30940,31121,31177,30862,45164,31106,31236,30942, + 31266,31125,30874,45164,30902,31149,31543,31626,31223,31201, + 30908,30915,31144,31108,30926,31200,30954,31267,31116,30909, + 30981,30916,31001,45164,45164,30949,45164,31328,31704,31782, + 31071,31098,31218,31082,31084,31095,31115,31132,31147,31208, + 31199,31142,31219,31232,31162,31174,31339,31351,31375,31336, + + 31180,31279,31299,31226,31281,31235,31229,31262,31292,31214, + 31226,31252,31252,31347,31396,31291,31258,31356,31252,31359, + 31305,45164,31262,31263,31272,31370,31301,31376,31303,31322, + 31323,31335,31358,31360,31423,31366,31368,31355,31415,31865, + 31425,31426,31375,45164,31371,45164,31377,31355,31380,45164, + 31382,31383,31388,31439,31474,31423,31414,45164,45164,31380, + 45164,31377,31449,31369,45164,31448,31450,45164,31446,31381, + 45164,31382,45164,31421,45164,31467,45164,31466,45164,31483, + 45164,31468,31394,45164,31425,31436,31438,31412,31411,45164, + 31488,31489,31517,31503,31956,31580,32013,32093,32173,31595, + + 31508,31612,31658,31624,31551,45164,31521,31726,31418,31600, + 31423,45164,31606,45164,31519,45164,31452,31444,31445,31436, + 31588,45164,31566,31458,31468,31460,31531,31470,31543,31497, + 31598,31463,45164,32251,32329,31686,31578,31698,31707,31726, + 31743,31752,31764,31460,45164,31942,32407,45164,32485,31539, + 31555,31479,31491,31565,31505,31576,31776,31539,31622,31631, + 31753,45164,45164,45164,45164,31521,31962,31583,31536,31611, + 31570,31636,31564,31585,31599,31590,31598,31602,31606,31621, + 31625,31625,31640,31648,31967,31635,31637,31641,45164,32568, + 31628,45164,31632,45164,31642,45164,31641,45164,31671,45164, + + 31670,31645,45164,31992,45164,31704,31683,31697,31762,31766, + 45164,31751,45164,31761,31961,31931,31696,31984,45164,31998, + 32042,32067,32101,32659,32075,32105,32126,32142,32158,32199, + 32208,32230,31716,31725,31698,45164,31699,45164,31701,31965, + 45164,31720,31728,45164,31720,31737,31719,31723,32068,31711, + 31742,31749,32098,31947,32157,45164,45164,31777,31938,31824, + 31825,31753,31757,31839,31764,45164,31781,45164,31952,31782, + 45164,31793,31853,31887,31901,31891,31916,45164,31930,31931, + 31987,31933,31940,31939,31945,31947,31949,45164,31937,45164, + 31950,31960,31990,31966,31972,32059,32067,45164,32152,32151, + + 32169,31972,32176,32295,32300,32305,32317,32334,32362,32386, + 32412,32454,32663,31998,32002,31982,45164,32001,32011,32008, + 32030,32025,32032,32020,45164,32041,32212,32068,32063,32129, + 32055,32133,32096,32060,32072,32087,32098,32103,32157,32158, + 45164,32105,32108,32118,32112,32115,32184,45164,32154,32128, + 32177,32152,32167,45164,45164,32235,45164,45164,32166,32237, + 32366,32443,32458,32667,32684,32692,32188,32181,32184,45164, + 32254,45164,32174,45164,32189,32259,32260,32263,32196,32201, + 32200,32220,32207,32224,45164,45164,32214,32216,32229,32284, + 32290,45164,32236,45164,32278,32251,32236,32315,32267,32478, + + 32492,32696,32276,45164,32251,32259,32251,45164,32338,32268, + 32277,32268,32272,32276,32334,32335,32280,45164,45164,32313, + 45164,32364,32294,32702,32281,32304,32354,32314,32304,32306, + 32317,45164,45164,32321,32312,32407,32325,32317,32408,32318, + 45164,32338,32341,32399,32345,32348,32336,45164,32360,32431, + 32346,32361,32416,45164,32418,32420,45164,32379,32361,32375, + 45164,45164,45164,32378,32374,45164,32444,32401,45164,32467, + 32385,32385,32386,45164,45164,32781,32805,32829,32853,32877, + 32901,32925,32949,32973,32997,33021,33045,33069,33093,33117, + 33141,33165,33189,33213,33237,33261,33285,33309,33333,33357, + + 33381,33405,33429,33453,33477,33501,33525,33549,33573,33597, + 33621,33645,33669,33693,33717,33741,33765,33789,33813,33837, + 33861,33885,33909,33933,33957,33981,34005,34029,34053,34077, + 34101,34125,34149,34173,34197,34221,34245,34269,34293,34317, + 34341,34365,34389,34413,34437,34461,34485,34509,34526,34548, + 34572,34596,34616,34638,34662,34673,34682,34691,32499,32509, + 34700,34722,34733,34748,34770,34794,34813,34835,32511,32513, + 34845,32523,32526,34869,34880,34889,34898,34919,34941,32534, + 34965,34989,32471,32482,35013,35037,35054,35071,35095,35106, + 35123,35132,35154,35178,35200,35224,35235,35257,35281,35305, + + 35329,35353,35377,35397,35406,35424,35442,35464,32544,35488, + 35512,35523,35532,35541,35563,35587,35598,35607,35616,32689, + 32694,35625,35647,35658,35676,35698,35722,35746,35757,35779, + 32698,32715,35789,32718,32731,35809,35818,35827,35836,35857, + 32742,35875,35884,35902,35924,35948,35972,35996,36020,32484, + 32518,36037,36054,36076,36087,36104,36113,36135,36159,36181, + 36203,32747,36223,36232,36250,36272,36283,36292,36314,36338, + 36362,36382,36391,36409,36418,36440,36460,36469,36478,36487, + 36508,32540,32521,36517,32755,36526,36535,36557,36581,36605, + 32758,34521,36616,36625,36634,36652,36661,36679,36701,36721, + + 36744,36768,36792,36809,36826,36835,36852,36861,36883,36905, + 34523,36923,36932,36950,36972,36983,36992,37014,37038,37062, + 37082,37091,37113,37133,37142,37151,37160,37169,32703,32536, + 37178,34613,37187,37196,37218,37242,37266,37290,37314,34677, + 34686,37325,37334,37343,37361,37370,37388,37410,37434,37458, + 37475,37492,37501,37518,37527,37549,37571,37589,37598,37616, + 37625,37634,37656,37680,37704,37724,37733,37746,37766,37776, + 37785,37793,37804,37813,34695,37822,37843,37865,37889,37913, + 34703,34705,37924,37945,37966,37984,37993,38011,38034,38049, + 38073,38097,38120,38143,38152,38169,38178,38187,38209,38231, + + 38249,38258,38276,38285,38294,38316,38340,38364,38384,38393, + 34736,38415,38439,38463,38478,38502,38526,38550,38570,38579, + 38588,38596,38607,38616,34738,38625,38634,38656,38680,34746, + 34810,38700,38710,38719,38737,38746,38764,38777,38801,38825, + 38849,38873,38893,38902,38917,38928,38945,38954,38963,38985, + 39007,39025,39034,39055,39065,39074,39096,39120,39144,39154, + 39178,39193,39217,39241,39265,39280,39304,39328,39352,39362, + 39382,39391,39400,39408,39419,39437,39445,34884,39456,39465, + 39487,39511,39535,34893,39546,39555,39564,39585,39603,39612, + 39630,39643,39658,39682,39706,39723,39734,39751,39760,39782, + + 39804,39822,39831,39849,39870,39879,39901,39925,39949,39960, + 39973,39993,40015,40039,40063,40073,40093,40102,40111,40119, + 40130,40139,34914,40150,40171,40193,34917,40216,40237,40258, + 40279,40288,40306,40324,40337,40361,40385,40402,40413,40430, + 40439,40461,40483,40492,40510,40532,40543,40565,40589,40600, + 40613,40637,40661,40681,40690,40712,40732,40741,40750,40758, + 40769,40787,40805,40814,40832,40841,40850,40859,40868,40886, + 40899,40919,40941,40965,40985,41004,41013,41035,41057,41066, + 41084,41106,41117,41139,41163,41174,41187,41211,41235,41246, + 41268,41292,41303,41321,41330,41352,41363,41371,41382,35051, + + 35059,41403,35068,41411,41422,41431,41440,41449,41467,41480, + 41504,41528,41552,41571,41580,35109,41602,41611,41629,41638, + 41660,41684,41708,41719,41732,41756,41780,41804,41828,41851, + 41862,41880,41889,41911,41922,41930,41941,35111,35120,35128, + 41949,41960,41969,41978,41987,42005,42018,42042,42066,42090, + 42109,35392,42131,42140,42158,42167,42189,42213,42237,42260, + 42283,42298,42322,42346,42370,42381,42405,42429,42439,42463, + 42487,42507,42516,42538,42548,42559,42568,42577,42598,42617, + 42630,42654,42678,42702,42726,42745,42766,42785,42794,42816, + 42840,42850,42874,42898,42922,42946,42957,42981,43005,43016, + + 43024,43044,43052,43076,43100,43120,43142,43152,43163,43181, + 43194,43218,43242,43253,43271,43293,43317,43341,43360,43382, + 43406,43416,43431,43455,43479,32654,43503,43527,43551,43575, + 43599,43623,43647,43657,43665,43689,43713,43737,43757,43779, + 43803,43814,43833,43855,43870,43894,43905,43922,43944,43968, + 43991,44001,44025,44049,44073,34605,44097,44121,44145,44169, + 44193,44217,44237,44259,44283,44294,44316,44340,44364,44388, + 44408,44430,44454,44474,44492,44514,44525,44542,44564,44588, + 44611,44621,44645,44669,44693,44717,44741,44765,44789,44813, + 44837,44857,44880,44900,44918,44936,44946,44970,44985,45009, + + 45033,45057,45081,45091,45115,45139 + } ; + +static yyconst flex_int16_t yy_def[12007] = + { 0, + 11276,11276, 2, 2, 2, 2,11277,11277,11278,11278, + 11279,11279,11280,11280,11281,11281,11281,11281,11282,11282, + 11281,11281,11283,11283,11284,11284,11285,11285,11286,11286, + 11286,11286,11287,11287,11288,11288,11289,11289,11290,11290, + 11291,11291,11292,11292,11293,11293,11292, 47,11294,11294, + 11295,11295,11296,11296,11297,11297,11298,11298,11299,11299, + 11300,11300,11301,11301,11302,11302,11303,11303,11304,11304, + 11305,11305,11306,11306,11307,11307,11308,11308,11309,11309, + 11310,11310,11311,11311,11312,11312,11313,11313,11314,11314, + 11315,11315, 84, 84,11275, 95, 84, 84,11316,11316, + + 84, 84, 84, 84, 84, 84, 84, 84, 100, 109, + 11275, 111,11303,11303,11317,11317,11317,11317,11318,11318, + 11319,11319,11320,11320,11321,11321,11322,11322,11323,11323, + 11324,11324, 132, 132,11325,11325,11326,11326,11327,11327, + 11328,11328,11329,11329,11330,11330,11331,11331,11332,11332, + 11333,11333,11334,11334,11335,11335,11336,11336,11336,11336, + 11337,11337,11338,11338,11339,11339,11340,11340,11341,11341, + 11342,11342,11342,11342,11343,11343,11344,11344,11345,11345, + 11275,11275,11275,11275,11275,11275,11275,11346,11347,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275, 204,11275, + 11275,11275,11275,11348,11349,11275,11275,11275,11350,11351, + 11352,11275,11275,11275,11275,11275,11275,11275,11348,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11353,11354,11348,11354,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11348,11275,11355,11275,11275,11275,11275,11355,11275, + 11275,11275,11275,11356,11275,11357,11275,11275,11275,11275, + 11275,11358,11275,11275,11275,11275,11275,11275,11275,11275, + 11359,11275,11275,11360,11275,11275,11275,11275,11275,11361, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11362,11275,11275,11275,11275,11275,11350,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11363, + 11275,11275,11275,11275,11275,11275,11275,11350,11364,11275, + 11275,11275,11365,11365,11365,11365,11275,11366,11365,11275, + 11275,11275,11275,11275,11275,11367,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11368,11275,11275,11275,11275, + 11369,11275,11275,11275,11275,11275,11370,11275,11371,11275, + 11372,11275,11275,11275,11275,11275,11373,11275,11275,11275, + 11275,11355,11275,11275,11374,11275,11275,11275,11275,11275, + + 11355,11375,11275,11275,11275,11275,11275,11355,11376,11275, + 11275,11355,11377,11275,11275,11275, 396,11275,11275,11275, + 11275,11275,11275,11275,11275,11378,11379,11275,11275,11275, + 11275,11275,11275,11275,11275,11380,11275,11275,11275,11275, + 11378,11275,11275,11275,11275, 396,11275,11275,11275,11275, + 424,11275,11275,11379,11275,11275,11275,11275,11275, 396, + 11275,11275,11275,11275,11275,11275,11275,11275,11374,11381, + 396,11275,11275,11275,11382, 396,11275,11374, 396,11383, + 11275,11275,11275, 396,11384,11385,11275,11275,11275,11386, + 11387,11275,11275,11275,11388,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11389,11390,11275,11275,11275,11275, + 11275,11275,11391,11275,11275,11392,11275,11275,11393,11275, + 11275,11275,11275,11275,11275,11394,11275,11275,11394,11394, + 11395,11394,11394,11394,11394,11394,11275,11394,11275,11394, + 11394, 537,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11396,11275,11275, + 11275,11275,11275,11275,11397,11275,11397,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11386,11398,11275,11275,11275, + 11275,11275,11275,11275,11275,11399,11399,11275,11399,11399, + 11275,11275,11400,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11401,11402,11403,11275,11400,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11404,11404,11275,11275,11405, + 11406,11406, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672,11275,11275,11275,11275,11275, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672,11275,11275,11275,11275,11275,11275,11275, + 11407,11407, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722,11275, 722, + 739, 742, 722, 722, 722, 753,11275,11408,11275,11275, + 11275,11409,11275,11410,11411,11275,11275,11412,11412,11412, + 11412,11412,11412,11412,11412,11412,11412,11412,11412,11275, + 11275,11275,11275,11413,11413,11413,11275,11275,11275,11275, + + 11275,11275,11414,11414,11414,11414,11414,11414,11414,11415, + 11275,11275,11275,11415,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11416,11275,11275,11275,11275,11275,11275, + 11275,11275,11417,11418,11275,11419,11419,11419,11419,11419, + 11419,11419,11275,11275,11275,11275,11420,11420,11275,11421, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11422,11422,11275,11275,11275,11423,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11424,11424,11424,11424,11424,11424,11275,11275,11275, + 11275,11275,11425,11426,11275,11426,11426,11426,11275,11426, + + 11426,11426,11427,11428,11426,11426,11411,11426,11426,11275, + 11275,11275,11429,11275,11275,11275,11275,11430,11275,11275, + 11431,11275,11275,11275,11432,11432,11433,11275,11434,11434, + 11434,11434,11275,11275,11275,11275,11435,11275,11435,11275, + 11275,11275,11275,11436,11436,11275,11437,11437,11437,11437, + 11437,11437,11437,11437,11437,11437,11275,11275,11438,11438, + 11438,11438,11438,11438,11439,11439,11439,11439,11439,11439, + 11275,11275, 945, 945,11275,11275,11275,11275,11275,11275, + 11275,11275,11440,11275,11275,11275,11275,11275,11275,11275, + 11441,11275,11275,11275,11275,11275,11275,11275,11442,11442, + + 11275,11443,11444,11444, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004,11275,11275,11275, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1026, 1004, 1004, 1004, + 11275,11275,11275,11275,11275,11275,11275, 945, 945,11275, + 11275,11445,11275,11275,11446,11447,11275,11445, 945, 945, + 11275,11275,11448,11275,11275,11449,11275,11448, 945, 945, + 945, 1070, 945,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275, 1092, 1094, 945, 1094,11450, 945,11451, + + 11275,11452,11452,11452,11452,11453,11453,11275,11275,11275, + 11454,11275,11275,11455,11455,11275,11275,11275,11275,11275, + 11456,11456,11275,11457,11457,11457,11457,11457,11457,11457, + 11457,11458,11275,11275,11275,11275,11459,11460,11275,11459, + 11459,11459,11459,11459,11459,11459,11459,11459,11459,11459, + 11459,11459,11459,11459,11459,11459,11459,11461,11275,11459, + 11459,11462,11462,11462,11462,11462,11462,11462,11462,11462, + 11462,11462,11462,11462,11462,11462,11462,11463,11463,11462, + 11462,11464,11462,11462,11462,11462, 1185,11465,11465, 1189, + 1189, 1190, 1189, 1189, 1189, 1189,11462,11462,11462,11459, + + 11275,11275, 1189, 1189, 1189, 1191, 1205, 1189, 1190, 1189, + 1194,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11466,11275,11467,11467,11275,11275, + 11467,11275,11275,11275,11275,11275,11275,11275,11468,11468, + 11468,11468,11468,11468,11468,11468,11275,11275,11275,11275, + 11469,11469,11469,11470,11275,11470,11275,11275,11275,11275, + 11275,11471,11471,11275,11275,11470,11275,11470,11470,11470, + 11275,11275,11275,11472,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11473,11472,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11473, + 11275,11275,11275,11275,11275,11474,11474,11474,11275,11275, + 11475,11475,11475,11475, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209,11275, 1209, 1209, 1209, 1209, 1209,11275,11275, + 11476,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1412, 1412, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1412, 1209, 1209, 1209, 1209, 1209, 1209, 1209,11275, + 1209, 1209, 1209, 1209, 1209,11275, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209,11275, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209,11275, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + + 1209, 1209, 1209, 1209, 1209, 1412, 1209, 1209,11275, 1209, + 1209, 1209, 1209, 1209, 1412, 1209, 1209, 1209, 1412, 1412, + 11275,11275,11275,11275,11275,11275,11275,11477,11477, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 11275,11478,11478,11478,11478,11478,11478,11478,11478,11478, + + 11478,11478,11478,11478,11478,11275,11275,11479,11479,11479, + 11479,11275,11275,11275,11480,11480,11480,11480,11480,11480, + 11480,11480,11480,11480,11275,11275,11275,11481,11482,11275, + 11275,11275,11483,11275,11275,11484,11484,11484,11484,11484, + 11484,11485,11486,11275,11275,11275,11275,11487,11487,11487, + 11487,11487,11275,11275,11488,11489,11488,11275,11490,11489, + 11491,11275,11275,11492,11492,11492,11275,11275,11275,11275, + 1529, 1529,11493,11493,11493,11493,11493,11493,11493,11493, + 11493,11493,11494,11494,11494,11494,11494,11495,11495,11495, + 11495,11495,11275,11275,11275, 1529, 1529,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11496,11496,11496, + 11275,11497,11497,11497,11497,11498,11498, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817,11275,11275,11499, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817,11275, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817,11275, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817,11500,11275,11275, 1529, 1529,11501,11275,11501,11275, + 11502,11275,11275,11501,11275,11501,11501,11501, 1529, 1529, + 11503,11275,11503,11275,11275,11275,11275,11275,11503,11275, + 11503,11503,11503, 1529, 1529, 1529, 1529, 1529, 1529,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275, 1529,11275,11275,11275, + 1529,11275,11504,11504,11504,11275,11505,11275,11506,11275, + 11275,11507,11275,11508,11508,11508,11508,11508,11508,11508, + 11508,11509,11510,11275,11510,11511,11511,11511,11511,11511, + 11511,11511,11511,11511,11511,11511,11511,11511,11511,11511, + 11511,11511,11511,11511,11511,11511,11511,11511,11511,11511, + 11511,11511,11511,11511,11511,11511,11511,11511,11511,11512, + 11512,11512,11513,11513,11513,11513,11511,11511,11511,11511, + 11511,11511,11511,11511,11511,11511,11511,11511,11511,11511, + 11511,11511,11511,11511,11511,11511,11514,11514, 2198, 2198, + + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198,11511,11511,11511,11511,11511,11511,11275,11275, + 11275, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11515, + 11275,11516,11275,11516,11275,11275,11275,11517,11517,11517, + 11517,11517,11517,11517,11517,11518,11275,11275,11275,11275, + 11275,11502,11519,11275,11520,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11521, + + 11521,11522,11522,11522, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,11275, + 2198, 2198, 2198, 2198, 2198,11523,11275,11275,11275,11275, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,11275, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198,11521, 2198, 2198, 2198, 2198, + 11275, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,11275, + 11275, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + + 2198, 2198, 2198, 2198,11521, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 11275, 2198, 2198, 2198, 2198,11275,11275,11275,11275, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198,11275, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198,11275, 2198, 2198, 2198,11275,11275, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,11275, + 2198, 2198, 2198, 2198,11275, 2198, 2198, 2198, 2198, 2198, + + 2198, 2198, 2198, 2198, 2198,11275, 2198, 2198, 2198, 2198, + 2198, 2198, 2198,11275, 2198,11275, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198,11521, 2198,11275,11524,11524, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530,11275, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530,11275,11525,11525,11525,11525,11525,11525, + 11525,11525,11525,11525,11525,11525,11525,11275,11526,11526, + 11526,11275,11275,11275,11527,11527,11527,11527,11527,11527, + 11275,11275,11275,11275,11528,11529,11275,11275,11530,11275, + 11531,11531,11531,11531,11531,11531,11532,11533,11275,11275, + 11275,11275,11534,11275,11534,11534,11534,11534,11534,11534, + 11534,11534,11275,11535,11536,11537,11537,11538,11535,11539, + + 11275,11540,11275,11275,11275,11275,11541,11541,11541,11275, + 11275,11275, 2530, 2530,11542,11542,11542,11542,11542,11542, + 11542,11542,11542,11542,11542,11542,11542,11542,11543,11543, + 11543,11543,11543,11543,11543,11543,11543,11544,11544,11544, + 11544,11544,11544,11544,11544,11544,11275,11275, 2530, 2530, + 11275,11275,11275,11275,11275,11275,11545,11545,11546,11546, + 11546,11547,11547, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 11275, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863,11275, + 11275,11275, 2863,11275, 2863, 2863, 2863, 2863, 2863, 2863, + + 2863, 2863, 2863, 2863,11275, 2863,11548,11275,11275, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863,11275, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 11275,11275, 2863, 2863,11275, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863,11545, 2863, 2863, 2863, 2863, 2863,11275, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + + 2863, 2863, 2863, 2863,11275, 2863, 2863, 2863, 2863, 2863, + 2863, 2863,11275, 2863, 2863, 2863,11275, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863,11545, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863,11275, 2863, 2863, 2863, 2863, 2863, 2863, + 11275, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863,11275, 2863, 2863, 2863, 2863, 2863, 2863, + 11275, 2863, 2863, 2863,11275,11275, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + + 2863,11275,11275, 2863, 2863, 2863,11275, 2863, 2863, 2863, + 11275, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 11275, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863,11275,11275, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863,11275, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 11275, 2863, 2863, 2863, 2863, 2863,11275, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + + 2863, 2863, 2863, 2863, 2863,11275, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863,11275, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 11545, 2863, 2863,11275, 2863,11275, 2863,11275,11275, 2530, + 2850,11275,11275,11275,11549, 2530, 2530,11275,11275,11275, + 11275,11275,11275,11275,11550,11550, 2530, 2530, 2530, 2530, + 2530, 2850, 2850, 2850,11551,11551,11551,11552,11275,11553, + 11275,11554,11275,11555,11555,11555,11555,11555,11555,11555, + 11555,11555,11555,11555,11555,11555,11556,11557,11558,11558, + 11559,11559,11559,11560,11560, 3295, 3295, 3295, 3295, 3295, + + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 11275, 3295, 3295, 3295,11275,11275, 3295, 3295,11275, 3295, + 3295,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11561,11275,11275,11561,11275,11275,11275,11562,11562,11562, + 11562,11562,11562,11562,11563,11275,11275,11275,11275,11275, + 11564,11565,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11566,11566,11567,11567,11567, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295,11275,11275, 3295, 3295, 3295, 3295, + + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295,11566, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295,11275,11275, 3295, + 3295,11568, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295,11275,11275, + 11275,11275, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295,11275,11275, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295,11275, 3295, 3295, + 3295, 3295, 3295, 3295,11275, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295,11275,11566,11275,11567, 3295, + + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295,11275, 3295, 3295, 3295, 3295, 3295, 3295,11275,11569, + 11569, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621,11275, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621,11275,11570, + 11570,11570,11570,11570,11570,11570,11570,11570,11570,11275, + 11275,11570,11275,11571,11571,11571,11275,11572,11275,11573, + 11275,11573,11573,11573,11275,11573,11275,11275,11275,11275, + 11275,11275,11574,11574,11275,11574,11575,11275,11576,11275, + 11275,11577,11577,11577,11577,11577,11577,11577,11577,11275, + + 11577,11578,11579,11580,11578,11580,11581,11275,11275,11582, + 11582,11275,11275, 3621,11583,11583,11275,11583,11583,11583, + 11583,11583,11583,11583,11583,11583,11583,11583,11584,11584, + 11584,11584,11584,11584,11584,11584,11584,11585,11585,11585, + 11585,11585,11585,11585,11585,11585,11275, 3621, 3621,11275, + 11275,11275,11275,11275,11275,11586,11586,11587,11587,11587, + 11588,11588,11275,11275, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962,11275,11275,11275,11275, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 11275,11275, 3962, 3962, 3962, 3962,11275,11275,11589, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962,11275,11586, 3962, 3962, + 11275, 3962, 3962,11275,11275, 3962, 3962, 3962, 3962, 3962, + 3962,11275, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962,11275, 3962,11275, 3962, 3962, 3962,11275, 3962, + 11275, 3962, 3962, 3962,11275, 3962, 3962,11275,11275, 3962, + 11275, 3962,11275, 3962,11275,11275, 3962,11275, 3962, 3962, + 3962, 3962,11275, 3962, 3962, 3962,11275, 3962, 3962,11590, + + 3962, 3962, 3962, 3962,11275, 3962,11275, 3962, 3962,11275, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962,11275, + 11275,11275, 3962, 3962, 3962, 3962, 3962, 3962, 3962,11275, + 11275,11275, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962,11275, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962,11275,11275, 3962, 3962,11275,11275, 3962, 3962, + 3962, 3962, 3962, 3962,11275, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962,11275, 3962, 3962, 3962,11275, + 11275, 3962, 3962, 3962, 3962,11275, 3962,11275, 3962, 3962, + + 3962, 3962, 3962, 3962, 3962,11275,11275, 3962, 3962, 3962, + 3962,11275, 3962,11275,11275,11275, 3962, 3962, 3962,11275, + 11275, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962,11275,11275,11275, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962,11275, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962,11275, 3962, + 11275, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962,11275, 3962, 3962, 3962, 3962,11275, 3962, 3962, 3962, + 3962,11275, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + + 3962,11275, 3962,11275, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962,11275,11275,11275, + 11275, 3962, 3962, 3962,11275, 3962,11275, 3962,11275, 3962, + 3962, 3962, 3962, 3962, 3962,11275, 3962, 3962, 3962,11275, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962,11586,11275,11587, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962,11275,11275,11275,11275,11275, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962,11275,11275, + + 3621,11275,11275,11591,11591, 3621, 3621, 3621,11275,11275, + 11275,11275,11275,11592,11592,11592, 3621,11590, 3621,11275, + 3621, 3621, 3621,11275,11275,11593,11593,11593,11594,11275, + 11595,11275,11275,11596,11596,11596,11596,11596,11275,11597, + 11597,11597,11597,11597,11597,11597,11597,11597,11597,11597, + 11598,11597,11597,11599,11600,11601,11601,11602,11602,11602, + 11603,11603, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11604, + + 11275,11275,11604,11275,11275,11275,11605,11605,11605,11605, + 11605,11605,11605,11605,11606,11275,11275,11275,11607,11608, + 11275,11609,11609,11610,11610,11610, 4462,11611, 4462, 4462, + 4462, 4462,11275, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462,11275, + 11275,11609,11612, 4462,11275,11275,11613,11614, 4462, 4462, + 4462,11609, 4462, 4462, 4462, 4462, 4462, 4462,11275,11275, + 11275, 4462, 4462,11275,11615,11615,11615,11615,11615,11615, + 11615,11615,11275, 4462, 4462, 4462, 4462, 4462, 4462,11275, + + 11616, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462,11275, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462,11275, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462,11617, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462,11275, 4462, 4462, 4462, 4462,11275,11275,11275,11275, + 11275,11275,11275,11275, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462,11275, 4462,11275, + 11275,11618,11609,11275,11610, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462,11275,11619, + 11619, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791,11275,11620,11620,11620,11275,11275, + 11620,11620,11620,11620,11620,11620,11620,11620,11620,11620, + 11620,11620,11620,11620,11620,11275,11620,11275,11621,11621, + 11275,11275,11275,11622,11622,11275,11275,11275,11275,11623, + 11623,11623,11623,11623,11623,11623,11623,11275,11623,11275, + 11275,11275,11275,11624,11624,11625,11275,11626,11275,11275, + 11275,11627,11627,11627,11627,11627,11627,11627,11275,11627, + 11628,11275,11629,11275,11630,11275,11631,11275, 4791,11632, + 11275,11275,11632,11632,11632,11632,11632,11632,11632,11632, + + 11632,11632,11633,11633,11633,11633,11633,11633,11633,11634, + 11634,11634,11634,11634,11634,11634,11634, 4791,11275,11275, + 11275,11275,11275,11635,11635,11636,11636,11636,11637,11275, + 11275,11637, 5132, 5132, 5132, 5132, 5132, 5132,11275, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132,11275,11275, + 5132, 5132, 5132, 5132, 5132, 5132,11275, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132,11275,11275, 5132, 5132, 5132,11275, 5132, + 11275, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132,11275, 5132, 5132, 5132, 5132, + + 5132,11275,11275,11275,11275, 5132, 5132,11275, 5132, 5132, + 5132,11275,11635, 5132,11275, 5132,11275, 5132, 5132, 5132, + 11275, 5132,11635, 5132,11275,11275, 5132, 5132, 5132, 5132, + 5132, 5132,11275,11275, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132,11275, 5132, 5132, 5132,11638,11638,11638, + 11638, 5132, 5132, 5132, 5132, 5132,11639,11639,11275,11275, + 11639,11275,11275, 5263, 5263, 5263, 5263, 5263, 5132, 5132, + 5132, 5132, 5132,11275, 5132,11275, 5132, 5132, 5132, 5132, + 5132, 5132,11275,11275, 5132, 5132, 5132, 5132, 5132, 5132, + 5132,11275, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 11275,11275, 5132, 5132,11275,11275, 5132, 5132, 5132, 5132, + 5132, 5132,11275, 5132, 5132, 5132, 5132, 5132, 5132,11275, + 11275, 5132, 5132, 5132, 5132, 5132, 5132, 5132,11275,11275, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132,11275,11275, 5132, 5132, 5132, 5132,11275, + 11275, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132,11275,11275, + + 11275, 5132, 5132, 5132, 5132,11275,11275, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132,11275, 5132, 5132, 5132, + 5132, 5132,11275, 5132, 5132, 5132, 5132,11275,11275, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132,11275, 5132, + 5132, 5132, 5132, 5132, 5132,11275,11275, 5132,11275, 5132, + 5132, 5132,11275,11275,11275, 5132,11275, 5132,11275, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132,11275, 5132, 5132, 5132, 5132,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 11275, 5132, 5132,11275,11635,11275,11636, 5132, 5132, 5132, + 5132, 5132, 5132, 5132,11275, 5132, 5132, 5132, 5132, 5132, + 11275, 5132, 5132, 5132,11275,11275,11275,11275,11275,11275, + 11640,11640,11275,11275,11275, 4791, 4791, 4791,11275,11275, + 11641,11275,11275,11275,11642,11642,11642, 4791,11638, 4791, + + 11275,11275,11643,11275,11644, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791,11275,11275,11645,11275,11646, + 11275,11275,11275,11275,11275,11275,11275,11275,11647,11647, + 11647,11647,11647,11647,11647,11275,11648,11648,11648,11648, + 11648,11648,11648,11648,11648,11648,11648,11649,11648,11648, + 11650,11651,11652,11652,11653,11653,11653,11654,11654, 5659, + 5659,11275, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659,11275, 5659, 5659, 5659, 5659, 5659, 5659,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11655,11275,11655,11275,11275,11275,11275,11656, + + 11656,11275,11656,11656,11656,11656,11656,11656,11656,11656, + 11656,11657,11275,11275,11275,11275,11275,11275,11275,11658, + 11659,11643,11644,11644,11644,11643,11660,11275,11275, 5659, + 5659,11275,11275,11661, 5659, 5659, 5659, 5659, 5659,11275, + 11275, 5659, 5659,11662, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659,11275,11643,11275,11663, 5659, + 11664,11275,11665,11275,11275,11275, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659,11666,11666,11666,11666, + 11666,11666,11666,11666,11666,11666, 5659, 5659, 5659, 5659, + 5659,11667,11668,11667,11668,11667,11667, 5659, 5659, 5659, + + 5659, 5659, 5659, 5659, 5659, 5659,11275, 5659, 5659, 5659, + 11275,11275,11275, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659,11275,11275, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659,11275, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659,11275,11275, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659,11669,11275, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659,11275, 5659, 5659, 5659, 5659, 5659, + + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659,11275,11275,11670, + 11275, 5659, 5659, 5659, 5659,11275,11671,11671, 5978, 5978, + 5978, 5978, 5978, 5978, 5978,11662, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978,11275,11672,11672,11672,11275,11672,11672,11672,11672, + 11672,11672,11672,11672,11672,11672,11672,11672,11672,11672, + 11672,11672,11672,11275,11672,11672,11275,11673,11673,11275, + + 11275,11674,11275,11275,11275,11675,11675,11675,11675,11675, + 11675,11675,11675,11675,11675,11275,11675,11275,11275,11275, + 11275,11676,11275,11677,11678,11275,11679,11275,11275,11275, + 11680,11680,11680,11275,11680,11275,11275,11680,11681,11682, + 11683,11275,11684,11275, 5978,11275,11275,11275,11275,11275, + 11275,11685,11685,11685,11685,11685,11685,11685,11686,11686, + 11686,11686,11686,11687,11687,11687,11687,11687,11687, 5978, + 11275,11275,11688,11689,11690,11690,11690,11275,11691,11275, + 11275,11691,11275, 6282, 6282, 6282, 6282, 6282,11275,11275, + 6282,11275,11275, 6282, 6282, 6282, 6282,11275, 6282, 6282, + + 6282,11275,11275,11275, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282,11275,11275,11275, 6282, 6282,11692, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282,11275, 6282, 6282,11689, + 6282, 6282,11275, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 11275,11275, 6282,11275,11275, 6282, 6282, 6282,11275,11275, + 11275, 6282, 6282, 6282, 6282, 6282, 6282,11693,11693,11693, + 11693, 6282, 6282, 6282, 6282, 6282,11275,11275, 6378, 6378, + 6378, 6378, 6378, 6378,11275, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282,11275,11275,11275,11275, 6282, 6282, + + 6282, 6282, 6282,11275, 6282, 6282, 6282, 6282,11275, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282,11275, + 6282, 6282,11275, 6282, 6282, 6282,11275,11275,11275,11275, + 6282, 6282,11275, 6282,11275, 6282, 6282,11275, 6282, 6282, + 11275,11275, 6282, 6282, 6282, 6282, 6282, 6282,11275, 6282, + 11275,11275, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282,11275,11275, 6282, 6282, 6282, 6282, + 11275,11275, 6282, 6282,11275, 6282, 6282, 6282, 6282, 6282, + 11275, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + + 6282,11275,11275,11275, 6282, 6282, 6282,11275,11275, 6282, + 11275, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282,11275, 6282,11275, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282,11275, 6282, 6282, 6282, + 6282,11275,11275, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282,11275,11275, 6282,11275, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 11275,11275,11275, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282,11275, + 11275,11275,11275,11275, 6282, 6282, 6282,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 11275, 6282, 6282,11275, 6282, 6282, 6282, 6282,11275, 6282, + 6282, 6282,11275, 6282, 6282,11275,11275,11275,11275,11694, + 11694, 5978, 5978, 5978,11275,11275,11275,11275,11275,11275, + 11695,11695,11695,11695, 5978,11693, 5978, 5978, 5978, 5978, + 11275,11275,11696,11697,11275,11275,11275,11275,11275,11275, + + 11275,11275,11698,11698,11698,11698,11698,11698,11698,11275, + 11699,11699,11699,11699,11699,11699,11699,11699,11700,11701, + 11702,11703,11703,11703,11704,11275,11704, 6727, 6727,11275, + 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727,11275, + 11275,11275, 6727, 6727,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11705,11705,11275,11275,11275, + 11275,11706,11706,11706,11706,11706,11706,11706,11706,11706, + 11706,11706,11706,11707,11275,11275,11275,11275,11275,11275, + 11275,11708,11709,11710,11710,11275, 6727,11275,11275, 6727, + 6727, 6727, 6727, 6727, 6727, 6727,11275,11711,11711,11711, + + 11711,11711,11711,11711,11711,11711,11711,11711,11711,11711, + 11711,11711,11711,11275, 6727, 6727, 6727, 6727, 6727, 6727, + 6727, 6727, 6727, 6727, 6727, 6727,11275,11712, 6727, 6727, + 6727, 6727, 6727, 6727, 6727, 6727, 6727,11693,11693,11693, + 11693,11693,11693,11693,11693,11693,11693, 6727, 6727, 6727, + 6727, 6727,11713,11713,11713,11714,11714, 6727, 6727, 6727, + 6727,11275, 6727,11275,11275, 6727,11275, 6727, 6727,11275, + 6727, 6727, 6727,11275, 6727, 6727,11275, 6727, 6727, 6727, + 6727, 6727,11275,11275, 6727, 6727, 6727, 6727, 6727, 6727, + 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, + + 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, + 6727,11275, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, + 11275, 6727, 6727, 6727, 6727, 6727, 6727,11275, 6727, 6727, + 6727, 6727, 6727, 6727, 6727, 6727, 6727,11715, 6727, 6727, + 6727,11710,11712, 6727, 6727, 6727, 6727, 6727, 6727, 6727, + 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, + 6727, 6727, 6727, 6727,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275, 6727, 6727, 6727, + 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, + 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, + + 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727,11712, + 6727, 6727,11275,11275,11275,11716,11275,11275, 6727, 6727, + 6727,11275,11275,11717,11717, 7025, 7025, 7025, 7025, 7025, + 7025,11711, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025,11275,11718,11718,11275,11718, + + 11275,11718,11718,11275,11718,11718,11719,11275,11275,11720, + 11275,11275,11275,11721,11721,11275,11275,11721,11275,11275, + 11275,11275,11275,11722,11275,11723,11275,11724,11275,11275, + 11725,11275,11275,11275,11725,11726,11275,11727,11275, 7025, + 11275,11275,11275,11728,11728,11728,11728,11728,11729,11729, + 11729,11730,11730,11730,11730, 7025,11275,11731,11275,11732, + 11732,11733,11733, 7263, 7263, 7263, 7263,11275, 7263, 7263, + 7263, 7263, 7263, 7263, 7263, 7263,11275,11275,11275,11275, + 11275, 7263, 7263,11275, 7263, 7263,11711,11711, 7263, 7263, + 7263, 7263, 7263,11275,11275,11275,11275, 7263, 7263, 7263, + + 11275,11275, 7263, 7263, 7263, 7263,11275, 7263, 7263, 7263, + 7263, 7263,11734, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 11275, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263,11735, + 11735,11735,11735,11735, 7263, 7263, 7263, 7263, 7263,11275, + 7340, 7340, 7340, 7340, 7340, 7340, 7263,11275, 7263, 7263, + 7263, 7263, 7263,11275, 7263,11275, 7263,11275, 7263, 7263, + 7263,11275, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 7263,11275,11275, 7263, 7263,11275, 7263, 7263, 7263, 7263, + 11275,11275, 7263, 7263, 7263,11275, 7263,11275,11275,11275, + 7263, 7263, 7263, 7263, 7263, 7263,11275,11275,11275,11275, + + 11275,11275,11275, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263, 7263, 7263,11275,11275,11275,11275,11275, + 11275,11275, 7263, 7263, 7263, 7263,11275, 7263, 7263, 7263, + 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263, 7263,11275,11275,11275, 7263, 7263,11275, + 11275,11275, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263,11275, 7263,11275,11275, 7263, 7263, 7263, + 7263,11275,11275,11275, 7263, 7263, 7263,11275, 7263, 7263, + 7263, 7263, 7263,11732,11734, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263,11275, + + 7263, 7263,11275,11275,11275, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263, 7263, 7263, 7263,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275, 7263, + 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263, 7263,11734, 7263, 7263, 7263, 7263, 7263, + 11275, 7263,11275,11275, 7263, 7263, 7263, 7263, 7263,11275, + 11275,11275,11275,11736,11736,11275,11736,11736,11736, 7025, + 7025, 7025,11275,11275,11275,11275,11737,11737,11737,11737, + + 7025,11735, 7025, 7025, 7025, 7025,11275,11275,11738,11739, + 11275,11275,11275,11275,11275,11275,11275,11275,11740,11740, + 11740,11740,11740,11740,11275,11275,11741,11741,11741,11275, + 11741,11741,11742,11743,11744,11744,11745,11746,11746,11275, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640,11746,11745, 7656, 7656,11275,11275, + 7656,11275,11275, 7656, 7656, 7656, 7656, 7656, 7656, 7656, + 7656, 7656, 7656,11275,11275,11275,11275,11275,11275,11275, + 11747,11747,11747,11747,11747,11275,11275,11275,11275,11275, + 11275,11275,11748,11749,11750,11750,11275, 7656, 7656, 7656, + + 11275,11275, 7656, 7656,11751,11751,11751,11751,11751,11751, + 11751,11751,11751,11751,11751,11751,11751,11751,11751,11751, + 11751,11751,11751,11751,11751,11751,11751, 7656,11275, 7656, + 7656, 7656, 7656, 7656, 7656, 7656,11275,11275, 7656, 7656, + 7656, 7656, 7656, 7656, 7656, 7656,11735,11735,11735,11735, + 11735,11735,11735,11735,11735,11735,11735,11735, 7656, 7656, + 7656,11275,11752,11752,11752,11753,11753,11753, 7656, 7656, + 7656,11275,11275, 7656,11275, 7656, 7656, 7656, 7656,11275, + 7656, 7656, 7656,11275,11275,11275,11275,11275,11275,11275, + 11275, 7656, 7656, 7656, 7656,11275, 7656, 7656, 7656, 7656, + + 7656, 7656, 7656,11754, 7656, 7656, 7656, 7656, 7656, 7656, + 7656, 7656, 7656, 7656, 7656,11755, 7656, 7656, 7656, 7656, + 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, + 7656, 7656, 7656, 7656, 7656, 7656,11756,11275, 7656,11275, + 11750, 7656, 7656,11275,11275,11275,11754, 7656,11275, 7656, + 7656, 7656,11275,11275,11275, 7656, 7656, 7656, 7656, 7656, + 7656, 7656, 7656, 7656, 7656, 7656, 7656,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275, 7656, 7656, + 7656, 7656, 7656, 7656, 7656,11275,11275, 7656, 7656, 7656, + 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, + + 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, + 7656, 7656, 7656, 7656,11275, 7656,11275,11275, 7656, 7656, + 7656,11275,11757,11757, 7924, 7924, 7924,11751, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924,11275,11758,11758,11758,11758,11275,11758, + 11758,11759,11275,11760,11275,11275,11275,11275,11761,11275, + 11761,11275,11275,11275,11275,11762,11275,11763,11275,11275, + 11275,11275,11275,11764,11765,11275, 7924,11275,11275,11275, + + 11766,11766,11275,11275,11767,11767,11768,11768,11768, 7924, + 11275,11275,11275,11769,11769,11770,11770, 8117, 8117, 8117, + 11275, 8117, 8117,11275, 8117, 8117, 8117, 8117,11275,11275, + 11275, 8117, 8117,11751,11751, 8117, 8117, 8117, 8117,11275, + 11275, 8117, 8117,11275, 8117, 8117, 8117, 8117, 8117, 8117, + 8117, 8117, 8117, 8117, 8117, 8117,11275,11275, 8117, 8117, + 8117, 8117, 8117, 8117, 8117, 8117,11771,11771,11771,11771, + 11771, 8117, 8117,11275,11275,11275, 8117,11275,11275, 8179, + 8179, 8179, 8179, 8117, 8117, 8117, 8117, 8117,11275, 8117, + 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117,11275,11275, + + 11275, 8117,11275,11275,11275,11275,11275, 8117, 8117, 8117, + 11275,11275, 8117,11275,11275, 8117, 8117, 8117, 8117, 8117, + 11275,11275,11275,11275,11275, 8117, 8117, 8117, 8117, 8117, + 8117, 8117,11772, 8117, 8117, 8117,11275, 8117, 8117, 8117, + 11275, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, + 8117, 8117, 8117, 8117, 8117, 8117,11275, 8117, 8117,11275, + 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117,11275, 8117, + 11275, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, + 8117,11769, 8117, 8117, 8117,11275,11772, 8117,11275, 8117, + 8117, 8117, 8117,11275, 8117, 8117, 8117, 8117, 8117,11275, + + 11275, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, + 8117, 8117,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275, 8117, 8117, + 8117, 8117, 8117, 8117, 8117,11275, 8117, 8117, 8117, 8117, + 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, + 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, + 8117, 8117, 8117, 8117, 8117, 8117, 8117,11275,11275, 8117, + 8117, 8117, 8117, 8117, 8117, 8117,11275,11275,11773,11275, + 11773,11275,11773,11773, 7924,11275,11275,11275,11275,11774, + 11774,11774,11771, 7924, 7924, 7924,11275,11275,11775,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11776, + 11776,11776,11776,11776,11776,11275,11275,11777,11777,11777, + 11778,11779,11780,11780,11781,11782,11275,11275,11782,11275, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 11781, 8451,11275,11275, 8451, 8451, 8451,11275,11275, 8451, + 8451, 8451, 8451, 8451, 8451,11275,11275,11275,11275,11275, + 11275,11275,11783,11783,11783,11783,11275,11275,11275,11275, + 11275,11275,11275,11784,11784,11785,11786,11786, 8451, 8451, + 8451, 8451,11787,11787,11787,11787,11787,11275,11787,11787, + + 11787,11787,11787,11787,11787,11787,11787,11787,11787,11787, + 11787,11787,11787,11787,11787,11787,11275, 8451,11275,11275, + 8451, 8451, 8451,11275, 8451, 8451, 8451, 8451, 8451,11771, + 11771,11771,11771,11771,11275,11771,11771,11771,11771,11771, + 11771, 8451, 8451,11275,11275,11275,11788,11788,11788,11788, + 11789,11789,11789, 8451,11275,11275,11275,11275, 8451,11275, + 11275, 8451,11275,11275,11275, 8451, 8451,11275,11275, 8451, + 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, + 8451, 8451, 8451, 8451,11275, 8451, 8451, 8451, 8451,11790, + 8451, 8451,11275, 8451, 8451, 8451, 8451, 8451, 8451, 8451, + + 8451, 8451, 8451, 8451,11791, 8451, 8451, 8451,11275,11792, + 8451,11786, 8451, 8451,11275,11275,11275,11275, 8451, 8451, + 8451,11275,11275,11275,11275, 8451, 8451, 8451, 8451, 8451, + 8451, 8451, 8451, 8451, 8451,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275, 8451, 8451, 8451, 8451, + 8451, 8451,11275,11275,11793, 8451, 8451, 8451, 8451, 8451, + 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, + 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, + 8451, 8451,11275, 8451, 8451,11275,11275,11794,11794, 8689, + 8689,11787, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689,11795,11795,11796,11795, + + 11795,11797,11275,11798,11275,11275,11275,11799,11275,11275, + 11800,11275,11275,11275,11275,11275,11275,11801,11275,11275, + 11275,11802,11275,11803,11804, 8689,11275,11275,11275,11805, + 11805,11806,11806,11807,11807,11807, 8689,11275,11808,11808, + 11809,11809, 8842, 8842, 8842, 8842,11275, 8842, 8842, 8842, + 8842, 8842,11275, 8842, 8842,11787,11787,11275, 8842,11275, + 11275,11275,11275, 8842,11275,11275,11275,11275, 8842, 8842, + 8842, 8842, 8842,11275, 8842, 8842,11275, 8842, 8842, 8842, + 8842, 8842,11275, 8842,11810,11810,11810,11810,11275, 8842, + 8842,11275, 8892, 8892, 8892, 8842, 8842, 8842,11275,11275, + + 11275, 8842,11275, 8842,11275, 8842, 8842,11275, 8842, 8842, + 8842, 8842,11275,11275, 8842, 8842, 8842,11275,11275, 8842, + 8842, 8842, 8842,11275,11275,11275,11275,11275, 8842, 8842, + 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842,11275, + 11275, 8842,11275, 8842, 8842, 8842, 8842, 8842, 8842, 8842, + 8842, 8842, 8842, 8842,11275, 8842,11275, 8842, 8842, 8842, + 11275,11275,11275, 8842, 8842,11275, 8842, 8842,11275, 8842, + 8842,11811, 8842, 8842, 8842, 8842,11275, 8842, 8842,11808, + 8842, 8842,11275,11275,11275, 8842, 8842, 8842, 8842, 8842, + 8842,11275, 8842,11275,11275,11275, 8842, 8842, 8842, 8842, + + 8842, 8842, 8842, 8842,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275, 8842, 8842, 8842, 8842, 8842, 8842,11275, 8842, 8842, + 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, + 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, + 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, + 11275, 8842, 8842,11275,11812,11275,11812, 8689,11275,11275, + 11275,11813,11813,11813,11810, 8689, 8689, 8689,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11814, + 11814,11814,11814,11814,11275,11815,11816,11817,11818,11818, + + 11819,11275, 9102,11275, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102,11819, 9123,11275,11275,11275,11275, 9123,11275, + 11275, 9123, 9123,11275, 9123, 9123,11275,11275,11275,11275, + 11275,11275,11275,11275,11820,11820,11820,11275,11275,11275, + 11275,11275,11275,11275,11821,11822,11823,11824,11275, 9123, + 11275, 9123, 9123,11825,11825,11825,11825,11825,11825,11825, + 11825,11825,11825,11825,11825,11825,11825,11825,11825,11825, + 11825,11825,11825,11825,11825,11825,11825, 9123, 9123, 9123, + 9123, 9123, 9123,11810,11810,11810,11810,11810,11810,11275, + + 11275,11810,11810,11810,11810, 9123,11275,11275,11275,11275, + 11275,11826,11826,11826,11827,11827,11827, 9123,11275,11275, + 9123,11275,11275,11275,11275, 9123,11275, 9123, 9123, 9123, + 9123, 9123, 9123, 9123,11275,11275, 9123, 9123, 9123, 9123, + 9123, 9123, 9123, 9123, 9123,11275,11275,11275,11275, 9123, + 9123, 9123, 9123, 9123, 9123, 9123, 9123,11828,11275, 9123, + 9123,11275,11829,11830,11275, 9123,11824, 9123,11275,11275, + 9123, 9123,11275,11275, 9123, 9123, 9123, 9123, 9123, 9123, + 11275,11275,11275,11275,11275,11275,11275, 9123, 9123, 9123, + 9123, 9123, 9123,11831, 9123, 9123, 9123, 9123, 9123, 9123, + + 9123, 9123, 9123, 9123, 9123, 9123, 9123, 9123, 9123, 9123, + 9123, 9123, 9123, 9123, 9123, 9123, 9123, 9123, 9123,11275, + 9123, 9123,11832,11832, 9324,11825, 9324, 9324, 9324, 9324, + 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, + 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, + 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, + 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, + 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, + 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, + 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, + + 9324, 9324, 9324, 9324, 9324, 9324,11833,11833,11834,11275, + 11833,11835,11836,11275,11275,11275,11837,11275,11838,11275, + 11275,11275,11275,11839,11275,11275,11275,11840,11841,11275, + 9324,11275,11275,11275,11275,11842,11843,11844,11844, 9324, + 11845,11275,11846,11846, 9444, 9444,11275, 9444, 9444, 9444, + 11275,11275,11275, 9444, 9444,11825,11825, 9444,11275,11275, + 11275,11275,11275,11275,11275, 9444, 9444, 9444, 9444,11275, + 9444, 9444, 9444, 9444,11275,11847,11847,11847, 9444,11275, + 9480, 9480, 9480, 9444, 9444, 9444,11275, 9444,11275, 9444, + 9444, 9444, 9444, 9444,11275,11275, 9444, 9444, 9444,11275, + + 11275,11275,11275, 9444, 9444, 9444, 9444, 9444, 9444, 9444, + 9444,11275,11275, 9444, 9444, 9444, 9444, 9444, 9444, 9444, + 9444, 9444, 9444,11275,11275,11275,11275,11275, 9444, 9444, + 9444, 9444,11275, 9444, 9444,11848,11275, 9444, 9444,11275, + 9444, 9444, 9444,11845, 9444, 9444, 9444,11275, 9444, 9444, + 9444,11275,11275, 9444, 9444, 9444,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275, 9444, + 9444, 9444, 9444, 9444, 9444, 9444, 9444, 9444, 9444, 9444, + 9444, 9444, 9444, 9444, 9444, 9444, 9444, 9444, 9444, 9444, + 9444, 9444, 9444, 9444, 9444, 9444,11275, 9444, 9444, 9444, + + 9444, 9444, 9444, 9444, 9444, 9444, 9444,11275,11849, 9324, + 11275,11275,11275,11850,11850,11847, 9324, 9324, 9324,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11851,11851,11851,11851,11275,11275,11852,11853,11854, + 11275,11855,11275, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643,11855, 9666,11275,11275,11275, + 9666, 9666,11275,11275,11275,11275,11275,11856,11275,11275, + 11275,11275,11275,11275,11857,11275,11858,11859,11860,11861, + 11275,11275,11275, 9666, 9666,11275,11862,11862,11862,11862, + + 11862,11862,11862,11862,11862,11862,11275,11275,11862,11862, + 11862,11862,11862,11862,11862,11862,11862,11862,11862,11862, + 9666, 9666, 9666, 9666, 9666,11847,11847,11847,11275,11275, + 11847,11847,11847,11847,11847,11847, 9666,11275,11275,11275, + 11275,11275,11863,11863,11863,11863,11864,11865, 9666,11275, + 11275,11275, 9666, 9666, 9666,11275,11275, 9666, 9666, 9666, + 9666,11275,11275,11275,11866, 9666,11867, 9666,11275,11275, + 11275,11275, 9666, 9666,11275,11275, 9666, 9666,11275,11868, + 9666, 9666,11275,11275,11860,11275,11275,11869,11275,11275, + 9666,11275,11275, 9666,11275, 9666, 9666, 9666,11275,11275, + + 11275,11275,11275,11275,11275,11870, 9666, 9666, 9666, 9666, + 9666, 9666, 9666, 9666, 9666, 9666, 9666, 9666, 9666, 9666, + 9666, 9666, 9666, 9666, 9666,11275,11275,11871,11275,11275, + 9666,11872,11872,11862, 9833, 9833, 9833, 9833, 9833, 9833, + 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, + 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, + 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, + 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, + 9833,11873,11275,11874,11875,11275,11275,11275,11275,11275, + 11275,11275,11275,11275, 9833,11275,11876,11877,11878,11878, + + 9833,11879,11275,11880,11880, 9905, 9905, 9905, 9905,11275, + 9905,11862,11275, 9905,11275,11275,11275,11275,11275,11275, + 9905, 9905,11275, 9905, 9905, 9905, 9905,11881,11881,11881, + 11275, 9931, 9931, 9931, 9905, 9905,11275, 9905, 9905, 9905, + 11275,11275, 9905,11275,11275,11275, 9905, 9905, 9905, 9905, + 9905, 9905, 9905,11275,11275, 9905,11275, 9905, 9905, 9905, + 9905,11275,11275,11275,11275, 9905, 9905, 9905,11275, 9905, + 11275,11882, 9905, 9905,11275, 9905,11879,11275, 9905, 9905, + 9905,11275,11275, 9905, 9905,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275, 9905, 9905, 9905, + + 9905, 9905, 9905, 9905, 9905, 9905, 9905, 9905, 9905, 9905, + 9905, 9905, 9905, 9905, 9905, 9905, 9905,11275, 9905,11275, + 11275, 9905,11883,11275,11275,11275,11884,11884,11881,11885, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11886,11886,11275,11275,11275,11275,11887, + 11275,11888,11275,11275,10054,10054,10054,10054,10054,10054, + 11275,11275,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,11888,11275,11275,11275,10075,11275, + 11275,11275,11275,11889,11275,11275,11275,11275,11275,11890, + 11891,11275,11892,10075,10075,11862,11862,11862,11862,11862, + + 11862,11862,11862,11862,11862,11862,11862,11862,11862,11275, + 11275,11275,11862,11862,11862,11862,11862,11275,10075,10075, + 10075,10075,10075,11881,11881,11881,11275,11881,11275,11881, + 11275,11881,11881,11881,11275,11275,11275,11275,11893,11894, + 11895,11896,11894,11894,11894,11896,11896,11896,10075,11275, + 11275,10075,10075,11275,10075,10075,10075,11897,11275,10075, + 11898,11275,10075,11275,11275,11275,11275,10075,10075,10075, + 11899,11275,10075,10075,11275,11900,11901,11275,11275,11275, + 11275,11275,11275,11902,11275,11275,11275,11275,11903,10075, + 10075,10075,11275,11275,11275,11275,11275,11275,11275,11904, + + 11275,10075,10075,10075,10075,10075,10075,10075,10075,10075, + 10075,10075,10075,10075,11905,11275,11275,11275,10075,11906, + 11906,11862,10221,10221,10221,10221,10221,10221,10221,10221, + 10221,10221,10221,10221,10221,10221,10221,10221,10221,10221, + 10221,10221,10221,10221,10221,10221,10221,10221,10221,10221, + 10221,10221,10221,10221,10221,10221,10221,11275,11907,11275, + 11908,11275,11275,11275,11275,11275,11275,11275,11909,10221, + 11910,11910,10272,10272,10272,11275,10272,11275,10272,11275, + 11275,11275,11275,11275,11275,10272,10272,11275,10272,10272, + 10272,11911,11911,11911,11912,11912,11275,10272,10272,10272, + + 10272,11275,11275,10272,10272,10272,10272,10272,10272,10272, + 10272,11275,10272,11275,10272,10272,10272,11275,10272,11913, + 11275,10272,10272,11914,11275,11915,11275,10272,11275,10272, + 10272,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,10272,10272,10272,10272,10272,10272,10272,10272, + 10272,10272,10272,10272,10272,10272,10272,11916,11275,11917, + 11917,11911,11918,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11919,11275,11275, + 11275,11275,10075,11275,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,11275,11920,11275,10384,10384,10384, + + 10384,10384,11275,10075,11275,11275,10075,11275,11275,11275, + 11275,11275,11275,11275,11275,11921,11922,11275,11275,11923, + 11923,11923,11923,11923,11923,11275,11275,11923,11923,11923, + 11275,11923,11923,11924,11923,11923,11923,11923,11923,10075, + 11925,11275,11926,10075,10075,11911,11275,11911,11275,11911, + 11275,11911,11275,11275,11275,11275,11927,11928,11929,11929, + 11928,11928,11928,11927,11928,11930,11930,11275,11275,10075, + 10075,10075,10075,11931,11275,11275,11275,11275,10075,10075, + 11275,11932,11275,10075,11275,11933,11934,11275,11275,11275, + 11275,11275,11275,11935,11275,10075,10075,10075,11936,11275, + + 11275,11275,11275,11275,10075,10075,11937,10075,10075,10075, + 10075,10075,10075,10075,11938,11275,11275,10075,11923,11939, + 11939,10521,10521,10521,10521,10521,10521,10521,10521,10521, + 10521,10521,10521,10521,10521,10521,10521,10521,10521,10521, + 10521,10521,11275,11940,11275,11275,11941,11275,11275,11275, + 11275,11942,10521,11943,11943,10555,10555,11275,11944,10555, + 11275,11275,11275,11275,11275,11275,11275,10555,10555,11945, + 11275,11275,11275,11275,11275,10555,10555,11275,11275,10555, + 10555,10555,10555,10555,10555,11275,10555,10555,10555,11275, + 10555,11275,11946,10555,11947,10555,11275,10555,10555,11275, + + 11275,11275,11275,11275,11275,11275,10555,10555,10555,10555, + 10555,10555,10555,10555,10555,10555,10555,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11948,11275,11275,11275,11275,11275,11275,10638,10638, + 11949,11275,10638,10638,10638,11275,10638,10638,10638,10638, + 10638,10638,10638,11275,11950,10075,11275,11275,11275,11275, + 11275,11275,11951,11275,11952,11923,11923,11923,11923,11923, + 11923,11953,11923,11275,11923,11275,11923,11954,11275,11275, + 11923,11275,11923,11923,11923,11923,10075,11955,11275,11956, + 11275,11957,11958,11945,11275,11945,11945,11959,11275,11275, + + 11959,11959,11959,11959,11959,11960,11960,11961,11962,11962, + 11962,11275,10075,11275,11275,11275,11963,11275,10075,11964, + 11275,11275,10075,11965,11275,10075,11275,11966,11275,11275, + 11275,11275,11275,11275,11967,11275,10075,11275,11968,11275, + 11275,11275,11275,10075,10075,11969,11275,10075,10075,10075, + 10075,10075,11970,11275,11275,11923,11971,11971,10758,10758, + 10758,10758,10758,10758,10758,10758,10758,10758,10758,11972, + 11275,11275,11973,11275,11275,11275,11275,11275,11974,11974, + 10780,11275,10780,11275,11275,11275,11275,11275,11275,11945, + 10780,10780,11275,11275,10780,10780,11275,11975,11275,10780, + + 10780,11275,10780,11976,11275,10780,11977,10780,11275,11275, + 11275,11275,11275,10780,11275,10780,10780,10780,10780,10780, + 10780,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11978,11275,11275,11275,11275,11275, + 10840,10840,10840,11275,10840,11275,10840,11979,10840,11275, + 10840,10840,10840,10840,11275,11980,11275,11275,11275,11275, + 11275,11275,11981,11982,11275,11923,11923,11275,11923,11275, + 11275,11275,11275,11983,11275,11923,11275,11923,11275,11923, + 11275,11923,11275,11275,10075,11275,11984,11275,11985,11275, + 11945,11945,11986,11275,11986,11986,11275,11987,11987,11987, + + 11988,11989,11989,11989,11275,11275,10075,11275,11990,11275, + 11991,11275,10075,11275,11992,11275,11275,11275,11275,11993, + 11993,11275,10075,11275,11275,10075,10075,10075,10075,10075, + 10075,11275,11275,11994,11994,10935,10935,10935,10935,10935, + 10935,10935,10935,11275,11275,11275,11995,11275,11995,11275, + 11275,11275,11275,11275,11275,11945,10949,10949,10949,11996, + 10949,11275,11275,11275,11275,10949,11275,10949,10949,10949, + 10949,10949,11275,11275,11275,11275,11275,11275,11997,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11998,11275,11998,11275,10990,11275,10990,11275,10990,11275, + + 10990,11998,11275,11275,11275,11275,11275,11275,11999,11999, + 11275,11999,11275,11999,11999,10075,11275,11945,11275,11986, + 11275,11275,11986,11986,11986,11275,11987,11987,11987,11989, + 11989,11989,11275,12000,11990,11275,11991,11275,12001,11275, + 11275,11275,11275,11275,11993,11993,11275,11275,10075,12002, + 10075,11275,10935,10935,10935,11275,11275,10949,10949,11275, + 11275,11275,11275,11275,11275,11275,10949,11275,10949,10949, + 11275,11275,11275,11275,11275,11275,11997,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,10990,11275, + 10990,10990,11275,11275,11275,11999,11999,11275,11999,11999, + + 10075,11275,11945,11275,11275,11986,11986,11986,11987,11987, + 11987,11989,11989,12000,11275,12001,11275,11275,11275,11993, + 11993,11275,11275,12002,11275,11275,10935,10949,10949,11275, + 11275,11275,10949,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,10990,10990, + 11275,11275,11275,11275,11275,11999,11275,11275,11275,11945, + 11986,11986,11986,11987,11987,11989,12003,11275,11275,11275, + 11993,11275,11275,11275,10949,11275,11275,11275,10949,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,10990,11275,11275,11275,11275,11999,11275,11986, + + 11986,11987,12003,11275,11275,11275,11993,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,10990, + 11275,11999,11275,11986,12004,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,10990,11999,11275,12004,11275,11275, + 11275,11275,11275,11275,11275,11275,10990,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,12005,11275, + 11275,11275,11275,11275,12005,11275,11275,11275,11275,11275, + 11275,12006,12006,11275, 0,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275 + } ; + +static yyconst flex_int16_t yy_nxt[45258] = + { 0, + 11275,11275, 183, 184, 185, 183, 212, 186, 187, 188, + 189, 190, 191, 233, 244, 233, 244, 414, 192, 201, + 202, 203, 201, 202, 203, 212, 206, 207, 414, 193, + 212, 194, 208, 206, 207, 248, 647, 648, 248, 208, + 212, 211, 212, 211, 211, 272, 212, 213, 899, 214, + 212, 272, 218, 218, 218, 218, 2909, 212, 195, 212, + 219, 371, 196, 211, 212, 211, 211, 415, 208, 213, + 416, 214, 233, 234, 204, 233, 234, 204, 415,11275, + 223, 209, 253, 254, 255, 253, 254, 255, 209, 197, + 198, 199, 200, 183, 184, 185, 183, 215, 186, 187, + + 188, 189, 190, 191, 212, 223, 366, 205, 220, 192, + 205, 224, 371, 218, 218, 218, 218, 417, 342, 215, + 193, 219, 194, 226, 227, 228, 226, 235, 216, 1758, + 235, 229, 226, 227, 228, 226, 224, 248, 367, 221, + 229, 866, 366, 212, 233, 234, 238, 342, 248, 195, + 216, 866, 239, 196, 257, 258, 257, 258, 236, 381, + 237, 236, 811, 237, 812, 233, 234, 238, 818, 220, + 240, 819, 241, 239, 367, 769, 770, 257, 261, 230, + 197, 198, 199, 200, 262, 249, 233, 234, 230, 233, + 234, 240, 245, 241, 239, 245, 249, 239, 381, 242, + + 221, 257, 261, 568, 569, 2911, 257, 261, 262, 259, + 231, 259, 240, 264, 241, 240, 250, 241, 251, 231, + 242, 257, 261, 312, 313, 314, 312, 250, 264, 251, + 257, 267, 263, 257, 267, 268, 519, 269, 268, 1138, + 269, 246, 257, 316, 246, 292, 445, 292, 293, 317, + 293, 293, 293, 293, 293, 293, 263, 292, 570, 292, + 293, 265, 293, 293, 293, 293, 293, 293, 312, 313, + 314, 312, 257, 316, 776, 777, 265, 445, 1298, 317, + 322, 323, 324, 322, 520, 270, 1262, 294, 270, 278, + 279, 278, 278, 769, 770, 446, 1200, 318, 1263, 294, + + 322, 323, 324, 322, 800, 515, 360, 361, 280, 280, + 280, 280, 280, 280, 208, 208, 281, 281, 281, 801, + 613, 327, 328, 329, 327, 895, 446, 318, 319, 208, + 320, 416, 327, 328, 329, 327, 325, 515, 568, 569, + 866, 353, 354, 355, 353, 282, 278, 279, 278, 278, + 519, 335, 336, 337, 335, 516, 325, 866, 319, 338, + 320, 362, 1297, 446, 446, 280, 280, 280, 280, 280, + 280, 769, 770, 281, 281, 281, 1760, 330, 417, 331, + 332, 335, 336, 337, 335, 565, 517, 516, 330, 338, + 331, 332, 363, 570, 364, 565, 1138, 356, 520, 611, + + 2932, 612, 282, 284, 285, 286, 284, 339, 613, 287, + 333, 353, 354, 355, 353, 769, 770, 288, 517, 288, + 289, 333, 289, 289, 289, 289, 289, 289, 357, 825, + 826, 290, 1709, 566, 1710, 360, 361, 339, 340, 344, + 345, 346, 344, 566, 820, 347, 2941, 348, 344, 345, + 346, 344, 510, 511, 347, 843, 348, 512, 843, 291, + 284, 285, 286, 284, 825, 826, 287, 356, 340, 498, + 498, 498, 498, 1157, 288, 866, 288, 289, 986, 289, + 289, 289, 289, 289, 289, 649, 866, 611, 290, 612, + 362, 2942, 390, 870, 349, 350, 870, 391, 357, 392, + + 393, 390, 822, 349, 350, 823, 391, 513, 392, 393, + 813, 489, 2948, 490, 776, 777, 291, 295, 296, 297, + 295, 363, 1138, 364, 499, 500, 351, 872, 489, 1160, + 490, 298, 383, 298, 299, 351, 299, 299, 299, 299, + 299, 299, 973, 384, 761, 384, 385, 394, 385, 385, + 385, 385, 385, 385, 876, 1695, 394, 386, 814, 974, + 877, 491, 522, 523, 524, 525, 1696, 398, 399, 400, + 398, 2968, 878, 300, 879, 401, 776, 777, 491, 301, + 302, 303, 304, 305, 890, 387, 306, 890, 971, 815, + 307, 816, 492, 308, 493, 2969, 309, 310, 373, 374, + + 373, 373, 398, 399, 400, 398, 873, 972, 874, 492, + 401, 493, 375, 383, 375, 376, 388, 376, 376, 376, + 376, 376, 376, 402, 384, 933, 384, 385, 938, 385, + 385, 385, 385, 385, 385, 825, 826, 2534, 386, 405, + 406, 407, 405, 405, 406, 407, 405, 408, 578, 579, + 934, 408, 957, 934, 377, 957, 403, 2535, 402, 915, + 378, 411, 411, 411, 411, 2985, 387, 825, 826, 412, + 411, 411, 411, 411, 466, 467, 468, 466, 412, 825, + 826, 469, 470, 825, 826, 379, 373, 374, 373, 373, + 916, 403, 917, 647, 648, 409, 580, 388, 1109, 409, + + 375, 1109, 375, 376, 1201, 376, 376, 376, 376, 376, + 376, 466, 467, 468, 466, 510, 511, 413, 469, 470, + 512, 522, 523, 524, 525, 2986, 413, 581, 930, 581, + 471, 466, 467, 468, 466, 647, 648, 931, 469, 470, + 360, 361, 377, 466, 467, 468, 466, 486, 378, 932, + 469, 470, 472, 473, 474, 472, 489, 1202, 490, 469, + 475, 472, 473, 474, 472, 360, 361, 471, 469, 475, + 513, 1282, 486, 379, 183, 184, 185, 183, 1684, 186, + 187, 395, 189, 190, 191, 1685, 489, 471, 490, 761, + 192, 498, 498, 498, 498, 487, 1283, 578, 579, 471, + + 798, 193, 798, 194, 1099, 494, 495, 496, 476, 547, + 547, 547, 547, 502, 503, 504, 502, 476, 1067, 1068, + 487, 505, 547, 547, 547, 547, 363, 608, 488, 609, + 396, 1138, 813, 2987, 196, 494, 495, 496, 1077, 1078, + 502, 503, 504, 502, 1161, 580, 499, 500, 505, 1231, + 798, 363, 1232, 488, 551, 551, 551, 551, 811, 799, + 812, 197, 198, 199, 200, 183, 184, 185, 183, 506, + 186, 187, 395, 189, 190, 191, 581, 610, 581, 905, + 813, 192, 548, 820, 895, 549, 602, 603, 604, 602, + 769, 770, 193, 761, 194, 548, 506, 1069, 549, 811, + + 507, 812, 508, 602, 603, 604, 602, 1070, 611, 760, + 612, 813, 761, 813, 843, 762, 763, 843, 552, 866, + 764, 396, 553, 765, 1720, 196, 766, 507, 1721, 508, + 835, 835, 835, 835, 835, 835, 866, 554, 776, 777, + 821, 822, 2573, 846, 823, 846, 846, 846, 846, 846, + 846, 2574, 197, 198, 199, 200, 418, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 430, 423, 423, 423, 431, 423, 423, 432, 432, 432, + 432, 432, 432, 423, 423, 433, 434, 435, 423, 418, + 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, + + 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, + 436, 436, 436, 430, 437, 430, 438, 439, 440, 436, + 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, + 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, + 436, 436, 436, 436, 436, 441, 442, 443, 444, 448, + 449, 184, 450, 449, 866, 451, 452, 453, 454, 455, + 456, 617, 618, 617, 619, 866, 457, 212, 212, 212, + 212, 880, 880, 880, 880, 1112, 1113, 458, 866, 459, + 212, 212, 212, 212, 880, 880, 880, 880, 866, 551, + 551, 551, 551, 880, 881, 880, 880, 1133, 1134, 212, + + 212, 212, 212, 212, 212, 212, 460, 845, 212, 845, + 461, 572, 572, 825, 826, 556, 557, 620, 556, 557, + 1120, 558, 559, 585, 558, 559, 212, 212, 212, 212, + 1236, 1236, 870, 573, 573, 870, 585, 462, 463, 464, + 465, 448, 449, 184, 450, 449, 2529, 451, 452, 453, + 454, 455, 456, 552, 586, 587, 2637, 553, 457, 560, + 561, 562, 560, 561, 562, 574, 574, 586, 1753, 458, + 1120, 459, 554, 1262, 574, 574, 776, 777, 575, 575, + 574, 574, 587, 1257, 1258, 1263, 588, 608, 779, 609, + 576, 576, 563, 1754, 1122, 563, 905, 906, 460, 1257, + + 1258, 907, 461, 591, 592, 593, 591, 212, 212, 212, + 212, 1265, 1266, 588, 1201, 606, 594, 212, 212, 212, + 212, 617, 618, 617, 619, 606, 820, 647, 648, 462, + 463, 464, 465, 447, 595, 890, 1267, 610, 890, 477, + 1268, 478, 780, 781, 1269, 782, 783, 1332, 784, 922, + 922, 922, 922, 785, 786, 1333, 769, 770, 787, 596, + 788, 789, 783, 607, 776, 777, 597, 1202, 611, 1334, + 612, 1079, 1267, 607, 1080, 597, 1268, 620, 1081, 598, + 1527, 597, 775, 828, 829, 1699, 1697, 830, 1082, 1083, + 479, 599, 923, 831, 923, 480, 480, 480, 480, 480, + + 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, + 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, + 480, 481, 2999, 482, 447, 447, 449, 184, 450, 449, + 447, 451, 452, 478, 454, 455, 456, 447, 447, 447, + 447, 447, 457, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 458, 447, 459, 447, 447, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, + 483, 447, 484, 447, 447, 447, 461, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, + + 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 481, 463, 482, 465, 183, 527, 528, + 183, 2112, 529, 530, 531, 189, 532, 533, 621, 622, + 622, 621, 3002, 534, 1716, 1717, 623, 622, 622, 622, + 622, 825, 826, 1322, 535, 623, 536, 622, 625, 622, + 622, 922, 922, 922, 922, 623, 591, 592, 593, 591, + 989, 989, 989, 989, 622, 622, 622, 622, 876, 594, + 966, 967, 623, 537, 968, 1323, 1324, 538, 969, 2612, + 622, 718, 622, 622, 624, 970, 1747, 595, 623, 621, + 622, 622, 719, 624, 1774, 2613, 1775, 623, 773, 773, + + 773, 773, 2112, 624, 539, 540, 199, 541, 183, 527, + 528, 183, 596, 529, 530, 531, 189, 532, 533, 597, + 624, 960, 961, 957, 534, 962, 957, 1702, 597, 963, + 1703, 964, 598, 3004, 597, 535, 624, 536, 622, 622, + 622, 622, 1704, 895, 599, 720, 623, 622, 759, 622, + 622, 802, 2477, 837, 802, 623, 802, 908, 908, 908, + 908, 908, 838, 839, 537, 1057, 3009, 933, 538, 840, + 845, 841, 845, 846, 842, 846, 846, 846, 846, 846, + 846, 2478, 938, 1359, 849, 774, 849, 849, 849, 849, + 849, 849, 934, 1360, 624, 539, 540, 199, 541, 626, + + 2473, 1768, 1794, 624, 802, 883, 884, 934, 1722, 885, + 804, 1723, 886, 805, 1769, 1795, 627, 806, 628, 761, + 887, 629, 1058, 1724, 2533, 630, 807, 808, 809, 631, + 935, 1805, 935, 632, 1059, 1361, 3010, 849, 633, 849, + 849, 849, 849, 849, 849, 983, 983, 983, 983, 634, + 635, 2129, 984, 2533, 636, 2116, 1806, 2130, 637, 983, + 983, 983, 983, 2678, 638, 1798,11275, 1799, 639, 1268, + 640, 3011, 937, 1269, 641, 2048, 2049, 642, 651, 1800, + 652, 653, 654, 655, 656, 657, 658, 659, 660, 1067, + 1068, 661, 662, 663, 664, 665, 666, 666, 666, 667, + + 666, 666, 662, 668, 2116, 669, 662, 3012, 670, 671, + 672, 673, 674, 674, 674, 675, 676, 674, 677, 678, + 674, 679, 680, 681, 682, 674, 674, 674, 683, 674, + 684, 674, 685, 686, 3017, 687, 688, 689, 690, 691, + 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, + 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, + 712, 713, 674, 674, 714, 2577, 715, 716, 651, 2529, + 652, 653, 654, 655, 656, 657, 658, 659, 660, 2062, + 2063, 661, 662, 663, 664, 665, 666, 666, 666, 667, + 666, 666, 662, 668, 1109, 669, 662, 1109, 670, 721, + + 722, 723, 724, 724, 724, 725, 726, 724, 727, 728, + 724, 729, 730, 731, 732, 724, 724, 724, 733, 724, + 734, 724, 685, 686, 3018, 687, 688, 689, 735, 736, + 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, + 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, + 757, 758, 724, 724, 714, 2270, 715, 716, 793, 793, + 793, 2528, 793, 793, 793, 793, 793, 793, 793, 793, + 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, + 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, + 793, 794, 794, 794, 794, 794, 794, 794, 794, 794, + + 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, + 794, 794, 794, 794, 794, 793, 793, 793, 793, 793, + 793, 794, 795, 794, 794, 796, 794, 794, 794, 794, + 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, + 794, 794, 794, 794, 794, 794, 794, 793, 793, 793, + 793, 851, 852, 852, 851, 863, 2112, 863, 863, 863, + 863, 863, 863, 903, 903, 903, 903, 903, 903, 852, + 852, 852, 852, 863, 3019, 863, 863, 863, 863, 863, + 863, 2121, 940, 2112, 940, 940, 2340, 852, 862, 852, + 852, 896, 897, 898, 896, 3020, 1813, 899, 1262, 901, + + 902, 902, 901, 2266, 1814, 899, 901, 897, 902, 901, + 1077, 1078, 899, 853, 854, 855, 856, 857, 1815, 2219, + 858, 1267, 1112, 1113, 859, 1268, 2220, 860, 2114, 2050, + 861, 853, 854, 855, 856, 857, 2221, 2112, 858, 941, + 1133, 1134, 859, 1636, 942, 860, 900, 2113, 861, 853, + 854, 855, 856, 857, 900, 2122, 858, 2588, 943, 2668, + 859, 900, 2557, 860, 2112, 2669, 861, 894, 894, 894, + 894, 894, 894, 894, 894, 895, 894, 909, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + + 894, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 894, 894, 894, 894, 894, 894, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 2562, 894, 894, 894, + 912, 912, 912, 912, 923, 2260, 923, 924, 2563, 924, + 924, 924, 924, 924, 924, 924, 2261, 924, 924, 924, + 924, 924, 924, 935, 1282, 935, 936, 3027, 936, 936, + 936, 936, 936, 936, 936, 1322, 936, 936, 936, 936, + + 936, 936, 948, 2272, 949, 950, 3028, 951, 952, 1283, + 912, 1138, 953, 954, 955, 1246, 1247, 1248, 1246, 956, + 880, 880, 880, 880, 2135, 937, 651, 1323, 652, 653, + 654, 655, 656, 657, 658, 659, 660, 1265, 1266, 661, + 662, 663, 664, 665, 666, 666, 666, 667, 666, 666, + 662, 668, 1273, 669, 662, 3031, 670, 721, 722, 723, + 724, 724, 724, 725, 726, 724, 727, 728, 724, 729, + 730, 731, 732, 724, 724, 724, 733, 724, 734, 724, + 685, 686, 1138, 687, 688, 689, 735, 760, 737, 738, + 944, 740, 741, 762, 763, 744, 745, 746, 764, 748, + + 749, 945, 751, 752, 766, 754, 755, 756, 757, 758, + 724, 724, 714, 2168, 715, 716, 975, 976, 976, 975, + 976, 976, 976, 976, 623, 1101, 2272, 2112, 623, 976, + 979, 976, 976, 975, 976, 976, 980, 623, 1259, 3032, + 1260, 623, 1265, 1266, 977, 2169, 1324, 3042, 977, 987, + 987, 987, 987, 987, 987, 1265, 1266, 977, 1282, 2133, + 1284, 981, 1056, 622, 622, 1056, 622, 625, 622, 622, + 623, 2869, 978, 915, 623, 1273, 978, 1092, 1060, 1061, + 1061, 1060, 1093, 1283, 2115, 978, 1062, 2273, 813, 978, + 626, 1061, 1061, 1061, 1061, 1061, 1064, 1061, 1061, 1062, + + 2869, 1857, 1359, 1062, 916, 1359, 917, 627, 2112, 628, + 2255, 1858, 629, 2277, 1325, 1360, 630, 2256, 624, 813, + 631, 813, 624, 2275, 632, 1071, 1072, 1072, 1071, 633, + 1094, 674, 1095, 1073, 1063, 674, 1558, 761, 2871, 1283, + 634, 635, 2531, 1359, 1297, 636, 1652, 1063, 1653, 637, + 2592, 1063, 1096, 1859, 1361, 638, 1354, 1361, 2872, 639, + 674, 640, 1097, 674, 674, 641, 674, 674, 642, 651, + 674, 992, 653, 654, 993, 994, 995, 996, 659, 997, + 998, 1074, 661, 662, 663, 664, 665, 999, 999, 999, + 1000, 999, 999, 662, 668, 1361, 1001, 662, 3052, 1002, + + 1003, 1004, 1005, 1006, 1007, 1007, 1008, 1009, 1010, 1011, + 1012, 1007, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, + 1021, 1022, 1007, 685, 1023, 1024, 687, 1025, 689, 1026, + 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, + 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, + 1047, 1048, 1049, 1007, 1050, 714, 1051, 715, 1052, 1072, + 1072, 1072, 1072, 1072, 1075, 1072, 1072, 1073, 2570, 1117, + 2571, 1073, 2572, 2380, 813, 1250, 2381, 813, 1135, 1135, + 1135, 1135, 1325, 1118, 1118, 1118, 1118, 1118, 1125, 1325, + 1126, 1127, 674, 1128, 1129, 880, 880, 880, 880, 1130, + + 3053, 622, 622, 622, 622, 1131, 1636, 1283, 3060, 623, + 622, 1139, 622, 622, 1283, 1074, 1329, 2553, 623, 1074, + 626, 674, 813, 1636, 674, 813, 2719, 674, 1135, 2578, + 1251, 1107, 1252, 1350, 1103, 1253, 2579, 627, 2371, 628, + 1254, 1283, 629, 1119, 1466, 3064, 630, 1255, 1256, 1104, + 631, 1105, 2891, 813, 632, 813, 813, 624, 813, 633, + 1239, 1239, 1239, 1239, 2301, 3065, 624, 2594, 2595, 1283, + 634, 1084, 1085, 1085, 1085, 1086, 1085, 1085, 1085, 1087, + 1085, 1085, 1085, 1085, 1085, 1088, 1085, 1085, 1085, 1089, + 1085, 1090, 1085, 1085, 1085, 1091, 1085, 1224, 642, 1138, + + 1212, 1212, 1212, 1212, 1325, 2892, 1140, 1225, 1203, 2580, + 1204, 2586, 3066, 1226, 674, 2607, 1240, 1227, 1242, 1242, + 1242, 1242, 1228, 1141, 1229, 1142, 2581, 2608, 1143, 1283, + 1331, 1205, 1144, 2701, 674, 674, 1145, 1206, 1207, 2702, + 1146, 1208, 2612, 674, 1209, 1147, 674, 1210, 1211, 1347, + 835, 835, 835, 835, 835, 835, 1148, 1149, 2729, 1348, + 2174, 1150, 2300, 674, 674, 1151, 674, 674, 2175, 674, + 674, 1152, 1349, 1213, 1243, 1153, 1214, 1154, 2237, 2238, + 2239, 1155, 2176, 2240, 1156, 1162, 1162, 1162, 1163, 1162, + 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1162, + + 1162, 1173, 1174, 1175, 1176, 1177, 1178, 1178, 1178, 1179, + 1178, 1178, 1174, 1180, 1162, 1181, 1174, 1162, 1182, 671, + 672, 673, 674, 674, 674, 675, 676, 674, 677, 678, + 674, 679, 680, 681, 682, 674, 674, 674, 683, 674, + 684, 674, 1183, 1184, 1162, 1185, 1186, 1187, 690, 1188, + 1189, 693, 1190, 695, 696, 1191, 1192, 699, 700, 701, + 702, 703, 704, 1193, 706, 707, 1194, 1195, 1196, 711, + 712, 713, 674, 674, 1197, 1162, 1198, 1199, 1217, 1217, + 1217, 1217, 621, 622, 622, 621, 674, 2601, 674, 2602, + 623, 622, 622, 622, 622, 622, 622, 622, 622, 623, + + 3067, 2549, 2529, 623, 1274, 1274, 1274, 1274, 1276, 1277, + 1278, 1276, 623, 1355, 1325, 674, 1279, 674, 674, 2550, + 674, 674, 846, 1356, 846, 846, 846, 846, 846, 846, + 666, 666, 666, 666, 666, 666, 2603, 1329, 624, 1283, + 674, 1351, 1218, 2641, 674, 3072, 1219, 624, 2642, 674, + 2604, 624, 2116, 666, 666, 666, 666, 666, 666, 2644, + 1275, 1220, 1283, 2645, 1280, 1284, 905, 906, 1428, 674, + 1352, 907, 674, 674, 895, 674, 1429, 1327, 674, 1430, + 674, 674, 1431, 2849, 674, 622, 622, 622, 622, 2658, + 2659, 1328, 2574, 623, 1285, 2696, 1353, 674, 1286, 1267, + + 1327, 2116, 1287, 2064, 674, 2532, 1288, 2065, 1357, 674, + 1753, 1289, 674, 674, 1328, 674, 2117, 2066, 1290, 2241, + 2242, 2243, 1358, 1291, 2244, 2794, 674, 1292, 2490, 674, + 674, 1293, 674, 674, 2533, 1754, 674, 1294, 1449, 1448, + 724, 624, 674, 1295, 895, 674, 1325, 1296, 674, 1297, + 1298, 1384, 775, 1385, 1386, 1387, 2664, 674, 2559, 674, + 1450, 3080, 1388, 2560, 1389, 674, 1390, 2665, 1391, 724, + 1466, 1283, 724, 2426, 1558, 724, 1558, 2427, 1462, 1299, + 2660, 1300, 1463, 1301, 2992, 674, 674, 1302, 2646, 674, + 1303, 1304, 1464, 3081, 1305, 674, 1306, 2529, 1465, 2993, + + 1307, 1308, 2428, 1309, 2692, 2421, 2429, 674, 1310, 1519, + 1311, 2647, 1312, 2673, 674, 2674, 1313, 674, 2516, 1520, + 674, 1314, 1315, 1805, 674, 2793, 1316, 674, 1317, 1467, + 674, 1468, 1318, 1319, 1320, 1325, 674, 1298, 3085, 674, + 2661, 2529, 674, 1469, 1558, 1470, 2629, 2630, 1806, 1471, + 674, 1326, 1326, 1326, 1326, 1326, 1326, 724, 2682, 2631, + 1283, 2683, 2684, 1331, 1335, 2694, 1362, 2632, 1336, 2695, + 1363, 1422, 1423, 1424, 1364, 2718, 2703, 2532, 1365, 1425, + 2704, 2633, 674, 1366, 895, 1426, 724, 2608, 1427, 724, + 1367, 724, 1539, 1857, 1337, 1368, 1338, 2764, 1339, 1369, + + 2764, 2531, 1540, 1370, 1340, 1652, 1857, 1653, 1341, 1371, + 2575, 1342, 1343, 1325, 674, 1372, 773, 773, 773, 773, + 724, 1297, 1298, 724, 2923, 674, 724, 2685, 2924, 1326, + 1326, 1326, 1326, 1326, 1326, 1400, 2686, 2664, 1283, 1401, + 2687, 1331, 1402, 1403, 2688, 1859, 1404, 1636, 2732, 1405, + 1344, 1373, 1406, 1407, 674, 1374, 1558, 674, 1859, 1375, + 674, 2712, 1477, 1376, 2638, 2793, 1478, 2531, 1377, 2639, + 2716, 1652, 1337, 2614, 1338, 1378, 1339, 3086, 2615, 1344, + 1379, 2616, 1345, 2640, 1380, 1346, 1341, 1392, 1381, 1342, + 1343, 1393, 1394, 1395, 1382, 1396, 674, 2664, 674, 1397, + + 1383, 1398, 2828, 774, 1399, 674, 1297, 2828, 2814, 674, + 621, 622, 622, 719, 2863, 3098, 2784, 1408, 623, 2784, + 1409, 1410, 1807, 674, 2947, 674, 1457, 1458, 674, 1459, + 1460, 1411, 1412, 1413, 1461, 674, 1414, 674, 674, 1415, + 674, 1416, 1417, 1418, 674, 1419, 3111, 1806, 2928, 1444, + 1445, 1420, 674, 1421, 674, 674, 1451, 1446, 674, 1452, + 1453, 2929, 2784, 1447, 1454, 2784, 720, 674, 724, 724, + 1455, 922, 922, 922, 922, 1432, 1433, 1434, 2894, 1435, + 1436, 1437, 1456, 674, 674, 674, 1438, 2784, 2784, 1439, + 2784, 2784, 1440, 1441, 1442, 1350, 3126, 724, 724, 1443, + + 724, 724, 674, 724, 724, 1472, 1479, 1541, 2916, 1473, + 1480, 2917, 2851, 674, 674, 2862, 674, 674, 1481, 1474, + 1482, 2714, 1475, 1476, 2268, 1652, 1483, 1653, 724, 2910, + 2852, 674, 1484, 674, 674, 3127, 1505, 674, 1506, 2895, + 1507, 1508, 1755, 1755, 1755, 1755, 1755, 1755, 724, 1545, + 674, 2952, 1298, 2953, 1485, 1486, 1487, 724, 1488, 1489, + 724, 3132, 1490, 724, 1491, 1492, 1493, 724, 674, 1494, + 3133, 1498, 1495, 1496, 1497, 1499, 1543, 724, 1500, 1501, + 724, 1521, 674, 724, 724, 1502, 724, 1807, 1503, 1542, + 1504, 1509, 1522, 1523, 2531, 2670, 724, 724, 1652, 724, + + 1653, 2990, 724, 3138, 3035, 1544, 724, 2675, 724, 2676, + 1524, 1546, 1806, 724, 2677, 724, 724, 1811, 724, 724, + 3036, 1547, 2862, 1525, 1526, 1548, 724, 724, 674, 724, + 1594, 1353, 724, 1549, 2421, 724, 1297, 724, 1595, 3071, + 724, 1596, 1806, 724, 1597, 2495, 724, 1007, 2533, 1510, + 1511, 1434, 3139, 1512, 1513, 2869, 724, 674, 2930, 724, + 674, 2954, 1614, 1514, 1515, 2883, 1516, 1517, 1518, 1325, + 2884, 1615, 2559, 2955, 2991, 724, 1007, 2726, 724, 1007, + 724, 724, 1828, 3029, 2870, 1326, 1326, 1326, 1326, 1326, + 1326, 1007, 1829, 1450, 1283, 3030, 2730, 1331, 1528, 3143, + + 724, 1550, 1529, 1551, 1552, 1553, 2532, 2531, 1007, 724, + 2633, 1652, 1554, 1653, 1555, 724, 1556, 2935, 1557, 2380, + 1007, 1574, 3005, 1007, 1575, 1576, 1007, 3148, 1530, 724, + 1531, 2936, 724, 1830, 2931, 1577, 1578, 1007, 1532, 3149, + 1007, 1007, 1533, 1831, 1558, 1534, 1535, 1325, 1559, 1560, + 1561, 3150, 1562, 724, 1007, 724, 1563, 2865, 1564, 2912, + 2863, 1565, 1840, 1326, 1326, 1326, 1326, 1326, 1326, 3155, + 1007, 2994, 1283, 1007, 1566, 1331, 1007, 2913, 1567, 895, + 724, 1568, 1569, 1007, 1536, 1570, 1007, 1835, 1571, 1007, + 3159, 1572, 1573, 1756, 1756, 1756, 1756, 1756, 724, 2796, + + 2797, 1588, 1589, 1590, 907, 2919, 1530, 2920, 1531, 1591, + 3160, 2921, 724, 1536, 1807, 1592, 1537, 724, 1593, 1538, + 1533, 724, 1579, 1534, 1535, 1580, 2868, 724, 1581, 3021, + 1582, 1583, 1584, 724, 1585, 896, 897, 898, 896, 1806, + 1586, 899, 1587, 724, 2988, 3102, 724, 1610, 1611, 724, + 724, 2989, 724, 724, 1640, 1612, 724, 2709, 1641, 2710, + 2998, 1613, 724, 2711, 1598, 1599, 1600, 3161, 1601, 1602, + 1603, 724, 724, 2862, 2868, 1604, 1466, 2711, 1605, 1007, + 724, 1606, 1607, 1608, 1542, 2798, 1680, 3003, 1609, 2858, + 900, 724, 1616, 2869, 724, 1617, 1618, 724, 724, 1007, + + 1619, 1621, 1622, 724, 1623, 1624, 1620, 2865, 1007, 1625, + 2914, 1007, 724, 724, 1007, 724, 1807, 2933, 1456, 1626, + 1834, 2915, 2934, 1627, 1007, 724, 3164, 724, 1007, 3000, + 724, 1007, 1841, 1628, 1007, 1630, 3001, 1631, 3025, 1629, + 724, 1806, 724, 2925, 2926, 724, 1635, 724, 724, 1632, + 1636, 1633, 3026, 1850, 724, 1634, 1007, 724, 2927, 1007, + 1637, 1642, 3103, 1638, 1639, 1643, 2865, 3134, 724, 724, + 724, 1681, 724, 1644, 2857, 1645, 724, 2918, 3135, 724, + 3165, 1646, 724, 989, 989, 989, 989, 1484, 724, 1660, + 2949, 1621, 1622, 1661, 1623, 1688, 1662, 1663, 2950, 1625, + + 724, 724, 724, 1664, 2951, 724, 1665, 3175, 1666, 1647, + 1648, 1649, 2866, 1650, 1651, 3033, 2867, 1652, 2005, 1653, + 1654, 1655, 3034, 724, 1656, 1007, 2937, 1657, 1658, 1659, + 724, 3104, 2938, 724, 2939, 1667, 724, 1668, 2940, 1669, + 1670, 1509, 622, 622, 622, 622, 2863, 1558, 724, 3180, + 623, 1682, 1560, 1561, 1855, 1683, 3073, 1007, 724, 1563, + 1007, 1564, 2862, 849, 1565, 849, 849, 849, 849, 849, + 849, 3068, 3069, 1007, 1610, 1611, 3070, 724, 724, 3154, + 724, 3105, 1612, 724, 851, 852, 852, 851, 1687, 863, + 724, 863, 863, 863, 863, 863, 863, 3106, 624, 1671, + + 1672, 1600, 1007, 1673, 1674, 1007, 3131, 724, 1007, 1852, + 724, 1689, 2868, 1675, 1676, 1636, 1677, 1678, 1679, 724, + 2866, 3144, 724, 1007, 2893, 1637, 2005, 3145, 1638, 1639, + 852, 852, 852, 852, 901, 902, 902, 901, 3128, 2981, + 899, 989, 989, 989, 1801, 3129, 853, 854, 855, 856, + 857, 1842, 1843, 858, 3183, 1007, 2982, 859, 1007, 2983, + 860, 1844, 1845, 861, 852, 852, 852, 852, 901, 897, + 902, 901, 1007, 1007, 899, 903, 903, 903, 903, 903, + 903, 901, 902, 902, 901, 3082, 3083, 899, 3186, 900, + 3197, 3084, 853, 854, 855, 856, 857, 3198, 1853, 858, + + 1851, 1007, 1007, 859, 1007, 1007, 860, 1007, 1007, 861, + 902, 902, 902, 902, 3205, 924, 895, 924, 924, 924, + 924, 924, 924, 900, 3216, 2862, 853, 854, 855, 856, + 857, 776, 777, 858, 2863, 3033, 900, 859, 2900, 3096, + 860, 2901, 2865, 861, 983, 983, 983, 983, 3097, 1759, + 1759, 1759, 1759, 1759, 1759, 936, 2902, 936, 936, 936, + 936, 936, 936, 3125, 2863, 900, 894, 894, 894, 894, + 894, 894, 894, 894, 895, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 894, 894, 894, 894, 894, 894, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 3227, 894, 894, 894, 1762, + 1762, 1762, 1762, 1566, 2970, 1660, 3162, 1567, 2863, 1661, + 1568, 1569, 1662, 1663, 1570, 3169, 3170, 1571, 2971, 1664, + 1796, 1573, 1665, 1534, 1797, 975, 976, 976, 975, 976, + 976, 976, 976, 623, 3230, 3181, 2995, 623, 976, 976, + + 976, 976, 975, 976, 976, 980, 623, 2943, 2862, 2996, + 623, 2944, 3124, 977, 2945, 2946, 2997, 977, 1803, 1803, + 1803, 1803, 989, 989, 989, 989, 977, 1967, 2862, 3163, + 977, 987, 987, 987, 987, 987, 987, 1212, 1212, 1212, + 1212, 978, 3168, 2862, 3232, 978, 1763, 1325, 1246, 1247, + 1248, 1246, 1806, 1846, 978, 3136, 1007, 3220, 978, 3137, + 3233, 1007, 1807, 1326, 1326, 1326, 1326, 1326, 1326, 1007, + 1007, 3182, 1283, 2865, 1804, 1331, 3226, 1832, 999, 999, + 999, 999, 999, 999, 3235, 1007, 1847, 1806, 1007, 3236, + 1848, 1007, 3237, 1007, 1833, 1856, 1849, 1854, 1007, 1007, + + 3225, 1007, 1007, 3166, 1007, 1007, 1530, 3167, 1579, 3234, + 1213, 1684, 3030, 1214, 1581, 1811, 1582, 1583, 1685, 3022, + 1585, 3023, 1836, 1534, 1535, 1809, 1586, 3024, 1771, 1325, + 1007, 999, 999, 999, 999, 999, 999, 1007, 2866, 1810, + 1806, 1007, 2867, 3238, 2005, 1326, 1326, 1326, 1326, 1326, + 1326, 1837, 2531, 2922, 1283, 1838, 1652, 1331, 2721, 1007, + 3239, 2039, 1007, 2722, 1007, 1839, 2040, 1934, 1935, 1007, + 1007, 2865, 1007, 1007, 1936, 1937, 1938, 1353, 1809, 1007, + 3218, 1939, 1762, 1762, 1762, 1762, 3219, 1772, 1530, 2042, + 1531, 1636, 1810, 1007, 3006, 3007, 1007, 1940, 3008, 1941, + + 2977, 1637, 1533, 3099, 1638, 1639, 1535, 1807, 1007, 2048, + 2049, 1007, 2978, 3100, 1007, 2272, 1986, 1987, 2979, 3101, + 1988, 2980, 2050, 1808, 1808, 1808, 1808, 1808, 1808, 1007, + 1007, 2785, 1806, 1871, 2786, 1812, 1816, 1872, 1873, 1874, + 1817, 1875, 2787, 2788, 1007, 1876, 1007, 1877, 2789, 3247, + 1878, 1942, 2790, 1879, 2041, 1943, 3184, 3249, 1007, 1007, + 3185, 1007, 1007, 1007, 1007, 1007, 1818, 1890, 1819, 1763, + 1891, 1892, 3252, 1297, 3258, 1893, 1820, 1450, 1007, 3121, + 1821, 1894, 1895, 1822, 1823, 1807, 3188, 2035, 2036, 3203, + 3189, 1007, 2037, 3204, 2603, 1007, 1007, 3261, 1007, 2038, + + 2868, 1808, 1808, 1808, 1808, 1808, 1808, 3140, 3240, 2286, + 1806, 2287, 1880, 1812, 2863, 1881, 1882, 1962, 1007, 1883, + 1884, 1963, 1824, 1885, 3221, 1964, 1886, 2288, 1007, 1887, + 1888, 1965, 1889, 1239, 1239, 1239, 1239, 1966, 3061, 1907, + 1908, 1909, 3253, 1007, 1818, 3013, 1819, 1910, 3122, 3123, + 1007, 1825, 2066, 1911, 1826, 2289, 1912, 1827, 1821, 2048, + 2049, 1822, 1823, 1007, 1913, 3141, 1914, 1915, 1916, 2956, + 1917, 2957, 1007, 2958, 2270, 1918, 2959, 2960, 1919, 3142, + 3243, 1920, 2112, 1921, 1860, 1861, 1862, 1863, 1864, 1240, + 3217, 1007, 1007, 3269, 2867, 1865, 2005, 1866, 1007, 1867, + + 3062, 1868, 1869, 1870, 1007, 1242, 1242, 1242, 1242, 3222, + 2868, 3223, 1955, 1956, 3063, 1957, 1958, 2062, 2063, 3014, + 1959, 3015, 3016, 1007, 3224, 3270, 1007, 1960, 1896, 3250, + 1007, 1897, 1961, 1007, 1898, 3251, 1899, 1900, 1901, 1007, + 1902, 1903, 3266, 3151, 1904, 3152, 1905, 3271, 1906, 1007, + 3153, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 3273, 1951, + 3274, 1243, 1952, 2112, 1953, 1954, 3156, 1007, 3157, 3190, + 1922, 1923, 1924, 3158, 1925, 1926, 1927, 1456, 1007, 1007, + 3191, 1928, 3275, 3192, 1929, 3193, 3276, 1930, 1931, 1932, + 1834, 2062, 2063, 3283, 1933, 1967, 1007, 3194, 1007, 1007, + + 1978, 2020, 1007, 2021, 1979, 2022, 2023, 1980, 1981, 3195, + 3284, 1007, 1982, 1807, 1983, 1007, 3196, 1984, 1985, 1989, + 1990, 1991, 2042, 1992, 1993, 3287, 1994, 1995, 2972, 2973, + 1007, 1996, 1007, 1997, 2974, 2975, 2013, 1138, 1806, 1998, + 2014, 2281, 2976, 2015, 2016, 1484, 3210, 1007, 3211, 2282, + 2017, 1521, 3212, 2018, 1968, 2019, 1969, 989, 989, 989, + 989, 1970, 1522, 1523, 1007, 1971, 3212, 1007, 1972, 1138, + 1973, 1974, 1975, 724, 1976, 1977, 1007, 724, 1610, 1611, + 1524, 1056, 622, 622, 1056, 2516, 1612, 724, 2283, 623, + 724, 1534, 2059, 1525, 1526, 2121, 2284, 1999, 2000, 2001, + + 2286, 2002, 2003, 3087, 2287, 2004, 1297, 2005, 2006, 2007, + 3088, 1007, 2008, 2009, 3089, 2010, 2011, 2012, 2024, 3090, + 2288, 1598, 2045, 1600, 2289, 1601, 1602, 1603, 1060, 1061, + 1061, 1060, 1604, 2298, 3288, 1605, 1062, 624, 1686, 1607, + 1608, 1542, 1660, 3285, 2421, 1609, 1661, 2299, 3286, 1662, + 1663, 1217, 1217, 1217, 1217, 2784, 1664, 3272, 2784, 1665, + 1534, 2046, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1062, 1331, 2629, 3259, 1062, 3311, 2025, 2026, 1924, 2027, + 2028, 2029, 2866, 3146, 1063, 2631, 3147, 1007, 2005, 1007, + 2030, 2031, 3311, 2032, 2033, 2034, 2052, 2052, 2052, 2052, + + 2054, 2055, 2056, 2054, 1062, 1325, 3246, 3311, 2057, 1326, + 1326, 1326, 1326, 1326, 1326, 1218, 2532, 3107, 1063, 1219, + 2633, 2533, 1063, 1071, 1072, 1072, 1071, 1072, 1072, 1072, + 1072, 1073, 3322, 2116, 1220, 1073, 1072, 1072, 1072, 1072, + 2067, 2067, 2067, 2067, 1073, 3257, 1331, 2866, 1073, 3323, + 2726, 2867, 2053, 2005, 3130, 2375, 2058, 1647, 1648, 1649, + 1331, 1650, 1651, 3324, 1337, 1652, 1338, 1653, 1654, 1690, + 1331, 724, 1656, 1536, 724, 1657, 1658, 2060, 1341, 1074, + 674, 3108, 2116, 1074, 674, 2069, 2070, 2071, 2069, 3292, + 3325, 3109, 1074, 2072, 1558, 3297, 2068, 3110, 1682, 1560, + + 1561, 3054, 2074, 3291, 3268, 674, 1563, 3293, 1564, 724, + 3326, 1565, 1534, 724, 1610, 1611, 3296, 1660, 2506, 2048, + 2049, 1661, 2076, 724, 1662, 1663, 724, 1534, 2077, 674, + 3298, 1664, 2390, 2866, 1665, 1534, 2079, 2867, 1298, 3037, + 3306, 2073, 724, 2506, 3038, 1579, 724, 3039, 1684, 3327, + 3328, 1581, 674, 1582, 1583, 2075, 724, 1585, 3329, 724, + 1534, 3055, 3056, 1586, 3057, 1587, 1284, 1362, 1373, 3300, + 3313, 1363, 1374, 2493, 3058, 1364, 1375, 3305, 3059, 1365, + 1376, 2706, 674, 2707, 1366, 1377, 674, 3245, 2708, 674, + 2532, 1367, 1378, 3314, 3330, 1285, 2097, 2102, 674, 1286, + + 2098, 2103, 3312, 1287, 2099, 2104, 2706, 1288, 2850, 674, + 2100, 2105, 1289, 2708, 1325, 2532, 2101, 2106, 3331, 1290, + 2081, 3332, 2062, 2063, 2080, 2081, 2081, 2081, 2082, 2081, + 2081, 2081, 2083, 2081, 2081, 2081, 2081, 2081, 2084, 2081, + 2081, 2081, 2081, 2081, 2085, 2081, 2081, 2081, 2086, 2081, + 1297, 1298, 1660, 674, 2290, 3333, 1661, 3317, 3334, 1662, + 1663, 3213, 3335, 2291, 3214, 2865, 1664, 2292, 3091, 1665, + 1534, 2107, 3092, 1337, 2293, 1338, 2280, 3093, 2112, 3215, + 1299, 3094, 1300, 2294, 1301, 3095, 3336, 1341, 1302, 674, + 3255, 1303, 1304, 674, 2295, 1305, 3302, 1306, 674, 2296, + + 3256, 1307, 1308, 674, 1309, 3337, 2297, 3303, 3307, 2087, + 2081, 2088, 2081, 2089, 2081, 2081, 2081, 2090, 2081, 2081, + 2081, 2081, 2091, 2092, 2081, 2081, 2081, 2093, 2081, 2094, + 2081, 2081, 2081, 2095, 2096, 1320, 1521, 2501, 1660, 3338, + 11275, 2421, 1661, 3308,11275, 1662, 1663, 1522, 1523, 3265, + 3339, 2819, 1664,11275, 2820, 1665, 1534, 2111, 3321, 2112, + 11275, 3340, 2821, 2822, 2251, 2108, 3341, 2112, 2823, 2081, + 1325, 674, 2824, 2081, 622, 622, 622, 622, 2109, 2110, + 1329, 1298, 623, 1298, 3344, 2081, 666, 666, 666, 666, + 666, 666, 3345, 3346, 3347, 1283, 666, 666, 666, 666, + + 666, 666, 3171, 3260, 3348, 1283, 1274, 1274, 1274, 1274, + 2213, 3172, 2177, 2532, 623, 3173, 2178, 2633, 3206, 3174, + 2179, 2214, 2215, 2830, 2180, 3342, 2831, 3349, 3350, 2181, + 624, 1284, 3351, 2171, 2832, 2833, 1367, 3267, 3343, 2216, + 2834, 2182, 2187, 2171, 2835, 2183, 2188, 2172, 2112, 2184, + 2189, 3352, 2217, 2218, 2190, 2185, 3353, 2172, 3354, 2191, + 2137, 2186, 1275, 3176, 2138, 1297, 1378, 1297, 2139, 3177, + 3178, 2192, 2140, 2391, 3356, 2193, 3357, 2141, 3358, 2194, + 1262, 3207, 3179, 3208, 1290, 2195, 674, 3299, 3209, 2142, + 2868, 2196, 1338, 2143, 1444, 1445, 3355, 2144, 674, 3359, + + 674, 674, 1446, 2145, 1341, 3360, 2278, 3363, 2204, 2146, + 674, 1325, 674, 2147, 2205, 1297, 1298, 3187, 1473, 1498, + 3364, 674, 674, 2209, 3365, 674, 1500, 2210, 1474, 3366, + 674, 1475, 1476, 1502, 3367, 3368, 1503, 1342, 1504, 3369, + 1276, 2267, 1278, 1276, 2966, 2148, 2866, 2149, 1279, 2150, + 2867, 3370, 2005, 2151, 3371, 2967, 2152, 2153, 1265, 1266, + 2154, 2652, 2155, 3372, 2653, 3373, 2156, 2157, 2654, 1309, + 1337, 2655, 1338, 2305, 2158, 2656, 2159, 2657, 2160, 2866, + 3304, 3374, 2161, 2867, 1341, 2005, 674, 2162, 2163, 2484, + 674, 674, 2164, 2485, 2165, 3377, 1280, 2486, 2166, 2167, + + 1320, 1325, 3199, 3200, 3201, 1274, 1274, 1274, 1274, 1325, + 3202, 2223, 3378, 623, 3379, 3380, 1473, 1326, 1326, 1326, + 1326, 1326, 1326, 2363, 674, 674, 1283, 3310, 674, 1331, + 2513, 3362, 674, 674, 1283, 674, 674, 3382, 1344, 674, + 2224, 2211, 674, 2212, 674, 1507, 1508, 674, 674, 674, + 674, 674, 2485, 3386, 674, 1325, 2327, 674, 1342, 1392, + 1337, 1275, 1338, 2197, 1394, 1395, 1353, 1396, 2272, 674, + 3385, 1397, 3319, 1398, 1341, 3395, 1399, 1342, 1343, 1325, + 1276, 2274, 1278, 1276, 2503, 3396, 674, 3376, 1279, 1326, + 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, + + 1326, 674, 3384, 3390, 1283, 674, 3422, 1331, 674, 674, + 674, 674, 674, 1392, 1337, 674, 1338, 1273, 674, 1342, + 3402, 2222, 3361, 1274, 1274, 1274, 1274, 2510, 1341, 3309, + 674, 623, 674, 2512, 674, 3320, 1280, 1400, 1337, 674, + 1338, 2198, 1339, 674, 2199, 1403, 1392, 2512, 1404, 2374, + 3318, 1405, 1341, 674, 1406, 1407, 1343, 674, 3387, 674, + 1413, 674, 3383, 1414, 674, 674, 1415, 674, 1416, 1417, + 2200, 674, 1419, 674, 674, 1342, 3389, 1325, 1420, 1275, + 1421, 2201, 2202, 1434, 3388, 2203, 1436, 1437, 674, 674, + 674, 3392, 1438, 674, 1473, 1439, 3393, 3381, 1440, 1441, + + 1442, 1350, 1283, 674, 674, 1443, 1485, 1486, 1487, 1344, + 2206, 1489, 674, 674, 1490, 2330, 1491, 1492, 1493, 3400, + 674, 2207, 3391, 674, 1495, 1496, 2208, 1466, 674, 674, + 1392, 674, 674, 3426, 2197, 2225, 1395, 674, 1396, 2866, + 1283, 674, 1397, 2867, 1398, 3228, 3375, 1399, 1342, 674, + 3229, 2305, 3444, 674, 1444, 1445, 3394, 674, 674, 674, + 674, 674, 1446, 674, 3459, 3397, 674, 2227, 2226, 1325, + 1452, 1453, 1325, 1473, 674, 1454, 3381, 1325, 674, 3435, + 2305, 1455, 674, 3315, 674, 1342, 2228, 3404, 1468, 674, + 674, 674, 674, 1456, 674, 3413, 674, 674, 674, 1325, + + 1469, 2839, 1470, 1479, 2840, 674, 1471, 1480, 674, 1325, + 674, 674, 2841, 2842, 674, 2229, 2380, 1482, 2843, 2380, + 674, 1342, 2844, 1483, 1276, 2267, 1278, 1276, 1337, 1484, + 1338, 1337, 1279, 1338, 1325, 3464, 1337, 3401, 1338, 1473, + 2305, 2306, 1341, 1325, 674, 2307, 674, 674, 674, 3403, + 1341, 674, 674, 1325, 674, 2306, 674, 674, 1337, 2341, + 1338, 2308, 2340, 3412, 1325, 1490, 674, 1491, 1337, 2310, + 1338, 3446, 1341, 3415, 674, 674, 3406, 1325, 674, 3410, + 1280, 2309, 1341, 674, 674, 1325, 674, 1283, 674, 3417, + 1325, 674, 3448, 1337, 674, 1338, 3411, 1473, 2310, 3405, + + 1325, 2311, 1337, 1490, 1338, 1491, 674, 1341, 674, 674, + 674, 1325, 1337, 674, 1338, 2371, 1341, 3425, 674, 1325, + 3447, 2312, 674, 1337, 1325, 1338, 1341, 674, 674, 3418, + 674, 3419, 674, 2314, 2313, 2315, 1337, 1341, 1338, 674, + 1283, 1325, 674, 674, 1337, 3427, 1338, 2316, 3424, 1337, + 1341, 1338, 674, 674, 2317, 3428, 674, 3488, 1341, 1337, + 674, 1338, 2318, 1341, 674, 674, 1325, 1325, 674, 674, + 1337, 3489, 2322, 1341, 2330, 2319, 674, 3423, 1337, 674, + 1338, 674, 2306, 1337, 1341, 1338, 674, 674, 2321, 1325, + 674, 3490, 1341, 3449, 674, 674, 1325, 1341, 674, 674, + + 1337, 3450, 1338, 674, 1325, 1326, 1326, 1326, 1326, 1326, + 1326, 2323, 3416, 1325, 1341, 3429, 674, 674, 3434, 3453, + 674, 1325, 674, 674, 2309, 1337, 1337, 1338, 1338, 674, + 674, 2380, 2324, 1337, 2381, 1338, 2325, 3431, 1325, 1341, + 1341, 674, 674, 1325, 3452, 674, 674, 1341, 1337, 674, + 1338, 1325, 3430, 674, 2521, 1337, 674, 2332, 2305, 1283, + 2340, 674, 1341, 1337, 674, 1338, 3456, 2331, 674, 1341, + 1325, 674, 1337, 674, 1338, 2333, 674, 1341, 2305, 674, + 1337, 1325, 2335, 674, 3454, 2506, 2334, 674, 674, 3074, + 3451, 674, 674, 3398, 1341, 3399, 674, 1337, 1473, 2338, + + 674, 3437, 1337, 1325, 1338, 1473, 3461, 674, 674, 2337, + 1337, 1341, 1338, 674, 1325, 3455, 2336, 674, 674, 1337, + 674, 1338, 674, 3468, 1341, 1325, 674, 2506, 674, 1337, + 674, 1338, 2306, 1341, 2339, 674, 2341, 674, 2310, 674, + 1337, 674, 1338, 1341, 3463, 674, 1325, 3075, 2706, 674, + 3241, 1325, 3076, 3462, 1341, 2708, 2342, 2532, 674, 3491, + 674, 1325, 2343, 3077, 1338, 3078, 3079, 2344, 3458, 2338, + 1325, 3460, 2345, 1337, 3492, 1338, 1341, 3516, 674, 674, + 1325, 674, 674, 3457, 1337, 1325, 1338, 1341, 3433, 674, + 2706, 3477, 3262, 674, 2346, 2363, 674, 2708, 1341, 2532, + + 674, 3380, 1325, 3466, 674, 1337, 2347, 1338, 2348, 1325, + 1337, 674, 1338, 2961, 2961, 2961, 2962, 3474, 674, 1341, + 1337, 674, 1338, 2421, 1341, 674, 674, 3524, 2349, 1337, + 674, 1338, 2350, 1325, 1341, 2506, 674, 3499, 2351, 1337, + 674, 1338, 3500, 1341, 1337, 674, 1338, 2352, 1283, 674, + 1325, 2353, 3467, 1341, 674, 674, 674, 1325, 1341, 674, + 674, 1337, 2365, 1338, 674, 1325, 3475, 674, 1337, 2357, + 1338, 2354, 2362, 2355, 3530, 2356, 2963, 674, 2358, 2363, + 674, 674, 1341, 674, 674, 2964, 1325, 3470, 674, 674, + 3476, 3482, 1337, 674, 1338, 2308, 1325, 3531, 2706, 1490, + + 3263, 1491, 2965, 1325, 2359, 2708, 1341, 2532, 674, 1337, + 3277, 1338, 674, 3278, 2360, 2361, 1337, 3545, 1338, 2305, + 3546, 3279, 3280, 1341, 1337, 674, 1338, 3281, 2362, 674, + 1341, 3282, 674, 1325, 3465, 2363, 674, 3520, 1341, 674, + 674, 1325, 674, 2306, 674, 1337, 2364, 1338, 1325, 2366, + 2366, 2366, 2366, 2366, 2366, 1337, 2371, 1338, 2367, 1341, + 3472, 674, 1337, 2365, 1338, 674, 3445, 1325, 3469, 1341, + 1473, 674, 1473, 674, 3619, 674, 1341, 1325, 2368, 674, + 1325, 674, 674, 1326, 1326, 1326, 1326, 1326, 1326, 3480, + 674, 674, 1337, 2485, 1338, 1473, 674, 2309, 1392, 1325, + + 1337, 3432, 1338, 2369, 1325, 3473, 1341, 1337, 674, 1338, + 2506, 3487, 674, 3673, 1341, 1337, 674, 1338, 674, 2306, + 674, 1341, 2380, 674, 2370, 2381, 1337, 674, 2373, 2372, + 1325, 674, 674, 3481, 724, 674, 1337, 3493, 1338, 1337, + 1341, 1338, 674, 2513, 674, 2421, 674, 3485, 674, 2377, + 2376, 3661, 674, 1341, 1325, 674, 674, 1392, 1337, 674, + 1338, 1325, 674, 1337, 674, 1338, 674, 2309, 3507, 1325, + 3494, 2378, 1341, 2706, 674, 3264, 2379, 1341, 674, 674, + 2708, 3436, 2532, 674, 1337, 1490, 1338, 1491, 1325, 1337, + 674, 1338, 3704, 1325, 1803, 1803, 1803, 1803, 1341, 3483, + + 674, 2382, 2383, 1341, 674, 674, 3517, 3301, 674, 674, + 1325, 674, 2384, 1337, 674, 1338, 674, 2309, 724, 1325, + 1337, 2423, 1338, 2385, 3502, 3519, 674, 1341, 1337, 674, + 1338, 674, 2309, 674, 1341, 3478, 674, 3479, 1325, 3537, + 674, 2386, 1341, 1325, 674, 3849, 674, 1337, 674, 1338, + 1804, 2388, 1337, 1325, 1338, 1118, 1118, 1118, 1118, 1118, + 2387, 1341, 2473, 674, 674, 2306, 1341, 674, 674, 1337, + 3495, 1338, 674, 1473, 1325, 1325, 3471, 2391, 1337, 2389, + 1338, 2390, 674, 1341, 2308, 674, 3496, 1283, 1490, 674, + 1491, 2392, 1341, 674, 674, 674, 1325, 1337, 674, 1338, + + 2393, 2394, 1337, 1325, 1338, 2526, 2526, 2526, 2526, 2526, + 2526, 1341, 1337, 674, 1338, 674, 1341, 674, 674, 2395, + 3498, 3532, 674, 3533, 1325, 2306, 1341, 1392, 674, 674, + 3407, 2396, 674, 1337, 1337, 1338, 1338, 1325, 3408, 674, + 674, 2398, 3850, 2397, 3538, 3409, 674, 1341, 1341, 674, + 674, 2305, 1325, 674, 674, 1337, 3515, 1338, 1473, 2399, + 1325, 3521, 1337, 1325, 1338, 2400, 3420, 674, 3501, 1341, + 3421, 674, 3851, 674, 3484, 674, 1341, 674, 674, 674, + 2309, 2401, 674, 1337, 1325, 1338, 2308, 3852, 3529, 3534, + 1490, 674, 2402, 2421, 674, 2306, 1337, 2403, 1338, 674, + + 2404, 674, 3522, 674, 2405, 2405, 2405, 2405, 2405, 2405, + 2407, 1337, 674, 1338, 1325, 1392, 674, 3853, 3854, 1337, + 2418, 2419, 2424, 2417, 1338, 1341, 674, 674, 674, 1325, + 3525, 674, 3514, 2420, 3855, 674, 1341, 1325, 674, 674, + 2308, 3443, 674, 1337, 1490, 1338, 1491, 2308, 3856, 674, + 674, 1490, 1337, 1491, 1338, 2422, 674, 1341, 2406, 2425, + 2309, 1325, 3497, 674, 724, 2309, 1341, 724, 674, 2423, + 3518, 2703, 674, 1337, 1473, 1338, 1325, 1326, 1326, 1326, + 1326, 1326, 1326, 674, 1325, 2305, 3857, 1341, 1337, 2430, + 1338, 2305, 3535, 674, 674, 2432, 1337, 1325, 1338, 3523, + + 2433, 2431, 1341, 3858, 674, 674, 3527, 3859, 674, 3503, + 1341, 674, 674, 1490, 2434, 1491, 674, 3528, 674, 1325, + 1337, 2408, 1338, 2527, 2409, 3316, 2410, 1325, 3539, 3860, + 3526, 2411, 2412, 2413, 1341, 1337, 674, 1338, 2414, 674, + 2415, 674, 2416, 1337, 3861, 1338, 1325, 2435, 3862, 1341, + 3536, 674, 2436, 1325, 1325, 674, 1337, 1341, 1338, 674, + 674, 2439, 3540, 674, 2437, 2440, 2052, 2052, 2052, 2052, + 1341, 674, 674, 674, 1062, 1325, 674, 1392, 1337, 3551, + 1338, 2305, 3543, 1325, 3544, 3506, 1337, 3301, 1338, 2305, + 674, 2441, 1341, 674, 674, 674, 674, 2309, 674, 3547, + + 1341, 2423, 674, 2442, 1325, 1337, 674, 2443, 674, 1325, + 3542, 3549, 1337, 1337, 2444, 1338, 674, 3863, 3864, 1341, + 3562, 674, 2053, 674, 2306, 674, 1341, 1341, 674, 2445, + 1325, 674, 674, 674, 1337, 1325, 1338, 2308, 3865, 3866, + 1325, 3541, 2447, 1491, 1338, 2448, 674, 674, 1341, 2449, + 674, 3552, 2450, 3867, 674, 2446, 2451, 3548, 2452, 1325, + 674, 2490, 674, 1337, 1325, 1338, 1473, 1392, 1337, 3558, + 1338, 2455, 1325, 2453, 2454, 674, 3563, 1341, 674, 674, + 3616, 1325, 1341, 674, 674, 674, 1283, 2461, 674, 1337, + 3504, 2456, 2305, 2305, 1337, 3568, 1338, 2457, 1325, 1337, + + 674, 1338, 674, 1341, 2495, 674, 1325, 3505, 1341, 674, + 674, 3569, 3868, 1341, 674, 674, 3869, 1325, 1337, 674, + 1338, 2458, 3557, 1337, 674, 1338, 3564, 3870, 2459, 1283, + 1325, 1337, 1341, 1338, 674, 674, 2306, 1341, 674, 2460, + 1337, 2473, 1338, 674, 3871, 1341, 3560, 674, 674, 1325, + 2462, 674, 2461, 3561, 1341, 674, 674, 1337, 1325, 1338, + 674, 3567, 2506, 3872, 2463, 1337, 674, 1338, 2308, 2465, + 2464, 1341, 1490, 674, 1491, 3571, 1337, 674, 1338, 1341, + 1325, 674, 3873, 1325, 674, 674, 1392, 1283, 2467, 1337, + 1341, 1338, 674, 3874, 1392, 2466, 674, 3566, 3623, 674, + + 1337, 724, 1338, 1341, 2474, 674, 1325, 674, 1337, 674, + 1338, 1325, 3565, 2468, 1341, 2469, 674, 1337, 3877, 1338, + 674, 1325, 1341, 3570, 674, 674, 2309, 2470, 674, 2471, + 3589, 1341, 1325, 674, 2472, 3574, 3573, 674, 3878, 1337, + 674, 1338, 1337, 1325, 1338, 674, 3879, 3590, 674, 2306, + 2475, 1325, 2476, 1341, 3880, 674, 1341, 724, 674, 674, + 724, 674, 674, 1392, 3592, 1337, 1325, 1338, 2687, 1392, + 1337, 3611, 1338, 674, 2490, 724, 674, 3591, 724, 1341, + 1337, 674, 1338, 2480, 1341, 2479, 674, 3593, 3594, 3881, + 674, 1337, 2483, 1338, 1341, 3882, 2481, 2482, 1325, 674, + + 674, 2484, 1337, 1325, 1338, 2485, 2487, 674, 3612, 2486, + 1337, 674, 1338, 2495, 3883, 2306, 1341, 3607, 674, 3613, + 674, 674, 674, 3884, 1341, 1337, 674, 1338, 1325, 674, + 674, 3608, 2489, 1337, 2488, 1338, 1325, 1325, 3614, 1341, + 3885, 674, 3553, 3554, 3615, 674, 674, 1341, 3886, 674, + 2491, 674, 3555, 674, 674, 2309, 2492, 1337, 1325, 1338, + 3556, 2493, 1337, 1325, 1338, 2494, 2503, 2771, 674, 3887, + 3618, 1341, 1337, 674, 1338, 2308, 1341, 674, 674, 1490, + 3626, 1491, 674, 724, 1325, 1325, 1341, 1337, 674, 1338, + 2496, 3627, 674, 3890, 724, 2497, 2498, 1338, 1338, 3621, + + 2309, 1341, 724, 674, 3891, 724, 1325, 674, 3609, 1341, + 1341, 674, 674, 674, 2780, 674, 674, 1337, 3892, 1338, + 3610, 3622, 1337, 724, 1338, 2500, 724, 2506, 1325, 3630, + 3893, 1341, 724, 674, 3678, 1325, 1341, 674, 674, 2499, + 3433, 724, 674, 1337, 1337, 1338, 1338, 2363, 674, 3617, + 1325, 724, 3735, 1473, 2503, 2501, 3798, 1341, 2504, 674, + 674, 2502, 674, 674, 674, 1337, 3894, 1338, 3702, 1325, + 2054, 3242, 2056, 2054, 1325, 724, 3747, 2529, 2057, 1341, + 724, 674, 1325, 724, 2505, 674, 1337, 2510, 1338, 2511, + 2507, 3837, 2508, 2512, 1337, 1325, 1338, 2509, 724, 2309, + + 1341, 1341, 674, 674, 2514, 1325, 674, 2512, 1341, 1337, + 674, 1338, 2515, 1473, 674, 3895, 1490, 3506, 1491, 3896, + 1325, 3572, 674, 1341, 724, 674, 2058, 724, 1337, 674, + 1338, 3875, 1392, 1337, 3624, 1338, 3876, 724, 2517, 3629, + 724, 1337, 1341, 1338, 674, 1325, 2518, 1341, 674, 674, + 724, 3899, 3907, 674, 1337, 1341, 1338, 2519, 2399, 2529, + 1325, 674, 724, 3717, 1337, 3631, 1338, 3909, 1341, 724, + 674, 2520, 724, 724, 674, 3910, 724, 2306, 1341, 1337, + 674, 1338, 3625, 2396, 674, 2366, 2366, 2366, 2366, 2366, + 2366, 2619, 3911, 1341, 2620, 674, 2621, 3638, 2522, 674, + + 724, 2622, 2623, 2624, 1337, 3912, 1338, 2308, 2625, 3913, + 2626, 1490, 2627, 2523, 2529, 3900, 3915, 724, 2524, 1337, + 674, 1338, 3628, 3640, 674, 2405, 2405, 2405, 2405, 2405, + 2405, 1636, 2525, 1341, 724, 674, 3901, 724, 3641, 674, + 1325, 2526, 2526, 2526, 2526, 2526, 2526, 724, 724, 724, + 724, 724, 724, 776, 777, 3633, 1326, 1326, 1326, 1326, + 1326, 1326, 3632, 724, 724, 1283, 724, 724, 1331, 2799, + 2799, 2799, 2799, 724, 3643, 895, 724, 2803, 3634, 2617, + 2308, 2532, 3658, 3486, 1490, 3914, 1491, 2529, 2804, 674, + 2804, 2805, 724, 2805, 2805, 2805, 2805, 2805, 2805, 1530, + + 3916, 1531, 2984, 2984, 2984, 2984, 2984, 2984, 2529, 3639, + 2803, 724, 724, 1533, 3917, 724, 1534, 1535, 1325, 2052, + 2052, 2052, 2052, 3635, 2800, 3636, 724, 1062, 724, 724, + 2806, 724, 3918, 3919, 1326, 1326, 1326, 1326, 1326, 1326, + 3637, 3649, 724, 1283, 724, 724, 1331, 724, 2865, 3040, + 3040, 3040, 3040, 3040, 3040, 3043, 2801, 3651, 3044, 3666, + 3045, 724, 724, 2806, 724, 3046, 3047, 3048, 724, 3650, + 724, 724, 3049, 724, 3050, 2053, 3051, 1530, 3659, 1531, + 3231, 3231, 3231, 3231, 3231, 3231, 3897, 3888, 3898, 3112, + 3113, 1533, 3889, 3114, 1534, 1535, 1807, 3115, 724, 895, + + 3116, 724, 3117, 3041, 3118, 2868, 3119, 724, 3120, 3654, + 724, 3655, 1808, 1808, 1808, 1808, 1808, 1808, 3920, 3642, + 3662, 1806, 724, 1652, 1812, 1653, 2863, 2054, 3244, 2056, + 2054, 2052, 2052, 2052, 2052, 2057, 3921, 3922, 3925, 1062, + 2054, 3242, 2056, 2054, 2067, 2067, 2067, 2067, 2057, 3671, + 3647, 724, 1073, 724, 724, 1818, 724, 1819, 2069, 3248, + 2071, 2069, 2067, 2067, 2067, 2067, 2072, 3648, 724, 1821, + 1073, 724, 1822, 1823, 1807, 3681, 2069, 3254, 2071, 2069, + 2793, 3926, 724, 2058, 2072, 724, 724, 2053, 3927, 724, + 1808, 1808, 1808, 1808, 1808, 1808, 2058, 3653, 3928, 1806, + + 2068, 3660, 1812, 2067, 2067, 2067, 2067, 2069, 3248, 2071, + 2069, 1073, 3929, 2308, 2073, 2072, 3550, 1490, 2068, 1491, + 1325, 724, 674, 3665, 724, 3930, 1274, 1274, 1274, 1274, + 3931, 3932, 2073, 1818, 623, 1819, 1326, 1326, 1326, 1326, + 1326, 1326, 3933, 3936, 3652, 1283, 724, 1821, 1325, 724, + 1822, 1823, 1274, 1274, 1274, 1274, 2532, 3937, 1325, 2068, + 623, 3938, 3939, 2073, 1326, 1326, 1326, 1326, 1326, 1326, + 3923, 3940, 3924, 1283, 1326, 1326, 1326, 1326, 1326, 1326, + 1325, 3941, 1275, 1283, 3414, 3414, 3414, 3414, 3414, 3414, + 3942, 3438, 3438, 3438, 3439, 1325, 2366, 2366, 2366, 2366, + + 2366, 2366, 3934, 3656, 3935, 1283, 3289, 3657, 1275, 3945, + 724, 2405, 2405, 2405, 2405, 2405, 2405, 2532, 3508, 3509, + 1283, 3510, 3943, 2308, 3944, 3511, 3559, 1490, 3512, 1491, + 674, 3664, 674, 3290, 1325, 724, 3513, 2308, 724, 674, + 3595, 1490, 3946, 1491, 724, 3663, 674, 724, 3947, 3950, + 1326, 1326, 1326, 1326, 1326, 1326, 2305, 3951, 3440, 1283, + 3441, 724, 1331, 1325, 724, 674, 3952, 3953, 3414, 3414, + 3414, 3414, 3414, 3414, 3954, 3955, 3359, 3667, 3442, 2526, + 2526, 2526, 2526, 2526, 2526, 3958, 724, 724, 1283, 724, + 724, 724, 3669, 1337, 724, 1338, 2532, 1339, 3294, 2579, + + 3668, 3679, 1558, 3959, 3960, 3644, 724, 1341, 3968, 724, + 1342, 1343, 1325, 3645, 724, 724, 1007, 724, 724, 724, + 3646, 724, 724, 724, 724, 3670, 724, 3688, 1326, 1326, + 1326, 1326, 1326, 1326, 3682, 3672, 3683, 1283, 724, 1652, + 1331, 1653, 2531, 3676, 724, 724, 1652, 724, 1653, 724, + 1007, 724, 724, 3677, 724, 724, 2578, 724, 724, 3684, + 724, 3685, 3967, 2579, 724, 3686, 724, 724, 3680, 724, + 3973, 1337, 1007, 1338, 3687, 1339, 724, 724, 3689, 724, + 724, 724, 3987, 3295, 724, 1341, 3692, 1007, 1342, 1343, + 3575, 1007, 3136, 3576, 3577, 3578, 3579, 3580, 3581, 3582, + + 3691, 724, 3705, 3583, 724, 674, 724, 3584, 3694, 724, + 3585, 3586, 3587, 3588, 3596, 3596, 3203, 1007, 3596, 1325, + 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, + 3596, 3596, 3596, 3596, 3596, 3597, 3597, 3597, 3597, 3597, + 3597, 3596, 3596, 3596, 3598, 3596, 3596, 3599, 3600, 3600, + 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, + 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, + 3600, 3596, 3596, 3596, 3596, 3596, 3596, 3600, 3601, 3600, + 3602, 3600, 3603, 3600, 3600, 3600, 3600, 3600, 3600, 3600, + 3600, 3600, 3604, 3600, 3600, 3605, 3606, 3600, 3600, 3600, + + 3600, 3600, 3600, 3989, 3596, 3596, 3596, 1325, 2555, 724, + 3693, 724, 724, 724, 724, 724, 724, 724, 724, 2908, + 724, 3701, 3690, 1326, 1326, 1326, 1326, 1326, 1326, 1007, + 724, 3696, 1283, 724, 3695, 1331, 3971, 724, 3698, 3697, + 724, 724, 3699, 724, 724, 1007, 724, 3438, 3438, 3438, + 3439, 724, 724, 2531, 724, 724, 724, 1652, 3700, 1653, + 724, 3716, 3714, 724, 724, 3706, 1530, 3703, 1531, 724, + 724, 724, 724, 724, 724, 1007, 4080, 2579, 3707, 3708, + 1533, 1007, 3970, 1534, 1535, 1325, 3710, 724, 3179, 724, + 724, 724, 724, 724, 724, 3725, 724, 3713, 724, 4054, + + 3715, 1326, 1326, 1326, 1326, 1326, 1326, 3709, 724, 1007, + 1283, 724, 2529, 1331, 3674, 724, 3675, 724, 2532, 3988, + 724, 3711, 1558, 3712, 2531, 3718, 724, 3719, 1652, 724, + 1653, 1007, 3962, 724, 3442, 3720, 724, 724, 724, 3722, + 724, 724, 3721, 1007, 1530, 4090, 1531, 1636, 724, 724, + 3620, 724, 724, 2581, 3727, 4118, 724, 724, 1533, 724, + 724, 1534, 1535, 724, 3724, 3723, 2532, 2531, 4119, 3728, + 724, 1652, 3730, 1653, 3729, 724, 724, 3732, 3974, 724, + 724, 1652, 3726, 1653, 3733, 2529, 1007, 2529, 724, 3735, + 724, 724, 1007, 3972, 724, 3731, 3737, 3738, 1007, 3739, + + 3969, 3734, 724, 3740, 3736, 1558, 3741, 724, 724, 724, + 724, 724, 724, 724, 3742, 724, 724, 3745, 724, 3746, + 724, 3748, 3743, 724, 2972, 3750, 3744, 3749, 724, 724, + 2529, 724, 724, 724, 724, 724, 3755, 724, 724, 724, + 3996, 1007, 724, 3753, 3752, 724, 3756, 3758, 3754, 3751, + 724, 724, 724, 724, 724, 724, 3977, 3757, 4152, 3759, + 724, 3760, 724, 724, 3764, 724, 3763, 1007, 724, 3765, + 724, 724, 4153, 724, 3975, 3761, 724, 3762, 3766, 724, + 724, 3768, 1007, 724, 3769, 724, 2531, 724, 724, 724, + 3770, 3771, 1653, 3772, 3767, 724, 3773, 724, 724, 724, + + 724, 3774, 724, 724, 724, 724, 724, 3776, 2531, 4158, + 724, 3777, 1652, 724, 1653, 3779, 3780, 3781, 724, 724, + 3784, 3775, 724, 3568, 724, 3778, 3782, 724, 3785, 2532, + 724, 724, 2531, 724, 3783, 3786, 1652, 724, 1653, 724, + 724, 2687, 724, 3789, 3787, 724, 3981, 3790, 724, 724, + 3791, 3788, 724, 1558, 1007, 1558, 3976, 724, 2666, 724, + 724, 724, 724, 3978, 724, 724, 3793, 724, 724, 1007, + 724, 3792, 3796, 1007, 3797, 2532, 3794, 724, 3799, 3800, + 3979, 724, 1007, 724, 3980, 724, 724, 3795, 724, 3575, + 1007, 1007, 3801, 3802, 3803, 3804, 3805, 3806, 3807, 3814, + + 724, 1558, 3808, 724, 3817, 724, 3809, 724, 724, 3810, + 3811, 3812, 3813, 4004, 1007, 3816, 3815, 3818, 3819, 724, + 724, 2531, 724, 724, 3820, 1652, 3833, 1653, 3596, 3596, + 4040, 1007, 3596, 1325, 3596, 3596, 3596, 3596, 3596, 3596, + 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3597, + 3597, 3597, 3597, 3597, 3597, 3596, 3596, 3596, 3598, 3596, + 3596, 3599, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, + 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, + 3821, 3821, 3821, 3821, 3821, 3596, 3596, 3596, 3596, 3596, + 3596, 3821, 3822, 3821, 3823, 3821, 3821, 3821, 3821, 3821, + + 3821, 3821, 3821, 3821, 3821, 3821, 3824, 3821, 3821, 3825, + 3826, 3821, 3821, 3821, 3821, 3821, 3821, 3982, 3596, 3596, + 3596, 3827, 724, 1007, 724, 724, 3829, 724, 724, 2764, + 3832, 724, 2764, 724, 4170, 3828, 724, 3834, 3830, 724, + 2784, 724, 724, 2784, 724, 724, 3835, 3831, 724, 3836, + 724, 724, 3669, 724, 724, 1007, 4235, 2703, 3173, 2579, + 724, 3838, 3840, 724, 3839, 724, 724, 1807, 724, 724, + 3438, 3438, 3438, 3439, 724, 724, 3842, 724, 724, 3841, + 3904, 3844, 3846, 3845, 724, 2529, 724, 724, 724, 724, + 3756, 3848, 1806, 3983, 3984, 4015, 3985, 1007, 3788, 3847, + + 3986, 3757, 852, 852, 852, 852, 3902, 3902, 3902, 3902, + 2796, 2797, 895, 2796, 724, 907, 1007, 724, 895, 2799, + 2799, 2799, 2799, 3990, 1807, 895, 724, 3948, 4020, 724, + 3756, 3905, 1007, 2881, 2890, 2529, 3956, 3843, 724, 3675, + 2805, 3757, 2805, 2805, 2805, 2805, 2805, 2805, 2805, 1806, + 2805, 2805, 2805, 2805, 2805, 2805, 4249, 3442, 1806, 1806, + 2891, 3906, 2894, 1007, 853, 854, 855, 856, 857, 2865, + 1007, 858, 3961, 2905, 2800, 859, 2863, 1007, 860, 4301, + 2863, 861, 1007, 3179, 1007, 1806, 1007, 1806, 1007, 3994, + 3992, 3991, 2909, 2801, 1007, 4057, 2798, 2866, 1806, 2793, + + 4090, 3993, 3957, 2005, 1007, 1007, 2801, 3963, 3963, 3963, + 3964, 3995, 1007, 2892, 1007, 1007, 4011, 1806, 4002, 3998, + 3908, 3575, 4007, 3997, 3801, 3802, 3803, 3949, 3805, 3806, + 3807, 2863, 2863, 1007, 3808, 4001, 4399, 4012, 3809, 1007, + 1007, 3810, 3811, 3812, 3813, 1807, 3999, 1007, 4000, 2865, + 3203, 1007, 4003, 1007, 4013, 4023, 4400, 1007, 2930, 4005, + 4037, 1808, 1808, 1808, 1808, 1808, 1808, 1007, 2863, 3962, + 1806, 4008, 4006, 1812, 3965, 1007, 1007, 4016, 4021, 3966, + 3966, 1007, 4033, 1806, 1007, 3966, 1007, 4009, 4010, 2866, + 1007, 4048, 2868, 4014, 4034, 2005, 4035, 1007, 4017, 4017, + + 4017, 4018, 4036, 1007, 1818, 1007, 2926, 1007, 4022, 2868, + 4045, 1007, 2867, 4039, 2005, 4403, 1007, 2862, 1821, 4052, + 4024, 1822, 1823, 1807, 4041, 1007, 4047, 1007, 4025, 1007, + 1007, 1007, 2868, 4053, 4049, 4026, 1007, 4069, 2868, 1808, + 1808, 1808, 1808, 1808, 1808, 1007, 4106, 4059, 1806, 4063, + 1007, 1812, 4038, 4038, 4038, 4038, 4038, 4038, 4046, 4058, + 1007, 4042, 2867, 4050, 2005, 4051, 1007, 4043, 2865, 4055, + 1007, 1007, 2865, 4056, 4065, 4070, 1007, 4075, 4071, 4078, + 1007, 1007, 1818, 2868, 1819, 4019, 1007, 1007, 4062, 1007, + 4068, 4067, 4060, 2975, 1007, 4081, 1821, 1007, 1007, 1822, + + 1823, 3963, 3963, 3963, 3964, 4061, 1007, 1007, 4044, 4128, + 4072, 2866, 4073, 1007, 4064, 2867, 1007, 2005, 1007, 1007, + 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2962, 1007, 1007, + 4077, 4083, 4079, 1007, 4093, 4074, 4076, 2990, 1007, 4066, + 2865, 4084, 1007, 4089, 1007, 4409, 2868, 1007, 1007, 1007, + 2866, 2868, 1806, 1007, 2867, 4091, 2005, 4092, 1007, 4104, + 1007, 4082, 1806, 4027, 4028, 1007, 4107, 1007, 3965, 4085, + 4085, 4085, 4086, 3966, 3966, 1807, 4029, 1007, 4108, 3966, + 4030, 4094, 2866, 4031, 4032, 2867, 2867, 2005, 2005, 1007, + 1007, 2984, 2984, 2984, 2984, 2984, 2984, 4110, 4101, 2865, + + 1806, 1007, 4095, 1007, 1007, 4105, 1007, 1007, 4120, 2965, + 1007, 4122, 4109, 2965, 4096, 3438, 3438, 3438, 4097, 2866, + 4102, 4113, 1007, 4103, 1007, 2005, 1007, 1007, 4112, 4114, + 1007, 4115, 2380, 4116, 4117, 3005, 1007, 3013, 3017, 2866, + 4126, 4125, 1007, 4123, 2868, 2005, 1007, 1007, 4087, 1007, + 4143, 1007, 1007, 2868, 3054, 4111, 4088, 4124, 1007, 2865, + 1806, 4121, 1806, 1806, 1007, 1007, 4129, 1007, 4410, 4134, + 2863, 3015, 1007, 4127, 4130, 4130, 4130, 4131, 1007, 1806, + 2863, 1007, 4098, 2926, 4099, 1007, 4135, 4136, 1007, 4138, + 1007, 1007, 1007, 1007, 4141, 1007, 1007, 4133, 4142, 4144, + + 4411, 4137, 4100, 4140, 4139, 1007, 1007, 4145, 1007, 4146, + 4147, 2866, 1807, 1007, 2865, 2867, 4155, 2005, 2865, 1007, + 1007, 4149, 1007, 4148, 1007, 1007, 1007, 4150, 3040, 3040, + 3040, 3040, 3040, 3040, 4151, 1007, 1007, 1806, 4159, 1007, + 4161, 1007, 4163, 4154, 1007, 4167, 1007, 1007, 1007, 2868, + 2868, 4160, 4162, 4156, 2865, 4157, 3061, 4169, 1007, 4175, + 1007, 4132, 1007, 4182, 4186, 4172, 2865, 1007, 4177, 1007, + 4166, 2868, 2866, 2862, 1007, 4171, 2867, 4174, 2005, 1007, + 1007, 1806, 4180, 1007, 4178, 1007, 4173, 4179, 1007, 4181, + 4183, 3074, 1007, 1007, 1007, 4164, 2866, 3081, 4168, 4185, + + 4187, 1007, 2005, 4184, 1007, 1007, 1007, 2868, 4189, 4190, + 4188, 3085, 1007, 4194, 3086, 1007, 1806, 2868, 4196, 4165, + 2866, 1007, 1806, 4198, 2867, 4197, 2005, 4206, 1007, 1007, + 4176, 1007, 4199, 4202, 1007, 4195, 1806, 1007, 4200, 1806, + 1007, 1007, 2865, 4201, 4204, 4212, 1007, 4214, 4216, 1007, + 1007, 2868, 3102, 3103, 4205, 4209, 4203, 4208, 2862, 2867, + 1007, 2005, 4191, 1007, 3107, 4210, 1007, 4217, 2863, 4218, + 1007, 4219, 4220, 4221, 3111, 4192, 1007, 1806, 1806, 1007, + 4207, 4260, 4211, 4228, 1007, 4193, 1007, 4231, 1007, 1806, + 1007, 4222, 4223, 1007, 4224, 1007, 2862, 1007, 4225, 1806, + + 4215, 4226, 1007, 4236, 1007, 3121, 4230, 2863, 1007, 4227, + 4232, 4213, 4233, 4229, 1007, 1007, 4241, 1007, 1007, 4234, + 2868, 4240, 1007, 2865, 1007, 2863, 4245, 1007, 4237, 4258, + 1806, 1007, 1007, 1007, 1007, 4248, 4242, 1007, 4246, 4243, + 1007, 4244, 1007, 1007, 1007, 1007, 4252, 1007, 4247, 4250, + 4256, 4251, 4253, 3139, 1007, 1007, 4238, 3140, 4257, 1007, + 4254, 4268, 1007, 4269, 1007, 1007, 4259, 1007, 4261, 4239, + 4272, 4255, 4264, 1007, 4270, 2868, 4262, 4263, 1806, 1007, + 4282, 1007, 1806, 1007, 4265, 2868, 1007, 4273, 4266, 1007, + 4267, 4276, 4275, 1007, 4278, 4274, 4277, 4271, 1007, 1007, + + 1007, 4279, 3162, 1007, 2866, 1007, 1007, 4281, 4280, 1007, + 2005, 4283, 1007, 4284, 4285, 4286, 1007, 1007, 1007, 4292, + 4288, 4302, 4304, 1007, 3181, 1007, 1007, 1806, 1007, 4289, + 4290, 4287, 2866, 1007, 1007, 4291, 2867, 4294, 2005, 2865, + 1007, 4295, 4296, 4300, 4318, 1007, 3179, 1007, 4306, 1806, + 1007, 4297, 4298, 4320, 2868, 1007, 1007, 1007, 2866, 4299, + 3173, 4307, 2867, 3187, 2005, 4312, 1007, 4308, 1007, 4310, + 4311, 1007, 4325, 4327, 4309, 1007, 3136, 4323, 4313, 1007, + 4314, 1007, 2862, 4303, 4316, 4329, 1007, 4305, 1806, 1007, + 1007, 1007, 1007, 2862, 1007, 4315, 4293, 4319, 4331, 1007, + + 4317, 1007, 4332, 4336, 4324, 1007, 4321, 1007, 4328, 3206, + 1007, 4333, 4335, 4338, 1007, 2865, 4334, 1007, 4339, 2868, + 1007, 1007, 4354, 1007, 2862, 4357, 4412, 1007, 4430, 4322, + 1007, 1007, 4360, 1007, 1806, 4373, 1007, 4326, 4356, 4355, + 4358, 4359, 1007, 1007, 2863, 4419, 1007, 1007, 724, 4374, + 4431, 1007, 1007, 2866, 4361, 1007, 4362, 4363, 4382, 2005, + 4375, 1007, 4330, 1007, 1007, 2865, 4390, 1007, 4397, 4213, + 4383, 4432, 4376, 4337, 4340, 4388, 1007, 4341, 4342, 4343, + 4344, 4345, 4346, 4347, 4392, 1007, 1007, 4348, 1007, 4391, + 4439, 4349, 4440, 4389, 4350, 4351, 4352, 4353, 3596, 3596, + + 4441, 1007, 3596, 1807, 3596, 3596, 3596, 3596, 3596, 3596, + 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 4364, + 4364, 4364, 4364, 4364, 4364, 3596, 3596, 3596, 4365, 3596, + 3596, 4366, 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, + 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, + 4367, 4367, 4367, 4367, 4367, 3596, 3596, 3596, 3596, 3596, + 3596, 4367, 4368, 4367, 4369, 4367, 4367, 4367, 4367, 4367, + 4367, 4367, 4367, 4367, 4367, 4367, 4370, 4367, 4367, 4371, + 4372, 4367, 4367, 4367, 4367, 4367, 4367, 4377, 3596, 3596, + 3596, 4384, 4384, 4384, 4385, 1007, 4387, 3234, 4378, 4393, + + 4379, 4380, 4381, 1007, 4394, 3203, 1007, 1807, 2865, 4395, + 2863, 3236, 4396, 4402, 2270, 4424, 1007, 4398, 1007, 3804, + 4413, 3804, 1806, 3231, 3231, 3231, 3231, 3231, 3231, 1007, + 724, 2868, 1806, 724, 2048, 2049, 1806, 2052, 2052, 2052, + 2052, 2062, 2063, 2062, 2063, 1062, 2112, 4442, 2112, 4401, + 2052, 2052, 2052, 2052, 724, 2112, 4423, 724, 1062, 3804, + 4443, 1558, 4406, 4444, 1007, 724, 1007, 4445, 724, 4407, + 4425, 4446, 2067, 2067, 2067, 2067, 3804, 2116, 4386, 4408, + 1073, 2067, 2067, 2067, 2067, 2121, 4447, 1558, 4448, 1073, + 3644, 724, 4449, 2053, 724, 4417, 4450, 4453, 3645, 3438, + + 3438, 3438, 3439, 4426, 4427, 3646, 2053, 4404, 724, 4428, + 4451, 724, 3287, 4405, 4414, 4452, 4420, 1558, 1138, 1331, + 4415, 724, 1331, 4416, 724, 4421, 2116, 2112, 2068, 2112, + 4470, 4464, 4473, 1331, 4429, 4422, 2112, 2068, 4433, 4463, + 3323, 3419, 1343, 1343, 4434, 4466, 3438, 3438, 3438, 3439, + 1343, 4435, 4458, 4436, 4465, 4437, 1325, 4438, 4467, 3527, + 4460, 1343, 4478, 4484, 2529, 1343, 3843, 724, 3675, 4468, + 4469, 1325, 1326, 1326, 1326, 1326, 1326, 1326, 4459, 4455, + 4485, 1283, 4471, 1392, 1343, 4475, 4418, 1326, 1326, 1326, + 1326, 1326, 1326, 2461, 4476, 4474, 1283, 4477, 2309, 1343, + + 1343, 4472, 1343, 1343, 1343, 4479, 3315, 3316, 4480, 1343, + 3319, 2305, 1343, 3440, 1343, 3441, 4483, 4484, 1343, 4481, + 4482, 1343, 4486, 3561, 1343, 4456, 1343, 4487, 4488, 4489, + 4490, 1283, 1283, 3442, 2306, 1283, 4491, 4492, 4493, 1343, + 4494, 4495, 4496, 4497, 4498, 4499, 4500, 4496, 4501, 4457, + 1325, 4502, 4503, 4504, 4505, 4506, 4507, 4508, 4509, 4510, + 4511, 4512, 4514, 1262, 4516, 4517, 1326, 1326, 1326, 1326, + 1326, 1326, 4518, 2272, 3363, 1283, 4515, 4513, 1331, 1265, + 1266, 4521, 3366, 1325, 4524, 4525, 4526, 4527, 1343, 1325, + 4530, 1392, 1343, 1343, 4533, 4528, 4529, 4532, 4531, 1343, + + 1343, 4536, 4535, 1343, 3395, 4537, 4534, 1343, 1283, 1337, + 1343, 1338, 3381, 1339, 1283, 2309, 4461, 1343, 1343, 4538, + 1343, 3396, 1273, 1341, 1343, 4539, 1342, 1343, 1325, 4540, + 4541, 1343, 4556, 4542, 1343, 2309, 4564, 4543, 4519, 1343, + 1343, 1343, 4520, 1343, 1326, 1326, 1326, 1326, 1326, 1326, + 1343, 4523, 4546, 1283, 1392, 4545, 1331, 1473, 1343, 4522, + 4549, 2485, 4544, 4547, 2305, 1343, 4550, 3364, 1343, 4548, + 1343, 1343, 4559, 1343, 4554, 1392, 1343, 1343, 2308, 1343, + 4529, 2309, 1490, 4557, 1491, 2306, 1343, 1337, 1343, 1338, + 1343, 1339, 4552, 4551, 1343, 2305, 2308, 1325, 1343, 4578, + + 1490, 1341, 4553, 4555, 1342, 4462, 4569, 2306, 1343, 4558, + 1343, 1343, 1343, 3414, 3414, 3414, 3414, 3414, 3414, 2309, + 4579, 1343, 1283, 4580, 1343, 4560, 4560, 4560, 4561, 4565, + 4565, 4565, 4566, 4570, 4574, 1343, 4575, 4582, 1343, 1343, + 4571, 1343, 1343, 4577, 4562, 4562, 4562, 4562, 4562, 4562, + 2309, 3438, 3438, 3438, 3438, 1343, 4572, 4572, 4572, 4572, + 4572, 4572, 4576, 1343, 2308, 4596, 1343, 4584, 1490, 1343, + 1491, 3438, 3438, 3438, 3439, 4583, 4594, 4600, 4606, 1343, + 4595, 1343, 4597, 3534, 4567, 4563, 4598, 4605, 1343, 2306, + 1490, 4609, 1491, 4599, 1343, 4608, 2485, 1343, 1343, 1283, + + 1343, 1343, 1343, 4607, 1343, 1343, 2305, 1343, 4612, 1343, + 1343, 4613, 4624, 4639, 4610, 4573, 4568, 1343, 4586, 4587, + 4588, 1343, 4611, 4589, 1343, 4602, 4590, 4591, 4616, 4603, + 4601, 4604, 2309, 1343, 4592, 4618, 1343, 1343, 4581, 1343, + 1343, 2305, 4619, 4593, 4602, 4617, 4621, 2306, 4614, 2309, + 1343, 4620, 1343, 4623, 1343, 4615, 1343, 1343, 4581, 2306, + 4625, 1343, 4622, 4627, 1343, 4640, 1343, 4626, 1343, 4628, + 1343, 1343, 4629, 4630, 1343, 1343, 1343, 1343, 4631, 2305, + 1343, 1343, 4632, 4633, 4634, 1343, 1343, 4636, 4633, 1343, + 2309, 4635, 4641, 1343, 1343, 1343, 2363, 4637, 4642, 4643, + + 4644, 4645, 4646, 1343, 2309, 4647, 4648, 4638, 1343, 1343, + 1343, 1343, 4649, 1343, 1343, 1343, 1343, 1343, 2308, 4651, + 1343, 1392, 1490, 1343, 1491, 2485, 4652, 4654, 2308, 1343, + 4657, 1392, 1490, 4650, 4656, 4662, 1343, 4653, 4655, 4658, + 1343, 4660, 4659, 1343, 1343, 4661, 1343, 4663, 4664, 1343, + 1343, 1343, 4665, 4666, 4667, 2309, 4668, 1343, 1343, 4669, + 1343, 4670, 1343, 4672, 1392, 4675, 3529, 1343, 4671, 2308, + 1343, 1343, 1343, 4673, 4678, 1491, 4676, 4681, 4680, 1343, + 1343, 4677, 3506, 1343, 1343, 1343, 4674, 1343, 4679, 4682, + 4683, 4685, 4684, 1343, 1343, 2305, 1343, 4686, 1343, 2309, + + 1343, 1343, 4687, 4689, 1343, 1343, 1490, 1343, 1491, 1343, + 1343, 4691, 1343, 4688, 1343, 3381, 4692, 1343, 1343, 1343, + 4690, 1343, 4696, 4694, 4695, 4697, 4693, 1343, 2309, 1343, + 1392, 4700, 4699, 1343, 1343, 4703, 2309, 1343, 4701, 4707, + 4702, 1343, 1343, 1343, 4698, 4704, 1343, 1343, 4706, 1343, + 1343, 4711, 2309, 1343, 1343, 2308, 4712, 1343, 4705, 1490, + 4708, 1491, 1473, 1343, 3568, 4709, 1343, 4722, 4723, 1490, + 1343, 1491, 4724, 4725, 1343, 1343, 4744, 1343, 1343, 4726, + 1343, 4710, 2306, 1343, 4713, 4714, 1343, 1343, 4789, 1283, + 4602, 4715, 1343, 1392, 4745, 4716, 4717, 2309, 1343, 4735, + + 4718, 4719, 4720, 4727, 4758, 4721, 4728, 4729, 4759, 4730, + 4737, 2305, 1343, 4736, 4749, 4740, 1343, 4738, 4763, 1343, + 4731, 4732, 4733, 4734, 4739, 4746, 1343, 4741, 4742, 1343, + 4750, 4743, 1343, 1343, 1473, 4755, 2305, 1343, 4747, 1325, + 4751, 4748, 4752, 1343, 1343, 2309, 1490, 1392, 1491, 1343, + 1343, 1343, 4741, 4753, 4756, 4756, 1392, 1343, 4754, 4757, + 1343, 1343, 2363, 4762, 1283, 2305, 1343, 4760, 1343, 1343, + 4761, 2306, 1473, 2308, 4767, 1343, 1343, 1490, 2309, 1491, + 1343, 1392, 4765, 1343, 4766, 4768, 1473, 1343, 1343, 1343, + 4784, 4786, 4787, 4785, 4788, 4764, 1343, 1343, 1343, 1343, + + 1343, 1343, 724, 724, 724, 724, 1343, 724, 724, 724, + 724, 1343, 4791, 724, 4794, 724, 4812, 724, 724, 4795, + 724, 4792, 724, 724, 724, 724, 4793, 724, 724, 724, + 4796, 4797, 724, 5006, 724, 724, 3620, 4804, 4798, 724, + 724, 2532, 724, 5015, 724, 724, 4799, 724, 724, 4800, + 724, 5016, 724, 724, 5017, 724, 2532, 724, 4802, 4805, + 724, 4769, 1343, 4770, 4770, 4803, 4801, 4770, 4771, 4770, + 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4772, 4770, + 4770, 4770, 4770, 4770, 4773, 4773, 4773, 4773, 4773, 4773, + 4770, 4770, 4770, 4774, 4770, 4770, 4775, 4776, 4776, 4776, + + 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, + 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, + 4770, 4770, 4770, 4770, 4770, 4770, 4777, 4778, 4776, 4779, + 4776, 4780, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, + 4776, 4781, 4776, 4776, 4782, 4783, 4776, 4776, 4776, 4776, + 4776, 4776, 4770, 4770, 4770, 4770, 4768, 4533, 724, 724, + 724, 5018, 4809, 724, 724, 724, 2529, 724, 724, 5027, + 724, 4806, 4821, 724, 2687, 724, 4807, 724, 4810, 5028, + 4808, 2531, 724, 3860, 724, 1652, 724, 1653, 2531, 724, + 724, 724, 1652, 4814, 4813, 724, 4811, 724, 724, 5036, + + 2532, 2529, 724, 724, 4817, 724, 5037, 724, 4816, 4815, + 724, 4818, 724, 4906, 724, 724, 5038, 724, 1473, 724, + 724, 2532, 724, 1636, 724, 4560, 4560, 4560, 4561, 5039, + 724, 724, 4769, 1343, 1325, 724, 4820, 5040, 4819, 4565, + 4565, 4565, 4566, 4890, 4562, 4562, 4562, 4562, 4562, 4562, + 1326, 1326, 1326, 1326, 1326, 1326, 724, 5049, 724, 1283, + 724, 724, 1331, 724, 4823, 724, 4572, 4572, 4572, 4572, + 4572, 4572, 724, 4822, 2532, 724, 724, 724, 724, 5050, + 724, 724, 724, 724, 4825, 4563, 724, 724, 4827, 724, + 5045, 724, 4826, 1530, 4567, 1531, 724, 5046, 4931, 724, + + 724, 724, 4828, 4579, 724, 724, 4580, 1533, 724, 724, + 1534, 1535, 724, 724, 724, 4829, 2531, 724, 4528, 1325, + 1652, 5057, 1653, 724, 724, 4824, 4568, 4834, 724, 724, + 4600, 5041, 5059, 724, 5041, 1326, 1326, 1326, 1326, 1326, + 1326, 4830, 4985, 724, 1283, 724, 4832, 1331, 724, 724, + 4833, 5042, 724, 3763, 724, 724, 4831, 724, 4612, 4836, + 724, 5043, 4835, 1652, 724, 1653, 4837, 724, 4842, 724, + 724, 4841, 724, 724, 4844, 724, 4846, 1558, 1530, 2687, + 1531, 724, 4790, 4601, 4847, 724, 4843, 5060, 724, 2529, + 724, 724, 1533, 724, 724, 1534, 1535, 4894, 5061, 724, + + 5062, 4838, 2532,11275, 724, 4839, 724, 4840, 2532, 724, + 4845, 724, 724, 724, 5063, 724, 724, 724, 724, 2529, + 724, 724, 4838, 724, 4851, 724, 4849, 2771, 724, 4853, + 724, 4848, 724, 4850, 724, 724, 4854, 724, 724, 724, + 724, 724, 4856, 724, 724, 724, 724, 4858, 4852, 724, + 724, 4859, 4855, 724, 724, 724, 4857, 4860, 724, 724, + 724, 5064, 724, 724, 724, 724, 4862, 724, 724, 724, + 724, 3885, 4861, 4988, 724, 724, 4863, 4864, 4866, 2529, + 724, 4865, 724, 724, 5065, 4867, 724, 724, 724, 4868, + 724, 724, 5066, 724, 4868, 724, 2532, 4869, 724, 724, + + 5047, 5048, 5067, 4870, 724, 2579, 4872, 724, 4876, 4877, + 4871, 5068, 724, 724, 724, 4875, 4873, 724, 4874, 724, + 5071, 724, 724, 4878, 724, 4879, 724, 724, 724, 4881, + 724, 724, 724, 724, 724, 724, 724, 5041, 4880, 724, + 5041, 2532, 4884, 5079, 4882, 724, 724, 4886, 4883, 2531, + 724, 724, 724, 1652, 4887, 1653, 724, 724, 724, 5082, + 5085, 724, 2531, 724, 4885, 4888, 1652, 724, 4891, 724, + 724, 2687, 724, 4889, 724, 724, 724, 724, 5086, 5087, + 4892, 724, 4897, 4893, 4895, 724, 724, 724, 4678, 4896, + 724, 724, 724, 4898, 4899, 4900, 724, 724, 5012, 2811, + + 724, 2532, 724, 4902, 724, 724, 4905, 5088, 724, 724, + 724, 724, 4901, 724, 4904, 724, 724, 4903, 724, 3758, + 724, 724, 2531, 724, 724, 4910, 4908, 4907, 1653, 724, + 724, 4911, 5090, 724, 724, 724, 724, 3735, 724, 4909, + 5093, 724, 724, 4912, 4913, 4914, 724, 724, 724, 724, + 2532, 724, 4916, 724, 724, 724, 5094, 4917, 5091, 724, + 724, 4918, 2532, 724, 724, 4915, 4919, 724, 724, 724, + 5095, 2529, 724, 4920, 724, 724, 724, 5092, 5096, 4921, + 724, 724, 4922, 1652, 724, 1653, 724, 724, 724, 724, + 5097, 724, 724, 724, 5098, 724, 4926, 724, 4923, 4925, + + 724, 3620, 724, 724, 5100, 4928, 724, 724, 724, 4924, + 724, 724, 724, 4722, 4929, 5101, 5102, 724, 4927, 4930, + 2532, 4932, 724, 4693, 724, 4934, 724, 724, 4933, 724, + 724, 724, 724, 2848, 5119, 4936, 724, 724, 4935, 2532, + 724, 724, 724, 5041, 724, 4940, 5041, 4937, 2531, 724, + 4957, 4938, 1652, 724, 1653, 724, 5120, 4939, 724, 724, + 724, 4941, 724, 1636, 724, 724, 4942, 724, 5121, 724, + 1652, 724, 1653, 4944, 724, 724, 724, 4956, 5120, 4955, + 724, 724, 4943, 4945, 724, 4961, 724, 724, 4959, 724, + 724,11275, 4962, 724,11275, 724, 4958, 2529, 724, 4963, + + 724, 4964, 4960, 4968, 724, 5019, 5019, 5019, 5019, 724, + 724, 4946, 4947, 4965, 5122, 724, 724, 4838, 4948, 4969, + 5123, 724, 4949, 4950, 2532, 724, 4970, 4951, 4952, 4953, + 724, 4966, 4954, 4973, 4967, 5126, 4974, 5127, 724, 4971, + 1636, 724, 4972, 724, 724, 4975, 5128, 4976, 724, 724, + 724, 1652, 5149, 1653, 4979, 724, 5080, 4980, 4977, 4768, + 5150, 4981, 724, 4978, 2532, 724, 4982, 724, 724, 2529, + 724, 724, 724, 724, 724, 4987, 724, 724, 724, 724, + 724, 4980, 4983, 724, 2579, 4965, 724, 5187, 4986, 4984, + 2529, 724, 724, 5325, 724, 724, 1636, 724, 2531, 724, + + 724, 4989, 1652, 724, 1653, 1636, 724, 724, 724, 2532, + 724, 5011, 724, 4990, 4991, 724, 724, 724, 724, 1007, + 724, 724, 724, 724, 5002, 724, 5041, 5000, 724, 5041, + 5004, 5001, 5219, 724, 724, 4992, 4770, 4770, 5010, 724, + 4770, 4771, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, + 4770, 4772, 4770, 4770, 4770, 4770, 4770, 4773, 4773, 4773, + 4773, 4773, 4773, 4770, 4770, 4770, 4774, 4770, 4770, 4775, + 4993, 4993, 4993, 4993, 4993, 4993, 4993, 4993, 4993, 4993, + 4993, 4993, 4993, 4993, 4993, 4993, 4993, 4993, 4993, 4993, + 4993, 4993, 4993, 4770, 4770, 4770, 4770, 4770, 4770, 4994, + + 4995, 4993, 4996, 4993, 4993, 4993, 4993, 4993, 4993, 4993, + 4993, 4993, 4993, 4993, 4997, 4993, 4993, 4998, 4999, 4993, + 4993, 4993, 4993, 4993, 4993, 4770, 4770, 4770, 4770, 724, + 4768, 724, 724, 724, 724, 2531, 724, 724, 724, 1652, + 3890, 5007, 724, 5099, 5003, 5005, 724, 724, 5099, 5399, + 2531, 724, 724, 5008, 1652,11275, 5013, 724,11275, 5009, + 5473, 5021, 5022, 5014, 5019, 5019, 5019, 5020, 5023, 5029, + 11275, 3904, 3983,11275, 5047, 5048, 5030, 5024, 5025, 5026, + 5031, 5032, 5051, 5058, 1007, 5033, 5034, 5035, 724, 5052, + 724, 724, 1636, 724, 5053, 724, 724, 1806, 5054, 5055, + + 5056,11275,11275, 5089,11275,11275, 4992,11275,11275,11275, + 11275,11275,11275, 5141, 3986, 1007, 5069, 5070, 3902, 3902, + 3902, 3902, 3905, 1007, 895, 5081, 5081, 5081, 5081, 5081, + 5081, 5233, 5451, 5234, 5072, 5083, 5083, 5083, 5083, 1806, + 11275, 895, 5073,11275,11275,11275,11275,11275,11275,11275, + 11275,11275, 3906,11275,11275,11275,11275, 5041,11275,11275, + 5041,11275,11275, 5082,11275,11275, 5075,11275,11275,11275, + 11275,11275,11275, 1807, 5074,11275, 5077,11275,11275,11275, + 11275, 5077,11275, 1007, 1807, 724, 5170, 5576, 5076, 5078, + 724, 3963, 3963, 3963, 3963, 5577, 1007, 1007, 1806, 1007, + + 4966, 1007, 1007, 4967, 1007, 2801, 5133, 4011, 5118, 1806, + 5106, 3963, 3963, 3963, 3964, 5283, 5104, 5284, 5105, 5103, + 5109, 5139, 5084, 5108, 5130, 5130, 5130, 5131, 5108, 5580, + 1007, 5107, 1806, 5113, 5111, 1007, 5140, 5135, 5136, 1806, + 5110, 5112, 1007, 1007, 5116, 5115, 5125, 5134, 5114, 5124, + 5115, 2868, 5117, 1807, 3963, 3963, 3963, 3964, 5137, 1007, + 1007, 1007, 1007, 1007, 5142, 1007, 1007, 1007, 5535, 1808, + 1808, 1808, 1808, 1808, 1808, 5138, 5157, 5143, 1806, 1007, + 5204, 1812, 1007, 1007, 1007, 1007, 5205, 1007, 1007, 5385, + 1007, 2868, 1007, 1007, 5144, 5148, 5132, 5132, 5145, 5589, + + 1007, 5147, 5132, 1007, 5146, 1007, 5152, 5321, 1007, 5322, + 1007, 1007, 1818, 1007, 1819, 1007, 5166, 5590, 3961, 5153, + 1007, 1007, 5151, 1007, 1007, 5377, 1821, 1007, 1007, 1822, + 1823, 5591, 1007, 2868, 1007, 1007, 1007, 4528, 1807, 1007, + 5154, 1007, 4528, 5332, 5541, 1007, 1007, 5156, 2868, 5155, + 5158, 1007, 5403, 1007, 1808, 1808, 1808, 1808, 1808, 1808, + 2868, 3179, 1007, 1806, 1007, 5594, 1812, 1007, 5160, 1007, + 1007, 5620, 1007, 1007, 5161, 1007, 5159, 1007, 1007, 5041, + 1007, 4012, 5041, 1007, 2868, 1007, 5162, 2865, 1007, 1007, + 5165, 5163, 5181, 5164, 1007, 1007, 2862, 1818, 1007, 1819, + + 1007, 5129, 5167, 1007, 1007, 1007, 1806, 5177, 5168, 1007, + 1007, 1821, 1007, 5621, 1822, 1823, 1007, 1007, 5169, 5171, + 2866, 1007,11275, 5173, 5172, 5180, 2005, 5636, 1007, 5174, + 5174, 5174, 5175, 1007, 5639, 5640, 1007, 2868, 1007, 5176, + 5178, 1007, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4018, + 1007, 1007, 1007, 5196, 4037, 1007, 1007, 1007, 3179, 5184, + 5188, 5641, 1007, 2863, 1007, 1007, 3173, 1007, 5182, 5642, + 5185, 1007, 5183, 1007, 1806, 5193, 1007, 2866, 1007, 1806, + 5189, 2867, 1007, 2005, 1007, 5208, 1007, 1007, 5194, 1007, + 1007, 1007, 5186, 5195, 2865, 1007, 5643, 5190, 1007, 1007, + + 2868, 5191, 2866, 1007, 1007, 1007, 2867, 5644, 5192, 2863, + 1007, 1007, 1807, 4041, 1007, 2863, 1007, 5197, 5199, 1007, + 1007, 1007, 4045, 5198, 5201, 1007, 1007, 4052, 4038, 4038, + 4038, 4038, 4038, 4038, 1007, 1007, 1007, 1806, 1806, 1007, + 1007, 1007, 5215, 1007, 5200, 5221, 5225, 1806, 1007, 5207, + 5202, 3173, 1806, 5646, 5206, 1007, 5203, 2868, 1007, 5210, + 1007, 5209, 2865, 1007, 4560, 4560, 4560, 5212, 4063, 2868, + 1007, 1007, 5647, 1007, 5218, 1007, 1007, 5211, 1007, 4565, + 4565, 4565, 5217, 5213, 5213, 5213, 5213, 5213, 5213, 5214, + 1007, 1007, 5216, 1806, 4065, 1007, 1007, 4044, 5226, 5349, + + 1007, 5350, 5650, 1007, 1007, 1007, 1007, 5220, 1007, 1007, + 5222, 1007, 5223, 5223, 5223, 5223, 5223, 5223, 4069, 1806, + 2868, 4071, 5651, 1331, 4563, 1007, 2961, 2961, 2961, 2962, + 1007, 1007, 1007, 1007, 4567, 5228, 1007, 1007, 1007, 5229, + 1007, 4484, 4075, 1806, 5227, 1007, 1806, 4085, 4085, 4085, + 4086, 4078, 5400, 1007, 1007, 5231, 1007, 4081, 1007, 1007, + 1007, 1007, 5401, 1007, 4083, 4093, 4568, 1806, 1007, 2868, + 5232, 5224, 5649, 5656, 1007, 5241, 1806, 5235, 2865, 1007, + 1007, 1007, 1806, 1007, 5650, 5236, 1007, 1007, 1007, 1806, + 1806, 5680, 1007, 5237, 4085, 4085, 4085, 4085, 1007, 4085, + + 4085, 4085, 4086, 1007, 4079, 1007, 4579, 1007, 1007, 5244, + 1007, 1007, 1007, 1007, 1007, 2965, 1007, 5681, 5242, 1007, + 2121, 5374, 2868, 5375, 5243, 2868, 5230, 1806, 1007, 5238, + 5239, 5246, 2866, 1007, 4088, 5245, 5240, 4584, 2005, 1007, + 3438, 3438, 3438, 4097, 1007, 1007, 1007, 5253, 1007, 4107, + 1007, 5254, 5247, 1007, 4268, 1007, 1007, 5682, 1331, 5255, + 1007, 1007, 5252, 5256, 1007, 1007, 4110, 1007, 1806, 1007, + 1007, 5683, 1007, 3179, 1806, 5630, 1007, 5269, 5275, 5684, + 2866, 1007, 3173, 5270, 2867, 5248, 2005, 1007, 5249, 5250, + 4588, 1806, 1007, 4589, 5282, 5271, 4590, 5251, 1007, 1007, + + 5272, 4122, 5273, 1007, 4592, 1007, 2867, 5655, 2005, 1007, + 1007, 674, 5277, 4593, 1007, 5665, 5278, 1007, 5279, 2868, + 5280, 5281, 1007, 5380, 5685, 5381, 1806, 4581, 5257, 5257, + 5257, 5257, 5257, 5258, 5257, 5257, 5257, 5259, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5260, + 5260, 5260, 5260, 5260, 5260, 5257, 5257, 5257, 5261, 5257, + 5257, 5262, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5257, 5257, 5257, 5257, 5257, + 5257, 5263, 5264, 5263, 5265, 5263, 5263, 5263, 5263, 5263, + + 5263, 5263, 5263, 5263, 5263, 5263, 5266, 5263, 5263, 5267, + 5268, 5263, 5263, 5263, 5263, 5263, 5263, 5257, 5257, 5257, + 5257, 5019, 5019, 5019, 5274, 5276, 4120, 1007, 5286, 1138, + 1007, 1007, 1007, 1007, 2866, 1007, 1007, 5289, 2867, 5285, + 2005, 1007, 5287, 1007, 2121, 2863, 1007, 5288, 1007, 5290, + 1007, 1806, 3179, 5041, 1007, 1007, 5041, 5291, 4130, 4130, + 4130, 4130, 4130, 4130, 4130, 4131, 5019, 5019, 5019, 5292, + 1007, 5474, 1007, 5475, 5592, 1007, 5299, 1007, 4601, 4121, + 1007, 1007, 1007, 1007, 5593, 1007, 1007, 1007, 1007, 5293, + 1806, 1007, 5297, 4143, 5686, 2863, 1007, 2868, 5277, 5296, + + 1007, 1007, 5294, 1007, 5652, 1007, 1007, 5300, 1007, 5295, + 1007, 5687, 1007, 1331, 2121, 1007, 5302, 1007, 1806, 5301, + 5688, 1007, 5629, 5689, 1007, 5298, 1007, 1007, 1007, 1007, + 5304, 5305, 1007, 1007, 1007, 1007, 5303, 1007, 5306, 1007, + 1007, 1007, 1007, 5326, 1007, 1007, 1007, 1007, 5308, 1007, + 1007, 4163, 1007, 5307, 2121, 5309, 1007, 5311, 5310, 5312, + 2863, 1007, 5657, 1007, 1007, 4167, 1007, 5313, 1007, 1007, + 5314, 1007, 5333, 5631, 1007, 5314, 1806, 2868, 5315, 1007, + 1007, 5317, 1007, 5316, 1007, 1007, 4175, 1007, 2868, 1007, + 1806, 1007, 5328, 4678, 2975, 5319, 1007, 1007, 2868, 5690, + + 5318, 1007, 5691, 4186, 4164, 5320, 1007, 1007, 5323, 1007, + 5324, 1806, 1007, 5635, 1007, 5327, 5329, 5330, 4168, 5670, + 5331, 1007, 1007, 2868, 2865, 1007, 1007, 1007, 1806, 674, + 1007, 5692, 1007, 5693, 2863, 1007, 1007, 1007, 5334, 5336, + 5335, 1007, 1007, 1007, 1007, 674, 1007, 1007, 1007, 1007, + 5339, 1007, 1007, 4190, 5337, 4196, 1007, 4198, 2868, 5346, + 5694, 1007, 5338, 5340, 5340, 5340, 5341, 5695, 5696, 1007, + 5348, 1007, 3179, 2866, 1007, 5674, 1007, 2867, 1806, 2005, + 1806, 1007, 1806, 1007, 5351, 2866, 1007, 5347, 1007, 2867, + 5352, 2005, 1007, 5354, 1007, 4206, 5697, 1007, 1007, 1007, + + 5359, 5353, 4212, 1007, 674, 5700, 4191, 5701, 5355, 5356, + 5357, 1007, 4216, 1007, 674, 5358, 1007, 2866, 1007, 5360, + 1806, 2867, 5702, 2005, 5342, 1007, 5362, 1806, 5343, 1007, + 1007, 1007, 5361, 5363, 5709, 5344, 1007, 1806, 2868, 5373, + 1007, 5345, 1007, 5710, 5364, 1007, 2866, 1007, 4207, 5698, + 2867, 4214, 2005, 5379, 1007, 5366, 5367, 2048, 2049, 1007, + 5699, 5365, 5368, 5019, 5019, 5019, 5274, 4220, 5369, 1007, + 4221, 5370, 5371, 5372, 1007, 1007, 1806, 5711, 5718, 2866, + 1007, 5675, 1007, 2867, 3173, 5378, 5376, 1007, 5383, 1007, + 5382, 674, 1806, 1007, 1007, 1806, 2868, 1007, 5676, 5719, + + 1007, 1007, 1007, 5384, 4215, 1007, 5388, 1007, 674, 1007, + 4236, 5386, 1007, 5387, 1007, 5389, 5390, 1007, 5406, 5723, + 5581, 5724, 1007, 2868, 1007, 5391, 1007, 1007, 5725, 1007, + 5392, 1007, 1007, 1007, 1007, 4237, 5394, 5755, 1007, 1007, + 1007, 5398, 5393, 1007, 5417, 1007, 1007, 5395, 1007, 5397, + 1007, 1007, 5396, 1007, 5408, 1007, 1007, 1007, 1007, 1007, + 4678, 2866, 1007, 5402, 5404, 5405, 5423, 2005, 4256, 1007, + 5759, 5407, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 4258, + 1007, 1007, 5412, 1007, 1007, 5420, 5418, 5410, 5409, 1007, + 2868, 5428, 4213, 5411, 5174, 5174, 5174, 5175, 1007, 5762, + + 1007, 5764, 1007, 1007, 1806, 1007, 2866, 1007, 1007, 5419, + 2867, 5422, 2005, 1007, 4269, 1007, 5421, 674, 1007, 2863, + 1007, 1007, 2868, 1007, 1007, 5426, 1007, 2306, 2865, 1007, + 674, 1007, 2868, 1007, 5425, 5424, 1007, 674, 1007, 1806, + 1007, 674, 1007, 5661, 5429, 1007, 2865, 1007, 5432, 1007, + 5749, 674, 5427, 2863, 1007, 1007, 5413, 4593, 5808, 1007, + 5414, 5430, 1007, 5431, 1007, 1007, 5415, 1007, 5433, 2863, + 1007, 1007, 5416, 2868, 5434, 1007, 1007, 1007, 1007, 5435, + 1007, 5436, 1007, 1007, 4282, 2867, 1007, 2005, 5438, 5437, + 1007, 1007, 1007, 1007, 1007, 1007, 674, 1007, 1007, 1007, + + 1007, 5439, 1007, 4292, 5459, 1007, 1007, 1007, 1007, 1806, + 4302, 1007, 1007, 1007, 5443, 5440, 5441, 1007, 5442, 3961, + 5445, 5444, 1007, 5446, 1007, 1007, 5448, 1007, 1806, 1007, + 1007, 1007, 1007, 1007, 5450, 1806, 4304, 1007, 1007, 1007, + 5447, 5449, 4579, 5457, 1007, 4579, 5469, 2868, 1007, 1007, + 4693, 1007, 4318, 5452, 1007, 5453, 1007, 5454, 5455, 1007, + 1007, 1806, 1007, 1007, 1007, 1007, 5841, 1007, 1007, 5460, + 1007, 5456, 2868, 1007, 1007, 1007, 5458, 1806, 1007, 5477, + 5479, 5461, 2866, 1007, 5662, 5462, 2867, 1007, 2005, 1007, + 1007, 5463, 1007, 5464, 1007, 1007, 5884, 4320, 5465, 5466, + + 5466, 5466, 5467, 1007, 1007, 4319, 5493, 4325, 1007, 1007, + 1007, 5920, 5470, 5468, 2865, 1007, 1007, 5921, 5927, 4327, + 5471, 1007, 1806, 1007, 2867, 1007, 2005, 5476, 1007, 5478, + 1007, 2867, 1806, 2005, 4329, 5490, 5472, 1007, 1007, 5932, + 1007, 2863, 1007, 1007, 1806, 4336, 674, 1007, 1007, 2868, + 4321, 5491, 1007, 1007, 2048, 2049, 674, 1007, 674, 1806, + 1007, 5494, 1007, 1007, 1007, 1007, 5492, 5496, 1007, 1007, + 1806, 1007, 1007, 1007, 2868, 5480, 1007, 5976, 1007, 5509, + 5495, 1007, 5507, 1007, 1007, 5497, 5510, 5522, 1007, 1007, + 2062, 2063, 1007, 5511, 1007, 5514, 5508, 5517, 5515, 5728, + + 1007, 5516, 1007, 5481, 5482, 1007, 5539, 1007, 5729, 5277, + 5483, 1007, 1007, 5530, 5484, 5485, 2868, 1007, 5582, 5486, + 5487, 5488, 5498, 5499, 5489, 5500, 4729, 5518, 4730, 5977, + 5928, 5523, 5501, 5502, 5503, 2865, 1007, 5929, 5504, 5505, + 5506, 4733, 4734, 1007, 1007, 5519, 5978, 2863, 1007, 1007, + 1007, 5512, 1007, 5595, 5524, 1007, 5525, 1007, 5520, 674, + 2867, 5521, 2005, 5513, 5536, 1007, 1807, 5526, 5527, 5529, + 1007, 1007, 5528, 1007, 5915, 1007, 1007, 5532, 1007, 2868, + 1007, 1007, 1007, 5981, 5530, 2863, 1007, 1007, 5531, 1007, + 1007, 1806, 5537, 5533, 1007, 1007, 3620, 5983, 1007, 1007, + + 1007, 5513, 2975, 1007, 1007, 1007, 5543, 5534, 1007, 5540, + 1007, 5538, 2863, 1007, 2865, 1007, 1007, 1007, 5987, 5988, + 2866, 1007, 1007, 3179, 2867, 5542, 2005, 5565, 1007, 2865, + 1007, 2868, 5544, 1007, 1007, 4521, 1007, 1007, 5989, 1007, + 2865, 1007, 1007, 5546, 5547, 1007, 2062, 2063, 5566, 5545, + 1007, 1007, 5548, 1007, 5571, 2866, 1007, 4387, 1007, 5549, + 5550, 2005, 5019, 5019, 5019, 5551, 1007, 2868, 5575, 5578, + 5990, 1007, 4384, 4384, 4384, 4384, 4384, 4384, 4384, 4385, + 2868, 1007, 1806, 1007, 5553, 1007, 1007, 5568, 1007, 3758, + 1007, 1007, 5982, 1007, 5567, 5570, 1007, 1007, 1007, 2868, + + 724, 5572, 1007, 1007, 1806, 724, 5569, 5597, 1007, 5992, + 5573, 1325, 1007, 5645, 5637, 2975, 2865, 1007, 5645, 5587, + 724, 3364, 5574, 1007, 1262, 724, 1007, 724, 1007, 5638, + 5552, 1007, 724, 5638, 674, 5712, 1283, 5993, 4640, 5598, + 5994, 5552, 4770, 4770, 674, 5995, 4770, 5554, 4770, 4770, + 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4772, 4770, 4770, + 4770, 4770, 4770, 5555, 5555, 5555, 5555, 5555, 5555, 4770, + 4770, 4770, 5556, 4770, 4770, 5557, 5558, 5558, 5558, 5558, + 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, + 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, 4770, + + 4770, 4770, 4770, 4770, 4770, 5559, 5560, 5558, 5561, 5558, + 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, + 5562, 5558, 5558, 5563, 5564, 5558, 5558, 5558, 5558, 5558, + 5558, 4770, 4770, 4770, 4770, 5498, 2062, 2063, 4728, 4729, + 2121, 4730, 5583, 5583, 5583, 5584, 724, 674, 1265, 1266, + 5996, 724, 4731, 5579, 4733, 4734, 724, 674, 2579, 4872, + 4942, 724, 724, 4584, 1652, 5922, 1653, 724, 4533, 5600, + 724, 5923, 5999, 674, 4942, 724, 5588, 5760, 1652, 5041, + 1653, 5613, 5041, 724, 4959, 4722, 5615, 2116, 674, 1473, + 5614, 674, 5844, 1283, 6000, 5632, 674, 5585, 4960, 674, + + 5596, 674, 5633, 724, 5660, 2461, 674, 6001, 724, 5672, + 1283, 5011, 5721, 5634, 4586, 4587, 4588, 2305, 6002, 4589, + 4602, 5586, 4590, 4591, 5663, 674, 5664, 674, 674, 5666, + 5599, 4615, 3506, 674, 6003, 674, 2116, 5873, 674, 4593, + 5601, 5601, 5601, 5601, 5601, 5602, 5601, 5601, 5601, 5601, + 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, + 5601, 5603, 5603, 5603, 5603, 5603, 5603, 5601, 5601, 5601, + 5604, 5601, 5601, 5605, 5606, 5606, 5606, 5606, 5606, 5606, + 5606, 5606, 5606, 5606, 5606, 5606, 5606, 5606, 5606, 5606, + 5606, 5606, 5606, 5606, 5606, 5606, 5606, 6004, 5601, 5601, + + 5601, 5601, 5601, 5606, 5607, 5606, 5608, 5606, 5606, 5606, + 5606, 5609, 5606, 5606, 5606, 5606, 5606, 5606, 5610, 5606, + 5606, 5611, 5612, 5606, 5606, 5606, 5606, 5606, 5606, 5601, + 5601, 5601, 5601, 4727, 5765, 674, 5616, 4729, 4727, 4730, + 5041, 5617, 4729, 5041, 4730, 674,11275, 6005, 2112,11275, + 4731, 4732, 4733, 4734, 2112, 4731, 4732, 4733, 4734,11275, + 5622, 674,11275, 5930, 1325, 5931, 5623, 2112, 5677, 5673, + 4584, 674, 5624, 5625, 1325, 5626, 674, 674, 5627, 5628, + 1326, 1326, 1326, 1326, 1326, 1326, 674, 5748, 4712, 1283, + 1326, 1326, 1326, 1326, 1326, 1326, 5667, 674, 5750, 1283, + + 1490, 674, 1491, 2532, 6006, 2363, 674, 674, 674, 5678, + 5671, 674, 5668, 2272, 674, 5618, 4713, 4714, 5766, 674, + 6010, 5679, 4602, 4715, 674, 5728, 1325, 4716, 4717, 2112, + 5729, 674, 4718, 5669, 4720, 2112, 5654, 4721, 5703, 5704, + 5653, 674, 5713, 5714, 6012, 5705, 4593, 5715, 5619, 1325, + 5716, 1283, 2687, 2308, 5706, 5707, 5708, 1490, 5717, 1491, + 4584, 674, 1273, 674, 5736, 1326, 1326, 1326, 1326, 1326, + 1326, 674, 6013, 1325, 1283, 5720, 5730, 1331, 5726, 5726, + 5726, 5726, 5726, 5726, 5735, 674, 674, 674, 5722, 5732, + 674, 6014, 674, 2503, 5745, 674, 674, 674, 1283, 5737, + + 674, 674, 674, 5731, 3381, 674, 674, 6015, 1337, 4584, + 1338, 674, 1339, 674, 3529, 674, 674, 5738, 674, 5739, + 5658, 5779, 1341, 674, 674, 1342, 1343, 1325, 674, 674, + 5740, 5740, 5740, 5741, 6007, 4579, 4593, 6008, 4580, 674, + 5746, 6016, 5733, 1326, 1326, 1326, 1326, 1326, 1326, 674, + 674, 674, 1283, 5752, 5751, 1331, 674, 674, 6017, 674, + 674, 674, 674, 1283, 5747, 5780, 674, 674, 5753, 674, + 1558, 5765, 674, 5734, 5767, 5754, 4584, 674, 4584, 674, + 4565, 4565, 4565, 4565, 6009, 4593, 1337, 674, 1338, 5659, + 1339, 4560, 4560, 4560, 4560, 674, 5998, 5742, 674, 2309, + + 1341, 5734, 2532, 1342, 1343, 674, 1325, 5768, 674, 5743, + 5756, 5756, 5756, 5756, 5756, 5756, 6020, 5744, 4560, 4560, + 4560, 4561, 5757, 5757, 5757, 5757, 5757, 5757, 4584, 6021, + 4584, 1283, 5782, 674, 4600, 4567, 6022, 5756, 5756, 5756, + 5756, 5756, 5756, 674, 1325, 5781, 1283, 4565, 4565, 4565, + 4566, 6024, 4593, 4584, 4593, 5766, 6027, 1636, 5770, 1283, + 4572, 4572, 4572, 4572, 4572, 4572, 674, 4568, 674, 1283, + 5769, 5772, 674, 674, 674, 1283, 674, 5771, 674, 6028, + 5777, 674, 5774, 674, 674, 5773, 5783, 4601, 674, 5775, + 5778, 1392, 5776, 674, 6029, 674, 4612, 5788, 5790, 674, + + 5798, 5784, 4567, 2306, 4593, 5787, 4593, 2308, 5785, 674, + 674, 5789, 674, 1491, 674, 674, 674, 674, 674, 5799, + 5786, 1283, 674, 2485, 674, 674, 5800, 5791, 674, 4593, + 5793, 5793, 5793, 5793, 4568, 674, 5801, 674, 5794, 674, + 2338, 674, 1392, 674, 6030, 674, 674, 674, 5802, 674, + 6032, 674, 5804, 674, 674, 5805, 674, 5734, 5795, 5803, + 674, 674, 5810, 6033, 674, 5809, 1490, 674, 1491, 5806, + 674, 674, 674, 5807, 674, 5815, 6034, 674, 5811, 5811, + 5811, 5812, 5814, 1473, 674, 5816, 1490, 5817, 1491, 674, + 5819, 5796, 674, 674, 1490, 674, 1491, 674, 5818, 674, + + 674, 674, 5821, 674, 674, 5822, 674, 2305, 5823, 5797, + 5834, 674, 2529, 674, 674, 5820, 674, 674, 674, 5824, + 5826, 674, 5825, 5827, 5828, 674, 674, 6035, 674, 674, + 674, 674, 6036, 674, 5813, 674, 674, 674, 674, 674, + 674, 5829, 5830, 674, 5831, 1325, 674, 674, 5832, 674, + 5854, 674, 5835, 674, 5833, 5837, 674, 674, 5840, 674, + 1392, 674, 5979, 5846, 674, 6037, 5836, 674, 674, 5839, + 1283, 2703, 674, 674, 674, 2503, 1392, 5838, 674, 674, + 674, 674, 674, 674, 674, 5845, 674, 5847, 5843, 674, + 5842, 674, 674, 674, 674, 674, 674, 5857, 674, 674, + + 5848, 5824, 674, 5855, 5825, 5850, 5851, 674, 674, 674, + 5849, 674, 674, 5858, 5852, 5859, 5853, 674, 5860, 1473, + 5856, 674, 2306, 5861, 5862, 674, 674, 674, 674, 674, + 674, 6038, 5863, 674, 674, 674, 674, 674, 674, 5864, + 2306, 5865, 5866, 674, 674, 674, 5868, 674, 674, 5867, + 5870, 674, 2305, 674, 5869, 674, 5874, 674, 674, 6039, + 5871, 674, 674, 2305, 2488, 674, 5872, 674, 674, 5875, + 674, 5876, 674, 674, 5877, 674, 5880, 674, 5895, 5878, + 674, 5879, 674, 1473, 1558, 674, 674, 674, 2485, 5881, + 1392, 674, 674, 674, 674, 674, 674, 674, 5885, 674, + + 674, 6019, 674, 5886, 5882, 674, 5887, 674, 5892, 674, + 674, 674, 5888, 674, 5891, 674, 5890, 5893, 5889, 674, + 6040, 674, 674, 674, 674, 5898, 674, 5899, 674, 674, + 5894, 674, 674, 5901, 674, 674, 5900, 5896, 5903, 5902, + 674, 674, 674, 674, 5905, 674, 2485, 674, 674, 5906, + 674, 674, 674, 5904, 5897, 674, 2555, 5907, 674, 5909, + 674, 674, 2532, 674, 6018, 5910, 5908, 674, 5933, 6041, + 674, 5911, 5912, 674, 2308, 5913, 6042, 674, 1490, 674, + 1491, 5914, 5917, 5916, 674, 674, 674, 674, 6043, 674, + 674, 5919, 5924, 5925, 5934, 674, 674, 674, 5918, 674, + + 674, 674, 5936, 674, 5834, 6046, 674, 674, 6049, 674, + 5926, 674, 5935, 674, 674, 5938, 674, 674, 1473, 5937, + 6048, 5941, 5939, 2308, 674, 5732, 2703, 1490, 674, 1491, + 674, 1473, 5940, 674, 1392, 5943, 5944, 5942, 674, 674, + 674, 674, 6052, 5946, 674, 674, 674, 5948, 674, 674, + 674, 6053, 5945, 674, 674, 674, 674, 2532, 5949, 5947, + 674, 5952, 5951, 5950, 674, 5955, 5954, 674, 5953, 674, + 6054, 674, 674, 5956, 674, 2485, 674, 674, 5733, 674, + 5959, 674, 674, 5957, 5960, 5958, 674, 674, 674, 674, + 4768, 674, 674, 6055, 5961, 674, 1558, 674, 674, 674, + + 5963, 674, 674, 5964, 5966, 674, 674, 5962, 6056, 5734, + 5967, 674, 674, 6047, 5965, 1283, 674, 5968, 5968, 5968, + 5969, 2308, 674, 2338, 674, 1490, 1392, 1491, 2305, 6057, + 674, 674, 5972, 674, 674, 1473, 6058, 674, 674, 5973, + 674, 674, 2308, 2306, 674, 674, 1490, 674, 1491, 1473, + 5975, 674, 674, 6059, 674, 2532, 5974, 2531, 6062, 674, + 674, 1652, 5854, 1653, 5997, 5991, 6023, 5971, 5980, 5740, + 5740, 5740, 5741, 2531, 2532, 6063, 2532, 6011, 6064, 1653, + 6025, 6065, 674, 6050, 1652, 6044, 1653, 5811, 5811, 5811, + 5812, 6026, 674, 2532, 6031, 1652, 1558, 1653, 1652, 6045, + + 1653, 6060, 6066, 6067, 5970, 1325, 1636, 6068, 6069, 6061, + 6051, 6070, 6071, 6072, 6074, 5855, 6073, 6075, 6076, 6077, + 6078, 1326, 1326, 1326, 1326, 1326, 1326, 2529, 6080, 6081, + 1283, 6082, 2529, 1331, 2532, 6083, 5984, 6084, 2690, 6087, + 6085, 6079, 6086, 5813, 6088, 1558, 1636, 6091, 5985, 6092, + 6093, 2687, 6094, 6095, 6096, 6097, 5986, 6098, 6099, 6089, + 5895, 6090, 6102, 6103, 1530, 6104, 1531, 6105, 6106, 6107, + 6108, 6109, 6111, 6112, 6113, 6114, 6110, 6115, 1533, 6120, + 2687, 1534, 1535, 1325, 6116, 6121, 2531, 6117, 6122, 2532, + 1652, 6123, 1653, 6118, 6119, 6124, 6125, 6126, 6127, 1326, + + 1326, 1326, 1326, 1326, 1326, 6128, 6129, 6130, 1283, 1636, + 6132, 1331, 2531, 6133, 6136, 6137, 1652, 1636, 1653, 6100, + 1558, 6134, 6135, 6131, 6138, 6141, 6139, 6142, 6143, 6145, + 6146, 6147, 6148, 6149, 6150, 6144, 6101, 6140, 6151, 6153, + 2687, 6154, 1530, 6155, 1531, 6156, 6157, 6158, 6152, 5968, + 5968, 5968, 5969, 2555, 1558, 2529, 1533, 2531, 1636, 1534, + 1535, 1652, 2532, 1653, 6161, 1636, 2531, 6162, 6159, 6160, + 1652, 6163, 1653, 5740, 5740, 5740, 5741, 6164, 6165, 6166, + 6027, 6167, 6168, 6169, 6172, 5895, 6173, 6174, 6175, 5019, + 5019, 5019, 5019, 5019, 5019, 5019, 5020, 6177, 6178, 6179, + + 6180, 6181, 6182, 6183, 6184, 6185, 6186, 6187, 6188, 6189, + 6190, 6193, 6194, 6191, 6195, 6197, 6198, 6199, 5041, 6192, + 6200, 5041, 6201, 5046, 6196, 6202, 6203, 6204, 6205, 6206, + 6207, 6208, 6209, 6210, 6211, 6214, 5970, 6212, 6215, 6216, + 5984, 6217, 6218, 6213, 6170, 6219, 6220, 6221, 6222, 5046, + 6225, 6226, 5985, 6223, 6223, 6223, 6223, 6227, 6228, 6229, + 5744, 6171, 6230, 6231, 6232, 6233, 6234, 6235, 6236, 6234, + 6238, 3904, 6237, 6176, 6242, 6242, 6242, 6242, 5083, 5083, + 5083, 5083, 6243, 6244, 895, 6245, 6246, 6248, 6249, 6250, + 6250, 6250, 6250,11275,11275,11275,11275,11275, 6234,11275, + + 6259, 6234,11275, 6260, 6261, 6234,11275, 6262, 6234, 6264, + 6265, 6266, 6234, 6267, 6269, 6234, 6270, 5120, 6271, 6272, + 6273, 1807, 6240, 6263, 6275, 1807, 6276, 6277, 5139, 6268, + 5130, 5130, 5130, 5130, 5130, 5130, 5130, 5131, 6290, 3984, + 6224,11275,11275,11275, 1807, 6251, 1806, 6313, 5157, 5181, + 1806, 5202, 6241, 1806, 5203, 6252, 6354, 6355, 5259, 6254, + 6377, 5084, 1806, 6257, 5196, 5084, 6255, 5259, 6378, 6379, + 6247, 6253, 6258, 1806, 1806, 6380,11275,11275,11275,11275, + 11275,11275, 6256,11275, 6384,11275,11275, 6274, 5208, 1806, + 11275, 1807,11275,11275,11275, 1807,11275,11275,11275, 6278, + + 11275,11275,11275, 1807, 6396, 6397, 6427, 1808, 1808, 1808, + 1808, 1808, 1808, 1806, 6428, 6430, 1806, 6451, 6452, 1812, + 11275,11275,11275, 6280,11275,11275,11275, 1807,11275,11275, + 11275, 6281, 6475,11275,11275,11275, 1807,11275,11275,11275, + 6283,11275,11275,11275, 1807,11275,11275,11275, 1807, 6476, + 1818, 6481, 1819,11275,11275,11275, 1807,11275,11275,11275, + 1807, 6482, 5215, 5399, 1821, 6502, 6503, 1822, 1823, 5130, + 5130, 5130, 5131,11275,11275,11275, 1807, 6508, 6279,11275, + 11275,11275, 6289,11275,11275,11275, 1807, 1806, 1808, 1808, + 1808, 1808, 1808, 1808, 6282, 6528, 6571, 1806, 2863, 5221, + + 1812,11275,11275,11275, 6292,11275,11275,11275, 6293,11275, + 11275,11275, 1807, 6572, 6285, 6573, 6603, 5225, 6286, 6284, + 11275,11275,11275, 1807, 1806, 5226, 6287,11275,11275,11275, + 1807, 1818, 6606, 1819,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 1806, 6607, 6291, 1821, 6666, 6667, 1822, 1823, + 1806, 6674, 6676, 6288, 5174, 5174, 5174, 5175, 2868,11275, + 11275,11275, 6298,11275,11275,11275, 1807,11275,11275,11275, + 1807,11275,11275,11275, 1807,11275,11275,11275, 6302,11275, + 11275,11275, 6303, 6677, 6294,11275,11275,11275, 6304,11275, + 11275,11275, 1807, 6604, 6295,11275,11275,11275, 1807, 5920, + + 6605, 6598, 6296,11275,11275,11275, 1807,11275,11275,11275, + 1807,11275,11275,11275, 1807, 5733,11275,11275,11275, 1807, + 6608, 6297, 5174, 5174, 5174, 5174, 6299, 5174, 5174, 5174, + 5175, 5927, 2866, 6678, 6301, 3203, 2867, 6673, 2005,11275, + 11275,11275, 1807, 6300, 6236, 6381, 5734, 2532, 6599, 6382, + 4256, 6383, 6679, 6305, 6600, 1806,11275,11275,11275, 1807, + 11275,11275,11275, 1807, 5326, 6680, 3961, 6314, 6314, 6314, + 6315,11275,11275,11275, 1807,11275,11275,11275, 1807, 6306, + 11275,11275,11275, 1807, 4579, 6308, 6307, 5244, 6687, 1806, + 6309,11275,11275,11275, 1807, 5333, 1558, 3179,11275,11275, + + 11275, 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, + 2529, 6167, 1806, 6310,11275,11275,11275, 1807, 6672, 1636, + 1806, 2866, 1652, 4584, 1653, 2867, 2532, 2005, 6311,11275, + 11275,11275, 1807, 6689, 6316,11275,11275,11275, 1807, 6312, + 6319, 6690,11275,11275,11275, 1807, 6317,11275,11275,11275, + 1807, 6320, 6691, 5921, 6318,11275,11275,11275, 1807, 6609, + 6321,11275,11275,11275, 1807, 5928, 6322, 6324,11275,11275, + 11275, 1807, 5929, 2868,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 6325, 6323,11275,11275,11275, 1807, 6368, 6694, + 6326, 6695, 5417, 5276, 2865,11275,11275,11275, 1807, 4593, + + 6696, 6327, 4584, 5423, 6328,11275,11275,11275, 1807, 5459, + 2868, 6329, 6330,11275,11275,11275, 1807, 1806, 1806, 6331, + 11275,11275,11275, 6337,11275,11275,11275, 1807, 1806, 6332, + 11275,11275,11275, 1807, 1806,11275,11275,11275, 1807, 2866, + 6697, 6601, 5921, 2867, 6602, 2005, 4601, 5469, 1807, 6698, + 6371, 2975,11275,11275,11275, 1807, 6334, 6699, 5783, 6333, + 4560, 4560, 4560, 5212, 6340, 6340, 6340, 6340, 6340, 6340, + 2866, 6700, 1806, 1806, 2867, 6335, 2005, 6336, 4593, 5756, + 5756, 5756, 5756, 5756, 5756, 2866, 2531, 6701, 1806, 2867, + 1652, 2005, 1653, 6685, 6702, 6339, 4565, 4565, 4565, 5217, + + 6341, 5477, 6338, 2532, 2867, 2868, 2005,11275,11275,11275, + 6343,11275,11275,11275, 1807,11275,11275,11275, 1807, 1807, + 2121, 6342, 6688, 2121, 1806, 5406, 1806, 2868,11275,11275, + 11275, 1807, 2532, 6692, 5921, 5223, 5223, 5223, 5223, 5223, + 5223, 2048, 2049, 6710, 1806,11275,11275,11275, 1807, 6711, + 1806, 4567,11275,11275,11275, 1807,11275,11275,11275, 1807, + 11275,11275,11275, 1807,11275,11275,11275, 6351,11275,11275, + 11275, 6352,11275,11275,11275, 1807, 2866, 6345, 5407, 6712, + 2867, 6706, 2005, 4568,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 6344, 6703, 5766,11275,11275,11275, 1807, 5479, + + 2121, 5493, 6346,11275,11275,11275, 6359,11275,11275,11275, + 6360, 6713, 4584, 6671, 6347, 1807, 6714, 6348,11275,11275, + 11275, 6361, 4584, 5258, 1806, 6350, 1806, 5259, 2121, 2866, + 6715, 2062, 2063, 2867, 6349, 2005,11275,11275,11275, 1807, + 1806, 6353,11275,11275,11275, 1807, 6716, 6717, 5261, 6357, + 11275,11275,11275, 1807,11275,11275,11275, 1807, 6356, 6718, + 6358, 1807, 5428, 5651, 2862,11275,11275,11275, 1807,11275, + 11275,11275, 1807, 5779, 5777, 2121, 6370, 6705, 6369,11275, + 11275,11275, 1807, 6707, 5778, 674, 1806, 1806, 4593,11275, + 11275,11275, 1807,11275,11275,11275, 1807, 1138, 4593,11275, + + 11275,11275, 1807, 6682, 3179,11275,11275,11275, 1807,11275, + 11275,11275, 6385, 5565, 6362, 5429, 5575, 6668, 6363, 5019, + 5019, 5019, 5274, 5928, 5602, 2868,11275,11275,11275, 6395, + 5929, 6704, 6746, 6364,11275,11275,11275, 6398, 1806, 6234, + 6365, 1806, 6234, 6747, 6372, 6366, 1325, 1806, 6367, 1283, + 2862,11275,11275,11275, 1807,11275,11275,11275, 1807, 6729, + 6728, 6749, 6374, 674, 6373,11275,11275,11275, 1807, 6720, + 2309, 1283, 6376, 674, 6375, 5257, 5257, 5257, 5257, 5257, + 5258, 5257, 5257, 5257, 5259, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5260, 5260, 5260, 5260, + + 5260, 5260, 5257, 5257, 5257, 5261, 5257, 5257, 5257, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5257, 5257, 5257, 5257, 5257, 5257, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5259, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + + 5257, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5257, 5257, 5257, 5257, 5257, + 5257, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5258, 5257, 5257, 5257, + 5259, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5260, 5260, 5260, 5260, 5260, 5260, 5257, 5257, + 5257, 5261, 5257, 5257, 5262, 5263, 5263, 5263, 5263, 5263, + + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5257, 5257, + 5257, 5257, 5257, 5257, 5263, 5264, 5263, 5265, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5266, + 5263, 5263, 5267, 5268, 5263, 5263, 5263, 5263, 5263, 5263, + 5257, 5257, 5257, 5257,11275,11275,11275, 1807,11275,11275, + 11275, 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, + 11275,11275,11275, 1807,11275,11275,11275, 1807,11275,11275, + 11275, 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, + 11275,11275,11275, 1807, 1331,11275,11275,11275, 1807,11275, + + 11275,11275, 1807,11275,11275,11275, 1807,11275,11275,11275, + 1807, 6731,11275,11275,11275, 1807, 2048, 2049, 6734, 2866, + 674, 1331, 6750, 6386, 6736, 2005, 6388,11275,11275,11275, + 1807, 2062, 2063, 2868, 1331, 674, 2121, 6387, 6722, 6390, + 674, 5673, 3173, 5019, 5019, 5019, 5292, 6391, 6389, 6752, + 6739, 6753, 6394,11275,11275,11275, 1807, 6392, 6393, 2926, + 2862,11275,11275,11275, 1807, 674, 1283, 6399, 6724, 2121, + 6723, 1806,11275,11275,11275, 1807, 6732, 6400, 6402, 674, + 6670, 6401,11275,11275,11275, 1807, 5811, 5811, 5811, 6409, + 5734,11275,11275,11275, 1807, 6681, 6708,11275,11275,11275, + + 1807, 6403,11275,11275,11275, 1807,11275,11275,11275, 1807, + 11275,11275,11275, 1807,11275,11275,11275, 1807, 6405,11275, + 11275,11275, 1807, 6404,11275,11275,11275, 1807, 2868, 6709, + 6406, 6743,11275,11275,11275, 1807, 6733, 6407, 6754, 674, + 674, 2867, 5813, 2005,11275,11275,11275, 1807,11275,11275, + 11275, 1807,11275,11275,11275, 1807, 6410, 2868, 6755, 6735, + 2867, 6408, 2005, 6411, 6740, 6741, 6756, 2865, 4502, 5571, + 6757, 6412, 2485, 6758, 674, 6413,11275,11275,11275, 1807, + 5824,11275,11275, 6420,11275,11275,11275, 1807, 6414, 6415, + 6759, 1228, 6760, 2867, 1806, 2005, 6417, 6748, 6416,11275, + + 11275,11275, 1807,11275,11275,11275, 6423, 6761, 6418,11275, + 11275,11275, 1807,11275,11275,11275, 1807, 2863,11275,11275, + 11275, 1807,11275,11275,11275, 6429,11275,11275,11275, 1807, + 11275,11275,11275, 1807, 6762,11275,11275,11275, 1807, 674, + 674, 6419,11275,11275,11275, 6433, 5971, 6763, 6421,11275, + 11275,11275, 1807,11275,11275,11275, 6435, 6742,11275,11275, + 11275, 1807, 6764, 2112, 6422,11275,11275,11275, 1807,11275, + 11275,11275, 6438, 6424,11275,11275,11275, 1807,11275,11275, + 11275, 6441,11275,11275,11275, 6442,11275,11275,11275, 1807, + 6744, 6765, 1229, 6425, 6766, 6767, 6768, 6426, 6751, 674, + + 6769, 2868, 5340, 5340, 5340, 5340, 5340, 5340, 5340, 5341, + 6431, 6432,11275,11275,11275, 1807, 6770, 6771, 5702, 6436, + 6775, 6772, 6434, 2863,11275,11275,11275, 1807, 6693, 6776, + 6437, 6773, 674, 6777, 1806,11275,11275,11275, 1807, 6439, + 11275,11275,11275, 1807, 2112, 6440, 6778, 2866, 6779, 1262, + 6780, 2867, 6781, 2005, 6443,11275,11275,11275, 6449,11275, + 11275,11275, 1807,11275,11275,11275, 1807, 6774, 6444,11275, + 11275,11275, 1807,11275,11275,11275, 1807,11275,11275,11275, + 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, 6784, + 6445,11275,11275,11275, 1807, 6176, 6785,11275,11275,11275, + + 1807, 6446, 5578, 6786, 6447,11275,11275,11275, 1807, 6448, + 11275,11275,11275, 1807,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 674, 6788, 2866, 1265, 1266, 1283, 4187, 1325, + 2005,11275,11275,11275, 1807, 6453,11275,11275,11275, 1807, + 6795, 6450, 2862,11275,11275,11275, 1807, 5662, 2868, 2062, + 2063, 6457, 6454, 6455, 1283, 6826, 6458, 3203, 6459, 6456, + 11275,11275,11275, 1807,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 1283, 5762, 6460,11275,11275,11275, 1807, 6404, + 6461, 6792, 5728, 6462,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 2862, 2868, 674, 6738, 6815,11275,11275,11275, + + 1807,11275,11275,11275, 1807, 5961, 6463, 1283, 6783, 674, + 6464, 674, 6465,11275,11275,11275, 1807, 6683, 2868,11275, + 11275,11275, 1807, 4568, 6730, 2862, 2272, 6684, 6745, 6468, + 6467,11275,11275,11275, 1807, 6466,11275,11275,11275, 1807, + 11275,11275,11275, 1807,11275,11275,11275, 1807,11275,11275, + 11275, 6485, 1473, 5764, 674, 6469,11275,11275,11275, 1807, + 6470, 6471, 2866, 6472, 6790, 674, 2867, 674, 2005,11275, + 11275,11275, 1807, 6870, 6871, 1273, 2868,11275,11275,11275, + 1807, 6473,11275,11275,11275, 1807, 6782, 5896, 6477,11275, + 11275,11275, 6491, 5729, 6874, 6817, 6478, 6474,11275,11275, + + 11275, 1807, 6912, 674, 5897, 6479, 674, 6483,11275,11275, + 11275, 1807,11275,11275,11275, 1807, 6818, 6834, 1283, 6480, + 6819, 674, 674, 6484,11275,11275,11275, 1807,11275,11275, + 11275, 1807,11275,11275,11275, 1807, 6820, 674, 674, 6486, + 11275,11275,11275, 1807, 6487, 5855,11275,11275,11275, 1807, + 6488,11275,11275,11275, 1807, 674, 6822, 6821, 6489,11275, + 11275,11275, 1807, 5834, 6490,11275,11275,11275, 6504, 674, + 5884, 1473, 6492, 6493,11275,11275,11275, 1807, 6787, 6494, + 11275,11275,11275, 1807, 674, 6495, 5713, 5714, 1283, 6496, + 6816, 5715, 2309, 2865, 5716, 674, 6938, 6497,11275,11275, + + 11275, 1807, 6675, 6829, 2309, 6498, 674, 674, 6499,11275, + 11275,11275, 6509, 674, 6852, 6831, 6500,11275,11275,11275, + 1807,11275,11275,11275, 6511, 5765,11275,11275,11275, 1807, + 674, 6501,11275,11275,11275, 1807, 4584,11275,11275,11275, + 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, 6506, + 1283, 674, 6505, 6833,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 6507,11275,11275,11275, 1807,11275,11275,11275, + 1807,11275,11275,11275, 1807,11275,11275,11275, 1807,11275, + 11275,11275, 1807, 5732, 3179, 6832, 2866, 674, 6842, 6860, + 2867, 2866, 2005, 6510, 6512, 2867, 674, 2005, 2862,11275, + + 11275,11275, 1807,11275,11275,11275, 6526, 674, 1283, 5766, + 6516, 6513, 4593, 6848, 6517, 6514,11275,11275,11275, 1807, + 6858, 5895, 6515, 6518,11275,11275,11275, 1807, 6878, 674, + 6791, 6521, 6522, 6519, 1473, 6520, 5733,11275,11275,11275, + 1807,11275,11275,11275, 1807, 674, 1283, 674, 6524,11275, + 11275,11275, 1807, 674, 6886, 6523,11275,11275,11275, 1807, + 11275,11275,11275, 1807, 2863,11275,11275,11275, 1807,11275, + 11275,11275, 1807,11275,11275,11275, 1807, 6849, 6525,11275, + 11275,11275, 6537, 674, 6863, 6527,11275,11275,11275, 1807, + 6960, 2868,11275,11275,11275, 1807, 6862, 674, 674, 6529, + + 6530,11275,11275,11275, 1807, 6531,11275,11275,11275, 1807, + 6542, 6542, 6542, 6543,11275,11275,11275, 1807, 674, 2305, + 6879, 2863, 674, 6793, 6532, 6835, 4584, 6533,11275,11275, + 11275, 1807, 674, 4584, 6534, 6859, 6796, 674, 6535, 674, + 1490, 3173, 1491, 6877, 6536,11275,11275,11275, 1807, 674, + 11275,11275,11275, 1807, 674, 6538, 4584, 6539,11275,11275, + 11275, 1807,11275,11275,11275, 1807, 6540,11275,11275,11275, + 1807, 6544,11275,11275,11275, 1807,11275,11275,11275, 1807, + 6841, 674, 6845, 6545, 6541, 2868, 6873, 6900, 674, 2862, + 11275,11275,11275, 1807,11275,11275,11275, 1807,11275,11275, + + 11275, 1807, 4593, 6546,11275,11275,11275, 6557, 674, 4593, + 2865,11275,11275,11275, 6558,11275,11275,11275, 1807,11275, + 11275,11275, 6560, 674, 6840, 6547, 6548,11275,11275,11275, + 1807, 6917, 4593, 6549,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 6550,11275,11275,11275, 1807, 674, 2308, 1392, + 6553, 6551, 1490, 6552, 1491, 6965, 6555, 5466, 5466, 5466, + 5466, 674, 6794, 6830, 6554, 6908, 674, 6556, 5466, 5466, + 5466, 5467,11275,11275,11275, 1807,11275,11275,11275, 1807, + 674, 6561,11275,11275,11275, 1807,11275,11275,11275, 1807, + 6966, 6559,11275,11275,11275, 1807, 1806, 6837, 6562, 6904, + + 6563, 1490, 4584, 1491, 6565,11275,11275,11275, 1807, 4584, + 674, 2975,11275,11275,11275, 1807, 674, 6564,11275,11275, + 11275, 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, + 11275,11275,11275, 1807,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 6915, 1473, 4584, 6568, 4584, 6850, 6570, 674, + 6566, 6567,11275,11275,11275, 1807, 674, 6847, 3173, 6836, + 6967, 674, 6569,11275,11275,11275, 1807, 6869, 3173, 2488, + 6844, 6924, 6574,11275,11275,11275, 1807, 674, 4593, 6577, + 6575, 674, 6823, 6824, 6578, 4593, 6825, 6576,11275,11275, + 11275, 6590, 674, 2485, 6581, 674, 6839, 6579, 6591, 6591, + + 6591, 6592,11275,11275,11275, 1807, 6580, 6968, 6892, 6582, + 6838, 6583, 4584, 674, 6893, 6584, 1392, 2866, 6585, 674, + 4593, 2867, 4593, 2005, 6586,11275,11275,11275, 6594, 6899, + 6861, 674, 6587, 674,11275,11275,11275, 1807, 2868, 674, + 6969, 6902, 6589, 6588,11275,11275,11275, 1807,11275,11275, + 11275, 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, + 11275,11275,11275, 1807, 6846,11275,11275,11275, 1807, 6945, + 6970, 2975,11275,11275,11275, 1807,11275,11275,11275, 1807, + 674,11275,11275,11275, 1807, 6593, 6610, 6872, 4593, 5824, + 2866, 674, 5824, 4584, 2867, 6595, 2005,11275,11275,11275, + + 1807,11275,11275,11275, 1807,11275,11275,11275, 1807,11275, + 11275,11275, 1807,11275,11275,11275, 1807, 6597,11275,11275, + 11275, 1807, 6596, 6956, 6971, 6611, 6613,11275,11275,11275, + 1807,11275,11275,11275, 1807, 674, 6612,11275,11275,11275, + 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, 6615, + 6972, 6881, 6882, 6614, 6616,11275,11275,11275, 1807, 6843, + 11275,11275,11275, 1807, 674, 674, 2865, 6851, 6619, 4593, + 2866, 2305, 2306, 6876, 2867, 674, 2005, 6868, 6617, 2306, + 6618, 6620, 674, 2865, 674, 6973, 2309, 6621, 2862, 674, + 6622, 6623,11275,11275,11275, 1807, 6624,11275,11275,11275, + + 1807,11275,11275,11275, 1807, 5854, 6974, 6901, 6626,11275, + 11275,11275, 1807,11275,11275,11275, 1807, 6625, 6629, 6627, + 2485, 674, 674, 6628, 6875, 6630,11275,11275,11275, 1807, + 1283, 3173, 6631,11275,11275,11275, 1807,11275,11275,11275, + 1807,11275,11275,11275, 1807,11275,11275,11275, 1807,11275, + 11275,11275, 1807,11275,11275,11275, 1807, 6963, 5855, 6633, + 11275,11275,11275, 1807,11275,11275,11275, 1807, 674, 6975, + 6632,11275,11275,11275, 1807, 6634,11275,11275,11275, 1807, + 6636,11275,11275,11275, 1807, 6635, 5968, 5968, 5968, 6651, + 6925, 6638,11275,11275,11275, 1807, 674, 6639, 6637, 6640, + + 11275,11275,11275, 1807,11275,11275,11275, 6654, 6976, 6641, + 11275,11275,11275, 1807,11275,11275,11275, 1807, 6894, 6977, + 6883, 6643, 674, 6884, 6644, 6642, 6991, 6645,11275,11275, + 11275, 1807, 5019, 5019, 5019, 5551, 6646, 674, 674, 6647, + 11275,11275,11275, 1807, 6649,11275,11275,11275, 1807, 674, + 6650,11275,11275,11275, 1807, 6648, 6961, 2865, 4584, 6885, + 1806,11275,11275,11275, 6659,11275,11275,11275, 1807, 6653, + 674, 6652, 674, 5970,11275,11275,11275, 1807, 6880, 6887, + 5824, 6656, 1490, 5825, 1491, 6655,11275,11275,11275, 1807, + 6911, 674, 674, 6657,11275,11275,11275, 1807, 674, 674, + + 3179,11275,11275,11275, 1807, 2866, 5784, 6914, 1283, 2867, + 674, 2005, 5971, 6686, 6890, 2926, 6658,11275,11275,11275, + 1807,11275,11275,11275, 1807, 5786, 2866, 674, 6909, 6921, + 2867, 6660, 2005, 674, 4593, 2862,11275,11275,11275, 1807, + 2868,11275,11275,11275, 1807,11275,11275,11275, 1807, 6958, + 2338, 2863,11275,11275,11275, 6663, 6891, 7017, 6889, 2865, + 11275,11275,11275, 1807, 674, 6905, 2866, 674, 2309, 674, + 2867, 674, 2005,11275,11275,11275, 1807, 5583, 5583, 5583, + 5583, 5583, 5583, 5583, 5583, 5583, 5583, 5583, 5584, 5740, + 5740, 5740, 5740, 674, 6737, 6930, 2308, 5913, 1325, 6895, + + 1490, 6661, 1491, 5914, 674, 6937, 2865, 6903, 1325, 674, + 6662, 674, 674, 1283, 1326, 1326, 1326, 1326, 1326, 1326, + 674, 6664, 6907, 1283, 1326, 1326, 1326, 1326, 1326, 1326, + 6990, 6936, 5585, 1283, 1325, 674, 5585, 6910, 7018, 674, + 5585, 674, 6665, 5740, 5740, 5740, 5741, 674, 2868, 6997, + 5726, 5726, 5726, 5726, 5726, 5726, 6669, 7022, 674, 1283, + 6721, 5740, 5740, 5740, 5741, 6827, 6827, 6827, 6827, 6827, + 6827, 1283, 7023, 5811, 5811, 5811, 5811, 1325, 6913, 7000, + 1326, 1326, 1326, 1326, 1326, 1326, 6916, 6919, 674, 1283, + 674, 674, 1331, 6828, 6828, 6828, 6828, 6828, 6828, 674, + + 6920, 6898, 1283, 5793, 5793, 5793, 5793, 2306, 2363, 4637, + 674, 5794, 7025, 674, 5793, 5793, 5793, 5793, 5793, 5793, + 5793, 5793, 674, 1337, 674, 1338, 5794, 1339, 5742, 5813, + 3548, 5795, 6923, 5793, 5793, 5793, 5793, 1341, 6947, 6918, + 6725, 1343, 5795, 674, 674, 674, 5795, 1473, 6726,11275, + 11275,11275, 1325, 6896, 7027, 5793, 5793, 5793, 5793, 1392, + 674, 5795, 2306, 5794, 5796, 674, 7030, 6897, 1326, 1326, + 1326, 1326, 1326, 1326, 6922, 6854, 6949, 1283, 674, 5796, + 1331, 7012, 5797, 5795, 6864, 6864, 6864, 6865, 674, 5811, + 5811, 5811, 5812, 6855, 6854, 6926, 6952, 5797, 5793, 5793, + + 5793, 5793, 674, 7033, 2309, 6929, 5794, 674, 674, 674, + 6928, 1337, 6855, 1338, 6927, 1339, 5796, 1283, 6906, 6931, + 6934, 7009, 1490, 674, 1491, 1341, 5795, 6727, 1342, 1343, + 674, 674, 674, 2305, 5797, 6856,11275, 6797, 2308, 1392, + 6932, 1636, 1490, 6935, 1491, 5813, 674, 674, 674, 6888, + 6954, 674, 6940, 6933, 2309, 6948, 674, 674, 6939, 5796, + 7034, 6857, 674, 6799, 6866, 674, 6941, 6942, 674, 6944, + 674, 6867, 2308, 674, 2532, 7035, 1490, 5797, 1491, 6943, + 6943, 6943, 6943, 6943, 6943, 674, 7036, 6800, 6801, 6802, + 6803, 1392, 6804, 6805, 7037, 7038, 6806, 6807, 6808, 2308, + + 6809, 6810, 6811, 1490, 6812, 6950, 6813, 6951, 674, 6946, + 1392, 2309, 674, 6814, 674, 674, 6957, 2306, 6953, 6959, + 674, 2306, 674, 2309, 674, 674, 674, 674, 6955, 2305, + 2306, 2309, 6962, 674, 674, 6964, 674, 6978, 674, 6979, + 674, 674, 674, 1473, 6981, 674, 674, 6982, 6983, 6987, + 6984, 674, 674, 2308, 6985, 6986, 674, 1490, 6980, 1491, + 6988, 674, 674, 6989, 674, 6992, 674, 6993, 6999, 674, + 6994, 674, 674, 6998, 6995, 2309, 1392, 7004, 674, 2461, + 674, 674, 674, 674, 7003, 7005, 1473, 674, 7039, 6996, + 7008, 7001, 2305, 674, 7002, 7013, 7013, 7013, 7014, 674, + + 7007, 674, 7011, 7006, 7040, 674, 5962, 674, 7010, 7010, + 7010, 7010, 7010, 7010, 1473, 674, 5968, 5968, 5968, 5968, + 5968, 5968, 5968, 5969, 7020, 7021, 7044, 7019, 674, 7045, + 2309, 7026, 2529, 674, 7031, 1636, 7028, 2531, 1652, 1558, + 1653, 1652, 7047, 1653, 7048, 7041, 7042, 7049, 1283, 7043, + 7050, 7029, 1636, 7046, 7051, 1636, 7053, 7054, 7055, 7056, + 1652, 7057, 1653, 7058, 7059, 2529, 7060, 674, 7061, 1558, + 6862, 7052, 7063, 674, 6864, 6864, 6864, 6865, 7065, 7066, + 7067, 2690, 7015, 7062, 7068, 7069, 2687, 7071, 6877, 7072, + 7070, 7073, 2687, 7074, 7075, 7076, 7077, 1652, 6883, 1653, + + 7078, 6884, 7079, 5970, 2532, 2531, 7082, 5970, 1325, 1652, + 7081, 1653, 7083, 7084, 7085, 7086, 7080, 7087, 7088, 7090, + 2532, 7091, 7092, 7093, 1326, 1326, 1326, 1326, 1326, 1326, + 7094, 7095, 7089, 1283, 7096, 7097, 1331, 7098, 7099, 7100, + 7101, 1652, 7102, 1653, 7103, 7104, 7105, 7106, 7107, 2579, + 4872, 7108, 7109, 6921, 7064, 7110, 7112, 7113, 1636, 7114, + 7115, 6867, 7116, 2532, 6928, 7118, 7024, 1530, 7111, 1531, + 7119, 7120, 2529, 7117, 1558, 7123, 7124, 7125, 7126, 7121, + 2532, 1533, 3775, 2532, 1534, 1535, 1325, 7127, 7122, 7128, + 7129, 6942, 6943, 6943, 6943, 6943, 6943, 6943, 7130, 7131, + + 1558, 7133, 1326, 1326, 1326, 1326, 1326, 1326, 7134, 2531, + 1558, 1283, 7137, 1652, 1331, 7136, 7138, 7139, 7132, 7140, + 1558, 7142, 7143, 7144, 2555, 7145, 2531, 7135, 2532, 2529, + 1652, 7146, 1653, 2532, 7147, 2532, 7148, 7149, 7141, 7150, + 7151, 7152, 1636, 7154, 7155, 1530, 7156, 1531, 7157, 2531, + 7158, 7159, 7160, 1652, 7161, 1653, 7162, 7153, 7163, 1533, + 7164, 7165, 1534, 1535, 6797, 7166, 7167, 7170, 7171, 7172, + 7168, 2532, 7173, 1558, 7176, 7177, 7178, 7181, 2529, 7182, + 2666, 1636, 7183, 7184, 7187, 7169, 7180, 7022, 7174, 7188, + 6799, 7175, 7189, 1636, 7179, 7010, 7010, 7010, 7010, 7010, + + 7010, 6153, 7013, 7013, 7013, 7014, 7185, 7186, 1636, 7190, + 7192, 7191, 7193, 2532, 6800, 6801, 6802, 6803, 1558, 6804, + 6805, 2532, 7196, 6806, 7032, 6808, 2531, 6809, 6810, 6811, + 1652, 6812, 7195, 6813, 7197, 7194, 7198, 7199, 7200, 7201, + 6814, 7202, 7203, 7204, 7205, 7206, 7207, 7208, 7209, 7210, + 7211, 7212, 7213, 7214, 7215, 7216, 7217, 7218, 7219, 7220, + 5046, 7221, 7222, 7223, 6223, 6223, 6223, 6223, 7225, 7226, + 7227, 7228, 7229, 7230, 7231, 7232, 6234, 7233, 7232, 6234, + 7234, 7235, 3904, 5082, 7236, 7236, 7236, 7236, 7238, 7015, + 895, 6242, 6242, 6242, 6242, 7239, 7240, 6246, 7241, 7242, + + 2529, 6250, 6250, 6250, 6250, 7243, 7244, 7232, 7245, 7246, + 7232, 7247, 7248, 7249, 7232, 7250, 7251, 7232, 7252, 7232, + 7253, 7254, 7232, 7255, 7256, 5120, 7257, 7258, 7258, 7258, + 7258, 1807, 7260, 6240, 7261, 6278, 6280, 6281, 7263, 6283, + 7264, 7265, 7266, 6289, 7267, 7268, 7269, 6292, 6293, 7270, + 7271, 6224, 7272, 7273, 7275, 6298, 1806, 6251, 2868, 6302, + 1806, 1806, 1806, 6241, 1806, 7274, 6303, 6304, 1806, 2865, + 2863, 7237, 1806, 1806, 7276, 7277, 7278, 7279, 5084, 7280, + 1806, 6247, 1807, 7281, 1806, 7282, 6314, 6314, 6314, 6314, + 2866, 1806, 1806, 7285, 2867, 7289, 2005, 2865, 1808, 1808, + + 1808, 1808, 1808, 1808, 7283, 7291, 7290, 1806, 5733, 7292, + 1812, 6314, 6314, 6314, 6315, 7286, 7293, 7298, 7299, 2867, + 2868, 2005, 7294, 7300, 2863, 7304, 7303, 7305, 7306, 7296, + 7301, 7307, 7308, 7309, 7310, 7312, 6337, 7311, 2866, 1806, + 7314, 1818, 2867, 1819, 2005, 6343, 1807, 5174, 5174, 5174, + 5175, 7315, 7317, 7318, 2862, 1821, 7319, 7262, 1822, 1823, + 1807, 1806, 7313, 7313, 7313, 7313, 7313, 7313, 7316, 6351, + 1806, 1806, 6352, 7284, 7320, 7295, 1808, 1808, 1808, 1808, + 1808, 1808, 7297, 7302, 2865, 1806, 7321, 5233, 1812, 7322, + 7323, 2865, 7324, 6359, 1806, 6360, 7325, 1806, 7284, 6361, + + 2865, 7326, 7327, 2868, 7329, 2867, 2865, 2005, 2867, 4584, + 2005, 4584, 7335, 7336, 7337, 7338, 4584, 7339, 1806, 1818, + 1806, 1819, 7328, 3173, 1806, 5265, 5265, 5265, 6385, 5766, + 5265, 7349, 7347, 1821, 7341, 2863, 1822, 1823, 6797, 7343, + 7342, 5265, 5265, 4584, 7348, 7350, 7345, 7351, 7344, 7352, + 7346, 7353, 7354, 1806, 3179, 2862, 6395, 7356, 5283, 6398, + 6862, 7357, 7360, 7361, 6799, 7362, 7363, 7364, 7365, 7355, + 7368, 3173, 6877, 7369, 7330, 7367, 7370, 7331, 3173, 7375, + 7378, 1806, 7379, 7334, 1806, 4593, 7287, 4593, 6800, 6801, + 6802, 6803, 4593, 6804, 6805, 2868, 7381, 6806, 7288, 6808, + + 5321, 6809, 6810, 6811, 7332, 6812, 2866, 6813, 7382, 7371, + 2867, 7333, 2005, 2867, 6814, 2005, 7384, 7385, 7388, 4593, + 5257, 5257, 5257, 5257, 5257, 5258, 5257, 5257, 5257, 5259, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5260, 5260, 5260, 5260, 5260, 5260, 5257, 5257, 5257, + 5261, 5257, 5257, 5262, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5257, 5257, 5257, + 5257, 5257, 5257, 5263, 5264, 5263, 7340, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5266, 5263, + + 5263, 5267, 5268, 5263, 5263, 5263, 5263, 5263, 5263, 5257, + 5257, 5257, 5257, 6864, 6864, 6864, 7358, 2866, 6423, 7372, + 6429, 2867, 7373, 2005, 5811, 5811, 5811, 6409, 6883, 5824, + 7383, 7376, 6420, 7366, 7372, 2866, 6433, 7373, 6435, 2867, + 2868, 2005, 7386, 1806, 6438, 1806, 7380, 7389, 7390, 6441, + 6442, 7391, 1806, 7392, 7393, 7394, 7395, 1806, 7396, 7397, + 6449, 1806, 7398, 1806, 5349, 7399, 7401, 7402, 7404, 1806, + 7407, 7408, 7405, 7409, 1806, 1806, 7410, 7411, 7412, 7413, + 5813, 7414, 3203, 7415, 7374, 1806, 7406, 2868, 7416, 7416, + 7416, 7417, 2868, 7359, 7419, 7419, 7419, 7420, 7422, 7377, + + 6867, 5374, 7423, 7424, 7425, 7426, 7427, 5380, 7428, 2867, + 2866, 2005, 6485, 7430, 2867, 7431, 2005, 7387, 7400, 7432, + 7403, 7429, 7433, 7434, 6491, 7435, 7436, 7437, 2866, 2865, + 7438, 7439, 2867, 7440, 2005, 2975, 5319, 1806, 2862, 7442, + 7445, 7443, 7441, 7446, 6504, 7447, 7448, 7449, 7450, 1806, + 2865, 6509, 7451, 2865, 7444, 6511, 7452, 7453, 7454, 7455, + 7456, 7457, 7458, 7459, 7460, 7461, 7463, 7464, 2868, 1806, + 6526, 7465, 7466, 7467, 7468, 7418, 1806, 5855, 7462, 7469, + 1806, 7421, 2863, 2862, 7472, 7473, 7474, 6537, 7475, 7470, + 7476, 7477, 7478, 7479, 7480, 1806, 4289, 7471, 6542, 6542, + + 6542, 6542, 6542, 6542, 6542, 6543, 2868, 7482, 7483, 7484, + 7481, 7486, 1806, 7487, 7488, 7490, 2862, 7491, 2866, 6557, + 6558, 6560, 2867, 7494, 2005, 7496, 2862, 7497, 7498, 2866, + 1806, 7499, 7500, 2867, 7489, 2005, 7485, 7485, 7485, 7485, + 7485, 7485, 3203, 7492, 1806, 1806, 1806, 2862, 2866, 7503, + 7504, 2866, 2867, 2868, 7493, 2867, 5474, 2005, 7505, 7507, + 7508, 7509, 2926, 7510, 2868, 7502, 2863, 7495, 7511, 2868, + 2868, 7513, 6590, 6591, 6591, 6591, 6591, 6594, 7514, 7512, + 6591, 6591, 6591, 6592, 7515, 7516, 7517, 7518, 7519, 7520, + 7522, 7523, 7525, 7526, 7501, 7521, 7527, 1806, 7528, 7529, + + 7524, 7530, 1806, 7531, 2868, 7533, 2865, 7534, 1806, 7535, + 7536, 7537, 2866, 7538, 7539, 7540, 2867, 7541, 2005, 7542, + 7506, 7532, 7543, 7544, 7545, 7546, 7550, 7547, 7551, 7552, + 2868, 7548, 7553, 7554, 2868, 2862, 7557, 7558, 7559, 7560, + 3136, 2863, 7563, 7564, 7566, 7567, 7549, 2865, 7568, 7562, + 7555, 7569, 7570, 7556, 7573, 7574, 6654, 7561, 7575, 6514, + 7565, 7565, 7565, 7565, 7565, 7565, 7576, 6642, 7013, 7013, + 7013, 7571, 5968, 5968, 5968, 6651, 2866, 2865, 6659, 7578, + 7572, 1806, 2005, 7579, 7022, 2868, 6663, 3024, 3199, 7580, + 7577, 7581, 7582, 7583, 2048, 2049, 7585, 7586, 7587, 7585, + + 1806, 7590, 7591, 1806, 1558, 7593, 7594, 6677, 7595, 7596, + 6677, 1806, 7592, 2062, 2063, 2062, 2063, 7598, 2062, 2063, + 2062, 2063, 7141, 7601, 2531, 7604, 4584, 7607, 1652, 1558, + 1653, 1558, 7608, 2112, 7610, 7603, 7611, 7605, 7612, 7606, + 7613, 7614, 7615, 7616, 7617, 7618, 2121, 7141, 2121, 2121, + 2121, 7588, 2121, 2121, 7625, 7015, 7626, 7627, 7628, 5970, + 7232, 7629, 7630, 7232, 7631, 7632, 7633, 1138, 1325, 1331, + 1331, 1331, 674, 674, 7663, 7589, 674, 7584, 7602, 674, + 674, 7674, 7658, 7665, 1326, 1326, 1326, 1326, 1326, 1326, + 7609, 674, 674, 1283, 7675, 7667, 7597, 7599, 6740, 7676, + + 7600, 7619, 4593, 6741, 674, 674, 7636, 7620, 674, 7622, + 7659, 7659, 7659, 7660, 2112, 7621, 7624, 7635, 674, 674, + 7623, 7677, 674, 1283, 7664, 674, 674, 1392, 1283, 674, + 6742, 7666, 674, 674, 674, 674, 674, 7678, 674, 7670, + 7634, 1325, 7679, 6745, 7668, 7669, 674, 674, 674, 674, + 674, 7680, 674, 7681, 7672, 1283, 7671, 1326, 1326, 1326, + 1326, 1326, 1326, 674, 674, 7682, 1283, 674, 1283, 1331, + 674, 674, 7683, 7684, 7673, 7685, 1262, 7686, 674, 674, + 7687, 7688, 674, 7689, 7690, 7691, 7695, 7696, 7697, 6814, + 7661, 7692, 7692, 7692, 7692, 7692, 7692, 7662, 7772, 7773, + + 1337, 7780, 1338, 7637, 1339, 6883, 7816, 1490, 6883, 1491, + 7838, 674, 674, 7841, 1341, 674, 6965, 1342, 1343, 7638, + 7638, 7638, 7638, 7638, 7638, 7638, 7638, 7638, 7638, 7638, + 7638, 7638, 7638, 7638, 7639, 7638, 7638, 7638, 7638, 7638, + 7638, 7638, 7638, 7638, 7638, 7638, 7638, 7638, 7638, 7638, + 7638, 7638, 7638, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7641, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7638, 7638, 7638, 7638, + 7638, 7638, 7640, 7640, 7642, 6801, 7643, 7644, 7640, 7645, + 7646, 7640, 7640, 7647, 7648, 7649, 7640, 7650, 7651, 7652, + + 7640, 7653, 7640, 7654, 7640, 7640, 7640, 7640, 7638, 7638, + 7655, 7638, 1325, 1239, 1239, 1239, 1239, 2272, 1242, 1242, + 1242, 1242, 1265, 1266, 7868, 7701, 6797, 6797, 1326, 1326, + 1326, 1326, 1326, 1326, 674, 674, 7699, 1283, 674, 7869, + 1331, 674, 674, 6797, 7870, 674, 6797, 7698, 674, 674, + 7702, 6797, 674, 6797, 674, 674, 674, 674, 674, 7704, + 674, 6797, 7705, 7703, 674, 674, 1273, 6797, 674, 1240, + 7700, 1337, 2485, 1338, 1243, 1339, 6797, 7656, 6824, 6797, + 6797, 7657, 6797, 6797, 7693, 1341, 1325, 2308, 1342, 1343, + 674, 1490, 6797, 1491, 674, 7706, 6797, 4584, 6797, 7871, + + 7694, 6921, 6814, 6814, 7872, 7707, 7710, 7711, 6928, 7708, + 7712, 1283, 674, 674, 7873, 7709, 674, 7713, 7715, 6814, + 7714, 6883, 6814, 7728, 6884, 7874, 1283, 6814, 7718, 6814, + 7875, 4584, 7717, 1283, 7716, 7876, 7719, 6814, 7721, 7877, + 7723, 7720, 7878, 6814, 7017, 7922, 7724, 7747, 7727, 1283, + 724, 7722, 6814, 7725, 4584, 6814, 6814, 7917, 6814, 6814, + 674, 674, 7737, 7926, 674, 7726, 674, 674, 6814, 724, + 674, 4584, 6814, 4593, 6814, 7924, 7730, 7731, 724, 7729, + 674, 674, 674, 674, 674, 7732, 674, 1473, 7733, 674, + 674, 674, 674, 724, 674, 2309, 674, 674, 7752, 7734, + + 674, 2363, 674, 674, 674, 674, 674, 4593, 674, 4584, + 7735, 674, 7736, 4584, 7749, 674, 4584, 674, 674, 7737, + 4584, 674, 7738, 7738, 7738, 7738, 7738, 7738, 674, 674, + 4593, 7751, 674, 7918, 7739, 674, 674, 674, 674, 674, + 724, 674, 7742, 674, 2309, 4584, 674, 4593, 7741, 674, + 674, 7740, 4584, 674, 674, 674, 2309, 7929, 674, 724, + 6794, 674, 674, 674, 674, 674, 7743, 674, 724, 7744, + 674, 674, 7753, 724, 674, 7745, 7925, 7748, 2485, 7754, + 7746, 7750, 674, 674, 724, 4593, 674, 724, 7755, 4593, + 7729, 7973, 4593, 724, 7756, 7759, 4593, 7774, 674, 674, + + 7758, 7757, 674, 6923, 674, 674, 674, 674, 674, 7760, + 674, 674, 674, 7941, 724, 674, 1392, 7762, 7762, 7762, + 7762, 4593, 7770, 674, 674, 674, 674, 674, 4593, 674, + 7761, 7762, 7762, 7762, 7762, 724, 7762, 7762, 7762, 7762, + 7940, 5793, 5793, 5793, 5793, 7769, 674, 674, 7771, 5794, + 674, 674, 674, 724, 7985, 674, 674, 674, 2309, 7931, + 674, 6864, 6864, 6864, 6864, 6864, 6864, 6864, 6865, 5795, + 674, 674, 6900, 1636, 674, 724, 7777, 7776, 6854, 674, + 674, 7778, 7942, 674, 674, 674, 2309, 724, 674, 724, + 674, 674, 6854, 1283, 674, 7930, 6855, 6854, 724, 7764, + + 7779, 724, 7768, 674, 674, 1473, 2579, 674, 674, 674, + 6855, 7763, 674, 7934, 724, 6855, 7765, 7765, 7765, 7765, + 5797, 674, 674, 7796, 5794, 674, 7943, 724, 2309, 724, + 7766, 7784, 7766, 7767, 7785, 7767, 7767, 7767, 7767, 7767, + 7767, 7932, 674, 674, 5795, 7775, 7781, 7786, 6867, 7782, + 7787, 724, 6867, 674, 674, 674, 674, 674, 7788, 674, + 7790, 7789, 2308, 7791, 8065, 674, 1490, 7783, 1491, 674, + 7793, 674, 674, 7792, 7794, 674, 2363, 5796, 1473, 674, + 674, 674, 674, 674, 7795, 674, 674, 674, 674, 674, + 674, 8066, 674, 7956, 2461, 5797, 7936, 674, 674, 674, + + 674, 674, 724, 674, 7797, 674, 674, 2485, 724, 674, + 7799, 7935, 7798, 674, 674, 674, 674, 674, 724, 674, + 2363, 7804, 7804, 7804, 7804, 7804, 674, 674, 674, 674, + 674, 2363, 674, 2363, 7800, 724, 674, 7801, 7938, 7802, + 674, 674, 674, 2306, 7933, 674, 674, 674, 6938, 7803, + 674, 2532, 7967, 2309, 674, 674, 7806, 724, 674, 674, + 674, 674, 674, 674, 724, 674, 7937, 1473, 674, 674, + 7805, 674, 7807, 724, 674, 2309, 674, 674, 674, 674, + 674, 7809, 674, 724, 7927, 1473, 7092, 7808, 674, 674, + 674, 674, 674, 7951, 674, 674, 674, 2687, 2485, 674, + + 7810, 7813, 724, 674, 674, 7811, 7812, 674, 674, 674, + 674, 674, 674, 724, 674, 674, 674, 674, 674, 674, + 7201, 674, 7814, 674, 674, 7815, 7819, 674, 674, 674, + 674, 674, 674, 7817, 674, 1392, 674, 674, 7701, 7818, + 674, 7952, 674, 674, 674, 674, 674, 724, 674, 7821, + 2308, 7822, 7820, 674, 7823, 7824, 1491, 674, 674, 674, + 674, 674, 674, 7702, 674, 7825, 674, 674, 674, 674, + 7826, 7945, 674, 674, 674, 7827, 7829, 674, 2363, 7828, + 674, 674, 674, 674, 674, 7830, 674, 724, 7840, 2309, + 674, 674, 7113, 7831, 674, 2363, 674, 674, 674, 674, + + 674, 7946, 674, 674, 674, 674, 674, 674, 724, 674, + 7833, 674, 674, 1392, 7832, 674, 724, 8067, 674, 674, + 674, 674, 674, 7949, 674, 7834, 2308, 7835, 7974, 674, + 7839, 7849, 1491, 674, 1325, 7836, 674, 674, 724, 724, + 674, 7957, 2461, 674, 674, 674, 674, 674, 7962, 674, + 6943, 6943, 6943, 6943, 6943, 6943, 724, 7842, 724, 1283, + 674, 674, 674, 674, 674, 7976, 674, 7850, 724, 7948, + 674, 674, 7843, 7844, 674, 7980, 674, 7851, 724, 7848, + 674, 674, 7857, 724, 7845, 674, 7845, 7846, 2309, 7847, + 7847, 7847, 7847, 7847, 7847, 2532, 674, 674, 7852, 7939, + + 674, 724, 2461, 674, 674, 7958, 724, 674, 7853, 7853, + 7853, 7854, 674, 674, 7954, 7969, 674, 7858, 7856, 8068, + 674, 1490, 7859, 1491, 674, 674, 674, 674, 674, 674, + 724, 674, 7860, 724, 2306, 2308, 674, 7866, 674, 1490, + 674, 1491, 674, 674, 674, 7886, 7861, 674, 674, 674, + 7979, 724, 674, 674, 674, 7862, 2305, 674, 7863, 674, + 674, 7865, 7977, 674, 674, 674, 674, 674, 674, 8069, + 674, 7864, 724, 2532, 674, 674, 674, 674, 7879, 724, + 674, 7867, 674, 674, 674, 7881, 674, 7882, 674, 1473, + 8070, 2309, 674, 674, 7880, 7855, 674, 674, 674, 674, + + 674, 674, 7963, 674, 7883, 7885, 7888, 1473, 724, 7884, + 674, 674, 674, 674, 674, 8071, 674, 674, 674, 2306, + 7955, 674, 7890, 1636, 7897, 7889, 7964, 674, 674, 7887, + 7893, 674, 724, 7891, 674, 674, 724, 7966, 674, 724, + 7892, 674, 674, 674, 674, 674, 1558, 674, 7894, 674, + 674, 674, 674, 674, 7978, 674, 2306, 724, 674, 674, + 7947, 7895, 674, 7898, 674, 674, 724, 7896, 674, 674, + 674, 724, 7998, 674, 724, 7899, 674, 674, 674, 674, + 674, 7908, 674, 2309, 7901, 8036, 7900, 674, 7903, 674, + 7902, 674, 7910, 674, 674, 674, 2309, 7905, 674, 674, + + 674, 1473, 7915, 674, 674, 674, 7904, 7906, 674, 7981, + 674, 1490, 724, 1491, 674, 674, 674, 674, 674, 674, + 7911, 674, 2309, 7907, 7909, 2532, 674, 674, 7912, 7029, + 674, 724, 724, 2309, 7960, 674, 674, 2338, 1325, 674, + 2579, 674, 674, 674, 674, 674, 6797, 674, 724, 7914, + 7982, 7913, 724, 7916, 7010, 7010, 7010, 7010, 7010, 7010, + 674, 674, 7919, 1283, 674, 674, 674, 674, 674, 674, + 7701, 674, 7796, 2461, 7013, 7013, 7013, 7013, 7013, 7013, + 7013, 7014, 674, 674, 674, 674, 674, 7920, 2503, 7921, + 7968, 2687, 2666, 7944, 7718, 7702, 724, 7950, 7953, 724, + + 7784, 7961, 7928, 7785, 2532, 1636, 1283, 2532, 2532, 7965, + 724, 6938, 7971, 724, 724, 7786, 7788, 7790, 7787, 7789, + 7791, 724, 6814, 2531, 1636, 724, 8008, 1652, 724, 1653, + 7983, 8072, 2531, 724, 7959, 7986, 1652, 724, 1653, 724, + 724, 724, 7972, 2666, 2687, 2532, 7975, 724, 724, 724, + 724, 724, 1558, 7804, 7804, 7804, 7804, 7804, 2531, 7988, + 7989, 7015, 7987, 7993, 1653, 7015, 1325, 7991, 724, 7984, + 7990, 2532, 724, 724, 724, 724, 2687, 724, 7701, 724, + 724, 724, 1326, 1326, 1326, 1326, 1326, 1326, 2579, 2579, + 2579, 1283, 2579, 7992, 1331, 7994, 724, 724, 724, 1636, + + 724, 7995, 7970, 7702, 724, 2579, 7997, 7996, 1558, 7840, + 8002, 724, 724, 724, 724, 724, 8000, 724, 8003, 724, + 2531, 7849, 7999, 8006, 8001, 1530, 1653, 1531, 724, 724, + 8005, 8007, 8073, 8004, 8010, 724, 724, 8011, 1652, 1533, + 1653, 8012, 1534, 1535, 1325, 5042, 724, 724, 8013, 724, + 724, 7853, 7853, 7853, 7854, 724, 724, 8017, 724, 8018, + 1326, 1326, 1326, 1326, 1326, 1326, 2529, 8009, 8014, 1283, + 8015, 724, 1331, 2532, 724, 724, 724, 724, 724, 724, + 8019, 8016, 724, 8022, 8020, 8021, 724, 8025, 724, 2532, + 8026, 7886, 2666, 724, 8023, 724, 1636, 724, 8029, 724, + + 8027, 8028, 8033, 1530, 8037, 1531, 724, 8032, 724, 8030, + 724, 8024, 724, 8043, 724, 8034, 8031, 1533, 724, 724, + 1534, 1535, 7923, 7844, 724, 724, 8038, 8047, 8035, 2532, + 8075, 7915, 724, 724, 7845, 724, 7845, 7846, 7855, 7847, + 7847, 7847, 7847, 7847, 7847, 8039, 8040, 8042, 8048, 8055, + 724, 8044, 8041, 1636, 724, 1636, 8045, 8049, 2532, 724, + 1652, 8051, 1653, 8050, 724, 724, 2555, 8054, 2532, 724, + 8056, 724, 8046, 8076, 724, 7887, 2532, 724, 724, 8053, + 8052, 724, 724, 724, 1636, 2531, 724, 724, 8058, 1652, + 1636, 1653, 8059, 8077, 2703, 8057, 8060, 724, 724, 8063, + + 724, 724, 2666, 724, 724, 8061, 724, 8062, 8074, 724, + 8078, 724, 8079, 8080, 8081, 724, 8064, 8064, 8064, 8064, + 8064, 8064, 8082, 724, 8083, 8084,11275,11275, 8085, 7223, + 7225, 8086, 8087, 8088, 8089, 5046, 8090, 8091, 7232, 8092, + 8091, 7232, 8093,11275, 8095, 8096,11275, 7236, 7236, 7236, + 7236, 8097, 8098, 895, 8099, 8100, 8091,11275,11275, 8091, + 11275,11275,11275, 8111,11275,11275, 724, 8103, 8091,11275, + 11275, 8091,11275,11275, 8091,11275,11275, 8091,11275,11275, + 11275, 2532, 8114,11275, 8115, 1007, 8121, 724, 8110, 7258, + 7258, 7258, 7258, 8112, 8112, 8112, 8112, 8118, 1007, 8120, + + 8113, 1007, 1007, 8119, 1007, 8122, 1007, 1007, 8124, 1007, + 8123, 8126, 1007, 1007, 7277, 8125, 8131, 7278, 8094, 8102, + 7279, 7280, 8127, 1007, 7281, 8129, 1007, 8132, 1007, 8101, + 8128, 8106, 8136, 6797, 7237, 1007, 6797, 8108, 8137, 1806, + 8133, 8105, 1806, 1007, 8138, 1806, 1806, 8107, 8140, 1806, + 8130, 8104, 1007, 3173, 1007, 7729, 8141, 8139, 1007, 8143, + 8109, 1007, 8142, 7294, 7296, 2865, 8144, 8145, 8147, 1007, + 7301, 8146, 8148, 8151, 2975, 1007, 1007, 1007, 2868, 1007, + 1007, 1007, 8113, 1807, 8135, 7307, 1007, 2866, 1806, 1806, + 7737, 2867, 7719, 2005, 1807, 1806, 8149, 1007, 8134, 1808, + + 1808, 1808, 1808, 1808, 1808, 1007, 1007, 8157, 1806, 6814, + 1806, 1812, 6814, 8150, 1007, 1007, 7295, 7297, 8162, 1806, + 8152, 1007, 1007, 7302, 8154, 2868, 8156, 8153, 2868, 8155, + 8158, 1007, 7283, 1007, 1007, 8160, 1007, 3173, 1007, 8161, + 4584, 8163, 1818, 8165, 1819, 1007, 8164, 1007, 3173, 4584, + 8166, 4584, 1007, 4584, 4584, 8116, 1821, 8172, 1007, 1822, + 1823, 1807, 8173, 8174, 8180, 8175, 8175, 8175, 8176, 7348, + 8181, 1007, 1007, 5263, 5263, 6380, 8182, 1808, 1808, 1808, + 1808, 1808, 1808, 5263, 5263, 5263, 1806, 5263, 8167, 1812, + 7354, 8183, 2863, 7449, 1806, 8184, 5263, 2862, 7343, 8169, + + 5263, 8170, 1007, 1007, 1007, 8186, 8159, 8187, 8188, 8171, + 1007, 8185, 8168, 1007, 8189, 1806, 4593, 1007, 2868, 7412, + 1818, 8191, 1819, 1007, 2868, 4593, 8192, 4593, 8190, 4593, + 4593, 8193, 8211, 8117, 1821, 1007, 2868, 1822, 1823, 8177, + 1007, 1007, 1007, 8195, 8196, 1007, 8212, 1007, 1007, 1007, + 8198, 8216, 8178, 5257, 5257, 5257, 5257, 5257, 5258, 5257, + 5257, 5257, 5259, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5260, 5260, 5260, 5260, 5260, 5260, + 5257, 5257, 5257, 5261, 5257, 5257, 5262, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5257, 5257, 5257, 5257, 5257, 5257, 5263, 5264, 5263, 5265, + 6379, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 8179, + 5263, 5266, 5263, 5263, 5267, 5268, 5263, 5263, 5263, 5263, + 5263, 5263, 5257, 5257, 5257, 5257, 6864, 6864, 6864, 7358, + 8194, 2865, 8197, 7784, 1807, 6883, 8199, 8217, 7376, 8200, + 1007, 1007, 8201, 1007, 8203, 8204, 8204, 8205, 7386, 8214, + 8206, 2866, 8209, 8207, 1806, 2867, 8215, 2005, 2975, 1806, + 1007, 1007, 8208, 1806, 8210, 8213, 7388, 1007, 2865, 7389, + 7390, 8218, 1007, 1806, 8219, 8220, 7397, 8221, 1007, 8222, + + 7399, 8223, 1007, 8226, 1007, 7401, 7402, 8224, 8228, 8225, + 8227, 1806, 8231, 1007, 1806, 1806, 1007, 1007, 8229, 1007, + 8236, 1806, 2868, 2868, 8202, 1806, 7775, 6938, 1007, 3173, + 1806, 1806, 2975, 6867, 1007, 8202, 2865, 2975, 1007, 1007, + 3136, 1007, 8232, 2975, 8237, 1007, 1007, 1007, 1007, 8241, + 8230, 1007, 1007, 7400, 1007, 8235, 8238, 1007, 8255, 7403, + 8233, 8233, 8233, 8233, 8233, 1007, 7416, 7416, 7416, 7416, + 7416, 7416, 7416, 7417, 7419, 7419, 7419, 7419, 2865, 7419, + 7419, 7419, 7420, 8239, 8251, 7445, 8257, 1007, 1007, 1007, + 3173, 8242, 8240, 8245, 1007, 1007, 8243, 1007, 1806, 1007, + + 2865, 8246, 8244, 1007, 8260, 7447, 2865, 1806, 8247, 8234, + 1007, 1007, 2862, 1007, 8248, 1007, 1007, 1007, 1007, 8254, + 8249, 1007, 8250, 7451, 8253, 8258, 1007, 2866, 8261, 8252, + 1806, 8256, 8259, 2005, 1007, 1007, 8262, 1007, 7452, 1007, + 1007, 1007, 8264, 8265, 8266, 8269, 8263, 8129, 1806, 1007, + 1007, 8267, 1007, 7418, 1007, 7464, 8270, 7418, 2975, 8268, + 1007, 7421, 8271, 1806, 7467, 2868, 7421, 1007, 8273, 8272, + 7472, 7473, 8130, 1007, 7474, 8275, 1007, 1007, 1007, 2975, + 1806, 1007, 8274, 8276, 2862, 7478, 7840, 1007, 8282, 1806, + 8278, 1007, 3136, 1007, 8300, 1806, 1806, 1007, 8277, 1806, + + 1007, 8279, 8283, 2866, 1807, 8284, 1007, 8280, 1007, 2005, + 1806, 8289, 8285, 1007, 8296, 1007, 8288, 1007, 8281, 1007, + 7485, 7485, 7485, 7485, 7485, 7485, 8290, 8291, 8292, 1806, + 7500, 8293, 8295, 1007, 8301, 1007, 1007, 1007, 8304, 8297, + 1007, 7853, 7853, 7853, 8294, 2868, 7505, 8299, 1007, 8286, + 1007, 2867, 8298, 2005, 1007, 1806, 8302, 1007, 8306, 8313, + 7845, 8303, 7845, 7846, 2863, 8287, 8287, 8287, 8287, 8287, + 8287, 1806, 8305, 1007, 1007, 8307, 1007, 1007, 8308, 8309, + 8310, 1007, 3136, 1007, 8311, 1007, 8314, 8315, 8318, 8319, + 1007, 8316, 1007, 8320, 8321, 8312, 8317, 8322, 8323, 8324, + + 8325, 8326, 8327, 8329, 1007, 8336, 1007, 8331, 8332, 8330, + 2865, 2866, 8328, 2868, 1007, 2867, 1007, 2005, 8338, 8334, + 1007, 1007, 8335, 1007, 1007, 8333, 1007, 8339, 7855, 8337, + 8340, 1007, 8343, 8344, 1007, 1007, 8348, 1007, 8347, 8349, + 1007, 8341, 1007, 1007, 1007, 8345, 8346, 2868, 8342, 1007, + 8350, 8351, 8353, 8360, 1007, 8355, 8356, 8352, 1007, 8354, + 2865, 8361, 8357, 2868, 1007, 2868, 2867, 2865, 2005, 8362, + 1007, 8363, 1007, 8364, 2926, 8368, 2866, 1007, 8358, 1007, + 2867, 1807, 2005, 1007, 2868, 1007, 8359, 1007, 8365, 7887, + 8366, 1007, 1007, 8369, 2868, 8367, 8370, 7565, 7565, 7565, + + 7565, 7565, 7565, 7573, 8371, 7574, 1806, 1007, 8372, 8373, + 1007, 7013, 7013, 7013, 7571, 8374, 7580, 8375, 3179, 1007, + 8377, 8327, 1007, 2868, 8378, 1007, 3203, 8376, 1806, 1007, + 1806, 2048, 2049, 7585, 7586, 7587, 7585, 2048, 2049, 1806, + 8380, 8380, 8380, 8380, 2048, 2049, 3136, 1007, 1062, 8381, + 8382, 8383, 8381, 1636, 724, 8385, 724, 2057, 8386, 8387, + 8388, 8389, 2062, 2063, 724, 1007, 2062, 2063, 7598, 724, + 2062, 2063, 2062, 2063, 4584, 724, 8397, 8394, 8395, 724, + 8398, 1636, 8396, 724, 8401, 2112, 8402, 8403, 7588, 8400, + 8400, 8400, 8400, 8400, 8400, 5585, 2053, 724, 7015, 8404, + + 8405, 8407, 2121, 2121, 7588, 2058, 2121, 2121, 8384, 8379, + 8408, 2121, 8409, 8418, 2121, 8419, 8091, 7630, 8406, 8091, + 8420, 8103, 7633, 7756, 1118, 1118, 1118, 1118, 1118, 1331, + 8393, 8427, 8428, 8392, 8391, 1331, 1138, 8431, 8432, 8438, + 8390, 8417, 8417, 8417, 8417, 8417, 8417, 8439, 8440, 8443, + 4593, 8399, 8422, 8422, 8422, 8422, 8422, 8422, 8433, 8434, + 8441, 8412, 8435, 8423, 8436, 8444, 2112, 8437, 8442, 8411, + 8410, 8445, 8446, 8424, 8447, 8450, 8427, 8453, 674, 8413, + 8415, 8448, 8452, 8456, 8416, 8414, 7659, 7659, 7659, 7659, + 674, 674, 8458, 8449, 7853, 7853, 7853, 7854, 674, 674, + + 8455, 8457, 8460, 8461, 8464, 8104, 1325, 1490, 2309, 1491, + 674, 8466, 8467, 8463, 2338, 674, 8468, 8469, 8470, 8471, + 8472, 8473, 1326, 1326, 1326, 1326, 1326, 1326, 8462, 674, + 8465, 1283, 8474, 8475, 1331, 8476, 8477, 8478, 8479, 8480, + 8481, 8483, 8487, 8488, 674, 674, 8490, 8482, 674, 7701, + 674, 674, 674, 8518, 8489, 674, 8521, 674, 674, 674, + 674, 674, 674, 8522, 674, 1337, 8425, 1338, 8491, 1339, + 8492, 8523, 8519, 7662, 7702, 1473, 674, 8560, 8561, 2485, + 8524, 8459, 1342, 1343, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8429, + + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8426, 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8426, 8426, 8428, 8426, 1325, 7659, 7659, + 7659, 7660, 2272, 8520, 1265, 1266, 6797, 6797, 6797, 8563, + 6797, 6797, 6797, 1326, 1326, 1326, 1326, 1326, 1326, 6797, + + 6797, 6797, 1283, 6797, 6797, 1331, 1283, 6797, 6797, 674, + 6797, 8569, 6797, 674, 6797, 8493, 8571, 6797, 2308, 2309, + 674, 674, 1490, 6797, 1491, 8525, 6797, 8562, 8526, 674, + 4584, 8485, 6797, 4584, 674, 8517, 1337, 6797, 1338, 8451, + 1339, 6797, 8497, 6797, 8529, 674, 4584, 4584, 8494, 4584, + 1341, 8505, 4584, 1342, 1343, 4584, 8495, 8496, 8454, 8486, + 8504, 8502, 6814, 6814, 8498, 7662, 6814, 6814, 6814, 8499, + 8507, 8500, 8503, 8508, 8506, 6814, 6814, 6814, 8501, 6814, + 6814, 8509, 8510, 6814, 6814, 8511, 6814, 8512, 6814, 8514, + 6814, 8516, 8513, 6814, 4584, 8530, 8515, 2308, 8527, 6814, + + 674, 1490, 6814, 1491, 8532, 8534, 4593, 8531, 6814, 8535, + 2309, 8533, 4584, 6814, 8528, 4584, 4584, 6814, 8536, 6814, + 4584, 674, 4593, 4593, 674, 4593, 674, 8555, 4593, 8554, + 8568, 4593, 674, 8557, 2306, 7784, 8584, 8564, 7784, 8542, + 8543, 7762, 7762, 7762, 7762, 8566, 8537, 7762, 7762, 7762, + 7762, 674, 8556, 5793, 5793, 5793, 5793, 674, 674, 2363, + 8567, 5794, 8572, 7786, 8570, 674, 7786, 674, 2309, 8541, + 4593, 8538, 8539, 8576, 674, 7784, 8540, 7786, 7785, 7788, + 7787, 5795, 7788, 7788, 7790, 8558, 7789, 7790, 4593, 674, + 8565, 4593, 4593, 8573, 674, 674, 4593, 1473, 8575, 674, + + 674, 7790, 8544, 1283, 7791, 1283, 2503, 8574, 8549, 8559, + 674, 1283, 8577, 674, 5796, 674, 8578, 8579, 8585, 674, + 8545, 8546, 8546, 8546, 8546, 8553, 6855, 7796, 8580, 1283, + 8581, 674, 5797, 6856, 674, 8547, 1325, 8547, 8548, 674, + 8548, 8548, 8548, 8548, 8548, 8548, 8582, 2363, 674, 674, + 674, 674, 1283, 8591, 8588, 674, 8594, 674, 8583, 674, + 8587, 1283, 2308, 8586, 2309, 8589, 1490, 8593, 1491, 674, + 674, 674, 8599, 8592, 674, 674, 2305, 8595, 8597, 8596, + 2308, 8602, 6854, 4725, 1490, 8598, 1491, 3430, 8600, 8601, + 674, 8604, 674, 674, 674, 674, 8609, 8607, 674, 7838, + + 6855, 7765, 7765, 7765, 7765, 8603, 8606, 8610, 8612, 674, + 7849, 6927, 674, 8608, 8605, 8547, 8613, 8547, 8548, 8637, + 8548, 8548, 8548, 8548, 8548, 8548, 2309, 8621, 674, 5795, + 8611, 8614, 7844, 8618, 8623, 1283, 8619, 674, 2309, 674, + 674, 8638, 674, 7845, 8639, 7845, 7846, 8627, 7846, 7846, + 7846, 7846, 7846, 7846, 8626, 8615, 8631, 1283, 674, 674, + 8640, 7846, 6854, 7846, 7846, 7846, 7846, 7846, 7846, 7846, + 8620, 7846, 7846, 7846, 7846, 7846, 7846, 8636, 8641, 8642, + 6855, 5793, 5793, 5793, 5793, 7853, 7853, 7853, 7853, 5794, + 7853, 7853, 7853, 7854, 8624, 674, 8617, 674, 7767, 8625, + + 7767, 7767, 7767, 7767, 7767, 7767, 674, 8629, 8616, 5795, + 7846, 674, 7847, 7847, 7847, 7847, 7847, 7847, 1283, 8630, + 8628, 1283, 674, 8633, 8632, 674, 8643, 674, 8634, 674, + 8644, 8645, 8646, 2485, 674, 2309, 674, 674, 8635, 674, + 8648, 674, 5796, 8651, 8647, 7886, 2309, 8649, 674, 8616, + 8657, 8650, 8652, 2309, 8653, 8653, 8653, 8654, 2309, 8659, + 5797, 8550, 8550, 8550, 8550, 674, 8661, 8671, 8658, 5794, + 1283, 674, 8622, 674, 674, 8681, 674, 8622, 7767, 7917, + 7767, 7767, 7767, 7767, 7767, 7767, 1392, 8660, 8662, 5795, + 674, 8663, 8664, 674, 674, 674, 674, 8667, 674, 1473, + + 8656, 674, 674, 8665, 8675, 674, 674, 674, 674, 8666, + 8655, 8669, 8670, 674, 8668, 674, 8676, 8672, 8673, 674, + 2338, 674, 5796, 2309, 7915, 8674, 8677, 674, 1392, 7887, + 8680, 674, 674, 8682, 8683, 8684, 8678, 8551, 2485, 674, + 5797, 8552, 8679, 674, 674, 8687, 724, 8685, 724, 1283, + 724, 6797, 8517, 8693, 724, 724, 5971, 724, 8694, 8520, + 724, 724, 724, 8695, 8690, 8691, 8686, 1325, 724, 8696, + 724, 2531, 1636, 724, 724, 1652, 8519, 1653, 8697, 724, + 8555, 724, 724, 1326, 1326, 1326, 1326, 1326, 1326, 8698, + 8524, 8699, 1283, 724, 724, 1331, 8701, 8702, 8703, 724, + + 724, 724, 8704, 2532, 2532, 8556, 8557, 8700, 8709, 724, + 8568, 8710, 8692, 8707, 2531, 8706, 8564, 724, 1652, 724, + 1653, 724, 724, 8711, 724, 724, 1530, 6814, 1531, 2532, + 2579, 8708, 8712, 8714, 8723, 724, 1636, 8713, 8688, 724, + 1533, 8718, 724, 1534, 1535, 1325, 724, 724, 8715, 724, + 8716, 724, 8717, 8719, 724, 8720, 724, 8585, 8558, 724, + 724, 1326, 1326, 1326, 1326, 1326, 1326, 8721, 724, 8565, + 1283, 724, 724, 1331, 724, 8724, 724, 724, 724, 8726, + 2579, 8728, 8705, 724, 2531, 2703, 8725, 8593, 1652, 2532, + 1653, 8722, 8730, 8727, 724, 8729, 2529, 724, 8738, 724, + + 724, 4957, 8731, 724, 1530, 3666, 1531, 8689, 8732, 724, + 724, 8734, 8609, 8735, 724, 724, 724, 8740, 1533, 2531, + 8739, 1534, 1535, 1652, 8733, 1653, 724, 8736, 724, 724, + 8737, 8605, 8742, 724, 8741, 8745, 724, 8618, 8747, 8746, + 724, 724, 724, 724, 7117, 2532, 2532, 724, 8743, 724, + 8752, 8748, 724, 724, 8744, 724, 8749, 8751, 8750, 8753, + 724, 8757, 724, 2687, 8636, 724, 8754, 724, 724, 8755, + 8758, 8759, 724, 8756, 724, 724, 8761, 2532, 8760, 724, + 8764, 8767, 2532, 724, 1558, 8762, 8769, 8765, 724, 8763, + 2532, 724, 8771, 2532, 8653, 8653, 8653, 8654, 8766, 724, + + 724, 724, 8770, 8768, 8773, 8774, 724, 724, 724, 724, + 8777, 724, 1636, 724, 724, 8772, 8775, 8781, 724, 724, + 724, 724, 8776, 8779, 8780, 724, 724, 8778, 8784, 8782, + 724, 8783, 724, 8785, 724, 2532, 724, 8787, 2555, 724, + 8791, 2687, 8786, 1558, 724, 724, 8792, 724, 8793, 8790, + 8655, 724, 724, 724, 8788, 8794, 1636, 8789, 724, 724, + 724, 8795, 724, 8797, 8798, 724, 8799, 8686, 8800, 8801, + 8802, 8803, 8804, 8796, 8805, 8806, 8807, 8808, 8809, 8810, + 8812, 8813, 8814, 8815, 8810, 8816, 8817, 8819, 8810, 8091, + 8820, 8821, 8091, 8822, 8823, 8825, 724, 8827, 8828, 8829, + + 5046, 8830, 8831, 8103, 8832, 8833, 8834, 8835, 8836, 8837, + 8838, 8826, 8839, 724, 8112, 8112, 8112, 8112, 8840, 8843, + 8846, 8113, 1007, 1007, 8847, 8848, 8844, 8124, 8851, 8849, + 1007, 8853, 8811, 1007, 1007, 8850, 8129, 8811, 6797, 8818, + 2868, 8811, 8855, 8845, 1007, 1007, 1007, 8824, 1007, 8854, + 2866, 1007, 1806, 8852, 2867, 8859, 2005, 1007, 8860, 1007, + 8861, 8130, 6797, 8519, 8865, 8866, 8864, 8868, 1007, 8858, + 1007, 2862, 8870, 8871, 8872, 1007, 1007, 1007, 1007, 8873, + 8862, 8874, 8524, 8876, 8877, 8869, 1007, 8104, 1007, 8882, + 1007, 8158, 2866, 1007, 2865, 1007, 2867, 8880, 2005, 8875, + + 2868, 1007, 8883, 8113, 1807, 8857, 5263, 4584, 1007, 2868, + 1007, 4584, 1007, 8881, 6814, 4584, 1806, 1007, 8867, 4584, + 1808, 1808, 1808, 1808, 1808, 1808, 8174, 8856, 8903, 1806, + 8918, 2866, 1812, 8863, 8919, 2867, 8884, 2005, 6814, 1007, + 1007, 8890, 2866, 4584, 1007, 1007, 2867, 1007, 2005, 1007, + 2866, 1806, 8896, 2868, 2867, 1007, 2005, 8898, 2866, 8891, + 1007, 1007, 2867, 1818, 2005, 1819, 8878, 1007, 1007, 8901, + 8886, 5263, 1007, 8879, 2868, 5263, 1007, 1821, 8894, 8885, + 1822, 1823, 1007, 4593, 8841, 1807, 8888, 4593, 8893, 1007, + 8897, 8889, 8908, 8899, 5263, 4593, 8175, 8175, 8175, 8175, + + 8904, 1808, 1808, 1808, 1808, 1808, 1808, 8895, 8887, 8922, + 1806, 8905, 1007, 1812, 8175, 8175, 8175, 8176, 8900, 4593, + 8906, 8558, 2975, 8907, 8909, 1007, 8910, 1007, 7784, 8912, + 8911, 8199, 1007, 7786, 8916, 2868, 7786, 1007, 7786, 1007, + 1007, 8913, 1806, 1007, 1818, 8902, 1819, 1007, 1007, 1007, + 8203, 8204, 8204, 8203, 7790, 8915, 1806, 7790, 1821, 2865, + 7790, 1822, 1823, 8914, 8565, 8842, 1806, 8204, 8204, 8204, + 8204, 8214, 8917, 1007, 8215, 8920, 8921, 1007, 8923, 8924, + 3203, 1007, 8925, 8178, 8926, 8927, 8928, 8935, 1806, 8940, + 1007, 1007, 1007, 1007, 1007, 1007, 1806, 8942, 8943, 1806, + + 1007, 8178, 5257, 5257, 5257, 5257, 5257, 5258, 5257, 5257, + 5257, 5259, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5260, 5260, 5260, 5260, 5260, 5260, 5257, + 5257, 5257, 5261, 5257, 5257, 5262, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5257, + 5257, 5257, 5257, 5257, 5257, 5263, 5264, 5263, 5265, 8892, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5266, 5263, 5263, 5267, 5268, 5263, 5263, 5263, 5263, 5263, + 5263, 5257, 5257, 5257, 5257, 7372, 8929, 8930, 7373, 8203, + + 8204, 8204, 8205, 8931, 8932, 2866, 8936, 1807, 1007, 2867, + 1007, 2005, 8937, 1007, 8941, 8939, 8945, 1007, 2868, 2975, + 8934, 8933, 8946, 1007, 1007, 1007, 1007, 1806, 1007, 1007, + 8938, 1007, 1806, 1007, 1007, 8944, 8947, 1007, 8949, 8948, + 8593, 8951, 1007, 8952, 2866, 8955, 2868, 1007, 2867, 2863, + 2005, 8957, 8953, 1007, 1007, 8950, 1007, 8958, 8966, 1007, + 8202, 1007, 1007, 1007, 8956, 5496, 8954, 1007, 1007, 4077, + 8960, 8964, 8959, 8269, 1007, 1007, 2866, 1007, 1007, 8968, + 2867, 8965, 2005, 8969, 2868, 8971, 1007, 1007, 8961, 8961, + 8961, 8962, 1007, 8967, 1007, 8970, 1007, 1007, 1806, 8973, + + 1007, 8974, 1007, 1007, 8972, 1007, 8975, 8977, 8976, 1007, + 1007, 2868, 8980, 8978, 8981, 1007, 1007, 8983, 8982, 1007, + 8985, 8979, 8289, 8286, 2868, 2868, 8988, 8989, 8986, 1007, + 1007, 1007, 1007, 1007, 7845, 8984, 7845, 7846, 1007, 7846, + 7846, 7846, 7846, 7846, 7846, 8992, 8994, 1806, 1806, 7846, + 1007, 8287, 8287, 8287, 8287, 8287, 8287, 8987, 8990, 8995, + 1806, 1007, 8991, 8996, 1007, 7853, 7853, 7853, 8294, 8993, + 1007, 1007, 8997, 8998, 9001, 8963, 9002, 8999, 1007, 2866, + 1007, 1007, 3173, 2867, 7462, 2005, 9000, 1007, 8616, 1007, + 9005, 1007, 9003, 1806, 1007, 9004, 1007, 1007, 9006, 2868, + + 1007, 9007, 1007, 9008, 1007, 9009, 9010, 1007, 9011, 9012, + 9013, 9014, 9015, 9016, 9017, 9018, 9019, 9020, 9021, 9022, + 9023, 9024, 9025, 9026, 9032, 1007, 2868, 1007, 8336, 1007, + 1007, 9027, 9053, 2868, 1007, 1007, 9029, 2868, 9031, 1007, + 2862, 1007, 2868, 1007, 9037, 1007, 8653, 8653, 8653, 9028, + 1007, 9033, 8622, 1806, 9030, 9035, 1007, 9034, 9038, 9036, + 9039, 9040, 1007, 1007, 1007, 1007, 1007, 9041, 1007, 1007, + 1007, 9045, 2865, 1007, 9043, 9044, 1007, 9047, 9046, 1007, + 9048, 9049, 1007, 1007, 2868, 1007, 1007, 9042, 9050, 9052, + 1007, 9051, 1007, 1007, 3173, 2926, 1007, 1007, 9057, 2862, + + 9056, 1007, 8655, 1007, 9059, 9058, 8368, 8369, 1007, 1007, + 1007, 9054, 7887, 9055, 1007, 9060, 1007, 9061, 9062, 9063, + 1007, 1007, 1007, 1007, 9064, 9070, 8686, 2048, 2049, 1007, + 9071, 1806, 1806, 1007, 8380, 8380, 8380, 8380, 2048, 2049, + 1007, 8481, 1062, 8381, 9066, 8383, 8381, 9079, 9069, 2062, + 2063, 2057, 8380, 8380, 8380, 8380, 8381, 8382, 8383, 8381, + 1062, 9068, 2062, 2063, 2057, 2062, 2063, 4584, 9076, 9077, + 724, 2532, 9078, 9080, 9081, 9082, 8810, 9083, 9084, 2532, + 9085, 2112, 2532, 9086, 9087, 9088, 9089, 2121, 2121, 5585, + 2053, 2121, 2121, 2121, 2121, 9095, 9096, 1007, 7588, 2058, + + 9097, 8810, 9065, 9098, 1138, 1331, 8427, 5585, 2053, 1331, + 8428, 7588, 2058, 9067, 9102, 9103, 9104, 9105, 9106, 9108, + 9109, 9110, 9111, 9112, 9072, 9107, 9113, 9114, 9075, 8811, + 9115, 9116, 9117, 9074, 9073, 9118, 9119, 9120, 9121, 9122, + 9125, 9126, 674, 4593, 9128, 9090, 9130, 9091, 674, 9134, + 9100, 9092, 9094, 9099, 8811, 9124, 674, 674, 674, 9133, + 9137, 9138, 2112, 9093, 1325, 9129, 9139, 9140, 9141, 9142, + 9132, 9143, 2485, 9144, 9145, 9146, 9136, 674, 9147, 9148, + 1326, 1326, 1326, 1326, 1326, 1326, 9149, 674, 9150, 1283, + 9151, 9135, 1331, 9152, 9127, 1490, 9153, 1491, 9154, 674, + + 9158, 9159, 674, 8517, 674, 674, 8624, 674, 674, 8520, + 2503, 9131, 674, 674, 674, 9189, 9163, 674, 674, 9162, + 9188, 9160, 2309, 1337, 674, 1338, 674, 1339, 1283, 9207, + 9190, 2309, 9191, 9208, 1283, 9222, 9223, 1341, 674, 9225, + 1342, 9101, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8429, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8426, + + 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8426, 8426, 8428, 8426, 1325, 9155, 9161, 9155, 6797, + 1265, 1266, 6797, 6797, 6797, 6797, 6797, 6797, 674, 8555, + 6797, 1326, 1326, 1326, 1326, 1326, 1326, 6797, 6797, 6797, + 1283, 6797, 6797, 1331, 6797, 6797, 674, 9164, 674, 6797, + 6797, 6797, 9227, 674, 8556, 6797, 674, 9192, 9231, 4584, + 6797, 6797, 2309, 674, 674, 8485, 4584, 8485, 4584, 9200, + 674, 4584, 9218, 9123, 1337, 674, 1338, 9166, 1339, 9156, + + 9157, 6799, 9226, 6797, 9169, 9170, 9167, 9171, 1341, 9165, + 9178, 1342, 1343, 9168, 9172, 6814, 9173, 9164, 6814, 6814, + 6814, 6814, 6814, 6814, 9174, 9176, 6814, 9177, 9175, 9185, + 6804, 6797, 9179, 6814, 6814, 6814, 9180, 6814, 6814, 9181, + 6814, 6814, 9194, 9195, 9196, 6814, 6814, 6814, 9182, 4584, + 674, 6814, 9183, 4584, 2308, 4593, 6814, 6814, 1490, 9184, + 1491, 9198, 4593, 4584, 4593, 9201, 4584, 4593, 4584, 9193, + 4584, 674, 674, 674, 8557, 9206, 9232, 2308, 9224, 6814, + 9186, 9221, 674, 1491, 8564, 2309, 9219, 9219, 9219, 9219, + 9219, 9219, 674, 674, 9230, 674, 9229, 9187, 9250, 1283, + + 674, 9197, 9203, 8585, 9233, 2363, 1392, 6814, 674, 1283, + 9228, 9199, 9234, 674, 9202, 9237, 674, 9238, 9259, 9204, + 7762, 7762, 7762, 7762, 9220, 4593, 8558, 9240, 1283, 4593, + 9235, 8565, 5793, 5793, 5793, 5793, 9205, 8565, 674, 4593, + 5794, 674, 4593, 674, 4593, 674, 4593, 8546, 8546, 8546, + 8546, 674, 2309, 9244, 9241, 7762, 7762, 7762, 7762, 9260, + 5795, 9209, 9239, 9209, 9210, 9254, 9210, 9210, 9210, 9210, + 9210, 9210, 8548, 674, 8548, 8548, 8548, 8548, 8548, 8548, + 674, 6854, 9236, 674, 8550, 8550, 8550, 8550, 674, 9265, + 9242, 9245, 9214, 5796, 2309, 1473, 9243, 674, 9251, 6855, + + 7763, 5793, 5793, 5793, 5793, 674, 674, 9262, 8544, 5794, + 9216, 5797, 5795, 9246, 9247, 674, 6854, 2363, 9256, 9253, + 674, 9267, 5793, 5793, 5793, 5793, 8545, 674, 9255, 5795, + 5794, 9248, 9249, 8615, 6855, 9211, 9211, 9211, 9211, 9252, + 9270, 2306, 8609, 674, 674, 6854, 9257, 2308, 674, 8624, + 5795, 1490, 8548, 1491, 8548, 8548, 8548, 8548, 8548, 8548, + 9212, 9261, 5796, 6855, 9213, 674, 674, 1283, 674, 8617, + 9266, 674, 8618, 8623, 9269, 1473, 674, 9273, 674, 9274, + 5797, 9215, 674, 5796, 674, 9268, 8616, 9217, 9271, 674, + 9272, 9263, 674, 9275, 1283, 9276, 6854, 1283, 674, 674, + + 674, 5797, 674, 2309, 674, 9278, 2308, 674, 8636, 9281, + 1490, 9212, 1491, 9279, 6855, 9213, 9282, 9277, 9280, 9283, + 9284, 9285, 8616, 9286, 9287, 674, 674, 674, 674, 674, + 674, 674, 9296, 1283, 8653, 8653, 8653, 8653, 8625, 9289, + 9290, 9291, 9288, 9293, 674, 9292, 8653, 8653, 8653, 8654, + 674, 1392, 674, 674, 9295, 9298, 1473, 2461, 674, 674, + 9304, 1392, 9300, 674, 674, 2363, 1490, 2305, 1491, 9305, + 9303, 9302, 674, 9297, 1283, 9301, 9299, 674, 2309, 674, + 674, 9311, 9306, 1392, 9307, 674, 674, 674, 9309, 674, + 8655, 674, 9308, 9310, 674, 9320, 674, 9314, 1325, 9316, + + 9315, 9313, 8655, 9318, 9312, 2309, 674, 674, 674, 9321, + 2309, 9319, 9317, 1325, 6797, 1325, 1325, 1325, 1325, 1325, + 1325, 9322, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, + 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1326, 1326, + 1326, 1326, 1326, 1326, 1325, 1325, 1325, 1283, 1325, 1325, + 1331, 1325, 1325, 1325, 1325, 1325, 1325, 9235, 1325, 1325, + 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, + 9326, 9324, 1325, 1325, 1325, 1325, 1325, 9328, 1325, 9325, + 9329, 1530, 1325, 1531, 1325, 2532, 9330, 1325, 9327, 9340, + 6814, 2532, 9331, 9339, 9333, 1533, 2532, 2531, 1534, 9323, + + 9161, 1652, 1325, 1653, 2532, 9334, 9336, 2531, 9338, 9236, + 9341, 9335, 9332, 1653, 9346, 9342, 1326, 1326, 1326, 1326, + 1326, 1326, 2579, 9343, 9344, 1283, 1558, 9337, 1331, 9347, + 2532, 9349, 9351, 9348, 9350, 9354, 9352, 9345, 2532, 2579, + 1636, 9355, 9353, 9357, 9356, 9359, 9262, 1325, 9362, 2531, + 9358, 9360, 1325, 1652, 1325, 1653, 1325, 1325, 1325, 1530, + 9361, 1531, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, + 1325, 1325, 9407, 1533, 1325, 1325, 1534, 1535, 1325, 9408, + 1325, 1325, 1325, 9410, 9411, 9412, 1325, 1325, 9413, 1325, + 1325, 9414, 9415, 1325, 1325, 1325, 1325, 5046, 1325, 1325, + + 1325, 1325, 1325, 1325, 1325, 9416, 1325, 1325, 9417, 9363, + 9418, 1325, 1325, 1325, 1325, 1325, 8811, 9420, 1325, 1636, + 1325, 1325, 9421, 9422, 9365, 9367, 9380, 9364, 1325, 9368, + 9263, 9423, 8818, 2531, 9366, 2532, 9370, 1652, 9269, 1653, + 9371, 9369, 9373, 9372, 9377, 1558, 9374, 9379, 1558, 9375, + 9376, 9381, 9378, 2666, 9382, 1636, 2579, 9384, 9387, 9385, + 9388, 1652, 2529, 1653, 9389, 9393, 2532, 9383, 9386, 9391, + 9390, 9395, 9392, 1558, 9394, 9396, 9398, 9399, 9400, 9402, + 9403, 9404, 9405, 6229, 2532, 9401, 2532, 9425, 9426, 9406, + 1636, 9397, 9427, 9427, 9427, 9427, 8824, 9430, 1325, 9434, + + 9432, 9435, 9436, 9437, 9438, 9439, 1325, 9441, 9442, 9443, + 9444, 9445, 9446, 9447, 9448, 9449, 9450, 9451, 9452, 9453, + 9454, 9455, 8858, 2868, 6797, 6797, 2868, 2868, 9458, 9459, + 9460, 8862, 9461, 9464, 8866, 9465, 8868, 9466, 2868, 9467, + 9468, 4205, 8874, 9469, 2868, 9470, 9462, 1806, 9471, 9473, + 2868, 2866, 2868, 8883, 4584, 2867, 1806, 2005, 4584, 1806, + 9431, 1806, 9472, 4584, 4584, 9485, 9474, 1806, 9483, 9481, + 2532, 9432, 9456, 9487, 9479, 9440, 9433, 1807, 1806, 5267, + 9457, 2868, 5267, 9482, 8863, 8899, 5267, 8867, 9488, 9489, + 9491, 9492, 9493, 1808, 1808, 1808, 1808, 1808, 1808, 9463, + + 6814, 6814, 1806, 9484, 8901, 1812, 9476, 8905, 2866, 9494, + 8900, 9495, 2867, 2868, 2005, 8175, 8175, 8175, 8176, 2866, + 9478, 2975, 9496, 9486, 7786, 2005, 9490, 8913, 9477, 1806, + 9475, 9497, 1806, 9498, 4593, 9499, 1818, 9500, 1819, 4593, + 4593, 7790, 9501, 8222, 8914, 9502, 8224, 9503, 9504, 2868, + 1821, 2862, 1806, 1822, 1823, 1807, 8558, 9506, 9507, 9508, + 8565, 2868, 9505, 9509, 9510, 9511, 9512, 8941, 2868, 1806, + 9513, 1808, 1808, 1808, 1808, 1808, 1808, 2868, 9514, 9515, + 1806, 9516, 9517, 1812, 9518, 9520, 9519, 9521, 9522, 8177, + 2865, 9523, 1806, 9524, 2866, 9525, 9529, 9530, 2867, 9236, + + 2005, 9531, 8178, 8961, 8961, 8961, 8961, 2868, 2975, 9533, + 9534, 9535, 9537, 9538, 1818, 2868, 1819, 9539, 9541, 9532, + 9542, 9543, 9544, 9545, 9269, 9546, 2865, 9547, 1821, 9550, + 9551, 1822, 1823, 5257, 5257, 5257, 5257, 5257, 5258, 5257, + 5257, 5257, 5259, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5260, 5260, 5260, 5260, 5260, 5260, + 5257, 5257, 5257, 5261, 5257, 5257, 5262, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5257, 5257, 5257, 5257, 5257, 5257, 5263, 5264, 5263, 5265, + + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5266, 5263, 5263, 9480, 5268, 5263, 5263, 5263, 5263, + 5263, 5263, 5257, 5257, 5257, 5257, 9526, 9526, 9526, 9527, + 8961, 8961, 8961, 8962, 8966, 9540, 8977, 8983, 8984, 8985, + 9548, 9549, 8992, 9552, 9553, 8996, 9554, 9556, 2866, 9005, + 9557, 2868, 2867, 9558, 2005, 9555, 9561, 9562, 1806, 1806, + 9563, 1806, 1806, 1806, 1806, 9559, 9564, 1806, 9565, 9566, + 1806, 9567, 9560, 9568, 1806, 9569, 9570, 9571, 9572, 9573, + 9574, 9575, 8653, 8653, 8653, 9028, 9576, 9577, 3136, 9578, + 9579, 8616, 9580, 2865, 2975, 9582, 2862, 2862, 9585, 2867, + + 9586, 2005, 2863, 2868, 9587, 9581, 9589, 9588, 9590, 9591, + 1806, 9583, 2868, 9528, 9592, 9593, 9584, 9594, 9595, 9263, + 9597, 2862, 9598, 9599, 9600, 9601, 9602, 9603, 9604, 9605, + 2868, 9061, 9606, 2868, 9607, 9608, 2048, 2049, 8655, 9596, + 2048, 2049, 8380, 8380, 8380, 8380, 1325, 9611, 9612, 9613, + 1062, 2062, 2063, 2062, 2063, 4584, 1806, 2062, 2063, 1325, + 1325, 9620, 1325, 9621, 9622, 9623, 9624, 9626, 9627, 9628, + 9629, 9630, 9631, 2121, 2121, 2121, 9625, 2121, 9636, 9637, + 5638, 9098, 8430, 1331, 1331, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 9669, 8430, 9609, 5585, 2053, 8430, + + 8430, 8430, 9668, 8430, 1338, 9667, 9616, 9646, 9647, 1338, + 9657, 9614, 8430, 9130, 9645, 9670, 9610, 9640, 9641, 9652, + 9654, 9617, 9643, 9653, 9644, 9650, 9648, 9649, 9632, 9651, + 9618, 4593, 9619, 9633, 9659, 9634, 9615, 8430, 9655, 9658, + 9656, 1338, 1338, 9660, 9635, 1325, 8430, 8430, 1338, 9674, + 9126, 9671, 9134, 9675, 9137, 9127, 2256, 9663, 9672, 9676, + 2485, 1326, 1326, 1326, 1326, 1326, 1326, 9661, 9664, 9677, + 1283, 9678, 9679, 1331, 9662, 1283, 9680, 1283, 9131, 1283, + 9681, 9682, 9683, 9684, 9686, 9665, 9689, 1338, 9694, 9161, + 1338, 1473, 1338, 1473, 1338, 1338, 9721, 1338, 2309, 1338, + + 9722, 9201, 1338, 9127, 1337, 9695, 1338, 9723, 1339, 9724, + 9739, 9642, 1338, 9750, 1283, 9751, 9737, 2309, 1341, 9752, + 1338, 1342, 1343, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8429, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 9643, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8426, 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8426, 8426, 8428, 8426, 1325, 9155, 1338, 9673, + 1265, 1266, 1338, 9224, 1338, 9754, 1338, 1338, 9761, 2309, + 9776, 1338, 1326, 1326, 1326, 1326, 1326, 1326, 2309, 9725, + 1338, 1283, 2309, 9210, 1331, 9210, 9210, 9210, 9210, 9210, + 9210, 1338, 9219, 9219, 9219, 9219, 9219, 9219, 1338, 1338, + 1338, 9753, 9749, 1338, 1338, 1338, 8485, 1338, 2363, 2363, + 9755, 9687, 1338, 9759, 9766, 1337, 8565, 9666, 9758, 1339, + 1338, 2308, 9688, 9768, 1338, 1490, 9767, 1491, 9259, 1341, + 9220, 1338, 1342, 1343, 9690, 9690, 9690, 9691, 9692, 9690, + + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9690, 9690, 9690, 9690, 9690, 9690, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9690, 9690, 9690, 9690, 6797, 6797, 6797, + 6797, 6797, 6797, 6797, 6797, 6797, 6797, 6797, 6797, 6797, + + 1338, 1338, 6797, 6797, 1338, 6797, 9760, 6797, 9777, 6797, + 1338, 9773, 2309, 6797, 1392, 1338, 9729, 1338, 9774, 9778, + 1338, 6797, 1338, 9265, 6797, 9781, 4584, 4584, 4584, 4584, + 9785, 2309, 9789, 9782, 9790, 6797, 6797, 1338, 6797, 4584, + 9697, 4584, 4584, 4584, 9701, 9792, 9793, 4584, 1338, 9699, + 9795, 9700, 9705, 9712, 9698, 9706, 9710, 9713, 9702, 9714, + 9704, 9703, 9715, 9696, 6814, 6814, 6814, 6814, 6814, 6814, + 6814, 6814, 9707, 6814, 9708, 6814, 9709, 9711, 6814, 6814, + 9716, 6814, 9717, 6814, 9718, 6814, 9719, 9727, 9720, 6814, + 9726, 9728, 9730, 9731, 9733, 9736, 9732, 6814, 9734, 9735, + + 6814, 1338, 4593, 4593, 4593, 4593, 9211, 9211, 9211, 9211, + 9798, 6814, 6814, 1338, 6814, 4593, 9784, 4593, 4593, 4593, + 9799, 1338, 9800, 4593, 9738, 9738, 9738, 9738, 7762, 7762, + 7762, 7762, 9740, 9740, 9740, 9740, 9762, 9797, 9209, 9801, + 9209, 9210, 9802, 9210, 9210, 9210, 9210, 9210, 9210, 9210, + 9769, 9210, 9210, 9210, 9210, 9210, 9210, 7762, 7762, 7762, + 7762, 7762, 7762, 7762, 7762, 9235, 9803, 8544, 5793, 5793, + 9746, 5793, 5793, 5793, 5793, 5793, 5794, 1338, 9779, 9804, + 5794, 9770, 9741, 9805, 9262, 8545, 9742, 1338, 2305, 6854, + 1283, 5793, 5793, 5793, 5793, 1338, 5795, 1338, 1338, 5794, + + 5795, 9763, 9763, 9763, 9764, 2503, 9744, 6855, 9741, 1283, + 9771, 9791, 9742, 9786, 9786, 9786, 9787, 9236, 6854, 5795, + 1338, 1338, 6854, 1338, 1338, 9775, 9745, 1338, 9809, 5796, + 9780, 1338, 9796, 5796, 9772, 9794, 6855, 9743, 2309, 9807, + 6855, 5726, 5726, 5726, 5726, 5726, 5726, 5797, 1338, 1338, + 2305, 5797, 5796, 9747, 9756, 9748, 9756, 9757, 1338, 9757, + 9757, 9757, 9757, 9757, 9757, 1338, 1338, 1338, 9263, 1338, + 5797, 9806, 9810, 1338, 1338, 1338, 1338, 1338, 9808, 9813, + 1338, 2485, 1338, 9811, 1338, 1338, 1338, 9814, 9765, 9816, + 9819, 1338, 9815, 9812, 1338, 2308, 9818, 2309, 1338, 9817, + + 9788, 1491, 1338, 9820, 1338, 9821, 1338, 9823, 1338, 9822, + 1338, 1490, 1338, 1491, 9826, 2309, 9827, 9830, 4768, 9824, + 1338, 9825, 6797, 724, 9835, 9836, 724, 724, 724, 724, + 9838, 724, 9831, 9833, 724, 724, 9837, 724, 2532, 724, + 724, 2532, 9840, 9843, 724, 724, 724, 2532, 9839, 9842, + 724, 724, 9846, 724, 2579, 9844, 9841, 9847, 2579, 724, + 9848, 9762, 724, 2532, 9845, 724, 9775, 724, 9828, 9763, + 9763, 9763, 9764, 9849, 9850, 1338, 724, 1338, 1558, 1338, + 2305, 724, 9852, 9776, 9767, 9834, 724, 9851, 724, 724, + 9784, 724, 724, 9853, 4769, 724, 9854, 9795, 6814, 2532, + + 9829, 1325, 9856, 724, 9855, 9786, 9786, 9786, 9787, 724, + 2703, 724, 724, 2529, 724, 724, 9857, 1326, 1326, 1326, + 1326, 1326, 1326, 724, 9858, 724, 1283, 9859, 724, 1331, + 9860, 9861, 724, 2532, 724, 724, 9806, 724, 2532, 9862, + 724, 724, 724, 9863, 9864, 724, 724, 2529, 724, 724, + 724, 724, 724, 724, 724, 9865, 9765, 724, 9868, 724, + 1530, 9866, 1531, 9832, 2687, 724, 9874, 9869, 724, 9867, + 724, 724, 9871, 2532, 1533, 724, 9870, 1534, 1535, 1325, + 2531, 724, 9873, 9876, 9872, 724, 1653, 9878, 724, 9826, + 724, 1652, 9788, 1653, 9882, 1326, 1326, 1326, 1326, 1326, + + 1326, 724, 9875, 724, 1283, 9877, 724, 1331, 9827, 4768, + 724, 2532, 9410, 9879, 9880, 9883, 9885, 9886, 9887, 9888, + 9889, 9881, 9890, 9891, 9892, 9893, 9427, 9427, 9427, 9427, + 9430, 9894, 724, 9433, 8827, 9896, 5046, 9897, 1530, 9898, + 1531, 1636, 9899, 9900, 724, 9895, 9902, 9906, 9901, 9907, + 9447, 724, 1533, 1007, 1007, 1534, 1535, 9451, 1007, 9908, + 9828, 9452, 9909, 9910, 2865, 9911, 2865, 9884, 1007, 9914, + 724, 2529, 2868, 9915, 9916, 1007, 9917, 1007, 9918, 1007, + 9919, 9920, 1806, 1007, 9921, 4992, 1806, 1007, 9923, 9922, + 9926, 1007, 9829, 1007, 1007, 9925, 9924, 1007, 9935, 2868, + + 5263, 1007, 1007, 1007, 5263, 2868, 5263, 1007, 1007, 9927, + 9937, 9936, 1007, 2868, 5267, 9932, 1007, 3908, 9690, 9690, + 9690, 9691, 9692, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9690, 9690, 9690, 9690, 9690, + 9690, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9690, 9690, 9690, + 9690, 1807, 9462, 1007, 9940, 6797, 1007, 4584, 6797, 4584, + 4584, 9489, 9938, 9941, 9942, 9943, 1007, 1808, 1808, 1808, + 1808, 1808, 1808, 9944, 5263, 9945, 1806, 1806, 5263, 1812, + 5263, 5263, 9946, 9939, 6384, 5263, 1806, 5263, 5267, 9503, + 9934, 9947, 2975, 2975, 9933, 5267, 1007, 1007, 1007, 9949, + 9948, 9951, 3203, 9954, 9950, 9463, 9953, 9929, 1007, 9955, + 1818, 9952, 1819, 1007, 1806, 1007, 9762, 2868, 1007, 9930, + 1007, 9956, 9962, 9959, 1821, 1007, 9904, 1822, 1823, 1807, + 9912, 9913, 9928, 4593, 6814, 4593, 4593, 9958, 1007, 9964, + + 9965, 9236, 1007, 1007, 9960, 1808, 1808, 1808, 1808, 1808, + 1808, 1007, 9767, 9967, 1806, 2862, 9966, 1812, 9968, 9961, + 1007, 9969, 1007, 2868, 9970, 9537, 1007, 9973, 2863, 1007, + 9974, 1007, 1007, 1007, 1007, 9977, 9976, 1007, 3203, 9980, + 9982, 1007, 9983, 1007, 9979, 9984, 9981, 1007, 1818, 1007, + 1819, 9986, 2868, 9987, 2868, 1007, 9988, 1007, 9989, 9990, + 9991, 9992, 1821, 9993, 9905, 1822, 1823, 5257, 5257, 5257, + 5257, 5257, 5258, 5257, 5257, 5257, 5259, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5260, 5260, + 5260, 5260, 5260, 5260, 5257, 5257, 5257, 5261, 5257, 5257, + + 5262, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5257, 5257, 5257, 5257, 5257, 5257, + 5263, 5264, 5263, 5265, 6381, 5263, 5263, 5263, 6382, 5263, + 6383, 5263, 5263, 5263, 5263, 5266, 5263, 5263, 9931, 5268, + 5263, 5263, 5263, 5263, 5263, 5263, 5257, 5257, 5257, 5257, + 9763, 9763, 9763, 9957, 9963, 9526, 9526, 9526, 9526, 9526, + 9526, 9526, 9527, 9971, 9540, 9975, 9786, 9786, 9786, 9978, + 9548, 9795, 9994, 9985, 9995, 9996, 9997, 1007, 1007, 9998, + 1007, 9999, 1007, 1007,10000, 1007, 9806, 1806, 2866, 1806, + + 1007,10002, 2867, 1007, 2005, 1806, 1007, 2863,10003,10001, + 1007, 1007, 3173, 1007, 1007,10005,10008, 1007,10006,10004, + 1007, 1007,10011, 2866, 1007, 9972,10007,10009, 1007, 2005, + 10010, 1007, 1007,10013, 1007,10012, 1007, 1007, 1007, 1007, + 2865, 9597,10014, 1007, 1007,10018, 1007, 9765, 2868,10020, + 1007, 1007, 9528, 1007, 1007,10015, 9528,10016, 9263, 2867, + 1007, 2005,10017, 9788, 1007,10021, 1806, 1007, 1007,10019, + 5571,10022, 724, 1007, 2048, 2049,10024,10025,10026, 2062, + 2063, 724, 4584, 2062, 2063, 724, 724,10031,10032,10033, + 10034,10035,10036,10038,10039,10040,10037,10041,10042,10043, + + 2121, 9828, 2121,10046,10047,10049, 1331,10054,10030, 1118, + 1118, 1118, 1118, 1118,10055,10056,10057,10058,10059,10061, + 1007,10062,10060, 8431, 1007, 8428, 8428,10064, 8428,10065, + 10063, 8428, 2863, 9829,10029, 8438,10023, 8428, 8428, 8428, + 1007,10027, 8428, 8428, 8428, 1007, 5552,10028,10069, 8428, + 674,10071,10076,10077,10080,10050,10081, 674, 4593,10082, + 10044,10079,10083,10084, 8428, 8428, 8428, 2309,10045,10048, + 9690, 9690, 9690, 9691, 9692, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + + 9690, 9690, 9690, 9693,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051, 9690, 9690, 9690, + 9690, 9690, 9690,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051, 9690, + 9690, 9690, 9690, 1325,10066,10068,10070,10072,10067,10073, + 9668,10074,10085,10078, 9673,10086,10087,10088,10089, 1326, + 1326, 1326, 1326, 1326, 1326, 9155, 8428, 9691, 1283, 8428, + 674, 1331, 8428, 674, 8428, 8428, 674, 8428, 674, 1283, + + 9691, 9692,10095,10094,10121, 674, 2363, 674, 9730, 674, + 10135,10120,10136,10137,10123,10149,10119,10150, 674,10122, + 10155, 674, 1337, 9127, 1338, 674, 1339, 1473, 674,10159, + 10153,10157,10152,10160,10162,10052, 1341,10163, 2306, 1342, + 1343, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8429, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8426, 8426, + + 8426, 8426, 8426, 8426, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8426, 8426,10053, 8426, 1325, 9155, 6797, 1265, 1266,10092, + 10092,10092,10092, 6797, 6797, 6797, 6797, 6797, 6797, 6797, + 1326, 1326, 1326, 1326, 1326, 1326, 674, 674,10169, 1283, + 10170, 9780, 1331,10172, 674,10175, 9738, 9738, 9738, 9738, + 9757,10156, 9757, 9757, 9757, 9757, 9757, 9757,10151,10178, + 9209, 9775, 9209, 9210, 8485, 9210, 9210, 9210, 9210, 9210, + 9210, 674,10097, 1337,10098, 1338,10075, 1339,10179,10099, + + 10090,10091,10173, 674,10168,10102, 1283, 1341,10096,10100, + 1342, 1343, 6814,10101,10180,10185,10186,10193,10105, 6814, + 6814, 6814, 6814, 6814, 6814, 6814,10093, 9690, 9690, 9690, + 9691, 9692, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9690, 9690, 9690, 9690, 9690, 9690, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9690, 9690, 9690, 9690, + 6797, 6797, 6797, 6797, 6797, 6797, 6797,10111, 6797, 6797, + 6797,10165, 6797, 9776, 9784, 674, 674, 4584, 4584, 674, + 4584, 6797, 6797, 4584, 4584, 4584,10190,10174,10194,10192, + 4584,10129, 4584, 9740, 9740, 9740, 9740,10191, 1283, 1283, + 10165,10195,10196, 7762, 7762,10138, 7762, 2309,10197,10198, + 10106,10199,10103,10201, 674, 674,10113, 674,10114, 674, + 1473,10115, 7762, 7762, 7762, 7762,10104,10202, 674,10107, + 10108,10109,10128,10216,10132,10204, 6814, 6814, 6814, 6814, + + 6814, 6814,10110,10112, 6814, 6814, 6814,10116,10118,10117, + 10124,10125,10126,10127, 4593,10134, 4593, 6814, 6814, 4593, + 4593, 4593,10130,10133, 6854,10217, 4593,10131, 4593, 9741, + 10218,10166, 674, 9742, 7762, 7762, 7762, 7762, 5793, 5793, + 5793, 5793, 6855, 6854, 5793, 5793, 5793, 5793, 9763, 9763, + 9763, 9763, 5794,10208,10143,10143,10144,10143,10164, 724, + 724, 6855, 5794,10139, 674, 1473, 5795,11275,11275,11275, + 11275, 9757, 5795, 9757, 9757, 9757, 9757, 9757, 9757,10203, + 674,10219,10145,10167, 9763, 9763, 9763, 9764, 2308, 9770, + 2309, 674, 1490, 674, 1491, 6854, 674, 724,10140, 6854, + + 9786, 9786, 9786, 9786,10205, 5796,10207, 1473,10223,10141, + 10146,10154, 1283, 6855,10209,10147, 674, 6855, 9771, 9786, + 9786, 9786, 9787, 5797,10187,10187,10187,10188, 1473,10211, + 674,10206, 674,10148, 674, 9765,10213, 9826, 674,10181, + 10210, 9827, 9772, 6797,10212,10214, 724, 1283,10176, 2485, + 10182,10226,10182,10183,11275,10184,10184,10184,10184,10184, + 10184,10225, 1283, 2579, 724,10227, 1283, 724,10224,10228, + 724, 9765, 724, 1636, 724,10231,10230,10166, 724,10229, + 724, 724, 724,10234, 724,10151,10232, 9788,10235, 674, + 10237,10222, 724, 9828, 724,10233, 724, 724,10239, 724, + + 10236, 674,10238,10240, 724, 724, 9788, 724, 724, 724, + 10241,10189,10243, 724, 2532, 724, 724,10181, 724, 6814, + 10187,10187,10187,10188,10245, 9829, 1325, 724,10182,10167, + 10182,10183, 1636,10184,10184,10184,10184,10184,10184,10244, + 10242, 724, 1326, 1326, 1326, 1326, 1326, 1326, 724, 724, + 2532, 1283, 2531,10246, 1331, 724, 1652, 1636, 1653, 724, + 10248, 724, 724,10247, 724,10249, 724, 724, 1636, 724, + 10252,10253, 724,10254,10250,10251, 724, 724,10255,10258, + 10256, 1636,10260,10262,10261, 1530,10263, 1531, 724, 724, + 724, 2687,10264,10265, 724,10266,10267,10257,10268, 1533, + + 5046,10220, 1534, 1535, 1325, 9894, 724,10189,10269,10270, + 10092,10092,10092,10092, 1007, 1007, 724,10274,10276,10273, + 1326, 1326, 1326, 1326, 1326, 1326, 1007, 1007, 1007, 1283, + 10275, 9884, 1331,10277, 1007,10280,10281,10282,10279,10283, + 10284,10285, 2975,10287, 1007, 9923,10289,10286, 1007, 1007, + 10298,10291,10290, 1007, 1007, 5263, 1007, 9937, 1007, 5263, + 1007, 5263, 1007, 1530, 2865, 1531,10299,10300, 9941, 9942, + 10151, 9944,10302, 1007, 1007,10221,10301, 1533,10303,10304, + 1534, 1535, 1007,10306, 1007,10307,10305,10308,10309, 1007, + 1007, 3908, 1007, 9954, 9955, 1007, 9964,10093, 9690, 9690, + + 9690, 9691, 9692, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9690, 9690, 9690, 9690, 9690, + 9690, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9690, 9690, 9690, + 9690, 1807,10310,10288, 6797, 4584,10311, 4584, 1007, 9962, + + 4584,10313, 1007, 9963,10314,10316, 1007, 1808, 1808, 1808, + 1808, 1808, 1808,10318,10321, 5258, 1806,10315, 9975, 1812, + 9763, 9763, 9763, 9957, 1806,10319,10312, 1007, 1806, 1007, + 10258,10322,10317,10323, 5258, 1007, 1007,10328,10329, 1007, + 5261, 9983, 1007, 1806,11275,11275,11275,11275, 1806, 1007, + 1818,10330, 1819,10331,10332,10292,10333,10334,10294, 5261, + 10335, 2868,10336,10337, 1821, 2868,10271, 1822, 1823, 1807, + 10278, 4593,10293, 4593,10338,10297, 4593, 5263,10167,10339, + 10340, 5263, 9972, 5263,10341, 1808, 1808, 1808, 1808, 1808, + 1808,10342, 1007, 2868, 1806, 2866, 5263, 1812, 1007, 2867, + + 5263, 2005, 5263, 1007, 2865, 1007, 6384, 9765,10344,10345, + 9931,10343, 1007, 2865, 1007,10346, 1007, 2865, 1007,10347, + 10348,10349, 1007, 1007,10352,10324, 1007, 1007, 1818, 2865, + 1819,11275, 1007,10350,10354,10353,10351, 1007, 1007, 1007, + 10356,10272, 1821, 1007,10359, 1822, 1823, 5257, 5257, 5257, + 5257, 5257,10295, 5257, 5257, 5257, 5259, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5260, 5260, + 5260, 5260, 5260, 5260, 5257, 5257, 5257,10296, 5257, 5257, + 5262, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + + 5263, 5263, 5263, 5263, 5257, 5257, 5257, 5257, 5257, 5257, + 5263, 5264, 5263, 5265, 6381, 5263, 5263, 5263, 6382, 5263, + 6383, 5263, 5263, 5263, 5263, 5266, 5263, 5263, 5267, 5268, + 5263, 5263, 5263, 5263, 5263, 5263, 5257, 5257, 5257, 5257, + 9786, 9786, 9786, 9978,10325,10187,10187,10187,10327,10018, + 10020,10021, 2062, 2063,10355,10182,10364,10182,10183,10365, + 10326,10326,10326,10326,10326,10326, 1007, 3173, 1806, 2865, + 10366, 2048, 2049, 4584, 1806, 1806, 1806, 2062, 2063, 1007, + 10367,10368,10369,10370,10371,10357,10372,10373,10374,10375, + 10376,10377, 2121, 2121, 1118, 1118, 1118, 1118, 1118,10381, + + 10382,10385, 9828, 1118, 1118, 1118, 1118, 1118,10092,10092, + 10092,10092,10386,10387,10389,10388, 1007, 8430,10393,10391, + 1007, 8430, 8430,10394,10361,10390, 8430, 9788, 8430, 8430, + 10392,10398,10189,10400, 9829,10358, 8430,10395,10405, 1331, + 10399,10360, 8430,10401,10362,10406, 8430, 8430, 8430, 4593, + 8430,10408,10402, 674,10379,10407, 8430,10403, 674,10409, + 10410,10411,10412,10380,10413,10414,10378,10415, 1265, 1266, + 10418, 674, 674,10112,10434, 674, 674, 674, 674,10445, + 674,10440,10131, 674,10453,10454,10455, 674,10456,10441, + 10469,10159, 674,10162,10474,10093, 9690, 9690, 9690, 9691, + + 9692, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9693, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051, 9690, 9690, 9690, 9690, 9690, 9690,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051, 9690, 9690, 9690, 9690, 1325, + 2308, 9155,10476,10470, 1490, 674, 1491, 674, 674,10166, + + 674,10471, 674, 674,10444, 1326, 1326, 1326, 1326, 1326, + 1326,10172, 2308,10487, 1283, 2308, 1490, 1331, 1491, 1490, + 674, 1491,10178, 674, 1283, 674, 674,10472, 674, 674, + 10473, 674, 674,10490, 674,10491,10477, 674,10477,10478, + 8485,10478,10478,10478,10478,10478,10478,10492, 1337, 674, + 1338,10167, 1339,10416, 674,10479, 674,10480,10493,10495, + 10383, 674, 1341,10499,10500, 1342, 1343, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8429, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + + 8426, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8426, 8426, 8426, 8426, 8426, 8426, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430,10384, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8426, 8426, 8428, 8426, + 10396,10092,10092,10092,10092, 6797, 6797, 6797, 6797, 6797, + 6797, 6797,10481,10426, 6797, 6797, 6797,10484,10501,10502, + 10503, 674,10496, 6797, 6797, 674, 674,10504, 6797,10201, + 674, 674,10497,10505, 4584,10216, 674, 4584, 6797, 4584, + + 6797, 674,10442,10164, 4584, 6797, 674, 6797,10516, 674, + 10485, 2309, 6797, 4584, 674,10468,10423, 4584,10424, 4584, + 10517, 7018,10475, 674,10482, 8430,10429, 674, 674,10420, + 10422,10428, 674,10425,10506,10432,10397, 1325,10430,10421, + 10437,10419, 6814, 6814, 6814, 6814, 6814, 6814,10093,10427, + 6814, 6814,10431, 1326, 1326, 1326, 1326, 1326, 1326, 6814, + 6814,10433, 1283,10435, 6814, 1331,10436,10438,10439,10446, + 10447,10448, 674,10449, 6814,10131, 6814, 674, 4584,10450, + 10451, 6814,10522, 6814,10468, 674,10443, 9772, 6814, 4593, + 674,10520, 674, 4593,10486, 4593, 1337, 674, 1338,10441, + + 1339, 7762, 7762, 7762, 7762,10442, 674, 2363,10483,10523, + 1341, 674,10404, 1342, 1343,10524, 7762, 7762, 7762, 7762, + 10507,10525,10459,10459,10460,10459,10452, 5793, 5793, 5793, + 10464, 5793, 5793, 9746, 5793, 5794,10526,10475,10527, 5794, + 10528,10143,10143,10144,10143,10529,10511, 674,10143,10465, + 10144,10143, 674, 674, 4593, 5795,10530,10531, 674,10145, + 2305,10508, 8544, 5793, 5793, 9746, 5793, 674, 674,10145, + 10483,10509, 674, 674,10514,10533,10145, 6854,10461, 674, + 8545,10457,10512,10462, 674,10510, 2532, 5792, 5796,10443, + 10534,10145,10147, 674, 674, 6855,10507,10461, 674, 674, + + 10535,10463,10462, 8551,10461,10536, 5797, 674,10513,10462, + 10148,10537, 674,10143,10143,10144,10143,10538, 674, 6853, + 10463, 5794, 2529, 674,10462,10518,10539,10463, 5793, 5793, + 9746, 5793, 5793, 5793, 9746, 5793, 5794,10540,10541,10515, + 5794,10145,10463,10488,10488,10488,10488,10183,10542,10183, + 10183,10183,10183,10183,10183, 6797,10145,10258,10260,10545, + 10145,10183,10181,10183,10183,10183,10183,10183,10183,10146, + 10543,10546, 674,10182,10147,10182,10183, 674,10183,10183, + 10183,10183,10183,10183, 5792, 1325,10515, 1283, 5792,10147, + 2531,10547,10148,10147, 1652,10467, 1653,10548,10549,10183, + + 10550,10184,10184,10184,10184,10184,10184,10148,10466,10519, + 1283,10148,10187,10187,10187,10187,10187,10187,10187,10188, + 2308, 2531,10544,10498, 1490, 1652, 1491, 1653, 674,10551, + 10489, 6814, 2531, 674,10552,10521, 1652, 2531, 1653,10553, + 10532, 1652,10556, 1653, 1283, 1007,10557, 1007,10558, 1007, + 10559,10560,10561,10562, 1007, 1007,10563,10564,10565,10441, + 10566, 1007,10567,10288, 1007, 2866,10569, 4584,10571, 2867, + 10295, 2005,10573, 5259, 5259,10575, 2866,10576,10577,10568, + 2867,10578, 2005, 1007, 1007,10579, 1007,10581, 1806,10580, + 10586, 1007, 2866, 1007, 1007,10296, 2867,10582, 2005,10189, + + 1007,10583,10584,10189, 1325,10585,10312,10314,10587, 1007, + 1007, 1007, 1007, 1007, 1007,10570,10588,10590,10589,10591, + 1326, 1326, 1326, 1326, 1326, 1326, 1007,10321, 1007, 1283, + 10595, 1806, 1331,10592,10483,10594,10596,10597,10598,10600, + 10601,10602, 1007, 4593,10572, 1007,10443, 1007,10574,10603, + 10604,10605,10606, 1007, 1007, 1007,10607,10608,10167,10187, + 10187,10187,10327, 1530,10609, 1531, 1007, 1007,10618, 1007, + 1007, 2868, 2866,10507, 1007,10599, 2867, 1533, 2005, 1007, + 1534, 1535, 1325,10613,10615,10593, 2863, 1806, 1007,10610, + 1007, 1007,10515, 1007, 1007,10325, 2048, 2049, 1326, 1326, + + 1326, 1326, 1326, 1326, 1007, 1807,10182, 1283,10182,10183, + 1331,10183,10183,10183,10183,10183,10183,10611,10612,10183, + 1806,10326,10326,10326,10326,10326,10326,10614,10616,10617, + 1806, 1007, 1007, 2062, 2063, 1007, 1007, 2062, 2063, 4584, + 10364, 1530,10620, 1531,10621,10622,10189,10623,10624, 1007, + 10625,10626,10627,10628,10629, 1533,10630,10631, 1534, 1535, + 1807, 2121,10633,10634,10635,10636, 674,10638,10639,10640, + 10641, 674,10643,10644,10646,10647, 1808, 1808, 1808, 1808, + 1808, 1808,10645, 8428,10397, 1806,10648,10434, 1812,10649, + 10650,10653, 8428,10651,10652, 8428, 8428, 8428,10654, 8428, + + 8428,10655,10657, 8428, 8428, 674, 8428, 8428, 674,10656, + 674, 8428,10658, 674,10659,10619,10660, 8428,10661, 1818, + 10632, 1819,10662, 9155,10418,10664,10664,10664,10664, 6797, + 6797, 6797,10554, 1821, 6797,10427, 1822, 1823, 1807,10672, + 6797, 6797,10679,10689,10691,10698,10642,10454,10699,10712, + 10468,10721,10482,10725, 1808, 1808, 1808, 1808, 1808, 1808, + 10475, 2308,10728, 1806,10733, 1490, 1812, 1491,10692, 674, + 10692,10734, 8485,10735, 674, 1283,10687,10713, 2308,10495, + 10740,10741, 1490,10663, 1491, 1283, 674, 674, 674,10742, + 10667, 674, 674, 674,10673,10723,10666, 1818,10668, 1819, + + 10693,10669,10693,10743, 674, 6814, 6814, 6814,10747, 674, + 6814, 1821,10665,10670, 1822, 1823, 6814, 6814,10555, 5257, + 5257, 5257, 5257, 5257, 5258, 5257, 5257, 5257, 5259, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5260, 5260, 5260, 5260, 5260, 5260, 5257, 5257, 5257, 5261, + 5257, 5257, 5262, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5257, 5257, 5257, 5257, + 5257, 5257, 5263, 5264, 5263, 5265, 9933, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5266, 5263, 5263, + + 5267, 5268, 5263, 5263, 5263, 5263, 5263, 5263, 5257, 5257, + 5257, 5257, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8429, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8426, + 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + + 8430, 8426, 8426,10637, 8426, 6797, 6797, 6797, 6797, 6797, + 10442, 6797,10736, 6797, 6797,10680,10485, 6797, 2308, 4584, + 4584, 4584, 1490,10754, 1491,10217, 674, 674, 674,10726, + 4584, 674, 674, 674,10719, 1283, 674, 7762, 7762, 7762, + 10700, 674,10755, 7762, 7762,10138, 7762,10459,10459,10460, + 10459,10459,10705,10460,10459, 674, 674,10258,10748,10675, + 674, 674,10459,10459,10460,10459,10671,10683,10771,10772, + 10697,10677, 674,11275,10686,10696,10774, 674,10685,10775, + 10776, 6814,10674, 6814,10676, 6814,10681, 6814,10684, 6814, + 6814,10682,10694, 6814,10443,10695, 4593, 4593, 6854, 6853, + + 10486,10738,10777,10702,10462,11275, 4593,10702,10703,10544, + 10778, 2308,10703, 9212,10780, 1490, 6855, 1491,10461, 674, + 674,10781,10463,10462, 674, 674,10704,10737, 2868,10559, + 10704, 7762, 7762,10138, 7762, 7762, 7762,10138, 7762,10784, + 11275,10463, 5793, 5793, 5793,10464,10143,10143,10144,10143, + 10785, 674, 5793, 5793, 9746, 5793, 674, 6797,10744,10478, + 5794,10478,10478,10478,10478,10478,10478,10786,10787,10745, + 5795, 674,11275, 674,10145, 2309, 674,10788, 674,10478, + 10145,10478,10478,10478,10478,10478,10478, 6853, 674,10789, + 10572, 6853,10462, 674,10574,10749,10462,10791,10707, 674, + + 10692,10750,10461, 6854, 674,10575,10792,10462, 5792,10756, + 10463,10706, 674,10711,10463,10751, 724, 674, 9212,10722, + 724, 6855, 724,10793,10794,10463, 7765, 7765,10708, 7765, + 1806,10148,10693, 6814, 5794,10488,10488,10488,10488,10796, + 10709,10800,10709,10710,10714,10710,10710,10710,10710,10710, + 10710, 674,10795, 2309,10145,10715, 674,10715,10716,10729, + 10717,10717,10717,10717,10717,10717, 2868,10586,10801,10718, + 10730,10802,10730,10731,10803,10731,10731,10731,10731,10731, + 10731,11275, 5792,10258,10752,10805,11275,10147, 674,10758, + 2309, 724, 1806, 674,11275, 724, 724, 724,10806,10807, + + 724,10736, 724,10760, 724,10148,10597,10736, 724,10808, + 724,10759,10732,11275, 674,11275,10809,10810,11275, 674, + 10567,10811,10489, 1325,10738, 724,11275,10812,10813, 724, + 4584, 724,10814,10815,10761,10593,11275,10817,10818, 1326, + 1326, 1326, 1326, 1326, 1326, 1806, 724,11275, 1283,11275, + 724, 1331, 724,10819, 2866,10820,11275, 2868, 2867, 724, + 2005,10762,10822, 724,10823, 724, 724, 2866,11275,10783, + 724, 2867, 724, 2005, 2866,10824,11275,10765, 2867,10825, + 2005,11275, 1530,10826, 1531, 2531, 724,10827,11275, 1652, + 724, 1653, 724,11275,10828,10829, 1533,10790,10830, 1534, + + 10757, 1325,10831, 724,10443,10816, 4593,10764,11275, 724, + 10821, 2868,10832, 2532,11275,10833, 2868, 1326, 1326, 1326, + 1326, 1326, 1326,10834, 724,11275, 1283,11275, 724, 1331, + 724,10836,10837,10838,10839,10642,10672, 724,10855,10763, + 11275, 724, 8430, 724, 2121,10842,11275,10841,10843, 8430, + 724, 8430,10857,10692, 724,10845, 724, 8430,10844,11275, + 1530, 8430, 1531, 2531,10851,10766,10846, 1652,10847, 1653, + 8430,10859,11275, 8430, 1533, 8430, 8430, 1534, 1535,10853, + 10852, 8430,10854,10860,10861,10693,10714,10862,10848, 8430, + 10664,10664,10664,10664,10865, 6797,10875,10715,11275,10715, + + 10716,10679,10717,10717,10717,10717,10717,10717, 724,11275, + 11275,10718, 724, 6797, 724,10858,10835, 9155,10767, 724, + 724,10879,10689, 724, 724, 724, 724,10691,10886,11275, + 11275,10768,10888,10890,10721,10725,10914,11275,11275, 724, + 6797,11275,11275,10769,10870, 724,11275, 724, 724, 2532, + 10872, 724, 724, 724, 724, 8430, 724, 2532,10692,10849, + 724,11275, 724, 6797,10850,10869, 8485, 6797, 2866,11275, + 11275,10868, 2867, 6797, 2005, 674,10915,10665,11275, 1807, + 674, 6797, 6797,10729,10863, 6797, 6797, 6797,10867, 6814, + 10693,10883,10797, 4584,10917, 1808, 1808, 1808, 1808, 1808, + + 1808,10894,10918,10715, 1806,10715,10716, 1812,10798,10798, + 10798,10798,10798,10798,10919, 4584, 6814,10799, 4584,10866, + 10871,10740,10876, 674,10924, 674,10873, 2309, 674,10907, + 674,10702,10702,10893,10702,10882,10732,10885, 1818, 6814, + 1819, 674,10878, 6814,10925,10743, 674,10880,10913,10877, + 10738,10921, 1821,10747,10133, 1822, 1823, 6814,10879,10779, + 1807, 6814,10881, 6814,10922,10754,10932,10884,10771, 4593, + 11275,10454,10455,11275, 9741, 1283, 1808, 1808, 1808, 1808, + 1808, 1808,10892,10891,10714, 1806,10258,10702, 1812, 1534, + 10936, 4593, 2532, 1636, 4593,10715,10937,10715,10716,10944, + + 10716,10716,10716,10716,10716,10716,10774, 1534,10716,10718, + 10716,10716,10716,10716,10716,10716,10945, 674, 674, 1818, + 2309, 1819,10929, 674,10923,10716,11275,10716,10716,10716, + 10716,10716,10716, 1821,10941, 1534, 1822, 1823, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8429, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8426, 8426, 8426, 8426, 8426, + + 8426, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 10840, 8430, 8430, 8430, 8430, 8430, 8430, 8426, 8426, 8428, + 8426, 7762, 7762, 7762,10700,10702,10702,10893,10702,11275, + 10454,10455,11275,11275,10454,10455,11275,10459,10459,10460, + 10459, 1007,10912, 7762, 7762,10138, 7762,10948, 1325, 5793, + 5793, 9746, 5793,10950, 6797,10951,10952, 5794,10905,10905, + 10905,10905,10716, 1473,10717,10717,10717,10717,10717,10717, + 674, 674, 2309, 1283,10939, 674, 674,10145,10926, 1534, + 10953,10702, 8544,10943,10909,11275, 674, 1534, 2309,11275, + + 674, 674,10931,10702, 2305, 674,10896, 9741,10703, 6853, + 8545,10938, 674,10954,10900, 5792,10912, 674,10955,10895, + 10147, 2532, 1007, 4584,10793, 1534,10704, 8546, 8546,10897, + 8546,10904,10463,10910,10910,10910,10910,10794,10148,10466, + 10933,10898,10958,10898,10899,10908,10899,10899,10899,10899, + 10899,10899, 674,10927, 1007,10906,10715, 674,10715,10716, + 1007,10716,10716,10716,10716,10716,10716,10940, 2529,10731, + 10908,10731,10731,10731,10731,10731,10731, 2532,10956, 1007, + 10957, 1534, 1534, 6853,10802,10805,10258,10731,10462,10731, + 10731,10731,10731,10731,10731, 2868,10960,10809, 1007, 4593, + + 2532,10962,10963,10928, 1534,10949,10463, 7765, 7765, 7765, + 7765, 674,10909, 2309,10912, 1007, 674,10959,10964,10965, + 10911, 8547, 1806, 8547, 8548, 2865, 8548, 8548, 8548, 8548, + 8548, 8548,10970, 1473, 1636, 5795,10930,10942, 1007, 2868, + 10973, 674, 1007,10961,10797,10974, 674,10975, 1534,10946, + 10946,10946,10946,10946,10946,10715, 1807,10715,10716,10916, + 10716,10716,10716,10716,10716,10716, 2863,10968, 6854,10799, + 10716, 1007,10798,10798,10798,10798,10798,10798,10976, 1007, + 10908, 1806,10972,10977,10978, 1007, 6855, 5793, 5793, 9746, + 5793,10715,10979,10715,10716, 5794,10716,10716,10716,10716, + + 10716,10716,10980,10981,10710,10908,10710,10710,10710,10710, + 10710,10710,10982, 2868,10966,10145, 1007,10967,10967,10967, + 10967,10967,10967,10969, 2868,10909, 2865, 1007,10983,10971, + 10984,10985,10986, 2868,10987,10988, 1007,10989, 8430, 1007, + 10991,10993, 8430, 5792, 8430,10995,10998, 8430,10147, 8430, + 8430,11001,10857,10997,11002, 8430,10415,11008, 9155,10999, + 10865, 6797,10996, 6797,11006, 6797,10148, 8550, 8550,10901, + 8550,10998,10871,10873,11000, 5794,11004,11004,11004,11004, + 10875, 6797, 6797, 6797,10710,10884,10710,10710,10710,10710, + 10710,10710, 8430, 8430,11017,10145,11007,10888, 6797,11016, + + 674,10693,10890, 4584, 4584, 674, 8430, 8485,10894,11036, + 8550, 8550, 8550, 8550,11038,11042,10992,10994,11043,10702, + 11020,10893,10702, 5792,11040,11009,11044,10922,10147,11047, + 11003,11048,11010,11015,11052, 674,11033,11011, 5795, 6814, + 674, 6814,11056,10902,11060, 674,10148,10903, 1325,11012, + 674,11018,11014,10905,10905,10905,10905,11013, 6814, 6814, + 11061,11062,11063,11005, 1326, 1326, 1326, 1326, 1326, 1326, + 11064, 6854, 674, 1283, 6814,10702, 1331, 674,11034, 4593, + 11019, 9741,11275,10454,10455,11275, 9212,11065, 2308, 6855, + 9213, 4584, 1490,11275, 1491, 1007, 674, 7762, 7762,10138, + + 7762, 674,10910,10910,10910,10910, 674, 1530,11041, 1531, + 1007, 674,11049, 1007, 5793, 5793, 9746, 5793, 674,11067, + 2532, 1533, 5794, 674, 1534, 1535, 5793, 5793, 9746, 5793, + 10934, 1325,11050, 2308, 5794,11275,11040, 1490,11275, 1491, + 10906, 674,10145,11025, 1007,11071, 674, 1326, 1326, 1326, + 1326, 1326, 1326, 6853,10145,11072, 1283, 1007,10462, 1331, + 5793, 5793, 9746, 5793,11069,11045,11073,11066, 5794,11029, + 5792,11046,11074, 674,11051,10147,10463,10706, 674,10922, + 11075, 674, 5792, 2309,11076, 1007, 674,10147,10145,10911, + 1530,11032, 1531,10148,11030,11039, 1007,11078,11079, 2868, + + 11050,11275,11080,11081, 1533,10148,11082,10935, 1535, 1807, + 1007,11039,11070,11275,11083,11085, 5792,11086,11087,10992, + 11041,10147,11275,10994,11089, 1808, 1808, 1808, 1808, 1808, + 1808,10908,11090, 8428, 1806,11092,11003, 1812,11031,10148, + 11091,11275,10715,11275,10715,10716,11093,10716,10716,10716, + 10716,10716,10716, 724,11094,11275,10908, 724,11275, 724, + 11095, 8428, 8428, 2532,11275, 724, 6797,11275, 1818, 724, + 1819, 724,11102,11034, 724,11039, 6797, 6797, 724,11275, + 724, 6797, 1821,11275,11115, 1822, 1823, 1807,11054,11036, + 11038,11033,11117, 724,11118,11119,11122, 724,11120, 724, + + 11275,11123,11125, 1808, 1808, 1808, 1808, 1808, 1808,11275, + 724,10922, 1806,11126, 724, 1812, 724, 674,11121, 724, + 2866,11275, 674, 724, 2867, 724, 2005, 1007,10922,11060, + 11061, 724,11050,11034,11130, 724,11097, 724,11096,11131, + 11055,11099,11098, 2866,11064,11132, 1818, 2867, 1819, 2005, + 1007, 1007, 6814, 6814,11128, 1007, 1007, 6814,11133,11134, + 1821,11135,10947, 1822, 1823, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8429, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8430, + + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8426, 8426, 8426, 8426, 8426, 8426, 8430, 8430, + 8430, 8430,10990, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8426, 8426, 8428, 8426, 9738,11021, + 11022, 9738,11275,10946,10946,10946,10946,10946,10946,11136, + 11040,11137,11023,11138,11023,11024, 6797,11024,11024,11024, + 11024,11024,11024,10967,10967,10967,10967,10967,10967, 1118, + 1118, 1118, 1118, 1118,11004,11004,11004,11004,11101, 4584, + + 10702,10702,10893,10702,11275,11129, 674,11078,11139,11140, + 11141, 674, 1007,11142,11275, 8546, 8546, 8546, 8546, 2866, + 11143,11144,11145, 2867,11146, 2005, 1007,11147,11148, 9209, + 11149, 9209, 9210,11057, 9210, 9210, 9210, 9210, 9210, 9210, + 11151, 8428,11150,11100, 9738, 9738, 9738, 9738,11152,11084, + 11153, 8428, 6814,11068,11041,11159,10702,11115, 9209,11167, + 9209, 9210,11103, 9210, 9210, 9210, 9210, 9210, 9210, 9738, + 11021, 9738, 9738,11117, 6797, 4593, 8544,11275,10454,10455, + 11275,11005, 6797, 9209,11168, 9209, 9210,11169, 9210, 9210, + 9210, 9210, 9210, 9210, 8545, 7762, 7762,10138, 7762,11170, + + 11171,11172,11173,11275,10454,10455,11275, 9211, 9211, 9211, + 9211,11125,10899,11275,10899,10899,10899,10899,10899,10899, + 11024,10922,11024,11024,11024,11024,11024,11024, 7762, 7762, + 10138, 7762,11174,11275,11176, 2308,11177, 1007,11178, 1490, + 11180, 1491, 1007, 674, 7762, 7762,10138, 7762, 674,11108, + 11154, 6853,11158,11175,11181,11275,10462,11182,11155,11275, + 7762, 7762,10138, 7762,11183,11127, 6797, 6797, 8544, 724, + 1007, 724,11275,11184,10463, 9211, 9211,11026, 9211,11185, + 11186,11179,11187, 9741, 6853,11188, 8545, 9742,11189,10462, + 11190, 4584,10899,11191,10899,10899,10899,10899,10899,10899, + + 6853, 5793, 5793, 9746, 5793,10462,11192,10463,11109, 5794, + 5793, 5793, 9746, 5793,11275,11156, 6853,11193, 5794,11194, + 11195,10462,11110,10463, 724,11111,11196,11275, 724,10145, + 724, 6853, 5793, 5793, 9746, 5793,10462,11197,10145,10463, + 5794,11199,11157, 6814, 674, 8428,11160,11204,11205, 674, + 6797,11027, 4584,11206,10463,11028, 1325, 5792,11158,11207, + 10145,11208,10147, 1007,11176,11209, 5792, 4593,11178,11275, + 1007,10147, 1326, 1326, 1326, 1326, 1326, 1326,11210, 724, + 10148, 1283,11211, 724, 1331, 724,11212,11213, 5792,10148, + 11214,11112,11215,10147,11216,11217,11113, 9740, 9740, 9740, + + 9740,11158, 9740,11104, 9740, 9740,11218,11275,10454,10455, + 11275,10148,11219,11198,11220, 1530,11221, 1531,11221,11275, + 10454,10455,11275,10415,10133,11053, 6814, 8428, 4593, 1533, + 6797,11223, 1534, 1535, 1325,11204,11275,10454,10455,11275, + 11225,11226,10922,11209,11033,10922,11227,11228,11229,11230, + 1326, 1326, 1326, 1326, 1326, 1326,11231,11232,11233, 1283, + 11234,11237, 1331,11275, 7762, 7762,10138, 7762,11275,10454, + 10455,11275,11239, 9741,11240,11275,11241, 9742, 9741, 6797, + 11242,11243, 9742,11235,11244,11222,11034,11161, 7762, 7762, + 10138, 7762,11275, 1530,11245, 1531, 2531,11162,11246,11247, + + 1652,11163, 1653, 8428, 8428,11249, 6814, 1533,11239,11251, + 1534, 1535, 1807,11250, 7762, 7762,10138, 7762,11252,11253, + 6853,11254, 6797,11255,11275,10462,11256,11257, 1808, 1808, + 1808, 1808, 1808, 1808,11258,11259,11250, 1806,11260,11261, + 1812,11262,11263,10463, 6853,11275,10454,10455,11275,10462, + 11264,11236,11266,11267,11268, 6814, 5793, 5793, 9746, 5793, + 11275,10454,10455,11275, 5794,11266,11269,10463,11270,11164, + 6853, 1818,11271, 1819,11272,10462,11274,11274,11165, 2908, + 11275,10454,10455,11275,10145, 1821, 2906,11058, 1822, 1823, + 1807, 1098, 1098,10463,10702,10702,10893,10702,11248,10916, + + 2905,11275, 1100, 1100, 1098, 1098, 1808, 1808, 1808, 1808, + 1808, 1808, 5792, 847, 2904, 1806,11275,10147, 1812, 847, + 847,11166,10916, 850,11201, 921,11200, 925, 2903, 850, + 850, 921, 921, 925, 925,10148,11275, 929, 1100, 1100, + 939, 2769, 2769, 929, 929,11224, 939, 939, 991, 1818, + 10702, 1819, 2899, 2766, 991, 991, 2769, 2769, 772,11059, + 2766, 2766, 2898, 1821, 772, 772, 1822, 1823, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8429, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + + 8426, 8426, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8426, 8426, 8426, 8426, 8426, + 8426, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8426, 8426,11088, + 8426, 9740,11104,11105, 9740,10143,10143,10144,10143, 7762, + 7762,10138, 7762, 5794,10690,10690, 2897,10690,11024, 2896, + 11024,11024,11024,11024,11024,11024,10459,10459,10460,10459, + 2890, 2889, 2888,10145, 5793, 5793, 9746,10464, 7762, 7762, + + 10138,10700, 5794, 847,11275,10454,10455,10894, 850, 847, + 847, 2887, 921, 2886, 850, 850, 2766,11275, 921, 921, + 2885,10146,10145, 2766, 2766, 6853,10147, 2882, 2881, 925, + 10462, 2880, 929, 2879,11202, 925, 925,11106, 929, 929, + 2878,11107,10461, 2877,10148, 939, 2876,10462,10463, 2875, + 5792, 939, 939, 2874, 6853,10147, 991, 2873, 2868,10462, + 11275, 2136, 991, 991, 2865,10463, 2864, 2136, 2136, 847, + 10902, 2863, 925,10148,11027, 847, 847,10463, 925, 925, + 11106, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 217, + 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, + 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, + 217, 217, 217, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 225, 225, 225, + 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, + 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, + + 225, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 243, 243, 243, 243, 243, + 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, + 243, 243, 243, 243, 243, 243, 243, 243, 243, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 256, 256, 256, + + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 273, 273, 273, 273, 273, 273, 273, + + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 277, 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + + 326, 326, 326, 326, 326, 326, 326, 326, 326, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + + 352, 352, 352, 352, 352, 358, 358, 358, 358, 358, + 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, + 358, 358, 358, 358, 358, 358, 358, 358, 358, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 365, 365, 365, 365, 365, 365, 365, + 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, + 365, 365, 365, 365, 365, 365, 365, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + + 368, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 380, + 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 397, 397, 397, 397, 397, + 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, + 397, 397, 397, 397, 397, 397, 397, 397, 397, 404, + 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, + 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, + 404, 404, 404, 410, 410, 410, 410, 410, 410, 410, + + 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, + 410, 410, 410, 410, 410, 410, 410, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 212, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 497, + 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, + + 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 509, 509, 509, + 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, + 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, + 509, 514, 514, 514, 514, 514, 514, 514, 514, 514, + 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, + 514, 514, 514, 514, 514, 518, 518, 518, 518, 518, + 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, + + 518, 518, 518, 518, 518, 518, 518, 518, 518, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 543, 543, 543, + 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, + 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, + 543, 545, 545, 545, 545, 545, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, + + 545, 545, 545, 545, 545, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 555, 555, 555, 555, 555, 555, 555, + 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, + 555, 555, 555, 555, 555, 555, 555, 564, 564, 564, + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + + 564, 567, 567, 567, 567, 567, 567, 567, 567, 567, + 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, + 567, 567, 567, 567, 567, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 582, 582, 582, 582, 582, 582, 582, + 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, + 582, 582, 582, 582, 582, 582, 582, 583, 583, 583, + + 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, + 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, + 583, 584, 584, 584, 584, 584, 584, 584, 584, 584, + 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, + 584, 584, 584, 584, 584, 589, 589, 589, 589, 589, + 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, + 589, 589, 589, 589, 589, 589, 589, 589, 589, 590, + 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, + 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, + 590, 590, 590, 600, 600, 600, 600, 600, 600, 600, + + 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, + 600, 600, 600, 600, 600, 600, 600, 601, 601, 601, + 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, + 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, + 601, 605, 605, 605, 605, 605, 605, 605, 605, 605, + 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, + 605, 605, 605, 605, 605, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 614, + 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, + + 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, + 614, 614, 614, 615, 615, 615, 615, 615, 615, 615, + 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, + 615, 615, 615, 615, 615, 615, 615, 616, 616, 616, + 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, + 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, + 616, 644, 644, 644, 644, 644, 644, 644, 644, 644, + 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, + 644, 644, 644, 644, 644, 646, 646, 646, 646, 646, + 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, + + 646, 646, 646, 646, 646, 646, 646, 646, 646, 768, + 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, + 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, + 768, 768, 768, 772, 2862, 929, 2861, 2136, 2860, 2859, + 772, 929, 929, 2136, 2136, 2856, 772, 772, 775, 775, + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 778, 778, 2855, 778, 778, 778, 778, 778, + 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, + 778, 778, 778, 778, 778, 778, 790, 790, 2854, 790, + + 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, + 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, + 803, 803, 2853, 803, 2848,10690,10690, 847,10690, 803, + 803, 2847, 803, 847, 847, 2846, 803, 803, 810, 810, + 810, 810, 810, 810, 810, 2845, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 824, 824, 824, 824, 824, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 833, 833, 2838, 2837, + 2836, 925, 2829, 833, 833, 834, 834, 925, 925, 2827, + + 929, 2826, 834, 834, 836, 836, 929, 929, 2825, 847, + 2818, 836, 836, 864, 864, 847, 847, 925, 2817, 929, + 864, 864, 869, 925, 925, 929, 929, 869, 869, 869, + 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, + 869, 869, 869, 869, 869, 869, 882, 882, 2816, 2815, + 5727, 2813, 847, 882, 882, 893, 5727, 5727, 847, 847, + 925, 893, 893, 2812, 2811, 2810, 925, 925, 893, 893, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 2809, 894, 904, 904, 904, 904, 904, 904, + + 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 904, 904, 904, 913, 913, + 913, 913, 2808, 2807, 929, 2802, 913, 913, 2792, 913, + 929, 929, 2791, 913, 913, 918, 918, 918, 918, 918, + 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, + 918, 918, 918, 918, 918, 918, 918, 918, 918, 927, + 2783, 2782, 2781, 2780, 2779, 927, 927, 2778, 927, 644, + 644, 644, 644, 644, 644, 2777, 644, 644, 644, 644, + 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, + 644, 644, 644, 947, 947, 2776, 2775, 2774, 847, 2773, + + 947, 947, 959, 959, 847, 847, 2772, 925, 2771, 959, + 959, 965, 965, 925, 925, 2770, 2768, 2767, 965, 965, + 985, 985, 985, 985, 2763, 985, 2762, 2761, 847, 2760, + 985, 925, 2759, 985, 847, 847, 2758, 925, 925, 985, + 985, 646, 646, 646, 646, 646, 646, 646, 646, 646, + 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, + 646, 646, 646, 646, 646, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1076, + 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, + + 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, + 1076, 1076, 1076, 768, 768, 768, 768, 768, 768, 768, + 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, + 768, 768, 768, 768, 768, 768, 768, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 1102, 2757, 2756, 2755, 9419, 2754, 2753, 1102, 2752, + 1102, 9419, 9419, 9424, 1102, 1102, 1102, 1102, 1106, 9424, + 9424, 2751, 9428, 2750, 2749, 1106, 2748, 1106, 9428, 9428, + 2747, 1106, 1106, 1106, 1106, 1111, 1111, 1111, 1111, 1111, + + 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, + 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1114, + 1114, 2746, 2745, 9638, 2744, 9419, 1114, 1114, 1121, 9638, + 9638, 9419, 9419, 2743, 9424, 2742, 2741, 1121, 2740, 1121, + 9424, 9424, 9428, 1121, 1121, 1124, 1124, 2739, 9428, 9428, + 2738, 2737, 1124, 1124, 1132, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1137, 2736, + 2735, 2734, 1137, 1137, 2733, 2731, 1137, 1137, 1137, 1137, + 1137, 1137, 1137, 1137, 2728, 1137, 1137, 1137, 1137, 1137, + + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 824, 824, 824, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 824, 824, 1237, 1237, + 2727, 2725, 2724, 2723, 2720, 1237, 1237, 1249, 1249, 2611, + 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, + 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, + 1249, 1261, 1261, 2717, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + + 1261, 1261, 1261, 1261, 1261, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 644, + 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, + 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, + 644, 644, 644, 1272, 1272, 1272, 1272, 1272, 1272, 2715, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 646, 646, 646, + 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, + 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, + + 646, 1326, 2713, 2705, 2700, 2699, 9638, 2698, 1326, 1326, + 2697, 1326, 9638, 9638, 2693, 2691, 2690, 1326, 1326, 1331, + 1331, 2689, 2681, 2680, 2679, 2672, 1331, 1331, 674, 2671, + 2667, 2666, 2663, 2662, 2651, 674, 674, 674, 674, 2650, + 2649, 2648, 2643, 2636, 674, 674, 724, 2635, 2634, 2628, + 2618, 2611, 2610, 724, 724, 724, 724, 2609, 2606, 2605, + 2600, 2599, 724, 724, 768, 768, 768, 768, 768, 768, + 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, + 768, 768, 768, 768, 768, 768, 768, 768, 790, 790, + 2598, 790, 790, 790, 790, 790, 790, 790, 790, 790, + + 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, + 790, 790, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 1692, 1692, 2597, 2596, + 2593, 2591, 2590, 1692, 1692, 1708, 1708, 2589, 2587, 2585, + 2584, 2583, 1708, 1708, 803, 803, 2582, 2576, 2569, 2568, + 2567, 803, 803, 810, 810, 810, 810, 810, 810, 810, + 2566, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, + + 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, + 824, 833, 833, 2565, 2564, 2561, 2558, 2556, 833, 833, + 834, 834, 2555, 2554, 2552, 2551, 2548, 834, 834, 836, + 836, 2330, 2547, 2546, 2545, 2544, 836, 836, 864, 864, + 2543, 2542, 2541, 2540, 2539, 864, 864, 869, 2538, 2537, + 2536, 2532, 869, 869, 869, 869, 869, 869, 869, 869, + 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, + 869, 882, 882, 1636, 2530, 2529, 1558, 2438, 882, 882, + 893, 2329, 2328, 2327, 2320, 2304, 2303, 2302, 893, 893, + 893, 1330, 2299, 2298, 1321, 2289, 893, 893, 894, 894, + + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 2288, 894, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, + 913, 913, 2287, 2286, 2285, 2284, 2283, 913, 913, 918, + 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, + 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, + + 918, 918, 918, 927, 2282, 2281, 2280, 2278, 1269, 927, + 927, 2271, 927, 724, 2270, 2269, 2268, 1262, 1257, 2265, + 724, 724, 724, 724, 2264, 2263, 2262, 2259, 1247, 724, + 724, 947, 947, 2257, 2254, 2253, 2252, 2251, 947, 947, + 959, 959, 2249, 2248, 2247, 2246, 2245, 959, 959, 965, + 965, 2236, 2235, 2234, 2233, 1223, 965, 965, 985, 985, + 985, 985, 1222, 1221, 2232, 2231, 1216, 1215, 985, 2230, + 2222, 985, 1138, 1330, 1321, 1138, 2134, 985, 985, 1808, + 1138, 1138, 1138, 1138, 1138, 1138, 1808, 1808, 1138, 1808, + 1138, 1138, 1138, 1138, 1138, 1808, 1808, 1812, 1812, 1138, + + 1138, 1138, 1138, 1138, 1812, 1812, 1007, 1138, 1138, 1133, + 2131, 2128, 2127, 1007, 1007, 1007, 1007, 2126, 2125, 2124, + 2123, 2121, 1007, 1007, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2051, 2051, + 2051, 2051, 2051, 2051, 2120, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 1066, 1066, 1066, 1066, 2061, 2061, 2061, 2061, + + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, + 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, + 1076, 1076, 1076, 1076, 1102, 2119, 1112, 2118, 2078, 2044, + 2043, 1102, 986, 1802, 1793, 1792, 1791, 1102, 1102, 1790, + 1102, 1106, 1789, 1788, 1787, 1786, 1785, 1784, 1106, 1783, + 1782, 1106, 1781, 1780, 1106, 1106, 1111, 1111, 1111, 1111, + 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, + 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, + + 1114, 1114, 1779, 1778, 1777, 1776, 1773, 1114, 1114, 1121, + 1770, 1767, 938, 1766, 1765, 1764, 928, 1761, 1121, 919, + 895, 895, 895, 1752, 1121, 1121, 1124, 1124, 1751, 1750, + 1749, 1748, 1746, 1124, 1124, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1137, + 876, 1745, 1744, 1137, 1137, 866, 1743, 1137, 1137, 1137, + 1137, 1137, 1137, 1137, 1137, 866, 1137, 1137, 1137, 1137, + 1137, 2132, 866, 866, 867, 2132, 2132, 866, 866, 2132, + 2132, 2132, 2132, 2132, 2132, 2132, 2132, 1742, 2132, 2132, + + 2132, 2132, 2132, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 2170, 1741, 1740, + 1739, 1738, 1737, 1736, 2170, 2170, 1735, 2170, 1734, 1733, + 1732, 1731, 1730, 2170, 2170, 2173, 2173, 825, 1729, 1728, + 1727, 1726, 2173, 2173, 674, 1725, 1719, 1718, 1715, 1714, + 1713, 674, 674, 674, 674, 1712, 1711, 1707, 1706, 1705, + 674, 674, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, + 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, + 2250, 2250, 2250, 2250, 2250, 2250, 1237, 1237, 1701, 1700, + + 1698, 1697, 1694, 1237, 1237, 2258, 2258, 1693, 776, 769, + 1691, 1690, 2258, 2258, 1261, 1261, 1686, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 2276, 1330, 1321, 1281, + 1273, 1271, 1270, 1262, 1262, 1262, 2276, 2276, 2276, 2276, + + 2276, 2276, 2276, 2276, 2276, 2279, 1247, 2279, 1245, 1244, + 1241, 2279, 2279, 1326, 1238, 1235, 1234, 1233, 1230, 1223, + 1326, 1326, 1222, 1326, 1221, 1216, 1215, 1138, 1138, 1326, + 1326, 1331, 1331, 1138, 1138, 1138, 1159, 1138, 1331, 1331, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 724, 1136, 1123, 1116, 1115, 1110, + 1108, 724, 724, 724, 724, 767, 1065, 717, 650, 649, + 724, 724, 1692, 1692, 643, 1055, 761, 1054, 717, 1692, + 1692, 1708, 1708, 1053, 990, 988, 650, 982, 1708, 1708, + + 803, 803, 958, 946, 928, 920, 926, 803, 803, 2765, + 920, 919, 2765, 914, 911, 895, 892, 891, 889, 888, + 875, 2765, 2765, 817, 871, 868, 866, 866, 2765, 2765, + 836, 836, 866, 867, 866, 866, 865, 836, 836, 864, + 864, 848, 767, 844, 832, 827, 864, 864, 882, 882, + 817, 817, 817, 797, 797, 882, 882, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + + 894, 894, 894, 792, 894, 2795, 2795, 2795, 2795, 2795, + 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, + 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 947, + 947, 791, 771, 767, 717, 650, 947, 947, 959, 959, + 649, 645, 643,11275, 544, 959, 959, 965, 965, 544, + 544, 544, 542, 542, 965, 965, 1808, 369, 369, 212, + 212, 276, 276, 1808, 1808, 274, 1808, 274,11275,11275, + 11275,11275, 1808, 1808, 1812, 1812,11275,11275,11275,11275, + 11275, 1812, 1812, 1007,11275,11275,11275,11275,11275,11275, + 1007, 1007, 1007, 1007,11275,11275,11275,11275,11275, 1007, + + 1007, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, + 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, + 2907, 2907, 2907, 2907, 2907, 2276,11275,11275,11275,11275, + 11275,11275,11275,11275,11275, 2276, 2276, 2276, 2276, 2276, + 2276, 2276, 2276, 2276, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 1102,11275,11275,11275, + 11275,11275,11275, 1102,11275,11275,11275,11275,11275, 1102, + 1102,11275, 1102, 1106,11275,11275,11275,11275,11275,11275, + 1106,11275,11275, 1106,11275,11275, 1106, 1106, 1114, 1114, + 11275,11275,11275,11275,11275, 1114, 1114, 1121,11275,11275, + 11275,11275,11275,11275,11275,11275, 1121,11275,11275,11275, + 11275,11275, 1121, 1121, 1124, 1124,11275,11275,11275,11275, + 11275, 1124, 1124, 2132,11275,11275,11275, 2132, 2132,11275, + 11275, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,11275, + + 2132, 2132, 2132, 2132, 2132, 1137,11275,11275,11275, 1137, + 1137,11275,11275, 1137, 1137, 1137, 1137, 1137, 1137, 1137, + 1137,11275, 1137, 1137, 1137, 1137, 1137, 2170,11275,11275, + 11275,11275,11275,11275, 2170, 2170,11275, 2170,11275,11275, + 11275,11275,11275, 2170, 2170, 2173, 2173,11275,11275,11275, + 11275,11275, 2173, 2173, 674,11275,11275,11275,11275,11275, + 11275, 674, 674, 674, 674,11275,11275,11275,11275,11275, + 674, 674, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, + 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, + 2250, 2250, 2250, 2250, 2250, 2250, 1237, 1237,11275,11275, + + 11275,11275,11275, 1237, 1237, 2258, 2258,11275,11275,11275, + 11275,11275, 2258, 2258, 1261, 1261,11275, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1326,11275,11275,11275, + 11275,11275,11275, 1326, 1326,11275, 1326,11275,11275,11275, + + 11275,11275, 1326, 1326, 1331, 1331,11275,11275,11275,11275, + 11275, 1331, 1331, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 724,11275,11275, + 11275,11275,11275,11275, 724, 724, 724, 724,11275,11275, + 11275,11275,11275, 724, 724, 1692, 1692,11275,11275,11275, + 11275,11275, 1692, 1692, 1708, 1708,11275,11275,11275,11275, + 11275, 1708, 1708, 803, 803,11275,11275,11275,11275,11275, + 803, 803, 2765, 2765,11275,11275,11275,11275,11275, 2765, + 2765, 836, 836,11275,11275,11275,11275,11275, 836, 836, + + 864, 864,11275,11275,11275,11275, 864, 864, 864, 882, + 882,11275,11275,11275,11275,11275, 882, 882, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, + 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, + 2795, 2795, 2795, 2795, 2795, 2795, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 3903, 3903, 3903, 3903, 3903, 3903, + 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, + 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 947, 947, + 11275,11275,11275,11275,11275, 947, 947, 959, 959,11275, + 11275,11275,11275,11275, 959, 959, 965, 965,11275,11275, + 11275,11275,11275, 965, 965, 1808,11275,11275,11275,11275, + 11275,11275, 1808, 1808,11275, 1808,11275,11275,11275,11275, + 11275, 1808, 1808, 1812, 1812,11275,11275,11275,11275,11275, + 1812, 1812, 1007,11275,11275,11275,11275,11275,11275, 1007, + + 1007, 1007, 1007,11275,11275,11275,11275,11275, 1007, 1007, + 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, + 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, + 2907, 2907, 2907, 2907, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 1102,11275,11275,11275,11275,11275,11275, 1102, + 11275,11275,11275,11275,11275, 1102, 1102,11275, 1102, 1106, + + 11275,11275,11275,11275,11275,11275, 1106,11275,11275, 1106, + 11275,11275, 1106, 1106, 1114, 1114,11275,11275,11275,11275, + 11275, 1114, 1114, 1121,11275,11275,11275,11275,11275,11275, + 11275,11275, 1121,11275,11275,11275,11275, 1121, 1121, 1121, + 1124, 1124,11275,11275,11275,11275,11275, 1124, 1124, 4454, + 11275,11275,11275, 4454, 4454,11275,11275, 4454, 4454, 4454, + 4454, 4454, 4454, 4454, 4454,11275, 4454, 4454, 4454, 4454, + 4454, 1137,11275,11275,11275, 1137, 1137,11275,11275, 1137, + 1137, 1137, 1137, 1137, 1137, 1137, 1137,11275, 1137, 1137, + 1137, 1137, 1137, 2170,11275,11275,11275,11275,11275,11275, + + 2170, 2170,11275, 2170,11275,11275,11275,11275,11275, 2170, + 2170, 2173, 2173,11275,11275,11275,11275,11275, 2173, 2173, + 674,11275,11275,11275,11275,11275,11275, 674, 674, 674, + 674,11275,11275,11275,11275,11275, 674, 674, 1237, 1237, + 11275,11275,11275,11275,11275, 1237, 1237, 2258, 2258,11275, + 11275,11275,11275,11275, 2258, 2258, 1261, 1261,11275, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + + 1272, 1272, 1272, 1272, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1326,11275, + 11275,11275,11275,11275,11275, 1326, 1326,11275, 1326,11275, + 11275,11275,11275,11275, 1326, 1326, 1331, 1331,11275,11275, + 11275,11275,11275, 1331, 1331, 4585,11275,11275,11275,11275, + 4585,11275,11275,11275,11275,11275, 4585, 4585,11275, 4585, + 724,11275,11275,11275,11275,11275,11275, 724, 724, 724, + 724,11275,11275,11275,11275,11275, 724, 724, 724, 1692, + 1692,11275,11275,11275,11275,11275, 1692, 1692, 1708, 1708, + + 11275,11275,11275,11275,11275, 1708, 1708, 5044,11275,11275, + 11275,11275,11275, 5044, 5044,11275, 5044, 803, 803,11275, + 11275,11275,11275,11275, 803, 803, 836, 836,11275,11275, + 11275,11275,11275, 836, 836, 864, 864,11275,11275,11275, + 11275,11275, 864, 864, 882,11275,11275, 882,11275,11275, + 11275,11275,11275,11275,11275,11275, 882, 882,11275,11275, + 11275,11275,11275, 882, 882, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 3903, + 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, + + 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, + 3903, 3903, 3903, 3906, 3906, 3906, 3906, 3906, 3906, 3906, + 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, + 3906, 3906, 3906, 3906, 3906, 3906, 3906, 947, 947,11275, + 11275,11275,11275,11275, 947, 947, 959,11275,11275, 959, + 11275,11275,11275,11275,11275,11275,11275,11275, 959, 959, + 11275,11275,11275,11275,11275, 959, 959, 965,11275,11275, + 965,11275,11275,11275,11275,11275,11275,11275,11275, 965, + 965,11275,11275,11275,11275,11275, 965, 965, 1808,11275, + 11275,11275,11275,11275,11275, 1808, 1808,11275, 1808,11275, + + 11275,11275,11275,11275, 1808, 1808, 1812, 1812,11275,11275, + 11275,11275,11275, 1812, 1812, 1007,11275,11275,11275,11275, + 11275,11275, 1007, 1007, 1007, 1007,11275,11275,11275,11275, + 11275, 1007, 1007, 1007, 5179, 5179,11275, 5179, 5179, 5179, + 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, + 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 4585,11275, + 11275,11275,11275, 4585,11275,11275,11275,11275,11275, 4585, + 4585,11275, 4585, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2061, 2061, 2061, + + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 1102,11275,11275, 1102,11275,11275, 1102,11275,11275, + 11275,11275,11275,11275, 1102,11275,11275,11275,11275,11275, + 1102, 1102,11275, 1102, 1106,11275,11275, 1106,11275,11275, + 1106,11275,11275,11275,11275,11275,11275, 1106,11275,11275, + 1106,11275,11275, 1106, 1106, 1114, 1114,11275,11275,11275, + 11275,11275, 1114, 1114, 1121,11275,11275,11275,11275,11275, + 11275,11275,11275, 1121,11275,11275,11275,11275,11275, 1121, + 1121, 1124, 1124,11275,11275,11275,11275,11275, 1124, 1124, + + 5648, 5648,11275,11275,11275,11275,11275, 5648, 5648, 4454, + 11275,11275,11275, 4454, 4454,11275,11275, 4454, 4454, 4454, + 4454, 4454, 4454, 4454, 4454,11275, 4454, 4454, 4454, 4454, + 4454, 1137,11275,11275,11275, 1137, 1137,11275,11275, 1137, + 1137, 1137, 1137, 1137, 1137, 1137, 1137,11275, 1137, 1137, + 1137, 1137, 1137, 2170,11275,11275,11275,11275,11275,11275, + 2170, 2170,11275, 2170,11275,11275,11275,11275,11275, 2170, + 2170, 2173, 2173,11275,11275,11275,11275,11275, 2173, 2173, + 674,11275,11275,11275,11275,11275,11275, 674, 674, 674, + 674,11275,11275,11275,11275,11275, 674, 674, 1237, 1237, + + 11275,11275,11275,11275,11275, 1237, 1237, 2258, 2258,11275, + 11275,11275,11275,11275, 2258, 2258, 1261, 1261,11275, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1326,11275, + 11275,11275,11275,11275,11275, 1326, 1326,11275, 1326,11275, + + 11275,11275,11275,11275, 1326, 1326, 1331, 1331,11275,11275, + 11275,11275,11275, 1331, 1331, 5758, 5758,11275, 5758, 5758, + 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, + 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5761, + 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, + 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, + 5761,11275, 5761, 5763, 5763, 5763, 5763, 5763, 5763, 5763, + 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, + 5763, 5763, 5763, 5763, 5763, 5763, 5763, 4585,11275,11275, + 11275,11275, 4585,11275,11275,11275,11275,11275, 4585, 4585, + + 11275, 4585, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5883, 5883, 5883, 5883, + 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, + 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, + 4770,11275,11275, 4770, 4770, 4770, 4770, 4770, 4770, 4770, + 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, + 11275, 4770, 4770, 4770, 724,11275,11275,11275,11275,11275, + 11275, 724, 724, 724, 724,11275,11275,11275,11275,11275, + 724, 724, 1692, 1692,11275,11275,11275,11275,11275, 1692, + + 1692, 1708, 1708,11275,11275,11275,11275,11275, 1708, 1708, + 5044,11275,11275,11275,11275,11275, 5044, 5044,11275, 5044, + 803, 803,11275,11275,11275,11275,11275, 803, 803, 836, + 836,11275,11275,11275,11275,11275, 836, 836, 864, 864, + 11275,11275,11275,11275,11275, 864, 864, 882, 882,11275, + 11275,11275,11275,11275, 882, 882, 6239, 6239, 6239, 6239, + 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, + 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + + 894, 894, 894, 894, 947,11275,11275,11275,11275,11275, + 11275,11275,11275, 947, 947,11275,11275,11275,11275,11275, + 947, 947, 947, 959, 959,11275,11275,11275,11275,11275, + 959, 959, 965, 965,11275,11275,11275,11275,11275, 965, + 965, 1808,11275,11275,11275,11275,11275,11275, 1808, 1808, + 11275, 1808,11275,11275,11275,11275,11275, 1808, 1808, 1812, + 1812,11275,11275,11275,11275,11275, 1812, 1812, 1007,11275, + 11275,11275,11275,11275,11275, 1007, 1007, 1007, 1007,11275, + 11275,11275,11275,11275, 1007, 1007, 4585,11275,11275,11275, + 11275, 4585,11275,11275,11275,11275,11275, 4585, 4585,11275, + + 4585, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 5601, + 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, + 5601, 5601, 5601, 5601,11275, 5601, 5601, 5601, 5601, 5601, + 5601, 5601, 5601, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 1326,11275,11275, + + 11275,11275,11275,11275, 1326, 1326,11275, 1326,11275,11275, + 11275,11275,11275, 1326, 1326, 1331, 1331,11275,11275,11275, + 11275,11275, 1331, 1331, 1102,11275,11275,11275,11275,11275, + 11275, 1102,11275,11275,11275,11275,11275, 1102, 1102,11275, + 1102, 1114, 1114,11275,11275,11275,11275,11275, 1114, 1114, + 1121,11275,11275,11275,11275,11275,11275,11275,11275, 1121, + 11275,11275,11275,11275,11275, 1121, 1121, 1124, 1124,11275, + 11275,11275,11275,11275, 1124, 1124, 5648, 5648,11275,11275, + 11275,11275,11275, 5648, 5648, 6719,11275,11275,11275, 6719, + 6719,11275,11275, 6719, 6719, 6719, 6719, 6719, 6719, 6719, + + 6719,11275, 6719, 6719, 6719, 6719, 6719, 1137,11275,11275, + 11275, 1137, 1137,11275,11275, 1137, 1137, 1137, 1137, 1137, + 1137, 1137, 1137,11275, 1137, 1137, 1137, 1137, 1137, 2170, + 11275,11275,11275,11275,11275,11275, 2170, 2170,11275, 2170, + 11275,11275,11275,11275,11275, 2170, 2170, 2173, 2173,11275, + 11275,11275,11275,11275, 2173, 2173, 674, 674, 674, 674, + 11275,11275,11275,11275,11275,11275, 674, 674, 674, 674, + 11275,11275,11275,11275,11275, 674, 674, 674, 1237, 1237, + 11275,11275,11275,11275,11275, 1237, 1237, 2258, 2258,11275, + 11275,11275,11275,11275, 2258, 2258, 1261, 1261,11275, 1261, + + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 5727,11275, + 11275,11275,11275,11275, 5727, 5727,11275, 5727, 6789, 6789, + 11275, 6789, 6789, 6789, 6789, 6789, 6789, 6789, 6789, 6789, + 6789, 6789, 6789, 6789, 6789, 6789, 6789, 6789, 6789, 6789, + + 6789, 6789, 6798,11275,11275,11275,11275, 6798,11275,11275, + 11275,11275,11275, 6798, 6798,11275, 6798, 5758, 5758,11275, + 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, + 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, + 5758, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, + 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, + 5761, 5761, 5761,11275, 5761, 5763, 5763, 5763, 5763, 5763, + 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, + 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, 4585, + 11275,11275,11275,11275, 4585,11275,11275,11275,11275,11275, + + 4585, 4585,11275, 4585, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 6853, 6853, + 6853, 6853, 6853, 6853, 6853,11275, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, + 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, + 5883, 5883, 5883, 5883, 5883, 5883, 7016,11275,11275,11275, + 11275,11275, 7016, 7016,11275, 7016, 724,11275,11275,11275, + 11275,11275,11275, 724, 724, 724, 724,11275,11275,11275, + + 11275,11275, 724, 724, 1692, 1692,11275,11275,11275,11275, + 11275, 1692, 1692, 1708, 1708,11275,11275,11275,11275,11275, + 1708, 1708, 5044,11275,11275,11275,11275,11275, 5044, 5044, + 11275, 5044, 803, 803,11275,11275,11275,11275,11275, 803, + 803, 836,11275,11275,11275,11275,11275,11275,11275,11275, + 836, 836,11275,11275,11275,11275,11275, 836, 836, 7224, + 11275,11275,11275,11275,11275, 7224, 7224,11275, 7224, 864, + 864,11275,11275,11275,11275,11275, 864, 864, 882, 882, + 11275,11275,11275,11275,11275, 882, 882, 6239, 6239, 6239, + 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, + + 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, + 6239, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 3906, 3906, 3906, 3906, 3906, + 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, + 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 947, + 947,11275,11275,11275,11275,11275, 947, 947, 959, 959, + 11275,11275,11275,11275,11275, 959, 959, 965, 965,11275, + 11275,11275,11275,11275, 965, 965, 7259, 7259, 7259, 7259, + 11275,11275,11275,11275,11275,11275, 7259,11275,11275, 7259, + + 11275,11275,11275,11275,11275, 7259, 7259, 1808,11275,11275, + 11275,11275,11275,11275, 1808, 1808,11275, 1808,11275,11275, + 11275,11275,11275, 1808, 1808, 1812, 1812,11275,11275,11275, + 11275,11275, 1812, 1812, 1007,11275,11275,11275,11275,11275, + 11275, 1007, 1007, 1007, 1007,11275,11275,11275,11275,11275, + 1007, 1007, 6798,11275,11275,11275,11275, 6798,11275,11275, + 11275,11275,11275, 6798, 6798,11275, 6798, 4585,11275,11275, + 11275,11275, 4585,11275,11275,11275,11275,11275, 4585, 4585, + 11275, 4585, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + + 2047, 2047, 2047, 2047, 2047, 2047, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 1102,11275,11275,11275,11275,11275,11275, 1102,11275,11275, + 11275,11275,11275, 1102, 1102,11275, 1102, 1114, 1114,11275, + 11275,11275,11275,11275, 1114, 1114, 1121,11275,11275,11275, + 11275,11275,11275,11275,11275, 1121,11275,11275,11275,11275, + 11275, 1121, 1121, 1124, 1124,11275,11275,11275,11275,11275, + 1124, 1124, 6719,11275,11275,11275, 6719, 6719,11275,11275, + 6719, 6719, 6719, 6719, 6719, 6719, 6719, 6719,11275, 6719, + + 6719, 6719, 6719, 6719, 1137,11275,11275,11275, 1137, 1137, + 11275,11275, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, + 11275, 1137, 1137, 1137, 1137, 1137, 2170,11275,11275,11275, + 11275,11275,11275, 2170, 2170,11275, 2170,11275,11275,11275, + 11275,11275, 2170, 2170, 2173, 2173,11275,11275,11275,11275, + 11275, 2173, 2173, 674,11275,11275,11275,11275,11275,11275, + 674, 674, 674, 674,11275,11275,11275,11275,11275, 674, + 674, 1237, 1237, 1237, 1237,11275,11275,11275,11275,11275, + 11275,11275,11275, 1237, 1237,11275, 1237,11275,11275,11275, + 1237, 1237, 2258, 2258,11275,11275,11275,11275,11275, 2258, + + 2258, 1261, 1261,11275, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1331, 1331,11275,11275,11275,11275,11275, + 1331, 1331, 6798,11275,11275,11275,11275, 6798,11275,11275, + 11275,11275,11275, 6798, 6798,11275, 6798, 1326,11275,11275, + + 11275,11275,11275,11275, 1326, 1326,11275, 1326,11275,11275, + 11275,11275,11275, 1326, 1326, 6853, 6853, 6853, 6853, 6853, + 6853, 6853,11275, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 7837, 7837, 7837, 7837, 7837, 7837, 7837, + 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7837, + 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7016,11275,11275, + 11275,11275,11275, 7016, 7016,11275, 7016, 724,11275,11275, + + 11275,11275,11275,11275, 724, 724, 724, 724,11275,11275, + 11275,11275,11275, 724, 724, 1692, 1692,11275,11275,11275, + 11275,11275, 1692, 1692, 1708, 1708,11275,11275,11275,11275, + 11275, 1708, 1708, 5044,11275,11275,11275,11275,11275, 5044, + 5044,11275, 5044, 803, 803,11275,11275,11275,11275,11275, + 803, 803, 803, 7224,11275,11275,11275,11275,11275, 7224, + 7224,11275, 7224, 864, 864,11275,11275,11275,11275,11275, + 864, 864, 882,11275,11275, 882,11275,11275,11275,11275, + 11275,11275,11275,11275, 882, 882,11275,11275,11275,11275, + 11275, 882, 882, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 947,11275,11275, + 947,11275,11275,11275,11275,11275,11275,11275,11275, 947, + 947,11275,11275,11275,11275,11275, 947, 947, 959,11275, + 11275, 959,11275,11275,11275,11275,11275,11275,11275,11275, + 959, 959,11275,11275,11275,11275,11275, 959, 959, 965, + 11275,11275, 965,11275,11275,11275,11275,11275,11275,11275, + 11275, 965, 965,11275,11275,11275,11275,11275, 965, 965, + 7259, 7259, 7259, 7259,11275,11275,11275,11275,11275,11275, + 7259,11275,11275, 7259,11275,11275,11275,11275,11275, 7259, + + 7259, 1812, 1812,11275,11275,11275,11275,11275, 1812, 1812, + 1007,11275,11275,11275,11275,11275,11275, 1007, 1007, 1007, + 1007,11275,11275,11275,11275,11275, 1007, 1007, 1808,11275, + 11275,11275,11275,11275,11275, 1808, 1808,11275, 1808,11275, + 11275,11275,11275,11275, 1808, 1808, 4585,11275,11275,11275, + 11275, 4585,11275,11275,11275,11275,11275, 4585, 4585,11275, + 4585, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 1102, + 11275,11275,11275,11275,11275,11275, 1102,11275,11275,11275, + 11275,11275, 1102, 1102,11275, 1102, 1114, 1114,11275,11275, + 11275,11275,11275, 1114, 1114, 1121,11275,11275,11275,11275, + 11275,11275,11275,11275, 1121,11275,11275,11275,11275,11275, + 1121, 1121, 1124, 1124,11275,11275,11275,11275,11275, 1124, + 1124, 8421,11275,11275,11275, 8421, 8421,11275,11275, 8421, + 8421, 8421, 8421, 8421, 8421, 8421, 8421,11275, 8421, 8421, + 8421, 8421, 8421, 1137,11275,11275,11275, 1137, 1137,11275, + 11275, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137,11275, + + 1137, 1137, 1137, 1137, 1137, 2173, 2173,11275,11275,11275, + 11275,11275, 2173, 2173, 674,11275,11275,11275,11275,11275, + 11275, 674, 674, 674, 674,11275,11275,11275,11275,11275, + 674, 674, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 2258, 2258,11275,11275, + 11275,11275,11275, 2258, 2258, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1331, 1331,11275,11275,11275,11275,11275, + 1331, 1331, 6798,11275,11275,11275,11275, 6798,11275,11275, + 11275,11275,11275, 6798, 6798,11275, 6798, 6853, 6853, 6853, + 6853, 6853, 6853, 6853,11275, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 1326,11275,11275,11275,11275, + 11275,11275, 1326, 1326,11275, 1326,11275,11275,11275,11275, + + 11275, 1326, 1326, 8590, 8590,11275,11275,11275,11275,11275, + 8590, 8590, 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7837, + 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7837, + 7837, 7837, 7837, 7837, 7837, 7837, 724,11275,11275,11275, + 11275,11275,11275, 724, 724, 724, 724,11275,11275,11275, + 11275,11275, 724, 724, 1692, 1692,11275,11275,11275,11275, + 11275, 1692, 1692, 1708, 1708,11275,11275,11275,11275,11275, + 1708, 1708, 5044,11275,11275,11275,11275,11275, 5044, 5044, + 11275, 5044, 803, 803,11275,11275,11275,11275,11275, 803, + 803, 847,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275, 847,11275, 847,11275,11275,11275, 847, 847, 864, + 11275,11275,11275,11275,11275,11275,11275,11275, 864, 864, + 11275, 864,11275,11275,11275, 864, 864, 882, 882,11275, + 11275,11275,11275,11275, 882, 882, 925,11275,11275,11275, + 11275,11275,11275,11275,11275,11275, 925,11275, 925,11275, + 11275,11275, 925, 925, 947, 947,11275,11275,11275,11275, + 11275, 947, 947, 959, 959,11275,11275,11275,11275,11275, + 959, 959, 965, 965,11275,11275,11275,11275,11275, 965, + 965, 1812, 1812,11275,11275,11275,11275,11275, 1812, 1812, + 1007,11275,11275,11275,11275,11275,11275, 1007, 1007, 1007, + + 1007,11275,11275,11275,11275,11275, 1007, 1007, 4585,11275, + 11275,11275,11275, 4585,11275,11275,11275,11275,11275, 4585, + 4585,11275, 4585, 1808,11275,11275,11275,11275,11275,11275, + 1808, 1808,11275, 1808,11275,11275,11275,11275,11275, 1808, + 1808, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 1102, + 11275,11275, 1102,11275,11275,11275,11275,11275,11275, 1102, + + 11275, 1102,11275,11275,11275, 1102, 1102,11275, 1102, 1121, + 11275,11275,11275,11275,11275,11275,11275,11275, 1121,11275, + 11275,11275,11275,11275, 1121, 1121, 1124, 1124,11275,11275, + 11275,11275,11275, 1124, 1124, 8421,11275,11275,11275, 8421, + 8421,11275,11275, 8421, 8421, 8421, 8421, 8421, 8421, 8421, + 8421,11275, 8421, 8421, 8421, 8421, 8421, 1137,11275,11275, + 11275, 1137, 1137,11275,11275, 1137, 1137, 1137, 1137, 1137, + 1137, 1137, 1137,11275, 1137, 1137, 1137, 1137, 1137, 2173, + 2173,11275,11275,11275,11275,11275, 2173, 2173, 674,11275, + 11275,11275,11275,11275,11275, 674, 674, 674, 674,11275, + + 11275,11275,11275,11275, 674, 674, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 2258, 2258,11275,11275,11275,11275,11275, 2258, 2258, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1331, 1331,11275, + 11275,11275,11275,11275, 1331, 1331, 6798,11275,11275,11275, + + 11275, 6798,11275,11275,11275,11275,11275, 6798, 6798,11275, + 6798, 6853, 6853, 6853, 6853, 6853, 6853, 6853,11275, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 8590, + 8590,11275,11275,11275,11275,11275, 8590, 8590, 9258, 9258, + 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, + 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, + 9258, 9258, 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, + + 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, + 9264, 9264, 9264, 9264, 9264, 9264, 9294, 9294,11275,11275, + 11275,11275,11275, 9294, 9294, 724,11275,11275,11275,11275, + 11275,11275, 724, 724, 724, 724,11275,11275,11275,11275, + 11275, 724, 724, 1692, 1692,11275,11275,11275,11275,11275, + 1692, 1692, 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, + 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, + 9409, 9409, 9409, 9409, 9409, 9409, 1708, 1708,11275,11275, + 11275,11275,11275, 1708, 1708, 5044,11275,11275,11275,11275, + 11275, 5044, 5044,11275, 5044, 803, 803,11275,11275,11275, + + 11275,11275, 803, 803, 882, 882, 882, 882,11275,11275, + 11275,11275,11275,11275,11275,11275, 882, 882,11275,11275, + 11275,11275,11275, 882, 882, 9429,11275,11275,11275,11275, + 11275, 9429, 9429,11275, 9429, 947, 947,11275,11275,11275, + 11275,11275, 947, 947, 959, 959,11275,11275,11275,11275, + 11275, 959, 959, 965, 965,11275,11275,11275,11275,11275, + 965, 965, 1812, 1812,11275,11275,11275,11275,11275, 1812, + 1812, 1007,11275,11275,11275,11275,11275,11275, 1007, 1007, + 1007, 1007,11275,11275,11275,11275,11275, 1007, 1007, 4585, + 11275,11275,11275,11275, 4585,11275,11275,11275,11275,11275, + + 4585, 4585,11275, 4585, 9536, 9536, 9536, 9536, 9536, 9536, + 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, + 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 1121,11275,11275,11275, + 11275,11275,11275,11275,11275, 1121,11275,11275,11275,11275, + 11275, 1121, 1121, 1124, 1124,11275,11275,11275,11275,11275, + + 1124, 1124, 9639,11275,11275,11275, 9639, 9639,11275,11275, + 9639, 9639, 9639, 9639, 9639, 9639, 9639, 9639,11275, 9639, + 9639, 9639, 9639, 9639, 2173, 2173,11275,11275,11275,11275, + 11275, 2173, 2173, 674,11275,11275,11275,11275,11275,11275, + 674, 674, 674, 674,11275,11275,11275,11275,11275, 674, + 674, 2258, 2258,11275,11275,11275,11275,11275, 2258, 2258, + 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, + 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, + 9685, 9685, 9685, 9685, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1331, 1331,11275,11275,11275,11275,11275, 1331, + 1331, 6798,11275,11275,11275,11275, 6798,11275,11275,11275, + 11275,11275, 6798, 6798,11275, 6798, 6853, 6853, 6853, 6853, + 6853, 6853, 6853,11275, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + + 5792, 5792, 5792, 5792, 9258, 9258, 9258, 9258, 9258, 9258, + 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, + 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9783, 9783, + 9783, 9783, 9783, 9783, 9783, 9783, 9783, 9783, 9783, 9783, + 9783, 9783, 9783, 9783, 9783, 9783, 9783, 9783, 9783, 9783, + 9783, 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, + 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, + 9264, 9264, 9264, 9264, 9264, 9294, 9294,11275,11275,11275, + 11275,11275, 9294, 9294, 724,11275,11275,11275,11275,11275, + 11275, 724, 724, 724, 724,11275,11275,11275,11275,11275, + + 724, 724, 1692, 1692,11275,11275,11275,11275,11275, 1692, + 1692, 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, + 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, + 9409, 9409, 9409, 9409, 9409, 1708, 1708,11275,11275,11275, + 11275,11275, 1708, 1708, 5044,11275,11275,11275,11275,11275, + 5044, 5044,11275, 5044, 803, 803,11275,11275,11275,11275, + 11275, 803, 803, 9429,11275,11275,11275,11275,11275, 9429, + 9429,11275, 9429, 947, 947,11275,11275,11275,11275,11275, + 947, 947, 959, 959,11275,11275,11275,11275,11275, 959, + 959, 965, 965,11275,11275,11275,11275,11275, 965, 965, + + 1812, 1812,11275,11275,11275,11275,11275, 1812, 1812, 1007, + 11275,11275,11275,11275,11275,11275, 1007, 1007, 1007, 1007, + 11275,11275,11275,11275,11275, 1007, 1007, 4585,11275,11275, + 11275,11275, 4585,11275,11275,11275,11275,11275, 4585, 4585, + 11275, 4585, 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, + 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, + 9536, 9536, 9536, 9536, 9536, 9536, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 1121,11275,11275,11275,11275,11275, + 11275,11275,11275, 1121,11275,11275,11275,11275,11275, 1121, + 1121, 9639,11275,11275,11275,11275, 9639,11275,11275, 9639, + 9639, 9639, 9639, 9639, 9639, 9639, 9639,11275, 9639, 9639, + 9639, 9639, 9639, 2173, 2173,11275,11275,11275,11275,11275, + 2173, 2173, 674,11275,11275,11275,11275,11275,11275, 674, + 674, 674, 674,11275,11275,11275,11275,11275, 674, 674, + 2258, 2258,11275,11275,11275,11275,11275, 2258, 2258, 9685, + 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, + + 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, + 9685, 9685, 9685, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1331, 1331, 1331, 1331,11275,11275,11275,11275,11275, + 11275,11275,11275, 1331, 1331,11275,11275,11275,11275,11275, + 1331, 1331, 1331, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 6798,11275,11275, + 11275,11275, 6798,11275,11275,11275,11275,11275, 6798, 6798, + 11275, 6798, 6853, 6853, 6853, 6853, 6853, 6853, 6853,11275, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10142,10142,10142,10142,10158,10158,11275,11275,11275,11275, + + 11275,10158,10158,11275,10158,10161,10161,10161,10161,10161, + 10161,10161,10161,10161,10161,10161,10161,10161,10161,10161, + 10161,10161,10161,10161,10161,10161,10161,10161,10161,10171, + 10171,10171,10171,10171,10171,10171,10171,10171,10171,10171, + 10171,10171,10171,10171,10171,10171,10171,10171,10171,10171, + 10171,10171,10171,10177,11275,11275,11275,11275,11275,10177, + 10177,11275,10177,10200,10200,10200,10200,10200,10200,10200, + 10200,10200,10200,10200,10200,10200,10200,10200,10200,10200, + 10200,10200,10200,10200,10200,10200,10200,10215,10215,10215, + 10215,10215,10215,10215,10215,10215,10215,10215,10215,10215, + + 10215,10215,10215,10215,10215,10215,10215,10215,10215,11275, + 10215, 724,11275,11275,11275,11275,11275,11275, 724, 724, + 724, 724,11275,11275,11275,11275,11275, 724, 724, 1692, + 1692,11275,11275,11275,11275,11275, 1692, 1692,10259,10259, + 10259,10259,10259,10259,10259,10259,10259,10259,10259,10259, + 10259,10259,10259,10259,10259,10259,10259,10259,10259,10259, + 10259,10259, 5044,11275,11275,11275,11275,11275, 5044, 5044, + 11275, 5044, 947, 947,11275,11275,11275,11275,11275, 947, + 947, 959, 959,11275,11275,11275,11275,11275, 959, 959, + 965, 965,11275,11275,11275,11275,11275, 965, 965, 1812, + + 1812, 1812, 1812,11275,11275,11275,11275,11275,11275,11275, + 11275, 1812, 1812,11275,11275,11275,11275,11275, 1812, 1812, + 1812, 1007,11275,11275,11275,11275,11275,11275, 1007, 1007, + 1007, 1007,11275,11275,11275,11275,11275, 1007, 1007, 4585, + 11275,11275,11275,11275, 4585,11275,11275,11275,11275,11275, + 4585, 4585,11275, 4585,10320,10320,10320,10320,10320,10320, + 10320,10320,10320,10320,10320,10320,10320,10320,10320,10320, + 10320,10320,10320,10320,10320,10320,10320,10320, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + + 2047, 2047, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061,10363,10363,10363,10363, + 10363,10363,10363,10363,10363,10363,10363,10363,10363,10363, + 10363,10363,10363,10363,10363,10363,10363,10363,10363,10363, + 1121,11275,11275,11275,11275,11275,11275,11275,11275, 1121, + 11275,11275,11275,11275,11275, 1121, 1121, 2173, 2173, 2173, + 2173,11275,11275,11275,11275,11275,11275,11275,11275, 2173, + 2173,11275,11275,11275,11275,11275, 2173, 2173, 2173, 674, + 11275,11275,11275,11275,11275,11275, 674, 674, 674, 674, + + 11275,11275,11275,11275,11275, 674, 674, 2258, 2258,11275, + 11275,11275,11275,11275, 2258, 2258, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264,10417,11275,11275,11275,11275,11275, + 10417,10417,11275,10417, 6853, 6853, 6853, 6853, 6853, 6853, + 6853,11275, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853,10458,10458, + + 10458,10458,10458,10458,10458,11275,10458,10458,10458,10458, + 10458,10458,10458,10458,10458,10458,10458,10458,10458,10458, + 10458,10458, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792,10142,10142,10142,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10158,10158,11275,11275,11275,11275,11275,10158,10158,11275, + 10158,10161,10161,10161,10161,10161,10161,10161,10161,10161, + 10161,10161,10161,10161,10161,10161,10161,10161,10161,10161, + + 10161,10161,10161,10161,10161,10171,10171,10171,10171,10171, + 10171,10171,10171,10171,10171,10171,10171,10171,10171,10171, + 10171,10171,10171,10171,10171,10171,10171,10171,10171, 1331, + 1331,11275,11275,11275,11275,11275, 1331, 1331,10177,11275, + 11275,11275,11275,11275,10177,10177,11275,10177, 1326,11275, + 11275,11275,11275,11275, 1326, 1326, 1326,11275, 1326,11275, + 11275,11275,11275,11275, 1326, 1326,10494,11275,11275,11275, + 11275,11275,10494,10494,11275,10494,10200,10200,10200,10200, + 10200,10200,10200,10200,10200,10200,10200,10200,10200,10200, + 10200,10200,10200,10200,10200,10200,10200,10200,10200,10200, + + 10215,10215,10215,10215,10215,10215,10215,10215,10215,10215, + 10215,10215,10215,10215,10215,10215,10215,10215,10215,10215, + 10215,10215,11275,10215, 724,11275,11275,11275,11275,11275, + 11275, 724, 724, 724, 724,11275,11275,11275,11275,11275, + 724, 724,10259,10259,10259,10259,10259,10259,10259,10259, + 10259,10259,10259,10259,10259,10259,10259,10259,10259,10259, + 10259,10259,10259,10259,10259,10259, 5044,11275,11275,11275, + 11275,11275, 5044, 5044,11275, 5044, 965, 965,11275,11275, + 11275,11275,11275, 965, 965, 1007,11275,11275,11275,11275, + 11275,11275, 1007, 1007, 1007, 1007,11275,11275,11275,11275, + + 11275, 1007, 1007, 4585,11275,11275,11275,11275, 4585,11275, + 11275,11275,11275,11275, 4585, 4585,11275, 4585, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257,10320,10320,10320,10320,10320,10320,10320,10320, + 10320,10320,10320,10320,10320,10320,10320,10320,10320,10320, + 10320,10320,10320,10320,10320,10320, 1812, 1812,11275,11275, + 11275,11275,11275, 1812, 1812, 1808,11275,11275,11275,11275, + 11275, 1808, 1808, 1808,11275, 1808,11275,11275,11275,11275, + 11275, 1808, 1808, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061,10363,10363,10363,10363,10363,10363,10363,10363,10363, + 10363,10363,10363,10363,10363,10363,10363,10363,10363,10363, + 10363,10363,10363,10363,10363, 1121,11275,11275,11275,11275, + 11275,11275,11275,11275, 1121,11275,11275,11275,11275,11275, + 1121, 1121, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + + 8426, 8426, 8426, 8426, 8426, 8426, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 10417,11275,11275,11275,11275,11275,10417,10417,11275,10417, + 6798,11275,11275,11275,11275, 6798,11275,11275,11275,11275, + 11275, 6798, 6798,11275, 6798,10678,10678,10678,10678,10678, + 10678,10678,10678,10678,10678,10678,10678,10678,10678,10678, + 10678,10678,10678,10678,10678,10678,10678,10678,10678,10688, + 10688,10688,10688,10688,10688,10688,10688,10688,10688,10688, + 10688,10688,10688,10688,10688,10688,10688,10688,10688,10688, + + 10688,10688,10688, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 11275, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853,10458,10458,10458, + 10458,10458,10458,10458,11275,10458,10458,10458,10458,10458, + 10458,10458,10458,10458,10458,10458,10458,10458,10458,10458, + 10458,10701,10701,10701,10701,10701,10701,10701,11275,10701, + 10701,10701,10701,10701,10701,10701,10701,10701,10701,10701, + 10701,10701,10701,10701,10701,10142,10142,10142,10142,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10720, + + 10720,10720,10720,10720,10720,10720,10720,10720,10720,10720, + 10720,10720,10720,10720,10720,10720,10720,10720,10720,10720, + 10720,10720,10720,10724,10724,10724,10724,10724,10724,10724, + 10724,10724,10724,10724,10724,10724,10724,10724,10724,10724, + 10724,10724,10724,10724,10724,10724,10724,10727,10727,10727, + 10727,10727,10727,10727,10727,10727,10727,10727,10727,10727, + 10727,10727,10727,10727,10727,10727,10727,10727,10727,10727, + 1331, 1331,11275,11275,11275,11275,11275, 1331, 1331,10494, + 11275,11275,11275,11275,11275,10494,10494,11275,10494,10739, + 10739,10739,10739,10739,10739,10739,10739,10739,10739,10739, + + 10739,10739,10739,10739,10739,10739,10739,10739,10739,10739, + 10739,10739,10739,10746,10746,10746,10746,10746,10746,10746, + 10746,10746,10746,10746,10746,10746,10746,10746,10746,10746, + 10746,10746,10746,10746,10746,10746,10746,10753,10753,10753, + 10753,10753,10753,10753,10753,10753,10753,10753,10753,10753, + 10753,10753,10753,10753,10753,10753,10753,10753,10753,10753, + 10753, 724,11275,11275,11275,11275,11275,11275, 724, 724, + 724, 724,11275,11275,11275,11275,11275, 724, 724,10770, + 10770,10770,10770,10770,10770,10770,10770,10770,10770,10770, + 10770,10770,10770,10770,10770,10770,10770,10770,10770,10770, + + 10770,10770,10770,10773,10773,10773,10773,10773,10773,10773, + 10773,10773,10773,10773,10773,10773,10773,10773,10773,10773, + 10773,10773,10773,10773,10773,10773,10773, 965, 965,11275, + 11275,11275,11275,11275, 965, 965, 965, 1007,11275,11275, + 11275,11275,11275,11275, 1007, 1007, 1007, 1007,11275,11275, + 11275,11275,11275, 1007, 1007,10782,10782,11275,10782,10782, + 10782,10782,10782,10782,10782,10782,10782,10782,10782,10782, + 10782,10782,10782,10782,10782,10782,10782,10782,10782, 4585, + 11275,11275,11275,11275, 4585,11275,11275,11275,11275,11275, + 4585, 4585,11275, 4585,10804,10804,10804,10804,10804,10804, + + 10804,10804,10804,10804,10804,10804,10804,10804,10804,10804, + 10804,10804,10804,10804,10804,10804,10804,10804, 1812, 1812, + 11275,11275,11275,11275,11275, 1812, 1812, 1121,11275,11275, + 11275,11275,11275,11275,11275,11275, 1121,11275,11275,11275, + 11275,11275, 1121, 1121, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426,10856,10856, + 10856,10856,10856,10856,10856,10856,10856,10856,10856,10856, + 10856,10856,10856,10856,10856,10856,10856,10856,10856,10856, + 10856, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484,10864,11275,11275,11275,11275, + 11275,10864,10864,11275,10864,10874,10874,10874,10874,10874, + 10874,10874,10874,10874,10874,10874,10874,10874,10874,10874, + 10874,10874,10874,10874,10874,10874,10874,10874,10874,10678, + 10678,10678,10678,10678,10678,10678,10678,10678,10678,10678, + 10678,10678,10678,10678,10678,10678,10678,10678,10678,10678, + 10678,10678,10678,10688,10688,10688,10688,10688,10688,10688, + 10688,10688,10688,10688,10688,10688,10688,10688,10688,10688, + 10688,10688,10688,10688,10688,10688,10688,10887,10887,10887, + + 10887,10887,10887,10887,10887,10887,10887,10887,10887,10887, + 10887,10887,10887,10887,10887,10887,10887,10887,10887,10887, + 10887,10889,10889,10889,10889,10889,10889,10889,10889,10889, + 10889,10889,10889,10889,10889,10889,10889,10889,10889,10889, + 10889,10889,10889,10889,10889,10701,10701,10701,10701,10701, + 10701,10701,11275,10701,10701,10701,10701,10701,10701,10701, + 10701,10701,10701,10701,10701,10701,10701,10701,10701,10458, + 10458,10458,10458,10458,10458,10458,11275,10458,10458,10458, + 10458,10458,10458,10458,10458,10458,10458,10458,10458,10458, + 10458,10458,10458, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + + 11275, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853,10142,10142,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10142, 1326,11275,11275,11275,11275,11275, 1326, 1326, 1326, + 11275, 1326,11275,11275,11275,11275,11275, 1326, 1326,10720, + 10720,10720,10720,10720,10720,10720,10720,10720,10720,10720, + 10720,10720,10720,10720,10720,10720,10720,10720,10720,10720, + 10720,10720,10720,10724,10724,10724,10724,10724,10724,10724, + 10724,10724,10724,10724,10724,10724,10724,10724,10724,10724, + + 10724,10724,10724,10724,10724,10724,10724, 1331, 1331,11275, + 11275,11275,11275,11275, 1331, 1331,10920,10920,10920,10920, + 10920,10920,10920,10920,10920,10920,10920,10920,10920,10920, + 10920,10920,10920,10920,10920,10920,10920,10920,10920,10920, + 10739,10739,10739,10739,10739,10739,10739,10739,10739,10739, + 10739,10739,10739,10739,10739,10739,10739,10739,10739,10739, + 10739,10739,10739,10739,10746,10746,10746,10746,10746,10746, + 10746,10746,10746,10746,10746,10746,10746,10746,10746,10746, + 10746,10746,10746,10746,10746,10746,10746,10746,10753,10753, + 10753,10753,10753,10753,10753,10753,10753,10753,10753,10753, + + 10753,10753,10753,10753,10753,10753,10753,10753,10753,10753, + 10753,10753, 724,11275,11275,11275,11275,11275,11275, 724, + 724, 724, 724,11275,11275,11275,11275,11275, 724, 724, + 10770,10770,10770,10770,10770,10770,10770,10770,10770,10770, + 10770,10770,10770,10770,10770,10770,10770,10770,10770,10770, + 10770,10770,10770,10770,10773,10773,10773,10773,10773,10773, + 10773,10773,10773,10773,10773,10773,10773,10773,10773,10773, + 10773,10773,10773,10773,10773,10773,10773,10773, 1007,11275, + 11275,11275,11275,11275,11275, 1007, 1007, 1007, 1007,11275, + 11275,11275,11275,11275, 1007, 1007, 1808,11275,11275,11275, + + 11275,11275, 1808, 1808, 1808,11275, 1808,11275,11275,11275, + 11275,11275, 1808, 1808,10804,10804,10804,10804,10804,10804, + 10804,10804,10804,10804,10804,10804,10804,10804,10804,10804, + 10804,10804,10804,10804,10804,10804,10804,10804, 1812, 1812, + 11275,11275,11275,11275,11275, 1812, 1812, 1121,11275,11275, + 11275,11275,11275,11275,11275,11275, 1121,11275,11275,11275, + 11275,11275, 1121, 1121, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426,10856,10856, + 10856,10856,10856,10856,10856,10856,10856,10856,10856,10856, + + 10856,10856,10856,10856,10856,10856,10856,10856,10856,10856, + 10856, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484,10864,11275,11275,11275,11275, + 11275,10864,10864,11275,10864,10874,10874,10874,10874,10874, + 10874,10874,10874,10874,10874,10874,10874,10874,10874,10874, + 10874,10874,10874,10874,10874,10874,10874,10874,10874,10887, + 10887,10887,10887,10887,10887,10887,10887,10887,10887,10887, + 10887,10887,10887,10887,10887,10887,10887,10887,10887,10887, + 10887,10887,10887,10889,10889,10889,10889,10889,10889,10889, + + 10889,10889,10889,10889,10889,10889,10889,10889,10889,10889, + 10889,10889,10889,10889,10889,10889,10889,10701,10701,10701, + 10701,10701,10701,10701,11275,10701,10701,10701,10701,10701, + 10701,10701,10701,10701,10701,10701,10701,10701,10701,10701, + 10701,10458,10458,10458,10458,10458,10458,10458,11275,10458, + 10458,10458,10458,10458,10458,10458,10458,10458,10458,10458, + 10458,10458,10458,10458,10458, 6853, 6853, 6853, 6853, 6853, + 6853, 6853,11275, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10142,10142,10142,11035,11035,11035,11035,11035,11035,11035, + 11035,11035,11035,11035,11035,11035,11035,11035,11035,11035, + 11035,11035,11035,11035,11035,11035,11035,11037,11037,11037, + 11037,11037,11037,11037,11037,11037,11037,11037,11037,11037, + 11037,11037,11037,11037,11037,11037,11037,11037,11037,11037, + 11037, 1331,11275,11275,11275,11275,11275,11275,11275,11275, + 1331, 1331,11275,11275,11275,11275,11275, 1331, 1331, 1331, + 10920,10920,10920,10920,10920,10920,10920,10920,10920,10920, + 10920,10920,10920,10920,10920,10920,10920,10920,10920,10920, + + 10920,10920,10920,10920, 724,11275,11275,11275,11275,11275, + 11275, 724, 724, 724, 724,11275,11275,11275,11275,11275, + 724, 724, 1007,11275,11275,11275,11275,11275,11275, 1007, + 1007, 1007, 1007,11275,11275,11275,11275,11275, 1007, 1007, + 1812,11275,11275,11275,11275,11275,11275,11275,11275, 1812, + 1812,11275,11275,11275,11275,11275, 1812, 1812, 1812,11077, + 11077,11275,11275,11275,11275,11275,11077,11077,11275,11077, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 6798,11275,11275,11275,11275, 6798, + + 11275,11275,11275,11275,11275, 6798, 6798,11275, 6798,11114, + 11114,11114,11114,11114,11114,11114,11114,11114,11114,11114, + 11114,11114,11114,11114,11114,11114,11114,11114,11114,11114, + 11114,11114,11114,11116,11116,11116,11116,11116,11116,11116, + 11116,11116,11116,11116,11116,11116,11116,11116,11116,11116, + 11116,11116,11116,11116,11116,11116,11116,11124,11124,11124, + 11124,11124,11124,11124,11124,11124,11124,11124,11124,11124, + 11124,11124,11124,11124,11124,11124,11124,11124,11124,11124, + 11124,11203,11203,11203,11203,11203,11203,11203,11203,11203, + 11203,11203,11203,11203,11203,11203,11203,11203,11203,11203, + + 11203,11203,11203,11203,11203,11238,11275,11275,11275,11275, + 11275,11238,11238,11275,11238,11265,11265,11265,11265,11265, + 11265,11265,11265,11265,11265,11265,11265,11265,11265,11265, + 11265,11265,11265,11265,11265,11265,11265,11265,11265,11273, + 11273,11273,11273,11273,11273,11273,11273,11273,11273,11273, + 11273,11273,11273,11273,11273,11273,11273,11273,11273,11273, + 11273,11273,11273, 181,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275 + } ; + +static yyconst flex_int16_t yy_chk[45258] = + { 0, + 0, 0, 1, 1, 1, 1, 73, 1, 1, 1, + 1, 1, 1, 19, 19, 20, 20, 91, 1, 3, + 3, 3, 4, 4, 4, 11, 5, 5, 92, 1, + 59, 1, 5, 6, 6, 25, 189, 189, 26, 6, + 35, 7, 7, 7, 7, 35, 36, 7, 903, 7, + 12, 36, 9, 9, 9, 9, 1860, 74, 1, 60, + 9, 73, 1, 8, 8, 8, 8, 91, 93, 8, + 93, 8, 15, 15, 3, 16, 16, 4, 92, 0, + 11, 5, 25, 25, 25, 26, 26, 26, 6, 1, + 1, 1, 1, 2, 2, 2, 2, 7, 2, 2, + + 2, 2, 2, 2, 77, 12, 69, 3, 9, 2, + 4, 11, 74, 10, 10, 10, 10, 93, 59, 8, + 2, 10, 2, 13, 13, 13, 13, 15, 7, 903, + 16, 13, 14, 14, 14, 14, 12, 23, 69, 9, + 14, 302, 70, 78, 17, 17, 17, 60, 24, 2, + 8, 302, 17, 2, 27, 27, 28, 28, 15, 77, + 15, 16, 247, 16, 247, 18, 18, 18, 259, 10, + 17, 259, 17, 18, 70, 214, 214, 29, 29, 13, + 2, 2, 2, 2, 29, 23, 21, 21, 14, 22, + 22, 18, 21, 18, 21, 22, 24, 22, 78, 17, + + 10, 30, 30, 147, 147, 1862, 31, 31, 30, 27, + 13, 28, 21, 31, 21, 22, 23, 22, 23, 14, + 18, 32, 32, 49, 49, 49, 49, 24, 32, 24, + 33, 33, 29, 34, 34, 33, 127, 33, 34, 538, + 34, 21, 51, 51, 22, 45, 97, 45, 45, 51, + 45, 45, 45, 45, 45, 45, 30, 46, 147, 46, + 46, 31, 46, 46, 46, 46, 46, 46, 50, 50, + 50, 50, 52, 52, 219, 219, 32, 98, 1298, 52, + 53, 53, 53, 53, 127, 33, 620, 45, 34, 41, + 41, 41, 41, 229, 229, 97, 538, 51, 620, 46, + + 54, 54, 54, 54, 242, 125, 67, 67, 41, 41, + 41, 41, 41, 41, 107, 108, 41, 41, 41, 242, + 173, 55, 55, 55, 55, 908, 98, 52, 51, 94, + 51, 94, 56, 56, 56, 56, 53, 126, 148, 148, + 308, 63, 63, 63, 63, 41, 42, 42, 42, 42, + 128, 57, 57, 57, 57, 125, 54, 308, 52, 57, + 52, 67, 1298, 107, 108, 42, 42, 42, 42, 42, + 42, 248, 248, 42, 42, 42, 908, 55, 94, 55, + 55, 58, 58, 58, 58, 145, 125, 126, 56, 58, + 56, 56, 67, 148, 67, 146, 530, 63, 128, 173, + + 1874, 173, 42, 43, 43, 43, 43, 57, 174, 43, + 55, 64, 64, 64, 64, 262, 262, 43, 126, 43, + 43, 56, 43, 43, 43, 43, 43, 43, 63, 264, + 264, 43, 795, 145, 795, 68, 68, 58, 57, 61, + 61, 61, 61, 146, 265, 61, 1878, 61, 62, 62, + 62, 62, 123, 123, 62, 284, 62, 123, 284, 43, + 44, 44, 44, 44, 269, 269, 44, 64, 58, 119, + 119, 119, 119, 530, 44, 304, 44, 44, 429, 44, + 44, 44, 44, 44, 44, 429, 304, 174, 44, 174, + 68, 1879, 81, 312, 61, 61, 312, 81, 64, 81, + + 81, 82, 265, 62, 62, 265, 82, 123, 82, 82, + 249, 115, 1882, 115, 317, 317, 44, 47, 47, 47, + 47, 68, 533, 68, 119, 119, 61, 318, 116, 533, + 116, 47, 79, 47, 47, 62, 47, 47, 47, 47, + 47, 47, 417, 79, 417, 79, 79, 81, 79, 79, + 79, 79, 79, 79, 325, 782, 82, 79, 249, 417, + 325, 115, 129, 129, 129, 129, 782, 85, 85, 85, + 85, 1889, 325, 47, 325, 85, 338, 338, 116, 47, + 47, 47, 47, 47, 335, 79, 47, 335, 415, 249, + 47, 249, 115, 47, 115, 1890, 47, 47, 75, 75, + + 75, 75, 86, 86, 86, 86, 318, 415, 318, 116, + 86, 116, 75, 80, 75, 75, 79, 75, 75, 75, + 75, 75, 75, 85, 80, 383, 80, 80, 386, 80, + 80, 80, 80, 80, 80, 392, 392, 1537, 80, 87, + 87, 87, 87, 88, 88, 88, 88, 87, 151, 151, + 383, 88, 405, 386, 75, 405, 85, 1537, 86, 362, + 75, 89, 89, 89, 89, 1896, 80, 401, 401, 89, + 90, 90, 90, 90, 101, 101, 101, 101, 90, 408, + 408, 101, 101, 412, 412, 75, 76, 76, 76, 76, + 362, 86, 362, 427, 427, 87, 151, 80, 502, 88, + + 76, 502, 76, 76, 539, 76, 76, 76, 76, 76, + 76, 102, 102, 102, 102, 124, 124, 89, 102, 102, + 124, 130, 130, 130, 130, 1897, 90, 151, 381, 151, + 101, 103, 103, 103, 103, 454, 454, 381, 103, 103, + 113, 113, 76, 104, 104, 104, 104, 113, 76, 381, + 104, 104, 105, 105, 105, 105, 117, 539, 117, 105, + 105, 106, 106, 106, 106, 114, 114, 102, 106, 106, + 124, 652, 114, 76, 83, 83, 83, 83, 761, 83, + 83, 83, 83, 83, 83, 761, 118, 103, 118, 484, + 83, 120, 120, 120, 120, 113, 652, 152, 152, 104, + + 235, 83, 235, 83, 484, 117, 117, 117, 105, 139, + 139, 139, 139, 121, 121, 121, 121, 106, 470, 470, + 114, 121, 140, 140, 140, 140, 113, 171, 113, 171, + 83, 534, 254, 1898, 83, 118, 118, 118, 475, 475, + 122, 122, 122, 122, 534, 152, 120, 120, 122, 566, + 235, 114, 566, 114, 141, 141, 141, 141, 810, 235, + 810, 83, 83, 83, 83, 84, 84, 84, 84, 121, + 84, 84, 84, 84, 84, 84, 152, 171, 152, 906, + 254, 84, 139, 263, 906, 139, 167, 167, 167, 167, + 486, 486, 84, 471, 84, 140, 122, 471, 140, 814, + + 121, 814, 121, 168, 168, 168, 168, 471, 171, 209, + 171, 254, 209, 254, 843, 209, 209, 843, 141, 860, + 209, 84, 141, 209, 808, 84, 209, 122, 808, 122, + 280, 280, 280, 280, 280, 280, 860, 141, 490, 490, + 263, 263, 1572, 289, 263, 289, 289, 289, 289, 289, + 289, 1572, 84, 84, 84, 84, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 99, + 99, 99, 99, 99, 856, 99, 99, 99, 99, 99, + 99, 179, 179, 179, 179, 856, 99, 157, 157, 157, + 157, 327, 327, 327, 327, 505, 505, 99, 854, 99, + 158, 158, 158, 158, 328, 328, 328, 328, 854, 142, + 142, 142, 142, 329, 329, 329, 329, 519, 519, 159, + + 159, 159, 159, 149, 150, 143, 99, 845, 144, 845, + 99, 149, 150, 578, 578, 143, 143, 179, 144, 144, + 513, 143, 143, 157, 144, 144, 160, 160, 160, 160, + 580, 580, 870, 149, 150, 870, 158, 99, 99, 99, + 99, 100, 100, 100, 100, 100, 1617, 100, 100, 100, + 100, 100, 100, 142, 157, 159, 1617, 142, 100, 143, + 143, 143, 144, 144, 144, 149, 150, 158, 893, 100, + 513, 100, 142, 1262, 149, 150, 606, 606, 149, 150, + 149, 150, 160, 609, 609, 1262, 159, 172, 220, 172, + 149, 150, 143, 893, 513, 144, 348, 348, 100, 613, + + 613, 348, 100, 163, 163, 163, 163, 169, 169, 169, + 169, 623, 623, 160, 1201, 169, 163, 170, 170, 170, + 170, 180, 180, 180, 180, 170, 270, 646, 646, 100, + 100, 100, 100, 109, 163, 890, 624, 172, 890, 109, + 624, 109, 220, 220, 624, 220, 220, 670, 220, 373, + 373, 373, 373, 220, 220, 670, 768, 768, 220, 163, + 220, 220, 220, 169, 775, 775, 163, 1201, 172, 670, + 172, 476, 720, 170, 476, 163, 720, 180, 476, 163, + 720, 163, 348, 270, 270, 785, 785, 270, 476, 476, + 109, 163, 923, 270, 923, 109, 109, 109, 109, 109, + + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 1905, 109, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 131, 131, 131, + 131, 1102, 131, 131, 131, 131, 131, 131, 183, 183, + 183, 183, 1907, 131, 805, 805, 183, 184, 184, 184, + 184, 824, 824, 664, 131, 184, 131, 185, 185, 185, + 185, 374, 374, 374, 374, 185, 164, 164, 164, 164, + 434, 434, 434, 434, 201, 201, 201, 201, 879, 164, + 413, 413, 201, 131, 413, 664, 664, 131, 413, 1606, + 202, 202, 202, 202, 183, 413, 879, 164, 202, 203, + 203, 203, 203, 184, 949, 1606, 949, 203, 218, 218, + + 218, 218, 1102, 185, 131, 131, 131, 131, 132, 132, + 132, 132, 164, 132, 132, 132, 132, 132, 132, 164, + 201, 409, 409, 957, 132, 409, 957, 788, 164, 409, + 788, 409, 164, 1909, 164, 132, 202, 132, 206, 206, + 206, 206, 788, 349, 164, 203, 206, 207, 207, 207, + 207, 246, 1484, 282, 246, 207, 246, 349, 349, 349, + 349, 349, 282, 282, 132, 460, 1912, 933, 132, 282, + 288, 282, 288, 288, 282, 288, 288, 288, 288, 288, + 288, 1484, 934, 686, 292, 218, 292, 292, 292, 292, + 292, 292, 933, 686, 206, 132, 132, 132, 132, 186, + + 1644, 942, 972, 207, 246, 330, 330, 934, 809, 330, + 246, 809, 330, 246, 942, 972, 186, 246, 186, 460, + 330, 186, 460, 809, 1536, 186, 246, 246, 246, 186, + 935, 992, 935, 186, 460, 686, 1913, 293, 186, 293, + 293, 293, 293, 293, 293, 426, 426, 426, 426, 186, + 186, 1130, 426, 1536, 186, 1106, 992, 1130, 186, 441, + 441, 441, 441, 1644, 186, 978, 441, 978, 186, 978, + 186, 1914, 935, 978, 186, 1062, 1062, 186, 195, 978, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 1066, + 1066, 195, 195, 195, 195, 195, 195, 195, 195, 195, + + 195, 195, 195, 195, 1106, 195, 195, 1915, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 1917, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 1575, 195, 195, 204, 1575, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 1073, + 1073, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 1109, 204, 204, 1109, 204, 204, + + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 1918, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 1527, 204, 204, 230, 230, + 230, 1527, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 295, 295, 295, 295, 298, 1104, 298, 298, 298, + 298, 298, 298, 347, 347, 347, 347, 347, 347, 296, + 296, 296, 296, 299, 1919, 299, 299, 299, 299, 299, + 299, 1122, 394, 1103, 394, 394, 1560, 297, 297, 297, + 297, 344, 344, 344, 344, 1920, 1002, 344, 1263, 345, + + 345, 345, 345, 1263, 1002, 345, 346, 346, 346, 346, + 1076, 1076, 346, 295, 295, 295, 295, 295, 1002, 1202, + 295, 1063, 1111, 1111, 295, 1063, 1202, 295, 1104, 1063, + 295, 296, 296, 296, 296, 296, 1202, 1104, 296, 394, + 1132, 1132, 296, 1585, 394, 296, 344, 1103, 296, 297, + 297, 297, 297, 297, 345, 1122, 297, 1585, 394, 1638, + 297, 346, 1560, 297, 1103, 1638, 297, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 1564, 350, 350, 350, + 356, 356, 356, 356, 375, 1252, 375, 375, 1564, 375, + 375, 375, 375, 375, 375, 376, 1252, 376, 376, 376, + 376, 376, 376, 384, 1164, 384, 384, 1924, 384, 384, + 384, 384, 384, 384, 385, 1324, 385, 385, 385, 385, + + 385, 385, 402, 1272, 402, 402, 1925, 402, 402, 1164, + 356, 1161, 402, 402, 402, 602, 602, 602, 602, 402, + 880, 880, 880, 880, 1161, 384, 396, 1324, 396, 396, + 396, 396, 396, 396, 396, 396, 396, 1264, 1264, 396, + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 1272, 396, 396, 1927, 396, 396, 396, 396, + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 1157, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, + + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 396, 1176, 396, 396, 419, 419, 419, 419, + 420, 420, 420, 420, 419, 487, 1273, 1105, 420, 421, + 421, 421, 421, 422, 422, 422, 422, 421, 610, 1928, + 610, 422, 1279, 1279, 419, 1176, 1176, 1933, 420, 432, + 432, 432, 432, 432, 432, 1280, 1280, 421, 1282, 1157, + 1284, 422, 449, 449, 449, 449, 450, 450, 450, 450, + 449, 1824, 419, 487, 450, 1273, 420, 479, 466, 466, + 466, 466, 479, 1282, 1105, 421, 466, 1273, 610, 422, + 424, 467, 467, 467, 467, 468, 468, 468, 468, 467, + + 1824, 1023, 1359, 468, 487, 1184, 487, 424, 1105, 424, + 1243, 1023, 424, 1284, 1325, 1184, 424, 1243, 449, 610, + 424, 610, 450, 1280, 424, 472, 472, 472, 472, 424, + 479, 674, 479, 472, 466, 678, 1589, 479, 1826, 1325, + 424, 424, 1534, 1360, 1284, 424, 1534, 467, 1534, 424, + 1589, 468, 479, 1023, 1359, 424, 678, 1184, 1826, 424, + 674, 424, 479, 674, 678, 424, 674, 678, 424, 437, + 678, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 472, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 1360, 437, 437, 1935, 437, + + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 473, + 473, 473, 473, 474, 474, 474, 474, 473, 1571, 512, + 1571, 474, 1571, 1591, 495, 607, 1591, 491, 520, 520, + 520, 520, 1326, 512, 512, 512, 512, 512, 516, 1328, + 516, 516, 676, 516, 516, 881, 881, 881, 881, 516, + + 1936, 527, 527, 527, 527, 516, 1556, 1326, 1938, 527, + 528, 528, 528, 528, 1328, 473, 1329, 1556, 528, 474, + 477, 676, 495, 1676, 676, 491, 1676, 676, 520, 1576, + 607, 495, 607, 676, 491, 607, 1576, 477, 1583, 477, + 607, 1329, 477, 512, 1466, 1940, 477, 607, 607, 491, + 477, 491, 1844, 495, 477, 495, 491, 527, 491, 477, + 586, 586, 586, 586, 1328, 1941, 528, 1592, 1592, 1466, + 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, + 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, + 477, 477, 477, 477, 477, 477, 477, 561, 477, 529, + + 547, 547, 547, 547, 1327, 1844, 529, 561, 542, 1577, + 542, 1583, 1942, 561, 673, 1602, 586, 561, 588, 588, + 588, 588, 561, 529, 561, 529, 1577, 1602, 529, 1327, + 1182, 542, 529, 1663, 675, 679, 529, 542, 542, 1663, + 529, 542, 1686, 673, 542, 529, 673, 542, 542, 673, + 835, 835, 835, 835, 835, 835, 529, 529, 1686, 673, + 1182, 529, 1327, 675, 679, 529, 675, 679, 1182, 675, + 679, 529, 675, 547, 588, 529, 547, 529, 1225, 1225, + 1225, 529, 1182, 1225, 529, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 551, 551, + 551, 551, 621, 621, 621, 621, 680, 1598, 681, 1598, + 621, 622, 622, 622, 622, 625, 625, 625, 625, 622, + + 1943, 1552, 1552, 625, 647, 647, 647, 647, 648, 648, + 648, 648, 647, 681, 666, 680, 648, 681, 680, 1552, + 681, 680, 846, 681, 846, 846, 846, 846, 846, 846, + 666, 666, 666, 666, 666, 666, 1599, 667, 621, 666, + 682, 677, 551, 1619, 696, 1946, 551, 622, 1619, 677, + 1599, 625, 1107, 667, 667, 667, 667, 667, 667, 1621, + 647, 551, 667, 1621, 648, 654, 904, 904, 696, 682, + 677, 904, 682, 696, 1756, 682, 696, 666, 677, 696, + 683, 677, 696, 1796, 677, 718, 718, 718, 718, 1629, + 1629, 666, 1796, 718, 654, 1658, 677, 684, 654, 1074, + + 667, 1107, 654, 1074, 699, 1658, 654, 1074, 683, 683, + 1753, 654, 683, 700, 667, 683, 1107, 1074, 654, 1226, + 1226, 1226, 684, 654, 1226, 1756, 684, 654, 1654, 684, + 690, 654, 684, 699, 1562, 1753, 699, 654, 700, 699, + 724, 718, 700, 654, 1755, 700, 1509, 654, 700, 654, + 659, 690, 904, 690, 690, 690, 1635, 703, 1562, 690, + 700, 1949, 690, 1562, 690, 690, 690, 1635, 690, 724, + 704, 1509, 724, 1450, 1622, 724, 1630, 1450, 703, 659, + 1630, 659, 703, 659, 1901, 712, 703, 659, 1622, 703, + 659, 659, 703, 1950, 659, 713, 659, 1623, 703, 1901, + + 659, 659, 1450, 659, 1654, 1613, 1450, 704, 659, 712, + 659, 1623, 659, 1642, 712, 1642, 659, 712, 1509, 713, + 712, 659, 659, 1805, 713, 1755, 659, 713, 659, 704, + 713, 704, 659, 659, 659, 671, 704, 687, 1952, 704, + 1631, 1631, 704, 704, 1648, 704, 1612, 1612, 1805, 704, + 695, 671, 671, 671, 671, 671, 671, 723, 1648, 1612, + 671, 1649, 1649, 671, 671, 1656, 687, 1613, 671, 1656, + 687, 695, 695, 695, 687, 1674, 1664, 1613, 687, 695, + 1664, 1613, 695, 687, 1757, 695, 723, 1674, 695, 723, + 687, 729, 723, 1857, 671, 687, 671, 1728, 671, 687, + + 1728, 1573, 723, 687, 671, 1573, 1858, 1573, 671, 687, + 1573, 671, 671, 672, 692, 687, 773, 773, 773, 773, + 729, 687, 689, 729, 1870, 706, 729, 1650, 1870, 672, + 672, 672, 672, 672, 672, 692, 1650, 1689, 672, 692, + 1650, 672, 692, 692, 1650, 1857, 692, 1668, 1689, 692, + 672, 689, 692, 692, 706, 689, 1672, 706, 1858, 689, + 706, 1668, 706, 689, 1618, 1757, 706, 1607, 689, 1618, + 1672, 1607, 672, 1607, 672, 689, 672, 1953, 1607, 672, + 689, 1607, 672, 1618, 689, 672, 672, 691, 689, 672, + 672, 691, 691, 691, 689, 691, 693, 1772, 691, 691, + + 689, 691, 1782, 773, 691, 702, 689, 1782, 1772, 694, + 719, 719, 719, 719, 1881, 1958, 1749, 693, 719, 1749, + 693, 693, 1807, 698, 1881, 693, 702, 702, 693, 702, + 702, 693, 693, 694, 702, 701, 694, 702, 694, 694, + 702, 694, 694, 694, 694, 694, 1964, 1807, 1872, 698, + 698, 694, 698, 694, 697, 698, 701, 698, 698, 701, + 701, 1872, 1776, 698, 701, 1776, 719, 701, 730, 725, + 701, 922, 922, 922, 922, 697, 697, 697, 1847, 697, + 697, 697, 701, 697, 705, 707, 697, 1784, 1789, 697, + 1784, 1789, 697, 697, 697, 697, 1970, 730, 725, 697, + + 730, 725, 710, 730, 725, 705, 707, 725, 1866, 705, + 707, 1866, 1798, 705, 707, 1861, 705, 707, 707, 705, + 707, 1670, 705, 705, 1798, 1670, 707, 1670, 728, 1861, + 1798, 710, 707, 708, 710, 1971, 710, 710, 710, 1847, + 710, 710, 895, 895, 895, 895, 895, 895, 726, 728, + 709, 1884, 716, 1884, 708, 708, 708, 728, 708, 708, + 728, 1976, 708, 728, 708, 708, 708, 732, 708, 708, + 1977, 709, 708, 708, 708, 709, 727, 726, 709, 709, + 726, 716, 709, 726, 727, 709, 731, 1808, 709, 726, + 709, 711, 716, 716, 1639, 1639, 732, 733, 1639, 732, + + 1639, 1900, 732, 1980, 1930, 727, 741, 1643, 734, 1643, + 716, 731, 1808, 727, 1643, 731, 727, 1811, 731, 727, + 1930, 731, 1945, 716, 716, 733, 733, 744, 711, 733, + 741, 727, 733, 734, 1687, 741, 716, 734, 741, 1945, + 734, 741, 1811, 734, 741, 1657, 745, 1005, 1683, 711, + 711, 711, 1981, 711, 711, 1825, 744, 711, 1873, 744, + 711, 1885, 744, 711, 711, 1837, 711, 711, 711, 721, + 1837, 745, 1683, 1885, 1900, 745, 1005, 1683, 745, 1005, + 735, 745, 1005, 1926, 1825, 721, 721, 721, 721, 721, + 721, 1007, 1005, 745, 721, 1926, 1687, 721, 721, 1983, + + 738, 735, 721, 735, 735, 735, 1687, 1657, 1006, 735, + 1687, 1657, 735, 1657, 735, 735, 735, 1876, 735, 1910, + 1007, 738, 1910, 1007, 738, 738, 1007, 1986, 721, 738, + 721, 1876, 738, 1006, 1873, 738, 738, 1006, 721, 1987, + 1006, 1012, 721, 1006, 736, 721, 721, 722, 736, 736, + 736, 1988, 736, 737, 1010, 736, 736, 1902, 736, 1863, + 1863, 736, 1012, 722, 722, 722, 722, 722, 722, 1991, + 1012, 1902, 722, 1012, 737, 722, 1012, 1863, 737, 900, + 740, 737, 737, 1010, 722, 737, 1010, 1010, 737, 1010, + 1993, 737, 737, 900, 900, 900, 900, 900, 739, 1759, + + 1759, 740, 740, 740, 1759, 1868, 722, 1868, 722, 740, + 1994, 1868, 740, 722, 1810, 740, 722, 751, 740, 722, + 722, 743, 739, 722, 722, 739, 1921, 739, 739, 1921, + 739, 739, 739, 739, 739, 896, 896, 896, 896, 1810, + 739, 896, 739, 742, 1899, 1960, 751, 743, 743, 751, + 743, 1899, 751, 743, 751, 743, 743, 1667, 751, 1667, + 1904, 743, 757, 1667, 742, 742, 742, 1995, 742, 742, + 742, 746, 742, 1908, 1904, 742, 749, 1667, 742, 1009, + 747, 742, 742, 742, 742, 1759, 757, 1908, 742, 1810, + 896, 757, 746, 1875, 757, 746, 746, 757, 748, 1013, + + 746, 747, 747, 746, 747, 747, 746, 1960, 1009, 747, + 1865, 1009, 747, 749, 1009, 747, 1809, 1875, 746, 748, + 1009, 1865, 1875, 748, 1016, 750, 1997, 748, 1013, 1906, + 748, 1013, 1013, 748, 1013, 749, 1906, 749, 1923, 748, + 752, 1809, 749, 1871, 1871, 749, 750, 758, 749, 749, + 750, 749, 1923, 1016, 750, 749, 1016, 750, 1871, 1016, + 750, 752, 1961, 750, 750, 752, 1867, 1978, 754, 752, + 764, 758, 752, 752, 1809, 752, 758, 1867, 1978, 758, + 1998, 752, 758, 977, 977, 977, 977, 752, 753, 754, + 1883, 764, 764, 754, 764, 764, 754, 754, 1883, 764, + + 754, 755, 764, 754, 1883, 764, 754, 2003, 754, 753, + 753, 753, 1822, 753, 753, 1929, 1822, 753, 1822, 753, + 753, 753, 1929, 753, 753, 1021, 1877, 753, 753, 753, + 755, 1961, 1877, 755, 1877, 755, 755, 755, 1877, 755, + 755, 756, 759, 759, 759, 759, 1947, 760, 763, 2005, + 759, 760, 760, 760, 1021, 760, 1947, 1021, 760, 760, + 1021, 760, 1990, 849, 760, 849, 849, 849, 849, 849, + 849, 1944, 1944, 1018, 763, 763, 1944, 763, 756, 1990, + 763, 1962, 763, 763, 851, 851, 851, 851, 763, 863, + 765, 863, 863, 863, 863, 863, 863, 1962, 759, 756, + + 756, 756, 1018, 756, 756, 1018, 1975, 756, 1018, 1018, + 756, 765, 1975, 756, 756, 765, 756, 756, 756, 765, + 1845, 1984, 765, 1014, 1845, 765, 1845, 1984, 765, 765, + 852, 852, 852, 852, 897, 897, 897, 897, 1972, 1894, + 897, 981, 981, 981, 981, 1972, 851, 851, 851, 851, + 851, 1014, 1014, 851, 2007, 1014, 1894, 851, 1014, 1894, + 851, 1014, 1014, 851, 862, 862, 862, 862, 898, 898, + 898, 898, 1017, 1019, 898, 899, 899, 899, 899, 899, + 899, 901, 901, 901, 901, 1951, 1951, 901, 2009, 897, + 2014, 1951, 852, 852, 852, 852, 852, 2015, 1019, 852, + + 1017, 1017, 1019, 852, 1017, 1019, 852, 1017, 1019, 852, + 902, 902, 902, 902, 2018, 924, 902, 924, 924, 924, + 924, 924, 924, 898, 2022, 1956, 862, 862, 862, 862, + 862, 907, 907, 862, 1957, 2030, 901, 862, 1852, 1956, + 862, 1852, 1852, 862, 983, 983, 983, 983, 1957, 907, + 907, 907, 907, 907, 907, 936, 1852, 936, 936, 936, + 936, 936, 936, 1969, 1969, 902, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 2032, 910, 910, 910, 928, + 928, 928, 928, 973, 1891, 974, 1996, 973, 1891, 974, + 973, 973, 974, 974, 973, 2001, 2001, 973, 1891, 974, + 973, 973, 974, 974, 974, 975, 975, 975, 975, 976, + 976, 976, 976, 975, 2034, 2006, 1903, 976, 979, 979, + + 979, 979, 980, 980, 980, 980, 979, 1880, 1968, 1903, + 980, 1880, 1968, 975, 1880, 1880, 1903, 976, 985, 985, + 985, 985, 989, 989, 989, 989, 979, 1967, 2000, 1996, + 980, 987, 987, 987, 987, 987, 987, 1212, 1212, 1212, + 1212, 975, 2000, 2026, 2036, 976, 928, 944, 1246, 1246, + 1246, 1246, 1967, 1015, 979, 1979, 1008, 2026, 980, 1979, + 2037, 1015, 999, 944, 944, 944, 944, 944, 944, 1020, + 1022, 2006, 944, 2031, 985, 944, 2031, 1008, 999, 999, + 999, 999, 999, 999, 2039, 1008, 1015, 999, 1008, 2040, + 1015, 1008, 2041, 1015, 1008, 1022, 1015, 1020, 1020, 1022, + + 2029, 1020, 1022, 1999, 1020, 1022, 944, 1999, 944, 2038, + 1212, 944, 2029, 1212, 944, 1000, 944, 944, 944, 1922, + 944, 1922, 1011, 944, 944, 999, 944, 1922, 944, 945, + 1011, 1000, 1000, 1000, 1000, 1000, 1000, 1049, 1869, 999, + 1000, 1034, 1869, 2043, 1869, 945, 945, 945, 945, 945, + 945, 1011, 1678, 1869, 945, 1011, 1678, 945, 1678, 1011, + 2044, 1049, 1011, 1678, 1035, 1011, 1049, 1034, 1034, 1049, + 1034, 2038, 1049, 1034, 1034, 1034, 1034, 1011, 1000, 1042, + 2025, 1034, 1762, 1762, 1762, 1762, 2025, 945, 945, 2042, + 945, 945, 1000, 1035, 1911, 1911, 1035, 1035, 1911, 1035, + + 1893, 945, 945, 1959, 945, 945, 945, 1003, 1042, 2047, + 2047, 1042, 1893, 1959, 1042, 2051, 1042, 1042, 1893, 1959, + 1042, 1893, 2053, 1003, 1003, 1003, 1003, 1003, 1003, 1050, + 1036, 1750, 1003, 1027, 1750, 1003, 1003, 1027, 1027, 1027, + 1003, 1027, 1750, 1750, 1027, 1027, 1029, 1027, 1750, 2060, + 1027, 1036, 1750, 1027, 1050, 1036, 2008, 2064, 1050, 1036, + 2008, 1050, 1036, 1048, 1050, 1036, 1003, 1029, 1003, 1762, + 1029, 1029, 2066, 2042, 2075, 1029, 1003, 1036, 1029, 1966, + 1003, 1029, 1029, 1003, 1003, 1004, 2011, 1048, 1048, 2017, + 2011, 1028, 1048, 2017, 2045, 1048, 1039, 2078, 1048, 1048, + + 2011, 1004, 1004, 1004, 1004, 1004, 1004, 1982, 2045, 2088, + 1004, 2091, 1028, 1004, 2027, 1028, 1028, 1039, 1031, 1028, + 1028, 1039, 1004, 1028, 2027, 1039, 1028, 2093, 1039, 1028, + 1028, 1039, 1028, 1239, 1239, 1239, 1239, 1039, 1939, 1031, + 1031, 1031, 2068, 1032, 1004, 1916, 1004, 1031, 1966, 1966, + 1031, 1004, 2068, 1031, 1004, 2096, 1031, 1004, 1004, 2057, + 2057, 1004, 1004, 1026, 1032, 1982, 1032, 1032, 1032, 1886, + 1032, 1886, 1032, 1886, 2050, 1032, 1886, 1886, 1032, 1982, + 2050, 1032, 2114, 1032, 1026, 1026, 1026, 1026, 1026, 1239, + 2023, 1038, 1026, 2118, 2023, 1026, 2023, 1026, 1026, 1026, + + 1939, 1026, 1026, 1026, 1030, 1242, 1242, 1242, 1242, 2028, + 1939, 2028, 1038, 1038, 1939, 1038, 1038, 2061, 2061, 1916, + 1038, 1916, 1916, 1038, 2028, 2119, 1038, 1038, 1030, 2065, + 1037, 1030, 1038, 1030, 1030, 2065, 1030, 1030, 1030, 1030, + 1030, 1030, 2114, 1989, 1030, 1989, 1030, 2120, 1030, 1033, + 1989, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 2123, 1037, + 2124, 1242, 1037, 2114, 1037, 1037, 1992, 1046, 1992, 2012, + 1033, 1033, 1033, 1992, 1033, 1033, 1033, 1037, 1033, 1041, + 2012, 1033, 2125, 2012, 1033, 2012, 2127, 1033, 1033, 1033, + 1033, 2072, 2072, 2129, 1033, 1040, 1046, 2013, 1043, 1046, + + 1041, 1046, 1046, 1046, 1041, 1046, 1046, 1041, 1041, 2013, + 2130, 1041, 1041, 2024, 1041, 1045, 2013, 1041, 1041, 1043, + 1043, 1043, 1052, 1043, 1043, 2132, 1043, 1043, 1892, 1892, + 1043, 1043, 1040, 1043, 1892, 1892, 1045, 2135, 2024, 1043, + 1045, 2149, 1892, 1045, 1045, 1043, 2020, 1045, 2020, 2152, + 1045, 1052, 2020, 1045, 1040, 1045, 1040, 1801, 1801, 1801, + 1801, 1040, 1052, 1052, 1040, 1040, 2020, 1040, 1040, 2133, + 1040, 1040, 1040, 1069, 1040, 1040, 1044, 1069, 1069, 1069, + 1052, 1056, 1056, 1056, 1056, 2024, 1069, 1069, 2154, 1056, + 1069, 1069, 1069, 1052, 1052, 2122, 2157, 1044, 1044, 1044, + + 2159, 1044, 1044, 1954, 2162, 1044, 1052, 1044, 1044, 1044, + 1954, 1044, 1044, 1044, 1954, 1044, 1044, 1044, 1047, 1954, + 2164, 1058, 1058, 1058, 2167, 1058, 1058, 1058, 1060, 1060, + 1060, 1060, 1058, 2168, 2133, 1058, 1060, 1056, 1058, 1058, + 1058, 1058, 1059, 2131, 2059, 1058, 1059, 2169, 2131, 1059, + 1059, 1217, 1217, 1217, 1217, 2126, 1059, 2122, 2126, 1059, + 1059, 1059, 1061, 1061, 1061, 1061, 1064, 1064, 1064, 1064, + 1061, 2173, 2076, 2076, 1064, 2219, 1047, 1047, 1047, 1047, + 1047, 1047, 1985, 1985, 1060, 2076, 1985, 1047, 1985, 1047, + 1047, 1047, 2220, 1047, 1047, 1047, 1067, 1067, 1067, 1067, + + 1068, 1068, 1068, 1068, 1067, 1335, 2059, 2221, 1068, 1420, + 1420, 1420, 1420, 1420, 1420, 1217, 2059, 1963, 1061, 1217, + 2059, 2074, 1064, 1071, 1071, 1071, 1071, 1072, 1072, 1072, + 1072, 1071, 2231, 2117, 1217, 1072, 1075, 1075, 1075, 1075, + 1077, 1077, 1077, 1077, 1075, 2074, 2175, 1974, 1077, 2232, + 2074, 1974, 1067, 1974, 1974, 1420, 1068, 1070, 1070, 1070, + 2176, 1070, 1070, 2233, 1335, 1070, 1335, 1070, 1070, 1070, + 2174, 1070, 1070, 1079, 1070, 1070, 1070, 1070, 1335, 1071, + 1335, 1963, 2117, 1072, 1335, 1078, 1078, 1078, 1078, 2175, + 2234, 1963, 1075, 1078, 1079, 2200, 1077, 1963, 1079, 1079, + + 1079, 1937, 1079, 2174, 2117, 2200, 1079, 2176, 1079, 1081, + 2235, 1079, 1079, 1081, 1081, 1081, 2199, 1083, 1666, 2058, + 2058, 1083, 1081, 1081, 1083, 1083, 1081, 1081, 1081, 2199, + 2201, 1083, 2201, 1931, 1083, 1083, 1083, 1931, 1094, 1931, + 2208, 1078, 1080, 1797, 1931, 1080, 1080, 1931, 1080, 2236, + 2237, 1080, 2208, 1080, 1080, 1080, 1080, 1080, 2238, 1080, + 1080, 1937, 1937, 1080, 1937, 1080, 1092, 1094, 1095, 2203, + 2223, 1094, 1095, 2207, 1937, 1094, 1095, 2207, 1937, 1094, + 1095, 1666, 2203, 1666, 1094, 1095, 2207, 2058, 1666, 2224, + 1666, 1094, 1095, 2224, 2239, 1092, 1094, 1095, 2223, 1092, + + 1094, 1095, 2222, 1092, 1094, 1095, 1797, 1092, 1797, 2222, + 1094, 1095, 1092, 1797, 1336, 1797, 1094, 1095, 2240, 1092, + 1094, 2241, 2073, 2073, 1092, 1092, 1092, 1092, 1092, 1092, + 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, + 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, + 1092, 1093, 1096, 2227, 1320, 2242, 1096, 2227, 2243, 1096, + 1096, 2021, 2244, 1320, 2021, 2021, 1096, 1320, 1955, 1096, + 1096, 1096, 1955, 1336, 1320, 1336, 1320, 1955, 2113, 2021, + 1093, 1955, 1093, 1320, 1093, 1955, 2245, 1336, 1093, 1336, + 2073, 1093, 1093, 1336, 1320, 1093, 2205, 1093, 2209, 1320, + + 2073, 1093, 1093, 2205, 1093, 2246, 1320, 2205, 2209, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1097, 2210, 1099, 2247, + 1097, 2077, 1099, 2210, 1097, 1099, 1099, 1097, 1097, 2113, + 2248, 1778, 1099, 1097, 1778, 1099, 1099, 1099, 2230, 2113, + 1097, 2249, 1778, 1778, 2250, 1097, 2252, 2115, 1778, 1097, + 1178, 2230, 1778, 1097, 1139, 1139, 1139, 1139, 1097, 1097, + 1179, 1199, 1139, 1185, 2254, 1097, 1178, 1178, 1178, 1178, + 1178, 1178, 2255, 2256, 2257, 1178, 1179, 1179, 1179, 1179, + + 1179, 1179, 2002, 2077, 2259, 1179, 1265, 1265, 1265, 1265, + 1199, 2002, 1185, 2077, 1265, 2002, 1185, 2077, 2019, 2002, + 1185, 1199, 1199, 1785, 1185, 2253, 1785, 2260, 2261, 1185, + 1139, 1166, 2262, 1178, 1785, 1785, 1185, 2115, 2253, 1199, + 1785, 1185, 1187, 1179, 1785, 1185, 1187, 1178, 2115, 1185, + 1187, 2263, 1199, 1199, 1187, 1185, 2264, 1179, 2265, 1187, + 1166, 1185, 1265, 2004, 1166, 1199, 1187, 1185, 1166, 2004, + 2004, 1187, 1166, 2202, 2268, 1187, 2269, 1166, 2270, 1187, + 2266, 2019, 2004, 2019, 1166, 1187, 2202, 2202, 2019, 1166, + 2019, 1187, 1192, 1166, 1192, 1192, 2266, 1166, 1192, 2271, + + 1192, 1192, 1192, 1166, 1192, 2272, 2277, 2278, 1192, 1166, + 1192, 1338, 1192, 1166, 1193, 1166, 1171, 2010, 1193, 1195, + 2279, 1193, 1193, 1195, 2280, 1193, 1195, 1195, 1193, 2285, + 1195, 1193, 1193, 1195, 2290, 2291, 1195, 1195, 1195, 2292, + 1266, 1266, 1266, 1266, 1888, 1171, 1888, 1171, 1266, 1171, + 1888, 2293, 1888, 1171, 2294, 1888, 1171, 1171, 2275, 2275, + 1171, 1628, 1171, 2295, 1628, 2296, 1171, 1171, 1628, 1171, + 1338, 1628, 1338, 1338, 1171, 1628, 1171, 1628, 1171, 2010, + 2206, 2297, 1171, 2010, 1338, 2010, 1338, 1171, 1171, 2206, + 1338, 2206, 1171, 2206, 1171, 2302, 1266, 2206, 1171, 1171, + + 1171, 1188, 2016, 2016, 2016, 1274, 1274, 1274, 1274, 2301, + 2016, 1204, 2303, 1274, 2304, 2306, 2212, 1188, 1188, 1188, + 1188, 1188, 1188, 2305, 2305, 2212, 1188, 2212, 1196, 1188, + 2212, 2275, 1196, 2313, 2301, 1196, 1196, 2310, 1188, 1196, + 1204, 1196, 1196, 1196, 1204, 1196, 1196, 1204, 1204, 2310, + 2308, 1204, 2308, 2315, 1204, 1337, 2326, 1204, 1204, 1188, + 1188, 1274, 1188, 1188, 1188, 1188, 1204, 1188, 2273, 2314, + 2314, 1188, 2229, 1188, 1188, 2328, 1188, 1188, 1188, 1189, + 1276, 1276, 1276, 1276, 2309, 2329, 2309, 2301, 1276, 1419, + 1419, 1419, 1419, 1419, 1419, 1189, 1189, 1189, 1189, 1189, + + 1189, 1203, 2312, 2319, 1189, 1203, 2353, 1189, 1203, 1203, + 2319, 2312, 1203, 1337, 1337, 1203, 1337, 2273, 1203, 1203, + 2337, 1203, 2273, 1277, 1277, 1277, 1277, 2211, 1337, 2211, + 1337, 1277, 2337, 2211, 1337, 2229, 1276, 1189, 1189, 2211, + 1189, 1189, 1189, 2229, 1189, 1189, 2228, 2211, 1189, 1419, + 2228, 1189, 1189, 2360, 1189, 1189, 1189, 1190, 2316, 2228, + 1190, 1190, 2311, 1190, 1190, 1190, 1190, 2316, 1190, 1190, + 1190, 1190, 1190, 2311, 1190, 1190, 2318, 2300, 1190, 1277, + 1190, 1191, 1191, 1191, 2317, 1191, 1191, 1191, 1191, 1191, + 2324, 2323, 1191, 2317, 2307, 1191, 2324, 2307, 1191, 1191, + + 1191, 1191, 2300, 2307, 2323, 1191, 1194, 1194, 1194, 1205, + 1194, 1194, 2318, 1194, 1194, 2330, 1194, 1194, 1194, 2333, + 1194, 1194, 2321, 1194, 1194, 1194, 1194, 1209, 1207, 2357, + 1205, 2321, 2333, 2357, 1205, 1205, 1205, 1205, 1205, 2033, + 2330, 1205, 1205, 2033, 1205, 2033, 2300, 1205, 1205, 1207, + 2033, 2322, 2375, 1207, 1207, 1207, 2325, 1207, 2325, 2331, + 2322, 1207, 1207, 1207, 2393, 2331, 1207, 1208, 1207, 1339, + 1208, 1208, 1340, 2334, 1208, 1208, 2334, 1341, 1208, 2369, + 2335, 1208, 2334, 2225, 1208, 1208, 1209, 2339, 1209, 2335, + 2369, 1209, 2339, 1208, 1209, 2346, 1209, 1209, 1209, 1342, + + 1209, 1790, 1209, 1210, 1790, 2346, 1209, 1210, 1209, 1343, + 1210, 1210, 1790, 1790, 1210, 1210, 2380, 1210, 1790, 2380, + 1210, 1210, 1790, 1210, 1278, 1278, 1278, 1278, 1339, 1210, + 1339, 1340, 1278, 1340, 1344, 2398, 1341, 2336, 1341, 1341, + 2338, 1339, 1339, 1345, 1339, 1340, 2336, 1340, 1339, 2338, + 1341, 1340, 1341, 1346, 2225, 2225, 1341, 2345, 1342, 2225, + 1342, 1342, 2340, 2345, 1347, 1342, 2377, 1342, 1343, 1344, + 1343, 2377, 1342, 2348, 1342, 2342, 2342, 1348, 1342, 2344, + 1278, 1343, 1343, 2350, 1343, 1349, 2348, 2340, 1343, 2350, + 1350, 2344, 2379, 1344, 2379, 1344, 2344, 2356, 1344, 2341, + + 1352, 1345, 1345, 2341, 1345, 2341, 2356, 1344, 2341, 1344, + 2378, 1355, 1346, 1344, 1346, 2371, 1345, 2356, 1345, 1351, + 2378, 1345, 1345, 1347, 1354, 1347, 1346, 2351, 1346, 2351, + 2416, 2351, 1346, 1347, 1346, 1348, 1348, 1347, 1348, 1347, + 2371, 1356, 2355, 1347, 1349, 2358, 1349, 1349, 2355, 1350, + 1348, 1350, 1348, 2358, 1350, 2359, 1348, 2425, 1349, 1352, + 1349, 1352, 1351, 1350, 1349, 1350, 1357, 1358, 2359, 1350, + 1355, 2426, 1355, 1352, 1384, 1352, 2354, 2354, 1351, 1352, + 1351, 2362, 2362, 1354, 1355, 1354, 1355, 2382, 1354, 1385, + 1355, 2427, 1351, 2382, 1351, 2383, 1386, 1354, 1351, 1354, + + 1356, 2383, 1356, 1354, 1387, 1515, 1515, 1515, 1515, 1515, + 1515, 1356, 2349, 1388, 1356, 2361, 1356, 2368, 2368, 2387, + 1356, 1389, 2361, 2349, 2349, 1357, 1358, 1357, 1358, 2387, + 2364, 2381, 1357, 1384, 2381, 1384, 1358, 2364, 1392, 1357, + 1358, 1357, 1358, 1390, 2386, 1357, 1358, 1384, 1385, 1384, + 1385, 1391, 2363, 1384, 1515, 1386, 2386, 1386, 1386, 2381, + 1394, 2363, 1385, 1387, 1385, 1387, 2390, 1385, 1385, 1386, + 1393, 1386, 1388, 2390, 1388, 1386, 2388, 1387, 2332, 1387, + 1389, 1395, 1389, 1387, 2388, 2046, 1388, 2332, 1388, 1948, + 2384, 2384, 1388, 2332, 1389, 2332, 1389, 1392, 2372, 1392, + + 1389, 2372, 1390, 1396, 1390, 1390, 2395, 2372, 2395, 1391, + 1391, 1392, 1391, 1392, 1397, 2389, 1390, 1392, 1390, 1394, + 2389, 1394, 1390, 2402, 1391, 1398, 1391, 2079, 2402, 1393, + 1391, 1393, 1394, 1394, 1393, 1394, 1394, 2397, 1396, 1394, + 1395, 2396, 1395, 1393, 2397, 1393, 1399, 1948, 2046, 1393, + 2046, 1400, 1948, 2396, 1395, 2046, 1395, 2046, 2392, 2428, + 1395, 1401, 1396, 1948, 1396, 1948, 1948, 1396, 2392, 2391, + 1403, 2394, 1397, 1397, 2429, 1397, 1396, 2449, 1396, 2391, + 1402, 2394, 1396, 2391, 1398, 1404, 1398, 1397, 2367, 1397, + 2079, 2413, 2079, 1397, 1398, 2367, 2367, 2079, 1398, 2079, + + 1398, 2413, 1405, 2400, 1398, 1399, 1398, 1399, 1399, 1406, + 1400, 2400, 1400, 1887, 1887, 1887, 1887, 2410, 2410, 1399, + 1401, 1399, 1401, 2421, 1400, 1399, 1400, 2457, 1400, 1403, + 1400, 1403, 1401, 1407, 1401, 2107, 1401, 2439, 1402, 1402, + 1401, 1402, 2439, 1403, 1404, 1403, 1404, 1403, 2421, 1403, + 1408, 1404, 2401, 1402, 2401, 1402, 2431, 1409, 1404, 1402, + 1404, 1405, 2431, 1405, 1404, 1410, 2411, 2411, 1406, 1406, + 1406, 1405, 2385, 1405, 2462, 1405, 1887, 1405, 1406, 2385, + 2385, 1405, 1406, 2412, 1406, 1887, 1411, 2406, 1406, 2406, + 2412, 2418, 1407, 2418, 1407, 1407, 1413, 2463, 2107, 1407, + + 2107, 1407, 1887, 1414, 1407, 2107, 1407, 2107, 1407, 1408, + 2128, 1408, 1407, 2128, 1408, 1409, 1409, 2477, 1409, 1409, + 2478, 2128, 2128, 1408, 1410, 1408, 1410, 2128, 1410, 1408, + 1409, 2128, 1409, 1412, 2399, 1410, 1409, 2453, 1410, 2453, + 1410, 1415, 2399, 2399, 1410, 1411, 1411, 1411, 1416, 1412, + 1412, 1412, 1412, 1412, 1412, 1413, 1417, 1413, 1413, 1411, + 2408, 1411, 1414, 1411, 1414, 1411, 2376, 1418, 2403, 1413, + 2376, 1413, 2403, 2408, 2528, 1413, 1414, 1421, 1414, 2376, + 1422, 2403, 1414, 1506, 1506, 1506, 1506, 1506, 1506, 2415, + 2415, 2489, 1412, 2489, 1412, 1412, 2365, 2365, 2424, 1423, + + 1415, 2365, 1415, 1415, 1424, 2409, 1412, 1416, 1412, 1416, + 2111, 2424, 1412, 2586, 1415, 1417, 1415, 1417, 2409, 2409, + 1415, 1416, 1425, 1416, 1416, 1425, 1418, 1416, 1418, 1417, + 1426, 1417, 2417, 2417, 2572, 1417, 1421, 2430, 1421, 1422, + 1418, 1422, 1418, 1506, 2430, 2204, 1418, 2422, 2422, 1422, + 1421, 2572, 1421, 1422, 1427, 1422, 1421, 1423, 1423, 1422, + 1423, 1428, 2432, 1424, 2445, 1424, 2434, 2434, 2445, 1429, + 2432, 1423, 1423, 2111, 1423, 2111, 1424, 1424, 1423, 1424, + 2111, 2370, 2111, 1424, 1425, 2370, 1425, 2370, 1430, 1426, + 2370, 1426, 2618, 1431, 1803, 1803, 1803, 1803, 1425, 2419, + + 1425, 1426, 1426, 1426, 1425, 1426, 2450, 2204, 2419, 1426, + 1432, 2450, 1427, 1427, 2441, 1427, 2204, 2204, 2687, 1433, + 1428, 2204, 1428, 1428, 2441, 2452, 2452, 1427, 1429, 1427, + 1429, 2414, 2414, 1427, 1428, 2414, 1428, 2414, 1434, 2468, + 1428, 1429, 1429, 1435, 1429, 2734, 2468, 1430, 1429, 1430, + 1803, 1431, 1431, 1436, 1431, 2121, 2121, 2121, 2121, 2121, + 1430, 1430, 2473, 1430, 2433, 2433, 1431, 1430, 1431, 1432, + 2433, 1432, 1431, 2407, 1437, 1438, 2407, 1433, 1433, 1432, + 1433, 1432, 2407, 1432, 2404, 1432, 2435, 2473, 2404, 1432, + 2404, 1433, 1433, 2404, 1433, 2435, 1439, 1434, 1433, 1434, + + 1434, 1435, 1435, 1440, 1435, 1519, 1519, 1519, 1519, 1519, + 1519, 1434, 1436, 1434, 1436, 2464, 1435, 1434, 1435, 1436, + 2437, 2464, 1435, 2464, 1441, 1436, 1436, 2343, 1436, 2437, + 2343, 1436, 1436, 1437, 1438, 1437, 1438, 1443, 2343, 2469, + 2343, 1438, 2735, 1437, 2469, 2343, 2448, 1437, 1438, 1437, + 1438, 1519, 1445, 1437, 1438, 1439, 2448, 1439, 2420, 1439, + 1446, 2454, 1440, 1448, 1440, 1440, 2352, 2420, 2440, 1439, + 2352, 1439, 2736, 2454, 2420, 1439, 1440, 2440, 1440, 2352, + 2352, 1440, 1440, 1441, 1449, 1441, 1441, 2737, 2461, 2465, + 1441, 2455, 1441, 1447, 2465, 2465, 1443, 1441, 1443, 1441, + + 1441, 2461, 2455, 1441, 1442, 1442, 1442, 1442, 1442, 1442, + 1443, 1445, 1443, 1445, 1451, 2447, 1443, 2738, 2739, 1446, + 1446, 1446, 1448, 1445, 1448, 1445, 2458, 1445, 2447, 1452, + 2458, 1445, 2447, 1446, 2740, 1446, 1448, 1453, 1448, 1446, + 2374, 2374, 1448, 1449, 2374, 1449, 2374, 2436, 2741, 2374, + 1442, 2436, 1447, 2436, 1447, 1447, 2436, 1449, 1442, 1449, + 1442, 1444, 2436, 1449, 2532, 1447, 1447, 2532, 1447, 1447, + 2451, 2532, 1447, 1451, 2451, 1451, 1454, 1520, 1520, 1520, + 1520, 1520, 1520, 2451, 1455, 2456, 2742, 1451, 1452, 1451, + 1452, 1452, 2466, 1451, 2456, 1453, 1453, 1457, 1453, 2456, + + 1453, 1452, 1452, 2743, 1452, 2466, 2460, 2744, 1452, 2442, + 1453, 2460, 1453, 2442, 1453, 2442, 1453, 2460, 2442, 1458, + 1444, 1444, 1444, 1520, 1444, 2226, 1444, 1459, 2470, 2745, + 2459, 1444, 1444, 1444, 1444, 1454, 1444, 1454, 1444, 2459, + 1444, 2470, 1444, 1455, 2746, 1455, 1460, 1454, 2747, 1454, + 2467, 1454, 1454, 1461, 1462, 1454, 1457, 1455, 1457, 1455, + 2467, 1457, 2471, 1455, 1455, 1457, 2048, 2048, 2048, 2048, + 1457, 2471, 1457, 2483, 2048, 1463, 1457, 1458, 1458, 2483, + 1458, 2444, 2475, 1464, 2476, 2444, 1459, 2226, 1459, 1459, + 2444, 1458, 1458, 2476, 1458, 2475, 2226, 2226, 1458, 2479, + + 1459, 2226, 1459, 1459, 1465, 1460, 1459, 1460, 2479, 1467, + 2474, 2481, 1461, 1462, 1461, 1462, 2481, 2748, 2749, 1460, + 2493, 1460, 2048, 2474, 2474, 1460, 1461, 1462, 1461, 1462, + 1468, 2493, 1461, 1462, 1463, 1469, 1463, 2472, 2750, 2751, + 1470, 2472, 1464, 2472, 1464, 1464, 2472, 2480, 1463, 1464, + 1463, 2484, 1464, 2752, 1463, 1463, 1464, 2480, 1464, 1471, + 2484, 2490, 1464, 1465, 1472, 1465, 2485, 1467, 1467, 2488, + 1467, 1467, 1474, 1465, 1465, 2485, 2494, 1465, 2488, 1465, + 2523, 1473, 1467, 1465, 1467, 2523, 2490, 2494, 1467, 1468, + 2443, 1468, 1468, 2443, 1469, 2500, 1469, 1469, 1475, 1470, + + 2501, 1470, 2443, 1468, 2495, 1468, 1476, 2443, 1469, 1468, + 1469, 2501, 2753, 1470, 1469, 1470, 2754, 1477, 1471, 1470, + 1471, 1471, 2487, 1472, 2496, 1472, 2496, 2755, 1472, 2495, + 1478, 1474, 1471, 1474, 1471, 2487, 2487, 1472, 1471, 1472, + 1473, 1481, 1473, 1472, 2756, 1474, 2492, 1474, 2492, 1479, + 1474, 1474, 1473, 2492, 1473, 2499, 1473, 1475, 1480, 1475, + 1473, 2499, 2506, 2757, 1475, 1476, 2500, 1476, 1476, 1476, + 1475, 1475, 1476, 1475, 1476, 2503, 1477, 1475, 1477, 1476, + 1482, 1476, 2758, 1483, 2503, 1476, 2498, 2506, 1478, 1478, + 1477, 1478, 1477, 2759, 2497, 1477, 1477, 2498, 2535, 2498, + + 1481, 2535, 1481, 1478, 1481, 1478, 1485, 2497, 1479, 1478, + 1479, 1486, 2497, 1479, 1481, 1479, 1481, 1480, 2761, 1480, + 1481, 1487, 1479, 2502, 1479, 2502, 2502, 1480, 1479, 1480, + 2509, 1480, 1488, 1480, 1480, 2507, 2505, 1480, 2762, 1482, + 2509, 1482, 1483, 1489, 1483, 2505, 2763, 2509, 2507, 2507, + 1482, 1490, 1483, 1482, 2767, 1482, 1483, 2531, 1483, 1482, + 2531, 2518, 1483, 2510, 2511, 1485, 1491, 1485, 2531, 1486, + 1486, 2518, 1486, 2511, 1492, 2536, 2510, 2510, 2536, 1485, + 1487, 1485, 1487, 1486, 1486, 1485, 1486, 2512, 2512, 2768, + 1486, 1488, 1488, 1488, 1487, 2770, 1487, 1487, 1493, 2512, + + 1487, 1488, 1489, 1494, 1489, 1488, 1489, 1488, 2519, 1488, + 1490, 1488, 1490, 1495, 2772, 1489, 1489, 2515, 1489, 2520, + 2519, 2520, 1489, 2773, 1490, 1491, 1490, 1491, 1496, 2515, + 1490, 2515, 1491, 1492, 1490, 1492, 1497, 1498, 2521, 1491, + 2774, 1491, 2486, 2486, 2522, 1491, 2522, 1492, 2775, 1492, + 1492, 2521, 2486, 1492, 2486, 2486, 1493, 1493, 1499, 1493, + 2486, 1494, 1494, 1500, 1494, 1494, 2525, 2776, 2525, 2777, + 2525, 1493, 1495, 1493, 1495, 1495, 1494, 1493, 1494, 1495, + 2539, 1495, 1494, 2539, 1501, 1502, 1495, 1496, 1495, 1496, + 1496, 2540, 1495, 2780, 2540, 1497, 1498, 1497, 1498, 2533, + + 1496, 1496, 2533, 1496, 2781, 2533, 1503, 1496, 2517, 1497, + 1498, 1497, 1498, 2517, 2782, 1497, 1498, 1499, 2783, 1499, + 2517, 2534, 1500, 2534, 1500, 1500, 2534, 1504, 1505, 2543, + 2785, 1499, 2543, 1499, 2590, 1507, 1500, 1499, 1500, 1499, + 2527, 2590, 1500, 1501, 1502, 1501, 1502, 2527, 2527, 2524, + 1508, 2704, 2704, 2524, 1502, 1501, 2704, 1501, 1502, 1501, + 1502, 1501, 2524, 1501, 1502, 1503, 2786, 1503, 2615, 1510, + 2049, 2049, 2049, 2049, 1511, 2615, 2656, 2544, 2049, 1503, + 2544, 1503, 1512, 2656, 1503, 1503, 1504, 1505, 1504, 1505, + 1504, 2722, 1504, 1505, 1507, 1514, 1507, 1504, 2722, 1504, + + 1504, 1505, 1504, 1505, 1507, 1513, 1504, 1505, 1507, 1508, + 1507, 1508, 1508, 2504, 1507, 2787, 1508, 2504, 1508, 2788, + 1516, 2504, 2504, 1508, 2537, 1508, 2049, 2537, 1510, 1508, + 1510, 2760, 1511, 1511, 2537, 1511, 2760, 2542, 1510, 2542, + 2542, 1512, 1510, 1512, 1510, 1517, 1511, 1511, 1510, 1511, + 2631, 2791, 2802, 1511, 1514, 1512, 1514, 1512, 1514, 2552, + 1518, 1512, 2552, 2631, 1513, 2545, 1513, 2806, 1514, 2545, + 1514, 1513, 2545, 2538, 1514, 2808, 2538, 1513, 1513, 1516, + 1513, 1516, 2538, 1513, 1513, 1578, 1578, 1578, 1578, 1578, + 1578, 1610, 2809, 1516, 1610, 1516, 1610, 2553, 1516, 1516, + + 2553, 1610, 1610, 1610, 1517, 2810, 1517, 1517, 1610, 2812, + 1610, 1517, 1610, 1517, 2555, 2792, 2815, 2555, 1517, 1518, + 1517, 1518, 2541, 2555, 1517, 1608, 1608, 1608, 1608, 1608, + 1608, 1578, 1518, 1518, 2556, 1518, 2792, 2556, 2556, 1518, + 1528, 1680, 1680, 1680, 1680, 1680, 1680, 2546, 2547, 2541, + 2546, 2547, 2541, 2798, 2798, 2547, 1528, 1528, 1528, 1528, + 1528, 1528, 2546, 2548, 2558, 1528, 2548, 2558, 1528, 1760, + 1760, 1760, 1760, 2569, 2558, 1760, 2569, 1763, 2548, 1608, + 2423, 1608, 2569, 2423, 2423, 2813, 2423, 1680, 1763, 2423, + 1763, 1763, 2813, 1763, 1763, 1763, 1763, 1763, 1763, 1528, + + 2816, 1528, 1895, 1895, 1895, 1895, 1895, 1895, 2549, 2554, + 2803, 2549, 2554, 1528, 2817, 2554, 1528, 1528, 1529, 2052, + 2052, 2052, 2052, 2549, 1760, 2549, 2561, 2052, 2576, 2561, + 1763, 2576, 2818, 2819, 1529, 1529, 1529, 1529, 1529, 1529, + 2550, 2561, 2578, 1529, 2550, 2578, 1529, 2550, 1895, 1932, + 1932, 1932, 1932, 1932, 1932, 1934, 1760, 2564, 1934, 2579, + 1934, 2564, 2579, 2803, 2564, 1934, 1934, 1934, 2570, 2562, + 2562, 2570, 1934, 2562, 1934, 2052, 1934, 1529, 2570, 1529, + 2035, 2035, 2035, 2035, 2035, 2035, 2789, 2778, 2789, 1965, + 1965, 1529, 2778, 1965, 1529, 1529, 1816, 1965, 2567, 2796, + + 1965, 2567, 1965, 1932, 1965, 1932, 1965, 2573, 1965, 2567, + 2573, 2567, 1816, 1816, 1816, 1816, 1816, 1816, 2820, 2557, + 2573, 1816, 2557, 2557, 1816, 2557, 2035, 2054, 2054, 2054, + 2054, 2055, 2055, 2055, 2055, 2054, 2821, 2822, 2825, 2055, + 2056, 2056, 2056, 2056, 2062, 2062, 2062, 2062, 2056, 2584, + 2560, 2584, 2062, 2560, 2584, 1816, 2560, 1816, 2063, 2063, + 2063, 2063, 2067, 2067, 2067, 2067, 2063, 2560, 2593, 1816, + 2067, 2593, 1816, 1816, 1817, 2593, 2069, 2069, 2069, 2069, + 2796, 2826, 2566, 2054, 2069, 2566, 2571, 2055, 2827, 2571, + 1817, 1817, 1817, 1817, 1817, 1817, 2056, 2566, 2828, 1817, + + 2062, 2571, 1817, 2070, 2070, 2070, 2070, 2071, 2071, 2071, + 2071, 2070, 2829, 2482, 2063, 2071, 2482, 2482, 2067, 2482, + 2170, 2577, 2482, 2577, 2577, 2830, 2267, 2267, 2267, 2267, + 2831, 2832, 2069, 1817, 2267, 1817, 2170, 2170, 2170, 2170, + 2170, 2170, 2833, 2836, 2565, 2170, 2565, 1817, 2171, 2565, + 1817, 1817, 2274, 2274, 2274, 2274, 2565, 2837, 2172, 2070, + 2274, 2838, 2839, 2071, 2171, 2171, 2171, 2171, 2171, 2171, + 2823, 2840, 2823, 2171, 2172, 2172, 2172, 2172, 2172, 2172, + 2366, 2841, 2267, 2172, 2347, 2347, 2347, 2347, 2347, 2347, + 2842, 2373, 2373, 2373, 2373, 2405, 2366, 2366, 2366, 2366, + + 2366, 2366, 2834, 2568, 2834, 2366, 2171, 2568, 2274, 2845, + 2568, 2405, 2405, 2405, 2405, 2405, 2405, 2568, 2446, 2446, + 2405, 2446, 2843, 2491, 2843, 2446, 2491, 2491, 2446, 2491, + 2446, 2575, 2491, 2172, 2197, 2575, 2446, 2513, 2575, 2347, + 2513, 2513, 2846, 2513, 2574, 2574, 2513, 2574, 2847, 2851, + 2197, 2197, 2197, 2197, 2197, 2197, 2373, 2852, 2373, 2197, + 2373, 2580, 2197, 2526, 2580, 2373, 2853, 2854, 2563, 2563, + 2563, 2563, 2563, 2563, 2855, 2856, 2855, 2580, 2373, 2526, + 2526, 2526, 2526, 2526, 2526, 2859, 2581, 2591, 2526, 2581, + 2591, 2582, 2582, 2197, 2582, 2197, 2581, 2197, 2197, 2582, + + 2581, 2591, 2559, 2860, 2861, 2559, 2559, 2197, 2872, 2559, + 2197, 2197, 2198, 2559, 2563, 2583, 2872, 2563, 2583, 2594, + 2559, 2595, 2594, 2601, 2595, 2583, 2601, 2601, 2198, 2198, + 2198, 2198, 2198, 2198, 2594, 2585, 2595, 2198, 2585, 2585, + 2198, 2585, 2588, 2588, 2589, 2588, 2588, 2589, 2588, 2592, + 2873, 2596, 2592, 2589, 2596, 2597, 2597, 2600, 2597, 2596, + 2600, 2598, 2871, 2597, 2598, 2599, 2599, 2598, 2592, 2599, + 2878, 2198, 2871, 2198, 2600, 2198, 2602, 2605, 2602, 2602, + 2605, 2604, 2896, 2198, 2604, 2198, 2605, 2896, 2198, 2198, + 2508, 2865, 2865, 2508, 2508, 2508, 2508, 2508, 2508, 2508, + + 2604, 2607, 2619, 2508, 2607, 2508, 2619, 2508, 2607, 2619, + 2508, 2508, 2508, 2508, 2514, 2514, 2868, 2868, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + + 2514, 2514, 2514, 2898, 2514, 2514, 2514, 2529, 2603, 2603, + 2606, 2606, 2603, 2608, 2606, 2609, 2608, 2614, 2609, 2907, + 2614, 2614, 2603, 2529, 2529, 2529, 2529, 2529, 2529, 2876, + 2610, 2609, 2529, 2610, 2608, 2529, 2876, 2611, 2611, 2610, + 2611, 2612, 2612, 2627, 2612, 2972, 2627, 2587, 2587, 2587, + 2587, 2613, 2628, 2616, 2613, 2628, 2616, 2616, 2613, 2616, + 2617, 2630, 2628, 2617, 2630, 2620, 2529, 2617, 2529, 2620, + 2621, 2622, 2620, 2621, 2622, 2867, 2977, 2529, 2621, 2622, + 2529, 2875, 2875, 2529, 2529, 2530, 2624, 2624, 2867, 2626, + 2624, 2623, 2626, 2629, 2623, 2641, 2629, 2626, 2641, 2952, + + 2629, 2530, 2530, 2530, 2530, 2530, 2530, 2623, 2625, 2952, + 2530, 2625, 2587, 2530, 2587, 2587, 2587, 2632, 2625, 2897, + 2632, 2625, 2634, 2625, 2633, 2632, 2634, 2633, 2633, 2634, + 2633, 2897, 2869, 2635, 2587, 2634, 2635, 2636, 2637, 2636, + 2636, 2637, 2635, 2869, 2530, 2985, 2530, 2530, 2638, 2639, + 2530, 2638, 2639, 2637, 2643, 3009, 2640, 2643, 2530, 2640, + 2644, 2530, 2530, 2644, 2639, 2638, 2640, 2642, 3010, 2644, + 2642, 2642, 2645, 2642, 2644, 2645, 2646, 2647, 2879, 2646, + 2647, 2647, 2642, 2647, 2648, 2649, 2879, 2648, 2649, 2649, + 2648, 2650, 2877, 2877, 2650, 2646, 2651, 2651, 2874, 2651, + + 2874, 2648, 2651, 2651, 2650, 2652, 2651, 2653, 2654, 2652, + 2653, 2654, 2652, 2657, 2651, 2655, 2657, 2654, 2655, 2655, + 2658, 2657, 2652, 2658, 3012, 2659, 2653, 2658, 2659, 2660, + 2661, 2659, 2660, 2661, 2662, 2663, 2664, 2662, 2663, 2664, + 2906, 2906, 2665, 2662, 2661, 2665, 2665, 2666, 2663, 2660, + 2667, 2666, 2668, 2667, 2666, 2668, 2883, 2665, 3045, 2667, + 2669, 2668, 2670, 2669, 2671, 2670, 2670, 2883, 2671, 2672, + 2672, 2671, 3046, 2672, 2880, 2669, 2673, 2669, 2673, 2673, + 2674, 2675, 2880, 2674, 2676, 2675, 2677, 2676, 2675, 2677, + 2677, 2678, 2677, 2679, 2674, 2678, 2680, 2679, 2678, 2680, + + 2679, 2681, 2682, 2683, 2681, 2682, 2683, 2683, 2684, 3050, + 2685, 2684, 2684, 2685, 2684, 2686, 2688, 2688, 2686, 2688, + 2689, 2682, 2688, 2700, 2689, 2685, 2688, 2689, 2690, 2688, + 2691, 2690, 2692, 2691, 2688, 2692, 2692, 2693, 2692, 2696, + 2693, 2691, 2696, 2694, 2693, 2694, 2887, 2695, 2694, 2695, + 2696, 2693, 2695, 2697, 2887, 2698, 2882, 2697, 2695, 2698, + 2697, 2699, 2698, 2884, 2699, 2702, 2698, 2701, 2702, 2884, + 2701, 2697, 2702, 2885, 2703, 2702, 2699, 2703, 2705, 2706, + 2885, 2705, 3051, 2706, 2886, 2700, 2706, 2701, 2700, 2707, + 2886, 2882, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2708, + + 2708, 2709, 2707, 2708, 2710, 2709, 2707, 2710, 2709, 2707, + 2707, 2707, 2707, 2917, 2917, 2709, 2708, 2711, 2711, 2718, + 2711, 2712, 2718, 2711, 2712, 2712, 2718, 2712, 2713, 2713, + 2942, 2942, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2888, 2713, 2713, + 2713, 2714, 2715, 2888, 2714, 2715, 2715, 2714, 2716, 2764, + 2717, 2716, 2764, 2717, 3062, 2714, 2717, 2719, 2715, 2720, + 2784, 2719, 2720, 2784, 2719, 2721, 2720, 2716, 2721, 2721, + 2723, 2724, 2724, 2723, 2724, 2866, 3119, 2723, 2866, 2724, + 2725, 2723, 2726, 2725, 2725, 2726, 2727, 2857, 2726, 2727, + 2728, 2728, 2728, 2728, 2729, 2730, 2727, 2729, 2730, 2726, + 2800, 2729, 2731, 2730, 2733, 2731, 2732, 2733, 2731, 2732, + 2732, 2733, 2857, 2889, 2892, 2925, 2892, 2925, 2733, 2731, + + 2893, 2732, 2779, 2779, 2779, 2779, 2794, 2794, 2794, 2794, + 2795, 2795, 2794, 2797, 2849, 2795, 2899, 2849, 2797, 2799, + 2799, 2799, 2799, 2899, 2858, 2799, 2814, 2849, 2928, 2814, + 2814, 2800, 2928, 2881, 2890, 2728, 2857, 2728, 2728, 2728, + 2804, 2814, 2804, 2804, 2804, 2804, 2804, 2804, 2805, 2858, + 2805, 2805, 2805, 2805, 2805, 2805, 3131, 2728, 2881, 2890, + 2891, 2800, 2894, 2889, 2779, 2779, 2779, 2779, 2779, 2864, + 2893, 2779, 2864, 2905, 2799, 2779, 2895, 2864, 2779, 3176, + 2901, 2779, 2903, 2893, 2895, 2891, 2900, 2894, 2901, 2903, + 2901, 2900, 2909, 2794, 2954, 2954, 2795, 2902, 2905, 2797, + + 3235, 2902, 2858, 2902, 2904, 2902, 2799, 2870, 2870, 2870, + 2870, 2904, 2911, 2891, 2910, 2914, 2921, 2909, 2914, 2911, + 2805, 2850, 2919, 2910, 2850, 2850, 2850, 2850, 2850, 2850, + 2850, 2912, 2916, 2919, 2850, 2913, 3238, 2922, 2850, 2912, + 2916, 2850, 2850, 2850, 2850, 2862, 2912, 2913, 2912, 2915, + 2923, 2923, 2915, 2932, 2923, 2932, 3239, 2915, 2930, 2918, + 2939, 2862, 2862, 2862, 2862, 2862, 2862, 2918, 2926, 2870, + 2862, 2920, 2918, 2862, 2870, 2935, 2926, 2926, 2929, 2870, + 2870, 2920, 2935, 2930, 2947, 2870, 2921, 2920, 2920, 2924, + 2929, 2947, 2929, 2924, 2936, 2924, 2937, 2924, 2927, 2927, + + 2927, 2927, 2938, 2936, 2862, 2937, 2862, 2922, 2931, 2922, + 2944, 2938, 2931, 2941, 2931, 3243, 2931, 2933, 2862, 2950, + 2933, 2862, 2862, 2863, 2943, 2941, 2946, 2948, 2933, 2933, + 2939, 2951, 2939, 2951, 2948, 2933, 2946, 2966, 2946, 2863, + 2863, 2863, 2863, 2863, 2863, 2956, 2997, 2956, 2863, 2959, + 2997, 2863, 2940, 2940, 2940, 2940, 2940, 2940, 2945, 2955, + 2949, 2943, 2945, 2949, 2945, 2949, 2945, 2943, 2958, 2953, + 2955, 2927, 2944, 2953, 2960, 2967, 2958, 2973, 2968, 2976, + 2944, 2953, 2863, 2953, 2863, 2927, 2963, 2967, 2958, 2950, + 2964, 2963, 2957, 2863, 2943, 2978, 2863, 2964, 2957, 2863, + + 2863, 2934, 2934, 2934, 2934, 2957, 2940, 2966, 2943, 3022, + 2969, 2959, 2970, 3022, 2959, 2959, 2969, 2959, 2970, 2959, + 2961, 2961, 2961, 2961, 2962, 2962, 2962, 2962, 2971, 2974, + 2975, 2980, 2976, 2981, 2988, 2971, 2974, 2990, 2975, 2960, + 2968, 2981, 2983, 2983, 2960, 3249, 2960, 2973, 2968, 2976, + 2979, 2976, 2962, 2986, 2979, 2986, 2979, 2987, 2979, 2995, + 2995, 2979, 2990, 2934, 2934, 2978, 2998, 2987, 2934, 2982, + 2982, 2982, 2982, 2934, 2934, 2984, 2934, 2999, 2999, 2934, + 2934, 2989, 2993, 2934, 2934, 2989, 2993, 2989, 2993, 2989, + 2993, 2984, 2984, 2984, 2984, 2984, 2984, 3001, 2993, 2991, + + 2984, 2980, 2991, 2996, 2988, 2996, 3000, 2991, 3011, 2961, + 3003, 3014, 3000, 2962, 2991, 2992, 2992, 2992, 2992, 2994, + 2994, 3003, 3002, 2994, 3006, 2994, 3007, 2994, 3002, 3004, + 3004, 3006, 3005, 3007, 3008, 3005, 2998, 3013, 3017, 3015, + 3019, 3018, 2982, 3015, 2982, 3015, 3008, 3015, 2982, 3019, + 3034, 3016, 3018, 3016, 3054, 3001, 2982, 3016, 3026, 3001, + 3005, 3011, 3013, 3017, 3020, 3021, 3023, 3001, 3250, 3026, + 3011, 3021, 3023, 3020, 3024, 3024, 3024, 3024, 3011, 3054, + 2992, 3014, 2992, 3025, 2992, 3027, 3027, 3028, 2992, 3029, + 3029, 3030, 3025, 3032, 3032, 3031, 3028, 3025, 3033, 3035, + + 3251, 3028, 2992, 3031, 3030, 3033, 3035, 3036, 3036, 3037, + 3038, 3039, 3040, 3037, 3038, 3039, 3048, 3039, 3042, 3039, + 3034, 3042, 3038, 3041, 3041, 3048, 3042, 3043, 3040, 3040, + 3040, 3040, 3040, 3040, 3044, 3047, 3052, 3040, 3052, 3043, + 3055, 3055, 3057, 3047, 3053, 3059, 3044, 3024, 3049, 3024, + 3049, 3053, 3056, 3049, 3058, 3049, 3061, 3060, 3064, 3067, + 3056, 3024, 3058, 3072, 3077, 3064, 3066, 3072, 3068, 3060, + 3058, 3060, 3063, 3065, 3066, 3063, 3063, 3066, 3063, 3068, + 3063, 3061, 3070, 3073, 3069, 3065, 3065, 3069, 3070, 3071, + 3073, 3074, 3076, 3069, 3075, 3057, 3078, 3081, 3059, 3076, + + 3078, 3071, 3078, 3075, 3078, 3079, 3080, 3079, 3080, 3082, + 3078, 3085, 3057, 3083, 3086, 3059, 3074, 3059, 3087, 3057, + 3084, 3083, 3081, 3089, 3084, 3088, 3084, 3095, 3084, 3067, + 3067, 3088, 3090, 3092, 3077, 3084, 3085, 3091, 3091, 3086, + 3090, 3092, 3093, 3091, 3094, 3099, 3096, 3100, 3101, 3094, + 3093, 3094, 3102, 3103, 3094, 3097, 3093, 3096, 3105, 3097, + 3104, 3097, 3082, 3097, 3107, 3098, 3106, 3104, 3098, 3105, + 3105, 3106, 3108, 3109, 3111, 3082, 3098, 3102, 3103, 3082, + 3095, 3142, 3098, 3112, 3112, 3082, 3115, 3115, 3087, 3107, + 3142, 3110, 3110, 3089, 3110, 3114, 3113, 3095, 3110, 3111, + + 3100, 3110, 3110, 3120, 3117, 3121, 3114, 3099, 3113, 3110, + 3116, 3099, 3117, 3113, 3116, 3099, 3123, 3100, 3101, 3118, + 3101, 3122, 3122, 3118, 3124, 3125, 3127, 3123, 3120, 3138, + 3121, 3118, 3127, 3125, 3126, 3130, 3124, 3128, 3128, 3125, + 3129, 3126, 3108, 3109, 3132, 3133, 3134, 3130, 3129, 3132, + 3136, 3133, 3135, 3139, 3134, 3137, 3120, 3140, 3137, 3141, + 3135, 3146, 3136, 3147, 3135, 3146, 3141, 3143, 3143, 3120, + 3150, 3135, 3145, 3120, 3148, 3120, 3144, 3144, 3139, 3150, + 3160, 3145, 3140, 3149, 3145, 3149, 3148, 3151, 3145, 3152, + 3145, 3154, 3153, 3151, 3156, 3152, 3155, 3149, 3153, 3138, + + 3155, 3157, 3162, 3154, 3158, 3159, 3156, 3159, 3158, 3157, + 3158, 3161, 3158, 3163, 3164, 3165, 3161, 3166, 3168, 3171, + 3167, 3177, 3178, 3165, 3181, 3163, 3164, 3162, 3167, 3168, + 3169, 3166, 3170, 3147, 3169, 3170, 3170, 3172, 3170, 3173, + 3170, 3174, 3174, 3175, 3191, 3172, 3147, 3173, 3179, 3181, + 3160, 3174, 3174, 3192, 3174, 3175, 3179, 3180, 3182, 3174, + 3180, 3182, 3182, 3187, 3182, 3185, 3182, 3183, 3183, 3184, + 3184, 3186, 3195, 3196, 3183, 3185, 3185, 3193, 3186, 3184, + 3188, 3189, 3190, 3177, 3189, 3198, 3193, 3178, 3187, 3171, + 3188, 3177, 3178, 3194, 3190, 3188, 3171, 3191, 3199, 3201, + + 3190, 3197, 3200, 3204, 3194, 3194, 3192, 3199, 3197, 3206, + 3200, 3201, 3203, 3205, 3191, 3192, 3202, 3202, 3207, 3202, + 3203, 3205, 3209, 3192, 3210, 3211, 3252, 3213, 3269, 3192, + 3207, 3209, 3213, 3211, 3206, 3217, 3210, 3195, 3210, 3209, + 3212, 3212, 3195, 3196, 3214, 3259, 3217, 3220, 3259, 3217, + 3270, 3212, 3214, 3215, 3214, 3198, 3215, 3215, 3220, 3215, + 3218, 3215, 3198, 3221, 3218, 3204, 3225, 3225, 3233, 3204, + 3221, 3271, 3218, 3204, 3208, 3224, 3233, 3208, 3208, 3208, + 3208, 3208, 3208, 3208, 3227, 3227, 3224, 3208, 3208, 3226, + 3273, 3208, 3274, 3224, 3208, 3208, 3208, 3208, 3216, 3216, + + 3275, 3226, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3219, 3216, 3216, + 3216, 3222, 3222, 3222, 3222, 3219, 3223, 3234, 3219, 3228, + + 3219, 3219, 3219, 3228, 3229, 3230, 3230, 3231, 3229, 3230, + 3232, 3236, 3232, 3241, 3253, 3263, 3229, 3237, 3232, 3241, + 3253, 3263, 3234, 3231, 3231, 3231, 3231, 3231, 3231, 3237, + 3240, 3237, 3231, 3240, 3245, 3245, 3236, 3242, 3242, 3242, + 3242, 3255, 3255, 3256, 3256, 3242, 3265, 3276, 3266, 3240, + 3244, 3244, 3244, 3244, 3246, 3267, 3262, 3246, 3244, 3262, + 3277, 3247, 3246, 3278, 3222, 3247, 3223, 3279, 3247, 3247, + 3264, 3280, 3248, 3248, 3248, 3248, 3264, 3268, 3222, 3247, + 3248, 3254, 3254, 3254, 3254, 3272, 3281, 3257, 3281, 3254, + 3257, 3257, 3283, 3242, 3257, 3257, 3284, 3286, 3257, 3258, + + 3258, 3258, 3258, 3265, 3266, 3257, 3244, 3245, 3260, 3267, + 3285, 3260, 3287, 3245, 3255, 3285, 3260, 3261, 3288, 3291, + 3255, 3261, 3293, 3256, 3261, 3261, 3268, 3265, 3248, 3266, + 3304, 3298, 3307, 3292, 3268, 3261, 3267, 3254, 3272, 3296, + 3322, 3296, 3298, 3296, 3272, 3300, 3297, 3297, 3297, 3297, + 3299, 3272, 3291, 3272, 3299, 3272, 3289, 3272, 3301, 3303, + 3293, 3300, 3313, 3324, 3258, 3301, 3258, 3258, 3258, 3302, + 3303, 3290, 3289, 3289, 3289, 3289, 3289, 3289, 3292, 3288, + 3325, 3289, 3305, 3306, 3302, 3309, 3258, 3290, 3290, 3290, + 3290, 3290, 3290, 3305, 3310, 3308, 3290, 3312, 3308, 3305, + + 3309, 3306, 3306, 3308, 3313, 3314, 3315, 3316, 3317, 3310, + 3319, 3297, 3312, 3297, 3318, 3297, 3321, 3326, 3314, 3318, + 3320, 3317, 3327, 3321, 3321, 3289, 3297, 3328, 3329, 3330, + 3331, 3315, 3316, 3297, 3320, 3319, 3332, 3333, 3334, 3320, + 3335, 3336, 3337, 3338, 3339, 3340, 3341, 3337, 3342, 3290, + 3294, 3343, 3344, 3345, 3346, 3347, 3348, 3349, 3350, 3351, + 3352, 3353, 3354, 3355, 3357, 3358, 3294, 3294, 3294, 3294, + 3294, 3294, 3359, 3361, 3363, 3294, 3355, 3353, 3294, 3362, + 3362, 3365, 3366, 3375, 3377, 3378, 3379, 3380, 3381, 3376, + 3383, 3382, 3384, 3386, 3388, 3381, 3382, 3387, 3385, 3383, + + 3385, 3391, 3390, 3387, 3395, 3393, 3389, 3391, 3375, 3294, + 3382, 3294, 3392, 3294, 3376, 3393, 3294, 3390, 3392, 3394, + 3393, 3396, 3361, 3294, 3394, 3397, 3294, 3294, 3295, 3398, + 3399, 3399, 3415, 3400, 3398, 3397, 3420, 3401, 3361, 3400, + 3397, 3415, 3362, 3401, 3295, 3295, 3295, 3295, 3295, 3295, + 3389, 3376, 3404, 3295, 3402, 3403, 3295, 3418, 3404, 3375, + 3407, 3405, 3402, 3405, 3407, 3405, 3408, 3365, 3406, 3406, + 3403, 3388, 3418, 3402, 3412, 3410, 3426, 3408, 3409, 3407, + 3410, 3412, 3409, 3416, 3409, 3427, 3412, 3295, 3416, 3295, + 3427, 3295, 3410, 3409, 3410, 3413, 3411, 3414, 3429, 3435, + + 3411, 3295, 3411, 3413, 3295, 3295, 3422, 3433, 3437, 3417, + 3413, 3411, 3433, 3414, 3414, 3414, 3414, 3414, 3414, 3417, + 3436, 3422, 3414, 3436, 3417, 3419, 3419, 3419, 3419, 3421, + 3421, 3421, 3421, 3423, 3428, 3423, 3430, 3440, 3430, 3440, + 3424, 3428, 3434, 3434, 3419, 3419, 3419, 3419, 3419, 3419, + 3424, 3438, 3438, 3438, 3438, 3424, 3425, 3425, 3425, 3425, + 3425, 3425, 3431, 3447, 3432, 3444, 3444, 3442, 3432, 3431, + 3432, 3439, 3439, 3439, 3439, 3441, 3443, 3449, 3452, 3432, + 3443, 3441, 3445, 3443, 3421, 3419, 3446, 3451, 3445, 3443, + 3446, 3455, 3446, 3448, 3443, 3454, 3436, 3452, 3448, 3439, + + 3436, 3446, 3451, 3453, 3455, 3419, 3453, 3457, 3458, 3421, + 3454, 3459, 3470, 3484, 3456, 3425, 3421, 3425, 3442, 3442, + 3442, 3453, 3456, 3442, 3470, 3450, 3442, 3442, 3461, 3450, + 3449, 3450, 3450, 3456, 3442, 3463, 3461, 3450, 3438, 3462, + 3488, 3460, 3464, 3442, 3460, 3462, 3467, 3465, 3460, 3449, + 3463, 3465, 3465, 3469, 3449, 3460, 3460, 3464, 3439, 3466, + 3471, 3467, 3468, 3473, 3466, 3485, 3468, 3472, 3472, 3474, + 3469, 3473, 3475, 3476, 3474, 3471, 3485, 3475, 3477, 3477, + 3476, 3478, 3478, 3479, 3480, 3458, 3482, 3482, 3479, 3480, + 3479, 3481, 3486, 3481, 3477, 3479, 3483, 3483, 3487, 3493, + + 3494, 3495, 3496, 3483, 3495, 3497, 3498, 3483, 3498, 3495, + 3497, 3486, 3499, 3502, 3493, 3494, 3520, 3487, 3500, 3501, + 3496, 3504, 3500, 3499, 3500, 3503, 3501, 3503, 3505, 3503, + 3506, 3508, 3505, 3500, 3505, 3511, 3506, 3501, 3504, 3507, + 3504, 3509, 3508, 3505, 3507, 3510, 3509, 3512, 3513, 3511, + 3508, 3510, 3514, 3515, 3516, 3513, 3517, 3515, 3512, 3518, + 3513, 3519, 3517, 3522, 3521, 3525, 3524, 3514, 3521, 3523, + 3516, 3522, 3518, 3523, 3528, 3523, 3526, 3531, 3530, 3525, + 3519, 3527, 3526, 3521, 3523, 3524, 3524, 3527, 3529, 3532, + 3533, 3535, 3534, 3526, 3530, 3536, 3529, 3537, 3544, 3532, + + 3540, 3533, 3538, 3540, 3532, 3534, 3538, 3535, 3538, 3539, + 3536, 3542, 3537, 3539, 3541, 3543, 3547, 3538, 3542, 3548, + 3541, 3543, 3551, 3549, 3550, 3552, 3548, 3549, 3551, 3558, + 3553, 3555, 3554, 3551, 3547, 3559, 3528, 3554, 3556, 3563, + 3557, 3528, 3552, 3550, 3553, 3560, 3555, 3557, 3562, 3553, + 3563, 3566, 3556, 3560, 3559, 3561, 3567, 3556, 3561, 3561, + 3564, 3561, 3564, 3562, 3568, 3565, 3566, 3569, 3570, 3565, + 3561, 3565, 3571, 3572, 3571, 3573, 3580, 3564, 3600, 3574, + 3565, 3565, 3580, 3570, 3567, 3567, 3574, 3580, 3619, 3568, + 3567, 3567, 3572, 3576, 3581, 3567, 3567, 3567, 3581, 3576, + + 3567, 3567, 3567, 3575, 3588, 3567, 3575, 3575, 3591, 3575, + 3577, 3578, 3576, 3576, 3583, 3578, 3591, 3577, 3595, 3588, + 3575, 3575, 3575, 3575, 3577, 3582, 3578, 3578, 3579, 3577, + 3584, 3579, 3579, 3583, 3584, 3586, 3589, 3595, 3582, 3597, + 3585, 3582, 3585, 3582, 3569, 3586, 3585, 3601, 3585, 3584, + 3586, 3589, 3589, 3585, 3590, 3587, 3593, 3585, 3585, 3587, + 3590, 3587, 3592, 3594, 3597, 3602, 3601, 3592, 3594, 3592, + 3593, 3603, 3604, 3605, 3610, 3593, 3603, 3605, 3606, 3605, + 3602, 3607, 3608, 3606, 3609, 3611, 3608, 3604, 3605, 3610, + 3613, 3615, 3616, 3614, 3617, 3607, 3616, 3609, 3613, 3614, + + 3607, 3608, 3622, 3623, 3624, 3625, 3615, 3622, 3623, 3624, + 3625, 3617, 3622, 3626, 3628, 3629, 3647, 3630, 3626, 3629, + 3629, 3624, 3630, 3631, 3633, 3822, 3626, 3632, 3631, 3633, + 3630, 3632, 3632, 3840, 3639, 3635, 3631, 3639, 3633, 3628, + 3635, 3632, 3634, 3849, 3628, 3637, 3634, 3634, 3636, 3635, + 3637, 3850, 3638, 3636, 3851, 3640, 3634, 3638, 3637, 3640, + 3640, 3611, 3611, 3612, 3612, 3638, 3636, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3618, 3627, 3641, 3642, + 3643, 3853, 3644, 3641, 3642, 3643, 3644, 3644, 3658, 3857, + 3645, 3641, 3658, 3658, 3642, 3645, 3642, 3646, 3645, 3858, + 3643, 3646, 3646, 3860, 3648, 3646, 3649, 3646, 3648, 3648, + 3652, 3649, 3648, 3649, 3648, 3652, 3646, 3650, 3651, 3861, + + 3649, 3650, 3650, 3651, 3652, 3662, 3862, 3653, 3651, 3650, + 3662, 3653, 3653, 3750, 3750, 3627, 3863, 3656, 3618, 3654, + 3627, 3653, 3656, 3654, 3654, 3655, 3655, 3655, 3655, 3864, + 3663, 3733, 3618, 3618, 3620, 3663, 3656, 3865, 3654, 3657, + 3657, 3657, 3657, 3733, 3655, 3655, 3655, 3655, 3655, 3655, + 3620, 3620, 3620, 3620, 3620, 3620, 3659, 3871, 3665, 3620, + 3660, 3659, 3620, 3665, 3660, 3660, 3661, 3661, 3661, 3661, + 3661, 3661, 3664, 3659, 3660, 3666, 3667, 3664, 3669, 3872, + 3666, 3667, 3670, 3669, 3664, 3655, 3655, 3670, 3667, 3780, + 3868, 3655, 3666, 3620, 3657, 3620, 3671, 3868, 3780, 3673, + + 3657, 3671, 3670, 3672, 3673, 3657, 3672, 3620, 3661, 3677, + 3620, 3620, 3668, 3661, 3677, 3671, 3668, 3668, 3620, 3621, + 3668, 3874, 3668, 3680, 3674, 3661, 3657, 3677, 3680, 3674, + 3682, 3866, 3876, 3818, 3866, 3621, 3621, 3621, 3621, 3621, + 3621, 3674, 3818, 3675, 3621, 3676, 3676, 3621, 3675, 3678, + 3676, 3867, 3681, 3676, 3678, 3679, 3675, 3681, 3691, 3679, + 3679, 3867, 3678, 3679, 3672, 3679, 3681, 3684, 3685, 3672, + 3687, 3684, 3684, 3685, 3687, 3687, 3689, 3621, 3621, 3672, + 3621, 3689, 3621, 3682, 3689, 3686, 3686, 3877, 3682, 3686, + 3686, 3737, 3621, 3682, 3683, 3621, 3621, 3737, 3878, 3683, + + 3880, 3683, 3682, 3621, 3688, 3683, 3690, 3683, 3683, 3688, + 3688, 3690, 3692, 3694, 3882, 3693, 3691, 3692, 3694, 3693, + 3693, 3691, 3693, 3695, 3694, 3696, 3693, 3883, 3695, 3696, + 3696, 3692, 3697, 3693, 3698, 3699, 3697, 3697, 3700, 3698, + 3699, 3701, 3700, 3700, 3703, 3702, 3701, 3702, 3695, 3703, + 3702, 3703, 3698, 3704, 3705, 3706, 3701, 3704, 3704, 3705, + 3706, 3884, 3707, 3708, 3827, 3711, 3706, 3707, 3708, 3709, + 3711, 3885, 3705, 3827, 3709, 3710, 3707, 3708, 3710, 3710, + 3710, 3709, 3712, 3713, 3886, 3711, 3714, 3712, 3713, 3712, + 3715, 3714, 3887, 3716, 3712, 3715, 3712, 3713, 3716, 3717, + + 3869, 3869, 3888, 3714, 3717, 3716, 3716, 3718, 3719, 3720, + 3715, 3889, 3718, 3719, 3720, 3718, 3716, 3721, 3717, 3722, + 3891, 3723, 3721, 3722, 3722, 3723, 3723, 3724, 3725, 3725, + 3726, 3727, 3724, 3725, 3728, 3726, 3727, 3892, 3724, 3728, + 3892, 3724, 3728, 3900, 3726, 3729, 3730, 3730, 3727, 3729, + 3729, 3730, 3731, 3729, 3730, 3729, 3732, 3731, 3734, 3906, + 3907, 3732, 3734, 3734, 3729, 3730, 3734, 3735, 3734, 3736, + 3738, 3732, 3735, 3732, 3736, 3738, 3739, 3740, 3909, 3910, + 3735, 3739, 3740, 3736, 3738, 3741, 3846, 3742, 3757, 3739, + 3741, 3743, 3742, 3741, 3742, 3743, 3743, 3744, 3846, 3912, + + 3745, 3742, 3744, 3745, 3746, 3745, 3748, 3913, 3747, 3746, + 3749, 3748, 3744, 3747, 3747, 3749, 3751, 3746, 3752, 3753, + 3754, 3751, 3752, 3752, 3753, 3754, 3752, 3751, 3752, 3755, + 3756, 3755, 3915, 3758, 3755, 3756, 3757, 3755, 3758, 3753, + 3918, 3757, 3759, 3756, 3758, 3759, 3760, 3759, 3761, 3762, + 3757, 3760, 3761, 3761, 3762, 3763, 3919, 3762, 3917, 3768, + 3763, 3763, 3761, 3764, 3768, 3760, 3764, 3765, 3764, 3766, + 3920, 3765, 3765, 3766, 3766, 3767, 3769, 3917, 3921, 3767, + 3767, 3769, 3768, 3767, 3770, 3767, 3773, 3771, 3772, 3770, + 3922, 3773, 3771, 3772, 3923, 3774, 3774, 3775, 3769, 3771, + + 3774, 3772, 3775, 3776, 3925, 3777, 3778, 3781, 3776, 3770, + 3777, 3778, 3781, 3795, 3778, 3926, 3928, 3779, 3776, 3779, + 3778, 3781, 3779, 3775, 3782, 3783, 3784, 3785, 3782, 3782, + 3783, 3784, 3785, 3947, 3950, 3786, 3787, 3790, 3784, 3783, + 3786, 3787, 3790, 3916, 3788, 3790, 3916, 3787, 3788, 3788, + 3798, 3788, 3788, 3789, 3788, 3798, 3951, 3789, 3789, 3791, + 3797, 3791, 3792, 3791, 3791, 3797, 3792, 3792, 3952, 3793, + 3792, 3795, 3792, 3793, 3793, 3796, 3795, 3797, 3953, 3796, + 3796, 3799, 3792, 3794, 3800, 3802, 3799, 3801, 3801, 3800, + 3802, 3901, 3802, 3803, 3901, 3805, 3800, 3803, 3803, 3802, + + 3805, 3803, 3801, 3805, 3806, 3854, 3854, 3854, 3854, 3806, + 3794, 3794, 3794, 3803, 3954, 3794, 3804, 3794, 3794, 3806, + 3955, 3804, 3794, 3794, 3794, 3807, 3807, 3794, 3794, 3794, + 3807, 3804, 3794, 3808, 3804, 3958, 3809, 3959, 3808, 3807, + 3809, 3809, 3807, 3810, 3812, 3810, 3960, 3810, 3810, 3812, + 3811, 3810, 3984, 3810, 3811, 3811, 3901, 3812, 3810, 3831, + 3985, 3812, 3813, 3810, 3811, 3814, 3813, 3813, 3815, 3814, + 3814, 3816, 3817, 3815, 3819, 3820, 3816, 3817, 3821, 3819, + 3820, 3815, 3816, 3821, 3817, 3814, 3823, 4027, 3819, 3817, + 3823, 3823, 3824, 4168, 3825, 3826, 3824, 3824, 3825, 3825, + + 3826, 3828, 3825, 3845, 3825, 3828, 3828, 3829, 3845, 3826, + 3830, 3845, 3829, 3829, 3830, 3830, 3833, 3831, 3834, 4058, + 3835, 3833, 3831, 3834, 3835, 3835, 3929, 3833, 3837, 3929, + 3837, 3834, 4058, 3837, 3844, 3831, 3832, 3832, 3844, 3844, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3836, + 3838, 3841, 3839, 3842, 3836, 3841, 3841, 3839, 3842, 3841, + 3890, 3841, 3843, 3924, 3836, 3839, 3847, 3843, 3924, 4237, + 3847, 3847, 3848, 3842, 3847, 3893, 3847, 3848, 3893, 3843, + 4319, 3856, 3856, 3848, 3855, 3855, 3855, 3855, 3856, 3859, + 3894, 3903, 3983, 3894, 3875, 3875, 3859, 3856, 3856, 3856, + 3859, 3859, 3873, 3875, 4368, 3859, 3859, 3859, 3838, 3873, + 3914, 3948, 3838, 3838, 3873, 3914, 3948, 3983, 3873, 3873, + + 3873, 3895, 3896, 3914, 3895, 3896, 3838, 3897, 3898, 3899, + 3897, 3898, 3899, 3977, 3986, 3977, 3890, 3890, 3902, 3902, + 3902, 3902, 3903, 4295, 3902, 3904, 3904, 3904, 3904, 3904, + 3904, 4079, 4295, 4079, 3893, 3905, 3905, 3905, 3905, 3986, + 3930, 3905, 3894, 3930, 3931, 3932, 3933, 3931, 3932, 3933, + 3934, 3936, 3903, 3934, 3936, 3935, 3937, 3938, 3935, 3937, + 3938, 3939, 3940, 3904, 3939, 3940, 3896, 3943, 3941, 3942, + 3943, 3941, 3942, 3956, 3895, 3945, 3898, 3944, 3945, 3946, + 3944, 3898, 3946, 4007, 3957, 3949, 4007, 4399, 3897, 3899, + 3949, 3963, 3963, 3963, 3963, 4400, 3967, 3968, 3956, 3970, + + 3949, 3967, 3968, 3949, 3970, 3902, 3967, 4011, 3949, 3957, + 3933, 3964, 3964, 3964, 3964, 4121, 3931, 4121, 3932, 3930, + 3936, 3975, 3905, 3935, 3965, 3965, 3965, 3965, 3935, 4403, + 3969, 3934, 4011, 3942, 3940, 3969, 3976, 3971, 3972, 3964, + 3939, 3941, 3971, 3972, 3945, 3944, 3957, 3969, 3943, 3956, + 3944, 3971, 3946, 3961, 3966, 3966, 3966, 3966, 3973, 4358, + 3978, 3976, 3974, 3973, 3978, 3978, 3976, 3974, 4358, 3961, + 3961, 3961, 3961, 3961, 3961, 3974, 3994, 3979, 3961, 3975, + 4044, 3961, 3979, 4222, 3975, 3965, 4044, 3980, 3981, 4222, + 3965, 3979, 3980, 3981, 3979, 3982, 3965, 3965, 3980, 4409, + + 3982, 3981, 3965, 3987, 3980, 3988, 3989, 4164, 3987, 4164, + 3988, 3989, 3961, 4210, 3961, 3966, 4003, 4410, 3988, 3990, + 3966, 4003, 3987, 3991, 3990, 4210, 3961, 3992, 3991, 3961, + 3961, 4411, 3992, 3990, 3994, 4373, 3993, 3961, 3962, 3994, + 3991, 3993, 4003, 4177, 4373, 4177, 3995, 3993, 3994, 3992, + 3995, 3995, 4241, 4241, 3962, 3962, 3962, 3962, 3962, 3962, + 3995, 3993, 3996, 3962, 3997, 4413, 3962, 3996, 3997, 3997, + 3998, 4431, 3999, 4000, 3998, 3998, 3996, 3999, 4000, 4430, + 4001, 4012, 4430, 4002, 3998, 4001, 3999, 4002, 4002, 4015, + 4002, 4000, 4021, 4001, 4015, 4005, 3962, 3962, 4004, 3962, + + 4005, 3962, 4004, 4004, 4006, 4008, 4012, 4015, 4005, 4006, + 4008, 3962, 4020, 4432, 3962, 3962, 4009, 4020, 4006, 4008, + 4009, 4009, 3962, 4010, 4009, 4020, 4009, 4439, 4010, 4013, + 4013, 4013, 4013, 4014, 4442, 4443, 4016, 4010, 4014, 4014, + 4016, 4016, 4017, 4017, 4017, 4017, 4018, 4018, 4018, 4018, + 4021, 4022, 4023, 4034, 4037, 4021, 4022, 4023, 4014, 4024, + 4028, 4444, 4025, 4024, 4024, 4028, 4022, 4025, 4022, 4445, + 4025, 4031, 4023, 4026, 4018, 4031, 4031, 4026, 4026, 4037, + 4028, 4026, 4029, 4026, 4032, 4048, 4033, 4029, 4032, 4032, + 4013, 4033, 4026, 4033, 4013, 4013, 4446, 4029, 4030, 4042, + + 4033, 4029, 4030, 4030, 4042, 4035, 4030, 4447, 4030, 4035, + 4035, 4034, 4038, 4041, 4036, 4034, 4034, 4035, 4036, 4036, + 4040, 4043, 4045, 4035, 4040, 4040, 4043, 4052, 4038, 4038, + 4038, 4038, 4038, 4038, 4039, 4047, 4046, 4038, 4041, 4039, + 4047, 4046, 4054, 4048, 4039, 4060, 4064, 4045, 4048, 4047, + 4041, 4046, 4052, 4449, 4046, 4049, 4041, 4048, 4050, 4049, + 4049, 4048, 4050, 4050, 4051, 4051, 4051, 4051, 4063, 4049, + 4057, 4053, 4450, 4055, 4057, 4057, 4053, 4050, 4055, 4056, + 4056, 4056, 4056, 4051, 4051, 4051, 4051, 4051, 4051, 4053, + 4059, 4068, 4055, 4063, 4065, 4059, 4068, 4041, 4066, 4191, + + 4054, 4191, 4453, 4060, 4064, 4054, 4061, 4059, 4060, 4064, + 4061, 4061, 4062, 4062, 4062, 4062, 4062, 4062, 4069, 4065, + 4061, 4071, 4454, 4459, 4051, 4051, 4067, 4067, 4067, 4067, + 4051, 4072, 4070, 4073, 4056, 4072, 4072, 4070, 4073, 4073, + 4056, 4485, 4075, 4069, 4070, 4056, 4071, 4074, 4074, 4074, + 4074, 4078, 4238, 4077, 4062, 4076, 4066, 4081, 4077, 4062, + 4076, 4066, 4238, 4080, 4083, 4093, 4056, 4075, 4080, 4076, + 4077, 4062, 4452, 4459, 4082, 4089, 4078, 4080, 4082, 4082, + 4089, 4084, 4081, 4090, 4452, 4082, 4084, 4067, 4090, 4083, + 4093, 4486, 4067, 4084, 4085, 4085, 4085, 4085, 4091, 4086, + + 4086, 4086, 4086, 4091, 4078, 4092, 4094, 4095, 4074, 4094, + 4092, 4096, 4095, 4074, 4098, 4067, 4096, 4487, 4091, 4098, + 4435, 4207, 4074, 4207, 4092, 4096, 4074, 4086, 4087, 4087, + 4087, 4098, 4087, 4087, 4074, 4096, 4087, 4100, 4087, 4099, + 4097, 4097, 4097, 4097, 4099, 4101, 4102, 4102, 4103, 4107, + 4101, 4102, 4099, 4103, 4102, 4104, 4106, 4488, 4458, 4103, + 4104, 4106, 4101, 4104, 4114, 4108, 4110, 4094, 4097, 4114, + 4108, 4489, 4094, 4103, 4107, 4435, 4109, 4106, 4114, 4490, + 4109, 4109, 4094, 4108, 4109, 4100, 4109, 4111, 4100, 4100, + 4100, 4110, 4111, 4100, 4119, 4109, 4100, 4100, 4112, 4119, + + 4111, 4122, 4112, 4112, 4100, 4116, 4112, 4458, 4112, 4117, + 4116, 4470, 4116, 4100, 4117, 4470, 4116, 4118, 4116, 4116, + 4117, 4118, 4118, 4215, 4491, 4215, 4122, 4097, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4113, 4113, 4113, 4113, 4115, 4120, 4123, 4125, 4455, + 4124, 4128, 4123, 4125, 4124, 4124, 4128, 4128, 4124, 4123, + 4124, 4126, 4126, 4127, 4434, 4126, 4126, 4127, 4127, 4129, + 4133, 4120, 4123, 4441, 4129, 4133, 4441, 4129, 4130, 4130, + 4130, 4130, 4131, 4131, 4131, 4131, 4134, 4134, 4134, 4134, + 4135, 4321, 4140, 4321, 4412, 4135, 4140, 4140, 4115, 4120, + 4137, 4138, 4113, 4115, 4412, 4137, 4138, 4113, 4115, 4135, + 4131, 4136, 4138, 4143, 4492, 4136, 4136, 4115, 4136, 4137, + + 4139, 4142, 4136, 4141, 4455, 4139, 4142, 4141, 4141, 4136, + 4144, 4493, 4145, 4460, 4436, 4144, 4145, 4145, 4143, 4142, + 4494, 4146, 4434, 4496, 4148, 4139, 4146, 4134, 4147, 4148, + 4147, 4148, 4134, 4147, 4149, 4150, 4146, 4151, 4149, 4149, + 4150, 4152, 4151, 4169, 4153, 4154, 4152, 4156, 4151, 4153, + 4154, 4163, 4156, 4150, 4438, 4152, 4155, 4154, 4153, 4155, + 4155, 4155, 4460, 4157, 4158, 4167, 4159, 4156, 4157, 4158, + 4157, 4159, 4178, 4436, 4160, 4157, 4163, 4157, 4158, 4160, + 4161, 4160, 4162, 4159, 4165, 4161, 4175, 4162, 4160, 4165, + 4167, 4166, 4171, 4469, 4162, 4162, 4166, 4171, 4165, 4497, + + 4161, 4169, 4498, 4186, 4163, 4162, 4169, 4170, 4165, 4172, + 4166, 4175, 4170, 4438, 4172, 4170, 4172, 4173, 4167, 4474, + 4174, 4176, 4173, 4172, 4174, 4174, 4176, 4179, 4186, 4474, + 4178, 4499, 4179, 4500, 4178, 4178, 4180, 4181, 4179, 4181, + 4180, 4180, 4181, 4182, 4183, 4469, 4184, 4187, 4182, 4183, + 4184, 4184, 4187, 4190, 4182, 4196, 4189, 4198, 4183, 4187, + 4501, 4189, 4183, 4185, 4185, 4185, 4185, 4503, 4504, 4188, + 4189, 4192, 4187, 4188, 4188, 4478, 4192, 4188, 4190, 4188, + 4196, 4193, 4198, 4199, 4192, 4193, 4193, 4188, 4199, 4193, + 4192, 4193, 4194, 4194, 4195, 4206, 4505, 4194, 4197, 4195, + + 4199, 4193, 4212, 4197, 4478, 4507, 4190, 4509, 4195, 4197, + 4197, 4200, 4216, 4201, 4478, 4197, 4200, 4201, 4201, 4200, + 4206, 4201, 4510, 4201, 4185, 4202, 4202, 4212, 4185, 4185, + 4202, 4205, 4201, 4202, 4512, 4185, 4205, 4216, 4185, 4205, + 4213, 4185, 4203, 4513, 4202, 4213, 4203, 4203, 4206, 4506, + 4203, 4214, 4203, 4213, 4204, 4204, 4204, 4404, 4404, 4204, + 4506, 4203, 4204, 4208, 4208, 4208, 4208, 4220, 4204, 4209, + 4221, 4204, 4204, 4204, 4209, 4211, 4214, 4514, 4517, 4211, + 4211, 4479, 4217, 4211, 4209, 4211, 4209, 4217, 4218, 4219, + 4217, 4479, 4220, 4218, 4219, 4221, 4217, 4223, 4480, 4518, + + 4224, 4225, 4223, 4219, 4214, 4224, 4225, 4226, 4480, 4227, + 4236, 4223, 4226, 4224, 4227, 4226, 4227, 4228, 4244, 4524, + 4404, 4525, 4228, 4227, 4208, 4228, 4229, 4230, 4526, 4208, + 4229, 4229, 4230, 4231, 4232, 4236, 4231, 4559, 4231, 4232, + 4233, 4235, 4230, 4234, 4251, 4233, 4235, 4232, 4234, 4234, + 4239, 4240, 4233, 4242, 4245, 4239, 4240, 4243, 4242, 4245, + 4255, 4243, 4243, 4239, 4242, 4243, 4257, 4243, 4246, 4247, + 4563, 4244, 4254, 4246, 4247, 4248, 4244, 4254, 4249, 4258, + 4248, 4244, 4249, 4249, 4252, 4254, 4252, 4247, 4246, 4252, + 4244, 4264, 4252, 4248, 4250, 4250, 4250, 4250, 4253, 4567, + + 4256, 4568, 4251, 4253, 4258, 4256, 4251, 4251, 4255, 4253, + 4251, 4256, 4251, 4255, 4269, 4260, 4255, 4529, 4259, 4260, + 4260, 4262, 4255, 4259, 4257, 4262, 4262, 4529, 4257, 4257, + 4551, 4261, 4259, 4263, 4261, 4259, 4261, 4578, 4263, 4269, + 4267, 4464, 4265, 4464, 4264, 4267, 4265, 4265, 4267, 4264, + 4551, 4464, 4263, 4264, 4264, 4250, 4250, 4584, 4613, 4266, + 4250, 4265, 4268, 4266, 4266, 4272, 4250, 4268, 4268, 4272, + 4272, 4270, 4250, 4266, 4270, 4273, 4270, 4274, 4275, 4273, + 4273, 4274, 4274, 4275, 4282, 4274, 4276, 4274, 4276, 4275, + 4277, 4276, 4278, 4280, 4279, 4277, 4639, 4278, 4280, 4279, + + 4281, 4277, 4283, 4292, 4305, 4281, 4285, 4283, 4284, 4282, + 4302, 4285, 4286, 4284, 4281, 4278, 4279, 4286, 4280, 4285, + 4284, 4283, 4288, 4288, 4289, 4290, 4291, 4288, 4292, 4289, + 4290, 4291, 4294, 4293, 4294, 4302, 4304, 4294, 4293, 4296, + 4290, 4293, 4579, 4301, 4296, 4579, 4315, 4293, 4301, 4298, + 4289, 4297, 4318, 4296, 4298, 4297, 4297, 4298, 4299, 4300, + 4303, 4304, 4305, 4299, 4300, 4303, 4650, 4305, 4306, 4307, + 4308, 4300, 4299, 4306, 4307, 4308, 4303, 4318, 4309, 4323, + 4326, 4308, 4309, 4309, 4465, 4309, 4309, 4310, 4309, 4311, + 4312, 4310, 4310, 4311, 4311, 4312, 4693, 4320, 4312, 4313, + + 4313, 4313, 4313, 4314, 4315, 4318, 4333, 4325, 4314, 4315, + 4316, 4727, 4316, 4314, 4316, 4316, 4317, 4728, 4731, 4327, + 4317, 4317, 4320, 4322, 4317, 4324, 4317, 4322, 4322, 4324, + 4324, 4322, 4325, 4322, 4329, 4330, 4317, 4323, 4326, 4734, + 4330, 4323, 4323, 4326, 4327, 4336, 4465, 4331, 4332, 4330, + 4320, 4331, 4331, 4332, 4405, 4405, 4465, 4334, 4783, 4329, + 4313, 4334, 4334, 4335, 4333, 4313, 4332, 4337, 4335, 4333, + 4336, 4338, 4337, 4339, 4313, 4328, 4338, 4789, 4339, 4342, + 4335, 4341, 4341, 4344, 4342, 4339, 4342, 4348, 4344, 4345, + 4414, 4414, 4348, 4342, 4345, 4344, 4341, 4345, 4344, 4794, + + 4355, 4344, 4328, 4328, 4328, 4355, 4362, 4328, 4795, 4328, + 4328, 4362, 4346, 4355, 4328, 4328, 4328, 4346, 4405, 4328, + 4328, 4328, 4340, 4340, 4328, 4340, 4340, 4346, 4340, 4796, + 4732, 4349, 4340, 4340, 4340, 4349, 4349, 4732, 4340, 4340, + 4340, 4340, 4340, 4343, 4347, 4347, 4798, 4343, 4343, 4347, + 4359, 4343, 4350, 4414, 4350, 4359, 4350, 4350, 4347, 4720, + 4350, 4347, 4350, 4343, 4359, 4351, 4364, 4350, 4350, 4351, + 4351, 4352, 4350, 4353, 4720, 4360, 4352, 4353, 4353, 4351, + 4360, 4354, 4356, 4802, 4352, 4354, 4354, 4356, 4352, 4361, + 4357, 4364, 4360, 4356, 4361, 4357, 4804, 4805, 4363, 4367, + + 4375, 4354, 4357, 4363, 4367, 4375, 4375, 4357, 4369, 4363, + 4370, 4361, 4369, 4369, 4370, 4370, 4371, 4372, 4807, 4808, + 4371, 4371, 4372, 4363, 4371, 4374, 4371, 4389, 4376, 4374, + 4374, 4372, 4376, 4376, 4377, 4521, 4378, 4390, 4809, 4377, + 4378, 4378, 4390, 4378, 4378, 4379, 4416, 4416, 4390, 4377, + 4379, 4380, 4379, 4381, 4395, 4380, 4380, 4387, 4381, 4380, + 4381, 4380, 4382, 4382, 4382, 4382, 4383, 4381, 4398, 4401, + 4810, 4383, 4384, 4384, 4384, 4384, 4385, 4385, 4385, 4385, + 4383, 4391, 4387, 4392, 4383, 4389, 4391, 4392, 4392, 4803, + 4389, 4393, 4803, 4394, 4391, 4394, 4393, 4396, 4394, 4389, + + 4407, 4396, 4396, 4397, 4385, 4407, 4393, 4416, 4397, 4812, + 4397, 4523, 4395, 4448, 4440, 4397, 4395, 4395, 4448, 4407, + 4417, 4521, 4397, 4382, 4515, 4417, 4398, 4401, 4382, 4440, + 4395, 4398, 4401, 4440, 4467, 4515, 4523, 4813, 4467, 4417, + 4815, 4382, 4388, 4388, 4467, 4817, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4402, 4415, 4415, 4402, 4402, + 4437, 4402, 4406, 4406, 4406, 4406, 4419, 4530, 4520, 4520, + 4818, 4419, 4402, 4402, 4402, 4402, 4408, 4530, 4419, 4419, + 4408, 4408, 4421, 4418, 4408, 4729, 4408, 4421, 4533, 4419, + 4422, 4729, 4822, 4564, 4422, 4422, 4408, 4564, 4422, 4429, + 4422, 4421, 4429, 4423, 4423, 4722, 4423, 4429, 4653, 4463, + 4422, 4531, 4653, 4533, 4823, 4437, 4476, 4406, 4423, 4463, + + 4415, 4531, 4437, 4406, 4463, 4476, 4476, 4824, 4406, 4476, + 4722, 4406, 4520, 4437, 4418, 4418, 4418, 4466, 4825, 4418, + 4466, 4406, 4418, 4418, 4466, 4471, 4468, 4466, 4468, 4471, + 4418, 4466, 4468, 4681, 4826, 4471, 4429, 4681, 4468, 4418, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4827, 4420, 4420, + + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4424, 4821, 4532, 4424, 4424, 4425, 4424, + 4426, 4425, 4425, 4426, 4425, 4532, 4427, 4828, 4426, 4427, + 4424, 4424, 4424, 4424, 4427, 4425, 4425, 4425, 4425, 4428, + 4433, 4481, 4428, 4733, 4456, 4733, 4433, 4428, 4481, 4477, + 4585, 4481, 4433, 4433, 4457, 4433, 4537, 4550, 4433, 4433, + 4456, 4456, 4456, 4456, 4456, 4456, 4537, 4550, 4473, 4456, + 4457, 4457, 4457, 4457, 4457, 4457, 4472, 4475, 4552, 4457, + + 4472, 4482, 4472, 4829, 4830, 4475, 4472, 4475, 4552, 4482, + 4475, 4482, 4472, 4519, 4483, 4427, 4473, 4473, 4821, 4473, + 4833, 4483, 4473, 4473, 4483, 4534, 4522, 4473, 4473, 4426, + 4535, 4477, 4473, 4473, 4473, 4427, 4457, 4473, 4511, 4511, + 4456, 4477, 4516, 4516, 4835, 4511, 4585, 4516, 4428, 4461, + 4516, 4522, 4836, 4541, 4511, 4511, 4511, 4541, 4516, 4541, + 4587, 4536, 4519, 4541, 4541, 4461, 4461, 4461, 4461, 4461, + 4461, 4536, 4837, 4771, 4461, 4519, 4536, 4461, 4527, 4527, + 4527, 4527, 4527, 4527, 4540, 4538, 4540, 4534, 4522, 4539, + 4547, 4838, 4535, 4540, 4547, 4538, 4540, 4534, 4771, 4542, + + 4547, 4542, 4535, 4538, 4544, 4545, 4544, 4839, 4461, 4588, + 4461, 4542, 4461, 4554, 4543, 4545, 4544, 4543, 4543, 4545, + 4461, 4587, 4461, 4554, 4527, 4461, 4461, 4462, 4543, 4548, + 4546, 4546, 4546, 4546, 4831, 4580, 4587, 4831, 4580, 4548, + 4548, 4840, 4539, 4462, 4462, 4462, 4462, 4462, 4462, 4549, + 4553, 4539, 4462, 4555, 4553, 4462, 4556, 4555, 4841, 4549, + 4553, 4539, 4558, 4580, 4549, 4588, 4556, 4555, 4557, 4557, + 4832, 4569, 4558, 4539, 4570, 4558, 4590, 4570, 4589, 4557, + 4565, 4565, 4565, 4565, 4832, 4588, 4462, 4570, 4462, 4462, + 4462, 4560, 4560, 4560, 4560, 4546, 4820, 4546, 4571, 4462, + + 4462, 4844, 4820, 4462, 4462, 4546, 4562, 4571, 4571, 4546, + 4560, 4560, 4560, 4560, 4560, 4560, 4845, 4546, 4561, 4561, + 4561, 4561, 4562, 4562, 4562, 4562, 4562, 4562, 4586, 4846, + 4591, 4562, 4590, 4569, 4600, 4565, 4847, 4561, 4561, 4561, + 4561, 4561, 4561, 4569, 4572, 4589, 4561, 4566, 4566, 4566, + 4566, 4849, 4590, 4592, 4589, 4569, 4856, 4857, 4574, 4600, + 4572, 4572, 4572, 4572, 4572, 4572, 4573, 4565, 4574, 4572, + 4573, 4576, 4582, 4575, 4577, 4566, 4573, 4575, 4583, 4858, + 4586, 4576, 4582, 4575, 4577, 4577, 4591, 4600, 4583, 4583, + 4586, 4594, 4583, 4595, 4859, 4594, 4612, 4595, 4597, 4597, + + 4602, 4592, 4566, 4595, 4586, 4594, 4591, 4596, 4592, 4597, + 4602, 4596, 4598, 4596, 4599, 4603, 4604, 4596, 4616, 4603, + 4592, 4612, 4598, 4598, 4599, 4603, 4604, 4599, 4616, 4592, + 4601, 4601, 4601, 4601, 4566, 4608, 4605, 4617, 4601, 4605, + 4606, 4606, 4607, 4609, 4860, 4608, 4607, 4617, 4606, 4605, + 4862, 4606, 4609, 4609, 4610, 4610, 4607, 4608, 4601, 4607, + 4611, 4614, 4615, 4863, 4610, 4614, 4615, 4618, 4615, 4611, + 4611, 4614, 4615, 4612, 4621, 4621, 4864, 4618, 4619, 4619, + 4619, 4619, 4620, 4622, 4621, 4623, 4620, 4624, 4620, 4625, + 4626, 4601, 4620, 4622, 4626, 4623, 4626, 4624, 4625, 4625, + + 4626, 4627, 4628, 4628, 4630, 4629, 4629, 4631, 4632, 4601, + 4643, 4627, 4866, 4628, 4630, 4627, 4629, 4631, 4632, 4633, + 4634, 4634, 4633, 4635, 4636, 4636, 4637, 4867, 4638, 4640, + 4648, 4634, 4869, 4635, 4619, 4636, 4637, 4641, 4638, 4640, + 4648, 4637, 4638, 4619, 4640, 4773, 4642, 4641, 4641, 4644, + 4662, 4645, 4644, 4619, 4642, 4645, 4642, 4649, 4649, 4644, + 4646, 4645, 4800, 4655, 4646, 4870, 4644, 4649, 4647, 4647, + 4773, 4800, 4643, 4655, 4646, 4647, 4651, 4646, 4647, 4652, + 4651, 4654, 4643, 4656, 4633, 4654, 4657, 4656, 4652, 4652, + 4651, 4654, 4658, 4656, 4633, 4659, 4657, 4664, 4660, 4661, + + 4657, 4868, 4658, 4662, 4868, 4659, 4660, 4664, 4660, 4661, + 4658, 4663, 4662, 4665, 4660, 4666, 4661, 4665, 4667, 4666, + 4663, 4663, 4662, 4668, 4669, 4670, 4671, 4665, 4667, 4666, + 4675, 4871, 4670, 4668, 4669, 4670, 4671, 4672, 4674, 4671, + 4675, 4672, 4673, 4673, 4676, 4679, 4675, 4672, 4674, 4674, + 4677, 4677, 4680, 4673, 4676, 4679, 4682, 4684, 4682, 4872, + 4679, 4677, 4680, 4685, 4673, 4688, 4680, 4684, 4682, 4683, + 4683, 4686, 4686, 4685, 4687, 4688, 4690, 4687, 4704, 4689, + 4683, 4689, 4686, 4694, 4843, 4691, 4690, 4687, 4687, 4691, + 4692, 4689, 4695, 4694, 4692, 4691, 4696, 4697, 4694, 4698, + + 4699, 4843, 4695, 4695, 4692, 4700, 4696, 4697, 4701, 4698, + 4699, 4701, 4697, 4702, 4700, 4700, 4699, 4702, 4698, 4703, + 4873, 4701, 4705, 4702, 4706, 4706, 4708, 4707, 4711, 4703, + 4703, 4707, 4705, 4709, 4706, 4709, 4708, 4704, 4711, 4710, + 4704, 4707, 4710, 4712, 4713, 4709, 4709, 4714, 4713, 4713, + 4704, 4715, 4710, 4712, 4704, 4717, 4842, 4714, 4713, 4716, + 4716, 4715, 4874, 4718, 4842, 4717, 4715, 4723, 4735, 4875, + 4716, 4718, 4719, 4718, 4719, 4719, 4876, 4723, 4719, 4721, + 4719, 4719, 4724, 4721, 4719, 4725, 4724, 4726, 4877, 4721, + 4736, 4726, 4730, 4730, 4736, 4725, 4724, 4726, 4725, 4735, + + 4736, 4737, 4738, 4739, 4878, 4880, 4738, 4740, 4884, 4735, + 4730, 4737, 4737, 4739, 4741, 4740, 4738, 4740, 4742, 4739, + 4882, 4743, 4741, 4743, 4741, 4799, 4882, 4743, 4742, 4743, + 4744, 4745, 4742, 4743, 4746, 4745, 4746, 4744, 4746, 4747, + 4744, 4745, 4887, 4748, 4749, 4750, 4755, 4750, 4746, 4747, + 4751, 4888, 4747, 4748, 4749, 4750, 4755, 4888, 4750, 4749, + 4751, 4753, 4752, 4751, 4752, 4755, 4754, 4756, 4753, 4754, + 4889, 4753, 4758, 4756, 4752, 4752, 4757, 4756, 4799, 4754, + 4759, 4759, 4758, 4757, 4760, 4758, 4757, 4760, 4761, 4762, + 4768, 4759, 4763, 4890, 4760, 4764, 4881, 4760, 4761, 4762, + + 4762, 4766, 4763, 4763, 4765, 4764, 4765, 4761, 4891, 4799, + 4766, 4766, 4776, 4881, 4764, 4768, 4765, 4767, 4767, 4767, + 4767, 4769, 4776, 4777, 4777, 4769, 4778, 4769, 4779, 4892, + 4778, 4769, 4769, 4780, 4777, 4781, 4893, 4784, 4779, 4777, + 4778, 4785, 4782, 4780, 4786, 4781, 4782, 4784, 4782, 4787, + 4788, 4785, 4782, 4894, 4786, 4811, 4785, 4801, 4896, 4787, + 4788, 4801, 4897, 4801, 4819, 4811, 4848, 4768, 4801, 4806, + 4806, 4806, 4806, 4834, 4819, 4898, 4848, 4834, 4899, 4834, + 4850, 4900, 4767, 4885, 4850, 4879, 4850, 4854, 4854, 4854, + 4854, 4855, 4767, 4885, 4861, 4855, 4886, 4855, 4861, 4879, + + 4861, 4895, 4901, 4902, 4767, 4790, 4901, 4903, 4904, 4895, + 4886, 4905, 4906, 4907, 4909, 4897, 4908, 4910, 4911, 4912, + 4913, 4790, 4790, 4790, 4790, 4790, 4790, 4914, 4915, 4916, + 4790, 4917, 4919, 4790, 4915, 4920, 4806, 4921, 4908, 4924, + 4923, 4914, 4923, 4854, 4925, 4926, 4927, 4928, 4806, 4929, + 4930, 4921, 4931, 4932, 4933, 4934, 4806, 4935, 4936, 4926, + 4937, 4927, 4939, 4940, 4790, 4941, 4790, 4942, 4943, 4944, + 4945, 4946, 4947, 4948, 4949, 4950, 4946, 4951, 4790, 4954, + 4942, 4790, 4790, 4791, 4952, 4956, 4952, 4952, 4957, 4953, + 4952, 4958, 4952, 4952, 4953, 4959, 4960, 4961, 4962, 4791, + + 4791, 4791, 4791, 4791, 4791, 4963, 4964, 4965, 4791, 4966, + 4967, 4791, 4967, 4968, 4971, 4972, 4967, 4969, 4967, 4937, + 4970, 4969, 4970, 4966, 4973, 4975, 4974, 4976, 4977, 4978, + 4979, 4980, 4981, 4982, 4983, 4977, 4937, 4974, 4984, 4985, + 4976, 4986, 4791, 4987, 4791, 4988, 4989, 4990, 4984, 4991, + 4991, 4991, 4991, 4994, 4995, 4996, 4791, 4992, 4997, 4791, + 4791, 4992, 4999, 4992, 5001, 5003, 4998, 5004, 4992, 4994, + 4998, 5006, 4998, 5005, 5005, 5005, 5005, 5007, 5008, 5009, + 5010, 5011, 5012, 5013, 5015, 5014, 5016, 5017, 5018, 5019, + 5019, 5019, 5019, 5020, 5020, 5020, 5020, 5021, 5022, 5023, + + 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, + 5034, 5035, 5036, 5034, 5037, 5038, 5039, 5040, 5041, 5034, + 5042, 5041, 5043, 5044, 5037, 5045, 5047, 5048, 5049, 5050, + 5051, 5052, 5053, 5054, 5055, 5056, 4991, 5055, 5057, 5058, + 5005, 5059, 5060, 5055, 5014, 5061, 5062, 5063, 5064, 5045, + 5066, 5067, 5005, 5065, 5065, 5065, 5065, 5068, 5069, 5070, + 5005, 5014, 5071, 5072, 5073, 5076, 5077, 5078, 5079, 5077, + 5080, 5081, 5079, 5020, 5082, 5082, 5082, 5082, 5083, 5083, + 5083, 5083, 5085, 5086, 5083, 5089, 5090, 5091, 5092, 5093, + 5093, 5093, 5093, 5094, 5096, 5095, 5097, 5098, 5099, 5101, + + 5103, 5099, 5102, 5104, 5107, 5108, 5100, 5109, 5108, 5110, + 5111, 5114, 5115, 5116, 5117, 5115, 5118, 5119, 5121, 5122, + 5123, 5125, 5081, 5109, 5126, 5124, 5127, 5128, 5139, 5116, + 5130, 5130, 5130, 5130, 5131, 5131, 5131, 5131, 5149, 5150, + 5065, 5133, 5133, 5133, 5133, 5093, 5125, 5179, 5157, 5181, + 5124, 5204, 5081, 5139, 5205, 5094, 5233, 5234, 5257, 5098, + 5259, 5082, 5131, 5101, 5196, 5083, 5100, 5261, 5264, 5265, + 5090, 5095, 5102, 5157, 5181, 5266, 5093, 5094, 5096, 5095, + 5097, 5098, 5100, 5101, 5268, 5099, 5102, 5124, 5208, 5196, + 5100, 5129, 5134, 5134, 5134, 5134, 5135, 5135, 5135, 5135, + + 5136, 5136, 5136, 5136, 5283, 5284, 5321, 5129, 5129, 5129, + 5129, 5129, 5129, 5208, 5322, 5325, 5129, 5349, 5350, 5129, + 5137, 5137, 5137, 5137, 5138, 5138, 5138, 5138, 5140, 5140, + 5140, 5140, 5374, 5141, 5141, 5141, 5141, 5142, 5142, 5142, + 5142, 5143, 5143, 5143, 5143, 5144, 5144, 5144, 5144, 5375, + 5129, 5380, 5129, 5145, 5145, 5145, 5145, 5146, 5146, 5146, + 5146, 5381, 5215, 5399, 5129, 5400, 5401, 5129, 5129, 5132, + 5132, 5132, 5132, 5147, 5147, 5147, 5147, 5407, 5136, 5148, + 5148, 5148, 5148, 5151, 5151, 5151, 5151, 5215, 5132, 5132, + 5132, 5132, 5132, 5132, 5141, 5429, 5473, 5132, 5141, 5221, + + 5132, 5152, 5152, 5152, 5152, 5153, 5153, 5153, 5153, 5154, + 5154, 5154, 5154, 5474, 5144, 5475, 5501, 5225, 5145, 5143, + 5155, 5155, 5155, 5155, 5221, 5226, 5146, 5156, 5156, 5156, + 5156, 5132, 5503, 5132, 5158, 5158, 5158, 5158, 5159, 5159, + 5159, 5159, 5225, 5504, 5151, 5132, 5576, 5577, 5132, 5132, + 5226, 5588, 5590, 5147, 5160, 5160, 5160, 5160, 5151, 5161, + 5161, 5161, 5161, 5162, 5162, 5162, 5162, 5163, 5163, 5163, + 5163, 5164, 5164, 5164, 5164, 5165, 5165, 5165, 5165, 5166, + 5166, 5166, 5166, 5591, 5154, 5167, 5167, 5167, 5167, 5168, + 5168, 5168, 5168, 5502, 5155, 5169, 5169, 5169, 5169, 5498, + + 5502, 5498, 5156, 5170, 5170, 5170, 5170, 5171, 5171, 5171, + 5171, 5172, 5172, 5172, 5172, 5161, 5173, 5173, 5173, 5173, + 5505, 5159, 5174, 5174, 5174, 5174, 5162, 5175, 5175, 5175, + 5175, 5505, 5163, 5592, 5164, 5162, 5163, 5587, 5163, 5176, + 5176, 5176, 5176, 5163, 5499, 5267, 5161, 5587, 5499, 5267, + 5168, 5267, 5593, 5168, 5499, 5175, 5177, 5177, 5177, 5177, + 5178, 5178, 5178, 5178, 5326, 5594, 5170, 5180, 5180, 5180, + 5180, 5182, 5182, 5182, 5182, 5183, 5183, 5183, 5183, 5169, + 5184, 5184, 5184, 5184, 5244, 5172, 5171, 5244, 5600, 5326, + 5173, 5185, 5185, 5185, 5185, 5333, 5607, 5172, 5186, 5186, + + 5186, 5186, 5187, 5187, 5187, 5187, 5188, 5188, 5188, 5188, + 5608, 5609, 5244, 5176, 5189, 5189, 5189, 5189, 5586, 5610, + 5333, 5177, 5586, 5248, 5586, 5177, 5612, 5177, 5177, 5190, + 5190, 5190, 5190, 5614, 5180, 5191, 5191, 5191, 5191, 5178, + 5182, 5615, 5192, 5192, 5192, 5192, 5180, 5193, 5193, 5193, + 5193, 5183, 5616, 5616, 5180, 5194, 5194, 5194, 5194, 5506, + 5184, 5195, 5195, 5195, 5195, 5506, 5185, 5187, 5197, 5197, + 5197, 5197, 5506, 5186, 5198, 5198, 5198, 5198, 5199, 5199, + 5199, 5199, 5188, 5186, 5200, 5200, 5200, 5200, 5248, 5620, + 5189, 5621, 5417, 5276, 5190, 5201, 5201, 5201, 5201, 5248, + + 5622, 5190, 5251, 5423, 5191, 5206, 5206, 5206, 5206, 5459, + 5191, 5192, 5193, 5207, 5207, 5207, 5207, 5417, 5276, 5194, + 5209, 5209, 5209, 5209, 5210, 5210, 5210, 5210, 5423, 5197, + 5211, 5211, 5211, 5211, 5459, 5214, 5214, 5214, 5214, 5198, + 5623, 5500, 5500, 5198, 5500, 5198, 5276, 5469, 5213, 5624, + 5251, 5199, 5216, 5216, 5216, 5216, 5199, 5625, 5251, 5198, + 5212, 5212, 5212, 5212, 5213, 5213, 5213, 5213, 5213, 5213, + 5206, 5626, 5469, 5213, 5206, 5201, 5206, 5207, 5251, 5212, + 5212, 5212, 5212, 5212, 5212, 5209, 5611, 5627, 5212, 5209, + 5611, 5209, 5611, 5598, 5628, 5211, 5217, 5217, 5217, 5217, + + 5214, 5477, 5210, 5598, 5214, 5211, 5214, 5218, 5218, 5218, + 5218, 5219, 5219, 5219, 5219, 5220, 5220, 5220, 5220, 5223, + 5632, 5216, 5613, 5629, 5217, 5406, 5477, 5216, 5222, 5222, + 5222, 5222, 5613, 5617, 5617, 5223, 5223, 5223, 5223, 5223, + 5223, 5582, 5582, 5636, 5223, 5224, 5224, 5224, 5224, 5637, + 5406, 5217, 5227, 5227, 5227, 5227, 5228, 5228, 5228, 5228, + 5229, 5229, 5229, 5229, 5230, 5230, 5230, 5230, 5231, 5231, + 5231, 5231, 5232, 5232, 5232, 5232, 5219, 5220, 5406, 5640, + 5219, 5632, 5219, 5217, 5235, 5235, 5235, 5235, 5236, 5236, + 5236, 5236, 5219, 5629, 5218, 5237, 5237, 5237, 5237, 5479, + + 5631, 5493, 5222, 5238, 5238, 5238, 5238, 5239, 5239, 5239, + 5239, 5641, 5250, 5582, 5224, 5554, 5644, 5227, 5240, 5240, + 5240, 5240, 5249, 5258, 5479, 5229, 5493, 5258, 5633, 5230, + 5646, 5596, 5596, 5230, 5228, 5230, 5241, 5241, 5241, 5241, + 5554, 5232, 5242, 5242, 5242, 5242, 5647, 5649, 5258, 5236, + 5243, 5243, 5243, 5243, 5245, 5245, 5245, 5245, 5235, 5650, + 5237, 5555, 5428, 5651, 5238, 5246, 5246, 5246, 5246, 5247, + 5247, 5247, 5247, 5250, 5249, 5630, 5250, 5631, 5249, 5252, + 5252, 5252, 5252, 5633, 5249, 5670, 5555, 5428, 5250, 5253, + 5253, 5253, 5253, 5254, 5254, 5254, 5254, 5652, 5249, 5255, + + 5255, 5255, 5255, 5596, 5240, 5256, 5256, 5256, 5256, 5269, + 5269, 5269, 5269, 5565, 5241, 5428, 5575, 5579, 5242, 5274, + 5274, 5274, 5274, 5579, 5602, 5243, 5282, 5282, 5282, 5282, + 5579, 5630, 5680, 5245, 5285, 5285, 5285, 5285, 5565, 5645, + 5246, 5575, 5645, 5681, 5252, 5247, 5603, 5274, 5247, 5602, + 5253, 5297, 5297, 5297, 5297, 5298, 5298, 5298, 5298, 5661, + 5660, 5684, 5254, 5661, 5253, 5299, 5299, 5299, 5299, 5652, + 5660, 5603, 5256, 5660, 5255, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5270, 5270, 5270, 5270, 5271, 5271, + 5271, 5271, 5272, 5272, 5272, 5272, 5273, 5273, 5273, 5273, + 5275, 5275, 5275, 5275, 5277, 5277, 5277, 5277, 5278, 5278, + 5278, 5278, 5279, 5279, 5279, 5279, 5280, 5280, 5280, 5280, + 5281, 5281, 5281, 5281, 5655, 5286, 5286, 5286, 5286, 5287, + + 5287, 5287, 5287, 5288, 5288, 5288, 5288, 5289, 5289, 5289, + 5289, 5663, 5290, 5290, 5290, 5290, 5581, 5581, 5666, 5270, + 5663, 5656, 5685, 5270, 5668, 5270, 5272, 5291, 5291, 5291, + 5291, 5595, 5595, 5271, 5657, 5666, 5634, 5271, 5655, 5277, + 5668, 5673, 5273, 5292, 5292, 5292, 5292, 5278, 5275, 5688, + 5672, 5690, 5281, 5293, 5293, 5293, 5293, 5279, 5280, 5286, + 5287, 5294, 5294, 5294, 5294, 5672, 5673, 5286, 5657, 5635, + 5656, 5292, 5295, 5295, 5295, 5295, 5664, 5287, 5290, 5664, + 5581, 5289, 5296, 5296, 5296, 5296, 5300, 5300, 5300, 5300, + 5288, 5301, 5301, 5301, 5301, 5595, 5634, 5302, 5302, 5302, + + 5302, 5291, 5303, 5303, 5303, 5303, 5304, 5304, 5304, 5304, + 5305, 5305, 5305, 5305, 5306, 5306, 5306, 5306, 5293, 5308, + 5308, 5308, 5308, 5292, 5307, 5307, 5307, 5307, 5293, 5635, + 5294, 5677, 5309, 5309, 5309, 5309, 5665, 5295, 5691, 5665, + 5677, 5295, 5300, 5295, 5310, 5310, 5310, 5310, 5311, 5311, + 5311, 5311, 5312, 5312, 5312, 5312, 5301, 5296, 5692, 5667, + 5301, 5296, 5301, 5302, 5674, 5675, 5693, 5303, 5694, 5571, + 5695, 5304, 5667, 5696, 5667, 5305, 5313, 5313, 5313, 5313, + 5314, 5314, 5314, 5314, 5315, 5315, 5315, 5315, 5306, 5307, + 5697, 5682, 5698, 5307, 5571, 5307, 5309, 5682, 5308, 5316, + + 5316, 5316, 5316, 5317, 5317, 5317, 5317, 5699, 5310, 5318, + 5318, 5318, 5318, 5319, 5319, 5319, 5319, 5312, 5320, 5320, + 5320, 5320, 5323, 5323, 5323, 5323, 5324, 5324, 5324, 5324, + 5327, 5327, 5327, 5327, 5700, 5328, 5328, 5328, 5328, 5674, + 5675, 5313, 5329, 5329, 5329, 5329, 5571, 5701, 5315, 5330, + 5330, 5330, 5330, 5331, 5331, 5331, 5331, 5676, 5332, 5332, + 5332, 5332, 5703, 5618, 5316, 5334, 5334, 5334, 5334, 5335, + 5335, 5335, 5335, 5318, 5336, 5336, 5336, 5336, 5337, 5337, + 5337, 5337, 5338, 5338, 5338, 5338, 5339, 5339, 5339, 5339, + 5678, 5704, 5686, 5319, 5705, 5706, 5707, 5320, 5686, 5678, + + 5708, 5324, 5340, 5340, 5340, 5340, 5341, 5341, 5341, 5341, + 5327, 5328, 5342, 5342, 5342, 5342, 5709, 5710, 5702, 5332, + 5713, 5711, 5330, 5332, 5343, 5343, 5343, 5343, 5618, 5714, + 5334, 5711, 5676, 5715, 5341, 5344, 5344, 5344, 5344, 5336, + 5345, 5345, 5345, 5345, 5618, 5336, 5716, 5338, 5717, 5712, + 5718, 5338, 5719, 5338, 5339, 5346, 5346, 5346, 5346, 5347, + 5347, 5347, 5347, 5348, 5348, 5348, 5348, 5712, 5339, 5351, + 5351, 5351, 5351, 5352, 5352, 5352, 5352, 5353, 5353, 5353, + 5353, 5354, 5354, 5354, 5354, 5355, 5355, 5355, 5355, 5723, + 5342, 5356, 5356, 5356, 5356, 5702, 5725, 5357, 5357, 5357, + + 5357, 5343, 5578, 5727, 5344, 5358, 5358, 5358, 5358, 5345, + 5359, 5359, 5359, 5359, 5360, 5360, 5360, 5360, 5361, 5361, + 5361, 5361, 5731, 5733, 5347, 5721, 5721, 5578, 5347, 5722, + 5347, 5362, 5362, 5362, 5362, 5351, 5363, 5363, 5363, 5363, + 5742, 5348, 5354, 5364, 5364, 5364, 5364, 5662, 5352, 5597, + 5597, 5355, 5352, 5353, 5722, 5755, 5356, 5355, 5357, 5354, + 5365, 5365, 5365, 5365, 5366, 5366, 5366, 5366, 5367, 5367, + 5367, 5367, 5662, 5761, 5358, 5368, 5368, 5368, 5368, 5578, + 5360, 5737, 5728, 5361, 5369, 5369, 5369, 5369, 5370, 5370, + 5370, 5370, 5362, 5361, 5737, 5671, 5745, 5371, 5371, 5371, + + 5371, 5372, 5372, 5372, 5372, 5671, 5362, 5728, 5721, 5745, + 5363, 5671, 5364, 5373, 5373, 5373, 5373, 5597, 5364, 5376, + 5376, 5376, 5376, 5762, 5662, 5366, 5720, 5597, 5679, 5367, + 5366, 5377, 5377, 5377, 5377, 5365, 5378, 5378, 5378, 5378, + 5379, 5379, 5379, 5379, 5382, 5382, 5382, 5382, 5383, 5383, + 5383, 5383, 5746, 5763, 5770, 5368, 5384, 5384, 5384, 5384, + 5369, 5370, 5371, 5371, 5735, 5746, 5371, 5735, 5371, 5385, + 5385, 5385, 5385, 5807, 5808, 5720, 5372, 5386, 5386, 5386, + 5386, 5372, 5387, 5387, 5387, 5387, 5720, 5679, 5376, 5388, + 5388, 5388, 5388, 5729, 5813, 5748, 5377, 5373, 5389, 5389, + + 5389, 5389, 5855, 5679, 5679, 5378, 5748, 5382, 5390, 5390, + 5390, 5390, 5391, 5391, 5391, 5391, 5749, 5772, 5729, 5379, + 5750, 5772, 5749, 5382, 5392, 5392, 5392, 5392, 5393, 5393, + 5393, 5393, 5394, 5394, 5394, 5394, 5751, 5750, 5751, 5384, + 5395, 5395, 5395, 5395, 5385, 5388, 5396, 5396, 5396, 5396, + 5386, 5397, 5397, 5397, 5397, 5752, 5753, 5752, 5386, 5398, + 5398, 5398, 5398, 5834, 5387, 5402, 5402, 5402, 5402, 5753, + 5883, 5773, 5389, 5390, 5403, 5403, 5403, 5403, 5730, 5391, + 5404, 5404, 5404, 5404, 5773, 5392, 5589, 5589, 5834, 5393, + 5747, 5589, 5730, 5393, 5589, 5730, 5884, 5394, 5405, 5405, + + 5405, 5405, 5589, 5760, 5747, 5395, 5760, 5747, 5396, 5408, + 5408, 5408, 5408, 5768, 5791, 5768, 5397, 5409, 5409, 5409, + 5409, 5410, 5410, 5410, 5410, 5765, 5411, 5411, 5411, 5411, + 5791, 5398, 5412, 5412, 5412, 5412, 5781, 5413, 5413, 5413, + 5413, 5414, 5414, 5414, 5414, 5415, 5415, 5415, 5415, 5404, + 5765, 5771, 5403, 5771, 5416, 5416, 5416, 5416, 5418, 5418, + 5418, 5418, 5405, 5419, 5419, 5419, 5419, 5420, 5420, 5420, + 5420, 5421, 5421, 5421, 5421, 5422, 5422, 5422, 5422, 5424, + 5424, 5424, 5424, 5732, 5405, 5769, 5410, 5800, 5781, 5800, + 5410, 5411, 5410, 5409, 5411, 5411, 5769, 5411, 5413, 5425, + + 5425, 5425, 5425, 5426, 5426, 5426, 5426, 5787, 5732, 5765, + 5415, 5412, 5781, 5787, 5415, 5413, 5427, 5427, 5427, 5427, + 5798, 5895, 5414, 5416, 5430, 5430, 5430, 5430, 5817, 5798, + 5736, 5420, 5421, 5418, 5736, 5419, 5732, 5431, 5431, 5431, + 5431, 5432, 5432, 5432, 5432, 5817, 5895, 5736, 5424, 5433, + 5433, 5433, 5433, 5827, 5827, 5422, 5434, 5434, 5434, 5434, + 5435, 5435, 5435, 5435, 5425, 5436, 5436, 5436, 5436, 5437, + 5437, 5437, 5437, 5438, 5438, 5438, 5438, 5788, 5425, 5439, + 5439, 5439, 5439, 5788, 5803, 5427, 5440, 5440, 5440, 5440, + 5910, 5427, 5441, 5441, 5441, 5441, 5802, 5803, 5911, 5430, + + 5431, 5442, 5442, 5442, 5442, 5432, 5443, 5443, 5443, 5443, + 5444, 5444, 5444, 5444, 5445, 5445, 5445, 5445, 5802, 5738, + 5818, 5434, 5774, 5738, 5435, 5774, 5780, 5436, 5446, 5446, + 5446, 5446, 5738, 5784, 5437, 5799, 5743, 5818, 5438, 5799, + 5743, 5436, 5743, 5816, 5438, 5447, 5447, 5447, 5447, 5743, + 5448, 5448, 5448, 5448, 5912, 5441, 5779, 5441, 5449, 5449, + 5449, 5449, 5450, 5450, 5450, 5450, 5442, 5451, 5451, 5451, + 5451, 5444, 5452, 5452, 5452, 5452, 5453, 5453, 5453, 5453, + 5780, 5842, 5784, 5445, 5443, 5444, 5810, 5842, 5810, 5446, + 5454, 5454, 5454, 5454, 5455, 5455, 5455, 5455, 5456, 5456, + + 5456, 5456, 5780, 5446, 5457, 5457, 5457, 5457, 5816, 5784, + 5447, 5458, 5458, 5458, 5458, 5460, 5460, 5460, 5460, 5461, + 5461, 5461, 5461, 5914, 5779, 5447, 5448, 5462, 5462, 5462, + 5462, 5861, 5779, 5449, 5463, 5463, 5463, 5463, 5464, 5464, + 5464, 5464, 5450, 5465, 5465, 5465, 5465, 5861, 5739, 5767, + 5453, 5451, 5739, 5452, 5739, 5920, 5455, 5466, 5466, 5466, + 5466, 5739, 5739, 5767, 5454, 5850, 5767, 5456, 5467, 5467, + 5467, 5467, 5468, 5468, 5468, 5468, 5470, 5470, 5470, 5470, + 5850, 5461, 5471, 5471, 5471, 5471, 5472, 5472, 5472, 5472, + 5921, 5460, 5476, 5476, 5476, 5476, 5467, 5776, 5461, 5846, + + 5463, 5776, 5786, 5776, 5465, 5478, 5478, 5478, 5478, 5783, + 5776, 5464, 5480, 5480, 5480, 5480, 5846, 5464, 5481, 5481, + 5481, 5481, 5482, 5482, 5482, 5482, 5483, 5483, 5483, 5483, + 5484, 5484, 5484, 5484, 5485, 5485, 5485, 5485, 5486, 5486, + 5486, 5486, 5858, 5775, 5777, 5471, 5778, 5789, 5472, 5858, + 5468, 5470, 5487, 5487, 5487, 5487, 5775, 5786, 5471, 5775, + 5922, 5789, 5471, 5488, 5488, 5488, 5488, 5806, 5476, 5789, + 5783, 5868, 5476, 5489, 5489, 5489, 5489, 5868, 5786, 5481, + 5478, 5806, 5754, 5754, 5481, 5783, 5754, 5480, 5490, 5490, + 5490, 5490, 5754, 5819, 5484, 5819, 5778, 5482, 5491, 5491, + + 5491, 5491, 5494, 5494, 5494, 5494, 5483, 5923, 5835, 5485, + 5777, 5486, 5785, 5835, 5836, 5487, 5801, 5487, 5487, 5836, + 5777, 5487, 5778, 5487, 5487, 5492, 5492, 5492, 5492, 5841, + 5801, 5841, 5487, 5801, 5495, 5495, 5495, 5495, 5488, 5844, + 5924, 5844, 5489, 5488, 5496, 5496, 5496, 5496, 5497, 5497, + 5497, 5497, 5507, 5507, 5507, 5507, 5508, 5508, 5508, 5508, + 5509, 5509, 5509, 5509, 5785, 5510, 5510, 5510, 5510, 5891, + 5925, 5491, 5511, 5511, 5511, 5511, 5512, 5512, 5512, 5512, + 5891, 5513, 5513, 5513, 5513, 5491, 5507, 5809, 5785, 5824, + 5492, 5809, 5824, 5782, 5492, 5495, 5492, 5514, 5514, 5514, + + 5514, 5515, 5515, 5515, 5515, 5516, 5516, 5516, 5516, 5517, + 5517, 5517, 5517, 5520, 5520, 5520, 5520, 5497, 5518, 5518, + 5518, 5518, 5496, 5903, 5926, 5508, 5510, 5519, 5519, 5519, + 5519, 5521, 5521, 5521, 5521, 5903, 5509, 5522, 5522, 5522, + 5522, 5523, 5523, 5523, 5523, 5524, 5524, 5524, 5524, 5512, + 5927, 5821, 5822, 5511, 5513, 5525, 5525, 5525, 5525, 5782, + 5526, 5526, 5526, 5526, 5821, 5822, 5515, 5790, 5516, 5782, + 5516, 5790, 5805, 5815, 5516, 5805, 5516, 5805, 5514, 5815, + 5515, 5517, 5815, 5518, 5790, 5928, 5829, 5518, 5519, 5829, + 5519, 5520, 5527, 5527, 5527, 5527, 5521, 5528, 5528, 5528, + + 5528, 5529, 5529, 5529, 5529, 5854, 5929, 5843, 5523, 5530, + 5530, 5530, 5530, 5532, 5532, 5532, 5532, 5522, 5525, 5523, + 5814, 5843, 5814, 5524, 5814, 5526, 5531, 5531, 5531, 5531, + 5854, 5525, 5526, 5533, 5533, 5533, 5533, 5534, 5534, 5534, + 5534, 5535, 5535, 5535, 5535, 5536, 5536, 5536, 5536, 5537, + 5537, 5537, 5537, 5538, 5538, 5538, 5538, 5918, 5854, 5528, + 5539, 5539, 5539, 5539, 5540, 5540, 5540, 5540, 5918, 5930, + 5527, 5541, 5541, 5541, 5541, 5529, 5543, 5543, 5543, 5543, + 5530, 5542, 5542, 5542, 5542, 5529, 5544, 5544, 5544, 5544, + 5869, 5532, 5545, 5545, 5545, 5545, 5869, 5533, 5531, 5534, + + 5546, 5546, 5546, 5546, 5547, 5547, 5547, 5547, 5931, 5534, + 5548, 5548, 5548, 5548, 5549, 5549, 5549, 5549, 5837, 5932, + 5823, 5536, 5837, 5823, 5537, 5535, 5946, 5538, 5550, 5550, + 5550, 5550, 5551, 5551, 5551, 5551, 5539, 5957, 5946, 5540, + 5552, 5552, 5552, 5552, 5542, 5558, 5558, 5558, 5558, 5965, + 5543, 5559, 5559, 5559, 5559, 5541, 5916, 5545, 5599, 5826, + 5551, 5553, 5553, 5553, 5553, 5564, 5564, 5564, 5564, 5546, + 5916, 5545, 5826, 5544, 5560, 5560, 5560, 5560, 5820, 5828, + 5825, 5549, 5820, 5825, 5820, 5548, 5561, 5561, 5561, 5561, + 5853, 5820, 5828, 5550, 5562, 5562, 5562, 5562, 5823, 5853, + + 5549, 5563, 5563, 5563, 5563, 5552, 5599, 5857, 5825, 5552, + 5857, 5552, 5551, 5599, 5832, 5559, 5552, 5566, 5566, 5566, + 5566, 5567, 5567, 5567, 5567, 5599, 5553, 5832, 5851, 5864, + 5553, 5559, 5553, 5851, 5599, 5560, 5568, 5568, 5568, 5568, + 5564, 5569, 5569, 5569, 5569, 5570, 5570, 5570, 5570, 5905, + 5905, 5561, 5572, 5572, 5572, 5572, 5833, 5970, 5831, 5562, + 5573, 5573, 5573, 5573, 5905, 5847, 5563, 5847, 5831, 5833, + 5563, 5831, 5563, 5574, 5574, 5574, 5574, 5580, 5580, 5580, + 5580, 5583, 5583, 5583, 5583, 5584, 5584, 5584, 5584, 5740, + 5740, 5740, 5740, 5874, 5669, 5874, 5669, 5669, 5653, 5838, + + 5669, 5567, 5669, 5669, 5864, 5881, 5569, 5845, 5654, 5669, + 5570, 5881, 5838, 5584, 5653, 5653, 5653, 5653, 5653, 5653, + 5845, 5573, 5849, 5653, 5654, 5654, 5654, 5654, 5654, 5654, + 5945, 5880, 5580, 5654, 5726, 5849, 5583, 5852, 5971, 5945, + 5584, 5852, 5574, 5741, 5741, 5741, 5741, 5880, 5574, 5950, + 5726, 5726, 5726, 5726, 5726, 5726, 5580, 5975, 5950, 5726, + 5653, 5658, 5658, 5658, 5658, 5756, 5756, 5756, 5756, 5756, + 5756, 5741, 5976, 5811, 5811, 5811, 5811, 5757, 5856, 5953, + 5658, 5658, 5658, 5658, 5658, 5658, 5859, 5863, 5953, 5658, + 5859, 5856, 5658, 5757, 5757, 5757, 5757, 5757, 5757, 5863, + + 5863, 5840, 5757, 5792, 5792, 5792, 5792, 5840, 5860, 5860, + 5840, 5792, 5979, 5860, 5793, 5793, 5793, 5793, 5794, 5794, + 5794, 5794, 5975, 5658, 5882, 5658, 5794, 5658, 5658, 5811, + 5882, 5792, 5866, 5795, 5795, 5795, 5795, 5658, 5893, 5862, + 5658, 5658, 5793, 5862, 5893, 5866, 5794, 5867, 5658, 5659, + 5659, 5659, 5659, 5839, 5981, 5796, 5796, 5796, 5796, 5896, + 5867, 5795, 5839, 5796, 5792, 5839, 5984, 5839, 5659, 5659, + 5659, 5659, 5659, 5659, 5865, 5793, 5896, 5659, 5865, 5794, + 5659, 5966, 5792, 5796, 5804, 5804, 5804, 5804, 5966, 5812, + 5812, 5812, 5812, 5793, 5795, 5870, 5899, 5794, 5797, 5797, + + 5797, 5797, 5899, 5987, 5871, 5873, 5797, 5871, 5870, 5873, + 5872, 5659, 5795, 5659, 5871, 5659, 5796, 5812, 5848, 5875, + 5878, 5961, 5848, 5878, 5848, 5659, 5797, 5659, 5659, 5659, + 5961, 5848, 5875, 5876, 5796, 5796, 5659, 5744, 5830, 5877, + 5876, 5988, 5830, 5879, 5830, 5812, 5876, 5879, 5901, 5830, + 5901, 5830, 5886, 5877, 5885, 5894, 5877, 5885, 5885, 5797, + 5989, 5797, 5804, 5744, 5804, 5886, 5887, 5888, 5894, 5890, + 5887, 5804, 5872, 5890, 5989, 5990, 5872, 5797, 5872, 5889, + 5889, 5889, 5889, 5889, 5889, 5872, 5991, 5744, 5744, 5744, + 5744, 5892, 5744, 5744, 5992, 5993, 5744, 5744, 5744, 5897, + + 5744, 5744, 5744, 5897, 5744, 5897, 5744, 5898, 5892, 5892, + 5902, 5888, 5897, 5744, 5888, 5900, 5904, 5906, 5900, 5907, + 5906, 5898, 5904, 5908, 5898, 5907, 5908, 5902, 5902, 5909, + 5913, 5915, 5917, 5913, 5915, 5919, 5917, 5933, 5889, 5934, + 5933, 5919, 5909, 5935, 5936, 5934, 5936, 5937, 5938, 5942, + 5939, 5937, 5939, 5940, 5940, 5941, 5935, 5940, 5935, 5940, + 5943, 5938, 5942, 5944, 5943, 5947, 5940, 5948, 5952, 5944, + 5949, 5951, 5941, 5951, 5949, 5947, 5954, 5956, 5947, 5952, + 5948, 5956, 5955, 5952, 5955, 5958, 5963, 5949, 5994, 5949, + 5960, 5954, 5959, 5954, 5954, 5967, 5967, 5967, 5967, 5963, + + 5959, 5958, 5964, 5958, 5995, 5959, 5963, 5960, 5962, 5962, + 5962, 5962, 5962, 5962, 5972, 5964, 5968, 5968, 5968, 5968, + 5969, 5969, 5969, 5969, 5973, 5974, 5997, 5972, 5974, 5998, + 5973, 5980, 5982, 5973, 5985, 5980, 5982, 5983, 5985, 5999, + 5985, 5983, 6000, 5983, 6001, 5996, 5996, 6003, 5969, 5996, + 6004, 5983, 6005, 5999, 6006, 6007, 6008, 6009, 6010, 6011, + 6008, 6012, 6008, 6013, 6014, 6012, 6015, 5962, 6016, 6017, + 6018, 6007, 6019, 5967, 6020, 6020, 6020, 6020, 6021, 6022, + 6023, 6011, 5967, 6017, 6024, 6025, 6026, 6027, 6028, 6029, + 6026, 6030, 6031, 6032, 6033, 6034, 6036, 6032, 6035, 6032, + + 6037, 6035, 6038, 5968, 6039, 6040, 6042, 5969, 5977, 6040, + 6041, 6040, 6043, 6044, 6045, 6046, 6040, 6047, 6048, 6049, + 6041, 6050, 6051, 6052, 5977, 5977, 5977, 5977, 5977, 5977, + 6053, 6054, 6048, 5977, 6055, 6056, 5977, 6057, 6058, 6059, + 6060, 6057, 6061, 6057, 6062, 6063, 6064, 6065, 6066, 6067, + 6067, 6068, 6069, 6071, 6020, 6070, 6072, 6073, 6074, 6075, + 6076, 6020, 6077, 6078, 6079, 6080, 5977, 5977, 6070, 5977, + 6081, 6082, 6083, 6078, 6084, 6085, 6086, 6087, 6088, 6083, + 5977, 5977, 6089, 6090, 5977, 5977, 5978, 6090, 6084, 6091, + 6092, 6093, 6094, 6094, 6094, 6094, 6094, 6094, 6095, 6096, + + 6097, 6098, 5978, 5978, 5978, 5978, 5978, 5978, 6099, 6101, + 6100, 5978, 6102, 6101, 5978, 6101, 6103, 6104, 6097, 6105, + 6106, 6107, 6108, 6109, 6109, 6111, 6079, 6100, 6112, 6113, + 6079, 6114, 6079, 6119, 6120, 6093, 6121, 6122, 6106, 6123, + 6124, 6125, 6126, 6127, 6128, 5978, 6129, 5978, 6130, 6131, + 6131, 6132, 6133, 6131, 6134, 6131, 6135, 6126, 6136, 5978, + 6137, 6138, 5978, 5978, 5986, 6139, 6140, 6141, 6142, 6143, + 6140, 6138, 6144, 6145, 6146, 6147, 6149, 6151, 6150, 6152, + 6143, 6154, 6155, 6157, 6161, 6140, 6150, 6162, 6145, 6163, + 5986, 6145, 6164, 6159, 6149, 6153, 6153, 6153, 6153, 6153, + + 6153, 6154, 6158, 6158, 6158, 6158, 6159, 6160, 6165, 6166, + 6168, 6167, 6169, 6160, 5986, 5986, 5986, 5986, 6170, 5986, + 5986, 6167, 6172, 5986, 5986, 5986, 6171, 5986, 5986, 5986, + 6171, 5986, 6171, 5986, 6173, 6170, 6175, 6176, 6178, 6183, + 5986, 6184, 6188, 6194, 6195, 6196, 6198, 6200, 6201, 6202, + 6203, 6204, 6205, 6206, 6209, 6215, 6216, 6217, 6218, 6219, + 6202, 6220, 6221, 6222, 6223, 6223, 6223, 6223, 6224, 6225, + 6226, 6227, 6228, 6230, 6232, 6233, 6234, 6236, 6233, 6234, + 6237, 6238, 6239, 6241, 6240, 6240, 6240, 6240, 6243, 6158, + 6240, 6242, 6242, 6242, 6242, 6244, 6245, 6246, 6248, 6249, + + 6245, 6250, 6250, 6250, 6250, 6251, 6253, 6254, 6255, 6256, + 6254, 6257, 6258, 6260, 6261, 6262, 6263, 6261, 6265, 6266, + 6267, 6268, 6266, 6269, 6270, 6271, 6272, 6273, 6273, 6273, + 6273, 6274, 6275, 6239, 6277, 6278, 6280, 6281, 6284, 6283, + 6285, 6286, 6287, 6289, 6288, 6290, 6291, 6292, 6293, 6294, + 6295, 6223, 6296, 6299, 6301, 6298, 6274, 6250, 6288, 6302, + 6278, 6280, 6281, 6239, 6283, 6300, 6303, 6304, 6289, 6300, + 6305, 6240, 6292, 6293, 6305, 6306, 6307, 6308, 6242, 6309, + 6298, 6246, 6279, 6310, 6302, 6311, 6314, 6314, 6314, 6314, + 6312, 6303, 6304, 6316, 6312, 6319, 6312, 6320, 6279, 6279, + + 6279, 6279, 6279, 6279, 6312, 6322, 6321, 6279, 6298, 6323, + 6279, 6315, 6315, 6315, 6315, 6317, 6324, 6327, 6328, 6317, + 6321, 6317, 6325, 6329, 6331, 6332, 6331, 6333, 6334, 6326, + 6330, 6335, 6336, 6338, 6338, 6339, 6337, 6338, 6307, 6315, + 6342, 6279, 6307, 6279, 6307, 6343, 6340, 6341, 6341, 6341, + 6341, 6344, 6346, 6347, 6345, 6279, 6350, 6279, 6279, 6279, + 6282, 6337, 6340, 6340, 6340, 6340, 6340, 6340, 6345, 6351, + 6343, 6340, 6352, 6314, 6353, 6325, 6282, 6282, 6282, 6282, + 6282, 6282, 6326, 6330, 6325, 6282, 6354, 6355, 6282, 6356, + 6357, 6326, 6358, 6359, 6351, 6360, 6362, 6352, 6315, 6361, + + 6363, 6364, 6365, 6335, 6367, 6364, 6366, 6364, 6367, 6368, + 6367, 6369, 6372, 6373, 6374, 6375, 6371, 6376, 6359, 6282, + 6360, 6282, 6366, 6341, 6361, 6379, 6382, 6381, 6385, 6343, + 6380, 6388, 6386, 6282, 6379, 6388, 6282, 6282, 6318, 6381, + 6380, 6383, 6384, 6370, 6387, 6389, 6383, 6390, 6382, 6391, + 6384, 6392, 6393, 6385, 6386, 6394, 6395, 6396, 6397, 6398, + 6399, 6400, 6402, 6403, 6318, 6404, 6405, 6406, 6407, 6394, + 6411, 6410, 6412, 6413, 6368, 6410, 6414, 6369, 6415, 6418, + 6422, 6395, 6424, 6371, 6398, 6368, 6318, 6369, 6318, 6318, + 6318, 6318, 6371, 6318, 6318, 6425, 6427, 6318, 6318, 6318, + + 6428, 6318, 6318, 6318, 6370, 6318, 6387, 6318, 6430, 6416, + 6387, 6370, 6387, 6416, 6318, 6416, 6432, 6434, 6437, 6370, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6401, 6401, 6401, 6401, 6408, 6423, 6417, + 6429, 6408, 6417, 6408, 6409, 6409, 6409, 6409, 6419, 6420, + 6431, 6419, 6420, 6408, 6421, 6426, 6433, 6421, 6435, 6426, + 6431, 6426, 6436, 6423, 6438, 6429, 6426, 6439, 6440, 6441, + 6442, 6443, 6409, 6444, 6445, 6446, 6447, 6420, 6448, 6450, + 6449, 6433, 6451, 6435, 6452, 6453, 6454, 6455, 6456, 6438, + 6458, 6459, 6457, 6460, 6441, 6442, 6461, 6462, 6463, 6464, + 6409, 6465, 6466, 6468, 6417, 6449, 6457, 6469, 6470, 6470, + 6470, 6470, 6473, 6401, 6474, 6474, 6474, 6474, 6475, 6421, + + 6401, 6476, 6477, 6478, 6479, 6480, 6481, 6482, 6483, 6480, + 6484, 6480, 6485, 6486, 6484, 6487, 6484, 6436, 6453, 6488, + 6455, 6484, 6489, 6490, 6491, 6492, 6493, 6494, 6454, 6455, + 6495, 6496, 6454, 6498, 6454, 6497, 6497, 6485, 6499, 6500, + 6502, 6501, 6499, 6503, 6504, 6505, 6506, 6507, 6508, 6491, + 6510, 6509, 6512, 6470, 6501, 6511, 6513, 6514, 6515, 6516, + 6517, 6518, 6519, 6520, 6521, 6522, 6524, 6525, 6523, 6504, + 6526, 6527, 6528, 6529, 6530, 6470, 6509, 6491, 6523, 6531, + 6511, 6474, 6532, 6533, 6534, 6535, 6536, 6537, 6538, 6532, + 6539, 6540, 6541, 6544, 6545, 6526, 6546, 6533, 6542, 6542, + + 6542, 6542, 6543, 6543, 6543, 6543, 6547, 6548, 6549, 6550, + 6547, 6552, 6537, 6553, 6554, 6556, 6555, 6559, 6513, 6557, + 6558, 6560, 6513, 6563, 6513, 6565, 6561, 6566, 6567, 6525, + 6543, 6568, 6569, 6525, 6555, 6525, 6551, 6551, 6551, 6551, + 6551, 6551, 6529, 6561, 6557, 6558, 6560, 6570, 6562, 6571, + 6572, 6564, 6562, 6550, 6562, 6564, 6573, 6564, 6574, 6575, + 6576, 6577, 6577, 6579, 6580, 6570, 6581, 6564, 6582, 6587, + 6588, 6589, 6590, 6591, 6591, 6591, 6591, 6594, 6595, 6587, + 6592, 6592, 6592, 6592, 6596, 6597, 6598, 6599, 6601, 6602, + 6603, 6604, 6605, 6606, 6569, 6602, 6607, 6590, 6608, 6609, + + 6604, 6610, 6594, 6611, 6569, 6613, 6612, 6614, 6592, 6615, + 6616, 6617, 6618, 6618, 6619, 6620, 6618, 6621, 6618, 6622, + 6574, 6612, 6623, 6624, 6625, 6626, 6628, 6627, 6629, 6630, + 6574, 6627, 6631, 6632, 6625, 6633, 6634, 6635, 6636, 6638, + 6630, 6639, 6640, 6641, 6644, 6645, 6627, 6643, 6646, 6639, + 6633, 6647, 6649, 6633, 6653, 6655, 6654, 6638, 6656, 6640, + 6642, 6642, 6642, 6642, 6642, 6642, 6657, 6643, 6650, 6650, + 6650, 6650, 6651, 6651, 6651, 6651, 6652, 6658, 6659, 6660, + 6652, 6654, 6652, 6661, 6662, 6660, 6663, 6664, 6665, 6666, + 6658, 6667, 6668, 6669, 6670, 6670, 6671, 6671, 6671, 6671, + + 6651, 6672, 6673, 6659, 6674, 6675, 6676, 6677, 6678, 6679, + 6680, 6663, 6674, 6681, 6681, 6682, 6682, 6682, 6683, 6683, + 6684, 6684, 6674, 6685, 6687, 6688, 6686, 6691, 6687, 6689, + 6687, 6690, 6692, 6693, 6694, 6687, 6695, 6689, 6696, 6690, + 6697, 6698, 6699, 6700, 6701, 6702, 6703, 6689, 6704, 6705, + 6706, 6671, 6707, 6708, 6709, 6650, 6710, 6711, 6713, 6651, + 6714, 6715, 6716, 6714, 6717, 6718, 6719, 6720, 6721, 6723, + 6722, 6724, 6728, 6728, 6730, 6671, 6728, 6670, 6686, 6732, + 6732, 6746, 6728, 6732, 6721, 6721, 6721, 6721, 6721, 6721, + 6693, 6734, 6734, 6721, 6753, 6734, 6681, 6683, 6740, 6754, + + 6684, 6703, 6686, 6741, 6737, 6737, 6724, 6704, 6737, 6706, + 6729, 6729, 6729, 6729, 6693, 6705, 6708, 6722, 6731, 6731, + 6707, 6755, 6731, 6740, 6731, 6733, 6733, 6736, 6741, 6733, + 6742, 6733, 6735, 6735, 6736, 6736, 6735, 6758, 6736, 6738, + 6720, 6725, 6760, 6745, 6735, 6736, 6738, 6738, 6743, 6743, + 6738, 6761, 6743, 6763, 6743, 6742, 6739, 6725, 6725, 6725, + 6725, 6725, 6725, 6739, 6739, 6765, 6725, 6739, 6745, 6725, + 6744, 6744, 6770, 6772, 6744, 6773, 6774, 6775, 6729, 6729, + 6776, 6777, 6729, 6778, 6779, 6780, 6784, 6785, 6789, 6797, + 6729, 6781, 6781, 6781, 6781, 6781, 6781, 6729, 6862, 6862, + + 6725, 6874, 6725, 6725, 6725, 6883, 6912, 6725, 6883, 6725, + 6938, 6787, 6787, 6942, 6725, 6787, 6965, 6725, 6725, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6727, 6756, 6756, 6756, 6756, 6782, 6757, 6757, + 6757, 6757, 6783, 6783, 6967, 6794, 6798, 6799, 6727, 6727, + 6727, 6727, 6727, 6727, 6790, 6790, 6791, 6727, 6790, 6968, + 6727, 6791, 6791, 6800, 6969, 6791, 6802, 6790, 6792, 6792, + 6794, 6804, 6792, 6801, 6793, 6793, 6795, 6795, 6793, 6796, + 6795, 6803, 6799, 6795, 6796, 6796, 6782, 6805, 6796, 6756, + 6793, 6727, 6796, 6727, 6757, 6727, 6806, 6727, 6727, 6808, + 6807, 6727, 6809, 6810, 6782, 6727, 6828, 6794, 6727, 6727, + 6794, 6794, 6811, 6794, 6794, 6800, 6813, 6838, 6812, 6970, + + 6783, 6921, 6798, 6799, 6971, 6801, 6802, 6802, 6928, 6801, + 6802, 6828, 6815, 6815, 6972, 6801, 6815, 6803, 6804, 6800, + 6803, 6884, 6802, 6815, 6884, 6973, 6921, 6804, 6807, 6801, + 6974, 6843, 6806, 6928, 6805, 6975, 6807, 6803, 6809, 6976, + 6811, 6808, 6977, 6805, 7016, 7023, 6812, 6838, 6813, 6884, + 7027, 6810, 6806, 6812, 6840, 6808, 6807, 7018, 6809, 6810, + 6816, 6816, 6826, 7030, 6816, 6812, 6817, 6817, 6811, 7030, + 6817, 6842, 6813, 6838, 6812, 7026, 6817, 6818, 7054, 6816, + 6818, 6818, 6819, 6819, 6818, 6819, 6819, 6820, 6821, 6821, + 6820, 6820, 6821, 7026, 6820, 6821, 6822, 6822, 6843, 6823, + + 6822, 6822, 6823, 6823, 6824, 6824, 6823, 6843, 6824, 6839, + 6824, 6825, 6825, 6841, 6840, 6825, 6844, 6826, 6826, 7044, + 6845, 6826, 6827, 6827, 6827, 6827, 6827, 6827, 6829, 6829, + 6840, 6842, 6829, 7018, 6829, 6830, 6830, 6831, 6831, 6830, + 7067, 6831, 6832, 6832, 6831, 6846, 6832, 6842, 6831, 6833, + 6833, 6830, 6847, 6833, 6834, 6834, 6833, 7033, 6834, 7033, + 6833, 6835, 6835, 6836, 6836, 6835, 6834, 6836, 7083, 6835, + 6837, 6837, 6844, 7028, 6837, 6836, 7028, 6839, 6837, 6845, + 6837, 6841, 6848, 6848, 7034, 6839, 6848, 7044, 6845, 6841, + 7034, 7095, 6844, 7095, 6846, 6849, 6845, 6863, 6849, 6849, + + 6847, 6846, 6849, 6850, 6863, 6863, 6850, 6850, 6863, 6851, + 6850, 6851, 6851, 7050, 7050, 6851, 6852, 6853, 6853, 6853, + 6853, 6846, 6859, 6852, 6852, 6859, 6859, 6852, 6847, 6859, + 6852, 6854, 6854, 6854, 6854, 7104, 6855, 6855, 6855, 6855, + 7048, 6857, 6857, 6857, 6857, 6858, 6858, 6858, 6860, 6857, + 6858, 6860, 6860, 7048, 7109, 6860, 6861, 6861, 6860, 7036, + 6861, 6864, 6864, 6864, 6864, 6865, 6865, 6865, 6865, 6857, + 6866, 6866, 6861, 7038, 6866, 7036, 6868, 6866, 6853, 6868, + 6868, 6869, 7051, 6868, 6869, 6869, 6868, 7051, 6869, 7038, + 6871, 6871, 6854, 6865, 6871, 7035, 6853, 6855, 7035, 6855, + + 6872, 7164, 6857, 6872, 6872, 6873, 7040, 6872, 6873, 6873, + 6854, 6854, 6873, 7041, 7040, 6855, 6856, 6856, 6856, 6856, + 6857, 6875, 6875, 6890, 6856, 6875, 7052, 7052, 6875, 7041, + 6856, 6880, 6856, 6856, 6880, 6856, 6856, 6856, 6856, 6856, + 6856, 7037, 6876, 6876, 6856, 6865, 6876, 6881, 6864, 6878, + 6881, 7037, 6865, 6878, 6878, 6879, 6879, 6878, 6882, 6879, + 6885, 6882, 6886, 6885, 7197, 6886, 6886, 6879, 6886, 6886, + 6887, 6887, 6887, 6886, 6888, 6887, 6887, 6856, 6888, 6889, + 6889, 6888, 6888, 6889, 6889, 6888, 6891, 6891, 6890, 6890, + 6891, 7198, 6890, 7071, 6890, 6856, 7043, 6892, 6892, 6880, + + 6880, 6892, 7071, 6880, 6892, 6893, 6893, 6880, 7043, 6893, + 6894, 7042, 6893, 6894, 6894, 6881, 6881, 6894, 7042, 6881, + 6881, 6899, 6899, 6899, 6899, 6899, 6882, 6882, 6885, 6885, + 6882, 6882, 6885, 6885, 6895, 7046, 6896, 6896, 7046, 6897, + 6896, 6895, 6895, 6896, 7039, 6895, 6897, 6897, 6900, 6898, + 6897, 7039, 7088, 6897, 6898, 6898, 6901, 7039, 6898, 6901, + 6901, 6900, 6900, 6901, 7088, 6900, 7045, 6899, 6902, 6902, + 6899, 6899, 6902, 7045, 6899, 6902, 6903, 6903, 6904, 6904, + 6903, 6904, 6904, 7062, 7031, 6905, 7062, 6903, 6905, 6905, + 6906, 6906, 6905, 7063, 6906, 6907, 6907, 7031, 6906, 6907, + + 6906, 6909, 7031, 6908, 6908, 6907, 6908, 6908, 6909, 6909, + 6910, 6910, 6909, 7063, 6910, 6911, 6911, 6913, 6913, 6911, + 7201, 6913, 6910, 6914, 6914, 6911, 6916, 6914, 6915, 6915, + 6916, 6916, 6915, 6914, 6916, 6917, 6918, 6918, 6927, 6915, + 6918, 7064, 6917, 6917, 6919, 6919, 6917, 7064, 6919, 6918, + 6920, 6919, 6917, 6920, 6920, 6922, 6920, 6920, 6922, 6922, + 6923, 6923, 6922, 6927, 6923, 6923, 6924, 6924, 6925, 6925, + 6924, 7055, 6925, 6926, 6926, 6925, 6929, 6926, 6926, 6926, + 6929, 6929, 6930, 6930, 6929, 6931, 6930, 7055, 6941, 6930, + 6931, 6931, 7056, 6932, 6931, 6931, 6932, 6932, 6933, 6933, + + 6932, 7057, 6933, 6927, 6927, 6934, 6934, 6927, 7056, 6934, + 6934, 6935, 6935, 6936, 6933, 6935, 7057, 7202, 6937, 6937, + 6936, 6936, 6937, 7060, 6936, 6935, 6939, 6936, 7096, 6939, + 6939, 6948, 6939, 6939, 6943, 6937, 6940, 6940, 7096, 7060, + 6940, 7072, 6940, 6941, 6941, 6944, 6944, 6941, 7081, 6944, + 6943, 6943, 6943, 6943, 6943, 6943, 7081, 6944, 7072, 6943, + 6945, 6945, 6947, 6947, 6945, 7099, 6947, 6949, 7099, 7059, + 6949, 6949, 6945, 6946, 6949, 7103, 6950, 6950, 7103, 6947, + 6950, 6954, 6954, 7059, 6946, 6954, 6946, 6946, 6954, 6946, + 6946, 6946, 6946, 6946, 6946, 7047, 6948, 6948, 6951, 7047, + + 6948, 7047, 6948, 6951, 6951, 7073, 7073, 6951, 6952, 6952, + 6952, 6952, 6953, 6953, 7066, 7090, 6953, 6955, 6953, 7203, + 6955, 6955, 6956, 6955, 6955, 6957, 6957, 6956, 6956, 6957, + 7066, 6956, 6957, 7090, 6956, 6946, 6963, 6963, 6946, 6946, + 6963, 6946, 6946, 6958, 6958, 6984, 6958, 6958, 6959, 6959, + 7102, 7102, 6959, 6960, 6960, 6959, 6961, 6960, 6960, 6961, + 6961, 6962, 7100, 6961, 6964, 6964, 6962, 6962, 6964, 7204, + 6962, 6961, 7100, 7070, 6978, 6978, 6952, 6952, 6978, 7070, + 6952, 6964, 6979, 6979, 6980, 6980, 6979, 6981, 6980, 6981, + 7205, 6980, 6981, 6981, 6979, 6952, 6981, 6982, 6982, 6983, + + 6983, 6982, 7084, 6983, 6981, 6983, 6985, 6984, 7084, 6982, + 6984, 6984, 6985, 6985, 6984, 7206, 6985, 6986, 6986, 6985, + 7068, 6986, 6987, 7069, 6993, 6986, 7085, 6987, 6987, 6984, + 6988, 6987, 7085, 6987, 6988, 6988, 7068, 7087, 6988, 7069, + 6987, 6989, 6989, 6990, 6990, 6989, 7058, 6990, 6989, 6991, + 6991, 6992, 6992, 6991, 7101, 6992, 6991, 7087, 6993, 6993, + 7058, 6990, 6993, 6994, 6994, 6994, 7058, 6992, 6994, 6995, + 6995, 7124, 7124, 6995, 7101, 6995, 6996, 6996, 6997, 6997, + 6996, 7003, 6997, 6996, 6998, 7166, 6997, 6999, 6999, 6998, + 6998, 6999, 7005, 6998, 7000, 7000, 6998, 7001, 7000, 7005, + + 7005, 7001, 7011, 7005, 7001, 7001, 7000, 7002, 7001, 7105, + 7002, 7002, 7105, 7002, 7002, 7003, 7003, 7004, 7004, 7003, + 7006, 7004, 7003, 7002, 7004, 7049, 7006, 7006, 7007, 7049, + 7006, 7049, 7166, 7006, 7079, 7007, 7007, 7008, 7010, 7007, + 7079, 7008, 7008, 7009, 7009, 7008, 7032, 7009, 7079, 7009, + 7106, 7008, 7106, 7012, 7010, 7010, 7010, 7010, 7010, 7010, + 7012, 7012, 7019, 7010, 7012, 7019, 7019, 7011, 7011, 7019, + 7029, 7011, 7082, 7011, 7013, 7013, 7013, 7013, 7014, 7014, + 7014, 7014, 7020, 7020, 7021, 7021, 7020, 7020, 7021, 7021, + 7089, 7053, 7128, 7053, 7032, 7029, 7053, 7061, 7065, 7128, + + 7074, 7080, 7032, 7074, 7089, 7080, 7014, 7061, 7065, 7086, + 7089, 7092, 7093, 7061, 7065, 7075, 7076, 7077, 7075, 7076, + 7077, 7080, 7032, 7078, 7097, 7086, 7139, 7078, 7093, 7078, + 7107, 7207, 7029, 7139, 7078, 7110, 7029, 7092, 7029, 7078, + 7097, 7110, 7094, 7082, 7098, 7094, 7098, 7107, 7029, 7098, + 7082, 7094, 7108, 7091, 7091, 7091, 7091, 7091, 7111, 7112, + 7113, 7013, 7111, 7118, 7111, 7014, 7024, 7115, 7113, 7108, + 7114, 7119, 7108, 7115, 7111, 7112, 7074, 7119, 7117, 7114, + 7118, 7074, 7024, 7024, 7024, 7024, 7024, 7024, 7075, 7076, + 7077, 7024, 7116, 7116, 7024, 7120, 7075, 7076, 7077, 7091, + + 7116, 7121, 7091, 7117, 7122, 7120, 7123, 7122, 7125, 7129, + 7130, 7130, 7126, 7120, 7123, 7091, 7126, 7121, 7131, 7131, + 7127, 7134, 7125, 7136, 7127, 7024, 7127, 7024, 7125, 7133, + 7135, 7137, 7208, 7133, 7141, 7136, 7127, 7142, 7141, 7024, + 7141, 7143, 7024, 7024, 7025, 7209, 7135, 7143, 7144, 7137, + 7141, 7138, 7138, 7138, 7138, 7142, 7117, 7148, 7144, 7149, + 7025, 7025, 7025, 7025, 7025, 7025, 7147, 7140, 7145, 7025, + 7146, 7149, 7025, 7140, 7145, 7148, 7150, 7129, 7146, 7140, + 7150, 7147, 7147, 7153, 7151, 7152, 7152, 7155, 7155, 7153, + 7156, 7157, 7134, 7151, 7154, 7153, 7154, 7156, 7160, 7134, + + 7158, 7159, 7162, 7025, 7167, 7025, 7159, 7161, 7162, 7160, + 7163, 7154, 7154, 7173, 7173, 7163, 7160, 7025, 7167, 7158, + 7025, 7025, 7025, 7132, 7161, 7165, 7168, 7176, 7165, 7169, + 7211, 7183, 7138, 7168, 7132, 7169, 7132, 7132, 7138, 7132, + 7132, 7132, 7132, 7132, 7132, 7170, 7171, 7172, 7177, 7185, + 7170, 7174, 7171, 7157, 7177, 7174, 7175, 7178, 7171, 7172, + 7175, 7180, 7175, 7179, 7171, 7185, 7181, 7184, 7176, 7157, + 7186, 7174, 7175, 7212, 7176, 7157, 7179, 7178, 7186, 7182, + 7181, 7180, 7179, 7181, 7189, 7132, 7182, 7184, 7188, 7132, + 7193, 7132, 7190, 7213, 7187, 7187, 7191, 7190, 7188, 7195, + + 7189, 7132, 7183, 7187, 7191, 7192, 7193, 7194, 7210, 7183, + 7214, 7195, 7215, 7217, 7218, 7192, 7196, 7196, 7196, 7196, + 7196, 7196, 7219, 7194, 7220, 7221, 7215, 7218, 7222, 7223, + 7224, 7226, 7227, 7228, 7229, 7210, 7230, 7231, 7232, 7233, + 7231, 7232, 7234, 7235, 7238, 7239, 7235, 7236, 7236, 7236, + 7236, 7240, 7241, 7236, 7242, 7243, 7244, 7245, 7246, 7244, + 7245, 7246, 7247, 7257, 7248, 7247, 7240, 7248, 7249, 7250, + 7251, 7249, 7250, 7251, 7252, 7253, 7254, 7252, 7253, 7254, + 7255, 7256, 7260, 7255, 7261, 7267, 7268, 7256, 7256, 7258, + 7258, 7258, 7258, 7259, 7259, 7259, 7259, 7264, 7265, 7266, + + 7259, 7270, 7269, 7265, 7264, 7269, 7266, 7271, 7272, 7273, + 7271, 7274, 7275, 7276, 7277, 7273, 7284, 7278, 7235, 7246, + 7279, 7280, 7276, 7274, 7281, 7283, 7282, 7285, 7289, 7245, + 7282, 7251, 7289, 7287, 7236, 7291, 7288, 7254, 7291, 7277, + 7286, 7250, 7278, 7290, 7292, 7279, 7280, 7253, 7295, 7281, + 7283, 7248, 7286, 7286, 7292, 7290, 7297, 7293, 7298, 7299, + 7255, 7293, 7298, 7294, 7296, 7300, 7302, 7303, 7305, 7299, + 7301, 7304, 7306, 7311, 7308, 7300, 7308, 7303, 7304, 7311, + 7272, 7305, 7259, 7262, 7288, 7307, 7306, 7283, 7294, 7296, + 7312, 7283, 7288, 7283, 7313, 7301, 7309, 7283, 7287, 7262, + + 7262, 7262, 7262, 7262, 7262, 7319, 7309, 7321, 7262, 7287, + 7307, 7262, 7288, 7310, 7310, 7316, 7294, 7296, 7325, 7313, + 7314, 7314, 7315, 7301, 7316, 7317, 7318, 7315, 7320, 7317, + 7322, 7323, 7320, 7318, 7324, 7323, 7326, 7326, 7328, 7324, + 7330, 7326, 7262, 7328, 7262, 7327, 7327, 7329, 7329, 7331, + 7329, 7332, 7312, 7333, 7334, 7262, 7262, 7335, 7336, 7262, + 7262, 7263, 7337, 7338, 7341, 7339, 7339, 7339, 7339, 7348, + 7342, 7335, 7337, 7341, 7342, 7343, 7344, 7263, 7263, 7263, + 7263, 7263, 7263, 7342, 7343, 7344, 7263, 7345, 7330, 7263, + 7354, 7346, 7322, 7347, 7348, 7349, 7345, 7350, 7345, 7332, + + 7346, 7333, 7322, 7347, 7349, 7351, 7322, 7352, 7353, 7334, + 7355, 7350, 7331, 7351, 7356, 7354, 7330, 7352, 7353, 7355, + 7263, 7359, 7263, 7363, 7367, 7331, 7360, 7332, 7357, 7333, + 7334, 7361, 7381, 7263, 7263, 7338, 7360, 7263, 7263, 7339, + 7339, 7361, 7357, 7366, 7368, 7370, 7382, 7368, 7385, 7366, + 7370, 7391, 7339, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7358, 7358, 7358, 7358, + 7364, 7365, 7369, 7371, 7373, 7376, 7371, 7392, 7376, 7374, + 7364, 7365, 7374, 7369, 7375, 7375, 7375, 7375, 7386, 7384, + 7377, 7378, 7379, 7377, 7358, 7378, 7387, 7378, 7379, 7373, + 7379, 7378, 7378, 7376, 7380, 7383, 7388, 7383, 7380, 7389, + 7390, 7393, 7394, 7386, 7395, 7396, 7397, 7398, 7380, 7400, + + 7399, 7400, 7396, 7404, 7395, 7401, 7402, 7403, 7406, 7403, + 7405, 7388, 7409, 7407, 7389, 7390, 7405, 7404, 7407, 7409, + 7414, 7397, 7406, 7414, 7374, 7399, 7358, 7412, 7371, 7371, + 7401, 7402, 7374, 7358, 7374, 7377, 7408, 7375, 7415, 7375, + 7384, 7384, 7410, 7377, 7422, 7377, 7408, 7412, 7387, 7427, + 7408, 7435, 7423, 7399, 7410, 7413, 7423, 7437, 7443, 7402, + 7411, 7411, 7411, 7411, 7411, 7413, 7416, 7416, 7416, 7416, + 7417, 7417, 7417, 7417, 7419, 7419, 7419, 7419, 7425, 7420, + 7420, 7420, 7420, 7424, 7439, 7445, 7446, 7424, 7425, 7426, + 7426, 7428, 7426, 7431, 7428, 7439, 7429, 7431, 7417, 7430, + + 7429, 7432, 7430, 7433, 7450, 7447, 7411, 7420, 7433, 7411, + 7429, 7434, 7440, 7442, 7434, 7432, 7411, 7436, 7438, 7442, + 7436, 7441, 7438, 7451, 7441, 7448, 7440, 7444, 7453, 7440, + 7447, 7444, 7449, 7444, 7449, 7448, 7454, 7444, 7452, 7454, + 7453, 7455, 7456, 7457, 7458, 7461, 7455, 7462, 7451, 7463, + 7457, 7459, 7456, 7416, 7459, 7464, 7465, 7417, 7460, 7460, + 7460, 7419, 7466, 7452, 7467, 7468, 7420, 7465, 7470, 7469, + 7472, 7473, 7462, 7471, 7474, 7475, 7476, 7475, 7470, 7469, + 7464, 7469, 7471, 7476, 7477, 7478, 7483, 7479, 7484, 7467, + 7479, 7480, 7482, 7482, 7503, 7472, 7473, 7486, 7477, 7474, + + 7487, 7480, 7486, 7481, 7485, 7487, 7490, 7481, 7488, 7481, + 7478, 7491, 7488, 7481, 7498, 7498, 7490, 7461, 7481, 7462, + 7485, 7485, 7485, 7485, 7485, 7485, 7492, 7493, 7494, 7485, + 7500, 7495, 7497, 7493, 7504, 7497, 7492, 7495, 7508, 7499, + 7494, 7496, 7496, 7496, 7496, 7499, 7505, 7502, 7483, 7489, + 7501, 7502, 7501, 7502, 7506, 7500, 7506, 7502, 7510, 7517, + 7489, 7507, 7489, 7489, 7513, 7489, 7489, 7489, 7489, 7489, + 7489, 7505, 7509, 7507, 7513, 7511, 7509, 7511, 7512, 7513, + 7514, 7512, 7491, 7491, 7515, 7516, 7518, 7519, 7520, 7521, + 7515, 7519, 7514, 7522, 7523, 7516, 7519, 7524, 7525, 7526, + + 7527, 7528, 7529, 7530, 7531, 7536, 7530, 7532, 7533, 7531, + 7533, 7489, 7529, 7532, 7534, 7489, 7496, 7489, 7538, 7534, + 7533, 7489, 7535, 7535, 7537, 7533, 7539, 7539, 7496, 7537, + 7540, 7538, 7541, 7542, 7543, 7544, 7547, 7545, 7546, 7548, + 7548, 7540, 7540, 7541, 7547, 7543, 7545, 7549, 7540, 7550, + 7550, 7551, 7552, 7558, 7553, 7554, 7555, 7551, 7552, 7553, + 7555, 7559, 7556, 7551, 7566, 7554, 7556, 7536, 7556, 7560, + 7555, 7561, 7556, 7562, 7563, 7568, 7557, 7536, 7556, 7546, + 7557, 7565, 7557, 7560, 7561, 7563, 7557, 7562, 7563, 7536, + 7564, 7564, 7567, 7569, 7558, 7567, 7570, 7565, 7565, 7565, + + 7565, 7565, 7565, 7573, 7572, 7574, 7565, 7572, 7575, 7576, + 7570, 7571, 7571, 7571, 7571, 7577, 7580, 7578, 7572, 7578, + 7581, 7582, 7575, 7576, 7583, 7577, 7579, 7579, 7573, 7579, + 7574, 7584, 7584, 7585, 7585, 7585, 7585, 7588, 7588, 7571, + 7586, 7586, 7586, 7586, 7589, 7589, 7568, 7568, 7586, 7587, + 7587, 7587, 7587, 7590, 7591, 7592, 7592, 7587, 7593, 7594, + 7595, 7596, 7597, 7597, 7601, 7569, 7598, 7598, 7598, 7590, + 7599, 7599, 7600, 7600, 7602, 7604, 7607, 7603, 7605, 7605, + 7608, 7603, 7606, 7606, 7612, 7609, 7613, 7614, 7585, 7611, + 7611, 7611, 7611, 7611, 7611, 7586, 7586, 7603, 7571, 7615, + + 7616, 7617, 7619, 7620, 7587, 7587, 7621, 7622, 7589, 7584, + 7618, 7623, 7618, 7627, 7624, 7629, 7628, 7630, 7616, 7628, + 7631, 7632, 7633, 7602, 7625, 7625, 7625, 7625, 7625, 7635, + 7602, 7638, 7639, 7600, 7599, 7636, 7634, 7641, 7642, 7645, + 7597, 7626, 7626, 7626, 7626, 7626, 7626, 7646, 7647, 7649, + 7602, 7609, 7634, 7634, 7634, 7634, 7634, 7634, 7643, 7643, + 7648, 7621, 7643, 7635, 7644, 7650, 7609, 7644, 7648, 7620, + 7619, 7651, 7652, 7636, 7653, 7654, 7655, 7658, 7657, 7622, + 7624, 7653, 7657, 7664, 7625, 7623, 7659, 7659, 7659, 7659, + 7661, 7665, 7666, 7653, 7667, 7667, 7667, 7667, 7668, 7671, + + 7661, 7665, 7668, 7669, 7672, 7632, 7637, 7669, 7668, 7669, + 7673, 7674, 7675, 7671, 7670, 7670, 7676, 7677, 7678, 7679, + 7680, 7681, 7637, 7637, 7637, 7637, 7637, 7637, 7670, 7658, + 7673, 7637, 7683, 7684, 7637, 7685, 7686, 7687, 7688, 7689, + 7690, 7691, 7695, 7696, 7666, 7698, 7699, 7690, 7700, 7701, + 7731, 7732, 7703, 7730, 7698, 7704, 7734, 7730, 7739, 7667, + 7734, 7735, 7736, 7735, 7740, 7637, 7637, 7637, 7703, 7637, + 7704, 7736, 7731, 7659, 7701, 7744, 7759, 7772, 7773, 7637, + 7739, 7667, 7637, 7637, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7656, 7660, 7660, + 7660, 7660, 7693, 7733, 7694, 7694, 7705, 7706, 7710, 7775, + 7707, 7708, 7709, 7656, 7656, 7656, 7656, 7656, 7656, 7716, + + 7715, 7711, 7656, 7718, 7714, 7656, 7660, 7713, 7717, 7745, + 7712, 7780, 7719, 7742, 7720, 7705, 7782, 7723, 7741, 7745, + 7795, 7774, 7741, 7722, 7741, 7741, 7727, 7774, 7742, 7746, + 7747, 7693, 7721, 7752, 7799, 7728, 7656, 7725, 7656, 7656, + 7656, 7726, 7709, 7724, 7746, 7733, 7750, 7748, 7706, 7751, + 7656, 7716, 7749, 7656, 7656, 7753, 7707, 7708, 7660, 7694, + 7715, 7713, 7705, 7706, 7710, 7660, 7707, 7708, 7709, 7711, + 7718, 7712, 7714, 7719, 7717, 7716, 7715, 7711, 7712, 7718, + 7714, 7720, 7721, 7713, 7717, 7722, 7712, 7723, 7719, 7725, + 7720, 7727, 7724, 7723, 7754, 7747, 7726, 7728, 7743, 7722, + + 7743, 7728, 7727, 7728, 7749, 7751, 7747, 7748, 7721, 7752, + 7743, 7750, 7755, 7725, 7743, 7757, 7756, 7726, 7753, 7724, + 7758, 7761, 7750, 7748, 7760, 7751, 7769, 7770, 7749, 7769, + 7779, 7753, 7777, 7771, 7760, 7784, 7807, 7776, 7784, 7760, + 7761, 7762, 7762, 7762, 7762, 7777, 7754, 7764, 7764, 7764, + 7764, 7778, 7770, 7768, 7768, 7768, 7768, 7781, 7783, 7778, + 7778, 7768, 7783, 7786, 7781, 7809, 7786, 7779, 7783, 7758, + 7754, 7755, 7756, 7797, 7797, 7785, 7757, 7787, 7785, 7788, + 7787, 7768, 7788, 7789, 7790, 7771, 7789, 7790, 7755, 7770, + 7776, 7757, 7756, 7792, 7793, 7771, 7758, 7792, 7794, 7776, + + 7794, 7791, 7762, 7785, 7791, 7787, 7776, 7793, 7764, 7771, + 7800, 7789, 7798, 7798, 7768, 7801, 7800, 7801, 7808, 7811, + 7762, 7763, 7763, 7763, 7763, 7768, 7764, 7796, 7802, 7791, + 7803, 7802, 7768, 7768, 7803, 7763, 7804, 7763, 7763, 7806, + 7763, 7763, 7763, 7763, 7763, 7763, 7805, 7806, 7810, 7812, + 7805, 7813, 7796, 7817, 7814, 7815, 7820, 7823, 7806, 7826, + 7813, 7804, 7818, 7810, 7814, 7815, 7818, 7819, 7818, 7821, + 7822, 7824, 7826, 7818, 7828, 7827, 7819, 7821, 7823, 7822, + 7808, 7829, 7763, 7825, 7808, 7824, 7808, 7825, 7827, 7828, + 7831, 7831, 7832, 7834, 7835, 7830, 7836, 7834, 7833, 7837, + + 7763, 7765, 7765, 7765, 7765, 7830, 7833, 7838, 7841, 7839, + 7849, 7865, 7852, 7835, 7832, 7765, 7842, 7765, 7765, 7868, + 7765, 7765, 7765, 7765, 7765, 7765, 7842, 7852, 7843, 7765, + 7839, 7843, 7844, 7848, 7855, 7849, 7850, 7857, 7843, 7856, + 7850, 7869, 7861, 7844, 7870, 7844, 7844, 7857, 7844, 7844, + 7844, 7844, 7844, 7844, 7856, 7846, 7861, 7844, 7836, 7851, + 7872, 7845, 7765, 7845, 7845, 7845, 7845, 7845, 7845, 7846, + 7851, 7846, 7846, 7846, 7846, 7846, 7846, 7867, 7873, 7874, + 7765, 7766, 7766, 7766, 7766, 7853, 7853, 7853, 7853, 7766, + 7854, 7854, 7854, 7854, 7855, 7848, 7847, 7859, 7766, 7855, + + 7766, 7766, 7766, 7766, 7766, 7766, 7860, 7859, 7846, 7766, + 7847, 7862, 7847, 7847, 7847, 7847, 7847, 7847, 7854, 7860, + 7858, 7847, 7858, 7863, 7862, 7864, 7875, 7863, 7864, 7866, + 7876, 7877, 7878, 7858, 7879, 7864, 7880, 7881, 7866, 7867, + 7880, 7882, 7766, 7883, 7879, 7886, 7880, 7881, 7884, 7847, + 7889, 7882, 7884, 7883, 7885, 7885, 7885, 7885, 7884, 7891, + 7766, 7767, 7767, 7767, 7767, 7890, 7893, 7903, 7890, 7767, + 7886, 7903, 7853, 7913, 7894, 7914, 7892, 7854, 7767, 7917, + 7767, 7767, 7767, 7767, 7767, 7767, 7888, 7892, 7894, 7767, + 7888, 7895, 7896, 7897, 7895, 7896, 7898, 7899, 7899, 7900, + + 7888, 7901, 7902, 7897, 7907, 7905, 7908, 7907, 7909, 7898, + 7885, 7901, 7902, 7904, 7900, 7912, 7908, 7904, 7905, 7885, + 7910, 7910, 7767, 7904, 7915, 7906, 7909, 7906, 7911, 7886, + 7912, 7916, 7911, 7916, 7918, 7919, 7910, 7767, 7906, 7919, + 7767, 7767, 7911, 7920, 7921, 7922, 7925, 7920, 7926, 7915, + 7927, 7928, 7929, 7930, 7931, 7932, 7917, 7930, 7934, 7933, + 7936, 7935, 7934, 7935, 7926, 7927, 7921, 7923, 7937, 7936, + 7938, 7939, 7942, 7945, 7940, 7939, 7931, 7939, 7939, 7947, + 7949, 7944, 7946, 7923, 7923, 7923, 7923, 7923, 7923, 7940, + 7937, 7941, 7923, 7941, 7943, 7923, 7944, 7946, 7947, 7948, + + 7953, 7956, 7948, 7941, 7943, 7949, 7950, 7941, 7956, 7951, + 7955, 7957, 7928, 7953, 7929, 7951, 7952, 7962, 7929, 7958, + 7929, 7933, 7954, 7958, 7960, 7965, 7923, 7928, 7923, 7958, + 7954, 7954, 7959, 7961, 7972, 7961, 7959, 7960, 7923, 7967, + 7923, 7967, 7949, 7923, 7923, 7924, 7966, 7955, 7963, 7963, + 7964, 7964, 7966, 7968, 7974, 7969, 7968, 7973, 7950, 7969, + 7975, 7924, 7924, 7924, 7924, 7924, 7924, 7970, 7950, 7952, + 7924, 7970, 7971, 7924, 7976, 7975, 7977, 7978, 7952, 7979, + 7971, 7981, 7950, 7980, 7982, 7952, 7978, 7983, 7982, 7979, + 7982, 7971, 7984, 7980, 7985, 7982, 7983, 7988, 7993, 7986, + + 7990, 7989, 7985, 7987, 7924, 7989, 7924, 7924, 7986, 7996, + 7994, 7988, 8000, 7990, 7991, 7992, 7995, 7995, 7924, 7973, + 7994, 7924, 7924, 7973, 7987, 7973, 7997, 7991, 7998, 7999, + 7992, 7996, 7998, 8001, 7997, 8002, 8003, 8004, 8005, 8003, + 8006, 8007, 8005, 8008, 8017, 8002, 8003, 8009, 7999, 8011, + 8010, 8006, 8010, 8012, 8001, 8013, 8007, 8009, 8008, 8011, + 8014, 8015, 8018, 8010, 8019, 8015, 8012, 8016, 8020, 8013, + 8016, 8018, 8021, 8014, 8000, 8022, 8021, 8016, 8020, 8023, + 8024, 8028, 8021, 8025, 8027, 8022, 8030, 8025, 8027, 8023, + 8024, 8031, 8032, 8025, 8026, 8026, 8026, 8026, 8027, 8004, + + 8029, 8033, 8031, 8029, 8034, 8035, 8036, 8034, 8035, 8037, + 8038, 8038, 8039, 8040, 8041, 8033, 8036, 8042, 8044, 8048, + 8052, 8042, 8037, 8040, 8041, 8043, 8019, 8039, 8045, 8043, + 8045, 8044, 8047, 8046, 8051, 8043, 8046, 8048, 8049, 8049, + 8053, 8045, 8047, 8050, 8054, 8057, 8054, 8050, 8055, 8051, + 8026, 8056, 8055, 8058, 8049, 8056, 8059, 8050, 8060, 8026, + 8061, 8062, 8063, 8065, 8066, 8062, 8067, 8057, 8068, 8071, + 8072, 8073, 8074, 8063, 8075, 8076, 8077, 8079, 8080, 8081, + 8082, 8083, 8084, 8085, 8086, 8087, 8088, 8089, 8090, 8091, + 8092, 8093, 8091, 8094, 8095, 8096, 8097, 8098, 8099, 8100, + + 8074, 8101, 8102, 8103, 8105, 8106, 8107, 8108, 8109, 8110, + 8111, 8097, 8114, 8110, 8112, 8112, 8112, 8112, 8115, 8118, + 8120, 8112, 8118, 8120, 8121, 8122, 8119, 8124, 8126, 8123, + 8127, 8131, 8081, 8122, 8123, 8125, 8129, 8086, 8135, 8088, + 8119, 8090, 8133, 8119, 8125, 8133, 8126, 8095, 8119, 8132, + 8128, 8132, 8124, 8128, 8128, 8137, 8128, 8139, 8140, 8138, + 8141, 8129, 8134, 8138, 8144, 8145, 8143, 8146, 8128, 8136, + 8143, 8147, 8148, 8149, 8150, 8148, 8154, 8137, 8152, 8151, + 8142, 8153, 8152, 8156, 8157, 8147, 8156, 8103, 8151, 8162, + 8150, 8158, 8155, 8147, 8164, 8149, 8155, 8161, 8155, 8155, + + 8165, 8173, 8163, 8112, 8116, 8135, 8182, 8167, 8165, 8161, + 8155, 8168, 8164, 8161, 8135, 8171, 8158, 8161, 8145, 8170, + 8116, 8116, 8116, 8116, 8116, 8116, 8174, 8134, 8189, 8116, + 8211, 8136, 8116, 8142, 8212, 8136, 8166, 8136, 8134, 8166, + 8213, 8172, 8142, 8169, 8172, 8145, 8142, 8146, 8142, 8136, + 8159, 8174, 8184, 8153, 8159, 8184, 8159, 8186, 8160, 8177, + 8142, 8153, 8160, 8116, 8160, 8116, 8159, 8177, 8159, 8188, + 8168, 8181, 8186, 8160, 8163, 8180, 8160, 8116, 8181, 8167, + 8116, 8116, 8163, 8167, 8116, 8117, 8170, 8168, 8180, 8185, + 8185, 8171, 8194, 8187, 8183, 8170, 8175, 8175, 8175, 8175, + + 8190, 8117, 8117, 8117, 8117, 8117, 8117, 8183, 8169, 8218, + 8117, 8191, 8190, 8117, 8176, 8176, 8176, 8176, 8187, 8169, + 8192, 8188, 8193, 8193, 8195, 8192, 8196, 8195, 8199, 8198, + 8197, 8199, 8193, 8200, 8209, 8198, 8200, 8196, 8201, 8209, + 8219, 8201, 8176, 8198, 8117, 8188, 8117, 8194, 8197, 8188, + 8203, 8203, 8203, 8203, 8206, 8208, 8199, 8206, 8117, 8208, + 8207, 8117, 8117, 8207, 8191, 8117, 8201, 8204, 8204, 8204, + 8204, 8214, 8210, 8187, 8215, 8216, 8217, 8208, 8220, 8221, + 8191, 8220, 8222, 8175, 8223, 8224, 8225, 8231, 8207, 8237, + 8231, 8191, 8210, 8239, 8216, 8217, 8214, 8240, 8241, 8215, + + 8240, 8176, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8202, 8226, 8227, 8202, 8205, + + 8205, 8205, 8205, 8228, 8229, 8230, 8232, 8233, 8226, 8230, + 8244, 8230, 8234, 8227, 8238, 8236, 8243, 8245, 8229, 8235, + 8230, 8229, 8246, 8230, 8228, 8243, 8229, 8205, 8232, 8235, + 8235, 8246, 8233, 8236, 8234, 8242, 8247, 8242, 8249, 8248, + 8251, 8252, 8253, 8254, 8250, 8257, 8247, 8248, 8250, 8251, + 8250, 8260, 8255, 8254, 8247, 8250, 8249, 8261, 8267, 8252, + 8202, 8255, 8250, 8256, 8258, 8259, 8256, 8251, 8258, 8259, + 8263, 8265, 8262, 8269, 8265, 8261, 8238, 8262, 8202, 8270, + 8238, 8266, 8238, 8271, 8263, 8273, 8266, 8259, 8264, 8264, + 8264, 8264, 8263, 8268, 8238, 8272, 8268, 8270, 8269, 8275, + + 8274, 8276, 8273, 8272, 8274, 8277, 8277, 8279, 8278, 8275, + 8280, 8281, 8282, 8280, 8283, 8276, 8278, 8285, 8284, 8281, + 8288, 8281, 8289, 8286, 8283, 8284, 8292, 8293, 8290, 8292, + 8293, 8295, 8283, 8284, 8286, 8287, 8286, 8286, 8267, 8286, + 8286, 8286, 8286, 8286, 8286, 8298, 8300, 8289, 8286, 8287, + 8290, 8287, 8287, 8287, 8287, 8287, 8287, 8291, 8296, 8301, + 8287, 8296, 8297, 8302, 8291, 8294, 8294, 8294, 8294, 8299, + 8297, 8264, 8303, 8304, 8307, 8264, 8308, 8305, 8304, 8285, + 8303, 8305, 8299, 8285, 8310, 8285, 8306, 8279, 8287, 8299, + 8312, 8306, 8309, 8294, 8308, 8311, 8307, 8285, 8313, 8309, + + 8288, 8314, 8310, 8315, 8311, 8316, 8317, 8309, 8318, 8319, + 8320, 8321, 8322, 8323, 8324, 8325, 8326, 8326, 8327, 8329, + 8330, 8331, 8332, 8333, 8340, 8298, 8330, 8329, 8336, 8331, + 8332, 8334, 8361, 8333, 8330, 8365, 8337, 8334, 8339, 8340, + 8338, 8333, 8337, 8302, 8345, 8334, 8335, 8335, 8335, 8335, + 8337, 8341, 8294, 8336, 8338, 8343, 8339, 8342, 8346, 8344, + 8347, 8348, 8338, 8344, 8342, 8345, 8348, 8349, 8347, 8341, + 8312, 8353, 8350, 8343, 8351, 8352, 8355, 8355, 8354, 8346, + 8356, 8357, 8351, 8352, 8354, 8356, 8349, 8350, 8358, 8360, + 8350, 8359, 8354, 8353, 8357, 8362, 8359, 8360, 8366, 8363, + + 8364, 8357, 8335, 8364, 8370, 8367, 8368, 8369, 8372, 8358, + 8367, 8362, 8336, 8363, 8362, 8371, 8366, 8373, 8374, 8375, + 8370, 8363, 8376, 8371, 8377, 8387, 8376, 8379, 8379, 8335, + 8389, 8368, 8369, 8375, 8380, 8380, 8380, 8380, 8384, 8384, + 8374, 8386, 8380, 8381, 8381, 8381, 8381, 8397, 8386, 8390, + 8390, 8381, 8382, 8382, 8382, 8382, 8383, 8383, 8383, 8383, + 8382, 8385, 8391, 8391, 8383, 8392, 8392, 8393, 8394, 8395, + 8394, 8385, 8396, 8398, 8401, 8402, 8399, 8403, 8404, 8395, + 8405, 8399, 8396, 8406, 8407, 8408, 8409, 8410, 8411, 8380, + 8380, 8412, 8413, 8415, 8414, 8416, 8418, 8373, 8381, 8381, + + 8419, 8420, 8379, 8421, 8422, 8423, 8426, 8382, 8382, 8424, + 8429, 8383, 8383, 8384, 8431, 8432, 8433, 8434, 8435, 8436, + 8437, 8438, 8439, 8440, 8390, 8435, 8441, 8442, 8393, 8399, + 8443, 8444, 8445, 8392, 8391, 8446, 8447, 8448, 8449, 8450, + 8454, 8455, 8452, 8393, 8456, 8410, 8459, 8412, 8457, 8462, + 8424, 8413, 8415, 8423, 8420, 8452, 8460, 8461, 8464, 8461, + 8465, 8466, 8399, 8414, 8425, 8457, 8467, 8468, 8469, 8470, + 8460, 8471, 8461, 8472, 8473, 8474, 8464, 8456, 8476, 8477, + 8425, 8425, 8425, 8425, 8425, 8425, 8478, 8463, 8479, 8425, + 8480, 8463, 8425, 8481, 8455, 8463, 8482, 8463, 8483, 8455, + + 8487, 8488, 8489, 8517, 8491, 8518, 8459, 8462, 8492, 8520, + 8455, 8459, 8521, 8522, 8543, 8521, 8492, 8526, 8465, 8491, + 8518, 8489, 8492, 8425, 8525, 8425, 8523, 8425, 8517, 8544, + 8523, 8526, 8525, 8545, 8520, 8560, 8561, 8425, 8562, 8565, + 8425, 8425, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8451, 8484, 8490, 8485, 8493, + 8486, 8486, 8494, 8496, 8499, 8497, 8502, 8495, 8566, 8555, + 8503, 8451, 8451, 8451, 8451, 8451, 8451, 8500, 8504, 8501, + 8451, 8506, 8509, 8451, 8505, 8510, 8527, 8493, 8529, 8511, + 8507, 8508, 8569, 8554, 8555, 8512, 8570, 8527, 8574, 8532, + 8513, 8515, 8529, 8567, 8583, 8484, 8530, 8485, 8534, 8537, + 8584, 8531, 8554, 8451, 8451, 8490, 8451, 8495, 8451, 8485, + + 8486, 8512, 8567, 8514, 8499, 8500, 8496, 8501, 8451, 8494, + 8509, 8451, 8451, 8497, 8502, 8493, 8503, 8504, 8494, 8496, + 8499, 8497, 8502, 8495, 8505, 8507, 8503, 8508, 8506, 8515, + 8512, 8516, 8510, 8500, 8504, 8501, 8511, 8506, 8509, 8513, + 8505, 8510, 8530, 8531, 8532, 8511, 8507, 8508, 8513, 8533, + 8528, 8512, 8514, 8539, 8528, 8532, 8513, 8515, 8528, 8514, + 8528, 8534, 8530, 8536, 8534, 8537, 8538, 8531, 8540, 8528, + 8541, 8542, 8575, 8559, 8557, 8542, 8575, 8559, 8563, 8514, + 8516, 8559, 8572, 8559, 8564, 8542, 8558, 8558, 8558, 8558, + 8558, 8558, 8573, 8571, 8573, 8579, 8572, 8516, 8594, 8557, + + 8576, 8533, 8539, 8585, 8576, 8571, 8580, 8516, 8577, 8564, + 8571, 8536, 8577, 8600, 8538, 8579, 8582, 8580, 8605, 8540, + 8549, 8549, 8549, 8549, 8558, 8533, 8557, 8582, 8585, 8539, + 8578, 8563, 8552, 8552, 8552, 8552, 8541, 8564, 8586, 8536, + 8552, 8591, 8538, 8581, 8540, 8599, 8541, 8546, 8546, 8546, + 8546, 8587, 8586, 8591, 8587, 8547, 8547, 8547, 8547, 8606, + 8552, 8546, 8581, 8546, 8546, 8599, 8546, 8546, 8546, 8546, + 8546, 8546, 8547, 8588, 8547, 8547, 8547, 8547, 8547, 8547, + 8601, 8549, 8578, 8589, 8550, 8550, 8550, 8550, 8578, 8610, + 8588, 8592, 8549, 8552, 8601, 8592, 8589, 8595, 8595, 8549, + + 8549, 8551, 8551, 8551, 8551, 8602, 8603, 8608, 8546, 8551, + 8552, 8552, 8550, 8593, 8593, 8597, 8547, 8602, 8603, 8597, + 8596, 8612, 8553, 8553, 8553, 8553, 8546, 8604, 8602, 8551, + 8553, 8593, 8593, 8615, 8547, 8548, 8548, 8548, 8548, 8596, + 8616, 8604, 8609, 8598, 8607, 8550, 8604, 8598, 8614, 8622, + 8553, 8598, 8548, 8598, 8548, 8548, 8548, 8548, 8548, 8548, + 8550, 8607, 8551, 8550, 8550, 8608, 8611, 8609, 8613, 8617, + 8611, 8620, 8618, 8623, 8614, 8620, 8621, 8624, 8619, 8625, + 8551, 8551, 8627, 8553, 8630, 8613, 8615, 8553, 8619, 8626, + 8621, 8608, 8629, 8626, 8617, 8627, 8548, 8618, 8628, 8632, + + 8634, 8553, 8631, 8626, 8635, 8629, 8631, 8633, 8636, 8637, + 8631, 8548, 8631, 8631, 8548, 8548, 8638, 8628, 8633, 8641, + 8642, 8644, 8617, 8645, 8646, 8647, 8648, 8649, 8651, 8650, + 8652, 8656, 8658, 8636, 8653, 8653, 8653, 8653, 8623, 8648, + 8649, 8650, 8647, 8652, 8657, 8651, 8654, 8654, 8654, 8654, + 8659, 8664, 8660, 8661, 8656, 8660, 8660, 8657, 8662, 8665, + 8666, 8663, 8662, 8667, 8668, 8661, 8662, 8667, 8662, 8667, + 8665, 8664, 8669, 8659, 8654, 8663, 8661, 8671, 8668, 8670, + 8672, 8673, 8668, 8675, 8669, 8674, 8676, 8677, 8671, 8679, + 8653, 8678, 8670, 8672, 8681, 8683, 8680, 8676, 8690, 8678, + + 8677, 8675, 8654, 8680, 8674, 8678, 8684, 8682, 8685, 8684, + 8680, 8682, 8679, 8691, 8692, 8693, 8694, 8695, 8696, 8698, + 8697, 8685, 8688, 8699, 8701, 8703, 8706, 8707, 8704, 8708, + 8709, 8713, 8702, 8712, 8722, 8700, 8711, 8720, 8688, 8688, + 8688, 8688, 8688, 8688, 8723, 8705, 8718, 8688, 8714, 8736, + 8688, 8754, 8710, 8715, 8756, 8758, 8726, 8717, 8724, 8759, + 8721, 8716, 8728, 8727, 8732, 8735, 8737, 8791, 8719, 8738, + 8692, 8690, 8725, 8742, 8740, 8739, 8731, 8694, 8729, 8691, + 8696, 8688, 8733, 8688, 8730, 8691, 8697, 8734, 8693, 8713, + 8692, 8698, 8699, 8712, 8702, 8688, 8701, 8700, 8688, 8688, + + 8689, 8700, 8741, 8700, 8702, 8704, 8708, 8705, 8711, 8717, + 8714, 8705, 8700, 8705, 8720, 8715, 8689, 8689, 8689, 8689, + 8689, 8689, 8710, 8716, 8718, 8689, 8719, 8710, 8689, 8721, + 8724, 8726, 8728, 8725, 8727, 8731, 8729, 8719, 8737, 8738, + 8729, 8732, 8730, 8735, 8733, 8739, 8743, 8744, 8742, 8734, + 8738, 8740, 8745, 8734, 8746, 8734, 8747, 8748, 8751, 8689, + 8741, 8689, 8749, 8750, 8752, 8753, 8766, 8760, 8768, 8764, + 8769, 8755, 8797, 8689, 8757, 8761, 8689, 8689, 8762, 8798, + 8763, 8765, 8767, 8799, 8800, 8802, 8771, 8773, 8804, 8775, + 8774, 8805, 8806, 8770, 8778, 8772, 8781, 8804, 8784, 8779, + + 8777, 8780, 8776, 8782, 8789, 8807, 8787, 8786, 8808, 8744, + 8809, 8794, 8788, 8783, 8790, 8785, 8810, 8812, 8792, 8748, + 8793, 8795, 8813, 8814, 8747, 8750, 8768, 8745, 8796, 8751, + 8743, 8815, 8817, 8755, 8749, 8750, 8753, 8755, 8746, 8755, + 8755, 8752, 8760, 8757, 8764, 8773, 8761, 8766, 8774, 8762, + 8763, 8769, 8765, 8767, 8770, 8770, 8771, 8772, 8775, 8773, + 8776, 8772, 8777, 8772, 8777, 8781, 8778, 8771, 8774, 8779, + 8778, 8783, 8780, 8785, 8782, 8784, 8786, 8787, 8788, 8790, + 8792, 8793, 8794, 8819, 8788, 8789, 8790, 8820, 8821, 8795, + 8796, 8785, 8822, 8822, 8822, 8822, 8823, 8825, 8826, 8828, + + 8827, 8829, 8830, 8832, 8834, 8836, 8837, 8839, 8840, 8843, + 8844, 8845, 8846, 8847, 8848, 8849, 8850, 8851, 8852, 8853, + 8854, 8855, 8858, 8843, 8856, 8857, 8846, 8855, 8859, 8860, + 8861, 8862, 8863, 8865, 8866, 8867, 8868, 8869, 8870, 8871, + 8873, 8870, 8874, 8875, 8876, 8877, 8864, 8858, 8878, 8880, + 8884, 8881, 8879, 8883, 8885, 8881, 8862, 8881, 8886, 8866, + 8826, 8868, 8879, 8887, 8888, 8898, 8881, 8874, 8895, 8893, + 8826, 8827, 8856, 8903, 8890, 8837, 8827, 8841, 8883, 8893, + 8857, 8890, 8894, 8894, 8862, 8899, 8895, 8866, 8907, 8909, + 8912, 8915, 8916, 8841, 8841, 8841, 8841, 8841, 8841, 8864, + + 8856, 8857, 8841, 8896, 8901, 8841, 8886, 8905, 8864, 8917, + 8899, 8918, 8864, 8896, 8864, 8891, 8891, 8891, 8891, 8902, + 8888, 8911, 8919, 8902, 8913, 8902, 8911, 8913, 8887, 8901, + 8885, 8920, 8905, 8921, 8886, 8923, 8841, 8924, 8841, 8887, + 8888, 8914, 8925, 8926, 8914, 8927, 8928, 8929, 8930, 8923, + 8841, 8931, 8913, 8841, 8841, 8842, 8901, 8932, 8933, 8934, + 8905, 8909, 8931, 8935, 8936, 8937, 8940, 8941, 8942, 8914, + 8943, 8842, 8842, 8842, 8842, 8842, 8842, 8935, 8944, 8946, + 8842, 8947, 8948, 8842, 8949, 8951, 8950, 8952, 8953, 8891, + 8950, 8954, 8941, 8955, 8956, 8957, 8959, 8960, 8956, 8929, + + 8956, 8964, 8891, 8961, 8961, 8961, 8961, 8967, 8968, 8969, + 8970, 8971, 8972, 8973, 8842, 8964, 8842, 8974, 8976, 8968, + 8978, 8979, 8980, 8981, 8982, 8986, 8987, 8988, 8842, 8991, + 8993, 8842, 8842, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8958, 8958, 8958, 8958, + 8962, 8962, 8962, 8962, 8966, 8975, 8977, 8983, 8984, 8985, + 8989, 8990, 8992, 8994, 8995, 8996, 8997, 9001, 8999, 9005, + 9006, 8990, 8999, 9007, 8999, 8999, 9009, 9010, 8962, 8966, + 9012, 8977, 8983, 8984, 8985, 9008, 9013, 8992, 9014, 9015, + 8996, 9016, 9008, 9017, 9005, 9018, 9022, 9023, 9024, 9025, + 9026, 9027, 9028, 9028, 9028, 9028, 9029, 9030, 9031, 9032, + 9033, 8984, 9034, 9034, 9035, 9036, 9038, 9037, 9039, 9036, + + 9040, 9036, 9041, 9042, 9041, 9035, 9043, 9042, 9044, 9045, + 9028, 9037, 8989, 8958, 9046, 9047, 9038, 9048, 9049, 8975, + 9051, 9050, 9052, 9053, 9054, 9055, 9056, 9058, 9059, 9060, + 9054, 9061, 9062, 9056, 9063, 9064, 9065, 9065, 9028, 9050, + 9067, 9067, 9066, 9066, 9066, 9066, 9068, 9069, 9070, 9071, + 9066, 9072, 9072, 9073, 9073, 9075, 9061, 9074, 9074, 9076, + 9077, 9079, 9078, 9080, 9081, 9082, 9083, 9084, 9085, 9086, + 9087, 9088, 9089, 9090, 9091, 9092, 9083, 9093, 9094, 9095, + 9096, 9098, 9105, 9099, 9100, 9103, 9108, 9106, 9107, 9109, + 9112, 9110, 9113, 9111, 9127, 9114, 9065, 9066, 9066, 9116, + + 9115, 9117, 9125, 9119, 9124, 9124, 9075, 9106, 9107, 9129, + 9118, 9072, 9118, 9130, 9105, 9131, 9068, 9099, 9100, 9113, + 9115, 9076, 9110, 9114, 9103, 9111, 9108, 9109, 9090, 9112, + 9077, 9075, 9078, 9091, 9119, 9092, 9074, 9121, 9116, 9118, + 9117, 9132, 9133, 9119, 9093, 9101, 9120, 9122, 9135, 9139, + 9126, 9132, 9134, 9140, 9137, 9125, 9142, 9121, 9133, 9143, + 9135, 9101, 9101, 9101, 9101, 9101, 9101, 9120, 9122, 9144, + 9101, 9145, 9148, 9101, 9120, 9126, 9149, 9134, 9130, 9137, + 9150, 9152, 9153, 9154, 9155, 9122, 9158, 9160, 9160, 9161, + 9162, 9162, 9188, 9188, 9163, 9190, 9188, 9191, 9160, 9189, + + 9189, 9200, 9206, 9126, 9101, 9163, 9101, 9191, 9101, 9192, + 9208, 9101, 9192, 9223, 9161, 9225, 9206, 9101, 9101, 9227, + 9228, 9101, 9101, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9123, 9156, 9193, 9136, + 9157, 9157, 9232, 9224, 9230, 9230, 9240, 9218, 9240, 9193, + 9253, 9226, 9123, 9123, 9123, 9123, 9123, 9123, 9218, 9193, + 9221, 9123, 9226, 9209, 9123, 9209, 9209, 9209, 9209, 9209, + 9209, 9229, 9219, 9219, 9219, 9219, 9219, 9219, 9231, 9233, + 9234, 9229, 9221, 9244, 9237, 9243, 9156, 9255, 9233, 9234, + 9231, 9156, 9238, 9238, 9243, 9123, 9224, 9123, 9237, 9123, + 9136, 9136, 9157, 9245, 9245, 9136, 9244, 9136, 9258, 9123, + 9219, 9253, 9123, 9123, 9159, 9159, 9159, 9159, 9159, 9159, + + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9164, 9165, 9166, + 9167, 9168, 9169, 9170, 9171, 9172, 9175, 9173, 9176, 9174, + + 9254, 9239, 9178, 9182, 9250, 9180, 9239, 9181, 9254, 9179, + 9256, 9250, 9239, 9177, 9251, 9260, 9197, 9251, 9251, 9256, + 9257, 9184, 9261, 9264, 9183, 9260, 9195, 9194, 9205, 9202, + 9267, 9257, 9269, 9261, 9270, 9185, 9187, 9271, 9186, 9203, + 9165, 9198, 9199, 9196, 9169, 9273, 9274, 9204, 9280, 9167, + 9276, 9168, 9173, 9180, 9166, 9174, 9178, 9180, 9170, 9181, + 9172, 9171, 9182, 9164, 9165, 9166, 9167, 9168, 9169, 9170, + 9171, 9172, 9175, 9173, 9176, 9174, 9177, 9179, 9178, 9182, + 9183, 9180, 9184, 9181, 9185, 9179, 9186, 9195, 9187, 9177, + 9194, 9196, 9197, 9198, 9202, 9205, 9199, 9184, 9203, 9204, + + 9183, 9276, 9195, 9194, 9205, 9202, 9211, 9211, 9211, 9211, + 9279, 9185, 9187, 9279, 9186, 9203, 9266, 9198, 9199, 9196, + 9281, 9278, 9282, 9204, 9207, 9207, 9207, 9207, 9213, 9213, + 9213, 9213, 9210, 9210, 9210, 9210, 9241, 9278, 9207, 9283, + 9207, 9207, 9284, 9207, 9207, 9207, 9207, 9207, 9207, 9210, + 9246, 9210, 9210, 9210, 9210, 9210, 9210, 9212, 9212, 9212, + 9212, 9214, 9214, 9214, 9214, 9235, 9285, 9211, 9215, 9215, + 9215, 9215, 9216, 9216, 9216, 9216, 9215, 9266, 9259, 9286, + 9216, 9246, 9211, 9287, 9262, 9211, 9211, 9241, 9241, 9213, + 9235, 9217, 9217, 9217, 9217, 9290, 9215, 9272, 9292, 9217, + + 9216, 9242, 9242, 9242, 9242, 9272, 9213, 9213, 9210, 9262, + 9246, 9272, 9210, 9268, 9268, 9268, 9268, 9235, 9212, 9217, + 9295, 9275, 9214, 9293, 9289, 9252, 9214, 9277, 9293, 9215, + 9259, 9299, 9277, 9216, 9246, 9275, 9212, 9212, 9277, 9289, + 9214, 9252, 9252, 9252, 9252, 9252, 9252, 9215, 9288, 9298, + 9298, 9216, 9217, 9216, 9236, 9217, 9236, 9236, 9296, 9236, + 9236, 9236, 9236, 9236, 9236, 9242, 9291, 9297, 9262, 9300, + 9217, 9288, 9296, 9301, 9302, 9305, 9303, 9268, 9291, 9302, + 9304, 9300, 9308, 9297, 9307, 9310, 9252, 9303, 9242, 9305, + 9309, 9309, 9304, 9301, 9306, 9306, 9307, 9252, 9315, 9306, + + 9268, 9306, 9311, 9310, 9312, 9311, 9313, 9313, 9314, 9312, + 9317, 9313, 9316, 9313, 9318, 9312, 9319, 9320, 9321, 9314, + 9322, 9316, 9326, 9325, 9327, 9328, 9329, 9330, 9332, 9333, + 9331, 9334, 9322, 9325, 9331, 9335, 9330, 9336, 9332, 9337, + 9338, 9334, 9333, 9339, 9340, 9341, 9342, 9336, 9332, 9338, + 9343, 9344, 9345, 9346, 9342, 9340, 9335, 9346, 9343, 9347, + 9347, 9348, 9351, 9346, 9344, 9350, 9355, 9358, 9319, 9349, + 9349, 9349, 9349, 9350, 9352, 9318, 9352, 9319, 9354, 9321, + 9321, 9353, 9354, 9356, 9351, 9326, 9357, 9353, 9359, 9360, + 9363, 9365, 9362, 9357, 9321, 9361, 9359, 9368, 9326, 9360, + + 9319, 9323, 9362, 9366, 9361, 9364, 9364, 9364, 9364, 9372, + 9366, 9367, 9375, 9348, 9373, 9370, 9366, 9323, 9323, 9323, + 9323, 9323, 9323, 9369, 9367, 9374, 9323, 9369, 9355, 9323, + 9370, 9371, 9376, 9369, 9349, 9371, 9373, 9377, 9355, 9374, + 9378, 9379, 9380, 9376, 9378, 9356, 9381, 9382, 9383, 9368, + 9385, 9392, 9363, 9384, 9386, 9380, 9349, 9387, 9386, 9389, + 9323, 9381, 9323, 9323, 9384, 9388, 9393, 9387, 9393, 9385, + 9364, 9391, 9389, 9323, 9323, 9399, 9388, 9323, 9323, 9324, + 9390, 9395, 9391, 9395, 9390, 9394, 9390, 9397, 9401, 9402, + 9406, 9397, 9364, 9397, 9408, 9324, 9324, 9324, 9324, 9324, + + 9324, 9396, 9394, 9398, 9324, 9396, 9400, 9324, 9403, 9404, + 9405, 9396, 9409, 9398, 9400, 9410, 9413, 9414, 9415, 9416, + 9418, 9405, 9420, 9421, 9425, 9426, 9427, 9427, 9427, 9427, + 9429, 9430, 9431, 9432, 9434, 9435, 9413, 9436, 9324, 9437, + 9324, 9324, 9438, 9439, 9440, 9431, 9441, 9445, 9440, 9446, + 9447, 9402, 9324, 9448, 9449, 9324, 9324, 9451, 9445, 9449, + 9403, 9452, 9450, 9453, 9454, 9455, 9458, 9410, 9455, 9458, + 9403, 9404, 9450, 9459, 9460, 9450, 9461, 9454, 9463, 9458, + 9464, 9465, 9451, 9466, 9467, 9404, 9452, 9468, 9470, 9469, + 9473, 9479, 9403, 9469, 9471, 9472, 9471, 9467, 9484, 9474, + + 9481, 9472, 9474, 9486, 9481, 9485, 9481, 9473, 9485, 9474, + 9487, 9486, 9490, 9488, 9481, 9481, 9488, 9430, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9443, 9462, 9494, 9493, 9457, 9493, 9478, 9456, 9477, + 9476, 9489, 9491, 9495, 9496, 9499, 9491, 9443, 9443, 9443, + 9443, 9443, 9443, 9500, 9482, 9501, 9443, 9462, 9482, 9443, + 9482, 9483, 9502, 9492, 9482, 9483, 9489, 9483, 9482, 9503, + 9483, 9504, 9497, 9498, 9482, 9483, 9492, 9497, 9498, 9506, + 9505, 9509, 9508, 9512, 9507, 9462, 9511, 9477, 9508, 9513, + 9443, 9510, 9443, 9505, 9503, 9507, 9515, 9510, 9511, 9478, + 9510, 9514, 9522, 9519, 9443, 9514, 9443, 9443, 9443, 9444, + 9456, 9457, 9476, 9478, 9456, 9477, 9476, 9517, 9519, 9524, + + 9525, 9503, 9517, 9518, 9520, 9444, 9444, 9444, 9444, 9444, + 9444, 9520, 9518, 9530, 9444, 9521, 9529, 9444, 9531, 9521, + 9532, 9533, 9529, 9535, 9534, 9536, 9535, 9538, 9515, 9534, + 9539, 9538, 9521, 9539, 9541, 9544, 9543, 9546, 9547, 9549, + 9552, 9515, 9553, 9554, 9547, 9554, 9551, 9556, 9444, 9543, + 9444, 9557, 9551, 9558, 9522, 9551, 9559, 9522, 9560, 9561, + 9562, 9563, 9444, 9565, 9444, 9444, 9444, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9516, 9516, 9516, 9516, 9523, 9526, 9526, 9526, 9526, 9527, + 9527, 9527, 9527, 9537, 9540, 9542, 9545, 9545, 9545, 9545, + 9548, 9550, 9566, 9555, 9567, 9568, 9569, 9570, 9571, 9571, + 9572, 9573, 9574, 9573, 9575, 9577, 9570, 9527, 9576, 9540, + + 9555, 9578, 9576, 9575, 9576, 9548, 9579, 9580, 9579, 9576, + 9581, 9576, 9582, 9583, 9582, 9584, 9587, 9590, 9585, 9583, + 9580, 9585, 9591, 9588, 9584, 9537, 9586, 9588, 9586, 9588, + 9589, 9592, 9589, 9594, 9599, 9592, 9588, 9591, 9516, 9523, + 9593, 9597, 9595, 9601, 9594, 9602, 9550, 9516, 9595, 9604, + 9542, 9595, 9526, 9593, 9545, 9596, 9527, 9598, 9540, 9596, + 9598, 9596, 9600, 9545, 9603, 9605, 9597, 9600, 9596, 9603, + 9606, 9607, 9610, 9607, 9609, 9609, 9611, 9612, 9613, 9614, + 9614, 9617, 9616, 9615, 9615, 9618, 9619, 9620, 9621, 9622, + 9623, 9624, 9625, 9626, 9627, 9628, 9625, 9629, 9630, 9631, + + 9632, 9604, 9633, 9634, 9635, 9637, 9640, 9644, 9619, 9636, + 9636, 9636, 9636, 9636, 9645, 9646, 9647, 9648, 9649, 9651, + 9602, 9652, 9650, 9657, 9604, 9647, 9646, 9654, 9648, 9655, + 9653, 9644, 9606, 9604, 9616, 9658, 9609, 9655, 9645, 9649, + 9605, 9614, 9650, 9653, 9658, 9606, 9606, 9615, 9660, 9654, + 9667, 9662, 9669, 9670, 9674, 9640, 9675, 9672, 9616, 9676, + 9632, 9672, 9677, 9678, 9657, 9660, 9662, 9672, 9633, 9636, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9642, 9656, 9659, 9661, 9663, 9656, 9664, + 9668, 9665, 9679, 9671, 9673, 9680, 9681, 9682, 9683, 9642, + 9642, 9642, 9642, 9642, 9642, 9685, 9661, 9692, 9642, 9659, + 9694, 9642, 9656, 9695, 9663, 9665, 9721, 9664, 9722, 9673, + + 9690, 9690, 9695, 9694, 9723, 9724, 9722, 9725, 9729, 9737, + 9739, 9722, 9741, 9742, 9725, 9749, 9721, 9751, 9754, 9724, + 9758, 9760, 9642, 9668, 9642, 9671, 9642, 9755, 9761, 9765, + 9755, 9760, 9754, 9766, 9767, 9642, 9642, 9768, 9761, 9642, + 9642, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9666, 9687, 9698, 9688, 9688, 9689, + 9689, 9689, 9689, 9697, 9701, 9706, 9699, 9700, 9702, 9703, + 9666, 9666, 9666, 9666, 9666, 9666, 9753, 9759, 9777, 9666, + 9778, 9779, 9666, 9780, 9778, 9783, 9738, 9738, 9738, 9738, + 9756, 9759, 9756, 9756, 9756, 9756, 9756, 9756, 9753, 9788, + 9738, 9775, 9738, 9738, 9687, 9738, 9738, 9738, 9738, 9738, + 9738, 9774, 9698, 9666, 9699, 9666, 9666, 9666, 9789, 9700, + + 9687, 9688, 9781, 9781, 9774, 9703, 9775, 9666, 9697, 9701, + 9666, 9666, 9698, 9702, 9790, 9792, 9793, 9799, 9706, 9697, + 9701, 9706, 9699, 9700, 9702, 9703, 9689, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9704, 9705, 9709, 9710, 9712, 9711, 9713, 9714, 9715, 9716, + 9717, 9772, 9720, 9776, 9784, 9798, 9796, 9731, 9734, 9782, + 9732, 9718, 9719, 9726, 9727, 9728, 9796, 9782, 9800, 9798, + 9736, 9733, 9735, 9740, 9740, 9740, 9740, 9797, 9776, 9784, + 9772, 9801, 9802, 9743, 9743, 9743, 9743, 9797, 9803, 9804, + 9709, 9805, 9704, 9806, 9810, 9812, 9715, 9820, 9716, 9825, + 9808, 9717, 9744, 9744, 9744, 9744, 9705, 9808, 9813, 9710, + 9711, 9712, 9732, 9828, 9734, 9813, 9704, 9705, 9709, 9710, + + 9712, 9711, 9713, 9714, 9715, 9716, 9717, 9718, 9720, 9719, + 9726, 9727, 9728, 9731, 9734, 9736, 9732, 9718, 9719, 9726, + 9727, 9728, 9733, 9735, 9743, 9829, 9736, 9733, 9735, 9740, + 9830, 9773, 9817, 9740, 9745, 9745, 9745, 9745, 9746, 9746, + 9746, 9746, 9743, 9744, 9747, 9747, 9747, 9747, 9763, 9763, + 9763, 9763, 9747, 9817, 9748, 9748, 9748, 9748, 9769, 9840, + 9848, 9744, 9748, 9744, 9809, 9831, 9746, 9785, 9785, 9785, + 9785, 9757, 9747, 9757, 9757, 9757, 9757, 9757, 9757, 9809, + 9811, 9831, 9748, 9773, 9764, 9764, 9764, 9764, 9807, 9769, + 9811, 9814, 9807, 9773, 9807, 9745, 9816, 9835, 9745, 9746, + + 9786, 9786, 9786, 9786, 9814, 9747, 9816, 9818, 9835, 9747, + 9748, 9757, 9764, 9745, 9818, 9748, 9821, 9746, 9769, 9787, + 9787, 9787, 9787, 9747, 9794, 9794, 9794, 9794, 9815, 9821, + 9819, 9815, 9824, 9748, 9822, 9763, 9823, 9826, 9823, 9791, + 9819, 9827, 9769, 9834, 9822, 9824, 9838, 9787, 9785, 9823, + 9791, 9838, 9791, 9791, 9785, 9791, 9791, 9791, 9791, 9791, + 9791, 9837, 9826, 9836, 9836, 9839, 9827, 9839, 9836, 9841, + 9837, 9764, 9842, 9844, 9843, 9845, 9844, 9851, 9841, 9843, + 9865, 9846, 9844, 9849, 9845, 9842, 9846, 9786, 9850, 9794, + 9853, 9834, 9849, 9827, 9847, 9847, 9852, 9850, 9855, 9853, + + 9852, 9791, 9854, 9856, 9856, 9867, 9787, 9861, 9855, 9859, + 9859, 9794, 9861, 9866, 9866, 9854, 9875, 9857, 9864, 9834, + 9858, 9858, 9858, 9858, 9864, 9827, 9832, 9880, 9857, 9851, + 9857, 9857, 9863, 9857, 9857, 9857, 9857, 9857, 9857, 9863, + 9860, 9863, 9832, 9832, 9832, 9832, 9832, 9832, 9851, 9860, + 9860, 9832, 9862, 9868, 9832, 9868, 9862, 9870, 9862, 9869, + 9870, 9862, 9872, 9869, 9871, 9871, 9870, 9876, 9873, 9874, + 9874, 9876, 9877, 9877, 9872, 9873, 9879, 9873, 9878, 9883, + 9879, 9881, 9884, 9886, 9885, 9832, 9887, 9832, 9857, 9878, + 9881, 9878, 9888, 9890, 9858, 9891, 9892, 9881, 9893, 9832, + + 9885, 9832, 9832, 9832, 9833, 9894, 9895, 9858, 9900, 9901, + 9902, 9902, 9902, 9902, 9907, 9908, 9901, 9907, 9910, 9906, + 9833, 9833, 9833, 9833, 9833, 9833, 9906, 9909, 9914, 9833, + 9909, 9883, 9833, 9911, 9911, 9915, 9916, 9917, 9914, 9918, + 9919, 9920, 9921, 9922, 9921, 9923, 9925, 9921, 9926, 9935, + 9936, 9927, 9926, 9922, 9927, 9933, 9925, 9937, 9938, 9933, + 9936, 9933, 9939, 9833, 9940, 9833, 9939, 9940, 9941, 9942, + 9938, 9944, 9945, 9943, 9940, 9833, 9943, 9833, 9946, 9947, + 9833, 9833, 9948, 9949, 9951, 9950, 9948, 9951, 9952, 9947, + 9953, 9894, 9950, 9954, 9955, 9956, 9964, 9902, 9903, 9903, + + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9904, 9958, 9924, 9912, 9928, 9959, 9930, 9961, 9962, + + 9929, 9961, 9958, 9963, 9965, 9967, 9959, 9904, 9904, 9904, + 9904, 9904, 9904, 9969, 9972, 9934, 9904, 9966, 9975, 9904, + 9957, 9957, 9957, 9957, 9962, 9970, 9960, 9966, 9963, 9968, + 9971, 9973, 9968, 9974, 9932, 9974, 9976, 9981, 9982, 9970, + 9934, 9983, 9973, 9975, 9977, 9977, 9977, 9977, 9957, 9985, + 9904, 9984, 9904, 9985, 9986, 9928, 9987, 9988, 9930, 9932, + 9989, 9984, 9990, 9991, 9904, 9924, 9904, 9904, 9904, 9905, + 9912, 9928, 9929, 9930, 9992, 9934, 9929, 9934, 9960, 9993, + 9994, 9934, 9971, 9934, 9996, 9905, 9905, 9905, 9905, 9905, + 9905, 9997,10002,10003, 9905, 9998, 9932, 9905, 9960, 9998, + + 9932, 9998, 9932,10000, 9999, 9998, 9932, 9957,10000,10001, + 9932, 9999,10004,10001, 9999,10005,10006,10007,10005,10006, + 10007,10008,10009,10001,10011, 9977,10012,10007, 9905,10010, + 9905, 9977,10013,10009,10014,10013,10010,10016,10017,10010, + 10016, 9905, 9905,10019,10024, 9905, 9905, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9978, 9978, 9978, 9978, 9979, 9980, 9980, 9980, 9980,10018, + 10020,10021,10028,10028,10015, 9979,10030, 9979, 9979,10031, + 9979, 9979, 9979, 9979, 9979, 9979,10015,10015, 9978,10022, + 10032,10023,10023,10029,10018,10020,10021,10027,10027,10022, + 10033,10034,10035,10036,10037,10022,10038,10039,10040,10041, + 10042,10043,10044,10045,10046,10046,10046,10046,10046,10048, + + 10049,10055,10020,10047,10047,10047,10047,10047,10050,10050, + 10050,10050,10056,10057,10059,10058, 9979,10060,10065,10063, + 9980,10066,10057,10066,10028,10060,10067, 9978,10058,10064, + 10064,10069, 9980,10071,10020,10023,10063,10067,10076,10050, + 10070,10027,10072,10072,10029,10077,10074,10071,10069,10029, + 10073,10080,10073,10079,10046,10079,10070,10074,10079,10081, + 10082,10085,10086,10047,10087,10088,10044,10089,10091,10091, + 10093,10094,10095,10111,10112,10119,10094,10095,10120,10123, + 10119,10119,10129,10120,10135,10136,10136,10123,10137,10119, + 10150,10158,10123,10161,10162,10050,10051,10051,10051,10051, + + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10052, + 10122,10090,10165,10153,10122,10155,10122,10153,10122,10166, + + 10155,10155,10153,10122,10122,10052,10052,10052,10052,10052, + 10052,10171,10152,10176,10052,10156,10152,10052,10152,10156, + 10152,10156,10177,10156,10166,10152,10157,10157,10156,10160, + 10160,10157,10169,10179,10160,10180,10167,10169,10167,10167, + 10090,10167,10167,10167,10167,10167,10167,10185,10052,10168, + 10052,10166,10052,10090,10168,10168,10170,10170,10186,10189, + 10052,10170,10052,10193,10195,10052,10052,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10068,10092,10092,10092,10092,10096,10097,10098,10100,10099, + 10101,10102,10172,10103,10105,10104,10107,10174,10196,10197, + 10198,10190,10190,10108,10106,10174,10190,10199,10115,10200, + 10174,10191,10191,10202,10125,10215,10191,10128,10113,10130, + + 10116,10202,10121,10164,10133,10109,10202,10114,10216,10203, + 10175,10203,10117,10124,10203,10149,10100,10132,10101,10126, + 10217,10218,10163,10206,10172,10068,10105,10204,10206,10097, + 10099,10104,10204,10102,10204,10108,10068,10075,10106,10098, + 10115,10096,10097,10098,10100,10099,10101,10102,10092,10103, + 10105,10104,10107,10075,10075,10075,10075,10075,10075,10108, + 10106,10109,10075,10113,10115,10075,10114,10116,10117,10124, + 10125,10126,10121,10128,10113,10130,10116,10121,10134,10132, + 10133,10109,10227,10114,10228,10149,10121,10164,10117,10124, + 10149,10223,10163,10132,10175,10126,10075,10163,10075,10223, + + 10075,10138,10138,10138,10138,10225,10205,10075,10173,10230, + 10075,10205,10075,10075,10075,10231,10139,10139,10139,10139, + 10205,10233,10140,10140,10140,10140,10134,10141,10141,10141, + 10141,10142,10142,10142,10142,10141,10234,10235,10236,10142, + 10238,10143,10143,10143,10143,10240,10210,10210,10144,10144, + 10144,10144,10210,10207,10134,10141,10241,10242,10207,10142, + 10173,10207,10138,10145,10145,10145,10145,10213,10173,10143, + 10239,10208,10213,10173,10213,10244,10144,10139,10140,10208, + 10138,10139,10211,10140,10208,10209,10245,10142,10141,10225, + 10246,10145,10142,10209,10211,10139,10247,10143,10209,10211, + + 10249,10140,10143,10141,10144,10250,10141,10212,10212,10144, + 10142,10251,10212,10146,10146,10146,10146,10252,10219,10145, + 10143,10146,10239,10219,10145,10219,10253,10144,10147,10147, + 10147,10147,10148,10148,10148,10148,10147,10254,10255,10256, + 10148,10146,10145,10178,10178,10178,10178,10182,10257,10182, + 10182,10182,10182,10182,10182,10222,10147,10258,10259,10261, + 10148,10183,10181,10183,10183,10183,10183,10183,10183,10146, + 10260,10262,10214,10181,10146,10181,10181,10214,10181,10181, + 10181,10181,10181,10181,10147,10184,10214,10181,10148,10147, + 10229,10263,10146,10148,10229,10148,10229,10264,10265,10184, + + 10267,10184,10184,10184,10184,10184,10184,10147,10147,10222, + 10184,10148,10187,10187,10187,10187,10188,10188,10188,10188, + 10192,10226,10260,10192,10192,10226,10192,10226,10192,10268, + 10178,10222,10232,10192,10269,10226,10232,10243,10232,10270, + 10243,10243,10273,10243,10188,10273,10274,10275,10276,10277, + 10278,10279,10280,10281,10274,10279,10282,10283,10284,10279, + 10285,10286,10287,10288,10289,10290,10291,10292,10293,10290, + 10295,10290,10294,10296,10295,10298,10299,10300,10301,10290, + 10299,10302,10299,10290,10291,10303,10301,10306,10288,10304, + 10311,10300,10305,10304,10299,10295,10305,10307,10305,10187, + + 10307,10308,10309,10188,10220,10310,10312,10314,10313,10308, + 10305,10309,10313,10315,10310,10292,10316,10318,10317,10319, + 10220,10220,10220,10220,10220,10220,10317,10320,10319,10220, + 10324,10312,10220,10321,10322,10323,10328,10329,10330,10334, + 10335,10336,10287,10292,10293,10328,10287,10330,10294,10337, + 10338,10340,10342,10323,10348,10298,10343,10345,10312,10327, + 10327,10327,10327,10220,10346,10220,10345,10346,10359,10347, + 10311,10344,10331,10347,10343,10331,10331,10220,10331,10344, + 10220,10220,10221,10352,10354,10321,10322,10327,10356,10349, + 10331,10349,10356,10354,10352,10325,10358,10358,10221,10221, + + 10221,10221,10221,10221,10322,10326,10325,10221,10325,10325, + 10221,10325,10325,10325,10325,10325,10325,10350,10351,10326, + 10325,10326,10326,10326,10326,10326,10326,10353,10355,10357, + 10326,10355,10357,10360,10360,10350,10351,10361,10361,10362, + 10363,10221,10366,10221,10367,10368,10327,10369,10370,10353, + 10371,10372,10373,10374,10375,10221,10376,10377,10221,10221, + 10271,10378,10379,10380,10381,10382,10383,10385,10386,10387, + 10388,10383,10389,10390,10392,10393,10271,10271,10271,10271, + 10271,10271,10391,10387,10396,10271,10394,10397,10271,10398, + 10399,10402,10389,10400,10401,10385,10386,10390,10405,10393, + + 10398,10406,10408,10401,10391,10404,10394,10399,10407,10407, + 10404,10402,10410,10407,10411,10362,10412,10400,10414,10271, + 10378,10271,10415,10416,10417,10418,10418,10418,10418,10420, + 10421,10422,10271,10271,10423,10426,10271,10271,10272,10427, + 10428,10424,10434,10441,10443,10453,10388,10455,10456,10469, + 10468,10474,10481,10482,10272,10272,10272,10272,10272,10272, + 10475,10440,10487,10272,10490,10440,10272,10440,10444,10440, + 10445,10491,10416,10492,10440,10468,10440,10470,10444,10494, + 10499,10500,10444,10416,10444,10475,10444,10470,10445,10501, + 10421,10444,10470,10445,10428,10480,10420,10272,10422,10272, + + 10444,10423,10445,10502,10480,10420,10421,10422,10507,10480, + 10423,10272,10418,10424,10272,10272,10428,10424,10272,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + + 10384,10384,10384,10384,10384,10425,10429,10430,10432,10433, + 10442,10436,10496,10438,10439,10435,10485,10437,10471,10448, + 10452,10450,10471,10515,10471,10516,10471,10473,10484,10484, + 10446,10471,10473,10484,10473,10442,10509,10457,10457,10457, + 10457,10509,10517,10458,10458,10458,10458,10459,10459,10459, + 10459,10460,10460,10460,10460,10508,10513,10543,10508,10430, + 10508,10513,10461,10461,10461,10461,10425,10436,10544,10546, + 10452,10433,10496,10524,10439,10450,10547,10496,10438,10549, + 10550,10425,10429,10430,10432,10433,10435,10436,10437,10438, + 10439,10435,10446,10437,10442,10448,10452,10450,10457,10458, + + 10485,10498,10551,10459,10458,10524,10446,10460,10459,10543, + 10552,10479,10460,10457,10556,10479,10457,10479,10461,10479, + 10497,10557,10458,10461,10479,10497,10459,10497,10556,10558, + 10460,10462,10462,10462,10462,10463,10463,10463,10463,10561, + 10527,10461,10464,10464,10464,10464,10465,10465,10465,10465, + 10562,10505,10467,10467,10467,10467,10505,10519,10505,10477, + 10467,10477,10477,10477,10477,10477,10477,10563,10564,10506, + 10464,10498,10527,10506,10465,10506,10498,10565,10506,10478, + 10467,10478,10478,10478,10478,10478,10478,10462,10510,10566, + 10571,10463,10462,10510,10573,10510,10463,10576,10463,10511, + + 10569,10511,10465,10464,10511,10575,10577,10465,10467,10519, + 10462,10462,10512,10467,10463,10512,10522,10512,10464,10478, + 10522,10464,10522,10578,10579,10465,10466,10466,10466,10466, + 10575,10467,10569,10519,10466,10488,10488,10488,10488,10583, + 10466,10585,10466,10466,10472,10466,10466,10466,10466,10466, + 10466,10518,10582,10518,10466,10472,10518,10472,10472,10489, + 10472,10472,10472,10472,10472,10472,10582,10586,10589,10472, + 10489,10590,10489,10489,10591,10489,10489,10489,10489,10489, + 10489,10523,10466,10592,10514,10593,10526,10466,10514,10523, + 10514,10523,10586,10514,10528,10523,10526,10523,10594,10595, + + 10526,10596,10526,10528,10528,10466,10597,10530,10528,10598, + 10528,10526,10489,10523,10472,10529,10599,10600,10526,10472, + 10567,10601,10488,10520,10532,10529,10528,10603,10605,10529, + 10570,10529,10607,10608,10529,10592,10531,10610,10612,10520, + 10520,10520,10520,10520,10520,10567,10531,10529,10520,10530, + 10531,10520,10531,10613,10560,10614,10535,10617,10560,10530, + 10560,10531,10618,10530,10620,10530,10535,10580,10531,10560, + 10535,10580,10535,10580,10587,10621,10532,10535,10587,10622, + 10587,10530,10520,10623,10520,10520,10532,10624,10535,10520, + 10532,10520,10532,10534,10625,10626,10520,10570,10627,10520, + + 10520,10521,10628,10534,10567,10609,10570,10534,10532,10534, + 10616,10609,10629,10534,10533,10630,10616,10521,10521,10521, + 10521,10521,10521,10631,10533,10534,10521,10536,10533,10521, + 10533,10633,10634,10635,10636,10641,10642,10536,10654,10533, + 10537,10536,10639,10536,10632,10640,10533,10639,10643,10644, + 10537,10640,10655,10521,10537,10645,10537,10647,10644,10536, + 10521,10643,10521,10521,10650,10537,10647,10521,10648,10521, + 10645,10657,10537,10648,10521,10650,10651,10521,10521,10652, + 10651,10652,10653,10659,10660,10521,10525,10661,10649,10653, + 10664,10664,10664,10664,10665,10668,10672,10525,10538,10525, + + 10525,10678,10525,10525,10525,10525,10525,10525,10538,10540, + 10539,10525,10538,10669,10538,10656,10632,10663,10538,10540, + 10539,10680,10688,10540,10539,10540,10539,10690,10691,10541, + 10538,10539,10692,10693,10720,10724,10727,10542,10525,10541, + 10667,10540,10539,10541,10670,10541,10553,10542,10525,10541, + 10671,10542,10525,10542,10525,10649,10553,10542,10568,10649, + 10553,10541,10553,10666,10649,10669,10663,10673,10568,10542, + 10525,10668,10568,10675,10568,10656,10728,10664,10553,10554, + 10656,10677,10681,10729,10663,10683,10684,10685,10667,10669, + 10568,10686,10584,10694,10732,10554,10554,10554,10554,10554, + + 10554,10699,10733,10584,10554,10584,10584,10554,10584,10584, + 10584,10584,10584,10584,10734,10697,10667,10584,10696,10666, + 10670,10739,10673,10713,10741,10687,10671,10687,10713,10713, + 10687,10698,10698,10698,10698,10685,10729,10687,10554,10666, + 10554,10726,10677,10673,10742,10743,10726,10683,10726,10675, + 10738,10735,10554,10746,10694,10554,10554,10677,10681,10554, + 10555,10683,10684,10685,10735,10753,10755,10686,10770,10694, + 10701,10701,10701,10701,10699,10738,10555,10555,10555,10555, + 10555,10555,10697,10696,10714,10555,10771,10698,10555,10761, + 10761,10697,10762,10765,10696,10714,10762,10714,10714,10772, + + 10714,10714,10714,10714,10714,10714,10773,10765,10715,10714, + 10715,10715,10715,10715,10715,10715,10776,10750,10737,10555, + 10737,10555,10750,10737,10737,10716,10701,10716,10716,10716, + 10716,10716,10716,10555,10767,10767,10555,10555,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10700,10700,10700,10700,10702,10702,10702,10702,10703, + 10703,10703,10703,10704,10704,10704,10704,10705,10705,10705, + 10705,10781,10723,10707,10707,10707,10707,10782,10717,10711, + 10711,10711,10711,10784,10756,10785,10786,10711,10712,10712, + 10712,10712,10717,10748,10717,10717,10717,10717,10717,10717, + 10719,10748,10719,10717,10764,10719,10748,10711,10744,10764, + 10787,10702,10700,10769,10719,10703,10744,10769,10744,10704, + + 10752,10744,10752,10705,10723,10752,10704,10700,10705,10707, + 10700,10763,10723,10788,10707,10711,10760,10723,10789,10703, + 10711,10763,10792,10790,10793,10763,10705,10706,10706,10706, + 10706,10711,10707,10721,10721,10721,10721,10794,10711,10711, + 10756,10706,10795,10706,10706,10718,10706,10706,10706,10706, + 10706,10706,10745,10745,10796,10712,10718,10745,10718,10718, + 10801,10718,10718,10718,10718,10718,10718,10766,10760,10730, + 10718,10730,10730,10730,10730,10730,10730,10766,10790,10791, + 10791,10766,10760,10706,10802,10804,10805,10731,10706,10731, + 10731,10731,10731,10731,10731,10783,10807,10809,10783,10790, + + 10759,10810,10811,10749,10759,10783,10706,10708,10708,10708, + 10708,10749,10759,10749,10803,10806,10749,10806,10812,10813, + 10721,10708,10809,10708,10708,10817,10708,10708,10708,10708, + 10708,10708,10819,10751,10768,10708,10751,10768,10817,10808, + 10823,10751,10808,10808,10797,10824,10751,10825,10768,10778, + 10778,10778,10778,10778,10778,10797,10798,10797,10797,10731, + 10797,10797,10797,10797,10797,10797,10803,10816,10708,10797, + 10798,10816,10798,10798,10798,10798,10798,10798,10826,10803, + 10799,10798,10821,10827,10828,10821,10708,10709,10709,10709, + 10709,10799,10829,10799,10799,10709,10799,10799,10799,10799, + + 10799,10799,10830,10831,10709,10799,10709,10709,10709,10709, + 10709,10709,10832,10800,10814,10709,10800,10815,10815,10815, + 10815,10815,10815,10818,10814,10800,10820,10814,10833,10820, + 10834,10835,10836,10818,10837,10838,10818,10839,10845,10820, + 10841,10842,10843,10709,10847,10843,10848,10849,10709,10851, + 10852,10853,10856,10847,10854,10853,10860,10862,10863,10851, + 10864,10869,10845,10866,10857,10867,10709,10710,10710,10710, + 10710,10849,10870,10872,10852,10710,10855,10855,10855,10855, + 10874,10878,10876,10882,10710,10883,10710,10710,10710,10710, + 10710,10710,10841,10842,10886,10710,10857,10887,10880,10885, + + 10885,10888,10889,10891,10892,10885,10854,10863,10894,10909, + 10901,10901,10901,10901,10911,10917,10841,10842,10918,10893, + 10893,10893,10893,10710,10915,10866,10919,10920,10710,10924, + 10854,10925,10867,10882,10932,10926,10907,10869,10901,10866, + 10926,10867,10944,10710,10950,10928,10710,10710,10757,10876, + 10928,10891,10880,10905,10905,10905,10905,10878,10876,10882, + 10951,10952,10953,10855,10757,10757,10757,10757,10757,10757, + 10954,10901,10930,10757,10880,10893,10757,10930,10907,10891, + 10892,10894,10896,10896,10896,10896,10901,10955,10907,10901, + 10901,10956,10907,10937,10907,10966,10907,10900,10900,10900, + + 10900,10907,10910,10910,10910,10910,10927,10757,10915,10757, + 10969,10927,10927,10958,10902,10902,10902,10902,10929,10958, + 10757,10757,10902,10929,10757,10757,10904,10904,10904,10904, + 10757,10758,10929,10923,10904,10937,10960,10923,10896,10923, + 10905,10923,10902,10896,10971,10973,10923,10758,10758,10758, + 10758,10758,10758,10900,10904,10974,10758,10968,10900,10758, + 10903,10903,10903,10903,10968,10921,10975,10956,10903,10900, + 10902,10921,10976,10931,10931,10902,10900,10900,10931,10921, + 10977,10913,10904,10913,10978,10970,10913,10904,10903,10910, + 10758,10904,10758,10902,10902,10913,10959,10979,10980,10959, + + 10970,10936,10981,10982,10758,10904,10983,10758,10758,10779, + 10972,10959,10972,10938,10984,10986,10903,10987,10988,10991, + 10960,10903,10939,10993,10995,10779,10779,10779,10779,10779, + 10779,10908,10997,10995,10779,11001,11002,10779,10903,10903, + 10999,10940,10908,10936,10908,10908,11006,10908,10908,10908, + 10908,10908,10908,10936,11007,10938,10908,10936,10941,10936, + 11008,11001,10999,10936,10939,10938,11012,10942,10779,10938, + 10779,10938,11017,11033,10939,10936,11014,11009,10939,10943, + 10939,11010,10779,10940,11034,10779,10779,10780,10939,11035, + 11037,10957,11039,10940,11042,11043,11047,10940,11045,10940, + + 10941,11048,11050,10780,10780,10780,10780,10780,10780,10942, + 10941,11045,10780,11052,10941,10780,10941,11051,11046,10942, + 10961,10943,11051,10942,10961,10942,10961,10961,11046,11060, + 11061,10943,10941,10957,11062,10943,11010,10943,11009,11063, + 10943,11014,11012,10957,11064,11065,10780,10957,10780,10957, + 10957,11058,11014,11009,11058,11067,11070,11010,11067,11072, + 10780,11073,10780,10780,10780,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10895,10895, + 10895,10895,11054,10946,10946,10946,10946,10946,10946,11074, + 11040,11075,10895,11076,10895,10895,11015,10895,10895,10895, + 10895,10895,10895,10967,10967,10967,10967,10967,10967,10985, + 10985,10985,10985,10985,11004,11004,11004,11004,11016,11018, + + 11020,11020,11020,11020,11054,11059,11016,11077,11079,11080, + 11081,11016,11059,11082,10895,10897,10897,10897,10897,11069, + 11083,11084,11085,11069,11086,11069,11069,11087,11089,10897, + 11091,10897,10897,10946,10897,10897,10897,10897,10897,10897, + 11093,11091,11092,11015,11021,11021,11021,11021,11094,10985, + 11095,11092,11015,10967,11040,11102,11020,11114,11021,11115, + 11021,11021,11018,11021,11021,11021,11021,11021,11021,11022, + 11022,11022,11022,11116,11096,11018,10897,11025,11025,11025, + 11025,11004,11097,11022,11118,11022,11022,11119,11022,11022, + 11022,11022,11022,11022,10897,10898,10898,10898,10898,11120, + + 11121,11122,11123,11023,11023,11023,11023,11026,11026,11026, + 11026,11124,10898,11053,10898,10898,10898,10898,10898,10898, + 11023,11121,11023,11023,11023,11023,11023,11023,11027,11027, + 11027,11027,11126,11025,11130,11049,11131,11129,11132,11049, + 11134,11049,11128,11049,11028,11028,11028,11028,11049,11025, + 11096,10898,11129,11128,11135,11053,10898,11136,11097,11023, + 11029,11029,11029,11029,11137,11053,11100,11099,11026,11053, + 11133,11053,11055,11138,10898,10899,10899,10899,10899,11139, + 11140,11133,11142,11026,11027,11143,11026,11026,11144,11027, + 11145,11103,10899,11146,10899,10899,10899,10899,10899,10899, + + 11028,11030,11030,11030,11030,11028,11147,11027,11027,11030, + 11031,11031,11031,11031,11055,11099,11029,11149,11031,11150, + 11151,11029,11028,11028,11055,11029,11152,11127,11055,11030, + 11055,10899,11032,11032,11032,11032,10899,11153,11031,11029, + 11032,11159,11100,11099,11101,11149,11103,11167,11168,11101, + 11156,10899,11160,11169,10899,10899,10934,11030,11101,11171, + 11032,11173,11030,11175,11176,11177,11031,11103,11178,11127, + 11179,11031,10934,10934,10934,10934,10934,10934,11180,11127, + 11030,10934,11181,11127,10934,11127,11182,11183,11032,11031, + 11184,11031,11187,11032,11188,11189,11032,11104,11104,11104, + + 11104,11127,11105,11105,11105,11105,11190,11106,11106,11106, + 11106,11032,11191,11156,11193,10934,11195,10934,11196,11107, + 11107,11107,11107,11197,11160,10934,11156,11193,11160,10934, + 11198,11199,10934,10934,10935,11203,11108,11108,11108,11108, + 11205,11206,11207,11209,10935,11171,11210,11211,11212,11213, + 10935,10935,10935,10935,10935,10935,11214,11215,11216,10935, + 11217,11223,10935,11106,11109,11109,11109,11109,11161,11161, + 11161,11161,11225,11104,11226,11107,11227,11104,11105,11222, + 11228,11229,11105,11220,11230,11198,10935,11106,11110,11110, + 11110,11110,11108,10935,11231,10935,10935,11107,11234,11235, + + 10935,11108,10935,11235,11220,11237,11198,10935,11238,11240, + 10935,10935,10947,11239,11111,11111,11111,11111,11242,11243, + 11109,11244,11236,11245,11161,11109,11246,11247,10947,10947, + 10947,10947,10947,10947,11249,11251,11250,10947,11252,11253, + 10947,11255,11256,11109,11110,11162,11162,11162,11162,11110, + 11258,11222,11259,11260,11264,11222,11112,11112,11112,11112, + 11163,11163,11163,11163,11112,11265,11267,11110,11268,11110, + 11111,10947,11270,10947,11271,11111,11272,11273,11111, 1859, + 11200,11200,11200,11200,11112,10947, 1856,10947,10947,10947, + 10949,11383,11383,11111,11201,11201,11201,11201,11236,11239, + + 1855,11162,11384,11384,11450,11450,10949,10949,10949,10949, + 10949,10949,11112,11359, 1854,10949,11163,11112,10949,11359, + 11359,11112,11250,11360,11163,11369,11162,11370, 1853,11360, + 11360,11369,11369,11370,11370,11112,11200,11372,11451,11451, + 11373,11483,11483,11372,11372,11200,11373,11373,11380,10949, + 11201,10949, 1851,11482,11380,11380,11530,11530,11409,10949, + 11482,11482, 1850,10949,11409,11409,10949,10949,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,11024,11024,11024,11024,11113,11113,11113,11113,11164, + 11164,11164,11164,11113,11926,11926, 1849,11926,11024, 1848, + 11024,11024,11024,11024,11024,11024,11165,11165,11165,11165, + 1843, 1842, 1841,11113,11166,11166,11166,11166,11202,11202, + + 11202,11202,11166,11420,11224,11224,11224,11224,11421,11420, + 11420, 1840,11431, 1839,11421,11421,11529,11024,11431,11431, + 1838,11113,11166,11529,11529,11164,11113, 1836, 1835,11432, + 11164, 1834,11434, 1833,11164,11432,11432,11024,11434,11434, + 1832,11024,11165, 1831,11113,11435, 1830,11165,11164, 1829, + 11166,11435,11435, 1828,11202,11166,11441, 1827, 1823,11202, + 11224,11462,11441,11441, 1821,11165, 1820,11462,11462,11485, + 11166, 1819,11491,11166,11202,11485,11485,11202,11491,11491, + 11224,11276,11276,11276,11276,11276,11276,11276,11276,11276, + 11276,11276,11276,11276,11276,11276,11276,11276,11276,11276, + + 11276,11276,11276,11276,11276,11277,11277,11277,11277,11277, + 11277,11277,11277,11277,11277,11277,11277,11277,11277,11277, + 11277,11277,11277,11277,11277,11277,11277,11277,11277,11278, + 11278,11278,11278,11278,11278,11278,11278,11278,11278,11278, + 11278,11278,11278,11278,11278,11278,11278,11278,11278,11278, + 11278,11278,11278,11279,11279,11279,11279,11279,11279,11279, + 11279,11279,11279,11279,11279,11279,11279,11279,11279,11279, + 11279,11279,11279,11279,11279,11279,11279,11280,11280,11280, + 11280,11280,11280,11280,11280,11280,11280,11280,11280,11280, + 11280,11280,11280,11280,11280,11280,11280,11280,11280,11280, + + 11280,11281,11281,11281,11281,11281,11281,11281,11281,11281, + 11281,11281,11281,11281,11281,11281,11281,11281,11281,11281, + 11281,11281,11281,11281,11281,11282,11282,11282,11282,11282, + 11282,11282,11282,11282,11282,11282,11282,11282,11282,11282, + 11282,11282,11282,11282,11282,11282,11282,11282,11282,11283, + 11283,11283,11283,11283,11283,11283,11283,11283,11283,11283, + 11283,11283,11283,11283,11283,11283,11283,11283,11283,11283, + 11283,11283,11283,11284,11284,11284,11284,11284,11284,11284, + 11284,11284,11284,11284,11284,11284,11284,11284,11284,11284, + 11284,11284,11284,11284,11284,11284,11284,11285,11285,11285, + + 11285,11285,11285,11285,11285,11285,11285,11285,11285,11285, + 11285,11285,11285,11285,11285,11285,11285,11285,11285,11285, + 11285,11286,11286,11286,11286,11286,11286,11286,11286,11286, + 11286,11286,11286,11286,11286,11286,11286,11286,11286,11286, + 11286,11286,11286,11286,11286,11287,11287,11287,11287,11287, + 11287,11287,11287,11287,11287,11287,11287,11287,11287,11287, + 11287,11287,11287,11287,11287,11287,11287,11287,11287,11288, + 11288,11288,11288,11288,11288,11288,11288,11288,11288,11288, + 11288,11288,11288,11288,11288,11288,11288,11288,11288,11288, + 11288,11288,11288,11289,11289,11289,11289,11289,11289,11289, + + 11289,11289,11289,11289,11289,11289,11289,11289,11289,11289, + 11289,11289,11289,11289,11289,11289,11289,11290,11290,11290, + 11290,11290,11290,11290,11290,11290,11290,11290,11290,11290, + 11290,11290,11290,11290,11290,11290,11290,11290,11290,11290, + 11290,11291,11291,11291,11291,11291,11291,11291,11291,11291, + 11291,11291,11291,11291,11291,11291,11291,11291,11291,11291, + 11291,11291,11291,11291,11291,11292,11292,11292,11292,11292, + 11292,11292,11292,11292,11292,11292,11292,11292,11292,11292, + 11292,11292,11292,11292,11292,11292,11292,11292,11292,11293, + 11293,11293,11293,11293,11293,11293,11293,11293,11293,11293, + + 11293,11293,11293,11293,11293,11293,11293,11293,11293,11293, + 11293,11293,11293,11294,11294,11294,11294,11294,11294,11294, + 11294,11294,11294,11294,11294,11294,11294,11294,11294,11294, + 11294,11294,11294,11294,11294,11294,11294,11295,11295,11295, + 11295,11295,11295,11295,11295,11295,11295,11295,11295,11295, + 11295,11295,11295,11295,11295,11295,11295,11295,11295,11295, + 11295,11296,11296,11296,11296,11296,11296,11296,11296,11296, + 11296,11296,11296,11296,11296,11296,11296,11296,11296,11296, + 11296,11296,11296,11296,11296,11297,11297,11297,11297,11297, + 11297,11297,11297,11297,11297,11297,11297,11297,11297,11297, + + 11297,11297,11297,11297,11297,11297,11297,11297,11297,11298, + 11298,11298,11298,11298,11298,11298,11298,11298,11298,11298, + 11298,11298,11298,11298,11298,11298,11298,11298,11298,11298, + 11298,11298,11298,11299,11299,11299,11299,11299,11299,11299, + 11299,11299,11299,11299,11299,11299,11299,11299,11299,11299, + 11299,11299,11299,11299,11299,11299,11299,11300,11300,11300, + 11300,11300,11300,11300,11300,11300,11300,11300,11300,11300, + 11300,11300,11300,11300,11300,11300,11300,11300,11300,11300, + 11300,11301,11301,11301,11301,11301,11301,11301,11301,11301, + 11301,11301,11301,11301,11301,11301,11301,11301,11301,11301, + + 11301,11301,11301,11301,11301,11302,11302,11302,11302,11302, + 11302,11302,11302,11302,11302,11302,11302,11302,11302,11302, + 11302,11302,11302,11302,11302,11302,11302,11302,11302,11303, + 11303,11303,11303,11303,11303,11303,11303,11303,11303,11303, + 11303,11303,11303,11303,11303,11303,11303,11303,11303,11303, + 11303,11303,11303,11304,11304,11304,11304,11304,11304,11304, + 11304,11304,11304,11304,11304,11304,11304,11304,11304,11304, + 11304,11304,11304,11304,11304,11304,11304,11305,11305,11305, + 11305,11305,11305,11305,11305,11305,11305,11305,11305,11305, + 11305,11305,11305,11305,11305,11305,11305,11305,11305,11305, + + 11305,11306,11306,11306,11306,11306,11306,11306,11306,11306, + 11306,11306,11306,11306,11306,11306,11306,11306,11306,11306, + 11306,11306,11306,11306,11306,11307,11307,11307,11307,11307, + 11307,11307,11307,11307,11307,11307,11307,11307,11307,11307, + 11307,11307,11307,11307,11307,11307,11307,11307,11307,11308, + 11308,11308,11308,11308,11308,11308,11308,11308,11308,11308, + 11308,11308,11308,11308,11308,11308,11308,11308,11308,11308, + 11308,11308,11308,11309,11309,11309,11309,11309,11309,11309, + 11309,11309,11309,11309,11309,11309,11309,11309,11309,11309, + 11309,11309,11309,11309,11309,11309,11309,11310,11310,11310, + + 11310,11310,11310,11310,11310,11310,11310,11310,11310,11310, + 11310,11310,11310,11310,11310,11310,11310,11310,11310,11310, + 11310,11311,11311,11311,11311,11311,11311,11311,11311,11311, + 11311,11311,11311,11311,11311,11311,11311,11311,11311,11311, + 11311,11311,11311,11311,11311,11312,11312,11312,11312,11312, + 11312,11312,11312,11312,11312,11312,11312,11312,11312,11312, + 11312,11312,11312,11312,11312,11312,11312,11312,11312,11313, + 11313,11313,11313,11313,11313,11313,11313,11313,11313,11313, + 11313,11313,11313,11313,11313,11313,11313,11313,11313,11313, + 11313,11313,11313,11314,11314,11314,11314,11314,11314,11314, + + 11314,11314,11314,11314,11314,11314,11314,11314,11314,11314, + 11314,11314,11314,11314,11314,11314,11314,11315,11315,11315, + 11315,11315,11315,11315,11315,11315,11315,11315,11315,11315, + 11315,11315,11315,11315,11315,11315,11315,11315,11315,11315, + 11315,11316,11316,11316,11316,11316,11316,11316,11316,11316, + 11316,11316,11316,11316,11316,11316,11316,11316,11316,11316, + 11316,11316,11316,11316,11316,11317,11317,11317,11317,11317, + 11317,11317,11317,11317,11317,11317,11317,11317,11317,11317, + 11317,11317,11317,11317,11317,11317,11317,11317,11317,11318, + 11318,11318,11318,11318,11318,11318,11318,11318,11318,11318, + + 11318,11318,11318,11318,11318,11318,11318,11318,11318,11318, + 11318,11318,11318,11319,11319,11319,11319,11319,11319,11319, + 11319,11319,11319,11319,11319,11319,11319,11319,11319,11319, + 11319,11319,11319,11319,11319,11319,11319,11320,11320,11320, + 11320,11320,11320,11320,11320,11320,11320,11320,11320,11320, + 11320,11320,11320,11320,11320,11320,11320,11320,11320,11320, + 11320,11321,11321,11321,11321,11321,11321,11321,11321,11321, + 11321,11321,11321,11321,11321,11321,11321,11321,11321,11321, + 11321,11321,11321,11321,11321,11322,11322,11322,11322,11322, + 11322,11322,11322,11322,11322,11322,11322,11322,11322,11322, + + 11322,11322,11322,11322,11322,11322,11322,11322,11322,11323, + 11323,11323,11323,11323,11323,11323,11323,11323,11323,11323, + 11323,11323,11323,11323,11323,11323,11323,11323,11323,11323, + 11323,11323,11323,11324,11324,11324,11324,11324,11324,11324, + 11324,11324,11324,11324,11324,11324,11324,11324,11324,11324, + 11324,11324,11324,11324,11324,11324,11324,11325,11325,11325, + 11325,11325,11325,11325,11325,11325,11325,11325,11325,11325, + 11325,11325,11325,11325,11325,11325,11325,11325,11325,11325, + 11325,11326,11326,11326,11326,11326,11326,11326,11326,11326, + 11326,11326,11326,11326,11326,11326,11326,11326,11326,11326, + + 11326,11326,11326,11326,11326,11327,11327,11327,11327,11327, + 11327,11327,11327,11327,11327,11327,11327,11327,11327,11327, + 11327,11327,11327,11327,11327,11327,11327,11327,11327,11328, + 11328,11328,11328,11328,11328,11328,11328,11328,11328,11328, + 11328,11328,11328,11328,11328,11328,11328,11328,11328,11328, + 11328,11328,11328,11329,11329,11329,11329,11329,11329,11329, + 11329,11329,11329,11329,11329,11329,11329,11329,11329,11329, + 11329,11329,11329,11329,11329,11329,11329,11330,11330,11330, + 11330,11330,11330,11330,11330,11330,11330,11330,11330,11330, + 11330,11330,11330,11330,11330,11330,11330,11330,11330,11330, + + 11330,11331,11331,11331,11331,11331,11331,11331,11331,11331, + 11331,11331,11331,11331,11331,11331,11331,11331,11331,11331, + 11331,11331,11331,11331,11331,11332,11332,11332,11332,11332, + 11332,11332,11332,11332,11332,11332,11332,11332,11332,11332, + 11332,11332,11332,11332,11332,11332,11332,11332,11332,11333, + 11333,11333,11333,11333,11333,11333,11333,11333,11333,11333, + 11333,11333,11333,11333,11333,11333,11333,11333,11333,11333, + 11333,11333,11333,11334,11334,11334,11334,11334,11334,11334, + 11334,11334,11334,11334,11334,11334,11334,11334,11334,11334, + 11334,11334,11334,11334,11334,11334,11334,11335,11335,11335, + + 11335,11335,11335,11335,11335,11335,11335,11335,11335,11335, + 11335,11335,11335,11335,11335,11335,11335,11335,11335,11335, + 11335,11336,11336,11336,11336,11336,11336,11336,11336,11336, + 11336,11336,11336,11336,11336,11336,11336,11336,11336,11336, + 11336,11336,11336,11336,11336,11337,11337,11337,11337,11337, + 11337,11337,11337,11337,11337,11337,11337,11337,11337,11337, + 11337,11337,11337,11337,11337,11337,11337,11337,11337,11338, + 11338,11338,11338,11338,11338,11338,11338,11338,11338,11338, + 11338,11338,11338,11338,11338,11338,11338,11338,11338,11338, + 11338,11338,11338,11339,11339,11339,11339,11339,11339,11339, + + 11339,11339,11339,11339,11339,11339,11339,11339,11339,11339, + 11339,11339,11339,11339,11339,11339,11339,11340,11340,11340, + 11340,11340,11340,11340,11340,11340,11340,11340,11340,11340, + 11340,11340,11340,11340,11340,11340,11340,11340,11340,11340, + 11340,11341,11341,11341,11341,11341,11341,11341,11341,11341, + 11341,11341,11341,11341,11341,11341,11341,11341,11341,11341, + 11341,11341,11341,11341,11341,11342,11342,11342,11342,11342, + 11342,11342,11342,11342,11342,11342,11342,11342,11342,11342, + 11342,11342,11342,11342,11342,11342,11342,11342,11342,11343, + 11343,11343,11343,11343,11343,11343,11343,11343,11343,11343, + + 11343,11343,11343,11343,11343,11343,11343,11343,11343,11343, + 11343,11343,11343,11344,11344,11344,11344,11344,11344,11344, + 11344,11344,11344,11344,11344,11344,11344,11344,11344,11344, + 11344,11344,11344,11344,11344,11344,11344,11345,11345,11345, + 11345,11345,11345,11345,11345,11345,11345,11345,11345,11345, + 11345,11345,11345,11345,11345,11345,11345,11345,11345,11345, + 11345,11346,11346,11346,11346,11346,11346,11346,11346,11346, + 11346,11346,11346,11346,11346,11346,11346,11346,11346,11346, + 11346,11346,11346,11346,11346,11347,11347,11347,11347,11347, + 11347,11347,11347,11347,11347,11347,11347,11347,11347,11347, + + 11347,11347,11347,11347,11347,11347,11347,11347,11347,11348, + 11348,11348,11348,11348,11348,11348,11348,11348,11348,11348, + 11348,11348,11348,11348,11348,11348,11348,11348,11348,11348, + 11348,11348,11348,11349, 1818,11492, 1815,11511, 1814, 1813, + 11349,11492,11492,11511,11511, 1804,11349,11349,11350,11350, + 11350,11350,11350,11350,11350,11350,11350,11350,11350,11350, + 11350,11350,11350,11350,11350,11350,11350,11350,11350,11350, + 11350,11350,11351,11351, 1802,11351,11351,11351,11351,11351, + 11351,11351,11351,11351,11351,11351,11351,11351,11351,11351, + 11351,11351,11351,11351,11351,11351,11352,11352, 1800,11352, + + 11352,11352,11352,11352,11352,11352,11352,11352,11352,11352, + 11352,11352,11352,11352,11352,11352,11352,11352,11352,11352, + 11353,11353, 1799,11353, 1795,11956,11956,11532,11956,11353, + 11353, 1794,11353,11532,11532, 1792,11353,11353,11354,11354, + 11354,11354,11354,11354,11354, 1791,11354,11354,11354,11354, + 11354,11354,11354,11354,11354,11354,11354,11354,11354,11354, + 11354,11354,11355,11355,11355,11355,11355,11355,11355,11355, + 11355,11355,11355,11355,11355,11355,11355,11355,11355,11355, + 11355,11355,11355,11355,11355,11355,11356,11356, 1788, 1787, + 1786,11540, 1783,11356,11356,11357,11357,11540,11540, 1781, + + 11541, 1780,11357,11357,11358,11358,11541,11541, 1779,11575, + 1777,11358,11358,11361,11361,11575,11575,11581, 1775,11582, + 11361,11361,11362,11581,11581,11582,11582,11362,11362,11362, + 11362,11362,11362,11362,11362,11362,11362,11362,11362,11362, + 11362,11362,11362,11362,11362,11362,11363,11363, 1774, 1773, + 11611, 1771,11625,11363,11363,11364,11611,11611,11625,11625, + 11630,11364,11364, 1770, 1769, 1768,11630,11630,11364,11364, + 11365,11365,11365,11365,11365,11365,11365,11365,11365,11365, + 11365,11365,11365,11365,11365,11365,11365,11365,11365,11365, + 11365,11365, 1766,11365,11366,11366,11366,11366,11366,11366, + + 11366,11366,11366,11366,11366,11366,11366,11366,11366,11366, + 11366,11366,11366,11366,11366,11366,11366,11366,11367,11367, + 11367,11367, 1765, 1764,11631, 1761,11367,11367, 1752,11367, + 11631,11631, 1751,11367,11367,11368,11368,11368,11368,11368, + 11368,11368,11368,11368,11368,11368,11368,11368,11368,11368, + 11368,11368,11368,11368,11368,11368,11368,11368,11368,11371, + 1748, 1747, 1746, 1745, 1744,11371,11371, 1743,11371,11374, + 11374,11374,11374,11374,11374, 1742,11374,11374,11374,11374, + 11374,11374,11374,11374,11374,11374,11374,11374,11374,11374, + 11374,11374,11374,11375,11375, 1741, 1740, 1739,11678, 1738, + + 11375,11375,11376,11376,11678,11678, 1737,11684, 1736,11376, + 11376,11377,11377,11684,11684, 1735, 1731, 1730,11377,11377, + 11378,11378,11378,11378, 1727,11378, 1726, 1725,11723, 1724, + 11378,11727, 1723,11378,11723,11723, 1722,11727,11727,11378, + 11378,11379,11379,11379,11379,11379,11379,11379,11379,11379, + 11379,11379,11379,11379,11379,11379,11379,11379,11379,11379, + 11379,11379,11379,11379,11379,11381,11381,11381,11381,11381, + 11381,11381,11381,11381,11381,11381,11381,11381,11381,11381, + 11381,11381,11381,11381,11381,11381,11381,11381,11381,11382, + 11382,11382,11382,11382,11382,11382,11382,11382,11382,11382, + + 11382,11382,11382,11382,11382,11382,11382,11382,11382,11382, + 11382,11382,11382,11385,11385,11385,11385,11385,11385,11385, + 11385,11385,11385,11385,11385,11385,11385,11385,11385,11385, + 11385,11385,11385,11385,11385,11385,11385,11386,11386,11386, + 11386,11386,11386,11386,11386,11386,11386,11386,11386,11386, + 11386,11386,11386,11386,11386,11386,11386,11386,11386,11386, + 11386,11387, 1721, 1717, 1716,11800, 1714, 1713,11387, 1712, + 11387,11800,11800,11801,11387,11387,11387,11387,11388,11801, + 11801, 1711,11803, 1710, 1709,11388, 1707,11388,11803,11803, + 1705,11388,11388,11388,11388,11389,11389,11389,11389,11389, + + 11389,11389,11389,11389,11389,11389,11389,11389,11389,11389, + 11389,11389,11389,11389,11389,11389,11389,11389,11389,11390, + 11390, 1704, 1703,11816, 1702,11838,11390,11390,11391,11816, + 11816,11838,11838, 1701,11839, 1700, 1699,11391, 1698,11391, + 11839,11839,11840,11391,11391,11392,11392, 1697,11840,11840, + 1696, 1695,11392,11392,11393,11393,11393,11393,11393,11393, + 11393,11393,11393,11393,11393,11393,11393,11393,11393,11393, + 11393,11393,11393,11393,11393,11393,11393,11393,11394, 1694, + 1693, 1691,11394,11394, 1690, 1688,11394,11394,11394,11394, + 11394,11394,11394,11394, 1685,11394,11394,11394,11394,11394, + + 11395,11395,11395,11395,11395,11395,11395,11395,11395,11395, + 11395,11395,11395,11395,11395,11395,11395,11395,11395,11395, + 11395,11395,11395,11395,11396,11396,11396,11396,11396,11396, + 11396,11396,11396,11396,11396,11396,11396,11396,11396,11396, + 11396,11396,11396,11396,11396,11396,11396,11396,11397,11397, + 1684, 1682, 1681, 1679, 1677,11397,11397,11398,11398, 1675, + 11398,11398,11398,11398,11398,11398,11398,11398,11398,11398, + 11398,11398,11398,11398,11398,11398,11398,11398,11398,11398, + 11398,11399,11399, 1673,11399,11399,11399,11399,11399,11399, + 11399,11399,11399,11399,11399,11399,11399,11399,11399,11399, + + 11399,11399,11399,11399,11399,11400,11400,11400,11400,11400, + 11400,11400,11400,11400,11400,11400,11400,11400,11400,11400, + 11400,11400,11400,11400,11400,11400,11400,11400,11400,11401, + 11401,11401,11401,11401,11401,11401,11401,11401,11401,11401, + 11401,11401,11401,11401,11401,11401,11401,11401,11401,11401, + 11401,11401,11401,11402,11402,11402,11402,11402,11402, 1671, + 11402,11402,11402,11402,11402,11402,11402,11402,11402,11402, + 11402,11402,11402,11402,11402,11402,11402,11403,11403,11403, + 11403,11403,11403,11403,11403,11403,11403,11403,11403,11403, + 11403,11403,11403,11403,11403,11403,11403,11403,11403,11403, + + 11403,11404, 1669, 1665, 1662, 1661,11852, 1660,11404,11404, + 1659,11404,11852,11852, 1655, 1653, 1652,11404,11404,11405, + 11405, 1651, 1647, 1646, 1645, 1641,11405,11405,11406, 1640, + 1637, 1636, 1634, 1632, 1627,11406,11406,11406,11406, 1626, + 1625, 1624, 1620, 1616,11406,11406,11407, 1615, 1614, 1611, + 1609, 1605, 1604,11407,11407,11407,11407, 1603, 1601, 1600, + 1597, 1596,11407,11407,11408,11408,11408,11408,11408,11408, + 11408,11408,11408,11408,11408,11408,11408,11408,11408,11408, + 11408,11408,11408,11408,11408,11408,11408,11408,11410,11410, + 1595,11410,11410,11410,11410,11410,11410,11410,11410,11410, + + 11410,11410,11410,11410,11410,11410,11410,11410,11410,11410, + 11410,11410,11411,11411,11411,11411,11411,11411,11411,11411, + 11411,11411,11411,11411,11411,11411,11411,11411,11411,11411, + 11411,11411,11411,11411,11411,11411,11412,11412, 1594, 1593, + 1590, 1588, 1587,11412,11412,11413,11413, 1586, 1584, 1582, + 1581, 1580,11413,11413,11414,11414, 1579, 1574, 1570, 1569, + 1568,11414,11414,11415,11415,11415,11415,11415,11415,11415, + 1567,11415,11415,11415,11415,11415,11415,11415,11415,11415, + 11415,11415,11415,11415,11415,11415,11415,11416,11416,11416, + 11416,11416,11416,11416,11416,11416,11416,11416,11416,11416, + + 11416,11416,11416,11416,11416,11416,11416,11416,11416,11416, + 11416,11417,11417, 1566, 1565, 1563, 1561, 1559,11417,11417, + 11418,11418, 1558, 1557, 1555, 1554, 1551,11418,11418,11419, + 11419, 1550, 1549, 1548, 1547, 1546,11419,11419,11422,11422, + 1545, 1544, 1543, 1542, 1541,11422,11422,11423, 1540, 1539, + 1538, 1535,11423,11423,11423,11423,11423,11423,11423,11423, + 11423,11423,11423,11423,11423,11423,11423,11423,11423,11423, + 11423,11424,11424, 1533, 1532, 1531, 1530, 1456,11424,11424, + 11425, 1378, 1367, 1361, 1353, 1334, 1333, 1332,11425,11425, + 11425, 1330, 1323, 1322, 1321, 1319,11425,11425,11426,11426, + + 11426,11426,11426,11426,11426,11426,11426,11426,11426,11426, + 11426,11426,11426,11426,11426,11426,11426,11426,11426,11426, + 1316,11426,11427,11427,11427,11427,11427,11427,11427,11427, + 11427,11427,11427,11427,11427,11427,11427,11427,11427,11427, + 11427,11427,11427,11427,11427,11427,11428,11428,11428,11428, + 11428,11428,11428,11428,11428,11428,11428,11428,11428,11428, + 11428,11428,11428,11428,11428,11428,11428,11428,11428,11428, + 11429,11429, 1314, 1311, 1309, 1308, 1305,11429,11429,11430, + 11430,11430,11430,11430,11430,11430,11430,11430,11430,11430, + 11430,11430,11430,11430,11430,11430,11430,11430,11430,11430, + + 11430,11430,11430,11433, 1303, 1300, 1297, 1290, 1275,11433, + 11433, 1270,11433,11436, 1269, 1268, 1267, 1261, 1258, 1256, + 11436,11436,11436,11436, 1255, 1254, 1253, 1251, 1248,11436, + 11436,11437,11437, 1245, 1241, 1240, 1238, 1235,11437,11437, + 11438,11438, 1234, 1232, 1231, 1230, 1227,11438,11438,11439, + 11439, 1224, 1223, 1222, 1221, 1220,11439,11439,11440,11440, + 11440,11440, 1219, 1218, 1216, 1215, 1214, 1213,11440, 1211, + 1206,11440, 1200, 1180, 1174, 1160, 1158,11440,11440,11442, + 1156, 1155, 1154, 1153, 1152, 1151,11442,11442, 1150,11442, + 1149, 1148, 1147, 1146, 1145,11442,11442,11443,11443, 1144, + + 1143, 1142, 1141, 1140,11443,11443,11444, 1138, 1137, 1134, + 1131, 1129, 1128,11444,11444,11444,11444, 1127, 1126, 1125, + 1123, 1121,11444,11444,11445,11445,11445,11445,11445,11445, + 11445,11445,11445,11445,11445,11445,11445,11445,11445,11445, + 11445,11445,11445,11445,11445,11445,11445,11445,11446,11446, + 11446,11446,11446,11446, 1119,11446,11446,11446,11446,11446, + 11446,11446,11446,11446,11446,11446,11446,11446,11446,11446, + 11446,11446,11447,11447,11447,11447,11447,11447,11447,11447, + 11447,11447,11447,11447,11447,11447,11447,11447,11447,11447, + 11447,11447,11447,11447,11447,11447,11448,11448,11448,11448, + + 11448,11448,11448,11448,11448,11448,11448,11448,11448,11448, + 11448,11448,11448,11448,11448,11448,11448,11448,11448,11448, + 11449,11449,11449,11449,11449,11449,11449,11449,11449,11449, + 11449,11449,11449,11449,11449,11449,11449,11449,11449,11449, + 11449,11449,11449,11449,11452, 1115, 1113, 1108, 1082, 1055, + 1053,11452, 986, 982, 971, 970, 969,11452,11452, 968, + 11452,11453, 967, 966, 964, 963, 962, 961,11453, 960, + 956,11453, 955, 954,11453,11453,11454,11454,11454,11454, + 11454,11454,11454,11454,11454,11454,11454,11454,11454,11454, + 11454,11454,11454,11454,11454,11454,11454,11454,11454,11454, + + 11455,11455, 953, 952, 951, 950, 948,11455,11455,11456, + 943, 941, 938, 932, 931, 930, 927, 926,11456, 918, + 909, 905, 894, 887,11456,11456,11457,11457, 886, 885, + 884, 883, 878,11457,11457,11458,11458,11458,11458,11458, + 11458,11458,11458,11458,11458,11458,11458,11458,11458,11458, + 11458,11458,11458,11458,11458,11458,11458,11458,11458,11459, + 877, 876, 868,11459,11459, 867, 865,11459,11459,11459, + 11459,11459,11459,11459,11459, 861,11459,11459,11459,11459, + 11459,11460, 859, 858, 857,11460,11460, 855, 853,11460, + 11460,11460,11460,11460,11460,11460,11460, 848,11460,11460, + + 11460,11460,11460,11461,11461,11461,11461,11461,11461,11461, + 11461,11461,11461,11461,11461,11461,11461,11461,11461,11461, + 11461,11461,11461,11461,11461,11461,11461,11463, 842, 841, + 840, 839, 838, 837,11463,11463, 832,11463, 831, 830, + 829, 828, 827,11463,11463,11464,11464, 826, 823, 822, + 821, 819,11464,11464,11465, 818, 807, 806, 804, 801, + 800,11465,11465,11465,11465, 799, 796, 791, 790, 789, + 11465,11465,11466,11466,11466,11466,11466,11466,11466,11466, + 11466,11466,11466,11466,11466,11466,11466,11466,11466,11466, + 11466,11466,11466,11466,11466,11466,11467,11467, 787, 786, + + 784, 783, 781,11467,11467,11468,11468, 780, 777, 770, + 767, 766,11468,11468,11469,11469, 762,11469,11469,11469, + 11469,11469,11469,11469,11469,11469,11469,11469,11469,11469, + 11469,11469,11469,11469,11469,11469,11469,11469,11470,11470, + 11470,11470,11470,11470,11470,11470,11470,11470,11470,11470, + 11470,11470,11470,11470,11470,11470,11470,11470,11470,11470, + 11470,11470,11471,11471,11471,11471,11471,11471,11471,11471, + 11471,11471,11471,11471,11471,11471,11471,11471,11471,11471, + 11471,11471,11471,11471,11471,11471,11472, 668, 662, 650, + 645, 644, 643, 619, 617, 616,11472,11472,11472,11472, + + 11472,11472,11472,11472,11472,11473, 604,11473, 596, 593, + 587,11473,11473,11474, 585, 575, 570, 569, 565, 554, + 11474,11474, 553,11474, 552, 549, 548, 541, 540,11474, + 11474,11475,11475, 536, 535, 532, 531, 526,11475,11475, + 11476,11476,11476,11476,11476,11476,11476,11476,11476,11476, + 11476,11476,11476,11476,11476,11476,11476,11476,11476,11476, + 11476,11476,11476,11476,11477, 524, 515, 511, 506, 504, + 500,11477,11477,11477,11477, 489, 469, 461, 457, 456, + 11477,11477,11478,11478, 452, 448, 446, 445, 440,11478, + 11478,11479,11479, 438, 435, 433, 431, 425,11479,11479, + + 11480,11480, 407, 400, 379, 378, 377,11480,11480,11481, + 369, 366,11481, 361, 355, 343, 339, 337, 332, 331, + 324,11481,11481, 316, 314, 310, 309, 307,11481,11481, + 11484,11484, 306, 305, 303, 301, 300,11484,11484,11486, + 11486, 291, 287, 286, 272, 268,11486,11486,11487,11487, + 267, 261, 258, 244, 234,11487,11487,11488,11488,11488, + 11488,11488,11488,11488,11488,11488,11488,11488,11488,11488, + 11488,11488,11488,11488,11488,11488,11488,11488,11488,11488, + 11488,11489,11489,11489,11489,11489,11489,11489,11489,11489, + 11489,11489,11489,11489,11489,11489,11489,11489,11489,11489, + + 11489,11489,11489, 228,11489,11490,11490,11490,11490,11490, + 11490,11490,11490,11490,11490,11490,11490,11490,11490,11490, + 11490,11490,11490,11490,11490,11490,11490,11490,11490,11493, + 11493, 223, 215, 213, 196, 192,11493,11493,11494,11494, + 191, 188, 187, 181, 138,11494,11494,11495,11495, 137, + 136, 135, 134, 133,11495,11495,11496, 72, 71, 66, + 65, 40, 39,11496,11496, 38,11496, 37, 0, 0, + 0, 0,11496,11496,11497,11497, 0, 0, 0, 0, + 0,11497,11497,11498, 0, 0, 0, 0, 0, 0, + 11498,11498,11498,11498, 0, 0, 0, 0, 0,11498, + + 11498,11499,11499,11499,11499,11499,11499,11499,11499,11499, + 11499,11499,11499,11499,11499,11499,11499,11499,11499,11499, + 11499,11499,11499,11499,11499,11500, 0, 0, 0, 0, + 0, 0, 0, 0, 0,11500,11500,11500,11500,11500, + 11500,11500,11500,11500,11501,11501,11501,11501,11501,11501, + 11501,11501,11501,11501,11501,11501,11501,11501,11501,11501, + 11501,11501,11501,11501,11501,11501,11501,11501,11502,11502, + 11502,11502,11502,11502,11502,11502,11502,11502,11502,11502, + 11502,11502,11502,11502,11502,11502,11502,11502,11502,11502, + 11502,11502,11503,11503,11503,11503,11503,11503,11503,11503, + + 11503,11503,11503,11503,11503,11503,11503,11503,11503,11503, + 11503,11503,11503,11503,11503,11503,11504, 0, 0, 0, + 0, 0, 0,11504, 0, 0, 0, 0, 0,11504, + 11504, 0,11504,11505, 0, 0, 0, 0, 0, 0, + 11505, 0, 0,11505, 0, 0,11505,11505,11506,11506, + 0, 0, 0, 0, 0,11506,11506,11507, 0, 0, + 0, 0, 0, 0, 0, 0,11507, 0, 0, 0, + 0, 0,11507,11507,11508,11508, 0, 0, 0, 0, + 0,11508,11508,11509, 0, 0, 0,11509,11509, 0, + 0,11509,11509,11509,11509,11509,11509,11509,11509, 0, + + 11509,11509,11509,11509,11509,11510, 0, 0, 0,11510, + 11510, 0, 0,11510,11510,11510,11510,11510,11510,11510, + 11510, 0,11510,11510,11510,11510,11510,11512, 0, 0, + 0, 0, 0, 0,11512,11512, 0,11512, 0, 0, + 0, 0, 0,11512,11512,11513,11513, 0, 0, 0, + 0, 0,11513,11513,11514, 0, 0, 0, 0, 0, + 0,11514,11514,11514,11514, 0, 0, 0, 0, 0, + 11514,11514,11515,11515,11515,11515,11515,11515,11515,11515, + 11515,11515,11515,11515,11515,11515,11515,11515,11515,11515, + 11515,11515,11515,11515,11515,11515,11516,11516, 0, 0, + + 0, 0, 0,11516,11516,11517,11517, 0, 0, 0, + 0, 0,11517,11517,11518,11518, 0,11518,11518,11518, + 11518,11518,11518,11518,11518,11518,11518,11518,11518,11518, + 11518,11518,11518,11518,11518,11518,11518,11518,11519,11519, + 11519,11519,11519,11519,11519,11519,11519,11519,11519,11519, + 11519,11519,11519,11519,11519,11519,11519,11519,11519,11519, + 11519,11519,11520,11520,11520,11520,11520,11520,11520,11520, + 11520,11520,11520,11520,11520,11520,11520,11520,11520,11520, + 11520,11520,11520,11520,11520,11520,11521, 0, 0, 0, + 0, 0, 0,11521,11521, 0,11521, 0, 0, 0, + + 0, 0,11521,11521,11522,11522, 0, 0, 0, 0, + 0,11522,11522,11523,11523,11523,11523,11523,11523,11523, + 11523,11523,11523,11523,11523,11523,11523,11523,11523,11523, + 11523,11523,11523,11523,11523,11523,11523,11524, 0, 0, + 0, 0, 0, 0,11524,11524,11524,11524, 0, 0, + 0, 0, 0,11524,11524,11525,11525, 0, 0, 0, + 0, 0,11525,11525,11526,11526, 0, 0, 0, 0, + 0,11526,11526,11527,11527, 0, 0, 0, 0, 0, + 11527,11527,11528,11528, 0, 0, 0, 0, 0,11528, + 11528,11531,11531, 0, 0, 0, 0, 0,11531,11531, + + 11533,11533, 0, 0, 0, 0,11533,11533,11533,11534, + 11534, 0, 0, 0, 0, 0,11534,11534,11535,11535, + 11535,11535,11535,11535,11535,11535,11535,11535,11535,11535, + 11535,11535,11535,11535,11535,11535,11535,11535,11535,11535, + 11535,11535,11536,11536,11536,11536,11536,11536,11536,11536, + 11536,11536,11536,11536,11536,11536,11536,11536,11536,11536, + 11536,11536,11536,11536,11536,11536,11537,11537,11537,11537, + 11537,11537,11537,11537,11537,11537,11537,11537,11537,11537, + 11537,11537,11537,11537,11537,11537,11537,11537,11537,11537, + 11538,11538,11538,11538,11538,11538,11538,11538,11538,11538, + + 11538,11538,11538,11538,11538,11538,11538,11538,11538,11538, + 11538,11538,11538,11538,11539,11539,11539,11539,11539,11539, + 11539,11539,11539,11539,11539,11539,11539,11539,11539,11539, + 11539,11539,11539,11539,11539,11539,11539,11539,11542,11542, + 0, 0, 0, 0, 0,11542,11542,11543,11543, 0, + 0, 0, 0, 0,11543,11543,11544,11544, 0, 0, + 0, 0, 0,11544,11544,11545, 0, 0, 0, 0, + 0, 0,11545,11545, 0,11545, 0, 0, 0, 0, + 0,11545,11545,11546,11546, 0, 0, 0, 0, 0, + 11546,11546,11547, 0, 0, 0, 0, 0, 0,11547, + + 11547,11547,11547, 0, 0, 0, 0, 0,11547,11547, + 11548,11548,11548,11548,11548,11548,11548,11548,11548,11548, + 11548,11548,11548,11548,11548,11548,11548,11548,11548,11548, + 11548,11548,11548,11548,11549,11549,11549,11549,11549,11549, + 11549,11549,11549,11549,11549,11549,11549,11549,11549,11549, + 11549,11549,11549,11549,11549,11549,11549,11549,11550,11550, + 11550,11550,11550,11550,11550,11550,11550,11550,11550,11550, + 11550,11550,11550,11550,11550,11550,11550,11550,11550,11550, + 11550,11550,11551, 0, 0, 0, 0, 0, 0,11551, + 0, 0, 0, 0, 0,11551,11551, 0,11551,11552, + + 0, 0, 0, 0, 0, 0,11552, 0, 0,11552, + 0, 0,11552,11552,11553,11553, 0, 0, 0, 0, + 0,11553,11553,11554, 0, 0, 0, 0, 0, 0, + 0, 0,11554, 0, 0, 0, 0,11554,11554,11554, + 11555,11555, 0, 0, 0, 0, 0,11555,11555,11556, + 0, 0, 0,11556,11556, 0, 0,11556,11556,11556, + 11556,11556,11556,11556,11556, 0,11556,11556,11556,11556, + 11556,11557, 0, 0, 0,11557,11557, 0, 0,11557, + 11557,11557,11557,11557,11557,11557,11557, 0,11557,11557, + 11557,11557,11557,11558, 0, 0, 0, 0, 0, 0, + + 11558,11558, 0,11558, 0, 0, 0, 0, 0,11558, + 11558,11559,11559, 0, 0, 0, 0, 0,11559,11559, + 11560, 0, 0, 0, 0, 0, 0,11560,11560,11560, + 11560, 0, 0, 0, 0, 0,11560,11560,11561,11561, + 0, 0, 0, 0, 0,11561,11561,11562,11562, 0, + 0, 0, 0, 0,11562,11562,11563,11563, 0,11563, + 11563,11563,11563,11563,11563,11563,11563,11563,11563,11563, + 11563,11563,11563,11563,11563,11563,11563,11563,11563,11563, + 11564,11564,11564,11564,11564,11564,11564,11564,11564,11564, + 11564,11564,11564,11564,11564,11564,11564,11564,11564,11564, + + 11564,11564,11564,11564,11565,11565,11565,11565,11565,11565, + 11565,11565,11565,11565,11565,11565,11565,11565,11565,11565, + 11565,11565,11565,11565,11565,11565,11565,11565,11566, 0, + 0, 0, 0, 0, 0,11566,11566, 0,11566, 0, + 0, 0, 0, 0,11566,11566,11567,11567, 0, 0, + 0, 0, 0,11567,11567,11568, 0, 0, 0, 0, + 11568, 0, 0, 0, 0, 0,11568,11568, 0,11568, + 11569, 0, 0, 0, 0, 0, 0,11569,11569,11569, + 11569, 0, 0, 0, 0, 0,11569,11569,11569,11570, + 11570, 0, 0, 0, 0, 0,11570,11570,11571,11571, + + 0, 0, 0, 0, 0,11571,11571,11572, 0, 0, + 0, 0, 0,11572,11572, 0,11572,11573,11573, 0, + 0, 0, 0, 0,11573,11573,11574,11574, 0, 0, + 0, 0, 0,11574,11574,11576,11576, 0, 0, 0, + 0, 0,11576,11576,11577, 0, 0,11577, 0, 0, + 0, 0, 0, 0, 0, 0,11577,11577, 0, 0, + 0, 0, 0,11577,11577,11578,11578,11578,11578,11578, + 11578,11578,11578,11578,11578,11578,11578,11578,11578,11578, + 11578,11578,11578,11578,11578,11578,11578,11578,11578,11579, + 11579,11579,11579,11579,11579,11579,11579,11579,11579,11579, + + 11579,11579,11579,11579,11579,11579,11579,11579,11579,11579, + 11579,11579,11579,11580,11580,11580,11580,11580,11580,11580, + 11580,11580,11580,11580,11580,11580,11580,11580,11580,11580, + 11580,11580,11580,11580,11580,11580,11580,11583,11583, 0, + 0, 0, 0, 0,11583,11583,11584, 0, 0,11584, + 0, 0, 0, 0, 0, 0, 0, 0,11584,11584, + 0, 0, 0, 0, 0,11584,11584,11585, 0, 0, + 11585, 0, 0, 0, 0, 0, 0, 0, 0,11585, + 11585, 0, 0, 0, 0, 0,11585,11585,11586, 0, + 0, 0, 0, 0, 0,11586,11586, 0,11586, 0, + + 0, 0, 0, 0,11586,11586,11587,11587, 0, 0, + 0, 0, 0,11587,11587,11588, 0, 0, 0, 0, + 0, 0,11588,11588,11588,11588, 0, 0, 0, 0, + 0,11588,11588,11588,11589,11589, 0,11589,11589,11589, + 11589,11589,11589,11589,11589,11589,11589,11589,11589,11589, + 11589,11589,11589,11589,11589,11589,11589,11589,11590, 0, + 0, 0, 0,11590, 0, 0, 0, 0, 0,11590, + 11590, 0,11590,11591,11591,11591,11591,11591,11591,11591, + 11591,11591,11591,11591,11591,11591,11591,11591,11591,11591, + 11591,11591,11591,11591,11591,11591,11591,11592,11592,11592, + + 11592,11592,11592,11592,11592,11592,11592,11592,11592,11592, + 11592,11592,11592,11592,11592,11592,11592,11592,11592,11592, + 11592,11593, 0, 0,11593, 0, 0,11593, 0, 0, + 0, 0, 0, 0,11593, 0, 0, 0, 0, 0, + 11593,11593, 0,11593,11594, 0, 0,11594, 0, 0, + 11594, 0, 0, 0, 0, 0, 0,11594, 0, 0, + 11594, 0, 0,11594,11594,11595,11595, 0, 0, 0, + 0, 0,11595,11595,11596, 0, 0, 0, 0, 0, + 0, 0, 0,11596, 0, 0, 0, 0, 0,11596, + 11596,11597,11597, 0, 0, 0, 0, 0,11597,11597, + + 11598,11598, 0, 0, 0, 0, 0,11598,11598,11599, + 0, 0, 0,11599,11599, 0, 0,11599,11599,11599, + 11599,11599,11599,11599,11599, 0,11599,11599,11599,11599, + 11599,11600, 0, 0, 0,11600,11600, 0, 0,11600, + 11600,11600,11600,11600,11600,11600,11600, 0,11600,11600, + 11600,11600,11600,11601, 0, 0, 0, 0, 0, 0, + 11601,11601, 0,11601, 0, 0, 0, 0, 0,11601, + 11601,11602,11602, 0, 0, 0, 0, 0,11602,11602, + 11603, 0, 0, 0, 0, 0, 0,11603,11603,11603, + 11603, 0, 0, 0, 0, 0,11603,11603,11604,11604, + + 0, 0, 0, 0, 0,11604,11604,11605,11605, 0, + 0, 0, 0, 0,11605,11605,11606,11606, 0,11606, + 11606,11606,11606,11606,11606,11606,11606,11606,11606,11606, + 11606,11606,11606,11606,11606,11606,11606,11606,11606,11606, + 11607,11607,11607,11607,11607,11607,11607,11607,11607,11607, + 11607,11607,11607,11607,11607,11607,11607,11607,11607,11607, + 11607,11607,11607,11607,11608,11608,11608,11608,11608,11608, + 11608,11608,11608,11608,11608,11608,11608,11608,11608,11608, + 11608,11608,11608,11608,11608,11608,11608,11608,11609, 0, + 0, 0, 0, 0, 0,11609,11609, 0,11609, 0, + + 0, 0, 0, 0,11609,11609,11610,11610, 0, 0, + 0, 0, 0,11610,11610,11612,11612, 0,11612,11612, + 11612,11612,11612,11612,11612,11612,11612,11612,11612,11612, + 11612,11612,11612,11612,11612,11612,11612,11612,11612,11613, + 11613,11613,11613,11613,11613,11613,11613,11613,11613,11613, + 11613,11613,11613,11613,11613,11613,11613,11613,11613,11613, + 11613, 0,11613,11614,11614,11614,11614,11614,11614,11614, + 11614,11614,11614,11614,11614,11614,11614,11614,11614,11614, + 11614,11614,11614,11614,11614,11614,11614,11615, 0, 0, + 0, 0,11615, 0, 0, 0, 0, 0,11615,11615, + + 0,11615,11616,11616,11616,11616,11616,11616,11616,11616, + 11616,11616,11616,11616,11616,11616,11616,11616,11616,11616, + 11616,11616,11616,11616,11616,11616,11617,11617,11617,11617, + 11617,11617,11617,11617,11617,11617,11617,11617,11617,11617, + 11617,11617,11617,11617,11617,11617,11617,11617,11617,11617, + 11618, 0, 0,11618,11618,11618,11618,11618,11618,11618, + 11618,11618,11618,11618,11618,11618,11618,11618,11618,11618, + 0,11618,11618,11618,11619, 0, 0, 0, 0, 0, + 0,11619,11619,11619,11619, 0, 0, 0, 0, 0, + 11619,11619,11620,11620, 0, 0, 0, 0, 0,11620, + + 11620,11621,11621, 0, 0, 0, 0, 0,11621,11621, + 11622, 0, 0, 0, 0, 0,11622,11622, 0,11622, + 11623,11623, 0, 0, 0, 0, 0,11623,11623,11624, + 11624, 0, 0, 0, 0, 0,11624,11624,11626,11626, + 0, 0, 0, 0, 0,11626,11626,11627,11627, 0, + 0, 0, 0, 0,11627,11627,11628,11628,11628,11628, + 11628,11628,11628,11628,11628,11628,11628,11628,11628,11628, + 11628,11628,11628,11628,11628,11628,11628,11628,11628,11628, + 11629,11629,11629,11629,11629,11629,11629,11629,11629,11629, + 11629,11629,11629,11629,11629,11629,11629,11629,11629,11629, + + 11629,11629,11629,11629,11632, 0, 0, 0, 0, 0, + 0, 0, 0,11632,11632, 0, 0, 0, 0, 0, + 11632,11632,11632,11633,11633, 0, 0, 0, 0, 0, + 11633,11633,11634,11634, 0, 0, 0, 0, 0,11634, + 11634,11635, 0, 0, 0, 0, 0, 0,11635,11635, + 0,11635, 0, 0, 0, 0, 0,11635,11635,11636, + 11636, 0, 0, 0, 0, 0,11636,11636,11637, 0, + 0, 0, 0, 0, 0,11637,11637,11637,11637, 0, + 0, 0, 0, 0,11637,11637,11638, 0, 0, 0, + 0,11638, 0, 0, 0, 0, 0,11638,11638, 0, + + 11638,11639,11639,11639,11639,11639,11639,11639,11639,11639, + 11639,11639,11639,11639,11639,11639,11639,11639,11639,11639, + 11639,11639,11639,11639,11639,11640,11640,11640,11640,11640, + 11640,11640,11640,11640,11640,11640,11640,11640,11640,11640, + 11640,11640,11640,11640,11640,11640,11640,11640,11640,11641, + 11641,11641,11641,11641,11641,11641,11641,11641,11641,11641, + 11641,11641,11641,11641, 0,11641,11641,11641,11641,11641, + 11641,11641,11641,11642,11642,11642,11642,11642,11642,11642, + 11642,11642,11642,11642,11642,11642,11642,11642,11642,11642, + 11642,11642,11642,11642,11642,11642,11642,11643, 0, 0, + + 0, 0, 0, 0,11643,11643, 0,11643, 0, 0, + 0, 0, 0,11643,11643,11644,11644, 0, 0, 0, + 0, 0,11644,11644,11645, 0, 0, 0, 0, 0, + 0,11645, 0, 0, 0, 0, 0,11645,11645, 0, + 11645,11646,11646, 0, 0, 0, 0, 0,11646,11646, + 11647, 0, 0, 0, 0, 0, 0, 0, 0,11647, + 0, 0, 0, 0, 0,11647,11647,11648,11648, 0, + 0, 0, 0, 0,11648,11648,11649,11649, 0, 0, + 0, 0, 0,11649,11649,11650, 0, 0, 0,11650, + 11650, 0, 0,11650,11650,11650,11650,11650,11650,11650, + + 11650, 0,11650,11650,11650,11650,11650,11651, 0, 0, + 0,11651,11651, 0, 0,11651,11651,11651,11651,11651, + 11651,11651,11651, 0,11651,11651,11651,11651,11651,11652, + 0, 0, 0, 0, 0, 0,11652,11652, 0,11652, + 0, 0, 0, 0, 0,11652,11652,11653,11653, 0, + 0, 0, 0, 0,11653,11653,11654,11654,11654,11654, + 0, 0, 0, 0, 0, 0,11654,11654,11654,11654, + 0, 0, 0, 0, 0,11654,11654,11654,11655,11655, + 0, 0, 0, 0, 0,11655,11655,11656,11656, 0, + 0, 0, 0, 0,11656,11656,11657,11657, 0,11657, + + 11657,11657,11657,11657,11657,11657,11657,11657,11657,11657, + 11657,11657,11657,11657,11657,11657,11657,11657,11657,11657, + 11658,11658,11658,11658,11658,11658,11658,11658,11658,11658, + 11658,11658,11658,11658,11658,11658,11658,11658,11658,11658, + 11658,11658,11658,11658,11659,11659,11659,11659,11659,11659, + 11659,11659,11659,11659,11659,11659,11659,11659,11659,11659, + 11659,11659,11659,11659,11659,11659,11659,11659,11660, 0, + 0, 0, 0, 0,11660,11660, 0,11660,11661,11661, + 0,11661,11661,11661,11661,11661,11661,11661,11661,11661, + 11661,11661,11661,11661,11661,11661,11661,11661,11661,11661, + + 11661,11661,11662, 0, 0, 0, 0,11662, 0, 0, + 0, 0, 0,11662,11662, 0,11662,11663,11663, 0, + 11663,11663,11663,11663,11663,11663,11663,11663,11663,11663, + 11663,11663,11663,11663,11663,11663,11663,11663,11663,11663, + 11663,11664,11664,11664,11664,11664,11664,11664,11664,11664, + 11664,11664,11664,11664,11664,11664,11664,11664,11664,11664, + 11664,11664,11664, 0,11664,11665,11665,11665,11665,11665, + 11665,11665,11665,11665,11665,11665,11665,11665,11665,11665, + 11665,11665,11665,11665,11665,11665,11665,11665,11665,11666, + 0, 0, 0, 0,11666, 0, 0, 0, 0, 0, + + 11666,11666, 0,11666,11667,11667,11667,11667,11667,11667, + 11667,11667,11667,11667,11667,11667,11667,11667,11667,11667, + 11667,11667,11667,11667,11667,11667,11667,11667,11668,11668, + 11668,11668,11668,11668,11668, 0,11668,11668,11668,11668, + 11668,11668,11668,11668,11668,11668,11668,11668,11668,11668, + 11668,11668,11669,11669,11669,11669,11669,11669,11669,11669, + 11669,11669,11669,11669,11669,11669,11669,11669,11669,11669, + 11669,11669,11669,11669,11669,11669,11670, 0, 0, 0, + 0, 0,11670,11670, 0,11670,11671, 0, 0, 0, + 0, 0, 0,11671,11671,11671,11671, 0, 0, 0, + + 0, 0,11671,11671,11672,11672, 0, 0, 0, 0, + 0,11672,11672,11673,11673, 0, 0, 0, 0, 0, + 11673,11673,11674, 0, 0, 0, 0, 0,11674,11674, + 0,11674,11675,11675, 0, 0, 0, 0, 0,11675, + 11675,11676, 0, 0, 0, 0, 0, 0, 0, 0, + 11676,11676, 0, 0, 0, 0, 0,11676,11676,11677, + 0, 0, 0, 0, 0,11677,11677, 0,11677,11679, + 11679, 0, 0, 0, 0, 0,11679,11679,11680,11680, + 0, 0, 0, 0, 0,11680,11680,11681,11681,11681, + 11681,11681,11681,11681,11681,11681,11681,11681,11681,11681, + + 11681,11681,11681,11681,11681,11681,11681,11681,11681,11681, + 11681,11682,11682,11682,11682,11682,11682,11682,11682,11682, + 11682,11682,11682,11682,11682,11682,11682,11682,11682,11682, + 11682,11682,11682,11682,11682,11683,11683,11683,11683,11683, + 11683,11683,11683,11683,11683,11683,11683,11683,11683,11683, + 11683,11683,11683,11683,11683,11683,11683,11683,11683,11685, + 11685, 0, 0, 0, 0, 0,11685,11685,11686,11686, + 0, 0, 0, 0, 0,11686,11686,11687,11687, 0, + 0, 0, 0, 0,11687,11687,11688,11688,11688,11688, + 0, 0, 0, 0, 0, 0,11688, 0, 0,11688, + + 0, 0, 0, 0, 0,11688,11688,11689, 0, 0, + 0, 0, 0, 0,11689,11689, 0,11689, 0, 0, + 0, 0, 0,11689,11689,11690,11690, 0, 0, 0, + 0, 0,11690,11690,11691, 0, 0, 0, 0, 0, + 0,11691,11691,11691,11691, 0, 0, 0, 0, 0, + 11691,11691,11692, 0, 0, 0, 0,11692, 0, 0, + 0, 0, 0,11692,11692, 0,11692,11693, 0, 0, + 0, 0,11693, 0, 0, 0, 0, 0,11693,11693, + 0,11693,11694,11694,11694,11694,11694,11694,11694,11694, + 11694,11694,11694,11694,11694,11694,11694,11694,11694,11694, + + 11694,11694,11694,11694,11694,11694,11695,11695,11695,11695, + 11695,11695,11695,11695,11695,11695,11695,11695,11695,11695, + 11695,11695,11695,11695,11695,11695,11695,11695,11695,11695, + 11696, 0, 0, 0, 0, 0, 0,11696, 0, 0, + 0, 0, 0,11696,11696, 0,11696,11697,11697, 0, + 0, 0, 0, 0,11697,11697,11698, 0, 0, 0, + 0, 0, 0, 0, 0,11698, 0, 0, 0, 0, + 0,11698,11698,11699,11699, 0, 0, 0, 0, 0, + 11699,11699,11700, 0, 0, 0,11700,11700, 0, 0, + 11700,11700,11700,11700,11700,11700,11700,11700, 0,11700, + + 11700,11700,11700,11700,11701, 0, 0, 0,11701,11701, + 0, 0,11701,11701,11701,11701,11701,11701,11701,11701, + 0,11701,11701,11701,11701,11701,11702, 0, 0, 0, + 0, 0, 0,11702,11702, 0,11702, 0, 0, 0, + 0, 0,11702,11702,11703,11703, 0, 0, 0, 0, + 0,11703,11703,11704, 0, 0, 0, 0, 0, 0, + 11704,11704,11704,11704, 0, 0, 0, 0, 0,11704, + 11704,11705,11705,11705,11705, 0, 0, 0, 0, 0, + 0, 0, 0,11705,11705, 0,11705, 0, 0, 0, + 11705,11705,11706,11706, 0, 0, 0, 0, 0,11706, + + 11706,11707,11707, 0,11707,11707,11707,11707,11707,11707, + 11707,11707,11707,11707,11707,11707,11707,11707,11707,11707, + 11707,11707,11707,11707,11707,11708,11708,11708,11708,11708, + 11708,11708,11708,11708,11708,11708,11708,11708,11708,11708, + 11708,11708,11708,11708,11708,11708,11708,11708,11708,11709, + 11709,11709,11709,11709,11709,11709,11709,11709,11709,11709, + 11709,11709,11709,11709,11709,11709,11709,11709,11709,11709, + 11709,11709,11709,11710,11710, 0, 0, 0, 0, 0, + 11710,11710,11711, 0, 0, 0, 0,11711, 0, 0, + 0, 0, 0,11711,11711, 0,11711,11712, 0, 0, + + 0, 0, 0, 0,11712,11712, 0,11712, 0, 0, + 0, 0, 0,11712,11712,11713,11713,11713,11713,11713, + 11713,11713, 0,11713,11713,11713,11713,11713,11713,11713, + 11713,11713,11713,11713,11713,11713,11713,11713,11713,11714, + 11714,11714,11714,11714,11714,11714,11714,11714,11714,11714, + 11714,11714,11714,11714,11714,11714,11714,11714,11714,11714, + 11714,11714,11714,11715,11715,11715,11715,11715,11715,11715, + 11715,11715,11715,11715,11715,11715,11715,11715,11715,11715, + 11715,11715,11715,11715,11715,11715,11715,11716, 0, 0, + 0, 0, 0,11716,11716, 0,11716,11717, 0, 0, + + 0, 0, 0, 0,11717,11717,11717,11717, 0, 0, + 0, 0, 0,11717,11717,11718,11718, 0, 0, 0, + 0, 0,11718,11718,11719,11719, 0, 0, 0, 0, + 0,11719,11719,11720, 0, 0, 0, 0, 0,11720, + 11720, 0,11720,11721,11721, 0, 0, 0, 0, 0, + 11721,11721,11721,11722, 0, 0, 0, 0, 0,11722, + 11722, 0,11722,11724,11724, 0, 0, 0, 0, 0, + 11724,11724,11725, 0, 0,11725, 0, 0, 0, 0, + 0, 0, 0, 0,11725,11725, 0, 0, 0, 0, + 0,11725,11725,11726,11726,11726,11726,11726,11726,11726, + + 11726,11726,11726,11726,11726,11726,11726,11726,11726,11726, + 11726,11726,11726,11726,11726,11726,11726,11728, 0, 0, + 11728, 0, 0, 0, 0, 0, 0, 0, 0,11728, + 11728, 0, 0, 0, 0, 0,11728,11728,11729, 0, + 0,11729, 0, 0, 0, 0, 0, 0, 0, 0, + 11729,11729, 0, 0, 0, 0, 0,11729,11729,11730, + 0, 0,11730, 0, 0, 0, 0, 0, 0, 0, + 0,11730,11730, 0, 0, 0, 0, 0,11730,11730, + 11731,11731,11731,11731, 0, 0, 0, 0, 0, 0, + 11731, 0, 0,11731, 0, 0, 0, 0, 0,11731, + + 11731,11732,11732, 0, 0, 0, 0, 0,11732,11732, + 11733, 0, 0, 0, 0, 0, 0,11733,11733,11733, + 11733, 0, 0, 0, 0, 0,11733,11733,11734, 0, + 0, 0, 0, 0, 0,11734,11734, 0,11734, 0, + 0, 0, 0, 0,11734,11734,11735, 0, 0, 0, + 0,11735, 0, 0, 0, 0, 0,11735,11735, 0, + 11735,11736,11736,11736,11736,11736,11736,11736,11736,11736, + 11736,11736,11736,11736,11736,11736,11736,11736,11736,11736, + 11736,11736,11736,11736,11736,11737,11737,11737,11737,11737, + 11737,11737,11737,11737,11737,11737,11737,11737,11737,11737, + + 11737,11737,11737,11737,11737,11737,11737,11737,11737,11738, + 0, 0, 0, 0, 0, 0,11738, 0, 0, 0, + 0, 0,11738,11738, 0,11738,11739,11739, 0, 0, + 0, 0, 0,11739,11739,11740, 0, 0, 0, 0, + 0, 0, 0, 0,11740, 0, 0, 0, 0, 0, + 11740,11740,11741,11741, 0, 0, 0, 0, 0,11741, + 11741,11742, 0, 0, 0,11742,11742, 0, 0,11742, + 11742,11742,11742,11742,11742,11742,11742, 0,11742,11742, + 11742,11742,11742,11743, 0, 0, 0,11743,11743, 0, + 0,11743,11743,11743,11743,11743,11743,11743,11743, 0, + + 11743,11743,11743,11743,11743,11744,11744, 0, 0, 0, + 0, 0,11744,11744,11745, 0, 0, 0, 0, 0, + 0,11745,11745,11745,11745, 0, 0, 0, 0, 0, + 11745,11745,11746,11746,11746,11746,11746,11746,11746,11746, + 11746,11746,11746,11746,11746,11746,11746,11746,11746,11746, + 11746,11746,11746,11746,11746,11746,11747,11747, 0, 0, + 0, 0, 0,11747,11747,11748,11748,11748,11748,11748, + 11748,11748,11748,11748,11748,11748,11748,11748,11748,11748, + 11748,11748,11748,11748,11748,11748,11748,11748,11748,11749, + 11749,11749,11749,11749,11749,11749,11749,11749,11749,11749, + + 11749,11749,11749,11749,11749,11749,11749,11749,11749,11749, + 11749,11749,11749,11750,11750, 0, 0, 0, 0, 0, + 11750,11750,11751, 0, 0, 0, 0,11751, 0, 0, + 0, 0, 0,11751,11751, 0,11751,11752,11752,11752, + 11752,11752,11752,11752, 0,11752,11752,11752,11752,11752, + 11752,11752,11752,11752,11752,11752,11752,11752,11752,11752, + 11752,11753,11753,11753,11753,11753,11753,11753,11753,11753, + 11753,11753,11753,11753,11753,11753,11753,11753,11753,11753, + 11753,11753,11753,11753,11753,11754, 0, 0, 0, 0, + 0, 0,11754,11754, 0,11754, 0, 0, 0, 0, + + 0,11754,11754,11755,11755, 0, 0, 0, 0, 0, + 11755,11755,11756,11756,11756,11756,11756,11756,11756,11756, + 11756,11756,11756,11756,11756,11756,11756,11756,11756,11756, + 11756,11756,11756,11756,11756,11756,11757, 0, 0, 0, + 0, 0, 0,11757,11757,11757,11757, 0, 0, 0, + 0, 0,11757,11757,11758,11758, 0, 0, 0, 0, + 0,11758,11758,11759,11759, 0, 0, 0, 0, 0, + 11759,11759,11760, 0, 0, 0, 0, 0,11760,11760, + 0,11760,11761,11761, 0, 0, 0, 0, 0,11761, + 11761,11762, 0, 0, 0, 0, 0, 0, 0, 0, + + 0,11762, 0,11762, 0, 0, 0,11762,11762,11763, + 0, 0, 0, 0, 0, 0, 0, 0,11763,11763, + 0,11763, 0, 0, 0,11763,11763,11764,11764, 0, + 0, 0, 0, 0,11764,11764,11765, 0, 0, 0, + 0, 0, 0, 0, 0, 0,11765, 0,11765, 0, + 0, 0,11765,11765,11766,11766, 0, 0, 0, 0, + 0,11766,11766,11767,11767, 0, 0, 0, 0, 0, + 11767,11767,11768,11768, 0, 0, 0, 0, 0,11768, + 11768,11769,11769, 0, 0, 0, 0, 0,11769,11769, + 11770, 0, 0, 0, 0, 0, 0,11770,11770,11770, + + 11770, 0, 0, 0, 0, 0,11770,11770,11771, 0, + 0, 0, 0,11771, 0, 0, 0, 0, 0,11771, + 11771, 0,11771,11772, 0, 0, 0, 0, 0, 0, + 11772,11772, 0,11772, 0, 0, 0, 0, 0,11772, + 11772,11773,11773,11773,11773,11773,11773,11773,11773,11773, + 11773,11773,11773,11773,11773,11773,11773,11773,11773,11773, + 11773,11773,11773,11773,11773,11774,11774,11774,11774,11774, + 11774,11774,11774,11774,11774,11774,11774,11774,11774,11774, + 11774,11774,11774,11774,11774,11774,11774,11774,11774,11775, + 0, 0,11775, 0, 0, 0, 0, 0, 0,11775, + + 0,11775, 0, 0, 0,11775,11775, 0,11775,11776, + 0, 0, 0, 0, 0, 0, 0, 0,11776, 0, + 0, 0, 0, 0,11776,11776,11777,11777, 0, 0, + 0, 0, 0,11777,11777,11778, 0, 0, 0,11778, + 11778, 0, 0,11778,11778,11778,11778,11778,11778,11778, + 11778, 0,11778,11778,11778,11778,11778,11779, 0, 0, + 0,11779,11779, 0, 0,11779,11779,11779,11779,11779, + 11779,11779,11779, 0,11779,11779,11779,11779,11779,11780, + 11780, 0, 0, 0, 0, 0,11780,11780,11781, 0, + 0, 0, 0, 0, 0,11781,11781,11781,11781, 0, + + 0, 0, 0, 0,11781,11781,11782,11782,11782,11782, + 11782,11782,11782,11782,11782,11782,11782,11782,11782,11782, + 11782,11782,11782,11782,11782,11782,11782,11782,11782,11782, + 11783,11783, 0, 0, 0, 0, 0,11783,11783,11784, + 11784,11784,11784,11784,11784,11784,11784,11784,11784,11784, + 11784,11784,11784,11784,11784,11784,11784,11784,11784,11784, + 11784,11784,11784,11785,11785,11785,11785,11785,11785,11785, + 11785,11785,11785,11785,11785,11785,11785,11785,11785,11785, + 11785,11785,11785,11785,11785,11785,11785,11786,11786, 0, + 0, 0, 0, 0,11786,11786,11787, 0, 0, 0, + + 0,11787, 0, 0, 0, 0, 0,11787,11787, 0, + 11787,11788,11788,11788,11788,11788,11788,11788, 0,11788, + 11788,11788,11788,11788,11788,11788,11788,11788,11788,11788, + 11788,11788,11788,11788,11788,11789,11789,11789,11789,11789, + 11789,11789,11789,11789,11789,11789,11789,11789,11789,11789, + 11789,11789,11789,11789,11789,11789,11789,11789,11789,11790, + 11790, 0, 0, 0, 0, 0,11790,11790,11791,11791, + 11791,11791,11791,11791,11791,11791,11791,11791,11791,11791, + 11791,11791,11791,11791,11791,11791,11791,11791,11791,11791, + 11791,11791,11792,11792,11792,11792,11792,11792,11792,11792, + + 11792,11792,11792,11792,11792,11792,11792,11792,11792,11792, + 11792,11792,11792,11792,11792,11792,11793,11793, 0, 0, + 0, 0, 0,11793,11793,11794, 0, 0, 0, 0, + 0, 0,11794,11794,11794,11794, 0, 0, 0, 0, + 0,11794,11794,11795,11795, 0, 0, 0, 0, 0, + 11795,11795,11796,11796,11796,11796,11796,11796,11796,11796, + 11796,11796,11796,11796,11796,11796,11796,11796,11796,11796, + 11796,11796,11796,11796,11796,11796,11797,11797, 0, 0, + 0, 0, 0,11797,11797,11798, 0, 0, 0, 0, + 0,11798,11798, 0,11798,11799,11799, 0, 0, 0, + + 0, 0,11799,11799,11802,11802,11802,11802, 0, 0, + 0, 0, 0, 0, 0, 0,11802,11802, 0, 0, + 0, 0, 0,11802,11802,11804, 0, 0, 0, 0, + 0,11804,11804, 0,11804,11805,11805, 0, 0, 0, + 0, 0,11805,11805,11806,11806, 0, 0, 0, 0, + 0,11806,11806,11807,11807, 0, 0, 0, 0, 0, + 11807,11807,11808,11808, 0, 0, 0, 0, 0,11808, + 11808,11809, 0, 0, 0, 0, 0, 0,11809,11809, + 11809,11809, 0, 0, 0, 0, 0,11809,11809,11810, + 0, 0, 0, 0,11810, 0, 0, 0, 0, 0, + + 11810,11810, 0,11810,11811,11811,11811,11811,11811,11811, + 11811,11811,11811,11811,11811,11811,11811,11811,11811,11811, + 11811,11811,11811,11811,11811,11811,11811,11811,11812,11812, + 11812,11812,11812,11812,11812,11812,11812,11812,11812,11812, + 11812,11812,11812,11812,11812,11812,11812,11812,11812,11812, + 11812,11812,11813,11813,11813,11813,11813,11813,11813,11813, + 11813,11813,11813,11813,11813,11813,11813,11813,11813,11813, + 11813,11813,11813,11813,11813,11813,11814, 0, 0, 0, + 0, 0, 0, 0, 0,11814, 0, 0, 0, 0, + 0,11814,11814,11815,11815, 0, 0, 0, 0, 0, + + 11815,11815,11817, 0, 0, 0,11817,11817, 0, 0, + 11817,11817,11817,11817,11817,11817,11817,11817, 0,11817, + 11817,11817,11817,11817,11818,11818, 0, 0, 0, 0, + 0,11818,11818,11819, 0, 0, 0, 0, 0, 0, + 11819,11819,11819,11819, 0, 0, 0, 0, 0,11819, + 11819,11820,11820, 0, 0, 0, 0, 0,11820,11820, + 11821,11821,11821,11821,11821,11821,11821,11821,11821,11821, + 11821,11821,11821,11821,11821,11821,11821,11821,11821,11821, + 11821,11821,11821,11821,11822,11822,11822,11822,11822,11822, + 11822,11822,11822,11822,11822,11822,11822,11822,11822,11822, + + 11822,11822,11822,11822,11822,11822,11822,11822,11823,11823, + 11823,11823,11823,11823,11823,11823,11823,11823,11823,11823, + 11823,11823,11823,11823,11823,11823,11823,11823,11823,11823, + 11823,11823,11824,11824, 0, 0, 0, 0, 0,11824, + 11824,11825, 0, 0, 0, 0,11825, 0, 0, 0, + 0, 0,11825,11825, 0,11825,11826,11826,11826,11826, + 11826,11826,11826, 0,11826,11826,11826,11826,11826,11826, + 11826,11826,11826,11826,11826,11826,11826,11826,11826,11826, + 11827,11827,11827,11827,11827,11827,11827,11827,11827,11827, + 11827,11827,11827,11827,11827,11827,11827,11827,11827,11827, + + 11827,11827,11827,11827,11828,11828,11828,11828,11828,11828, + 11828,11828,11828,11828,11828,11828,11828,11828,11828,11828, + 11828,11828,11828,11828,11828,11828,11828,11828,11829,11829, + 11829,11829,11829,11829,11829,11829,11829,11829,11829,11829, + 11829,11829,11829,11829,11829,11829,11829,11829,11829,11829, + 11829,11830,11830,11830,11830,11830,11830,11830,11830,11830, + 11830,11830,11830,11830,11830,11830,11830,11830,11830,11830, + 11830,11830,11830,11830,11830,11831,11831, 0, 0, 0, + 0, 0,11831,11831,11832, 0, 0, 0, 0, 0, + 0,11832,11832,11832,11832, 0, 0, 0, 0, 0, + + 11832,11832,11833,11833, 0, 0, 0, 0, 0,11833, + 11833,11834,11834,11834,11834,11834,11834,11834,11834,11834, + 11834,11834,11834,11834,11834,11834,11834,11834,11834,11834, + 11834,11834,11834,11834,11834,11835,11835, 0, 0, 0, + 0, 0,11835,11835,11836, 0, 0, 0, 0, 0, + 11836,11836, 0,11836,11837,11837, 0, 0, 0, 0, + 0,11837,11837,11841, 0, 0, 0, 0, 0,11841, + 11841, 0,11841,11842,11842, 0, 0, 0, 0, 0, + 11842,11842,11843,11843, 0, 0, 0, 0, 0,11843, + 11843,11844,11844, 0, 0, 0, 0, 0,11844,11844, + + 11845,11845, 0, 0, 0, 0, 0,11845,11845,11846, + 0, 0, 0, 0, 0, 0,11846,11846,11846,11846, + 0, 0, 0, 0, 0,11846,11846,11847, 0, 0, + 0, 0,11847, 0, 0, 0, 0, 0,11847,11847, + 0,11847,11848,11848,11848,11848,11848,11848,11848,11848, + 11848,11848,11848,11848,11848,11848,11848,11848,11848,11848, + 11848,11848,11848,11848,11848,11848,11849,11849,11849,11849, + 11849,11849,11849,11849,11849,11849,11849,11849,11849,11849, + 11849,11849,11849,11849,11849,11849,11849,11849,11849,11849, + 11850,11850,11850,11850,11850,11850,11850,11850,11850,11850, + + 11850,11850,11850,11850,11850,11850,11850,11850,11850,11850, + 11850,11850,11850,11850,11851, 0, 0, 0, 0, 0, + 0, 0, 0,11851, 0, 0, 0, 0, 0,11851, + 11851,11853, 0, 0, 0, 0,11853, 0, 0,11853, + 11853,11853,11853,11853,11853,11853,11853, 0,11853,11853, + 11853,11853,11853,11854,11854, 0, 0, 0, 0, 0, + 11854,11854,11855, 0, 0, 0, 0, 0, 0,11855, + 11855,11855,11855, 0, 0, 0, 0, 0,11855,11855, + 11856,11856, 0, 0, 0, 0, 0,11856,11856,11857, + 11857,11857,11857,11857,11857,11857,11857,11857,11857,11857, + + 11857,11857,11857,11857,11857,11857,11857,11857,11857,11857, + 11857,11857,11857,11858,11858,11858,11858,11858,11858,11858, + 11858,11858,11858,11858,11858,11858,11858,11858,11858,11858, + 11858,11858,11858,11858,11858,11858,11858,11859,11859,11859, + 11859,11859,11859,11859,11859,11859,11859,11859,11859,11859, + 11859,11859,11859,11859,11859,11859,11859,11859,11859,11859, + 11859,11860,11860,11860,11860, 0, 0, 0, 0, 0, + 0, 0, 0,11860,11860, 0, 0, 0, 0, 0, + 11860,11860,11860,11861,11861,11861,11861,11861,11861,11861, + 11861,11861,11861,11861,11861,11861,11861,11861,11861,11861, + + 11861,11861,11861,11861,11861,11861,11861,11862, 0, 0, + 0, 0,11862, 0, 0, 0, 0, 0,11862,11862, + 0,11862,11863,11863,11863,11863,11863,11863,11863, 0, + 11863,11863,11863,11863,11863,11863,11863,11863,11863,11863, + 11863,11863,11863,11863,11863,11863,11864,11864,11864,11864, + 11864,11864,11864,11864,11864,11864,11864,11864,11864,11864, + 11864,11864,11864,11864,11864,11864,11864,11864,11864,11864, + 11865,11865,11865,11865,11865,11865,11865,11865,11865,11865, + 11865,11865,11865,11865,11865,11865,11865,11865,11865,11865, + 11865,11865,11865,11865,11866,11866, 0, 0, 0, 0, + + 0,11866,11866, 0,11866,11867,11867,11867,11867,11867, + 11867,11867,11867,11867,11867,11867,11867,11867,11867,11867, + 11867,11867,11867,11867,11867,11867,11867,11867,11867,11868, + 11868,11868,11868,11868,11868,11868,11868,11868,11868,11868, + 11868,11868,11868,11868,11868,11868,11868,11868,11868,11868, + 11868,11868,11868,11869, 0, 0, 0, 0, 0,11869, + 11869, 0,11869,11870,11870,11870,11870,11870,11870,11870, + 11870,11870,11870,11870,11870,11870,11870,11870,11870,11870, + 11870,11870,11870,11870,11870,11870,11870,11871,11871,11871, + 11871,11871,11871,11871,11871,11871,11871,11871,11871,11871, + + 11871,11871,11871,11871,11871,11871,11871,11871,11871, 0, + 11871,11872, 0, 0, 0, 0, 0, 0,11872,11872, + 11872,11872, 0, 0, 0, 0, 0,11872,11872,11873, + 11873, 0, 0, 0, 0, 0,11873,11873,11874,11874, + 11874,11874,11874,11874,11874,11874,11874,11874,11874,11874, + 11874,11874,11874,11874,11874,11874,11874,11874,11874,11874, + 11874,11874,11875, 0, 0, 0, 0, 0,11875,11875, + 0,11875,11876,11876, 0, 0, 0, 0, 0,11876, + 11876,11877,11877, 0, 0, 0, 0, 0,11877,11877, + 11878,11878, 0, 0, 0, 0, 0,11878,11878,11879, + + 11879,11879,11879, 0, 0, 0, 0, 0, 0, 0, + 0,11879,11879, 0, 0, 0, 0, 0,11879,11879, + 11879,11880, 0, 0, 0, 0, 0, 0,11880,11880, + 11880,11880, 0, 0, 0, 0, 0,11880,11880,11881, + 0, 0, 0, 0,11881, 0, 0, 0, 0, 0, + 11881,11881, 0,11881,11882,11882,11882,11882,11882,11882, + 11882,11882,11882,11882,11882,11882,11882,11882,11882,11882, + 11882,11882,11882,11882,11882,11882,11882,11882,11883,11883, + 11883,11883,11883,11883,11883,11883,11883,11883,11883,11883, + 11883,11883,11883,11883,11883,11883,11883,11883,11883,11883, + + 11883,11883,11884,11884,11884,11884,11884,11884,11884,11884, + 11884,11884,11884,11884,11884,11884,11884,11884,11884,11884, + 11884,11884,11884,11884,11884,11884,11885,11885,11885,11885, + 11885,11885,11885,11885,11885,11885,11885,11885,11885,11885, + 11885,11885,11885,11885,11885,11885,11885,11885,11885,11885, + 11886, 0, 0, 0, 0, 0, 0, 0, 0,11886, + 0, 0, 0, 0, 0,11886,11886,11887,11887,11887, + 11887, 0, 0, 0, 0, 0, 0, 0, 0,11887, + 11887, 0, 0, 0, 0, 0,11887,11887,11887,11888, + 0, 0, 0, 0, 0, 0,11888,11888,11888,11888, + + 0, 0, 0, 0, 0,11888,11888,11889,11889, 0, + 0, 0, 0, 0,11889,11889,11890,11890,11890,11890, + 11890,11890,11890,11890,11890,11890,11890,11890,11890,11890, + 11890,11890,11890,11890,11890,11890,11890,11890,11890,11890, + 11891,11891,11891,11891,11891,11891,11891,11891,11891,11891, + 11891,11891,11891,11891,11891,11891,11891,11891,11891,11891, + 11891,11891,11891,11891,11892, 0, 0, 0, 0, 0, + 11892,11892, 0,11892,11893,11893,11893,11893,11893,11893, + 11893, 0,11893,11893,11893,11893,11893,11893,11893,11893, + 11893,11893,11893,11893,11893,11893,11893,11893,11894,11894, + + 11894,11894,11894,11894,11894, 0,11894,11894,11894,11894, + 11894,11894,11894,11894,11894,11894,11894,11894,11894,11894, + 11894,11894,11895,11895,11895,11895,11895,11895,11895,11895, + 11895,11895,11895,11895,11895,11895,11895,11895,11895,11895, + 11895,11895,11895,11895,11895,11895,11896,11896,11896,11896, + 11896,11896,11896,11896,11896,11896,11896,11896,11896,11896, + 11896,11896,11896,11896,11896,11896,11896,11896,11896,11896, + 11897,11897, 0, 0, 0, 0, 0,11897,11897, 0, + 11897,11898,11898,11898,11898,11898,11898,11898,11898,11898, + 11898,11898,11898,11898,11898,11898,11898,11898,11898,11898, + + 11898,11898,11898,11898,11898,11899,11899,11899,11899,11899, + 11899,11899,11899,11899,11899,11899,11899,11899,11899,11899, + 11899,11899,11899,11899,11899,11899,11899,11899,11899,11900, + 11900, 0, 0, 0, 0, 0,11900,11900,11901, 0, + 0, 0, 0, 0,11901,11901, 0,11901,11902, 0, + 0, 0, 0, 0,11902,11902,11902, 0,11902, 0, + 0, 0, 0, 0,11902,11902,11903, 0, 0, 0, + 0, 0,11903,11903, 0,11903,11904,11904,11904,11904, + 11904,11904,11904,11904,11904,11904,11904,11904,11904,11904, + 11904,11904,11904,11904,11904,11904,11904,11904,11904,11904, + + 11905,11905,11905,11905,11905,11905,11905,11905,11905,11905, + 11905,11905,11905,11905,11905,11905,11905,11905,11905,11905, + 11905,11905, 0,11905,11906, 0, 0, 0, 0, 0, + 0,11906,11906,11906,11906, 0, 0, 0, 0, 0, + 11906,11906,11907,11907,11907,11907,11907,11907,11907,11907, + 11907,11907,11907,11907,11907,11907,11907,11907,11907,11907, + 11907,11907,11907,11907,11907,11907,11908, 0, 0, 0, + 0, 0,11908,11908, 0,11908,11909,11909, 0, 0, + 0, 0, 0,11909,11909,11910, 0, 0, 0, 0, + 0, 0,11910,11910,11910,11910, 0, 0, 0, 0, + + 0,11910,11910,11911, 0, 0, 0, 0,11911, 0, + 0, 0, 0, 0,11911,11911, 0,11911,11912,11912, + 11912,11912,11912,11912,11912,11912,11912,11912,11912,11912, + 11912,11912,11912,11912,11912,11912,11912,11912,11912,11912, + 11912,11912,11913,11913,11913,11913,11913,11913,11913,11913, + 11913,11913,11913,11913,11913,11913,11913,11913,11913,11913, + 11913,11913,11913,11913,11913,11913,11914,11914, 0, 0, + 0, 0, 0,11914,11914,11915, 0, 0, 0, 0, + 0,11915,11915,11915, 0,11915, 0, 0, 0, 0, + 0,11915,11915,11916,11916,11916,11916,11916,11916,11916, + + 11916,11916,11916,11916,11916,11916,11916,11916,11916,11916, + 11916,11916,11916,11916,11916,11916,11916,11917,11917,11917, + 11917,11917,11917,11917,11917,11917,11917,11917,11917,11917, + 11917,11917,11917,11917,11917,11917,11917,11917,11917,11917, + 11917,11918,11918,11918,11918,11918,11918,11918,11918,11918, + 11918,11918,11918,11918,11918,11918,11918,11918,11918,11918, + 11918,11918,11918,11918,11918,11919, 0, 0, 0, 0, + 0, 0, 0, 0,11919, 0, 0, 0, 0, 0, + 11919,11919,11920,11920,11920,11920,11920,11920,11920,11920, + 11920,11920,11920,11920,11920,11920,11920,11920,11920,11920, + + 11920,11920,11920,11920,11920,11920,11921,11921,11921,11921, + 11921,11921,11921,11921,11921,11921,11921,11921,11921,11921, + 11921,11921,11921,11921,11921,11921,11921,11921,11921,11921, + 11922, 0, 0, 0, 0, 0,11922,11922, 0,11922, + 11923, 0, 0, 0, 0,11923, 0, 0, 0, 0, + 0,11923,11923, 0,11923,11924,11924,11924,11924,11924, + 11924,11924,11924,11924,11924,11924,11924,11924,11924,11924, + 11924,11924,11924,11924,11924,11924,11924,11924,11924,11925, + 11925,11925,11925,11925,11925,11925,11925,11925,11925,11925, + 11925,11925,11925,11925,11925,11925,11925,11925,11925,11925, + + 11925,11925,11925,11927,11927,11927,11927,11927,11927,11927, + 0,11927,11927,11927,11927,11927,11927,11927,11927,11927, + 11927,11927,11927,11927,11927,11927,11927,11928,11928,11928, + 11928,11928,11928,11928, 0,11928,11928,11928,11928,11928, + 11928,11928,11928,11928,11928,11928,11928,11928,11928,11928, + 11928,11929,11929,11929,11929,11929,11929,11929, 0,11929, + 11929,11929,11929,11929,11929,11929,11929,11929,11929,11929, + 11929,11929,11929,11929,11929,11930,11930,11930,11930,11930, + 11930,11930,11930,11930,11930,11930,11930,11930,11930,11930, + 11930,11930,11930,11930,11930,11930,11930,11930,11930,11931, + + 11931,11931,11931,11931,11931,11931,11931,11931,11931,11931, + 11931,11931,11931,11931,11931,11931,11931,11931,11931,11931, + 11931,11931,11931,11932,11932,11932,11932,11932,11932,11932, + 11932,11932,11932,11932,11932,11932,11932,11932,11932,11932, + 11932,11932,11932,11932,11932,11932,11932,11933,11933,11933, + 11933,11933,11933,11933,11933,11933,11933,11933,11933,11933, + 11933,11933,11933,11933,11933,11933,11933,11933,11933,11933, + 11934,11934, 0, 0, 0, 0, 0,11934,11934,11935, + 0, 0, 0, 0, 0,11935,11935, 0,11935,11936, + 11936,11936,11936,11936,11936,11936,11936,11936,11936,11936, + + 11936,11936,11936,11936,11936,11936,11936,11936,11936,11936, + 11936,11936,11936,11937,11937,11937,11937,11937,11937,11937, + 11937,11937,11937,11937,11937,11937,11937,11937,11937,11937, + 11937,11937,11937,11937,11937,11937,11937,11938,11938,11938, + 11938,11938,11938,11938,11938,11938,11938,11938,11938,11938, + 11938,11938,11938,11938,11938,11938,11938,11938,11938,11938, + 11938,11939, 0, 0, 0, 0, 0, 0,11939,11939, + 11939,11939, 0, 0, 0, 0, 0,11939,11939,11940, + 11940,11940,11940,11940,11940,11940,11940,11940,11940,11940, + 11940,11940,11940,11940,11940,11940,11940,11940,11940,11940, + + 11940,11940,11940,11941,11941,11941,11941,11941,11941,11941, + 11941,11941,11941,11941,11941,11941,11941,11941,11941,11941, + 11941,11941,11941,11941,11941,11941,11941,11942,11942, 0, + 0, 0, 0, 0,11942,11942,11942,11943, 0, 0, + 0, 0, 0, 0,11943,11943,11943,11943, 0, 0, + 0, 0, 0,11943,11943,11944,11944, 0,11944,11944, + 11944,11944,11944,11944,11944,11944,11944,11944,11944,11944, + 11944,11944,11944,11944,11944,11944,11944,11944,11944,11945, + 0, 0, 0, 0,11945, 0, 0, 0, 0, 0, + 11945,11945, 0,11945,11946,11946,11946,11946,11946,11946, + + 11946,11946,11946,11946,11946,11946,11946,11946,11946,11946, + 11946,11946,11946,11946,11946,11946,11946,11946,11947,11947, + 0, 0, 0, 0, 0,11947,11947,11948, 0, 0, + 0, 0, 0, 0, 0, 0,11948, 0, 0, 0, + 0, 0,11948,11948,11949,11949,11949,11949,11949,11949, + 11949,11949,11949,11949,11949,11949,11949,11949,11949,11949, + 11949,11949,11949,11949,11949,11949,11949,11949,11950,11950, + 11950,11950,11950,11950,11950,11950,11950,11950,11950,11950, + 11950,11950,11950,11950,11950,11950,11950,11950,11950,11950, + 11950,11951,11951,11951,11951,11951,11951,11951,11951,11951, + + 11951,11951,11951,11951,11951,11951,11951,11951,11951,11951, + 11951,11951,11951,11951,11951,11952, 0, 0, 0, 0, + 0,11952,11952, 0,11952,11953,11953,11953,11953,11953, + 11953,11953,11953,11953,11953,11953,11953,11953,11953,11953, + 11953,11953,11953,11953,11953,11953,11953,11953,11953,11954, + 11954,11954,11954,11954,11954,11954,11954,11954,11954,11954, + 11954,11954,11954,11954,11954,11954,11954,11954,11954,11954, + 11954,11954,11954,11955,11955,11955,11955,11955,11955,11955, + 11955,11955,11955,11955,11955,11955,11955,11955,11955,11955, + 11955,11955,11955,11955,11955,11955,11955,11957,11957,11957, + + 11957,11957,11957,11957,11957,11957,11957,11957,11957,11957, + 11957,11957,11957,11957,11957,11957,11957,11957,11957,11957, + 11957,11958,11958,11958,11958,11958,11958,11958,11958,11958, + 11958,11958,11958,11958,11958,11958,11958,11958,11958,11958, + 11958,11958,11958,11958,11958,11959,11959,11959,11959,11959, + 11959,11959, 0,11959,11959,11959,11959,11959,11959,11959, + 11959,11959,11959,11959,11959,11959,11959,11959,11959,11960, + 11960,11960,11960,11960,11960,11960, 0,11960,11960,11960, + 11960,11960,11960,11960,11960,11960,11960,11960,11960,11960, + 11960,11960,11960,11961,11961,11961,11961,11961,11961,11961, + + 0,11961,11961,11961,11961,11961,11961,11961,11961,11961, + 11961,11961,11961,11961,11961,11961,11961,11962,11962,11962, + 11962,11962,11962,11962,11962,11962,11962,11962,11962,11962, + 11962,11962,11962,11962,11962,11962,11962,11962,11962,11962, + 11962,11963, 0, 0, 0, 0, 0,11963,11963,11963, + 0,11963, 0, 0, 0, 0, 0,11963,11963,11964, + 11964,11964,11964,11964,11964,11964,11964,11964,11964,11964, + 11964,11964,11964,11964,11964,11964,11964,11964,11964,11964, + 11964,11964,11964,11965,11965,11965,11965,11965,11965,11965, + 11965,11965,11965,11965,11965,11965,11965,11965,11965,11965, + + 11965,11965,11965,11965,11965,11965,11965,11966,11966, 0, + 0, 0, 0, 0,11966,11966,11967,11967,11967,11967, + 11967,11967,11967,11967,11967,11967,11967,11967,11967,11967, + 11967,11967,11967,11967,11967,11967,11967,11967,11967,11967, + 11968,11968,11968,11968,11968,11968,11968,11968,11968,11968, + 11968,11968,11968,11968,11968,11968,11968,11968,11968,11968, + 11968,11968,11968,11968,11969,11969,11969,11969,11969,11969, + 11969,11969,11969,11969,11969,11969,11969,11969,11969,11969, + 11969,11969,11969,11969,11969,11969,11969,11969,11970,11970, + 11970,11970,11970,11970,11970,11970,11970,11970,11970,11970, + + 11970,11970,11970,11970,11970,11970,11970,11970,11970,11970, + 11970,11970,11971, 0, 0, 0, 0, 0, 0,11971, + 11971,11971,11971, 0, 0, 0, 0, 0,11971,11971, + 11972,11972,11972,11972,11972,11972,11972,11972,11972,11972, + 11972,11972,11972,11972,11972,11972,11972,11972,11972,11972, + 11972,11972,11972,11972,11973,11973,11973,11973,11973,11973, + 11973,11973,11973,11973,11973,11973,11973,11973,11973,11973, + 11973,11973,11973,11973,11973,11973,11973,11973,11974, 0, + 0, 0, 0, 0, 0,11974,11974,11974,11974, 0, + 0, 0, 0, 0,11974,11974,11975, 0, 0, 0, + + 0, 0,11975,11975,11975, 0,11975, 0, 0, 0, + 0, 0,11975,11975,11976,11976,11976,11976,11976,11976, + 11976,11976,11976,11976,11976,11976,11976,11976,11976,11976, + 11976,11976,11976,11976,11976,11976,11976,11976,11977,11977, + 0, 0, 0, 0, 0,11977,11977,11978, 0, 0, + 0, 0, 0, 0, 0, 0,11978, 0, 0, 0, + 0, 0,11978,11978,11979,11979,11979,11979,11979,11979, + 11979,11979,11979,11979,11979,11979,11979,11979,11979,11979, + 11979,11979,11979,11979,11979,11979,11979,11979,11980,11980, + 11980,11980,11980,11980,11980,11980,11980,11980,11980,11980, + + 11980,11980,11980,11980,11980,11980,11980,11980,11980,11980, + 11980,11981,11981,11981,11981,11981,11981,11981,11981,11981, + 11981,11981,11981,11981,11981,11981,11981,11981,11981,11981, + 11981,11981,11981,11981,11981,11982, 0, 0, 0, 0, + 0,11982,11982, 0,11982,11983,11983,11983,11983,11983, + 11983,11983,11983,11983,11983,11983,11983,11983,11983,11983, + 11983,11983,11983,11983,11983,11983,11983,11983,11983,11984, + 11984,11984,11984,11984,11984,11984,11984,11984,11984,11984, + 11984,11984,11984,11984,11984,11984,11984,11984,11984,11984, + 11984,11984,11984,11985,11985,11985,11985,11985,11985,11985, + + 11985,11985,11985,11985,11985,11985,11985,11985,11985,11985, + 11985,11985,11985,11985,11985,11985,11985,11986,11986,11986, + 11986,11986,11986,11986, 0,11986,11986,11986,11986,11986, + 11986,11986,11986,11986,11986,11986,11986,11986,11986,11986, + 11986,11987,11987,11987,11987,11987,11987,11987, 0,11987, + 11987,11987,11987,11987,11987,11987,11987,11987,11987,11987, + 11987,11987,11987,11987,11987,11988,11988,11988,11988,11988, + 11988,11988, 0,11988,11988,11988,11988,11988,11988,11988, + 11988,11988,11988,11988,11988,11988,11988,11988,11988,11989, + 11989,11989,11989,11989,11989,11989,11989,11989,11989,11989, + + 11989,11989,11989,11989,11989,11989,11989,11989,11989,11989, + 11989,11989,11989,11990,11990,11990,11990,11990,11990,11990, + 11990,11990,11990,11990,11990,11990,11990,11990,11990,11990, + 11990,11990,11990,11990,11990,11990,11990,11991,11991,11991, + 11991,11991,11991,11991,11991,11991,11991,11991,11991,11991, + 11991,11991,11991,11991,11991,11991,11991,11991,11991,11991, + 11991,11992, 0, 0, 0, 0, 0, 0, 0, 0, + 11992,11992, 0, 0, 0, 0, 0,11992,11992,11992, + 11993,11993,11993,11993,11993,11993,11993,11993,11993,11993, + 11993,11993,11993,11993,11993,11993,11993,11993,11993,11993, + + 11993,11993,11993,11993,11994, 0, 0, 0, 0, 0, + 0,11994,11994,11994,11994, 0, 0, 0, 0, 0, + 11994,11994,11995, 0, 0, 0, 0, 0, 0,11995, + 11995,11995,11995, 0, 0, 0, 0, 0,11995,11995, + 11996, 0, 0, 0, 0, 0, 0, 0, 0,11996, + 11996, 0, 0, 0, 0, 0,11996,11996,11996,11997, + 11997, 0, 0, 0, 0, 0,11997,11997, 0,11997, + 11998,11998,11998,11998,11998,11998,11998,11998,11998,11998, + 11998,11998,11998,11998,11998,11998,11998,11998,11998,11998, + 11998,11998,11998,11998,11999, 0, 0, 0, 0,11999, + + 0, 0, 0, 0, 0,11999,11999, 0,11999,12000, + 12000,12000,12000,12000,12000,12000,12000,12000,12000,12000, + 12000,12000,12000,12000,12000,12000,12000,12000,12000,12000, + 12000,12000,12000,12001,12001,12001,12001,12001,12001,12001, + 12001,12001,12001,12001,12001,12001,12001,12001,12001,12001, + 12001,12001,12001,12001,12001,12001,12001,12002,12002,12002, + 12002,12002,12002,12002,12002,12002,12002,12002,12002,12002, + 12002,12002,12002,12002,12002,12002,12002,12002,12002,12002, + 12002,12003,12003,12003,12003,12003,12003,12003,12003,12003, + 12003,12003,12003,12003,12003,12003,12003,12003,12003,12003, + + 12003,12003,12003,12003,12003,12004, 0, 0, 0, 0, + 0,12004,12004, 0,12004,12005,12005,12005,12005,12005, + 12005,12005,12005,12005,12005,12005,12005,12005,12005,12005, + 12005,12005,12005,12005,12005,12005,12005,12005,12005,12006, + 12006,12006,12006,12006,12006,12006,12006,12006,12006,12006, + 12006,12006,12006,12006,12006,12006,12006,12006,12006,12006, + 12006,12006,12006,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "tth.lex" +/* TtH flex file to convert plain TeX and LaTeX to HTML. +(c) Ian Hutchinson, 1997-2011. +Released under the terms of the GPL2. See license.txt +This file needs to be turned into a C program using flex +And then compiled into the tth executable using a C compiler. +*/ +#line 10 "tth.lex" +#define TTH_VERSION "4.08" + /*#define TTH_GOLD "gold" no longer a distinction*/ /*sf*/ +#define TTH_HEAD "HEAD" /*sf*/ +char tth_DOC[]="\n\ + Version XXXX (c)1997-2011 Ian Hutchinson\n\ + TtH (TeX-to-HTML) translates TeX into HTML.\n\n\ +The program is a filter by default: it reads from stdin and writes to stdout.\n\ +But a non-switch argument specifies the file[.tex] to translate to file.html.\n\ +Diagnostics concerning unknown or untranslated constructs are sent to stderr.\n\n\ + Obtain USAGE & switch information by: tth -?\n\ + Obtain QUALIFICATIONS by: tth -?q\n\n\ +TtH may be used and distributed under the terms of the GPL version 2.\n"; +char tth_DOCQ[]="\n\ +TeX including mathematics; Plain TeX; LaTeX (2e). \n\ +Limitations and special usages:\n\ + \\input searches TTHINPUTS not TEXINPUTS. Counter operations are global.\n\ + \\catcode changes, tabbing environment, \\usepackage: not supported.\n\ + \\epsfbox{file.eps} links or inlines the figure file, depending on -e switch.\n\ + \\special{html:stuff} inserts HTML stuff. \\iftth is always true.\n\ + \\href{URL}{anchor text} inserts a hypertext anchor pointing to URL.\n\ + %%tth: ... passes the rest of the comment to TtH (not TeX) for parsing\n\ +\n\ +"; +char tth_USAGE[]="\n\ +USAGE: tth [-a -c ...] [<]file.tex [>file.html] [2>err]\n\ + A non-switch argument specifies the input file and the implied output file.\n\ + -h print help. -? print this usage.\n\ + -a enable automatic calls of LaTeX: if no aux file exists, attempt to call.\n\ + picture environment conversion using latex2gif. Default omit.\n\ + -c prefix header \"Content-type: text/HTML\" (for direct web serving).\n\ + -d disable definitions with delimited arguments. Default enable.\n\ + -e? epsfbox handling: -e1 convert to png/gif using user-supplied ps2png/gif.\n\ + -e2 convert and include inline. -e0 (default) no conversion, just ref. \n\ + -f? limit built-up fraction nesting in display eqns to ?(0-9). Default 5.\n\ + -g remove, don\'t guess intent of, \\font commands. Default guess font/size.\n\ + -i use italic font for equations (like TeX). Default roman.\n\ + -j? use index page length ?. Default 20 lines. -j single column.\n\ + -Lfile tell tth the base file (no extension) for LaTeX auxiliary input,\n\ + enables LaTeX commands (e.g. \\frac) without a \\documentclass line.\n\ + -n? HTML title format control. 0 raw. 1 expand macros. 2 expand eqns. \n\ + -ppath specify additional directories (path) to search for input files.\n\ + -r raw HTML output (omit header and tail) for inclusion in other files.\n\ + -t display built-up items in textstyle equations. Default in-line.\n\ + -u unicode character encoding. (Default iso-8859-1).\n\ + -w? HTML writing style. Default no head/body tags. -w -w0 no title.\n\ + -w1 single title only, head/body tags. -w2 XHTML.\n\ + -y? equation style: bit 1 compress vertically; bit 2 inline overaccents.\n\ + -xmakeindxcmd specify command for making index. Default \"makeindex\"\n\ + -v give verbose commentary. -V even more verbose (for debugging).\n"; +char *tth_debughelp="\n\ +Debugging mask: usage tth -vn with n the sum of:\n\ +Bit 1. 1 Standard verbose messages.\n\ +Bit 2. 2 Equation code.\n\ +Bit 3. 4 Definitions, counters, countersetting.\n\ +Bit 4. 8 Macro expansions. Delimited argument matching.\n\ +Bit 5. 16 Stack levels, brace counts etc.\n\ +Bit 6. 32 Tabular, Figures and Pictures.\n\ +Bit 7. 64 Comments.\n\ +Bit 8. 128 Auxiliary Files.\n\ +Bit 9. 256 Cross-references.\n\ +Bit 10. 512 Built-ins, codes.\n\ +Bit 11. 1024 Conditionals, dimensions.\n\ +Bit 12. 2048 Fonts\n\ +Bit 13. 4096 Termination.\n\ +Bit 14. 8192 Line-end diagnosis.\n\ +Bit 16. 32768 Silence unknown command warnings.\n\ + -V= 2048+256+4+2+1\n"; + + +#include <string.h> +#include <stdlib.h> +#include <stdio.h> +#include <ctype.h> /* For toupper */ +#include <time.h> +#define GET_DIMEN {yy_push_state(lookforunit);yy_push_state(lookfornum);\ + *argchar=0;} +#define TTH_MAXDEPTH 30 +#define TTH_CHARLEN 500 +#define TTH_DLEN 20000 +#define TTH_34DLEN 72000 +#define TTH_FONTLEN 200 +#ifdef __vms +#define SUCCESS 1 +#define RMCMD "del" +#define RMTERM ";" +#define PATH_SEP "," +#define DIR_SEP "" +#else +#define SUCCESS 0 +#ifdef MSDOS +#define RMCMD "del" +#define RMTERM "" +#define PATH_SEP ";" +#define DIR_SEP "\\" +#else +#define RMCMD "rm" +#define RMTERM "" +#define PATH_SEP ":" +#define DIR_SEP "/" +#endif +#endif + + /*#define TTH_EXIT(level) exit(level)*/ +#define TTH_EXIT(level) return level; +#define TTH_FATAL(level) yy_push_state(error);tth_ercnt=-abs(level);tth_erlev=level; + + /* Silence warnings */ +#define YY_NO_TOP_STATE + + /* lex Globals */ +void tth_push(),tth_pop(); +char* tth_symbol_point(); +int tth_root_len[TTH_MAXDEPTH] ={0}; +char tth_root_index[TTH_MAXDEPTH][TTH_CHARLEN]={{0}}; +int tth_root_depth=0; +int tth_num_lines = 1; +int tth_push_depth=0; +char tth_closures[TTH_MAXDEPTH][TTH_CHARLEN]; +char tth_texclose[TTH_MAXDEPTH][TTH_CHARLEN]={{0}}; +char tth_font_open[TTH_MAXDEPTH][TTH_CHARLEN]={{0}}; +char tth_font_close[TTH_MAXDEPTH][TTH_CHARLEN]={{0}}; +char tth_fonto_def[TTH_CHARLEN]={0}; +char tth_fontc_def[TTH_CHARLEN]={0}; +int tth_key[TTH_MAXDEPTH]; +int tth_debug = 0; +int tth_verb = 0; +int tth_delimdef=1; +int tth_mathitalic=1; +int tth_flev0=5; +int tth_flev=5; +int tth_multinum=1; +int tth_autopic=0; +int tth_istyle=3; +int tth_htmlstyle=0; +int tth_unicode=2; +int tth_indexpage=20; +int tth_allowinput=1; +int tth_titlestate=4; +int tth_tagpurge=0; + +#ifdef MSDOS + /* Define the size of djgpp stack*/ +unsigned _stklen = 1048576; /* need a larger stack (1Mb) */ +#endif + + /*Global string pointer and length*/ +#define MAX_INCLUDE_DEPTH 100 +YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH]; +YY_BUFFER_STATE halbuff; +FILE *tth_inputfile=0; +FILE *tth_indexfile=0; +FILE *tth_indexstyle=0; +FILE *tth_picfile=0; +FILE *tth_fdout=0; +int tth_stack_ptr = 0; +int tth_ercnt=0; +int tth_erlev=0; +int tth_epsftype=0; +int tth_fontguess=1; +int tth_splitfile=0; /*sf*/ +int tth_inlinefrac=0; +char tth_latex_file[TTH_CHARLEN]={0}; /* base name of latex files. */ +char tth_index_cmd[TTH_CHARLEN]={0}; /* Makeindex command line. */ +char tth_texinput_path[TTH_CHARLEN]={0}; +int tth_LaTeX=0; +char *tth_latex_builtins = "\\def\\frac#1#2{{{#1}\\over{#2}}}\ +\\def\\label#1{\\tthlabel}\ +\\def\\newlabel#1#2{\\tthnewlabel}\ +\\def\\ref#1{\\tthref}\ +\\def\\pageref#1{\\tthpageref}\ +\\def\\index{\\tthgpindex}\ +\\def\\see#1#2{{\\it\\seename} #1}\ +\\tthcountinit\ +\\newcount\\footnote\ +\\newcounter{chapter}\ +\\newcounter{section}[chapter]\ +\\newcounter{subsection}[section]\ +\\renewcommand{\\thesubsection}{\\thesection.\\arabic{subsection}}\ +\\newcounter{subsubsection}[subsection]\ +\\renewcommand{\\thesubsubsection}{\\thesubsection.\\arabic{subsubsection}}\ +\\newcounter{equation}[chapter]\ +\\newcounter{figure}[chapter]\ +\\newcounter{table}[chapter]\ +\\newcounter{part}\ +\\newcounter{secnumdepth}\ +\\setcounter{secnumdepth}{3}\ +\\def\\newtheorem#1#2{\\newenvironment{#1}{\\par\\stepcounter{#1}\ + \\textbf{#2 \\arabic{#1}}\\bgroup \\em}{\\par\\egroup}\\newcounter{#1}}\ +\\def\\tthenclose#1#2#3{#1{#3}#2}\ +\\def\\prefacename{Preface}\ +\\def\\refname{References}\ +\\def\\abstractname{Abstract}\ +\\def\\bibname{Bibliography}\ +\\def\\chaptername{Chapter}\ +\\def\\appendixname{Appendix}\ +\\def\\contentsname{Contents}\ +\\def\\listfigurename{List of Figures}\ +\\def\\listtablename{List of Tables}\ +\\def\\indexname{Index}\ +\\def\\figurename{Figure}\ +\\def\\tablename{Table}\ +\\def\\partname{Part}\ +\\def\\enclname{encl}\ +\\def\\ccname{cc}\ +\\def\\headtoname{To}\ +\\def\\pagename{Page}\ +\\def\\seename{see}\ +\\def\\alsoname{see also}\ +\\def\\proofname{Proof}\ +\\def\\newfont#1#2{\\font#1 #2 }\ +\\def\\thanks#1{\\footnote{#1}}\ +\\def\\bibcite{\\gdef}\n"; +char *tth_latex_builtins2= +"\\newcommand{\\part}[1][]{\\tthpart}\ +\\newcommand{\\chapter}[1][]{\\tthchapter}\ +\\newcommand{\\section}[1][]{\\tthsection}\ +\\newcommand{\\subsection}[1][]{\\tthsubsection}\ +\\newcommand{\\subsubsection}[1][]{\\tthsubsubsection}\ +\\newcounter{paragraph}[subsubsection]\ +\\renewcommand{\\theparagraph}{\\thesubsubsection.\\arabic{paragraph}}\ +\\newcommand{\\paragraph}[1][]{\\tthparagraph}\ +\\newcounter{subparagraph}[paragraph]\ +\\renewcommand{\\thesubparagraph}{\\theparagraph.\\arabic{subparagraph}}\ +\\newcommand{\\subparagraph}[1][]{\\tthsubparagraph}\ +\\newcommand{\\author}[2][]{\\centerheader{3}{#2}{align=\"center\"}}\ +\\newcommand{\\date}[2][]{\\centerheader{3}{#2}{align=\"center\"}}\ +\\newcommand{\\address}[2][]{\\centerheader{3}{#2}{align=\"center\"}}\ +\\newcommand{\\parbox}[2][]{\\hbox to #2}\ +\\def\\symbol#1{\\char#1}\ +\\def\\text{\\textrm}\ +\\def\\definecolor#1#2#3{\\def{#1}{{#3}}}\ +\\def\\setlength#1#2{#1=#2}\ +\\def\\columnwidth{\\hsize}\ +\\newcommand\\caption[1][]{\\tthcaption}\ +\\newenvironment{longtable}\ +{\\begin{table}\\begin{center}\ + \\def\\noalcen##1{\\noalign{\\centering ##1}\\stepcounter{table}}\ + \\renewcommand\\caption[2][]{\\ifx ##2* \\noalcen\ + \\else\\noalign{\\tthcaption{##2}}\\fi}\ + \\def\\endhead{\\\\}\\def\\endfirsthead{\\\\}\ + \\def\\endfoot{\\\\}\\def\\endlastfoot{\\\\}\ + \\def\\kill{\\\\}\ + \\begin{tabular}}\ + {\\end{tabular}\\end{center}\\end{table}}\ +\\def\\tthciteform{}\\def\\tthbibform{[}\\def\\tthbibcb{]}\ +\\def\\tthciteob{[}\\def\\tthcitepb{,}\\def\\tthcitefi{,}\\def\\tthcitecb{]}\ +\\newcommand\\citet[2][]{{\\def\\tthciteform##1##2##3##4{##3 [##2]}\ +\\def\\tthciteob{}\\def\\tthcitecb{}\\cite[#1]{#2}}}\ +\\newcommand\\citep[2][]{{\\def\\tthciteform##1##2##3##4{##3, ##2}\ +\\def\\tthciteob{[}\\cite[#1]{#2}}}\ +\\newcommand\\marginpar[2][]{\\special{html:<table align=\"right\" border=\ +\"border\"><tr><td align=\"right\">}#2\\special{html:</td></tr></table>}}\ +\\def\\newsavebox{\\newbox}\n"; +char *tth_latex_builtins3= +"\\def\\tthsplittail{\ +\\special{html:\n<hr /><table width=\"100\\%\"><tr><td>\n\ + <a href=\"index.html\">HEAD</a></td><td align=\"right\">\n\ +<a href=\"}\\tthfilenext\\special{html:\">}NEXT\n\ +\\special{html:</a></td></tr></table>\n</div></body></html>}}\n\ +\\def\\tthsplittop{\ +\\special{html:<table width=\"100\\%\"><tr><td>\n\ + <a href=\"index.html\">HEAD</a></td><td align=\"right\">\n\ + <a href=\"}\\tthfilechar\\special{html:\">}PREVIOUS\n\ +\\special{html:</a></td></tr></table>}}\n\ +\\def\\glossary\\index\n\ +\\newenvironment{floatingfigure}{\\special{html:\ +<br clear=\"all\" />\n\ +<table border=\"0\" align=\"left\" width=\"20\\%\"><tr><td>}\ +\\begin{figure}\\wd}{\\special{html:</td></tr></table>}\\end{figure}}\n\ +\\def\\tabularnewline{\\\\}\n\ +\\def\\AtEndDocument#1{}"; +char *tth_builtins = "\\def\\bye{\\vfill\\eject\\end }\ +\\def\\cal{\\sffamily\\it }\ +\\def\\phantom#1{\\tthphantom}\ +\\let\\hphantom=\\phantom\ +\\def\\root#1\\of#2{\\sqrt[#1]{#2}}\ +\\def\\H#1{\\\"#1}\\def\\b#1{\\underline{#1}}\ +\\def\\v{\\noexpand\\v}\\def\\u{\\noexpand\\u}\ +\\def\\t{\\noexpand\\t}\\def\\d{\\noexpand\\d}\ +\\def\\c#1{\\noexpand\\c #1}\ +\\def\\url{\\tthurl}\ +\\def\\hyperlink#1#2{\\href{\\##1}{#2}}\ +\\def\\hypertarget#1#2{\\special{html:<a id=\"#1\">}#2\\special{html:</a>}}\ +\\def\\proclaim #1.#2\\par{\\medskip{\\bf#1.\\ }{\\sl#2\\par}}\ +\\def\\newdimen#1{\\def#1{\\tthdimen#1 0\\tth_hsize}}\ +\\def\\hsize{\\tthdimen\\hsize 1\\tth_hsize}\ +\\def\\ensuremath#1{$#1$}\ +\\def\\TeX{\\ensuremath{\\rm T_EX}}\ +\\def\\LaTeX{\\ensuremath{\\rm L^AT_EX}}\ +\\def\\buildrel#1\\over#2{\\mathop{#2}^{#1}}\ +\\newcount\\tthdummy\ +\\def\\uppercase#1{{\\tth_uppercase #1}}\ +\\def\\newbox#1{\\def#1{}}\n\ +\\def\\today{\\tth_today}\n\ +\\def\\tthfootnotes{Footnotes}\n\ +\\def\\string#1{\\verb!#1!}\n\ +\\def\\displaylines#1{\\eqalign{#1}}\n\ +\\def\\leqalignno#1{\\eqalignno{#1}}\n\ +\\def\\leqno#1{\\eqno{#1}}\ +\\def\\bm#1{{\\tth_bm #1}}\ +\\newenvironment{abstract}{\\begin{tthabstract}}{\\end{tthabstract}}\ +\\newcommand\\tthoutopt[1][]{#1}\n\ +\\newcommand\\tthnooutopt[1][]{}\n"; + + /* static functions */ +static int indexkey(); +static void mkkey(),rmkey(),rmdef(),mkdef(); +static void delimit(); +static int b_align(); +static int roman(); +static int scaledpoints(); +static void tagpurge(); +static int adddimen(); + +/* Start condition stacks, not POSIX */ +/* Permits to compile without -lfl */ +/* Remove isatty calls for VMS */ +/* Not as accurate, probably because of rescanning. %option yylineno */ +/* Start conditions */ +/* Paragraph grouping for beginsection, item etc: */ + +/* Cause par to scan texclose.*/ + +/* Look for first token following and put argchar at end:*/ + +/* Expand following command and output expchar after first token, +if non-null, else prefix exptex and rescan (in equations)*/ + +/* Put swapchar after following open brace and rescan. */ + +/* Enclose a bare token in braces. Caller must initialize dupstore: */ + +/* Output the current brace group as raw text. Terminate with closing: */ + +/* Output verbatim till we encounter \end{verbatim} */ + +/* Output verbatim till we encounter a character matching chr1[0] */ + +/* Output without HTML tags so that we are compatible with title*/ + +/* Get from here to end of brace group. Then treat according to storetype: +0 Make argchar the closing of first, attach second copy, rescan. +1 Save in supstore. 2 Save in substore. For sup/bscripting. +3 Rescan with argchar between first and second copies. +4 Rescan one copy only with argchar prepended. +5 Rescan one copy with argchar postpended. +*/ + +/* Same thing but delimited by square brackets */ + +/* Throw away a following group closed by \fi or \end{picture} */ + +/* Throw away the following text closed by \else or \fi */ + +/* Inner if state inside falsetext. As falsetext except no else sensitivity*/ + +/* Throw away the following text closed by \or */ + +/* Break out of dumping of ortext states */ + +/* Get the unexpanded tokens to compare for ifx */ + +/* Get the tokens to compare for if */ + +/* Get the numbers to compare for ifnum */ + +/* Look for first number following. Put into argchar, and Pop. */ + +/* Look for first number following. Output num, argchar, and Pop. */ + +/* Look for unit. Catenate to argchar. Construct dimension in anumber */ + +/* Get the first file-like argument. */ + +/* Get nothing but the corresponding closebrace. */ + +/* Get a box definition for setbox. Mostly getting optional dimension */ + +/* Get an immediate sub or sup, else pop*/ + +/* Get the command we are defining only: */ + +/* Get a brace group as the definition's name */ + +/* Get the definition's argument description. Leave number in narg. */ + +/* Compress whitespace in delimited definition argument template and store*/ + +/* Get the end part of a newenvironment */ + +/* Define a let command. Explicitly using predefined macro. */ + +/* Throw away contiguous brace groups */ + +/* Advancing dimensions */ + +/* Get complete definition of a new count: */ + +/* Perform a counter advance: */ + +/* Output the value of a counter: */ + +/* Set the value of a previously defined counter: */ + +/* Extract the halign template. */ + +/* Inside tables, interpret & and \cr */ + +/* Handle ends of lines in halign state, e.g. \hline \end{tabular} \multi */ + +/* State for exiting expand-after of an ampersand. */ + +/* State for exiting expand-after of an ampersand in equations. */ + + + +/* Equation mode. */ + +/* Display table mode */ + +/* Textbox in equations mode */ + +/* latex listing environments */ + + + + +/* Uppercase mode */ + +/* Small caps text mode, no braces allowed. */ + +/* Define the token to be the next lot of text: */ + +/* Obtain the bracegroup as a macro argument: */ + +/* Obtain the bracket group as a macro argument: */ + +/* Detect the presence of [ and switch to optag if found */ + +/* Input a file. */ + +/* Parameter substitution in macros. */ + +/* Expanding an edef*/ + +/* Interpreting delimited definition argument */ + +/* Removing spaces e.g. after commands */ + +/* Warn if output takes place before title. */ + +/* titlecheck state for strict HTML/XHTML. */ + +/* Scan builtins at start. */ + +/* Scan LaTeX builtins at start. */ + +/* Glue flex clause removal */ + +/* rule dimension removal */ + +/* big delimiter get type */ + +/* Picture environment */ + +/* csname getting state */ + +/*tabular alignment string interpretation*/ + +/* Copying halign material to precell*/ + +/* Inserting space in horizontal lines and vertical.*/ + + +/* Dealing with hboxes */ + +/* Dealing with vboxes */ + +/* Setting Dimensions */ + +/* PreScanning tabular argument */ + +/* Error exiting state */ + +/* Paragraph checking state after a newline when par is possible*/ + +/* Expand following token till we reach something no more expandable +but don't embrace it. Prefix exptex if not zero. */ + +/* Copying of a group but escaping special characters as we go. Hence +making it suitable for subsequent verbatim or url handling. Ending +as dugroup. */ + +/* Dupgroup that treats % as a normal character */ + +/* Deal with the string that has been stored using uncommentgroup*/ + + +/* Checking if the start of a $$ indicates display table */ + +/* Defines */ +/* NOA [^a-zA-Z0-9] Removed 1.04 */ +/* Old versions. WSP [ \t\n] WSC [^ \t\n] NL \n */ +/* Costs 120k C! BRCG \{[^\}]*(\{[^\}]*(\{[^\}]*\})?[^\}]*\})?[^\}]*\} */ +#line 14815 "lex.yy.c" + +#define INITIAL 0 +#define pargroup 1 +#define parclose 2 +#define tokenarg 3 +#define exptokarg 4 +#define swaparg 5 +#define embracetok 6 +#define rawgroup 7 +#define verbatim 8 +#define verb 9 +#define notags 10 +#define dupgroup 11 +#define dupsquare 12 +#define discardgroup 13 +#define falsetext 14 +#define innerfalse 15 +#define ortext 16 +#define orbreak 17 +#define getifx 18 +#define getiftok 19 +#define getifnum 20 +#define lookfornum 21 +#define insertnum 22 +#define lookforunit 23 +#define lookforfile 24 +#define matchbrace 25 +#define getbox 26 +#define getsubp 27 +#define getdef 28 +#define getdefbr 29 +#define getnumargs 30 +#define ddcomp 31 +#define getend 32 +#define letdef 33 +#define unknown 34 +#define dimadv 35 +#define getcount 36 +#define advance 37 +#define number 38 +#define counterset 39 +#define htemplate 40 +#define halign 41 +#define hendline 42 +#define hamper 43 +#define mamper 44 +#define vtemplate 45 +#define valign 46 +#define equation 47 +#define disptab 48 +#define textbox 49 +#define Litemize 50 +#define Lenumerate 51 +#define Ldescription 52 +#define Lindex 53 +#define uppercase 54 +#define textsc 55 +#define define 56 +#define macarg 57 +#define optag 58 +#define optdetect 59 +#define inputfile 60 +#define psub 61 +#define xpnd 62 +#define delimint 63 +#define removespace 64 +#define titlecheck 65 +#define stricttitle 66 +#define builtins 67 +#define latexbuiltins 68 +#define glue 69 +#define ruledim 70 +#define bigdel 71 +#define picture 72 +#define csname 73 +#define talign 74 +#define tempamp 75 +#define hskip 76 +#define vskip 77 +#define hbox 78 +#define vbox 79 +#define setdimen 80 +#define tabpre 81 +#define error 82 +#define parcheck 83 +#define tokexp 84 +#define escgroup 85 +#define uncommentgroup 86 +#define urlgroup 87 +#define indexgroup 88 +#define halsearch 89 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include <unistd.h> +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy (void ); + +int yyget_debug (void ); + +void yyset_debug (int debug_flag ); + +YY_EXTRA_TYPE yyget_extra (void ); + +void yyset_extra (YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in (void ); + +void yyset_in (FILE * in_str ); + +FILE *yyget_out (void ); + +void yyset_out (FILE * out_str ); + +int yyget_leng (void ); + +char *yyget_text (void ); + +int yyget_lineno (void ); + +void yyset_lineno (int line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap (void ); +#else +extern int yywrap (void ); +#endif +#endif + + static void yyunput (int c,char *buf_ptr ); + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + + static int yy_start_stack_ptr = 0; + static int yy_start_stack_depth = 0; + static int *yy_start_stack = NULL; + + static void yy_push_state (int new_state ); + + static void yy_pop_state (void ); + + static int yy_top_state (void ); + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else +#define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 540 "tth.lex" + + + /* Local storage */ + +#define NCOUNT 256 +#define NFNMAX 1600 +#define NARMAX 20 +#define TTH_PUSH_BUFF(rmv) if ( tth_stack_ptr >= MAX_INCLUDE_DEPTH )\ + {fprintf(stderr,buffdeep,tth_num_lines);TTH_EXIT( 1 );}\ + eofrmv[tth_stack_ptr]=rmv;\ + include_stack[tth_stack_ptr++] = YY_CURRENT_BUFFER; +char *buffdeep="**** Error: FATAL. Scan buffers nested too deeply. Infinite loop? Line %d.\n"; +#define TTH_SCAN_STRING TTH_PUSH_BUFF(0);yy_scan_string +extern void tth_epsf(),tth_symext(),tth_encode(),tth_undefine(); + /*Not static except for tthfunc*/ +#define STATIC +STATIC char closing[TTH_CHARLEN]={0}; +STATIC char preclose[TTH_CHARLEN]={0}; +STATIC char argchar[TTH_CHARLEN]={0}; +STATIC char defchar[TTH_CHARLEN]={0}; +STATIC char eqchar[4*TTH_CHARLEN]={0}; +STATIC char eqchar2[4*TTH_CHARLEN]={0}; +STATIC char scratchstring[TTH_CHARLEN]={0}; +STATIC char scrstring[TTH_CHARLEN]={0}; +STATIC char swapchar[TTH_CHARLEN]={0}; +STATIC char expchar[TTH_CHARLEN]={0}; +STATIC char exptex[TTH_CHARLEN]={0}; +STATIC char strif[TTH_CHARLEN]={0}; +STATIC char newcstr[TTH_CHARLEN]={0}; +STATIC char boxalign[TTH_CHARLEN]={0}; +STATIC char boxvalign[TTH_CHARLEN]={0}; +STATIC char dupstore[TTH_DLEN]; +STATIC char dupstore2[2*TTH_DLEN]; +STATIC char supstore[TTH_DLEN]={0}; +STATIC char substore[TTH_DLEN]={0}; +STATIC char defstore[TTH_DLEN]={0}; +STATIC char psubstore[TTH_DLEN]={0}; +STATIC char chr1[2]={0}; +STATIC int storetype=0; +STATIC int bracecount=0; +STATIC int horizmode=0; /* 1 in horizontal mode. -1 after a \n. 0 after a \par*/ +STATIC int horiztemp=0; +STATIC int whitespace=0; +STATIC int edeftype=0; + /* Stacking of halign and tabular operational data. */ +STATIC int colnum=0; +STATIC char halstring[TTH_CHARLEN]={0}; +STATIC char *halstrings[NARMAX]; +STATIC YY_BUFFER_STATE halbuffs[NARMAX]; +STATIC int halignenter=0; +STATIC int halenter[NARMAX]={99}; +STATIC int halncols[NARMAX]={0}; +STATIC int halind=0; +#define TTH_HAL_PUSH if(tth_debug&32)fprintf(stderr,"HAL PUSH %d,",halind);\ + if(tth_debug&32)fprintf(stderr,"%s\n",halstring);\ + if(halind < NARMAX) {\ + halenter[halind]=halignenter;halncols[halind]=ncols;\ + halbuffs[halind]=halbuff;colnum=0;mkkey(halstring,halstrings,&halind);\ + }else{ fprintf(stderr,"**** Error: Fatal. Tables nested too deeply. Line %d\n",tth_num_lines);\ + TTH_EXIT(1);} +#define TTH_HAL_POP if(tth_debug&32)fprintf(stderr,"HAL POP %d,",halind-1);\ + if(halind > 0){\ + strcpy(halstring,halstrings[halind-1]);\ + rmkey(halstrings,&halind);halbuff=halbuffs[halind];\ + halignenter=halenter[halind];ncols=halncols[halind];\ + if(tth_debug&32)fprintf(stderr,"%s\n",halstring);\ + }else{ fprintf(stderr,"**** Error: Fatal. Underflow of Table index. Line %d\n",tth_num_lines);\ + TTH_EXIT(1);} +STATIC int eqalignlog=0; /* 1 eqalign, >1 no-numbering, >100 reset at line end.*/ +STATIC int colspan=1; /* colspan of table cell; was 0 default. Now 1.*/ +STATIC int eqaligncell=0; +STATIC int eqalignrow=0; +STATIC int eqalog[NARMAX]; /* Storage for pushing eqalign flags */ +STATIC int eqacell[NARMAX]; +STATIC int eqarow[NARMAX]; +STATIC int eqaind=0; +#define TTH_EQA_PUSH if(eqaind < NARMAX) {\ + eqalog[eqaind]=eqalignlog;eqacell[eqaind]=eqaligncell;\ + eqarow[eqaind]=eqalignrow;eqaind++;\ + }else{ fprintf(stderr,"**** Error: Fatal. Matrices nested too deeply. Line %d\n",tth_num_lines);\ + TTH_EXIT(1);} +#define TTH_EQA_POP if(eqaind > 0){ eqaind--;\ + eqalignlog=eqalog[eqaind];eqaligncell=eqacell[eqaind];\ + eqalignrow=eqarow[eqaind];\ + }else{ fprintf(stderr,"**** Error: Fatal. Underflow of Matrix index:%d Line %d\n",eqaind,tth_num_lines);\ + TTH_EXIT(1);} +STATIC int i,ind=0,jarg=0,jargmax=0,jscratch,js2,jshal,jstal=0, hgt=0; +STATIC int iac=0,jac=0; +STATIC int ncounters=0; +STATIC int counters[NCOUNT]={0}; +STATIC char *countkeys[NCOUNT]={0}; +STATIC char *countwithins[NCOUNT]={0}; +STATIC int nkeys=0; +STATIC char *keys[NFNMAX]={0}; +STATIC char *defs[NFNMAX]={0}; +STATIC char *optargs[NFNMAX]={0}; +STATIC int nargs[NFNMAX]={0}; +STATIC int lkeys[NFNMAX]={0}; +STATIC int ckeys[NFNMAX]={0}; +STATIC int localdef=0; +STATIC int narg; +STATIC int margmax=0; +STATIC char *margkeys[NARMAX]={0}; +STATIC char *margs[NARMAX]={0}; +STATIC int margn[NARMAX]={0}; +/* Fractions and math */ +extern void tth_enclose(),tth_prefix(); +STATIC int eqdepth=0; +STATIC char *eqstrs[NFNMAX]; +STATIC char eqstr[4*TTH_DLEN]={0}; +STATIC char eqstore[4*TTH_DLEN]; +STATIC char eqlimited[TTH_DLEN]={0}; +/* STATIC int eqsubsup=0; */ +STATIC int eqclose=0; +STATIC int eqhgt=0; +STATIC int mtrx[NFNMAX]={0}; +STATIC int active[NFNMAX]={0}; +STATIC int levhgt[NFNMAX]={0}; +STATIC int tophgt[NFNMAX]={0}; +STATIC char levdelim[NFNMAX][20]={{0}}; +STATIC int tabwidth=150; +STATIC int qrtlen=0,qrtlen2=0; +STATIC time_t thetime; +struct tm timestruct; +STATIC char *chscratch=0; +STATIC char *chs2=0; +STATIC char *chs3=0; +STATIC char *chdef=0; +STATIC char *chopt=0; +STATIC int lopt=0; +/* Latex Sections etc*/ +STATIC int chaplog=0; +STATIC int countstart=0; +#define ftntno counters[0+countstart] +#define chapno counters[1+countstart] +#define sectno counters[2+countstart] +#define subsectno counters[3+countstart] +#define subsubsectno counters[4+countstart] +#define equatno counters[5+countstart] +#define figureno counters[6+countstart] +#define tableno counters[7+countstart] +#define partno counters[8+countstart] +#define secnumdepth counters[9+countstart] +STATIC int appendix=0; +STATIC char environment[20]={0}; /* Name of environment */ +STATIC char labelchar[20]={0}; /* Running label in current section. */ +STATIC char envirchar[20]={0}; /* Running label in numbered environment. */ +STATIC char refchar[20]={0}; /* Type of internal reference. */ +STATIC char colorchar[20]={0}; +STATIC char filechar[20]={0}; +STATIC char filenext[20]={0}; /*sf*/ +STATIC char auxflch[20]={0}; +STATIC char schar[3]={0}; /*sf*/ +#define TNO 400 +STATIC char *tchar[TNO]={0}; /*sf*/ +STATIC char *fchar[TNO]={0}; /*sf*/ +STATIC int tbno=0; /*sf*/ +STATIC int fgno=0; /*sf*/ +STATIC char ftntcode[4]; +STATIC int ftntwrap=0; +STATIC int displaystyle=0; +STATIC int nbuiltins=0; + /* STATIC int compression=0; */ +STATIC int enumerate=0; +STATIC char enumtype[5]={'1','a','i','A','I'}; +STATIC int eofrmv[MAX_INCLUDE_DEPTH]; +STATIC int lbook=0; +STATIC int lefteq=0; +STATIC char unitlength[TTH_CHARLEN]={0}; +STATIC int picno=0; +STATIC int ncols=0; +STATIC char tdalign[TTH_CHARLEN]={0}; +STATIC char precell[TTH_CHARLEN]={0}; +STATIC float anumber=0.,bnumber=1.,cnumber=0.; +STATIC float cyanc=0.,magentac=0.,yellowc=0.,blackc=0.; +STATIC float redc=0.,greenc=0.,bluec=0.; +STATIC int thesize=0; +STATIC int tthglue=0; +STATIC int tth_eqwidth=100; +STATIC int dimadvstate=0; +#define TTH_INDPC 5 +extern int tth_group(); + /* Number of scaledpoints per screen pixel. 100 pixels per inch. */ +#define SCALEDPERPIXEL (65536*72/100) + /* Guess of the screen width in pixels larger than real is usually the best + error to have. */ +#define DEFAULTHSIZEPIX 1000 +/* extern int tth_halcode(); */ +STATIC int boxborder=0; +extern int tth_cmykcolor(); +STATIC char xpndstring[2]={0}; +STATIC int bibliogs=0; +STATIC int verbinput=0; +/* Open for reading, and test that we really can read it. */ +STATIC char openscrt[2]; +#define TTH_FILE_OPEN(scratchstring) \ + ( (tth_inputfile=fopen(scratchstring,"r")) ?\ + ( ( (fread(openscrt,1,1,tth_inputfile)==0) && ferror(tth_inputfile) \ + && (!fclose(tth_inputfile) || 1 ) ) ? \ + NULL : (freopen(scratchstring,"r",tth_inputfile)) )\ + : NULL ) +STATIC int tth_index_face=0; +STATIC int tth_index_line=0; +STATIC int tthindexrefno=0; +STATIC int oa_removes=0; +STATIC char page_compositor[]="-"; +STATIC char input_filename[TTH_CHARLEN]={0}; +STATIC int minus=1; +#define TTH_UNKS_LEN 4000 +STATIC char unknownstring[TTH_UNKS_LEN]={0}; +STATIC char valignstring[TTH_CHARLEN]={0}; +STATIC int valsec=0; +STATIC char tth_verbenviron[TTH_MAXDEPTH]={0}; + /* */ + + /* Define the storable stacked integers */ +#define INTDEPTHMAX 30 /* Stack depth*/ +#define INTMAX 10 /* Maximum integers */ +#define INTERROR 99999 /* Value indicating overflow */ +int PUSHEDINTS[INTMAX][INTDEPTHMAX]={{0}}; +int PUSHEDINTDEPTHS[INTMAX]={0}; +#define TTH_INT_SETPUSH(name,value) \ + if(PUSHEDINTDEPTHS[name]<INTDEPTHMAX) {\ + PUSHEDINTS[name][++PUSHEDINTDEPTHS[name] ]=value;\ + }else{fprintf(stderr,"INT overflow, %s\n","name");++PUSHEDINTDEPTHS[name];} +#define TTH_INT_VALUE(name) \ + (PUSHEDINTDEPTHS[name]<=INTDEPTHMAX) ? \ + PUSHEDINTS[name][PUSHEDINTDEPTHS[name] ] :\ + INTERROR +#define TTH_INT_POP(name) \ + if(PUSHEDINTDEPTHS[name]>0){\ + PUSHEDINTS[name][PUSHEDINTDEPTHS[name]--]=0;\ + }else{fprintf(stderr,"INT underflow, %s\n","name");} + /* Here we define as macros the names of our pushed integers. */ +#define EQSUBSUP 0 + /* Calls are then of the form, e.g. TTH_INT_VALUE(EQSUBSUP,10)*/ + + +/*mathstringshl*/ + + /*Macros in scanner etc. */ +#ifdef TTH_GOLD +#define TTH_NAME "Hgold" +#else +#define TTH_NAME "H" +#endif + +#define TTH_SYMBOLN (tth_unicode ? "" : "<span style=\"font-family:symbol\">\n") +#define TTH_SYMBOL (tth_unicode ? "" : "<span style=\"font-family:symbol\">") +#define TTH_SYMEND (tth_unicode ? "" : "</span>") +#define TTH_SYMENDN (tth_unicode ? "" : "</span\n>") +#define TTH_SYMPT(chr) (tth_unicode ? tth_symbol_point(chr) : chr) + +#define TTH_DISP1 ((tth_debug < 2) ? "\n<br clear=\"all\" /><table border=\"0\" width=\"%d%%\"><tr><td>\n<table align=\"center\" cellspacing=\"0\" cellpadding=\"2\"><tr><td nowrap=\"nowrap\" align=\"center\">\n" : "\n<br clear=\"all\" /><table border=\"1\" width=\"%d%%\"><tr><td>\n<table border=\"1\" align=\"center\"><tr><td nowrap=\"nowrap\" align=\"center\">\n" ) +/* DISPE for equalign etc. Old version.*/ +#define TTH_DISPE ((tth_debug < 2) ? "\n<br clear=\"all\" /><table border=\"0\" width=\"%d%%\"><tr><td>\n" : "\n<br clear=\"all\" /><table border=\"1\" width=\"%d%%\"><tr><td>\n" ) + /* New broken version + #define TTH_DISPE ((tth_debug < 2) ? "\n<br clear=\"all\" /><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"%d%%\">\n" : "\n<br clear=\"all\" /><table border=\"1\" width=\"%d%%\">\n" ) */ + +#define TTH_DISP2 "</td></tr></table>\n</td></tr></table>\n" +#define TTH_DISP3 "</td></tr></table>\n</td><td width=\"1%\">" +#define TTH_DISP4 "</td></tr></table>\n" +#define TTH_DISP5 "\n</td><td width=\"1%\">" +#define TTH_DISP6 "</td></tr></table>\n" /* Instead of DISP4*/ +#define TTH_TSTY1 ((tth_debug <2) ? "<br clear=\"all\" /><table border=\"0\" align=\"left\" cellspacing=\"0\" cellpadding=\"0\"><tr><td nowrap=\"nowrap\">" : "<br clear=\"all\" /><table border=\"1\" align=\"left\"><tr><td>" ) +#define TTH_TSTY2 "\n</td></tr></table><br />" +#define TTH_EQ1 ((tth_debug<2) ? "<table border=\"0\" align=\"left\" cellspacing=\"0\" cellpadding=\"0\"><tr><td nowrap=\"nowrap\" align=\"center\">\n" : "<table border=\"1\" align=\"left\"><tr><td nowrap=\"nowrap\" align=\"center\">\n") +#define TTH_EQ3 ((tth_debug<2) ? "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" : "<table border=\"1\">" ) +#define TTH_EQ2 "</table>\n" +#define TTH_EQ4 "</td></tr></table>\n" +#define TTH_EQ5 ((tth_debug<2) ? "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td nowrap=\"nowrap\" align=\"center\">\n" : "<table border=\"1\"><tr><td nowrap=\"nowrap\" align=\"center\">\n") +#define TTH_EQ6 ((tth_debug<2) ? "<tr><td width=\"50%\"></td><td nowrap=\"nowrap\" align=\"right\">\n" : "<tr><td width=\"50%\"></td><td nowrap=\"nowrap\" align=\"right\">\n" ) +#define TTH_EQ7 "\n <tr><td width=\"50%%\"></td><td nowrap=\"nowrap\" align=\"%s\" colspan=\"%d\">" +#define TTH_EQ8 "</td><td width=\"50%\"></td><td width=\"1\" align=\"right\">" +#define TTH_EQ9 "</td><td width=\"50%\">" +#define TTH_EQ10 "\n <tr><td nowrap=\"nowrap\" align=\"%s\" colspan=\"%d\">" +#define TTH_EQ11 ((tth_debug<2)?"<table><tr><td nowrap=\"nowrap\" align=\"%s\" colspan=\"%d\">":"<table border=\"1\"><tr><td nowrap=\"nowrap\" align=\"%s\" colspan=\"%d\">") +#define TTH_CELL1 ((eqclose > tth_flev) ? ((levdelim[eqclose][0]||levdelim[eqclose+1][0]) ? "" : "["): ((levdelim[eqclose][0]) ? "" : "</td><td nowrap=\"nowrap\" align=\"center\">\n") ) +#define TTH_CELL2 ((eqclose > tth_flev) ? ((levdelim[eqclose+1][0]||levdelim[eqclose][0]) ? "" : "]"): ((levdelim[eqclose+1][0]) ? "" : "</td><td nowrap=\"nowrap\" align=\"center\">\n") ) + /* CELL2 and CELL3 need to be identical apart from the test. */ +#define TTH_CELL3 "</td><td nowrap=\"nowrap\" align=\"center\">\n" +#define TTH_CELL4 "</td><td align=\"right\">" + /*#define TTH_CELL_L "</td><td align=\"left\">"*/ +#define TTH_CELL_TAB (eqdepth ?"</td></tr></table></td>":"</td>") +#define TTH_CELL_L "</td><td align=\"left\" class=\"cl\">" +#define TTH_CELL_R "</td><td align=\"right\" class=\"cr\">" +#define TTH_CELL5 "</td><td nowrap=\"nowrap\">" +#define TTH_CELL_START "</td><td" +#define TTH_LEV1 ((eqclose > tth_flev) ? "(": ((tth_debug<2) ? "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td nowrap=\"nowrap\" align=\"center\">\n": "<table border=\"1\"><tr><td nowrap=\"nowrap\" align=\"center\">\n") ) +#define TTH_LEV2 ((eqclose > tth_flev) ? ")": "</td></tr></table>") + +#define TTH_EQA1 ((tth_debug<2) ? ((eqalignlog) ? "<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\"><tr><td nowrap=\"nowrap\" align=\"left\">\n":"<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\"><tr><td nowrap=\"nowrap\" align=\"center\">\n") : ((eqalignlog) ? "<table border=\"1\"><tr><td nowrap=\"nowrap\" align=\"left\">\n":"<table border=\"1\"><tr><td nowrap=\"nowrap\" align=\"center\">\n")) +#define TTH_EQA2 "</td></tr></table>" +#define TTH_EQA3 ((eqalignlog) ? "</td><td nowrap=\"nowrap\" align=\"left\">\n" : "</td><td nowrap=\"nowrap\" align=\"center\">\n") +#define TTH_EQA4 ((eqalignlog) ? "</td><td nowrap=\"nowrap\" align=\"left\" colspan=" : "</td><td nowrap=\"nowrap\" align=\"center\" colspan=") + /* The leading \n is vital in tth_istyle. */ +#define TTH_DIV ((eqclose > tth_flev) ? "/":(tth_istyle&1 ? "\n<div class=\"hrcomp\"><hr noshade=\"noshade\" size=\"1\"/></div>":"<hr noshade=\"noshade\" size=\"1\" />") ) + +#define TTH_ATOP ((eqclose > tth_flev) ? " || ":"<br />\n" ) +#define TTH_NULL_BOTTOM ((eqclose > tth_flev) ? "":" <br />" ) +#define TTH_NOALIGN "<tr><td nowrap=\"nowrap\" colspan=6>" +#define TTH_BR "<br />" +#define TTH_BRN "<br />\n" +#define TTH_SUP1 "<sup>" +#define TTH_SUP2 "</sup>" +#define TTH_SUB1 "<sub>" +#define TTH_SUB2 "</sub>" +#define TTH_OINT strcat(eqstr,"</td><td align=\"center\">");\ + strcat(eqstr,TTH_SYMBOL);chr1[0]=243;strcat(eqstr,TTH_SYMPT(chr1));\ + strcat(eqstr,"<br />(");chr1[0]=231;strcat(eqstr,TTH_SYMPT(chr1));\ + strcat(eqstr,")<br />");chr1[0]=245;strcat(eqstr,TTH_SYMPT(chr1));\ + strcat(eqstr,TTH_SYMEND);strcat(eqstr,"<br />");strcat(eqstr,"</td><td>");\ + if(levhgt[eqclose] == 1)levhgt[eqclose]=2;hgt=3; + /* These ought to be a good way of closing up over/under braces etc + but layout is too broken to give good vertical centering then +#define TTH_OBR (tth_istyle&1 ? "\n<div class=\"hrcomp\"><hr /></div>" : "<hr />") +#define TTH_OBRB (tth_istyle&1 ? "\n<div class=\"hrcomp\"><br /></div>" : "<br />") + */ +#define TTH_OBR "<hr />" +#define TTH_OBRB "<br />" +#define TTH_EM1 "<em>" +#define TTH_EM2 "</em>" +#define TTH_SMALLCAPS_FONT1 "<span style=\"font-size:x-small\">" +#define TTH_SMALLCAPS_FONT2 "</span>" +#define TTH_BOLDO "<b>" +#define TTH_BOLD1 "<b>" +#define TTH_BOLDC "</b>" +#define TTH_BOLD2 "</b>" +#define TTH_BLDITO "<b><i>" +#define TTH_BLDIT1 "<b><i>" +#define TTH_BLDITC "</i></b>" +#define TTH_BLDIT2 "</i></b>" +#define TTH_ITAL1 "<i>" +#define TTH_ITAL2 "</i>" +#define TTH_ITALO "<i>" +#define TTH_ITALC "</i>" +#define TTH_TT1 "<tt>" +#define TTH_TT2 "</tt>" +#define TTH_TTO "<tt>" +#define TTH_TTC "</tt>" +#define TTH_UNDL1 "<u>" +#define TTH_UNDL2 "</u>" +#define TTH_NORM1 (tth_istyle&1 ? "<span class=\"roman\">" : "") +#define TTH_NORM2 (tth_istyle&1 ? "</span>" : "") +#define TTH_HELV1 "<span style=\"font-family:helvetica\">" +#define TTH_HELV2 "</span>" +/* #define TTH_FONTCANCEL "</i></b></tt>" Trying a less drastic approach */ +#define TTH_FONTCANCEL "</b>" +#define TTH_DAG "†" +#define TTH_DDAG "‡" + +#define TTH_OA1 (tth_istyle&1 ? "<div class=\"comp\">" : "") +#define TTH_OA2 (tth_istyle&1 ? "<br /></div>\n<div class=\"norm\">" : "<br />") +/* The comb bottom style is messed up by differences between NS and gecko. + The margin bottom does not seem to matter. Even uncompressed accents + are misaligned in Gecko. This is a font scaling problem.*/ +#define TTH_OA3 (tth_istyle&1 ? "</div>\n<div class=\"comb\"> </div>\n" : " <br />") +#define TTH_OA4 (tth_istyle&1 ? "\n<div class=\"comb\"> </div>\n" :" <br />") +#define TTH_OA5 (tth_istyle&1 ? "\n<div class=\"norm\">" : "") +#define TTH_STYLE ((tth_debug&2) ? " <style type=\"text/css\"><!--\n\ + td div.comp { margin-top: -0.6ex; margin-bottom: -1ex; background: yellow;}\n\ + td div.comb { margin-top: -0.7ex; margin-bottom: -.6ex; background: yellow;}\n\ + td div.hrcomp { line-height: 0.9; margin-top: -0.8ex; margin-bottom: -1ex; background: yellow;}\n\ + td div.norm {line-height:normal; background: cyan;} \n\ + span.roman {font-family: serif; font-style: normal; font-weight: normal;} \n\ + span.overacc2 {position: relative; left: .8em; top: -1.2ex;}\n\ + span.overacc1 {position: relative; left: .6em; top: -1.2ex;} --></style>\n"\ + : " <style type=\"text/css\"><!--\n\ + td div.comp { margin-top: -0.6ex; margin-bottom: -1ex;}\n\ + td div.comb { margin-top: -0.6ex; margin-bottom: -.6ex;}\n\ + td div.hrcomp { line-height: 0.9; margin-top: -0.8ex; margin-bottom: -1ex;}\n\ + td div.norm {line-height:normal;}\n\ + span.roman {font-family: serif; font-style: normal; font-weight: normal;} \n\ + span.overacc2 {position: relative; left: .8em; top: -1.2ex;}\n\ + span.overacc1 {position: relative; left: .6em; top: -1.2ex;} --></style>\n") + +#define TTH_SIZESTYLE " <style type=\"text/css\"><!--\n\ + .tiny {font-size:30%;}\n\ + .scriptsize {font-size:xx-small;}\n\ + .footnotesize {font-size:x-small;}\n\ + .smaller {font-size:smaller;}\n\ + .small {font-size:small;}\n\ + .normalsize {font-size:medium;}\n\ + .large {font-size:large;}\n\ + .larger {font-size:x-large;}\n\ + .largerstill {font-size:xx-large;}\n\ + .huge {font-size:300%;}\n\ + --></style>\n" + + +#define TTH_MATHS(chr) strcat(eqstr,TTH_SYMBOL);\ + strcat(eqstr,TTH_SYMPT(chr)); strcat(eqstr,TTH_SYMENDN); +#define TTH_MATHI(icr) chr1[0]=icr;TTH_MATHS(chr1); +#define TTH_MATHC(chr) strcat(eqstr,chr); +#define TTH_COMPLEX ( (strcspn(eqstr,"&+-/") < strlen(eqstr)) || (strstr(eqstr,"\\pm") != NULL) || (strstr(eqstr,"\\mp") != NULL)) + /* +#define TTH_P_STYLE " <style type=\"text/css\"><!-- div.p { margin-top: 7pt;}--></style>\n" + */ +#define TTH_P_STYLE " <style type=\"text/css\"> div.p { margin-top: 7pt;}</style>\n" +/* #define TTH_PAR_ACTION if(tth_htmlstyle&2){\ */ +/* TTH_OUTPUT("\n<div class=\"p\"></div>\n");}\ */ +/* else{TTH_OUTPUT("\n<p>\n");}horizmode=0; */ +/* The comment is to fool tidy into thinking it's not empty*/ +#define TTH_PAR_ACTION TTH_OUTPUT("\n<div class=\"p\"><!----></div>\n");horizmode=0; + +#define TTH_CLEAR "<br clear=\"all\" />" +#define TTH_LIMITOP(icr) chr1[0]=icr;if(eqclose >tth_flev-1){TTH_MATHI(icr);}else{\ + oa_removes=0;\ + strcat(eqstr,TTH_CELL3);\ + strcpy(eqlimited,chr1);\ + if(levhgt[eqclose] == 1)levhgt[eqclose]=2;\ + if(bracecount){\ + fprintf(stderr,"****Internal Error! Bracecount nonzero in limitop.\n");\ + bracecount=0;}\ + yy_push_state(getsubp);} +#define TTH_OUTPUT(chr) if(eqdepth){strcat(eqstr,chr);}else{fprintf(tth_fdout,"%s",chr);} +#define TTH_OUTPUTH(chr) if(eqdepth){strcat(eqstr,chr);}else{fprintf(tth_fdout,"%s",chr);}horizmode=1; +#define TTH_CLOSEGROUP TTH_OUTPUT(closing) +#define TTH_HGT 12 +#define TTH_BOXCODE "<span style=\"font-size:x-small\"><sup>[<u>¯</u>]</sup></span>" +#define TTH_HBAR "ħ" +#define TTH_TEXTBOX1 "" +#define TTH_TEXTBOX2 "" + /* Tabular variable markup */ +#define TTH_TRO "\n<tr>" +#define TTH_TRC "</tr>" +#define TTH_TABC "</table>\n" +#define TTH_TABB "<table border=\"1\" class=\"tabular\">" +#define TTH_TABO "<table class=\"tabular\">" +#define TTH_TRTD "<tr><td></td></tr>" +#define TTH_MULSTART "<td colspan=\"%d\"%s>" +#define TTH_TABNOAL "\n<tr><td colspan=\"%d\">" +#define TTH_TABNOAL2 "\n</tr></td>" +#define TTH_MULSPAN "<td align=\"center\" colspan=\"%d\">" +#define TTH_TDVAR "<td%s>" +#define TTH_TABRT " align=\"right\"" +#define TTH_TABLT " align=\"left\"" +#define TTH_TABCT " align=\"center\"" + + /* This was the old doctype. Reports are that on Windows gecko recognizes + symbol fonts for a doctype of 40 but not 401. So keep to 40*/ +#define TTH_DOCTYPE4 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"\n \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html>" +#define TTH_DOCTYPE41 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>" +#define TTH_DOCXML "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">" +#define TTH_DOCTYPE (tth_htmlstyle&2 ? TTH_DOCXML : TTH_DOCTYPE4 ) +#define TTH_GENERATOR (!(tth_htmlstyle&3) ? "\n<meta name=\"GENERATOR\" content=\"Tt%s %s\">\n" : ( tth_htmlstyle&2 ? "\n<head>\n<meta name=\"GENERATOR\" content=\"Tt%s %s\" />\n" : "\n<head>\n<meta name=\"GENERATOR\" content=\"Tt%s %s\">\n") ) +#define TTH_ENCODING (!tth_unicode ? (tth_htmlstyle&2 ?"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n":"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\n") : "") + + + +#define TTH_MIME_HEAD "MIME-Version: 1.0\nContent-Type: MULTIPART/MIXED; BOUNDARY=\"1293058819-1213484446-873576042\"\n\n--1293058819-1213484446-873576042\nContent-Type: TEXT/HTML; charset=iso-8859-1; name=\"index.html\"\n\n" /*sf*/ +#define TTH_MIME_DIVIDE "\n--1293058819-1213484446-873576042\nContent-Type: TEXT/HTML; charset=iso-8859-1; name=\"%s\"\n\n" /*sf*/ + + +#define TTH_DO_MACRO *(yytext+strcspn(yytext," "))=0;\ + ind=indexkey(yytext,keys,&nkeys); \ + if(horizmode) horizmode=1;\ + if(ind != -1) {\ + jargmax=nargs[ind];\ + chdef=defs[ind];\ + chopt=optargs[ind];\ + if(optargs[ind]) lopt=1; else lopt=0;\ + *dupstore=0;\ + if( jargmax == 0){\ + jarg=1;\ + if(tth_debug&8)fprintf(stderr,"Using definition %s %d= %s\n",yytext,ind,chdef);\ + TTH_PUSH_BUFF(1);\ + yy_scan_string(chdef);\ + yy_push_state(psub);\ + }else if(jargmax >0){\ + jarg=1;\ + if(tth_debug&8) fprintf(stderr,"Getting arguments of %s\n",yytext);\ + bracecount=-1;\ + if(lopt) yy_push_state(optdetect);\ + else{yy_push_state(macarg);yy_push_state(embracetok);}\ + }else{\ + if(tth_debug&8)fprintf(stderr,"Using Delimited Definition:%s\n",yytext);\ + chscratch=defs[ind-1];\ + chs2=chscratch;\ + *dupstore2=0;\ + jarg=0;\ + yy_push_state(delimint);whitespace=0;\ + horizmode=1;\ + }\ + } + +#define TTH_CHECK_LENGTH js2=0;\ + if(strlen(dupstore) > 9*TTH_DLEN/10 ){chs2=dupstore;js2=1;}\ + else if(strlen(defstore) > 9*TTH_DLEN/10 ){chs2=defstore;js2=1;}\ + else if(strlen(psubstore) > 9*TTH_DLEN/10 ){chs2=psubstore;js2=1;}\ + else if(strlen(dupstore2) > 18*TTH_DLEN/10 ){chs2=dupstore2;js2=1;}\ + if(js2){ *(chs2+200)=0;fprintf(stderr,\ + "\n**** Error: FATAL. Exceeding allowed string length. Line %d. Runaway argument?\n String starts:%s ...\n",tth_num_lines,chs2);\ + fprintf(stderr," Possible cause: Use of macro %d, %s\n",ind,keys[ind]);\ + TTH_EXIT(1);} + +#define TTH_CCAT(chr1,chr2) if(strlen(chr1)+strlen(chr2) >= TTH_CHARLEN)\ + {fprintf(stderr,\ +"**** Character overflow; catenation of %s prevented, line %d\n%s",\ +chr2,tth_num_lines,\ +" Check for alternating font changes. Use grouping instead.\n\ + If necessary, increase the value of TTH_CHARLEN and recompile TtH.\n");}\ +else strcat(chr1,chr2); + +#define TTH_CCPY(chr1,chr2) if(strlen(chr2) >= TTH_CHARLEN)\ + {fprintf(stderr,\ +"**** Character overflow; strcpy of %s prevented, line %d\n",chr2,tth_num_lines);}\ +else strcpy(chr1,chr2); + +#define TTH_PRECLOSE(chr1) strcpy(preclose,closing);TTH_CCPY(closing,chr1);\ + TTH_CCAT(closing,preclose); + + /* +#define TTH_PRETEXCLOSE(chr1) strcpy(preclose,tth_texclose[tth_push_depth]);\ + TTH_CCPY(tth_texclose[tth_push_depth],chr1);\ + TTH_CCAT(tth_texclose[tth_push_depth],preclose); + */ +#define TTH_PRETEXCLOSE(chr1) strcpy(scratchstring,tth_texclose[tth_push_depth]);\ + TTH_CCPY(tth_texclose[tth_push_depth],chr1);\ + TTH_CCAT(tth_texclose[tth_push_depth],scratchstring);*scratchstring=0; + +#define TTH_SWAP(chr1) strcpy(swapchar,chr1);yy_push_state(swaparg);\ + yy_push_state(embracetok); + /* Do an explicitly defined tex function of argno arguments (>0) */ +#define TTH_TEX_FN(chr1,argno) chdef=chr1;jargmax=argno;\ + jarg=1;bracecount=-1;lopt=0;\ + yy_push_state(macarg);yy_push_state(embracetok); + /* Do an explicitly defined tex function of argno arguments (>1) + including an optional argument. */ +#define TTH_TEX_FN_OPT(chr1,argno,defaultopt) chdef=chr1;jargmax=argno;\ + jarg=1;bracecount=-1;lopt=1;chopt=defaultopt;\ + yy_push_state(optdetect); + +#define TTH_PUSH_CLOSING tth_key[tth_push_depth]=nkeys;tth_push(closing) +#define TTH_POP_CLOSING if(tth_debug&16)fprintf(stderr,"nkeys:%d,tth_key:%d\n",nkeys,tth_key[tth_push_depth-1]);\ + if(nkeys-tth_key[tth_push_depth-1])\ + tth_undefine(keys,&nkeys,tth_key[tth_push_depth-1],lkeys);tth_pop(closing); + +#define TTH_HALCODE(chr1) ((*chr1=='c') ? TTH_TABCT :\ +( (*chr1=='r')? TTH_TABRT :\ +( (*chr1=='p')? (\ + (strcpy(scrstring," width=\"")!=NULL &&\ + strncat(scrstring,chr1+2,strlen(chr1+2)-1)!=NULL &&\ + strcat(scrstring,"\"")!=NULL) ? scrstring: "")\ + : TTH_TABLT))) + + + /* fprintf(stderr,"%s-%s[%d%d]",precell,yytext,jshal,jstal);\ + if(jshal==1){TTH_CCAT(precell,"{");}\ + */ +#define TTH_HALACT if(tth_debug&32)\ + fprintf(stderr,"+%s[%d%d]",yytext,jshal,jstal);\ + if(jshal>1){jshal--;}else{\ + if(jshal==0){sprintf(scratchstring,TTH_TDVAR,TTH_HALCODE(yytext));\ + TTH_OUTPUT(tdalign);*tdalign=0;\ + TTH_OUTPUT(scratchstring);\ + if(eqdepth){TTH_OUTPUT(TTH_EQ5);}\ + }\ + yy_switch_to_buffer(include_stack[--tth_stack_ptr] );\ + yy_pop_state();jshal=0;\ + if(tth_debug&32){fprintf(stderr,"%s",precell);}\ + TTH_SCAN_STRING(precell);*precell=0;} +#define TTH_HALSWITCH {TTH_PUSH_BUFF(0);yy_switch_to_buffer(halbuff);yy_push_state(talign);} + +#define TTH_TEXCLOSE if(*tth_texclose[tth_push_depth-1]){\ + if(tth_debug&8)fprintf(stderr,\ + "Active TEXCLOSE: %s at push_depth %d, eqclose=%d\n", \ + tth_texclose[tth_push_depth-1],tth_push_depth,eqclose); \ + yyless(0);TTH_SCAN_STRING(tth_texclose[tth_push_depth-1]);\ + *tth_texclose[tth_push_depth-1]=0;} + +#define TTH_INC_LINE if(!(tth_stack_ptr||ftntwrap)){\ + if(tth_debug&32)fprintf(stderr," Line increment: numlines=%d yytext=%s",\ + tth_num_lines,yytext);tth_num_lines++;}; +#define TTH_INC_MULTI chs3=yytext;while((chs3=(strstr(chs3,"\n"))?(strstr(chs3,"\n")):(strstr(chs3,"\r")))){chs3++;TTH_INC_LINE}; +#define TTH_EXTRACT_COMMENT \ + if((chscratch=strstr(yytext,"%%tth:"))||(chscratch=strstr(yytext,"%%ttm:"))){\ + TTH_CCPY(scratchstring,chscratch+6);\ + chs2=yytext;\ + while((chs2=strstr(chs2,"\n"))!=NULL&&chs2<=chscratch){\ + TTH_INC_LINE;chs2++;\ + }\ + TTH_SCAN_STRING(scratchstring);\ + }else + + +#define TTH_TINY (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"tiny\">" : "<div class=\"tiny\">") +#define TTH_SCRIPTSIZE (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"scriptsize\">": "<div class=\"scriptsize\">") +#define TTH_FOOTNOTESIZE (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"footnotesize\">": "<div class=\"footnotesize\">") +#define TTH_SMALL (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"small\">": "<div class=\"small\">") +#define TTH_NORMALSIZE (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"normalsize\">": "<div class=\"normalsize\">") +#define TTH_large (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"large\">": "<div class=\"large\">") +#define TTH_Large (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"larger\">": "<div class=\"larger\">") +#define TTH_LARGE (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"largerstill\">": "<div class=\"largerstill\">") +#define TTH_HUGE (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"huge\">": "<div class=\"huge\">") +#define TTH_SIZEEND (((horizmode!=0) || (tth_htmlstyle&4)) ? "</span>" :"</div>") + +#define TTH_SIZEGEN1 "<span style=\"font-size:" +#define TTH_SIZEGEN2 "%\">" +#define TTH_COLOR "\\special{html:<span style=\"color:#%s\">}" +#define TTH_COLOREND "</span>" + /*start executable statements*/ + +tth_flev=tth_flev0; + + + /******************************* RULES *****************************/ + +#line 15710 "lex.yy.c" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 11276 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 45164 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 1148 "tth.lex" +nbuiltins=nkeys;tth_debug=tth_LaTeX-1;fprintf(tth_fdout,"\n"); + YY_BREAK +case 2: +YY_RULE_SETUP +#line 1149 "tth.lex" +nbuiltins=nkeys; bibliogs=0; + YY_BREAK +/* Strip out formating commands. */ +case 3: +YY_RULE_SETUP +#line 1152 "tth.lex" + + YY_BREAK +case 4: +YY_RULE_SETUP +#line 1153 "tth.lex" + + YY_BREAK +case 5: +YY_RULE_SETUP +#line 1154 "tth.lex" + + YY_BREAK +case 6: +YY_RULE_SETUP +#line 1155 "tth.lex" + + YY_BREAK +case 7: +YY_RULE_SETUP +#line 1156 "tth.lex" + + YY_BREAK +case 8: +YY_RULE_SETUP +#line 1157 "tth.lex" + + YY_BREAK +case 9: +YY_RULE_SETUP +#line 1158 "tth.lex" + + YY_BREAK +case 10: +YY_RULE_SETUP +#line 1159 "tth.lex" + + YY_BREAK +case 11: +YY_RULE_SETUP +#line 1160 "tth.lex" + + YY_BREAK +case 12: +YY_RULE_SETUP +#line 1161 "tth.lex" + + YY_BREAK +case 13: +YY_RULE_SETUP +#line 1162 "tth.lex" + + YY_BREAK +case 14: +YY_RULE_SETUP +#line 1163 "tth.lex" + + YY_BREAK +case 15: +YY_RULE_SETUP +#line 1164 "tth.lex" + + YY_BREAK +case 16: +#line 1166 "tth.lex" +case 17: +YY_RULE_SETUP +#line 1166 "tth.lex" +yy_push_state(matchbrace); + YY_BREAK +/* external macro expansion in notags.*/ +case 18: +YY_RULE_SETUP +#line 1168 "tth.lex" +{ + if(tth_titlestate&1){ + TTH_DO_MACRO else{TTH_OUTPUT(yytext);} + }else{ + TTH_OUTPUT(yytext); + } +} + YY_BREAK +case 19: +YY_RULE_SETUP +#line 1175 "tth.lex" +TTH_OUTPUT(yytext+1); + YY_BREAK +case 20: +YY_RULE_SETUP +#line 1176 "tth.lex" +{ + if(tth_titlestate&2){ + tth_tagpurge=1; + TTH_SCAN_STRING("\\tth_notageq"); + } +} + YY_BREAK +case 21: +YY_RULE_SETUP +#line 1183 "tth.lex" +{ + if(tth_titlestate){ + yy_push_state(notags); + }else{ + yy_push_state(verbatim); + } + TTH_PUSH_CLOSING; +} + YY_BREAK +case 22: +YY_RULE_SETUP +#line 1191 "tth.lex" +{ /* Defined as a latex command with optional arg */ + verbinput=1; + TTH_TEX_FN_OPT("\\tth_verbinput #2 \\tth_endverbinput#tthdrop2",2,""); +} + YY_BREAK +case 23: +YY_RULE_SETUP +#line 1195 "tth.lex" +{ + fprintf(tth_fdout,"\n<pre>"); yy_push_state(verbatim); /*begin verbatim*/ + TTH_PUSH_CLOSING; TTH_CCPY(closing,"</pre>"); + yy_push_state(inputfile); + yy_push_state(removespace); +} + YY_BREAK +case 24: +#line 1203 "tth.lex" +case 25: +YY_RULE_SETUP +#line 1203 "tth.lex" +TTH_TEX_FN("\\tthexpandafter#tthdrop1",1); + YY_BREAK +case 26: +YY_RULE_SETUP +#line 1204 "tth.lex" +{ + if(horizmode) horizmode=1; + js2=indexkey("#1",margkeys,&margmax); + yy_pop_state(); + strcpy(exptex,margs[js2]); + rmdef(margkeys,margs,&margmax); + if(tth_debug&8)fprintf(stderr,"Expanding after %s\n",exptex); + *expchar=0; + yy_push_state(tokexp); /* expandafter not using embracing */ + } + YY_BREAK +case 27: +#line 1215 "tth.lex" +case 28: +YY_RULE_SETUP +#line 1215 "tth.lex" +yy_push_state(csname);strcpy(scratchstring," "); + YY_BREAK +case 29: +YY_RULE_SETUP +#line 1216 "tth.lex" +strcat(scratchstring,yytext); + YY_BREAK +case 30: +/* rule 30 can match eol */ +YY_RULE_SETUP +#line 1217 "tth.lex" +{ + fprintf(stderr,"**** Error: line end in csname. Syntax error? Line %d\n",tth_num_lines); + TTH_SCAN_STRING("\\endcsname"); +} + YY_BREAK +case 31: +YY_RULE_SETUP +#line 1221 "tth.lex" +{ + yy_pop_state(); + chscratch=scratchstring+strspn(scratchstring," \t")-1; + *chscratch='\\'; + if(tth_debug&8)fprintf(stderr,"Rescanning \\csname:%s\n",chscratch); + TTH_SCAN_STRING(chscratch); +} + YY_BREAK +/**** ********** Non-standard functions. ******************/ +/* Put any personal rules here unless there is some special reason. */ +case 32: +YY_RULE_SETUP +#line 1231 "tth.lex" +{ + TTH_OUTPUT(TTH_Large);TTH_PRECLOSE(TTH_SIZEEND); + TTH_OUTPUT(TTH_BOLD1);TTH_PRECLOSE(TTH_BOLD2); +} + YY_BREAK +case 33: +/* rule 33 can match eol */ +YY_RULE_SETUP +#line 1235 "tth.lex" +{ + TTH_INC_MULTI; + TTH_SCAN_STRING("\\epsfbox"); +} + YY_BREAK +case 34: +#line 1240 "tth.lex" +case 35: +#line 1241 "tth.lex" +/* \\epsfbox TTH_TEX_FN("\\tthpsfile#tthdrop1",1); + This code needs to be changed to behave like \leavevmode\hbox + in that it stacks boxes horizontally. + A problem is that to prevent h/vbox from breaking lines unnecessarily in HTML + we start a new table only if we are NOT in horizmode. This is the opposite + of TeX's behaviour. However, a \vbox ought to do it.*/ +case 36: +YY_RULE_SETUP +#line 1247 "tth.lex" +{ + { + if(tth_debug&32)fprintf(stderr,"Calling tthpsfile %s\n",yytext); + TTH_TEX_FN("\\tthpsfile#tthdrop1",1); + } +} + YY_BREAK +case 37: +YY_RULE_SETUP +#line 1253 "tth.lex" +TTH_TEX_FN("\\tthpsfile#tthdrop1",1); + YY_BREAK +case 38: +YY_RULE_SETUP +#line 1254 "tth.lex" +{ + /*if(horizmode)*/ horizmode=1; + js2=indexkey("#1",margkeys,&margmax); + TTH_CCPY(scratchstring,margs[js2]); + yy_pop_state(); + rmdef(margkeys,margs,&margmax); + if(tth_debug&32)fprintf(stderr,"Figure inclusion %s\n",scratchstring); + if((chscratch=strstr(scratchstring,"file=")) != NULL){ + chscratch=chscratch+5; + }else if((chscratch=strstr(scratchstring,"figure=")) != NULL){ + chscratch=chscratch+7; + }else{ + chscratch=scratchstring; + } + chscratch=chscratch+strspn(chscratch,"{ "); + *(chscratch+strcspn(chscratch,"},"))=0; /* Terminate at } or ,*/ + tth_epsf(chscratch,tth_epsftype); + } + YY_BREAK +/* Starting State for Constructing head/body and title.*/ +case 39: +YY_RULE_SETUP +#line 1276 "tth.lex" +{ + fprintf(stderr,"Initial HTML output assumed to be the title.\n"); + if(tth_htmlstyle&3)strcat(tth_texclose[tth_push_depth], + "</head>\n<body><div>\n"); + yy_pop_state(); + yyless(0); + } + YY_BREAK +case 40: +/* rule 40 can match eol */ +YY_RULE_SETUP +#line 1283 "tth.lex" +{ + fprintf(stderr,"Initial HTML output including title.\n"); + if(tth_htmlstyle&3)strcat(tth_texclose[tth_push_depth], + "</head>\n<body><div>\n"); + yy_pop_state(); + yyless(0); +} + YY_BREAK +case 41: +YY_RULE_SETUP +#line 1290 "tth.lex" +{ + fprintf(stderr,"Initial HTML output apparently NOT the title terminates head.\n"); + if(tth_htmlstyle&3) {TTH_OUTPUT("</head>\n<body><div>\n")}; + yy_pop_state(); + yyless(0); +} + YY_BREAK +case 42: +YY_RULE_SETUP +#line 1297 "tth.lex" +TTH_TEX_FN_OPT("{\\headline{#2} \\centerheader{1}{{#2}}{align=\"center\"}}#tthdrop2",2,""); + YY_BREAK +case 43: +YY_RULE_SETUP +#line 1299 "tth.lex" +{ + if(!tth_htmlstyle&1){ + TTH_TEX_FN_OPT("{\\headline{#2} \\centerheader{1}{{#2}}{align=\"center\"}}#tthdrop2",2,""); + }else{ + TTH_TEX_FN_OPT("{\\centerheader{1}{{#2}}{align=\"center\"}}#tthdrop2",2,""); + } +} + YY_BREAK +case 44: +YY_RULE_SETUP +#line 1307 "tth.lex" +{ + yy_pop_state(); + if(tth_htmlstyle&3){ + TTH_TEX_FN("{\\special{html:\n<title>} \\begin{notags}#1\\end{verbatim} \\special{html:\n\n

    \n}}#tthdrop1",1); + }else{ + TTH_TEX_FN("{\\special{html:\n} \\begin{notags}#1\\end{verbatim}\\special{html:\n}}#tthdrop1",1); + } +} + YY_BREAK +case 45: +YY_RULE_SETUP +#line 1316 "tth.lex" +if(!tth_htmlstyle&1){ + TTH_TEX_FN("{\\special{html:\n}\\begin{notags}#1\\end{verbatim}\\special{html:\n}}#tthdrop1",1); +}else{ + TTH_TEX_FN("#tthdrop1",1); +} + YY_BREAK +case 46: +YY_RULE_SETUP +#line 1322 "tth.lex" + + YY_BREAK +case 47: +/* rule 47 can match eol */ +YY_RULE_SETUP +#line 1323 "tth.lex" +TTH_INC_LINE; /* Don't put spurious \par s at top.*/ + YY_BREAK +/* Trap some common causes of improper output in titlecheck state. */ +case 48: +#line 1326 "tth.lex" +case 49: +YY_RULE_SETUP +#line 1326 "tth.lex" +{TTH_SCAN_STRING("\\title");} + YY_BREAK +case 50: +#line 1329 "tth.lex" +case 51: +#line 1330 "tth.lex" +case 52: +#line 1331 "tth.lex" +case 53: +#line 1332 "tth.lex" +case 54: +#line 1333 "tth.lex" +case 55: +#line 1334 "tth.lex" +case 56: +#line 1335 "tth.lex" +case 57: +YY_RULE_SETUP +#line 1335 "tth.lex" +{ + sprintf(newcstr,"\\headline{#1}%s{#1}#tthdrop1",yytext); + TTH_TEX_FN(newcstr,1);} + YY_BREAK +case 58: +/* rule 58 can match eol */ +#line 1340 "tth.lex" +case 59: +/* rule 59 can match eol */ +#line 1341 "tth.lex" +case 60: +/* rule 60 can match eol */ +#line 1342 "tth.lex" +case 61: +/* rule 61 can match eol */ +#line 1343 "tth.lex" +case 62: +/* rule 62 can match eol */ +#line 1344 "tth.lex" +case 63: +/* rule 63 can match eol */ +#line 1345 "tth.lex" +case 64: +/* rule 64 can match eol */ +#line 1346 "tth.lex" +case 65: +/* rule 65 can match eol */ +#line 1347 "tth.lex" +case 66: +/* rule 66 can match eol */ +#line 1348 "tth.lex" +case 67: +/* rule 67 can match eol */ +YY_RULE_SETUP +#line 1348 "tth.lex" +{ + fprintf(stderr, + "**** File starts with \"%s\". It can\'t be the HTML title.\n", + yytext); + fprintf(tth_fdout,"\nNo Title\n"); + if(tth_htmlstyle&3)fprintf(tth_fdout,"\n
    \n"); + yy_pop_state(); + yyless(0); + TTH_SCAN_STRING("\\par"); +} + YY_BREAK +/* Things that can't go in the HTML head in strict mode.*/ +case 68: +#line 1360 "tth.lex" +case 69: +#line 1361 "tth.lex" +case 70: +#line 1362 "tth.lex" +case 71: +#line 1363 "tth.lex" +case 72: +#line 1364 "tth.lex" +case 73: +#line 1365 "tth.lex" +case 74: +#line 1366 "tth.lex" +case 75: +#line 1367 "tth.lex" +case 76: +YY_RULE_SETUP +#line 1367 "tth.lex" +{ + fprintf(stderr, + "**** File starts with \"%s\". It can\'t be in strict HTML heads.\n", + yytext); + fprintf(tth_fdout,"\nNo Title\n"); + if(tth_htmlstyle&3)fprintf(tth_fdout,"\n
    \n"); + yy_pop_state(); + yyless(0); + TTH_SCAN_STRING("\\par"); +} + YY_BREAK +/* Make the title the first one to five plain words. */ +case 77: +YY_RULE_SETUP +#line 1378 "tth.lex" +{ + fprintf(stderr,"HTML Title constructed as:%s\n",yytext); + fprintf(tth_fdout,"\n%s\n",yytext); + if(tth_htmlstyle&3)fprintf(tth_fdout,"\n
    \n"); + yy_pop_state(); + yyless(0); + TTH_SCAN_STRING("\\par"); +} + YY_BREAK +case 78: +YY_RULE_SETUP +#line 1386 "tth.lex" +{ + fprintf(stderr,"Pagecolor in titlecheck.\n"); + if(tth_htmlstyle&3)fprintf(tth_fdout,"No title\n"); + yy_pop_state();/* titlecheck terminated */ + TTH_TEX_FN_OPT("{\\edef\\tthexpcol{\\tthpageColor{#2}}\\tthexpcol}#tthdrop2",2,""); +} + YY_BREAK +case 79: +YY_RULE_SETUP +#line 1393 "tth.lex" +{ /*tth_num_lines--;*/ + TTH_TEX_FN("{\\special{html:\n}#2\\special{html:}}#tthdrop2",2); } + YY_BREAK +case 80: +YY_RULE_SETUP +#line 1395 "tth.lex" +TTH_TEX_FN("{\\special{html:\n}#2 \\special{html:}}#tthdrop3",3);/* tth_num_lines--;*/ + YY_BREAK +case 81: +#line 1398 "tth.lex" +case 82: +YY_RULE_SETUP +#line 1398 "tth.lex" +{ + TTH_PUSH_CLOSING;yy_push_state(rawgroup); + } + YY_BREAK +case 83: +YY_RULE_SETUP +#line 1402 "tth.lex" +TTH_SCAN_STRING("\\expandafter\\tthhref\\tthescape"); + YY_BREAK +case 84: +YY_RULE_SETUP +#line 1403 "tth.lex" +{ + TTH_TEX_FN("{\\special{html:}#2\\special{html:}}#tthdrop2",2); +} + YY_BREAK +/* Get the following brace group and escape special chars, rescan */ +case 85: +#line 1408 "tth.lex" +case 86: +YY_RULE_SETUP +#line 1408 "tth.lex" +{ + *dupstore=0; + *argchar=0; + storetype=5; /* Rescan one copy argchar postfixed. */ + yy_push_state(escgroup); + bracecount=-1; + yy_push_state(embracetok); /* Make sure we have a braced argument */ +} + YY_BREAK +case 87: +#line 1417 "tth.lex" +case 88: +YY_RULE_SETUP +#line 1417 "tth.lex" +{ + *dupstore=0; + *argchar=0; + yy_push_state(urlgroup); + storetype=99; /* Just leave in dupgroup to be dealt with by prior state*/ + yy_push_state(uncommentgroup); + /*yy_push_state(escgroup);*/ + bracecount=-1; + yy_push_state(embracetok); /* Make sure we have a braced argument */ +} + YY_BREAK +case 89: +/* rule 89 can match eol */ +YY_RULE_SETUP +#line 1428 "tth.lex" +{ + yyless(0); + yy_pop_state(); + /*remove the closing brace*/ + *(dupstore+strlen(dupstore)-1)=0; + if(strcspn(dupstore,"\\&")!=0){ + /* Even the href can't contain an ampersand literally so we need to + translate it.*/ + strcpy(dupstore2,dupstore); + *dupstore=0; + i=0; + while(*(dupstore2+i)!=0){ + if(*(dupstore2+i)=='&'){ + if(*(dupstore+strlen(dupstore)-1)=='\\') + *(dupstore+strlen(dupstore)-1)=0;/*Remove prior */ + strncat(dupstore,"&",5); + }else{ + strncat(dupstore,(dupstore2+i),1); + } + i++; + } + } + sprintf(dupstore2, + "\\special{html:}\\verb%c%s%c\\special{html:}" + ,dupstore+1,6,dupstore+1,6); + TTH_SCAN_STRING(dupstore2); + *dupstore=0; + *dupstore2=0; + } + YY_BREAK +/* +.|\n { + yyless(0); + yy_pop_state(); + strcpy(dupstore2,"\\href");strcat(dupstore2,dupstore); + sprintf(dupstore2+strlen(dupstore2),"{\\verb%c%s",6,dupstore+1); + sprintf(dupstore2+strlen(dupstore2)-1,"%c}",6); + if(tth_debug&8)fprintf(stderr,"urlgroup rescanning:%s\n",dupstore2); + TTH_SCAN_STRING(dupstore2); + *dupstore=0; + *dupstore2=0; + }*/ +/* Colordvi commands, won't work in equations. Convert to \color */ +case 90: +#line 1473 "tth.lex" +case 91: +#line 1474 "tth.lex" +case 92: +#line 1475 "tth.lex" +case 93: +#line 1476 "tth.lex" +case 94: +#line 1477 "tth.lex" +case 95: +#line 1478 "tth.lex" +case 96: +#line 1479 "tth.lex" +case 97: +YY_RULE_SETUP +#line 1479 "tth.lex" +{ + strcpy(scratchstring,yytext+1); + /**scratchstring=tolower(*scratchstring);*/ + sprintf(scrstring,"\\color{%s}",scratchstring); + TTH_SWAP(scrstring); +} + YY_BREAK +case 98: +/* rule 98 can match eol */ +YY_RULE_SETUP +#line 1485 "tth.lex" +TTH_INC_MULTI;fprintf(tth_fdout,","); + YY_BREAK +/************************ Comment removal ******************/ +/* Many needed so that e.g. inside a comment does not break stuff */ +case 99: +/* rule 99 can match eol */ +#line 1490 "tth.lex" +case 100: +/* rule 100 can match eol */ +#line 1491 "tth.lex" +case 101: +/* rule 101 can match eol */ +YY_RULE_SETUP +#line 1491 "tth.lex" +{ + TTH_INC_LINE; + if(strstr(yytext,"%%tth:")==yytext){TTH_SCAN_STRING(yytext+6);} + else if(strstr(yytext,"%%ttm:")==yytext){TTH_SCAN_STRING(yytext+6);} + else{ + if(tth_debug&64) fprintf(stderr,"Comment:%s",yytext); + } + } + YY_BREAK +case 102: +/* rule 102 can match eol */ +YY_RULE_SETUP +#line 1500 "tth.lex" +{ + TTH_INC_LINE; + if(strstr(yytext,"%%tth:")==yytext){TTH_SCAN_STRING(yytext+6);} + else if(strstr(yytext,"%%ttm:")==yytext){TTH_SCAN_STRING(yytext+6);} + else{ + if(tth_debug&64) fprintf(stderr,"Comment:%s",yytext); + if(horizmode) horizmode=-1; + yy_push_state(parcheck); + } + } + YY_BREAK +/* escgroup explicitly ignores comment removal and other special chars.*/ +case 103: +YY_RULE_SETUP +#line 1512 "tth.lex" +strcat(dupstore,"\\");strcat(dupstore,yytext); + YY_BREAK +/* Don't escape things already escaped*/ +case 104: +YY_RULE_SETUP +#line 1514 "tth.lex" +strcat(dupstore,yytext); + YY_BREAK +/*********************************************************************/ +/* Date information needs to be before conditionals. */ +case 105: +YY_RULE_SETUP +#line 1517 "tth.lex" +{ + time(&thetime); + strcpy(scratchstring,ctime(&thetime)); + strcpy(scratchstring+10,", "); + TTH_OUTPUT(scratchstring+4); + TTH_OUTPUTH(scratchstring+20); + } + YY_BREAK +/* Act as if these are counters */ +case 106: +YY_RULE_SETUP +#line 1526 "tth.lex" +{ + yyless(0); + TTH_SCAN_STRING("\\number"); +} + YY_BREAK +case 107: +YY_RULE_SETUP +#line 1531 "tth.lex" +{ + time(&thetime); + timestruct=*localtime(&thetime); + timestruct.tm_year= timestruct.tm_year+1900; + sprintf(scrstring,"%d",timestruct.tm_year); + /* Remove space afterwards*/ + TTH_PUSH_BUFF(1);yy_scan_string(scrstring); + yy_pop_state(); +} + YY_BREAK +case 108: +YY_RULE_SETUP +#line 1540 "tth.lex" +{ + time(&thetime); + timestruct=*localtime(&thetime); + sprintf(scrstring,"%d",timestruct.tm_mon+1); + TTH_PUSH_BUFF(1);yy_scan_string(scrstring); + yy_pop_state(); +} + YY_BREAK +case 109: +YY_RULE_SETUP +#line 1547 "tth.lex" +{ + time(&thetime); + timestruct=*localtime(&thetime); + sprintf(scrstring,"%d",timestruct.tm_mday); + TTH_PUSH_BUFF(1);yy_scan_string(scrstring); + yy_pop_state(); +} + YY_BREAK +/***********************************************************************/ +/* Conditionals*/ +case 110: +YY_RULE_SETUP +#line 1557 "tth.lex" +{ + strcpy(scratchstring,strstr(yytext,"\\if")+3); + sprintf(scrstring,"\\def\\if%s{\\iffalse}\\def\\%sfalse{\\%dfalse}\\def\\%strue{\\%dtrue}",scratchstring,scratchstring,nkeys,scratchstring,nkeys); + TTH_SCAN_STRING(scrstring); +} + YY_BREAK +case 111: +YY_RULE_SETUP +#line 1562 "tth.lex" +{ + sscanf(yytext+1,"%d",&js2); + strncpy(defs[js2]+3,"false",5); +} + YY_BREAK +case 112: +YY_RULE_SETUP +#line 1566 "tth.lex" +{ + sscanf(yytext+1,"%d",&js2); + strncpy(defs[js2]+3,"true ",5); +} + YY_BREAK +case 113: +#line 1572 "tth.lex" +case 114: +#line 1573 "tth.lex" +case 115: +#line 1574 "tth.lex" +case 116: +YY_RULE_SETUP +#line 1574 "tth.lex" +if(tth_debug&1024)fprintf(stderr,"Starting %s.\n",yytext); + YY_BREAK +case 117: +YY_RULE_SETUP +#line 1576 "tth.lex" + + YY_BREAK +case 118: +#line 1578 "tth.lex" +case 119: +YY_RULE_SETUP +#line 1578 "tth.lex" +{ + yy_push_state(innerfalse); + if(tth_debug&1024)fprintf(stderr,"Starting inner \\if in falsetext.\n"); +} + YY_BREAK +case 120: +#line 1583 "tth.lex" +case 121: +YY_RULE_SETUP +#line 1583 "tth.lex" + + YY_BREAK +case 122: +YY_RULE_SETUP +#line 1584 "tth.lex" +{ + yy_push_state(falsetext); + if(tth_debug&1024)fprintf(stderr,"Starting \\iffalse.\n"); +} + YY_BREAK +case 123: +YY_RULE_SETUP +#line 1588 "tth.lex" +if(horizmode) yy_push_state(falsetext); + YY_BREAK +case 124: +YY_RULE_SETUP +#line 1589 "tth.lex" +if(!horizmode) yy_push_state(falsetext); + YY_BREAK +case 125: +#line 1592 "tth.lex" +case 126: +YY_RULE_SETUP +#line 1592 "tth.lex" +{ + if(tth_debug&1024)fprintf(stderr,"Ending true clause \\if\\fi.\n"); + if(horizmode)horizmode=1; +} + YY_BREAK +case 127: +#line 1597 "tth.lex" +case 128: +YY_RULE_SETUP +#line 1597 "tth.lex" +{ + if(tth_debug&1024)fprintf(stderr,"Ending true clause \\if\\else\n"); + yy_push_state(falsetext); + if(horizmode)horizmode=1; +} + YY_BREAK +case 129: +YY_RULE_SETUP +#line 1602 "tth.lex" +{ + yy_pop_state(); + if(tth_debug&1024)fprintf(stderr,"Ending false clause \\if\\else.\n"); + if(horizmode)horizmode=1; + yy_push_state(removespace); +} + YY_BREAK +case 130: +YY_RULE_SETUP +#line 1608 "tth.lex" +/* Don't misinterpret other commands. */ + YY_BREAK +case 131: +YY_RULE_SETUP +#line 1609 "tth.lex" +{ + yy_pop_state(); + if(tth_debug&1024)fprintf(stderr,"Ending false clause \\if\\fi.\n"); + if(horizmode)horizmode=1; +} + YY_BREAK +case 132: +YY_RULE_SETUP +#line 1614 "tth.lex" + + YY_BREAK +case 133: +YY_RULE_SETUP +#line 1616 "tth.lex" +yy_push_state(innerfalse); + YY_BREAK +case 134: +YY_RULE_SETUP +#line 1617 "tth.lex" +yy_pop_state(); if(tth_debug&1024)fprintf(stderr,"\\or "); + YY_BREAK +case 135: +YY_RULE_SETUP +#line 1618 "tth.lex" +yy_push_state(innerfalse); /* Ignore nested ifs */ + YY_BREAK +case 136: +YY_RULE_SETUP +#line 1619 "tth.lex" +{ + yy_pop_state(); if(tth_debug&1024)fprintf(stderr,"#tthorbreak\n"); + TTH_SCAN_STRING(yytext); + } + YY_BREAK +case 137: +#line 1624 "tth.lex" +case 138: +YY_RULE_SETUP +#line 1624 "tth.lex" +{ + if(tth_debug&1024)fprintf(stderr,"%s ortext\n",yytext); + TTH_SCAN_STRING("#tthorbreak");} + YY_BREAK +case 139: +YY_RULE_SETUP +#line 1627 "tth.lex" +/*fprintf(stderr,"ortext ");*/ + YY_BREAK +case 140: +YY_RULE_SETUP +#line 1629 "tth.lex" +{ + yy_pop_state(); if(tth_debug&1024)fprintf(stderr,"#orbreak end\n");} + YY_BREAK +case 141: +YY_RULE_SETUP +#line 1631 "tth.lex" +{ + yyless(0); + yy_pop_state(); if(tth_debug&1024)fprintf(stderr,"Orbreak exit\n");} + YY_BREAK +case 142: +#line 1636 "tth.lex" +case 143: +#line 1637 "tth.lex" +case 144: +#line 1638 "tth.lex" +case 145: +#line 1639 "tth.lex" +case 146: +#line 1640 "tth.lex" +case 147: +YY_RULE_SETUP +#line 1640 "tth.lex" +{ + yy_push_state(getifnum);strcpy(strif,yytext);yy_push_state(removespace);} + YY_BREAK +case 148: +#line 1643 "tth.lex" +case 149: +YY_RULE_SETUP +#line 1643 "tth.lex" +yy_push_state(number);jscratch=0; + YY_BREAK +case 150: +YY_RULE_SETUP +#line 1644 "tth.lex" +TTH_CCAT(strif,yytext); + YY_BREAK +case 151: +YY_RULE_SETUP +#line 1645 "tth.lex" +{ + TTH_DO_MACRO + else if( (ind=indexkey(yytext,countkeys,&ncounters)) != -1) { + if(tth_debug&1024)fprintf(stderr,"If Counter %d, %s\n",ind,countkeys[ind]); + sprintf(scratchstring,"%d ",counters[ind]); + TTH_PUSH_BUFF(1);yy_scan_string(scratchstring); /* remove spaces */ + } else { + yyless(0); + TTH_SCAN_STRING("#"); /*Termination Sign*/ + } + } + YY_BREAK +case 152: +YY_RULE_SETUP +#line 1656 "tth.lex" +TTH_CCAT(strif,yytext);yy_push_state(removespace); + YY_BREAK +case 153: +/* rule 153 can match eol */ +YY_RULE_SETUP +#line 1657 "tth.lex" +/*Oct 2001.*/ + YY_BREAK +case 154: +YY_RULE_SETUP +#line 1658 "tth.lex" +{ + yy_pop_state(); + if(*yytext != '#') {yyless(0);} + if(tth_debug&1024)fprintf(stderr,"strif text:%s\n",strif); + chs2=strif+strcspn(strif,"0123456789"); + if(strstr(strif,"\\ifnum")){ + chscratch=chs2+strcspn(chs2,"<>="); + sscanf(chs2,"%d",&jscratch); + sscanf(chscratch+1,"%d",&js2); + switch(*chscratch){ + case '<': if(!(jscratch': if(!(jscratch>js2)) yy_push_state(falsetext);break; + } + }else if(strstr(strif,"\\ifodd")){ + sscanf(chs2,"%d",&jscratch); + if(!(jscratch & 1)) yy_push_state(falsetext);break; /* even */ + }else if(strstr(strif,"\\ifcase")){ + sscanf(chs2,"%d",&jscratch); + yy_push_state(orbreak); + for(js2=1;js2<=jscratch;js2++) yy_push_state(ortext); + } +} + YY_BREAK +case 155: +#line 1683 "tth.lex" +case 156: +YY_RULE_SETUP +#line 1683 "tth.lex" +yy_push_state(getiftok);*strif=0; yy_push_state(removespace); + YY_BREAK +case 157: +YY_RULE_SETUP +#line 1684 "tth.lex" +{ + TTH_DO_MACRO + else{ + if(tth_debug&1024) fprintf(stderr, + "**** Unknown or unexpandable command %s as \\if test token. Line %d\n",yytext,tth_num_lines); + if(strlen(strif) > 1){ + yy_pop_state(); + if(!(strlen(strif)==strlen(yytext) && strstr(strif,yytext))) + yy_push_state(falsetext); + }else strcat(strif,yytext); + } +} + YY_BREAK +case 158: +/* rule 158 can match eol */ +YY_RULE_SETUP +#line 1696 "tth.lex" +{ + if(strcspn(yytext,"\n")==0) TTH_INC_LINE; + if(strlen(strif)){ + yy_pop_state(); + if(!(strlen(strif)==strlen(yytext) && strstr(strif,yytext))) + yy_push_state(falsetext); + }else strcat(strif,yytext); +} + YY_BREAK +case 159: +#line 1706 "tth.lex" +case 160: +YY_RULE_SETUP +#line 1706 "tth.lex" +yy_push_state(getifx);*strif=0; yy_push_state(removespace); + YY_BREAK +case 161: +/* rule 161 can match eol */ +#line 1708 "tth.lex" +case 162: +/* rule 162 can match eol */ +YY_RULE_SETUP +#line 1708 "tth.lex" +{ + if(strcspn(yytext,"\n")==0) TTH_INC_LINE; + if(tth_debug&1024) fprintf(stderr,"\\ifx comparison argument:%s\n",yytext); + if(strlen(strif)){ /* Terminate */ + yy_pop_state(); + js2=0; + if(strlen(strif)>1) { + if(strlen(yytext)>1){ /* Both apparently command strings */ + if(strlen(strif)==strlen(yytext) && strstr(strif,yytext))js2=1; + if(((ind=indexkey(yytext,keys,&nkeys))!=-1) == + ((i=indexkey(strif,keys,&nkeys))!=-1)){ + if((tth_debug&1024)&&(i>=0)) + fprintf(stderr,"Comparing:%d:%d:%s:%s:\n",i,ind,defs[i],defs[ind]); + if(i==ind)js2=1; else if(strstr(defs[i],defs[ind])==defs[i]) js2=1; + }else if((ind=indexkey(yytext,countkeys,&ncounters))!=-1)/*counters*/ + if(ind == indexkey(strif,countkeys,&ncounters))js2=1; + } + }else if(strlen(yytext)==1){ /* Both single characters */ + if(*strif==*yytext) js2=1; + } + if(!js2){ + if(tth_debug&1024) fprintf(stderr,"ifx FALSE\n"); + yy_push_state(falsetext); + }else if(tth_debug&1024) fprintf(stderr,"ifx TRUE\n"); + } + if(strlen(yytext) > 1)yy_push_state(removespace); + strcpy(strif,yytext); +} + YY_BREAK +/********************************************************************/ +/* Equation Code */ +/*equationhl*/ +case 163: +YY_RULE_SETUP +#line 1739 "tth.lex" +{ + if(!eqalignrow) mkkey(eqstr,eqstrs,&eqdepth); /* Start new row */ + if(tth_istyle&1)eqalignrow=eqalignrow+6*(levhgt[eqclose]-1)+TTH_HGT;else + eqalignrow=eqalignrow+levhgt[eqclose]; + levhgt[eqclose]=1; /* new */ + TTH_TEX_FN("{#1}\\tth_lefteq#tthdrop1",1); +} + YY_BREAK +case 164: +YY_RULE_SETUP +#line 1747 "tth.lex" +{ + TTH_TEX_FN("{\\buildrel{#1}\\over{#2}}#tthdrop2",2); +} + YY_BREAK +case 165: +/* rule 165 can match eol */ +YY_RULE_SETUP +#line 1751 "tth.lex" +TTH_CHECK_LENGTH; TTH_INC_LINE; + YY_BREAK +case 166: +/* rule 166 can match eol */ +YY_RULE_SETUP +#line 1753 "tth.lex" +{ + TTH_INC_MULTI; + if(*halstring){ /* halign and tabular */ + TTH_SCAN_STRING("\\tth_halcr}"); + }else{ + unput('}'); + } +} /* see also at \begin{array} = \matrix */ + YY_BREAK +/* Version that uses tabular code: */ +case 167: +YY_RULE_SETUP +#line 1763 "tth.lex" +TTH_SCAN_STRING("\\end{tabular}"); + YY_BREAK +case 168: +YY_RULE_SETUP +#line 1765 "tth.lex" +{ + if(tth_debug&2)fprintf(stderr,"end eqnarray, eqdepth=%d, eqclose=%d, tth_multinum=%d, eqalignlog=%d.\n",eqdepth,eqclose,tth_multinum,eqalignlog); + TTH_SCAN_STRING("}}\\tth_endeqnarray"); +} + YY_BREAK +case 169: +YY_RULE_SETUP +#line 1769 "tth.lex" +if(eqalignlog <= 100) eqalignlog=eqalignlog+100; + YY_BREAK +/* Font faces and styles etc.*/ +case 170: +YY_RULE_SETUP +#line 1771 "tth.lex" +TTH_SWAP("\\rm "); + YY_BREAK +case 171: +#line 1773 "tth.lex" +case 172: +YY_RULE_SETUP +#line 1773 "tth.lex" +TTH_SWAP("\\bf "); + YY_BREAK +case 173: +YY_RULE_SETUP +#line 1774 "tth.lex" +TTH_SWAP("\\it "); + YY_BREAK +case 174: +YY_RULE_SETUP +#line 1775 "tth.lex" +TTH_SWAP("\\it "); + YY_BREAK +case 175: +YY_RULE_SETUP +#line 1776 "tth.lex" +TTH_SWAP("\\tt "); + YY_BREAK +case 176: +YY_RULE_SETUP +#line 1777 "tth.lex" +TTH_SWAP("\\sffamily "); + YY_BREAK +case 177: +YY_RULE_SETUP +#line 1778 "tth.lex" + + YY_BREAK +case 178: +/* rule 178 can match eol */ +YY_RULE_SETUP +#line 1779 "tth.lex" +TTH_INC_MULTI; + YY_BREAK +case 179: +YY_RULE_SETUP +#line 1780 "tth.lex" +TTH_MATHI(219); + YY_BREAK +case 180: +YY_RULE_SETUP +#line 1783 "tth.lex" +{ + /* halign */ + /*if(*halstring) {TTH_SCAN_STRING("}\\tth_mhamper{");*/ + if(*halstring) {TTH_SCAN_STRING("\\tth_mhamper"); + }else{ yy_push_state(mamper); + } + } + YY_BREAK +case 181: +YY_RULE_SETUP +#line 1790 "tth.lex" +yy_push_state(hamper); + YY_BREAK +/* hamper for halign */ +case 182: +/* rule 182 can match eol */ +YY_RULE_SETUP +#line 1793 "tth.lex" +TTH_INC_MULTI; + YY_BREAK +case 183: +/* rule 183 can match eol */ +YY_RULE_SETUP +#line 1794 "tth.lex" +{ + yyless(0);yy_pop_state(); + tth_enclose(TTH_EQA1,eqstr,TTH_EQA2,eqstore); + if(eqaligncell && !tth_LaTeX && eqalignlog){ + /* This ends the second cell of eqaligno. */ + strcat(eqstr,TTH_CELL_R); + } else strcat(eqstr,TTH_EQA3); + if(eqaligncell) { + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); + rmkey(eqstrs,&eqdepth); + } + mkkey(eqstr,eqstrs,&eqdepth); + *eqstr=0; + eqaligncell++; +} + YY_BREAK +case 184: +YY_RULE_SETUP +#line 1810 "tth.lex" +TTH_TEX_FN("\\tthemultispan{#1}#tthdrop1",1); + YY_BREAK +case 185: +YY_RULE_SETUP +#line 1811 "tth.lex" +TTH_TEX_FN("\\tthemultispan{#1}#tthdrop2",2); + YY_BREAK +/* interior in array */ +case 186: +YY_RULE_SETUP +#line 1813 "tth.lex" +{ + yy_pop_state(); + chscratch=strstr(yytext,"multi"); + TTH_CCPY(argchar,chscratch+strcspn(chscratch,"{")+1); + *(argchar+strcspn(argchar,"}"))=0; + tth_enclose(TTH_EQA1,eqstr,TTH_EQA2,eqstore); + sprintf(eqstr+strlen(eqstr),"%s\"%s\"%s\n",TTH_EQA4,argchar,">"); + if(eqaligncell) { + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); + rmkey(eqstrs,&eqdepth); + } + mkkey(eqstr,eqstrs,&eqdepth); + *eqstr=0; + eqaligncell++; + } + YY_BREAK +case 187: +YY_RULE_SETUP +#line 1828 "tth.lex" +{ /* line start in array */ + chscratch=strstr(yytext,"multi"); + TTH_CCPY(argchar,chscratch+strcspn(chscratch,"{")+1); + *(argchar+strcspn(argchar,"}"))=0; + sscanf(argchar,"%d",&colspan); + } + YY_BREAK +case 188: +YY_RULE_SETUP +#line 1834 "tth.lex" +{ /* expand first */ + TTH_DO_MACRO + else{ + yyless(0);yy_pop_state(); + tth_enclose(TTH_EQA1,eqstr,TTH_EQA2,eqstore); + if(eqaligncell && !tth_LaTeX && eqalignlog){ + /* This ends the second cell of eqaligno. */ + strcat(eqstr,TTH_CELL_R); + } else strcat(eqstr,TTH_EQA3); + if(eqaligncell) { + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); + rmkey(eqstrs,&eqdepth); + } + mkkey(eqstr,eqstrs,&eqdepth); + *eqstr=0; + eqaligncell++; + } +} + YY_BREAK +case 189: +YY_RULE_SETUP +#line 1853 "tth.lex" +{ + if(tth_debug&33) fprintf(stderr,"noalign in equation:\n"); + if(!eqalignrow) mkkey(eqstr,eqstrs,&eqdepth); + if(tth_istyle&1)eqalignrow=eqalignrow+6*(levhgt[eqclose]-1)+TTH_HGT;else + eqalignrow=eqalignrow+levhgt[eqclose]; + levhgt[eqclose]=1; + strcpy(eqstr,TTH_NOALIGN); + TTH_TEX_FN("{#1}\\special{html:}\\tth_eqfin#tthdrop1",1); + } + YY_BREAK +case 190: +/* rule 190 can match eol */ +#line 1863 "tth.lex" +case 191: +/* rule 191 can match eol */ +#line 1864 "tth.lex" +case 192: +/* rule 192 can match eol */ +YY_RULE_SETUP +#line 1864 "tth.lex" +{ + if(eqclose && (active[eqclose-1] || mtrx[eqclose-1])){ + /* If this is really an array-type environment. */ + if(tth_debug&16)fprintf(stderr, + "Active tth_cr. yytext=%s eqclose=%d, active=%d\n", + yytext,eqclose,active[eqclose-1]); + if(strstr(yytext,"tth_")){ /* Prefix special opening */ + sprintf(scrstring,TTH_EQ11, + (lefteq ? "left":(eqalignlog ?"right":"center")),colspan); + /*(colspan? colspan : 1)); Avoid colspan=0; not now necc.*/ + tth_enclose(scrstring,eqstr,TTH_EQA2,eqstore); + }else{ + /* Next line ensures \cr is equivalent to \nonumber\\ */ + if(strstr(yytext,"\\cr"))if(eqalignlog <= 100) eqalignlog=eqalignlog+100; + tth_enclose(TTH_EQA1,eqstr,TTH_EQA2,eqstore); + } + if(tth_debug&16)fprintf(stderr, + "TTH_CR, eqalignlog=%d, colspan=%d, envirchar=%s, tth_multinum=%d, tth_LaTeX=%d.\n", + eqalignlog,colspan,envirchar,tth_multinum,tth_LaTeX); + if(eqaligncell){ /* If there is a preceding & (cell) prefix it. */ + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); + rmkey(eqstrs,&eqdepth); + } + /* If this row is an eqalign or is not the first.*/ + if((eqalignlog&&(eqalignlog-100))||eqalignrow){ + sprintf(eqchar,((eqalignlog&&(eqalignlog-100))?TTH_EQ7:TTH_EQ10), + (lefteq ? "left":((eqalignlog&&(eqalignlog-100)) ? + "right":"center")),colspan); + tth_prefix(eqchar,eqstr,eqstore); /* Prefix its opening */ + *eqchar=0; + } + if(eqalignrow){ /* If this row is not the first.*/ + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); /* Prefix previous row */ + rmkey(eqstrs,&eqdepth); + } + if(tth_LaTeX && tth_multinum && strlen(envirchar) && (eqalignlog==1) ){ + strcat(eqstr,TTH_EQ8); + strcpy(scratchstring,"(\\theequation)"); + }else{ + if((eqalignlog>1)&&(eqalignlog-100)) strcat(eqstr,TTH_EQ9); + *scratchstring=0; + } + strcat(scratchstring,"\\tth_closerow"); + TTH_SCAN_STRING(scratchstring); + /*mtrx[eqclose-1]=0; A mistake. Should be done only at end.*/ + }else if(*halstring){ /* halign and tabular */ + TTH_SCAN_STRING("\\tth_halcr"); + }else{ + fprintf(stderr,"**** Improper \\\\ or \\cr outside array environment ignored, Line %d.\n",tth_num_lines); + } +} + YY_BREAK +case 193: +YY_RULE_SETUP +#line 1916 "tth.lex" +{ + if(tth_LaTeX && tth_multinum && strlen(envirchar) && (eqalignlog==1) ){ + equatno++;sprintf(envirchar,"%d",equatno);tth_multinum++; + } + strcat(eqstr,""); /* Close the row */ + *eqchar=0; + mkkey(eqstr,eqstrs,&eqdepth); /* Start new row */ + *eqstr=0; + /* eqalignrow++; old */ + if(tth_istyle&1)eqalignrow=eqalignrow+6*(levhgt[eqclose]-1)+TTH_HGT;else + eqalignrow=eqalignrow+levhgt[eqclose]; + levhgt[eqclose]=1; /* new */ + eqaligncell=0; + lefteq=0; + colspan=1; + if(eqalignlog >= 100) eqalignlog=eqalignlog-100; +} + YY_BREAK +case 194: +YY_RULE_SETUP +#line 1934 "tth.lex" +{ + if(tth_debug&16) { + fprintf(stderr,"Start Group {, eqdepth=%d, eqclose=%d, tth_flev=%d, levdelim=%s\n",eqdepth,eqclose,tth_flev,levdelim[eqclose]); + } + if(tth_flev < 0) tth_flev=tth_flev-99; + mkkey(eqstr,eqstrs,&eqdepth); + *eqstr=0; + eqclose++; + tophgt[eqclose]=0; + levhgt[eqclose]=1; + TTH_PUSH_CLOSING; + } + YY_BREAK +case 195: +YY_RULE_SETUP +#line 1947 "tth.lex" +{ + if(mtrx[eqclose-1] || active[eqclose-1] || tophgt[eqclose]){ + /* Terminate getsubp state */ + yyless(0); + TTH_SCAN_STRING("#"); + }else{ + /* Just enter the brace termination code. */ + TTH_SCAN_STRING("\\tth_closebrace"); + } +} + YY_BREAK +case 196: +#line 1958 "tth.lex" +case 197: +YY_RULE_SETUP +#line 1958 "tth.lex" +{ + TTH_TEXCLOSE else{ + do{ + if(tth_debug&16) { + if(active[eqclose]) { + fprintf(stderr, + "Active Group }, eqdepth=%d, eqclose=%d, tth_flev=%d, levdelim=%s, active=%d\n" + ,eqdepth,eqclose,tth_flev,levdelim[eqclose],active[eqclose]);} + else {fprintf(stderr, + "Close Group }, eqdepth=%d, eqclose=%d, tth_flev=%d, levdelim=%s\n" + ,eqdepth,eqclose,tth_flev,levdelim[eqclose]);} + } + if(tophgt[eqclose] != 0){ /* If fraction */ + if(tth_debug&16)fprintf(stderr,"Fraction closing.\n"); + if(levhgt[eqclose] > 1 || (eqclose > tth_flev && TTH_COMPLEX)){ + /* If bottom contains a fraction or we are topped out. */ + /* Try bottom compression*/ + oa_removes=b_align(eqstr,tth_debug); + tth_enclose(TTH_LEV1,eqstr,TTH_LEV2,eqstore); + }else{ /* Put br at end if we are still closing a real cell */ + if((eqclose <= tth_flev) && (active[eqclose-1]!=30)) strcat(eqstr,TTH_BR); + } + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); + rmkey(eqstrs,&eqdepth); + TTH_CLOSEGROUP;TTH_POP_CLOSING; /* put closing before cell end */ + if(active[eqclose-1]!=30){ + /* CELL1/2 test for non-zero levdelim 0,+1 */ + tth_enclose(TTH_CELL1,eqstr,TTH_CELL2,eqstore); + if(eqclose <= tth_flev) yy_push_state(getsubp); + if(tth_debug&16) fprintf(stderr,"Whole fraction:%s\n",eqstr); + } + }else { + TTH_CLOSEGROUP;TTH_POP_CLOSING; + } + if(eqclose > tth_flev) hgt=1; else hgt=tophgt[eqclose]+levhgt[eqclose]; + if(tth_debug&16) fprintf(stderr,"eqclose=%d,tth_flev=%d,hgt=%d,%d,%d\n", + eqclose,tth_flev,hgt,tophgt[eqclose],levhgt[eqclose]); + if(levhgt[eqclose-1] < hgt) levhgt[eqclose-1]=hgt; + if(tth_debug&2 && (levdelim[eqclose][0]||levdelim[eqclose+1][0])) + fprintf(stderr,"Delimiting:%s%d%s\n", + levdelim[eqclose],hgt,levdelim[eqclose+1]); + if(levdelim[eqclose][0]){ + delimit(levdelim[eqclose],hgt,eqchar); + } + if(levdelim[eqclose+1][0]){ + delimit(levdelim[eqclose+1],hgt,eqchar2); + } + /* Cut spurious cells off end of eqchar and eqstr if necessary*/ + chscratch=eqchar+strlen(eqchar)-strlen(TTH_CELL3); + if( (strstr(chscratch,TTH_CELL3)==chscratch) && + (strstr(eqstr,TTH_CELL_START)==eqstr+strspn(eqstr," \n"))){ + *chscratch=0; + } + chscratch=eqstr+strlen(eqstr)-strlen(TTH_CELL3); + if( (strstr(eqchar2,TTH_CELL_START)==eqchar2+strspn(eqchar2," \n")) && + (strstr(chscratch,TTH_CELL3)==chscratch) ){ + *chscratch=0; + } /* Section could be combined with delimit immediately above. */ + /* rely on no delimiters on active closures. False for matrix. */ + if(levdelim[eqclose+1][0] && (hgt > 1)) yy_push_state(getsubp); + *levdelim[eqclose]=0; + *levdelim[eqclose+1]=0; + + tth_enclose(eqchar,eqstr,eqchar2,eqstore); + *eqchar=0; + *eqchar2=0; + if(active[eqclose-1]==30){ /* eqlimited section for mathop, overbrace */ + if(tth_debug&2)fprintf(stderr,"Mathop eqlimited:%s\n",eqstr); + if(strlen(eqlimited)+strlen(eqstr)< TTH_DLEN) { + strcat(eqlimited,eqstr); + if(tth_debug&2)fprintf(stderr,"EQlimited=||%s||\n",eqlimited); + }else{ + fprintf(stderr, + "Error: Fatal! Exceeded eqlimited storage. Over/underbrace too long.\n"); + TTH_EXIT(5); + } + strcpy(eqstr,eqstrs[eqdepth-1]); + yy_push_state(getsubp); + if(levhgt[eqclose] == 1)levhgt[eqclose]=2; /* Force fraction closure */ + active[eqclose-1]=0; + }else{ + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); + } + rmkey(eqstrs,&eqdepth); + if(tth_flev < 0) tth_flev=tth_flev+99; + active[eqclose]=0; + mtrx[eqclose]=0; + eqclose--; + if(eqclose < 0) { + fprintf(stderr,"**** Error! Fatal! Negative closure count, line:%d\n",tth_num_lines); + TTH_EXIT(4); + } + } while (active[eqclose]); + if(tth_debug&16) fprintf(stderr, + "Completing Close Group, eqdepth=%d, eqclose=%d, tth_flev=%d, levdelim=%s\n" + ,eqdepth,eqclose,tth_flev,levdelim[eqclose]); + } +} + YY_BREAK +case 198: +YY_RULE_SETUP +#line 2057 "tth.lex" +{ /* Cope with ambiguous style at equation end */ + if(displaystyle){ + if(tth_debug&2)fprintf(stderr,"$$ in displaystyle\n"); + TTH_SCAN_STRING("}\\tth_endequation"); + }else{ + yyless(1); + TTH_SCAN_STRING("}\\tth_endinline"); + } + } + YY_BREAK +case 199: +YY_RULE_SETUP +#line 2067 "tth.lex" +{ + TTH_TEXCLOSE else{ + if(tth_debug&2) fprintf(stderr,"Leaving inline eq, eqclose=%d, eqdepth=%d, tth_flev=%d, levhgt=%d, tophgt=%d\n", + eqclose,eqdepth,tth_flev,levhgt[eqclose],tophgt[eqclose]); + TTH_CLOSEGROUP;TTH_POP_CLOSING; + if(tth_inlinefrac && (levhgt[eqclose]+tophgt[eqclose]>1)) + tth_enclose(TTH_TSTY1,eqstr,TTH_TSTY2,eqstore); + if(eqdepth==1){ + rmkey(eqstrs,&eqdepth); /*eqdepth--;*/ + tth_flev=tth_flev0; + horizmode=1; + if(tth_tagpurge){ + tagpurge(eqstr); + tth_tagpurge=0; + } + fprintf(tth_fdout,"%s",eqstr);*eqstr=0; + }else{ + if(displaystyle)displaystyle--; + eqdepth--; + if(tth_debug&2)fprintf(stderr, + "Equation in a textbox inside an equation.\n"); + TTH_OUTPUT(TTH_TEXTBOX1); + } + yy_pop_state(); + } +} + YY_BREAK +/* Force all equations to end enclosed. */ +case 200: +YY_RULE_SETUP +#line 2094 "tth.lex" +{ + if(strstr(yytext,"*")==NULL){ /* end{equation} */ + if(tth_multinum < 2) { + TTH_SCAN_STRING("}\\tth_numbereq"); + }else { + /* end of equation which needs to unincrement*/ + equatno--; + TTH_SCAN_STRING("}\\tth_endequation"); + } + }else {TTH_SCAN_STRING("}\\tth_endequation");} /* embracing essential */ +} + YY_BREAK +case 201: +#line 2106 "tth.lex" +case 202: +YY_RULE_SETUP +#line 2106 "tth.lex" +TTH_SCAN_STRING("}\\tth_endequation"); + YY_BREAK +case 203: +YY_RULE_SETUP +#line 2108 "tth.lex" +{ + strcat(eqstr,TTH_DISP3); + TTH_SCAN_STRING("(\\theequation)\\tth_endnumbered"); +} + YY_BREAK +case 204: +YY_RULE_SETUP +#line 2112 "tth.lex" +equatno--;TTH_SCAN_STRING("\\tth_endequation"); + YY_BREAK +case 205: +#line 2114 "tth.lex" +case 206: +YY_RULE_SETUP +#line 2114 "tth.lex" +{ + TTH_TEXCLOSE else{ + eqaligncell=0; + if(tth_debug&2) fprintf(stderr, + "End equation %d, %s. eqalignlog=%d, tth_eqwidth=%d\n", + equatno,yytext,eqalignlog,tth_eqwidth); + if(tth_multinum)tth_multinum=1; + { + if(eqalignlog){ + sprintf(scrstring,TTH_DISPE,tth_eqwidth); + tth_enclose(scrstring,eqstr,TTH_DISP6,eqstore); +/* tth_enclose(scrstring,eqstr,TTH_DISP4,eqstore); */ + }else{ + sprintf(scrstring,TTH_DISP1,tth_eqwidth); + if(strstr(yytext,"numb")){ + tth_enclose(scrstring,eqstr,TTH_DISP4,eqstore); + }else{ + tth_enclose(scrstring,eqstr,TTH_DISP2,eqstore); + } + } + if(tth_debug&2) fprintf(stderr, + "Leaving display eq, eqclose=%d, eqdepth=%d, tth_flev=%d\n", + eqclose,eqdepth,tth_flev); + if(eqdepth==1){ + rmkey(eqstrs,&eqdepth);/*eqdepth--;*/ + }else{ + fprintf(stderr, + "**** Error: Fatal Abnormal eqdepth %d on display equation exit, line %d\n", + eqdepth,tth_num_lines);TTH_EXIT(2); + } + if(eqclose > 0) { + fprintf(stderr, + "**** Error: Fatal Abnormal eqclose %d on Display Equation End, line %d\n", + eqclose,tth_num_lines);TTH_EXIT(3); + } + yy_pop_state(); + tth_flev=tth_flev0; /* Necessary if textstyle has been used. */ + horizmode=1; /* Make sure we now recognize \n\n */ + displaystyle=0; + *environment=0; + eqalignlog=0; + TTH_CLOSEGROUP;TTH_POP_CLOSING; + fprintf(tth_fdout,"%s\n",eqstr);*eqstr=0; + } + } +} + YY_BREAK +/* Single character fractions .*/ +case 207: +/* rule 207 can match eol */ +YY_RULE_SETUP +#line 2161 "tth.lex" +{ + if(active[eqclose]){ /* reembrace to protect active closure */ + TTH_INC_MULTI; + sprintf(scratchstring,"{%s}",yytext); + TTH_SCAN_STRING(scratchstring); + }else if((eqclose > tth_flev || !displaystyle)){ + TTH_INC_MULTI; + chscratch=yytext+strspn(yytext,"${ \t\n"); + chs2=strstr(chscratch,"\\over")+5; + sprintf(scratchstring,"%c/%c", + *(chscratch),*(chs2+strspn(chs2," \t\r\n"))); + TTH_OUTPUT(scratchstring); + }else{ /* split to prevent treatment */ + strcpy(scratchstring,yytext); + jscratch=strspn(yytext,"${ \t"); + yyless(jscratch); + *(scratchstring+jscratch)=0; + TTH_SCAN_STRING(scratchstring); + } + } + YY_BREAK +case 208: +/* rule 208 can match eol */ +YY_RULE_SETUP +#line 2182 "tth.lex" +{ + TTH_INC_MULTI; + yyless(strspn(yytext," \t\r\n")); +} + YY_BREAK +case 209: +/* rule 209 can match eol */ +YY_RULE_SETUP +#line 2186 "tth.lex" +{ + TTH_INC_MULTI; + if(tth_debug&16)fprintf(stderr, + "Over Close Group, depth=%d, eqclose=%d, levhgt=%d\n", + eqdepth,eqclose,levhgt[eqclose]); + if(levhgt[eqclose] > 1 || (eqclose > tth_flev && TTH_COMPLEX)) { + /* Remove unnecessary cell and bottoms from single cells*/ + oa_removes=b_align(eqstr,tth_debug); + tth_enclose(TTH_LEV1,eqstr,TTH_LEV2,eqstore); + }else { /* Fix a strange alignment problem. Removed 15 Oct 2003 + if((tth_istyle&1) && !strstr(yytext,"atop") && !strstr(yytext,"choose")) + tth_prefix(" ",eqstr,eqstore); */ + } + if(strstr(yytext,"atop") || strstr(yytext,"choose")) + strcat(eqstr,TTH_ATOP); + else strcat(eqstr,TTH_DIV); + mkkey(eqstr,eqstrs,&eqdepth); + *eqstr=0; + tophgt[eqclose]=levhgt[eqclose]+1; + levhgt[eqclose]=1; + if(strstr(yytext,"choose")){ + strcat(levdelim[eqclose],"("); + tth_push_depth--; + TTH_PRETEXCLOSE("\\tth_chooseclose"); + tth_push_depth++; + } + } + YY_BREAK +case 210: +YY_RULE_SETUP +#line 2213 "tth.lex" +strcpy(levdelim[eqclose+1],")"); + YY_BREAK +/*TTH_SCAN_STRING("\\right)"); doesn't work. Imbalances closures.*/ +/* End of Fraction*/ +/* Sub/p scripts. */ +/* Dont make prime a superscript, it becomes too small. + This case will not be used if we are doing a full cell (getsubsup). */ +case 211: +YY_RULE_SETUP +#line 2221 "tth.lex" +TTH_MATHI(162); + YY_BREAK +case 212: +YY_RULE_SETUP +#line 2222 "tth.lex" +{ + strcat(eqstr,TTH_SUP1);yy_push_state(exptokarg); + TTH_CCPY(expchar,TTH_SUP2); + } + YY_BREAK +case 213: +YY_RULE_SETUP +#line 2226 "tth.lex" +{ + strcat(eqstr,TTH_SUB1);yy_push_state(exptokarg); + TTH_CCPY(expchar,TTH_SUB2); + } + YY_BREAK +/* Version that uses tabular:*/ +case 214: +/* rule 214 can match eol */ +YY_RULE_SETUP +#line 2231 "tth.lex" +{ + TTH_INC_MULTI; + TTH_SCAN_STRING("\\begin{tabular}"); +} + YY_BREAK +case 215: +/* rule 215 can match eol */ +#line 2236 "tth.lex" +case 216: +/* rule 216 can match eol */ +YY_RULE_SETUP +#line 2236 "tth.lex" +{ /*border not really supported*/ + TTH_INC_MULTI; + TTH_HAL_PUSH;*halstring=0; + if(strstr(yytext,"eq") != NULL) eqalignlog++;/*make both levels 1*/ + TTH_EQA_PUSH; + /*This instead of the previous makes level 1 only. Intended for lone + \eqno, but breaks the standard layout. So don't do it.*/ + /* if(strstr(yytext,"eq") != NULL) eqalignlog++;*/ + TTH_PUSH_CLOSING; + if(strstr(yytext,"eq") == NULL) eqalignlog=0; + /*if(strstr(yytext,"eq") != NULL) eqalignlog++; else eqalignlog=0;*/ + if(tth_debug&2) { + fprintf(stderr, + "Matrix {, eqdepth=%d, eqclose=%d, eqalignlog=%d, tth_flev=%d, levdelim=%s.\n" + ,eqdepth,eqclose,eqalignlog,tth_flev,levdelim[eqclose]); + } + mkkey(eqstr,eqstrs,&eqdepth); + eqclose++; + *eqstr=0; + levhgt[eqclose]=1; + tophgt[eqclose]=0; + eqaligncell=0; + eqalignrow=0; + tth_push_depth--; + TTH_PRETEXCLOSE("\\tth_cr\\tth_matrixclose"); + tth_push_depth++; + mtrx[eqclose-1]=1; + if(tth_debug&16)fprintf(stderr,"Set Matrix: eqclose=%d,eqdepth=%d\n",eqclose,eqdepth);/**/ + } + YY_BREAK +case 217: +YY_RULE_SETUP +#line 2265 "tth.lex" +{ + if(tth_debug&16) fprintf(stderr,"Matrix close %d, levhgt=%d, rows=%d\n", + eqclose,levhgt[eqclose],eqalignrow); + if(tth_istyle&1) levhgt[eqclose]=(eqalignrow+6*(levhgt[eqclose]-1)+TTH_HGT)/6; else levhgt[eqclose]=levhgt[eqclose]+eqalignrow; + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); + rmkey(eqstrs,&eqdepth); + if(eqalignlog){ + /* For 50% but just first line */ + tth_enclose(TTH_EQ3,eqstr,TTH_EQ2,eqstore); + }else{ + tth_enclose(TTH_EQ1,eqstr,TTH_EQ2,eqstore); + } + TTH_EQA_POP; + TTH_HAL_POP; + /* Enclose unless this is the end of an eqalign type construct. */ + if(eqaind || !eqalignlog)tth_enclose(TTH_CELL5,eqstr,TTH_CELL5,eqstore); + active[eqclose-1]=0; +} + YY_BREAK +case 218: +YY_RULE_SETUP +#line 2284 "tth.lex" +{ + TTH_TEX_FN("\\mbox{\\left\\lbrace\\matrix{#1}\\right.}#tthdrop1",1); +} + YY_BREAK +case 219: +YY_RULE_SETUP +#line 2287 "tth.lex" +{ + TTH_TEX_FN("\\left(\\matrix{#1}\\right)#tthdrop1",1); +} + YY_BREAK +/* textboxes. Because of problems as subscript, removed this to builtins. + \\textrm | + but this does not generally seem to be a good plan. + But the approach below breaks with unenclosed subscript texts. + */ +case 220: +/* rule 220 can match eol */ +#line 2297 "tth.lex" +case 221: +/* rule 221 can match eol */ +#line 2298 "tth.lex" +case 222: +/* rule 222 can match eol */ +#line 2299 "tth.lex" +case 223: +/* rule 223 can match eol */ +#line 2300 "tth.lex" +case 224: +/* rule 224 can match eol */ +YY_RULE_SETUP +#line 2300 "tth.lex" +{ + TTH_INC_MULTI; + strcpy(scratchstring,"\\tth_tbone");strcat(scratchstring,"\\rm "); TTH_SCAN_STRING("\\tth_tbox"); +} + YY_BREAK +case 225: +YY_RULE_SETUP +#line 2304 "tth.lex" +{ + strcpy(scratchstring,"\\tth_tbone");strcat(scratchstring,"\\bf "); TTH_SCAN_STRING("\\tth_tbox"); +} + YY_BREAK +case 226: +#line 2308 "tth.lex" +case 227: +YY_RULE_SETUP +#line 2308 "tth.lex" +{ + strcpy(scratchstring,"\\tth_tbone");strcat(scratchstring,"\\it "); TTH_SCAN_STRING("\\tth_tbox"); +} + YY_BREAK +case 228: +YY_RULE_SETUP +#line 2311 "tth.lex" +{ + strcpy(scratchstring,"\\tth_tbone");strcat(scratchstring,"\\tt "); TTH_SCAN_STRING("\\tth_tbox"); +} + YY_BREAK +case 229: +YY_RULE_SETUP +#line 2314 "tth.lex" +{ + strcpy(scratchstring,"\\tth_tbone");strcat(scratchstring,"\\sffamily "); TTH_SCAN_STRING("\\tth_tbox"); +} + YY_BREAK +case 230: +YY_RULE_SETUP +#line 2317 "tth.lex" +{ + strcpy(scratchstring,"\\tth_tbone");strcat(scratchstring,"\\scshape "); TTH_SCAN_STRING("\\tth_tbox"); +} + YY_BREAK +case 231: +YY_RULE_SETUP +#line 2320 "tth.lex" +{ + if(tth_debug&2)fprintf(stderr, + "Start textbox. eqclose %d. push_depth %d. Line %d\n" + ,eqclose,tth_push_depth,tth_num_lines); + if(!displaystyle) yy_push_state(textbox); + TTH_SWAP(scratchstring); + /* This had to be moved into tth_tbone */ + /*TTH_PRETEXCLOSE("\\tth_boxclose");*/ +} + YY_BREAK +case 232: +YY_RULE_SETUP +#line 2329 "tth.lex" +{ + if(tth_debug&2)fprintf(stderr, + "Start textbox exptokarg. Displaystyle %d. eqclose %d, push_depth %d, Line %d\n" + ,displaystyle,eqclose,tth_push_depth,tth_num_lines); + yy_pop_state(); + if(!displaystyle)yy_push_state(textbox); + yy_push_state(exptokarg); + TTH_SWAP(scratchstring); +} + YY_BREAK +case 233: +YY_RULE_SETUP +#line 2338 "tth.lex" +{ /* box closure*/ + if(tth_debug&2) fprintf(stderr,"Box closure, eqclose=%d\n",eqclose); + if(!displaystyle) yy_pop_state(); /* textbox state end */ + } + YY_BREAK +case 234: +YY_RULE_SETUP +#line 2342 "tth.lex" +{ + if(tth_debug&8)fprintf(stderr,"tbone at push_depth %d\n",tth_push_depth); + TTH_OUTPUT(TTH_TEXTBOX1); + tth_push_depth--;TTH_PRETEXCLOSE("\\tth_boxclose");tth_push_depth++; +} + YY_BREAK +case 235: +YY_RULE_SETUP +#line 2347 "tth.lex" +{GET_DIMEN;} /* Override new handling */ + YY_BREAK +case 236: +#line 2350 "tth.lex" +case 237: +#line 2351 "tth.lex" +case 238: +YY_RULE_SETUP +#line 2351 "tth.lex" +{ + /* Deal with single $ or inline in display equations or boxes.*/ + if(displaystyle==1){ /* Open inline in box enclose it.*/ + if(tth_debug&2)fprintf(stderr,"Inline inside displaystyle.\n"); + TTH_SCAN_STRING("{$"); + displaystyle++; + }else if(displaystyle==2){ + if(!strstr(tth_font_open[tth_push_depth],TTH_ITAL1)){ + strcat(tth_font_open[tth_push_depth],tth_font_open[0]); + strcat(tth_font_close[tth_push_depth],tth_font_close[0]); + } + displaystyle++; + }else if(displaystyle==3){ /* End enclosure inserted. */ + if(tth_debug&2)fprintf(stderr,"End Inline inside displaystyle.\n"); + TTH_SCAN_STRING("}"); + displaystyle=1; + }else if(strstr(tth_texclose[tth_push_depth],"tth_boxclose")) { + if(tth_debug&2) fprintf(stderr,"Inline inside box.\n"); + if(!strstr(tth_font_open[tth_push_depth],TTH_ITAL1)){ + strcat(tth_font_open[tth_push_depth],tth_font_open[0]); + strcat(tth_font_close[tth_push_depth],tth_font_close[0]); + } + }else{ + TTH_SCAN_STRING("}\\tth_endinline"); + } + } + YY_BREAK +/* Math greek and symbols */ +case 239: +YY_RULE_SETUP +#line 2378 "tth.lex" +TTH_MATHS("a"); + YY_BREAK +case 240: +YY_RULE_SETUP +#line 2379 "tth.lex" +TTH_MATHS("b"); + YY_BREAK +case 241: +YY_RULE_SETUP +#line 2380 "tth.lex" +TTH_MATHS("g"); + YY_BREAK +case 242: +YY_RULE_SETUP +#line 2381 "tth.lex" +TTH_MATHS("d"); + YY_BREAK +case 243: +YY_RULE_SETUP +#line 2382 "tth.lex" +TTH_MATHS("e"); + YY_BREAK +/* \\varepsilon{SP}* TTH_MATHS("e"); */ +case 244: +YY_RULE_SETUP +#line 2384 "tth.lex" +{ + if(tth_unicode){ + TTH_MATHI(129); /*Kludge for coding translation */ + }else{ + TTH_MATHS("e"); + } +} + YY_BREAK +case 245: +YY_RULE_SETUP +#line 2391 "tth.lex" +TTH_MATHS("z"); + YY_BREAK +case 246: +YY_RULE_SETUP +#line 2392 "tth.lex" +TTH_MATHS("h") + YY_BREAK +case 247: +YY_RULE_SETUP +#line 2393 "tth.lex" +TTH_MATHS("q"); + YY_BREAK +case 248: +YY_RULE_SETUP +#line 2394 "tth.lex" +TTH_MATHS("J"); + YY_BREAK +case 249: +YY_RULE_SETUP +#line 2395 "tth.lex" +TTH_MATHS("i"); + YY_BREAK +case 250: +YY_RULE_SETUP +#line 2396 "tth.lex" +TTH_MATHS("k"); + YY_BREAK +case 251: +YY_RULE_SETUP +#line 2397 "tth.lex" +TTH_MATHS("l"); + YY_BREAK +case 252: +YY_RULE_SETUP +#line 2398 "tth.lex" +TTH_MATHS("l"); + YY_BREAK +case 253: +YY_RULE_SETUP +#line 2399 "tth.lex" +TTH_MATHS("m"); + YY_BREAK +case 254: +YY_RULE_SETUP +#line 2400 "tth.lex" +TTH_MATHS("n"); + YY_BREAK +case 255: +YY_RULE_SETUP +#line 2401 "tth.lex" +TTH_MATHS("x"); + YY_BREAK +case 256: +YY_RULE_SETUP +#line 2402 "tth.lex" +TTH_MATHS("p"); + YY_BREAK +case 257: +YY_RULE_SETUP +#line 2403 "tth.lex" +TTH_MATHS("v"); + YY_BREAK +case 258: +YY_RULE_SETUP +#line 2404 "tth.lex" +TTH_MATHS("r"); + YY_BREAK +case 259: +YY_RULE_SETUP +#line 2405 "tth.lex" +TTH_MATHS("r"); + YY_BREAK +case 260: +YY_RULE_SETUP +#line 2406 "tth.lex" +TTH_MATHS("s"); + YY_BREAK +case 261: +YY_RULE_SETUP +#line 2407 "tth.lex" +TTH_MATHS("V"); + YY_BREAK +case 262: +YY_RULE_SETUP +#line 2408 "tth.lex" +TTH_MATHS("t"); + YY_BREAK +case 263: +YY_RULE_SETUP +#line 2409 "tth.lex" +TTH_MATHS("u"); + YY_BREAK +case 264: +YY_RULE_SETUP +#line 2410 "tth.lex" +TTH_MATHS("f"); + YY_BREAK +case 265: +YY_RULE_SETUP +#line 2411 "tth.lex" +TTH_MATHS("j"); + YY_BREAK +case 266: +YY_RULE_SETUP +#line 2412 "tth.lex" +TTH_MATHS("c"); + YY_BREAK +case 267: +YY_RULE_SETUP +#line 2413 "tth.lex" +TTH_MATHS("y"); + YY_BREAK +case 268: +YY_RULE_SETUP +#line 2414 "tth.lex" +TTH_MATHS("w"); + YY_BREAK +case 269: +YY_RULE_SETUP +#line 2415 "tth.lex" +TTH_MATHS("G"); + YY_BREAK +case 270: +YY_RULE_SETUP +#line 2416 "tth.lex" +TTH_MATHS("D"); + YY_BREAK +case 271: +YY_RULE_SETUP +#line 2417 "tth.lex" +TTH_MATHS("Q"); + YY_BREAK +case 272: +YY_RULE_SETUP +#line 2418 "tth.lex" +TTH_MATHS("L"); + YY_BREAK +case 273: +YY_RULE_SETUP +#line 2419 "tth.lex" +TTH_MATHS("X"); + YY_BREAK +case 274: +YY_RULE_SETUP +#line 2420 "tth.lex" +TTH_MATHS("P"); + YY_BREAK +case 275: +YY_RULE_SETUP +#line 2421 "tth.lex" +TTH_MATHS("S"); + YY_BREAK +case 276: +YY_RULE_SETUP +#line 2422 "tth.lex" +TTH_MATHS("U"); + YY_BREAK +case 277: +YY_RULE_SETUP +#line 2423 "tth.lex" +TTH_MATHS("F"); + YY_BREAK +case 278: +YY_RULE_SETUP +#line 2424 "tth.lex" +TTH_MATHS("Y"); + YY_BREAK +case 279: +YY_RULE_SETUP +#line 2425 "tth.lex" +TTH_MATHS("W"); + YY_BREAK +case 280: +YY_RULE_SETUP +#line 2427 "tth.lex" +TTH_MATHC("l"); + YY_BREAK +case 281: +YY_RULE_SETUP +#line 2428 "tth.lex" +TTH_MATHI(192); + YY_BREAK +case 282: +YY_RULE_SETUP +#line 2429 "tth.lex" +TTH_MATHS("i"); + YY_BREAK +case 283: +YY_RULE_SETUP +#line 2430 "tth.lex" +TTH_MATHC("j"); + YY_BREAK +case 284: +YY_RULE_SETUP +#line 2431 "tth.lex" +TTH_MATHI(195); + YY_BREAK +case 285: +#line 2433 "tth.lex" +case 286: +YY_RULE_SETUP +#line 2433 "tth.lex" +TTH_MATHI(194); + YY_BREAK +case 287: +#line 2435 "tth.lex" +case 288: +YY_RULE_SETUP +#line 2435 "tth.lex" +TTH_MATHI(193); + YY_BREAK +case 289: +YY_RULE_SETUP +#line 2436 "tth.lex" +TTH_MATHI(182); + YY_BREAK +case 290: +YY_RULE_SETUP +#line 2437 "tth.lex" +TTH_MATHI(165); + YY_BREAK +case 291: +YY_RULE_SETUP +#line 2438 "tth.lex" +TTH_MATHI(208); + YY_BREAK +case 292: +YY_RULE_SETUP +#line 2439 "tth.lex" +TTH_MATHI(162); + YY_BREAK +case 293: +YY_RULE_SETUP +#line 2440 "tth.lex" +TTH_MATHI(162); + YY_BREAK +case 294: +YY_RULE_SETUP +#line 2441 "tth.lex" +TTH_MATHI(198); + YY_BREAK +case 295: +YY_RULE_SETUP +#line 2442 "tth.lex" +TTH_MATHI(209); + YY_BREAK +case 296: +YY_RULE_SETUP +#line 2443 "tth.lex" +TTH_MATHI(214); + YY_BREAK +case 297: +#line 2445 "tth.lex" +case 298: +YY_RULE_SETUP +#line 2445 "tth.lex" +TTH_MATHS("|"); + YY_BREAK +case 299: +#line 2447 "tth.lex" +case 300: +#line 2448 "tth.lex" +case 301: +YY_RULE_SETUP +#line 2448 "tth.lex" +TTH_MATHS("||"); + YY_BREAK +case 302: +YY_RULE_SETUP +#line 2449 "tth.lex" +TTH_MATHC("["); + YY_BREAK +case 303: +YY_RULE_SETUP +#line 2450 "tth.lex" +TTH_MATHC("]"); + YY_BREAK +case 304: +YY_RULE_SETUP +#line 2451 "tth.lex" +TTH_MATHC("{"); + YY_BREAK +case 305: +YY_RULE_SETUP +#line 2452 "tth.lex" +TTH_MATHC("}"); + YY_BREAK +case 306: +YY_RULE_SETUP +#line 2453 "tth.lex" +TTH_MATHI(249); + YY_BREAK +case 307: +YY_RULE_SETUP +#line 2454 "tth.lex" +TTH_MATHI(251); + YY_BREAK +case 308: +YY_RULE_SETUP +#line 2455 "tth.lex" +TTH_MATHI(233); + YY_BREAK +case 309: +YY_RULE_SETUP +#line 2456 "tth.lex" +TTH_MATHI(235); + YY_BREAK +case 310: +YY_RULE_SETUP +#line 2457 "tth.lex" +TTH_MATHI(225); + YY_BREAK +case 311: +YY_RULE_SETUP +#line 2458 "tth.lex" +TTH_MATHI(241); + YY_BREAK +case 312: +#line 2460 "tth.lex" +case 313: +#line 2461 "tth.lex" +case 314: +YY_RULE_SETUP +#line 2461 "tth.lex" +TTH_MATHC("\\"); + YY_BREAK +case 315: +YY_RULE_SETUP +#line 2462 "tth.lex" +TTH_MATHS("\""); + YY_BREAK +case 316: +YY_RULE_SETUP +#line 2463 "tth.lex" +TTH_MATHS("$"); + YY_BREAK +case 317: +YY_RULE_SETUP +#line 2464 "tth.lex" +TTH_MATHI(216); + YY_BREAK +case 318: +YY_RULE_SETUP +#line 2465 "tth.lex" +TTH_MATHI(167); + YY_BREAK +case 319: +YY_RULE_SETUP +#line 2466 "tth.lex" +TTH_MATHI(168); + YY_BREAK +case 320: +YY_RULE_SETUP +#line 2467 "tth.lex" +TTH_MATHI(169); + YY_BREAK +case 321: +YY_RULE_SETUP +#line 2468 "tth.lex" +TTH_MATHI(170); + YY_BREAK +case 322: +YY_RULE_SETUP +#line 2470 "tth.lex" +TTH_MATHS("-"); + YY_BREAK +/*Risky. \+ TTH_MATHS("+"); */ +case 323: +YY_RULE_SETUP +#line 2472 "tth.lex" +TTH_MATHC("T"); + YY_BREAK +case 324: +#line 2474 "tth.lex" +case 325: +YY_RULE_SETUP +#line 2474 "tth.lex" +TTH_MATHS("^"); + YY_BREAK +case 326: +YY_RULE_SETUP +#line 2475 "tth.lex" +TTH_MATHI(176); + YY_BREAK +case 327: +YY_RULE_SETUP +#line 2476 "tth.lex" +TTH_MATHC("~"); + YY_BREAK +case 328: +YY_RULE_SETUP +#line 2477 "tth.lex" +TTH_MATHS(" ~ "); + YY_BREAK +case 329: +#line 2479 "tth.lex" +case 330: +YY_RULE_SETUP +#line 2479 "tth.lex" +TTH_MATHC(" mod "); + YY_BREAK +case 331: +YY_RULE_SETUP +#line 2480 "tth.lex" +TTH_MATHC(" < "); + YY_BREAK +case 332: +YY_RULE_SETUP +#line 2481 "tth.lex" +TTH_MATHC(" > "); + YY_BREAK +case 333: +#line 2483 "tth.lex" +case 334: +YY_RULE_SETUP +#line 2483 "tth.lex" +TTH_MATHC(" << "); + YY_BREAK +case 335: +#line 2485 "tth.lex" +case 336: +YY_RULE_SETUP +#line 2485 "tth.lex" +TTH_MATHC(" >> "); + YY_BREAK +case 337: +YY_RULE_SETUP +#line 2486 "tth.lex" +TTH_MATHS("*"); + YY_BREAK +case 338: +YY_RULE_SETUP +#line 2487 "tth.lex" +TTH_MATHS("*"); + YY_BREAK +case 339: +YY_RULE_SETUP +#line 2488 "tth.lex" +TTH_MATHI(224); + YY_BREAK +case 340: +YY_RULE_SETUP +#line 2489 "tth.lex" +TTH_MATHI(183); + YY_BREAK +case 341: +YY_RULE_SETUP +#line 2490 "tth.lex" +TTH_MATHC("·"); + YY_BREAK +/*\\cdot TTH_MATHI(215);*/ +case 342: +YY_RULE_SETUP +#line 2492 "tth.lex" +TTH_MATHI(200); + YY_BREAK +case 343: +YY_RULE_SETUP +#line 2493 "tth.lex" +TTH_MATHI(199); + YY_BREAK +case 344: +YY_RULE_SETUP +#line 2494 "tth.lex" +TTH_MATHI(177); + YY_BREAK +case 345: +YY_RULE_SETUP +#line 2495 "tth.lex" +TTH_MATHS("-±"); + YY_BREAK +case 346: +#line 2497 "tth.lex" +case 347: +YY_RULE_SETUP +#line 2497 "tth.lex" +TTH_MATHI(218); + YY_BREAK +case 348: +#line 2499 "tth.lex" +case 349: +YY_RULE_SETUP +#line 2499 "tth.lex" +TTH_MATHI(217); + YY_BREAK +case 350: +YY_RULE_SETUP +#line 2500 "tth.lex" +TTH_MATHI(197); + YY_BREAK +case 351: +YY_RULE_SETUP +#line 2501 "tth.lex" +TTH_MATHI(196); + YY_BREAK +case 352: +YY_RULE_SETUP +#line 2502 "tth.lex" +TTH_MATHI(198); + YY_BREAK +case 353: +/* rule 353 can match eol */ +YY_RULE_SETUP +#line 2504 "tth.lex" +TTH_INC_MULTI;/* Don't mess up if it is in wrong place*/ + YY_BREAK +case 354: +YY_RULE_SETUP +#line 2505 "tth.lex" +{ + if(eqclose <= tth_flev-1 && displaystyle){ + /*If we end with a CELL3, cut it off. */ + if( ((jscratch=strlen(eqstr)) >= (js2=strlen(TTH_CELL3))) && + strcmp(eqstr+jscratch-js2,TTH_CELL3) == 0){ + *(eqstr+jscratch-js2)=0; + } + strcat(eqstr,TTH_CELL_L); + if(levhgt[eqclose] == 1)levhgt[eqclose]=2; + if(hgt < 2) hgt=2; + yy_push_state(getsubp); + } +} + YY_BREAK +case 355: +YY_RULE_SETUP +#line 2519 "tth.lex" +{ + if(eqclose > tth_flev-1 || !displaystyle ){ + TTH_MATHI(242); /* TTH_OUTPUT(" "); perhaps not */ + }else{ + delimit("ò",2,eqchar); + strcat(eqstr,eqchar); + *eqchar=0; + if(levhgt[eqclose] == 1)levhgt[eqclose]=2; + hgt=3; + yy_push_state(getsubp); + } + } + YY_BREAK +case 356: +#line 2532 "tth.lex" +case 357: +YY_RULE_SETUP +#line 2532 "tth.lex" +{ + if(eqclose > tth_flev-1){ + TTH_MATHC("(");TTH_MATHI(242);TTH_MATHC(")"); + }else{ + TTH_OINT; + yy_push_state(getsubp); + } + } + YY_BREAK +case 358: +YY_RULE_SETUP +#line 2541 "tth.lex" +TTH_LIMITOP(199); + YY_BREAK +case 359: +YY_RULE_SETUP +#line 2542 "tth.lex" +TTH_LIMITOP(200); + YY_BREAK +case 360: +YY_RULE_SETUP +#line 2543 "tth.lex" +TTH_LIMITOP(218); + YY_BREAK +case 361: +YY_RULE_SETUP +#line 2544 "tth.lex" +TTH_LIMITOP(217); + YY_BREAK +case 362: +YY_RULE_SETUP +#line 2545 "tth.lex" +TTH_LIMITOP(196); + YY_BREAK +case 363: +YY_RULE_SETUP +#line 2546 "tth.lex" +TTH_LIMITOP(197); + YY_BREAK +case 364: +YY_RULE_SETUP +#line 2547 "tth.lex" +TTH_LIMITOP(229); + YY_BREAK +case 365: +YY_RULE_SETUP +#line 2548 "tth.lex" +TTH_LIMITOP(213); + YY_BREAK +case 366: +YY_RULE_SETUP +#line 2549 "tth.lex" +TTH_LIMITOP(242); + YY_BREAK +case 367: +YY_RULE_SETUP +#line 2550 "tth.lex" +/* Drop a limits command if not combined */ + YY_BREAK +case 368: +YY_RULE_SETUP +#line 2552 "tth.lex" +TTH_MATHI(199); + YY_BREAK +case 369: +YY_RULE_SETUP +#line 2553 "tth.lex" +TTH_MATHI(200); + YY_BREAK +case 370: +YY_RULE_SETUP +#line 2554 "tth.lex" +TTH_MATHI(218); + YY_BREAK +case 371: +YY_RULE_SETUP +#line 2555 "tth.lex" +TTH_MATHI(217); + YY_BREAK +case 372: +YY_RULE_SETUP +#line 2556 "tth.lex" +TTH_MATHI(196); + YY_BREAK +case 373: +YY_RULE_SETUP +#line 2557 "tth.lex" +TTH_MATHI(197); + YY_BREAK +case 374: +YY_RULE_SETUP +#line 2558 "tth.lex" +TTH_MATHI(229); + YY_BREAK +case 375: +YY_RULE_SETUP +#line 2559 "tth.lex" +TTH_MATHI(213); + YY_BREAK +case 376: +YY_RULE_SETUP +#line 2561 "tth.lex" +TTH_MATHI(184); + YY_BREAK +case 377: +YY_RULE_SETUP +#line 2562 "tth.lex" +TTH_MATHC("×"); + YY_BREAK +/*\\times TTH_MATHI(180);*/ +case 378: +YY_RULE_SETUP +#line 2564 "tth.lex" +TTH_MATHC(" <~"); + YY_BREAK +case 379: +YY_RULE_SETUP +#line 2565 "tth.lex" +TTH_MATHC(" >~"); + YY_BREAK +case 380: +YY_RULE_SETUP +#line 2567 "tth.lex" +TTH_MATHC(" ");TTH_MATHC("|");TTH_MATHC(" "); + YY_BREAK +case 381: +YY_RULE_SETUP +#line 2568 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(163);TTH_MATHC(" "); + YY_BREAK +case 382: +YY_RULE_SETUP +#line 2569 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(163);TTH_MATHC(" "); + YY_BREAK +case 383: +YY_RULE_SETUP +#line 2570 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(179);TTH_MATHC(" "); + YY_BREAK +case 384: +YY_RULE_SETUP +#line 2571 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(179);TTH_MATHC(" "); + YY_BREAK +case 385: +YY_RULE_SETUP +#line 2572 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(186);TTH_MATHC(" "); + YY_BREAK +case 386: +YY_RULE_SETUP +#line 2573 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(187);TTH_MATHC(" "); + YY_BREAK +case 387: +#line 2575 "tth.lex" +case 388: +YY_RULE_SETUP +#line 2575 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(185);TTH_MATHC(" "); + YY_BREAK +case 389: +YY_RULE_SETUP +#line 2576 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(185);TTH_MATHC(" "); + YY_BREAK +case 390: +YY_RULE_SETUP +#line 2577 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(203);TTH_MATHC(" "); + YY_BREAK +case 391: +YY_RULE_SETUP +#line 2578 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(204);TTH_MATHC(" "); + YY_BREAK +case 392: +YY_RULE_SETUP +#line 2579 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(205);TTH_MATHC(" "); + YY_BREAK +case 393: +YY_RULE_SETUP +#line 2580 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(201);TTH_MATHC(" "); + YY_BREAK +case 394: +YY_RULE_SETUP +#line 2581 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(202);TTH_MATHC(" "); + YY_BREAK +case 395: +YY_RULE_SETUP +#line 2582 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(206);TTH_MATHC(" "); + YY_BREAK +case 396: +#line 2584 "tth.lex" +case 397: +YY_RULE_SETUP +#line 2584 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(207);TTH_MATHC(" "); + YY_BREAK +case 398: +#line 2586 "tth.lex" +case 399: +YY_RULE_SETUP +#line 2586 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(39);TTH_MATHC(" "); + YY_BREAK +case 400: +#line 2588 "tth.lex" +case 401: +YY_RULE_SETUP +#line 2588 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(64);TTH_MATHC(" "); + YY_BREAK +case 402: +YY_RULE_SETUP +#line 2589 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(181);TTH_MATHC(" "); + YY_BREAK +case 403: +#line 2591 "tth.lex" +case 404: +YY_RULE_SETUP +#line 2591 "tth.lex" +TTH_MATHI(172); + YY_BREAK +case 405: +YY_RULE_SETUP +#line 2592 "tth.lex" +TTH_MATHI(172); + YY_BREAK +/* A slight kludge */ +case 406: +#line 2595 "tth.lex" +case 407: +#line 2596 "tth.lex" +case 408: +#line 2597 "tth.lex" +case 409: +YY_RULE_SETUP +#line 2597 "tth.lex" +TTH_MATHI(174); + YY_BREAK +case 410: +YY_RULE_SETUP +#line 2598 "tth.lex" +TTH_MATHI(174); + YY_BREAK +case 411: +YY_RULE_SETUP +#line 2599 "tth.lex" +TTH_MATHI(173); + YY_BREAK +case 412: +YY_RULE_SETUP +#line 2600 "tth.lex" +TTH_MATHI(175); + YY_BREAK +case 413: +YY_RULE_SETUP +#line 2601 "tth.lex" +TTH_MATHC(yytext); + YY_BREAK +case 414: +YY_RULE_SETUP +#line 2602 "tth.lex" +TTH_MATHC(yytext); + YY_BREAK +case 415: +#line 2604 "tth.lex" +case 416: +YY_RULE_SETUP +#line 2604 "tth.lex" +TTH_MATHI(171); + YY_BREAK +case 417: +YY_RULE_SETUP +#line 2605 "tth.lex" +TTH_MATHI(220); + YY_BREAK +case 418: +YY_RULE_SETUP +#line 2606 "tth.lex" +TTH_MATHI(220); + YY_BREAK +case 419: +YY_RULE_SETUP +#line 2607 "tth.lex" +TTH_MATHI(222); + YY_BREAK +case 420: +YY_RULE_SETUP +#line 2608 "tth.lex" +TTH_MATHI(222); + YY_BREAK +case 421: +YY_RULE_SETUP +#line 2609 "tth.lex" +TTH_MATHC(yytext); + YY_BREAK +case 422: +#line 2611 "tth.lex" +/* moved before if code \\iff TTH_MATHI(219); */ +case 423: +YY_RULE_SETUP +#line 2612 "tth.lex" +TTH_MATHI(219); + YY_BREAK +case 424: +YY_RULE_SETUP +#line 2613 "tth.lex" +TTH_MATHI(221); + YY_BREAK +case 425: +YY_RULE_SETUP +#line 2614 "tth.lex" +TTH_MATHI(223); + YY_BREAK +/* \\dots{SP}* TTH_MATHI(188); Not in math mode */ +case 426: +YY_RULE_SETUP +#line 2616 "tth.lex" +TTH_MATHI(188); + YY_BREAK +case 427: +YY_RULE_SETUP +#line 2617 "tth.lex" +TTH_MATHI(188); + YY_BREAK +case 428: +YY_RULE_SETUP +#line 2618 "tth.lex" +TTH_MATHI(188); + YY_BREAK +case 429: +YY_RULE_SETUP +#line 2619 "tth.lex" +TTH_MATHI(188); + YY_BREAK +case 430: +YY_RULE_SETUP +#line 2620 "tth.lex" +TTH_MATHI(188); + YY_BREAK +case 431: +YY_RULE_SETUP +#line 2621 "tth.lex" +TTH_OUTPUT("···"); + YY_BREAK +case 432: +YY_RULE_SETUP +#line 2622 "tth.lex" +TTH_OUTPUT(":"); + YY_BREAK +case 433: +YY_RULE_SETUP +#line 2623 "tth.lex" +TTH_MATHC("@"); + YY_BREAK +case 434: +#line 2625 "tth.lex" +case 435: +YY_RULE_SETUP +#line 2625 "tth.lex" +TTH_OUTPUT(TTH_DAG); + YY_BREAK +case 436: +#line 2627 "tth.lex" +case 437: +YY_RULE_SETUP +#line 2627 "tth.lex" +TTH_OUTPUT(TTH_DDAG); + YY_BREAK +case 438: +YY_RULE_SETUP +#line 2629 "tth.lex" +TTH_MATHC("arccos"); + YY_BREAK +case 439: +YY_RULE_SETUP +#line 2630 "tth.lex" +TTH_MATHC("arcsin"); + YY_BREAK +case 440: +YY_RULE_SETUP +#line 2631 "tth.lex" +TTH_MATHC("arctan"); + YY_BREAK +case 441: +YY_RULE_SETUP +#line 2632 "tth.lex" +TTH_MATHC("arg"); + YY_BREAK +case 442: +YY_RULE_SETUP +#line 2633 "tth.lex" +TTH_MATHC("cos"); + YY_BREAK +case 443: +YY_RULE_SETUP +#line 2634 "tth.lex" +TTH_MATHC("cosh"); + YY_BREAK +case 444: +YY_RULE_SETUP +#line 2635 "tth.lex" +TTH_MATHC("cot"); + YY_BREAK +case 445: +YY_RULE_SETUP +#line 2636 "tth.lex" +TTH_MATHC("coth"); + YY_BREAK +case 446: +YY_RULE_SETUP +#line 2637 "tth.lex" +TTH_MATHC("csc"); + YY_BREAK +/* \\deg{SP}* TTH_MATHC("°"); Incorrect TeX */ +case 447: +YY_RULE_SETUP +#line 2639 "tth.lex" +TTH_MATHC("deg"); + YY_BREAK +case 448: +YY_RULE_SETUP +#line 2640 "tth.lex" +TTH_MATHC("dim"); + YY_BREAK +case 449: +YY_RULE_SETUP +#line 2641 "tth.lex" +TTH_MATHC("exp"); + YY_BREAK +case 450: +YY_RULE_SETUP +#line 2642 "tth.lex" +TTH_MATHC("hom"); + YY_BREAK +case 451: +YY_RULE_SETUP +#line 2643 "tth.lex" +TTH_MATHC("ker"); + YY_BREAK +case 452: +YY_RULE_SETUP +#line 2644 "tth.lex" +TTH_MATHC("lg"); + YY_BREAK +case 453: +YY_RULE_SETUP +#line 2645 "tth.lex" +TTH_MATHC("ln"); + YY_BREAK +case 454: +YY_RULE_SETUP +#line 2646 "tth.lex" +TTH_MATHC("log"); + YY_BREAK +case 455: +YY_RULE_SETUP +#line 2647 "tth.lex" +TTH_MATHC("sec"); + YY_BREAK +case 456: +YY_RULE_SETUP +#line 2648 "tth.lex" +TTH_MATHC("sin"); + YY_BREAK +case 457: +YY_RULE_SETUP +#line 2649 "tth.lex" +TTH_MATHC("sinh"); + YY_BREAK +case 458: +YY_RULE_SETUP +#line 2650 "tth.lex" +TTH_MATHC("tan"); + YY_BREAK +case 459: +YY_RULE_SETUP +#line 2651 "tth.lex" +TTH_MATHC("tanh"); + YY_BREAK +case 460: +#line 2654 "tth.lex" +case 461: +#line 2655 "tth.lex" +case 462: +#line 2656 "tth.lex" +case 463: +#line 2657 "tth.lex" +case 464: +#line 2658 "tth.lex" +case 465: +#line 2659 "tth.lex" +case 466: +#line 2660 "tth.lex" +case 467: +#line 2661 "tth.lex" +case 468: +#line 2662 "tth.lex" +case 469: +YY_RULE_SETUP +#line 2662 "tth.lex" +{ + if(strstr(yytext,"nolimit")){js2=0;}else{js2=1;} + *(yytext+1+strcspn(yytext+1," \\"))=0; + if(eqclose >tth_flev-1 || js2==0){ TTH_MATHC(yytext+1); + }else{ + strcat(eqstr,TTH_CELL3); + strcat(eqlimited,yytext+1); + oa_removes=0; + yy_push_state(getsubp); + if(levhgt[eqclose] == 1) levhgt[eqclose]=2; /* Force fraction closure */ + } + } + YY_BREAK +case 470: +/* rule 470 can match eol */ +#line 2675 "tth.lex" +case 471: +/* rule 471 can match eol */ +YY_RULE_SETUP +#line 2675 "tth.lex" +{ + if(eqclose > tth_flev-1 || !displaystyle ){ + unput('{'); + }else{ + TTH_INC_MULTI; + strcat(eqstr,TTH_CELL3); + mkkey(eqstr,eqstrs,&eqdepth); + eqclose++; + if(tth_flev<0)tth_flev=tth_flev-99; + TTH_PUSH_CLOSING; + active[eqclose-1]=30; + /*TTH_PRETEXCLOSE("\\tth_eqlimited");*/ + oa_removes=0; + if(*(yytext+1) == 'o'){ + TTH_CCPY(closing,TTH_OBRB); + strcpy(eqstr,TTH_OBR); + }else if(*(yytext+1) == 'u'){ + TTH_CCPY(closing,TTH_OBR); + strcpy(eqstr,TTH_OBRB); + }else { + strcpy(eqstr,""); + unput(' '); + } + mkkey(eqstr,eqstrs,&eqdepth); + *eqstr=0; + tophgt[eqclose]=1; + levhgt[eqclose]=1; + active[eqclose]=1; + unput('{'); + } +} + YY_BREAK +case 472: +YY_RULE_SETUP +#line 2706 "tth.lex" +{ /* not done eqlimited section for mathop, overbrace */ + if(tth_debug&2)fprintf(stderr,"Mathop eqlimited:%s\n",eqstr); + if(strlen(eqlimited)+strlen(eqstr)< TTH_DLEN) { + strcat(eqlimited,eqstr); + if(tth_debug&2)fprintf(stderr,"EQLIMITED=||%s||\n",eqlimited); + }else{ + fprintf(stderr, + "Error: Fatal! Exceeded eqlimited storage. Over/underbrace too long.\n"); + TTH_EXIT(5); + } + *eqstr=0; + /*strcpy(eqstr,eqstrs[eqdepth-1]);*/ + yy_push_state(getsubp); /*Does not work here */ + if(levhgt[eqclose] == 1)levhgt[eqclose]=2; /* Force fraction closure */ + /*active[eqclose-1]=0;*/ +} + YY_BREAK +/* end of symbols */ +case 473: +YY_RULE_SETUP +#line 2724 "tth.lex" +/* Nothing needs doing */ + YY_BREAK +case 474: +YY_RULE_SETUP +#line 2725 "tth.lex" +TTH_SWAP("\\buildrel\\rightarrow\\over "); + YY_BREAK +case 475: +YY_RULE_SETUP +#line 2726 "tth.lex" +TTH_SWAP("\\buildrel\\leftarrow\\over "); + YY_BREAK +/* Above accents expressed with braces. Removed {WSP} 11 Apr */ +case 476: +YY_RULE_SETUP +#line 2729 "tth.lex" +{ /* single character bar; convert to \sar */ + *(yytext+1)='s'; + TTH_SCAN_STRING(yytext); + } + YY_BREAK +case 477: +#line 2734 "tth.lex" +case 478: +#line 2735 "tth.lex" +case 479: +#line 2736 "tth.lex" +case 480: +#line 2737 "tth.lex" +case 481: +#line 2738 "tth.lex" +case 482: +#line 2739 "tth.lex" +case 483: +#line 2740 "tth.lex" +case 484: +YY_RULE_SETUP +#line 2740 "tth.lex" +{ + if(tth_debug&2) { + fprintf(stderr,"Start Overaccent {, eqdepth=%d, eqclose=%d, tth_flev=%d, levdelim=%s.\n",eqdepth,eqclose,tth_flev,levdelim[eqclose]); + } + if(*(yytext+2)=='d') *(yytext+1)='2'; + if(strstr(yytext,"wide")==yytext+1) yytext=yytext+4; /* skip wide */ + if(eqclose > tth_flev && *(yytext+1)=='q'){TTH_OUTPUT(scratchstring);} + if(eqclose > tth_flev && tth_istyle&2 && *(yytext+1)!='q'){ + /* Testing of stylesheet aproach for inline use: -w2 not Netscape. */ + switch(*(yytext+1)){ + case 'h': TTH_OUTPUT("");TTH_MATHI(217); + TTH_OUTPUT("");break; + case 't':TTH_OUTPUT("~");break; + case 'o': case 'b': case 's': + TTH_OUTPUT("");TTH_MATHI(190); + TTH_OUTPUT("");break; + case 'd':TTH_OUTPUT("· ");break; + case '2':TTH_OUTPUT("·· ");break; + case 'v': + TTH_OUTPUT("");TTH_MATHI(174); + TTH_OUTPUT("");break; + } + }else{ /*Display or non-style in-line*/ + mkkey(eqstr,eqstrs,&eqdepth); + eqclose++; + *eqstr=0; + if(tth_flev<0)tth_flev=tth_flev-99; + TTH_PUSH_CLOSING; + if(eqclose > tth_flev){ /* Inline levels will be enclosed in [()]. */ + TTH_CCPY(closing,""); + switch(*(yytext+1)){ + case 'o': case 'b': case 's': TTH_MATHS("`");break; + case 'd': TTH_CCPY(closing,"\\dot");break; + case '2': TTH_CCPY(closing,"\\ddot");break; + case 't': TTH_CCPY(closing,"\\tilde");break; + case 'h': TTH_MATHC("^");break; + case 'v': TTH_CCPY(closing,"\\vec");break; + case 'q': /* output moved above to fix inline */ break; + default : fprintf(stderr,"Overaccent error:%s,%d\n",yytext,*(yytext+1)); + } + }else{ /* Display case*/ + TTH_CCPY(closing,TTH_OA3); + switch(*(yytext+1)){ + case 'o': strcpy(eqstr,TTH_DIV); + strcat(eqstr,TTH_OA5);TTH_CCPY(closing,TTH_OA3); + break; + case 'b': case 's': TTH_OUTPUT(TTH_OA1); + TTH_OUTPUT((tth_istyle&1 ? "-":"_"));TTH_OUTPUT(TTH_OA2);break; + case 'd': TTH_OUTPUT(TTH_OA1); + if(tth_istyle&1) {TTH_MATHI(215);} else {TTH_OUTPUT(".");} + TTH_OUTPUT(TTH_OA2);break; + case '2': TTH_OUTPUT(TTH_OA1); + if(tth_istyle&1) {TTH_MATHI(215);TTH_MATHI(215);} else + {TTH_OUTPUT("..");} TTH_OUTPUT(TTH_OA2);break; + /* case '2': strcpy(eqstr,"..
    ");break; */ + case 't':TTH_OUTPUT(TTH_OA1);TTH_OUTPUT("~");strcat(eqstr,TTH_OA2);break; + case 'h':TTH_OUTPUT(TTH_OA1);TTH_OUTPUT("^");strcat(eqstr,TTH_OA2);break; + case 'v':TTH_OUTPUT(TTH_OA1);TTH_MATHI(174);TTH_OUTPUT(TTH_OA2);break; + /* case 'v': TTH_MATHI(174);strcat(eqstr,"
    ");break; */ + case 'q': { + if(tth_debug&2)fprintf(stderr,"qrtlen=%d\n",qrtlen); + sprintf(eqstr,"%s  ",TTH_OA1); + for(i=0;i%s%s%s", + TTH_FOOTNOTESIZE,scrstring,TTH_SIZEEND); + TTH_OUTPUT(scratchstring); + } + sprintf(dupstore,"{\\surd %s}",margs[jscratch]); + TTH_SCAN_STRING(dupstore); + *dupstore=0; + }else if(strcspn(margs[jscratch],"{}\\")==js2 + && !(tth_istyle&1) /* Only for non-compressed */ + && !qrtlen2 /* And non index */ + ){/* multiple char qrt case.*/ + sprintf(scratchstring,"%s%s%s",TTH_SYMBOL,TTH_SYMPT(chr1),TTH_SYMEND); + sprintf(dupstore,"\\qrt{%s}",margs[jscratch]); + qrtlen=strlen(dupstore)-6; + js2=0; + chscratch=dupstore+5; + while((jscratch=strcspn(chscratch," )(^_")) != strlen(chscratch)){ + js2++; + chscratch=chscratch+jscratch+1; + if(!strcspn((chscratch-1),"^_"))js2++; + } + qrtlen=qrtlen-(0.5*js2); + TTH_SCAN_STRING(dupstore);*dupstore=0; + }else{ /* Default case, embedded groups or commands. Or index*/ + if(qrtlen2){ + sprintf(scratchstring, + "%s%s%s%s%s%s",TTH_FOOTNOTESIZE,scrstring,TTH_SIZEEND, + TTH_SYMBOL,TTH_SYMPT(chr1),TTH_SYMEND); + }else{ + sprintf(scratchstring,"%s%s%s",TTH_SYMBOL,TTH_SYMPT(chr1),TTH_SYMEND); + } + if(eqclose > tth_flev-1 ) { /* put in braces if topped out */ + TTH_OUTPUT(scratchstring); + TTH_MATHC("{"); + TTH_PUSH_CLOSING; + /* TTH_CCPY(closing,"}"); Came in wrong order after fraction. + so fixed in the dupstore call.*/ + if(tth_debug&2) { + fprintf(stderr, + "Start Sqrt {, eqdepth=%d, eqclose=%d, tth_flev=%d, levdelim=%s.\n" + ,eqdepth,eqclose,tth_flev,levdelim[eqclose]); + } + mkkey(eqstr,eqstrs,&eqdepth); + *eqstr=0; + if(tth_flev < 0) tth_flev=tth_flev-99; + eqclose++; + tophgt[eqclose]=0; + levhgt[eqclose]=1; + sprintf(dupstore,"%s}\\}",margs[jscratch]); + }else{ /* use overline */ + sprintf(dupstore,"{\\overline{%s}\\tth_makeroot}",margs[jscratch]); + tth_root_depth++; + /* pass to delimit code via global stack. */ + TTH_SCAN_STRING(dupstore); /* defer the contents scan. Do index */ + tth_flev=tth_flev-99; /* No built-up in index */ + /* use double braces to ensure inline enclosure works correctly. */ + sprintf(dupstore,"{{%s}\\tth_rootindex}",scrstring); + } + TTH_SCAN_STRING(dupstore); + *dupstore=0; + } + yy_pop_state(); + rmdef(margkeys,margs,&margmax); /* Dump two arguments */ + rmdef(margkeys,margs,&margmax); + }else{fprintf(stderr,"Error finding sqrt argument");} +} /* end of tth_sqrt*/ + YY_BREAK +case 488: +YY_RULE_SETUP +#line 2905 "tth.lex" +{ + TTH_CCPY(tth_root_index[tth_root_depth],eqstr); + tth_root_len[tth_root_depth]=strlen(eqstr); + *eqstr=0; + tth_flev=tth_flev+99; +} + YY_BREAK +case 489: +YY_RULE_SETUP +#line 2911 "tth.lex" +strcpy(levdelim[eqclose],"Ö"); + YY_BREAK +/* Above accents etc without braces: embrace following token (and rescan). */ +case 490: +/* rule 490 can match eol */ +#line 2916 "tth.lex" +case 491: +/* rule 491 can match eol */ +#line 2917 "tth.lex" +case 492: +/* rule 492 can match eol */ +#line 2918 "tth.lex" +case 493: +/* rule 493 can match eol */ +#line 2919 "tth.lex" +case 494: +/* rule 494 can match eol */ +#line 2920 "tth.lex" +case 495: +/* rule 495 can match eol */ +#line 2921 "tth.lex" +case 496: +/* rule 496 can match eol */ +YY_RULE_SETUP +#line 2921 "tth.lex" +{ /* overline needs leading WSP */ + TTH_INC_MULTI; + strcpy(dupstore,yytext); + *(dupstore+strcspn(dupstore," \t\r\n"))=0; + /* yy_push_state(embracetok); OLD */ + *expchar=0;TTH_CCPY(exptex,dupstore);*dupstore=0; + yy_push_state(exptokarg); /* overaccent */ + } + YY_BREAK +case 497: +/* rule 497 can match eol */ +YY_RULE_SETUP +#line 2929 "tth.lex" +{ /*This is default.*/ + TTH_INC_MULTI; + if((tth_flev > 0 )){ + strcpy(scrstring,yytext+5); + *(scrstring+strlen(scrstring)-2)=0; + sprintf(scratchstring,"}\\special{html:%s}%s\\tth_endnumbered", + (eqalignlog ? TTH_DISP5 : TTH_DISP3),scrstring); + /*fprintf(stderr,"Ending eqno: %s\n",scratchstring); */ + TTH_SCAN_STRING(scratchstring); + }else{ + yyless(5); TTH_MATHC("     "); + } + } + YY_BREAK +case 498: +YY_RULE_SETUP +#line 2942 "tth.lex" +{ /* Fallback only */ + if((tth_flev > 0 ) && (eqaligncell)) { + tth_enclose(TTH_EQ1,eqstr,TTH_EQ4,eqstore); + strcat(eqstr,TTH_CELL4); + } + TTH_MATHC("     "); + } + YY_BREAK +case 499: +/* rule 499 can match eol */ +YY_RULE_SETUP +#line 2949 "tth.lex" +{ + TTH_INC_MULTI; + TTH_SCAN_STRING("\\left.\\tth_size2\\right"); + } + YY_BREAK +case 500: +/* rule 500 can match eol */ +YY_RULE_SETUP +#line 2953 "tth.lex" +{ + TTH_INC_MULTI; + TTH_SCAN_STRING("\\left.\\tth_size3\\right"); + } + YY_BREAK +case 501: +YY_RULE_SETUP +#line 2957 "tth.lex" +levhgt[eqclose]=2; + YY_BREAK +case 502: +YY_RULE_SETUP +#line 2958 "tth.lex" +levhgt[eqclose]=3; + YY_BREAK +case 503: +/* rule 503 can match eol */ +YY_RULE_SETUP +#line 2959 "tth.lex" +{ + TTH_INC_MULTI;yy_push_state(bigdel);strcpy(scratchstring,"{");} + YY_BREAK +case 504: +/* rule 504 can match eol */ +YY_RULE_SETUP +#line 2961 "tth.lex" +{ + TTH_INC_MULTI;yy_push_state(bigdel);strcpy(scratchstring,"}");} + YY_BREAK +case 505: +YY_RULE_SETUP +#line 2964 "tth.lex" +; + YY_BREAK +case 506: +YY_RULE_SETUP +#line 2965 "tth.lex" +; + YY_BREAK +case 507: +YY_RULE_SETUP +#line 2966 "tth.lex" +; + YY_BREAK +/* Textstyle html is so limited that it makes no sense to use it. + Also it can trip problem with implied grouping of an eq insufficient. + to end dupgroup. Partly avoided by the eqdept>2 test but not entirely.*/ +/* +\\textstyle { + if(eqdepth>2){ + tth_flev=tth_flev-99; + TTH_CCPY(argchar,"\\tth_endtextstyle"); + storetype=5; + yy_push_state(dupgroup); + } +} +\\tth_endtextstyle tth_flev=tth_flev+99; + */ +case 508: +YY_RULE_SETUP +#line 2981 "tth.lex" + + YY_BREAK +case 509: +YY_RULE_SETUP +#line 2982 "tth.lex" + + YY_BREAK +case 510: +YY_RULE_SETUP +#line 2983 "tth.lex" + + YY_BREAK +/* Default equation actions. */ +/* Was single character. IE gave problems. */ +case 511: +YY_RULE_SETUP +#line 2987 "tth.lex" +{ + strcat(eqstr,tth_font_open[tth_push_depth]); + strcat(eqstr,yytext); + strcat(eqstr,tth_font_close[tth_push_depth]); + } + YY_BREAK +case 512: +YY_RULE_SETUP +#line 2993 "tth.lex" +TTH_MATHC(" "); + YY_BREAK +case 513: +#line 2995 "tth.lex" +case 514: +#line 2996 "tth.lex" +case 515: +#line 2997 "tth.lex" +case 516: +#line 2998 "tth.lex" +case 517: +YY_RULE_SETUP +#line 2998 "tth.lex" +{ + if(*(yytext) == '\\'){ chscratch=yytext+1;} else {chscratch=yytext;} + if(*chscratch=='&')chscratch="&"; + /* If the font has been changed, use it for non-letters too */ + if(!tth_mathitalic || strcmp(tth_font_open[tth_push_depth],TTH_ITAL1)!=0 ){ + strcat(eqstr,tth_font_open[tth_push_depth]); + strcat(eqstr,chscratch); + strcat(eqstr,tth_font_close[tth_push_depth]); + }else{ + strcat(eqstr,chscratch); + } +} + YY_BREAK +case 518: +/* rule 518 can match eol */ +YY_RULE_SETUP +#line 3010 "tth.lex" +TTH_INC_MULTI; TTH_SCAN_STRING(" = "); + YY_BREAK +/**** tth pseudo-TeX ******/ +case 519: +YY_RULE_SETUP +#line 3015 "tth.lex" +{ + if(tth_debug&8) fprintf(stderr,"#tthbigsup, eqhgt=%d\n",eqhgt); + strcat(eqstr,TTH_BR); + *expchar=0; + if(strlen(eqlimited)){ + tth_symext(eqlimited,eqstr+strlen(eqstr)); + *eqlimited=0; + for(i=0;i");TTH_PRECLOSE(""); + }else{ + TTH_OUTPUT("");TTH_PRECLOSE(""); + } +} + YY_BREAK +case 529: +YY_RULE_SETUP +#line 3077 "tth.lex" +{ /* No more subp's */ + if(*yytext != '#') yyless(0); + storetype=0; + yy_pop_state(); + if(strlen(supstore) || strlen(substore)){ /* Need to deal with subp */ + strcpy(dupstore,"{\\tthscriptsize{"); + strcat(dupstore,supstore); + strcat(dupstore,"}}#tthbigsup{\\tthscriptsize{"); + strcat(dupstore,substore); + strcat(dupstore,"}}"); + if(tth_istyle&1) eqhgt=0.8*hgt+0.7; else eqhgt=hgt; + if(tth_debug&8)fprintf(stderr,"Scanning subpscripts:%s\n",dupstore); + TTH_SCAN_STRING(dupstore); + *dupstore=0; + *argchar=0; + *supstore=0; + *substore=0; + strcpy(expchar,""); /* make non-null */ + yy_push_state(exptokarg); /* scanning subpscripts */ + }else if(strlen(eqlimited)){ /* No delimiters but a limited symbol */ + tth_symext(eqlimited,eqstr+strlen(eqstr)); + for(i=0;i"); + *eqlimited=0; + } + } + YY_BREAK +/* New big, left, right, delimiters section */ +case 530: +YY_RULE_SETUP +#line 3107 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"{");unput(*scratchstring);} + YY_BREAK +case 531: +YY_RULE_SETUP +#line 3109 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"}");unput(*scratchstring);} + YY_BREAK +case 532: +YY_RULE_SETUP +#line 3111 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"(");unput(*scratchstring);} + YY_BREAK +case 533: +YY_RULE_SETUP +#line 3113 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],")");unput(*scratchstring);} + YY_BREAK +case 534: +YY_RULE_SETUP +#line 3115 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"[");unput(*scratchstring);} + YY_BREAK +case 535: +YY_RULE_SETUP +#line 3117 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"]");unput(*scratchstring);} + YY_BREAK +case 536: +YY_RULE_SETUP +#line 3119 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"é");unput(*scratchstring);} + YY_BREAK +case 537: +YY_RULE_SETUP +#line 3121 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"ù");unput(*scratchstring);} + YY_BREAK +case 538: +YY_RULE_SETUP +#line 3123 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"ë");unput(*scratchstring);} + YY_BREAK +case 539: +YY_RULE_SETUP +#line 3125 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"û");unput(*scratchstring);} + YY_BREAK +case 540: +YY_RULE_SETUP +#line 3127 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"á");unput(*scratchstring);} + YY_BREAK +case 541: +YY_RULE_SETUP +#line 3129 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"ñ");unput(*scratchstring);} + YY_BREAK +case 542: +YY_RULE_SETUP +#line 3131 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"|");unput(*scratchstring);} + YY_BREAK +case 543: +YY_RULE_SETUP +#line 3133 "tth.lex" +{ + yy_pop_state();*levdelim[eqclose+1]=*yytext;unput(*scratchstring);} + YY_BREAK +case 544: +YY_RULE_SETUP +#line 3135 "tth.lex" +yy_pop_state();*levdelim[eqclose+1]=0;unput(*scratchstring); + YY_BREAK +case 545: +YY_RULE_SETUP +#line 3136 "tth.lex" +{ /* unknown bigdelimiter; make blank and then rescan. */ + yy_pop_state();yyless(0); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +/* ************* LaTeX Math constructs. ***********************/ +case 546: +#line 3146 "tth.lex" +case 547: +#line 3147 "tth.lex" +case 548: +YY_RULE_SETUP +#line 3147 "tth.lex" +{ /* Latex display equations */ + if(tth_debug&3)fprintf(stderr,"Latex display eqn %d\n",equatno); + displaystyle=1; + /* Not needed now that empty div is used. + if(tth_htmlstyle&2){ + TTH_OUTPUT(closing); strcpy(closing,"
    "); + TTH_OUTPUT("\n
    \n"); + }*/ + horizmode=0; + strcpy(eqstr,""); + eqclose=0; + mkkey(eqstr,eqstrs,&eqdepth); + TTH_PUSH_CLOSING; + if(!strstr(tth_font_open[tth_push_depth],TTH_ITALO)){ + TTH_CCAT(tth_font_open[tth_push_depth],tth_font_open[0]); + TTH_CCAT(tth_font_close[tth_push_depth],tth_font_close[0]); + } + yy_push_state(equation); + if( (strlen(yytext)>2) && *(yytext+7)=='e'){ + if(*(yytext+strlen(yytext)-2)!='*') { + equatno++; + strcpy(environment,"equation"); + sprintf(envirchar,"%d",equatno); + }else if(tth_multinum) *envirchar=0; + } + if(tth_debug&2) fprintf(stderr,"envirchar=%s, tth_multinum=%d, equatno=%d\n", + envirchar,tth_multinum,equatno); + TTH_SCAN_STRING("{"); /*OCT*/ + } + YY_BREAK +/* begin (inline) math moved after the close math */ +case 549: +YY_RULE_SETUP +#line 3177 "tth.lex" +{ /* Assume this is NOT inside \math */ + if(strstr(yytext,"*") != NULL){ + eqalignlog=1; tth_multinum++; /* No row numbering. No end numbering */ + } else eqalignlog=0; + if(tth_debug&2)fprintf(stderr, + "eqnarray: eqalignlog=%d, tth_multinum=%d yytext=%s\n", + eqalignlog,tth_multinum,yytext); + TTH_SCAN_STRING("\\begin{equation}\\eqalign{"); + } + YY_BREAK +/* ********************** LateX Non Math ********************************/ +case 550: +YY_RULE_SETUP +#line 3189 "tth.lex" +{ /* Check for aux file. If present input. */ + tth_LaTeX=1; + if(tth_splitfile)strcpy(filechar,"index.html"); /*sf*/ + if(strlen(tth_latex_file)){ + TTH_CCPY(argchar,tth_latex_file);strcat(argchar,".aux"); + if( (tth_inputfile=fopen(argchar,"r")) != NULL){ + tth_prefix("\\input ",argchar,eqstore); + TTH_SCAN_STRING(argchar); + fclose(tth_inputfile);tth_inputfile=NULL; + } else{ + fprintf(stderr,"No auxiliary LaTeX file found: %s\n",argchar); + /* New automatic auxfile section.*/ + if(tth_autopic){ + fprintf(stderr, + "...trying to run latex, logfile=%s.tlg. This may take a moment ...\n", + tth_latex_file); + sprintf(scratchstring, + "latex -interaction=batchmode %s >%s.tlg", + tth_latex_file,tth_latex_file); + if((js2=system(scratchstring))!=SUCCESS) + fprintf(stderr,"...latex returned: %d indicating error(s) in the tex file.\n",js2); + if( (tth_inputfile=fopen(argchar,"r")) != NULL){ + tth_prefix("\\input ",argchar,eqstore); + TTH_SCAN_STRING(argchar); + fclose(tth_inputfile);tth_inputfile=NULL; + fprintf(stderr,"...latex seems to have created the aux file.\n"); + }else{ + fprintf(stderr,"**** System call:%s failed to create aux file.\n**** You probably don't have latex installed.\n", + scratchstring); + fprintf(stderr,"**** Continuing, but any forward references etc. will be incorrect.\n"); + } + /* End of auto aux section.*/ + } + } + argchar[0]=0; + }else{ + fprintf(stderr, + "Latex base filename blank. Auxiliary files will not be found.\n"); + } + TTH_PUSH_CLOSING;TTH_CCPY(closing,""); + /* {TTH_PAR_ACTION} Not here because of titles etc. */ + horizmode=0; + } + YY_BREAK +case 551: +YY_RULE_SETUP +#line 3232 "tth.lex" +{/* Open index tid file for writing and start to do so. */ + if(strlen(tth_latex_file)){ + strcpy(scratchstring,tth_latex_file);strcat(scratchstring,".tid"); + if( (tth_indexfile=fopen(scratchstring,"w")) ){ + fprintf(stderr,"Opened index file: %s\n",scratchstring); + /* Open the makeindex style file. Or use default compositor.*/ + strcpy(scratchstring,tth_latex_file);strcat(scratchstring,".tms"); + if( (tth_indexstyle=fopen(scratchstring,"w")) ){ + strcpy(page_compositor,"."); + fprintf(tth_indexstyle,"page_compositor \"%s\"\n",page_compositor); + fclose(tth_indexstyle); + } + } else { + fprintf(stderr,"**** Failed to open index file: %s Line %d\n",scratchstring,tth_num_lines); + } + } + } + YY_BREAK +case 552: +YY_RULE_SETUP +#line 3250 "tth.lex" +{ /* Version to grab whole thing even special chars*/ + *dupstore=0; + *argchar=0; + yy_push_state(indexgroup); + storetype=99; /* Just leave in dupgroup to be dealt with by prior state*/ + yy_push_state(uncommentgroup); + bracecount=-1; +} + YY_BREAK +case 553: +/* rule 553 can match eol */ +YY_RULE_SETUP +#line 3258 "tth.lex" +{ /* \index action on group stored in dupstore. */ + yyless(0); + yy_pop_state(); + if(horizmode) horizmode=1; + chscratch=dupstore+1; /* Remove braces.*/ + *(chscratch+strlen(chscratch)-1)=0; + tthindexrefno++; + if(tth_indexfile != NULL){ + strcpy(scratchstring,chscratch); + *(scratchstring+strcspn(scratchstring,"|@"))= 0 ; + /*Here we should remove spaces and special characters in a version + of scratchstring to be used as the name. Because (quoting) ID and + NAME tokens must begin with a letter ([A-Za-z]) and may be + followed by any number of letters, digits ([0-9]), hyphens ("-"), + underscores ("_"), colons (":"), and periodsx("."). This means + the unallowed characters are: "\n\t_!\"#$%&'()*+,/;<=>?[\\]^`{|}~" */ + /* This version replaced only ! + while(strlen(scratchstring)-strcspn(scratchstring,"!")) + *(scratchstring+strcspn(scratchstring,"!")) = '+'; */ + while(strlen(scratchstring) + -strcspn(scratchstring,"\n\t !\"#$%&'()*+,/;<=>?[\\]^`{|}~")) + *(scratchstring + +strcspn(scratchstring,"\n\t !\"#$%&'()*+,/;<=>?[\\]^`{|}~")) = '_'; + strcpy(scrstring,chscratch); + *(scrstring+strcspn(scrstring,"|"))= 0 ; /* remove all number formatting */ + if(lbook){ + if(appendix)sprintf(argchar,"%c",chapno+64); + else sprintf(argchar,"%d",chapno); + if(strstr(chscratch,"|see")==NULL){ + if(tth_splitfile) fprintf(tth_indexfile, /*sf*/ + "\\indexentry{%s|href{%s#%s%s%d%d}}{%s%s%d}\n", /*sf*/ + scrstring,filechar,scratchstring,/*sf*/ + argchar,sectno,tthindexrefno,/*sf*/ + argchar,page_compositor,sectno); else /*sf*/ + fprintf(tth_indexfile, + "\\indexentry{%s|href{#%s%s%d%d}}{%s%s%d}\n", + scrstring,scratchstring, + argchar,sectno,tthindexrefno, + argchar,page_compositor,sectno); + fprintf(tth_fdout,"", + scratchstring,argchar,sectno,tthindexrefno); + }else{ /* A |see case */ + fprintf(tth_indexfile, + "\\indexentry{%s}{%s%s%d}\n",chscratch, + argchar,page_compositor,sectno); } + }else { + if(appendix)sprintf(argchar,"%c",sectno+64); + else sprintf(argchar,"%d",sectno); + if(strstr(chscratch,"|see")==NULL){ + if(tth_splitfile) fprintf(tth_indexfile, /*sf*/ + "\\indexentry{%s|href{%s#%s%s%d%d}}{%s%s%d}\n", /*sf*/ + scrstring,filechar,scratchstring, /*sf*/ + argchar,subsectno,tthindexrefno, /*sf*/ + argchar,page_compositor,subsectno); else /*sf*/ + fprintf(tth_indexfile, + "\\indexentry{%s|href{#%s%s%d%d}}{%s%s%d}\n", + scrstring,scratchstring, + argchar,subsectno,tthindexrefno, + argchar,page_compositor,subsectno); + fprintf(tth_fdout,"" + ,scratchstring,argchar,subsectno); + }else{ /* A |see case */ + fprintf(tth_indexfile, + "\\indexentry{%s}{%s%s%d}\n",chscratch, + argchar,page_compositor,subsectno); + } + } + *argchar=0; + } + *dupstore=0; +} + YY_BREAK +case 554: +YY_RULE_SETUP +#line 3330 "tth.lex" +{ /* Check for file. If present put title and open */ + if(tth_indexfile !=NULL){ + fprintf(stderr,"Closing index file and processing ...\n"); + fclose(tth_indexfile); + tth_indexfile=NULL;/* Omitting this caused segfaults during + footnote wrap if there are index entries in + footnotes. I guess because one tries to + write to fclosed file. In any case those + entries aren't entered into index. Fixme.*/ + if(*tth_index_cmd){ + if(strstr(tth_index_cmd," ")){/* Command with spaces is complete format*/ + sprintf(scratchstring, + tth_index_cmd,tth_latex_file,tth_latex_file,tth_latex_file); + }else{/* No spaces: just the makeindex command */ + sprintf(scratchstring,"%s -o %s.tin %s.tid", + tth_index_cmd,tth_latex_file,tth_latex_file); + } + }else sprintf(scratchstring,"makeindex -o %s.tin -s %s.tms %s.tid", + tth_latex_file,tth_latex_file,tth_latex_file); + jscratch=system(scratchstring); + if(jscratch != SUCCESS){ + fprintf(stderr,"**** System call failed: %s**** Index not made.\n" + ,scratchstring); + } + strcpy(scratchstring,"(showing section)"); + } else *scratchstring=0; + /* Get the index anyway */ + sprintf(argchar,"\n\\special{html:\n}\\beginsection{\\indexname{ %s}}\\par\\input %s.tin", + scratchstring,tth_latex_file); + TTH_SCAN_STRING(argchar); + argchar[0]=0; + if(tth_splitfile){ /*sf*/ + strcpy(filenext,"docindex.html");/*sf*/ + TTH_SCAN_STRING("\\tthsplittail\\tthsplitinv\\tthsplittop\\tthfileupd"); /*sf*/ + }/*sf*/ + } + YY_BREAK +case 555: +YY_RULE_SETUP +#line 3366 "tth.lex" +{ /* Check for file. If present put title and open */ + TTH_CCPY(argchar,tth_latex_file);TTH_CCAT(argchar,".toc"); + if( (tth_inputfile=fopen(argchar,"r")) != NULL){ + fclose(tth_inputfile);tth_inputfile=NULL; + sprintf(scratchstring,"\\htmlheader{1}{\\contentsname{ }}\\input %s ", + argchar); + if(tth_indexfile) {TTH_PUSH_BUFF(11);} else /*get extra code*/ + {TTH_PUSH_BUFF(0);} /*braces required*/ + yy_scan_string(scratchstring); + } + argchar[0]=0; + } + YY_BREAK +case 556: +YY_RULE_SETUP +#line 3378 "tth.lex" +{ /* Check for file. If present put title and open */ + TTH_CCPY(argchar,tth_latex_file);strcat(argchar,".lot"); + if( (tth_inputfile=fopen(argchar,"r")) != NULL){ + tth_prefix("\\htmlheader{1}{\\listtablename{ }}\\input ",argchar,eqstore); + TTH_SCAN_STRING(argchar); + fclose(tth_inputfile);tth_inputfile=NULL; + } + tbno=0;/*sf*/ + argchar[0]=0; + } + YY_BREAK +case 557: +YY_RULE_SETUP +#line 3388 "tth.lex" +{ /* Check for file. If present put title and open */ + TTH_CCPY(argchar,tth_latex_file);strcat(argchar,".lof"); + if( (tth_inputfile=fopen(argchar,"r")) != NULL){ + tth_prefix("\\htmlheader{1}{\\listfigurename{ }}\\input ",argchar,eqstore); + TTH_SCAN_STRING(argchar); + fclose(tth_inputfile);tth_inputfile=NULL; + } + fgno=0;/*sf*/ + argchar[0]=0; + } + YY_BREAK +case 558: +/* rule 558 can match eol */ +YY_RULE_SETUP +#line 3398 "tth.lex" +{ /*Processing aux file*/ + TTH_INC_LINE + if(strstr(yytext,"toc}{\\contentsline")==yytext+12){ /*sf*/ + /* Updating section label*/ /*sf*/ + if( (chscratch=strstr(yytext,"numberline {"))!=NULL){ /*sf*/ + strncpy(schar,(chscratch+12),2); /*max: 2 digit number*/ /*sf*/ + *(schar+strcspn(schar,"}."))=0; /*sf*/ + } /*sf*/ + }else if(strstr(yytext,"lof}{\\contentsline")){ /*sf*/ + if(fgno < TNO) mkkey(schar,fchar,&fgno); /*sf*/ + else fprintf(stderr,"Too many figures"); /*sf*/ + }else if(strstr(yytext,"lot}{\\contentsline")){ /*sf*/ + if(tbno < TNO) mkkey(schar,tchar,&tbno); /*sf*/ + else fprintf(stderr,"Too many tables"); /*sf*/ + } /*sf*/ +} + YY_BREAK +case 559: +/* rule 559 can match eol */ +YY_RULE_SETUP +#line 3414 "tth.lex" +{ + horizmode=1; + *scrstring=0; + if(tth_debug&128) fprintf(stderr,"Contentsline %s\n",yytext); + strcpy(refchar,"tth_sEc"); + if(strstr(yytext,"{chapter}")!=NULL){ + chaplog=4;strcpy(refchar,"tth_chAp"); + }else if(strstr(yytext,"{table}")!=NULL){ + strcpy(refchar,"tth_tAb"); + for(i=0;i<4;i++) strcat(scrstring," "); + }else if(strstr(yytext,"{figure}")!=NULL){ + strcpy(refchar,"tth_fIg"); + for(i=0;i<4;i++) strcat(scrstring," "); + }else if(strstr(yytext,"{section}")!=NULL){ + for(i=0;i%s  ", + scrstring,auxflch,refchar,chscratch,chscratch); + TTH_TEX_FN("{#1}\\special{html:
    }\\tthunknown#tthdrop2",2); + }else{ + if(strstr(yytext,"{part}")){/*Only enter unnumbered line if part*/ + TTH_TEX_FN("{#1}\\special{html:
    }\\tthunknown#tthdrop2",2); + }else{TTH_TEX_FN("\\tthunknown#tthdrop2",2);} + } + unput('{'); /* Already in first group. */ +} + YY_BREAK +case 560: +/* rule 560 can match eol */ +YY_RULE_SETUP +#line 3465 "tth.lex" +{ + TTH_INC_MULTI; + js2=strcspn(yytext,"{"); + strcpy(dupstore,yytext+js2+1); + if(tth_debug&256) fprintf(stderr,"Citations:%s\n",dupstore); + i=0;ind=-1; + strcpy(dupstore2,"\\tthciteob"); + for(jargmax=0;jargmax<30;jargmax++){ +/* ind=ind+i+1; */ + ind=ind+i+1+strspn(dupstore+ind+i+1,", \t\n");/*Advance to start of next*/ + js2=strcspn(dupstore+ind,"},\t\n"); /*Termination of key*/ + i=js2+strspn(dupstore+ind+js2," \t\n"); /* Next divider*/ + *(dupstore+ind+js2)=0; + jarg=indexkey(dupstore+ind,keys,&nkeys); + if(jarg == -1) { + fprintf(stderr,"No bibcite for %s\n",dupstore+ind); + }else{ + if(ckeys[jarg]==0){ + if(tth_splitfile)sprintf(dupstore2+strlen(dupstore2),/*sf*/ + "\\special{html:}",/*sf*/ + dupstore+ind,dupstore+ind);else /*sf*/ + sprintf(dupstore2+strlen(dupstore2), + "\\special{html:}", + dupstore+ind,dupstore+ind); + ckeys[jarg]++; + }else{ + if(tth_splitfile)sprintf(dupstore2+strlen(dupstore2),/*sf*/ + "\\special{html:}",/*sf*/ + dupstore+ind);else /*sf*/ + sprintf(dupstore2+strlen(dupstore2), + "\\special{html:}", + dupstore+ind); + } + strcpy(scratchstring,defs[jarg]); + if((chscratch=strstr(scratchstring,"#tthdrop0"))) *chscratch=0; + /* New operator on the bibcite */ + strcat(dupstore2,"\\tthciteform "); + strcat(dupstore2,scratchstring); + strcat(dupstore2,"\\special{html:}"); + if(!nargs[jarg]){ + if(lbook)jscratch=chapno; else jscratch=sectno; + if(appendix) nargs[jarg]=jscratch+64; + else nargs[jarg]=jscratch; + js2=jarg; + mkkey(filechar,optargs,&js2); + } + } + if(*(dupstore+ind+i+1)){ + strcat(dupstore2,"\\tthcitepb"); + } else { /* Exhausted citations */ + js2=strcspn(yytext,"{"); + if((jscratch=strcspn(yytext,"[")) < js2-2){ + strcat(dupstore2,"\\tthcitefi{}"); + strncat(dupstore2,yytext+jscratch+1,js2-jscratch-2); + } + strcat(dupstore2,"\\tthcitecb{}"); + jargmax=30; + } + } + if(tth_debug&256)fprintf(stderr,"Rescanning citations:\n%s\n",dupstore2); + TTH_SCAN_STRING(dupstore2); + i=0;ind=0;jarg=0;jargmax=0; *dupstore=0; *dupstore2=0; +} + YY_BREAK +case 561: +YY_RULE_SETUP +#line 3529 "tth.lex" +TTH_TEX_FN("\\tth_thebibliography#tthdrop1",1); + YY_BREAK +case 562: +YY_RULE_SETUP +#line 3530 "tth.lex" +{ + if(lbook) {TTH_SCAN_STRING("\\special{html:

    }\\bibname\\special{html:

    \n}\\begin{description}");} + else {TTH_SCAN_STRING("\\special{html:

    }\\refname\\special{html:

    \n}\\begin{description}");} + if(tth_splitfile){ /*sf*/ + if(!bibliogs) strcpy(filenext,"refs.html"); /*sf*/ + else sprintf(filenext,"refs%d.html",bibliogs); /*sf*/ + bibliogs++; /*sf*/ + TTH_SCAN_STRING("\\tthsplittail\\tthsplitinv\\tthsplittop\\tthfileupd"); /*sf*/ + }/*sf*/ + TTH_SCAN_STRING("\\par"); + } + YY_BREAK +case 563: +YY_RULE_SETUP +#line 3542 "tth.lex" +TTH_TEX_FN_OPT("\\tthbibitem{#2}#tthdrop2",2,""); + YY_BREAK +case 564: +/* rule 564 can match eol */ +YY_RULE_SETUP +#line 3543 "tth.lex" +{ + TTH_INC_MULTI; + TTH_OUTPUT(closing);strcpy(closing,"\n"); /*27 Apr 2001 */ + fprintf(tth_fdout,"
    "); + strcpy(dupstore,yytext); + *(dupstore+strlen(dupstore)-1)=0; + if((chs2=strstr(dupstore,"]"))==NULL) chs2=dupstore; + chs2=chs2+strcspn(chs2,"{")+1; + jarg=indexkey(chs2,keys,&nkeys); + if(jarg== -1){ + fprintf(stderr,"Unknown bibitem %s\n",chs2); + fprintf(tth_fdout,"[]
    "); + }else{ + *(scratchstring)=0; + if(tth_splitfile){ /*sf*/ + if(!optargs[jarg]) /*sf*/ + {fprintf(stderr,"**** Error: Null bibitem optarg (file)\n");}else/*sf*/ + strcpy(scratchstring,optargs[jarg]); /*sf*/ + } /*sf*/ + /* New operator on the bibcite */ + strcpy(scrstring,"\\tthbibform "); + strcat(scrstring,defs[jarg]); + if((chscratch=strstr(scrstring,"#tthdrop"))) *chscratch=0;/* huh?*/ + strcat(scrstring,"\\tthbibcb"); + strcat(scrstring,"}"); + TTH_PUSH_CLOSING; strcpy(closing,"
    "); + fprintf(tth_fdout,"",scratchstring,chs2,chs2); + TTH_SCAN_STRING(scrstring); + } + jarg=0;*dupstore=0; + } + YY_BREAK +case 565: +/* rule 565 can match eol */ +YY_RULE_SETUP +#line 3574 "tth.lex" +{ /* Input the bbl file. */ + TTH_CCPY(argchar,tth_latex_file);strcat(argchar,".bbl"); + if( (tth_inputfile=fopen(argchar,"r")) != NULL){ + tth_prefix("\\input ",argchar,eqstore); + TTH_SCAN_STRING(argchar); + fclose(tth_inputfile);tth_inputfile=NULL; + }else{ + if(tth_autopic){ + fprintf(stderr, + "**** No bibliography file %s found. Trying to create.\n",argchar); + /* New automatic bbl file section.*/ + fprintf(stderr, + "...trying to run latex, logfile=%s.tlg. This may take a moment ...\n", + tth_latex_file); + sprintf(scratchstring,"latex -interaction=batchmode %s >%s.tlg", + tth_latex_file,tth_latex_file); + if((js2=system(scratchstring))!=SUCCESS) + fprintf(stderr,"...latex returned: %d indicating error(s) in the tex file.\n",js2); + fprintf(stderr,"...trying to run bibtex ...\n"); + sprintf(scrstring,"bibtex %s",tth_latex_file); + if(system(scrstring)!=SUCCESS)fprintf(stderr,"Bibtex failed\n"); + if(system(scratchstring)!=SUCCESS){}; + if( (tth_inputfile=fopen(argchar,"r")) != NULL){ + tth_prefix("\\input ",argchar,eqstore); + TTH_SCAN_STRING(argchar); + fclose(tth_inputfile);tth_inputfile=NULL; + fprintf(stderr,"...latex/bibtex have created file. "); + fprintf(stderr,"If Unknown bibitem now occurs, rerun tth.\n"); + }else{ + fprintf(stderr,"**** System calls failed. You probably don't have latex or bibtex installed.\n**** No bbl file created. Bibliography will be incomplete.\n"); + } + }else{ + /* End of auto bbl section.*/ + fprintf(stderr, + "**** No bibliography file %s found. Create using latex and bibtex.\n", + argchar); + } + } + argchar[0]=0; + } + YY_BREAK +case 566: +YY_RULE_SETUP +#line 3615 "tth.lex" +{ + chapno=0;sectno=0;appendix=1; + if(lbook) strcpy(scratchstring, + "\\renewcommand{\\thechapter}{\\Alph{chapter}}"); + else strcpy(scratchstring, + "\\renewcommand{\\thesection}{\\Alph{section}}"); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +case 567: +YY_RULE_SETUP +#line 3623 "tth.lex" +{ + fprintf(tth_fdout,"\n

    "); yy_push_state(tokenarg); TTH_CCPY(argchar,"

    "); +} + YY_BREAK +case 568: +YY_RULE_SETUP +#line 3626 "tth.lex" +{ + sprintf(scratchstring,"%s\\tthenclose{\\special{html:

    }%s{ %s} \\special{html:
    }}{\\special{html:


    }} ", + "\\stepcounter{part}", + "\\partname","\\thepart"); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +case 569: +YY_RULE_SETUP +#line 3632 "tth.lex" +{ + fprintf(tth_fdout,"\n

    "); yy_push_state(tokenarg); TTH_CCPY(argchar,"

    ");} + YY_BREAK +case 570: +YY_RULE_SETUP +#line 3634 "tth.lex" +{ + figureno=0;tableno=0; + sprintf(labelchar,"%d",chapno+1); + if(appendix) sprintf(labelchar,"%c",chapno+1+64); + TTH_SCAN_STRING("\\tthchapcomplete"); + if(tth_splitfile){ /*sf*/ + sprintf(filenext,"chap%s.html",labelchar);/*sf*/ + TTH_SCAN_STRING("\\tthsplittail\\tthsplitinv\\tthsplittop\\tthfileupd"); /*sf*/ + }/*sf*/ +} + YY_BREAK +case 571: +YY_RULE_SETUP +#line 3644 "tth.lex" +if(tth_splitfile) strcpy(filechar,filenext); /*sf*/ + YY_BREAK +case 572: +YY_RULE_SETUP +#line 3645 "tth.lex" +{/*sf*/ + fprintf(tth_fdout,TTH_MIME_DIVIDE,filenext);/*sf*/ + fprintf(tth_fdout,TTH_DOCTYPE); /*sf*/ + fprintf(tth_fdout,TTH_GENERATOR,TTH_NAME,TTH_VERSION); /*sf*/ + fprintf(tth_fdout,TTH_ENCODING); /*sf*/ + fprintf(tth_fdout,"%s",TTH_P_STYLE); /*sf*/ + if(tth_istyle)fprintf(tth_fdout,"%s",TTH_STYLE); /*sf*/ + if(!(tth_htmlstyle&4))fprintf(tth_fdout,"%s",TTH_SIZESTYLE); /*sf*/ + fprintf(tth_fdout,"%s\n",filenext);/*sf*/ + if(tth_htmlstyle&3)fprintf(tth_fdout,"\n
    \n");/*sf*/ +}/*sf*/ + YY_BREAK +case 573: +YY_RULE_SETUP +#line 3656 "tth.lex" +fprintf(tth_fdout,"%s",filenext); /*sf*/ + YY_BREAK +case 574: +YY_RULE_SETUP +#line 3657 "tth.lex" +fprintf(tth_fdout,"%s",filechar); /*sf*/ + YY_BREAK +case 575: +YY_RULE_SETUP +#line 3658 "tth.lex" +{ + if(appendix) {TTH_CCPY(argchar,"\\appendixname");} + else TTH_CCPY(argchar,"\\chaptername"); + sprintf(scratchstring,"\n\\stepcounter{chapter}\\tthenclose{\ + \\special{html:

    }\n%s{ \\thechapter}\ + \\special{html:
    }}{\\special{html:

    }} ", + labelchar,argchar); + TTH_SCAN_STRING(scratchstring);*argchar=0; +} + YY_BREAK +case 576: +YY_RULE_SETUP +#line 3667 "tth.lex" +{ + fprintf(tth_fdout,"\n

    "); yy_push_state(tokenarg); TTH_CCPY(argchar,"

    ");} + YY_BREAK +case 577: +YY_RULE_SETUP +#line 3669 "tth.lex" +{ + TTH_SCAN_STRING("\\tthsectcomplete"); + if(lbook) { + sprintf(labelchar,"%d.%d",chapno,sectno+1); + if(appendix)sprintf(labelchar,"%c.%d",chapno+64,sectno+1); + }else{ + sprintf(labelchar,"%d",sectno+1); + if(appendix)sprintf(labelchar,"%c",sectno+1+64); + if(tth_splitfile){ /*sf*/ + sprintf(filenext,"sec%s.html",labelchar);/*sf*/ + TTH_SCAN_STRING("\\tthsplittail\\tthsplitinv\\tthsplittop\\tthfileupd"); /*sf*/ + }/*sf*/ + } +} + YY_BREAK +case 578: +YY_RULE_SETUP +#line 3683 "tth.lex" +{ + if(secnumdepth > 0){ + /* the following needs the space at the end for tex compatibility */ + sprintf(scratchstring,"\n\\stepcounter{section}\\tthenclose{\ + \\special{html:

    }\n\\thesection\ + \\special{html:  }}{\\special{html:

    }} ",labelchar); + TTH_SCAN_STRING(scratchstring); + }else{ + fprintf(tth_fdout,"\n

    "); + yy_push_state(tokenarg); + TTH_CCPY(argchar,"

    "); + } +} + YY_BREAK +case 579: +YY_RULE_SETUP +#line 3696 "tth.lex" +{ + fprintf(tth_fdout,"\n

    "); yy_push_state(tokenarg); TTH_CCPY(argchar,"

    ");} + YY_BREAK +case 580: +YY_RULE_SETUP +#line 3698 "tth.lex" +{ + { + if(lbook) { + if(appendix) sprintf(labelchar,"%c.%d.%d",chapno+64,sectno,subsectno+1); + else sprintf(labelchar,"%d.%d.%d",chapno,sectno,subsectno+1); + }else { + if(appendix) sprintf(labelchar,"%c.%d",sectno+64,subsectno+1); + else sprintf(labelchar,"%d.%d",sectno,subsectno+1); + } + if(secnumdepth > 1){ + sprintf(scratchstring,"\n\\stepcounter{subsection}\\tthenclose{\ + \\special{html:

    }\n\\thesubsection\ + \\special{html:  }}{\\special{html:

    }} ",labelchar); + TTH_SCAN_STRING(scratchstring); + }else{ + fprintf(tth_fdout,"\n

    "); yy_push_state(tokenarg); TTH_CCPY(argchar,"

    "); + } + } +} + YY_BREAK +case 581: +YY_RULE_SETUP +#line 3717 "tth.lex" +{ + fprintf(tth_fdout,"\n

    "); yy_push_state(tokenarg); TTH_CCPY(argchar,"

    ");} + YY_BREAK +case 582: +YY_RULE_SETUP +#line 3719 "tth.lex" +{ + { + if(lbook) { + if(appendix) sprintf(labelchar,"%c.%d.%d.%d", + chapno+64,sectno,subsectno,subsubsectno+1); + else sprintf(labelchar,"%d.%d.%d.%d", + chapno,sectno,subsectno,subsubsectno+1); + }else { + if(appendix) sprintf(labelchar,"%c.%d.%d", + sectno+64,subsectno,subsubsectno+1); + else sprintf(labelchar,"%d.%d.%d",sectno,subsectno,subsubsectno+1); + } + if(secnumdepth > 2){ + sprintf(scratchstring,"\n\\stepcounter{subsubsection}\\tthenclose{\ + \\special{html:

    }\n\\thesubsubsection\ + \\special{html:  }}{\\special{html:

    }} ",labelchar); + TTH_SCAN_STRING(scratchstring); + }else{ + fprintf(tth_fdout,"\n

    "); yy_push_state(tokenarg); TTH_CCPY(argchar,"

    "); + } + } +} + YY_BREAK +case 583: +YY_RULE_SETUP +#line 3741 "tth.lex" +{ + if(secnumdepth > 3){ + TTH_TEX_FN("\\par\\stepcounter{paragraph}{\\bf\\theparagraph\ + \\special{html:\n}\ + \\special{html:  }#1\\special{html:\n}\\ }#tthdrop1",1); + }else{ + TTH_TEX_FN("\\par{\\bf#1\\ \\ }#tthdrop1",1); + } +} + YY_BREAK +case 584: +YY_RULE_SETUP +#line 3750 "tth.lex" +{ + if(secnumdepth > 4){ + TTH_TEX_FN("\\stepcounter{subparagraph}{\\special{html:
    }\ + \\quad\\bf\ + \\special{html:\n}\ + \\thesubparagraph\ + \\special{html:  }#1\\special{html:\n}\\ }#tthdrop1",1); + }else{ + TTH_TEX_FN("\\special{html:
    }{\\quad\\bf#1\\ \\ }#tthdrop1",1); + } +} + YY_BREAK +case 585: +YY_RULE_SETUP +#line 3762 "tth.lex" +{ + if(tth_debug&256)fprintf(stderr,"Caption in environment:%s\n",environment); + if(!strcmp(environment,"figure")){ + figureno++; + if(lbook) sprintf(envirchar,"%d.%d",chapno,figureno); + else sprintf(envirchar,"%d",figureno); + sprintf(scratchstring,"\n\\tthenclose{\\special{html:
    }\\figurename{ \\thefigure:} }{\\special{html:
    }} "); + }else if(!strcmp(environment,"table")){ + tableno++; + if(lbook) sprintf(envirchar,"%d.%d",chapno,tableno); + else sprintf(envirchar,"%d",tableno); + sprintf(scratchstring,"\n\\tthenclose{\\special{html:
    }\\tablename{ \\thetable:} }{\\special{html:
    }} "); + } + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +case 586: +YY_RULE_SETUP +#line 3777 "tth.lex" +{ + if(horizmode) horizmode=1; + jscratch=indexkey("#1",margkeys,&margmax); + if(tth_debug&256)fprintf(stderr, + "tthnewlabel jscratch=%d, margs[jscratch]=%s\n",jscratch,margs[jscratch]); + strcpy(dupstore,margs[jscratch]); + if(tth_group(scrstring,margs[jscratch+1],TTH_CHARLEN-1)){ + fprintf(stderr,"Label end broken in newlabel:%s\n",margs[jscratch+1]); } + if(tth_splitfile){ /*sf*/ + if(lbook)strcpy(scratchstring,"chap"); /*sf*/ + else strcpy(scratchstring,"sec"); /*sf*/ + if(strlen(schar)){ /* File defined; use it.*/ /*sf*/ + strcat(scratchstring,schar); /*sf*/ + strcat(scratchstring,".html"); /*sf*/ + }else if(*(scrstring+1)=='}') strcpy(scratchstring,"index.html"); /*sf*/ + else{ /* Should not now come here. */ /*sf*/ + strcat(scratchstring,scrstring+1); /*sf*/ + *(scratchstring+strcspn(scratchstring,".}"))=0; /*sf*/ + strcat(scratchstring,".html"); /*sf*/ + fprintf(stderr, /*sf*/ + "**** Abnormal newlabel file reference:%s\n",scratchstring);/*sf*/ + } /*sf*/ + }else /*sf*/ + *scratchstring=0; + js2=nkeys; /* Just for copying the file name to optargs. */ + narg=*(scrstring+1); + if(*(scrstring+1)=='}')narg=0; + else if(narg > 64) narg=-(narg-64); /* Test for appendix */ + else sscanf(scrstring+1,"%d",&narg); + if(nkeys < NFNMAX) { + mkkey(scratchstring,optargs,&js2); + lkeys[nkeys]=0; + mkdef(dupstore,keys,scrstring,defs,&narg,nargs,&nkeys); + if(tth_debug&256){ + i=indexkey(dupstore,keys,&nkeys); + fprintf(stderr,"Defined Label %s, index %d, nargs %d, optarg %s, Def %s\n", + dupstore,i,nargs[i],optargs[i],defs[i]); + } + } + else fprintf(stderr,"Too many functions to define %s\n",dupstore); + *dupstore=0; + } + YY_BREAK +case 587: +YY_RULE_SETUP +#line 3819 "tth.lex" +{ /* Called only by \label latex builtin. */ + if(horizmode) horizmode=1; + jscratch=indexkey("#1",margkeys,&margmax); + if(tth_debug&256)fprintf(stderr,"tthlabel jscratch=%d, margs[jscratch]=%s ", + jscratch,margs[jscratch]); + strcpy(dupstore,margs[jscratch]); + narg=chapno; + if(indexkey(dupstore,keys,&nkeys) == -1) { + if(nkeys < NFNMAX) { + js2=nkeys; + mkkey(filechar,optargs,&js2); + lkeys[nkeys]=0; + if(strlen(environment)) + mkdef(dupstore,keys,envirchar,defs,&narg,nargs,&nkeys); + else + if(strlen(labelchar)) + mkdef(dupstore,keys,labelchar,defs,&narg,nargs,&nkeys); + else mkdef(dupstore,keys,"*",defs,&narg,nargs,&nkeys); + if(tth_debug&256){ + i=indexkey(dupstore,keys,&nkeys); + fprintf(stderr,"\nDefined Label %s index %d nargs %d Def %s\n", + dupstore,i,nargs[i],defs[i]); + } + } + else fprintf(stderr,"Too many functions to define %s",dupstore); + }else{ + if(tth_debug&256)fprintf(stderr,"Predefined.\n"); + } + fprintf(tth_fdout,"\n",dupstore); + *dupstore=0; + } + YY_BREAK +case 588: +#line 3851 "tth.lex" +case 589: +YY_RULE_SETUP +#line 3851 "tth.lex" +{ + if(horizmode) horizmode=1; + jscratch=indexkey("#1",margkeys,&margmax); + if(tth_debug&256) fprintf(stderr,"tthref jscratch=%d, margs[jscratch]=%s\n", + jscratch,margs[jscratch]); + strcpy(dupstore,margs[jscratch]); + ind=indexkey(dupstore,keys,&nkeys); + if(ind != -1){ + strcpy(scratchstring, "#tthdrop1\\special{html:}%s\\special{html:}",dupstore,scrstring); + TTH_SCAN_STRING(scratchstring); + }else{ + fprintf(stderr,"Unknown Latex \\ref:%s\n",dupstore); + TTH_SCAN_STRING("#tthdrop1"); + } + *dupstore=0;*argchar=0; + } + YY_BREAK +case 590: +/* rule 590 can match eol */ +YY_RULE_SETUP +#line 3881 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 591: +YY_RULE_SETUP +#line 3882 "tth.lex" +{ + /* These are purely to silence warnings. They are non-functional*/ + PUSHEDINTS[0][0]=0; + PUSHEDINTDEPTHS[0]=0; + /* end of warning silencing */ + yy_pop_state(); + yyless(0); + strcpy(dupstore2,tth_builtins); + strcat(dupstore2,"\\tthbuiltins"); + TTH_SCAN_STRING(dupstore2); + *dupstore2=0; + } + YY_BREAK +case 592: +YY_RULE_SETUP +#line 3894 "tth.lex" +{ + yy_pop_state(); + yyless(0); + strcpy(dupstore2,tth_latex_builtins); + strcat(dupstore2,tth_latex_builtins2); + strcat(dupstore2,tth_latex_builtins3); + strcat(dupstore2,"\\tthlatexbuiltins"); + TTH_SCAN_STRING(dupstore2); + *dupstore2=0; + tth_LaTeX=tth_debug+1; /* LaTeX initialization state. */ + if(tth_debug==1) tth_debug--; /* Don't debug builtins */ + } + YY_BREAK +case 593: +YY_RULE_SETUP +#line 3907 "tth.lex" +{ + countstart=ncounters; + if(tth_debug&512) fprintf(stderr,"Countstart= %d\n",countstart); +} + YY_BREAK +case 594: +/* rule 594 can match eol */ +YY_RULE_SETUP +#line 3912 "tth.lex" +{ + TTH_INC_MULTI; + if(indexkey("\\label",keys,&nkeys) == -1){ /* Only if not already done */ + strcpy(dupstore2,tth_latex_builtins); + strcat(dupstore2,tth_latex_builtins2); + strcat(dupstore2,tth_latex_builtins3); + tth_LaTeX=tth_debug+1; /* LaTeX initialization state. Make non-zero. */ + if(tth_debug==1) tth_debug--; /* Don't debug builtins */ + if(tth_debug&512) fprintf(stderr,"Defining built-in Latex commands\n"); + } + if(strstr(yytext,"book")||strstr(yytext,"report")) { + lbook=1; + strcat(dupstore2, + "\\renewcommand{\\thesection}{\\thechapter.\\arabic{section}}"); + strcat(dupstore2, + "\\renewcommand{\\thefigure}{\\thechapter.\\arabic{figure}}"); + strcat(dupstore2, + "\\renewcommand{\\thetable}{\\thechapter.\\arabic{table}}"); + strcat(dupstore2,"\\setcounter{secnumdepth}{2}"); + strcat(dupstore2, + "\\renewcommand{\\theequation}{\\thechapter.\\arabic{equation}}"); + } else { + lbook=0; + } + strcat(dupstore2,"\\tthlatexbuiltins"); /* signals end of builtins */ + TTH_SCAN_STRING(dupstore2); + *dupstore2=0; +} + YY_BREAK +case 595: +/* rule 595 can match eol */ +YY_RULE_SETUP +#line 3941 "tth.lex" +{ + TTH_INC_MULTI; + if(strstr(yytext,"numbers")){TTH_SCAN_STRING("\\NAT@numberstrue ");} + TTH_SCAN_STRING("\\newif\\ifNAT@numbers\ +\\def\\tthbibform#1#2#3#4{\\ifNAT@numbers[#1\\else[#3 #2\\fi}\ +\\def\\tthciteform#1#2#3#4{\\ifNAT@numbers[#1\\else#3, [#2\\fi}\ +\\def\\tthciteob{}\\def\\tthcitecb{]}\\input tthntbib.sty"); +} + YY_BREAK +case 596: +YY_RULE_SETUP +#line 3949 "tth.lex" +yy_push_state(matchbrace); + YY_BREAK +/* Font faces and styles etc.*/ +case 597: +#line 3953 "tth.lex" +case 598: +YY_RULE_SETUP +#line 3953 "tth.lex" +TTH_SWAP("\\rm "); + YY_BREAK +case 599: +YY_RULE_SETUP +#line 3954 "tth.lex" +TTH_SWAP("\\bf "); + YY_BREAK +case 600: +YY_RULE_SETUP +#line 3955 "tth.lex" +TTH_SWAP("\\rm "); + YY_BREAK +case 601: +YY_RULE_SETUP +#line 3956 "tth.lex" +TTH_SWAP("\\it "); + YY_BREAK +case 602: +YY_RULE_SETUP +#line 3957 "tth.lex" +TTH_SWAP("\\it "); + YY_BREAK +case 603: +YY_RULE_SETUP +#line 3958 "tth.lex" +TTH_SWAP("\\tt "); + YY_BREAK +case 604: +YY_RULE_SETUP +#line 3959 "tth.lex" +TTH_SWAP("\\sffamily "); + YY_BREAK +case 605: +YY_RULE_SETUP +#line 3960 "tth.lex" +TTH_SWAP("\\scshape "); + YY_BREAK +/* Now using the halign brace closure */ +case 606: +YY_RULE_SETUP +#line 3962 "tth.lex" +{ + TTH_OUTPUT(TTH_SMALLCAPS_FONT1); + for(jscratch=0;jscratch"); yy_push_state(verbatim); + TTH_PUSH_CLOSING; TTH_CCPY(closing,"\n");} + YY_BREAK +case 613: +YY_RULE_SETUP +#line 3980 "tth.lex" +{ + fprintf(tth_fdout,"\n
    "); TTH_PUSH_CLOSING; TTH_CCPY(closing,"
    ");} + YY_BREAK +case 614: +YY_RULE_SETUP +#line 3982 "tth.lex" +{ + if(horizmode) horizmode=1; + fprintf(tth_fdout,"\n
    ");TTH_PUSH_CLOSING; + TTH_CCPY(closing,"
    ");} + YY_BREAK +case 615: +#line 3987 "tth.lex" +case 616: +#line 3988 "tth.lex" +case 617: +YY_RULE_SETUP +#line 3988 "tth.lex" +{ + if(horizmode) horizmode=1; + fprintf(tth_fdout,"\n
    "); + TTH_PUSH_CLOSING;TTH_CCPY(closing,"
    ");} + YY_BREAK +case 618: +YY_RULE_SETUP +#line 3992 "tth.lex" +{ + if(horizmode) horizmode=1; + TTH_SCAN_STRING("\\beginsection{\\abstractname}\\par"); + TTH_PUSH_CLOSING; /*TTH_CCPY(closing,TTH_PAR);*/ +} + YY_BREAK +case 619: +YY_RULE_SETUP +#line 3997 "tth.lex" +TTH_SCAN_STRING("\\egroup\\par"); + YY_BREAK +case 620: +YY_RULE_SETUP +#line 3999 "tth.lex" +{ + horizmode=0; + fprintf(tth_fdout,"\n
      ");yy_push_state(Litemize); + tth_eqwidth=tth_eqwidth-TTH_INDPC; + TTH_PUSH_CLOSING; +} + YY_BREAK +case 621: +/* rule 621 can match eol */ +YY_RULE_SETUP +#line 4005 "tth.lex" +{ + TTH_INC_MULTI; + yy_pop_state(); + TTH_OUTPUT(closing); + fprintf(tth_fdout,"
    "); + tth_eqwidth=tth_eqwidth+TTH_INDPC; + TTH_POP_CLOSING; + horizmode=1; +} + YY_BREAK +case 622: +YY_RULE_SETUP +#line 4015 "tth.lex" +{ + horizmode=0; + fprintf(tth_fdout,"\n
      ", + enumtype[(enumerate > 4 ? 0 : enumerate)]); + yy_push_state(Lenumerate); + enumerate++; + tth_eqwidth=tth_eqwidth-TTH_INDPC; + TTH_PUSH_CLOSING; + } + YY_BREAK +case 623: +/* rule 623 can match eol */ +YY_RULE_SETUP +#line 4024 "tth.lex" +{ + TTH_INC_MULTI; + yy_pop_state(); + TTH_OUTPUT(closing); + fprintf(tth_fdout,"
    "); + enumerate--; + tth_eqwidth=tth_eqwidth+TTH_INDPC; + TTH_POP_CLOSING; + horizmode=1; +} + YY_BREAK +case 624: +YY_RULE_SETUP +#line 4034 "tth.lex" +{ /* list like description */ + horizmode=0; + fprintf(tth_fdout,"\n
    \n");yy_push_state(Ldescription); + yy_push_state(unknown); /* dump adjacent brace groups */ + tth_eqwidth=tth_eqwidth-TTH_INDPC; + TTH_PUSH_CLOSING; + horizmode=1; + yy_push_state(removespace); +} + YY_BREAK +/* Multiple column index. */ +case 625: +YY_RULE_SETUP +#line 4044 "tth.lex" +{ + if(tth_debug&3)fprintf(stderr,"Starting the index "); + horizmode=0; + yy_push_state(Ldescription); + TTH_OUTPUT("\n

    \n
    \n"); + tth_eqwidth=tth_eqwidth-TTH_INDPC; + TTH_PUSH_CLOSING; + tth_index_face=0; + tth_index_line=0; +} + YY_BREAK +/* Multiple two-column segments broken only at indexspace.*/ +case 626: +/* rule 626 can match eol */ +YY_RULE_SETUP +#line 4056 "tth.lex" +{ + /* fprintf(stderr,"indexspace\n"); */ + TTH_INC_MULTI; + if(tth_index_line > tth_indexpage){ + TTH_OUTPUT(closing); *closing=0; + tth_index_line=0; + if((++tth_index_face)&1){ + TTH_OUTPUT("

    \n
    \n"); + }else{ + TTH_OUTPUT("

    \n
    \n"); + } + }else{ + TTH_OUTPUT("

    "); + ++tth_index_line; + } +} + YY_BREAK +case 627: +/* rule 627 can match eol */ +YY_RULE_SETUP +#line 4073 "tth.lex" +{ + TTH_INC_MULTI; + yy_pop_state(); + TTH_OUTPUT(closing); + TTH_OUTPUT("
    "); + tth_eqwidth=tth_eqwidth+TTH_INDPC; + TTH_POP_CLOSING; +} + YY_BREAK +case 628: +YY_RULE_SETUP +#line 4082 "tth.lex" +{ + /* if(horizmode) horizmode=1; */ + horizmode=0; + fprintf(tth_fdout,"\n
    \n");yy_push_state(Ldescription); + tth_eqwidth=tth_eqwidth-TTH_INDPC; + TTH_PUSH_CLOSING; + } + YY_BREAK +case 629: +/* rule 629 can match eol */ +#line 4090 "tth.lex" +case 630: +/* rule 630 can match eol */ +YY_RULE_SETUP +#line 4090 "tth.lex" +{ + TTH_INC_MULTI; + yy_pop_state(); + TTH_OUTPUT(closing); + fprintf(tth_fdout,"
    "); + tth_eqwidth=tth_eqwidth+TTH_INDPC; + TTH_POP_CLOSING; +} + YY_BREAK +case 631: +/* rule 631 can match eol */ +YY_RULE_SETUP +#line 4098 "tth.lex" +{ + TTH_INC_MULTI; + if(horizmode) horizmode=1; + strcpy(environment,"figure"); + TTH_PUSH_CLOSING;*closing=0; + if(lbook) sprintf(envirchar,"%d.%d",chapno,figureno+1); + else sprintf(envirchar,"%d",figureno+1); + {TTH_PAR_ACTION}; + fprintf(tth_fdout,"\n ",envirchar); + } + YY_BREAK +case 632: +/* rule 632 can match eol */ +YY_RULE_SETUP +#line 4108 "tth.lex" +{ + TTH_INC_MULTI; + if(horizmode) horizmode=1; + strcpy(environment,"table"); + TTH_PUSH_CLOSING;*closing=0; + if(lbook) sprintf(envirchar,"%d.%d",chapno,tableno+1); + else sprintf(envirchar,"%d",tableno+1); + {TTH_PAR_ACTION}; + fprintf(tth_fdout,"\n ",envirchar); + } + YY_BREAK +case 633: +#line 4119 "tth.lex" +case 634: +YY_RULE_SETUP +#line 4119 "tth.lex" +{ /* Special case. Remove environment label. */ + TTH_TEXCLOSE else{ + TTH_CLOSEGROUP;TTH_POP_CLOSING; + {TTH_PAR_ACTION}; + *environment=0;}} + YY_BREAK +case 635: +/* rule 635 can match eol */ +YY_RULE_SETUP +#line 4125 "tth.lex" +strcpy(unitlength,yytext); + YY_BREAK +case 636: +YY_RULE_SETUP +#line 4126 "tth.lex" +{ + if(tth_autopic){ + picno++; + if(tth_debug&32)fprintf(stderr,"Starting picture number %d\n",picno); + fprintf(tth_fdout,"
    \"Picture",picno,picno); + {TTH_PAR_ACTION}; + sprintf(scratchstring,"pic%d.gif",picno); + if((tth_picfile=fopen(scratchstring,"r"))){ + fclose(tth_picfile);tth_picfile=NULL; + fprintf(stderr,"Including existing picture %s\n",scratchstring); + yy_push_state(discardgroup); + }else{ + sprintf(scratchstring,"pic%d.tex",picno); + if ( (tth_picfile=fopen(scratchstring,"w")) != NULL){ + fprintf(tth_picfile, + "\\batchmode\\documentclass{article}\n\\usepackage{graphicx}\\usepackage{epsfig}\n\\pagestyle{empty}\n\\begin{document}%s\n%s", + unitlength,yytext); + yy_push_state(picture); + jscratch=0; + }else{ + fprintf(stderr,"Unable to open picture file for writing.\n"); + yy_push_state(discardgroup); + fprintf(tth_fdout,"
    Picture Not Created.
    \n"); + } + } + }else{ + yy_push_state(discardgroup); + fprintf(tth_fdout,"
    Picture Omitted
    "); + } +} + YY_BREAK +case 637: +YY_RULE_SETUP +#line 4156 "tth.lex" +jscratch++;fprintf(tth_picfile,"%s",yytext); + YY_BREAK +case 638: +YY_RULE_SETUP +#line 4157 "tth.lex" +{ + if(jscratch) {jscratch--; fprintf(tth_picfile,"%s",yytext);} + else{ + fprintf(tth_picfile,"%s",yytext); + fprintf(tth_picfile,"\\end{document}\n"); + fclose(tth_picfile);tth_picfile=NULL; + sprintf(scratchstring,"latex2gif pic%d",picno); + jscratch=system(scratchstring); + if(jscratch==SUCCESS){ fprintf(stderr,"Created pic%d.gif\n",picno);} + else{ + fprintf(stderr,"**** Failed to create pic%d.gif\n",picno); + fprintf(tth_fdout,"
    Picture Not Created.
    "); + } + yy_pop_state(); + } +} + YY_BREAK +case 639: +YY_RULE_SETUP +#line 4173 "tth.lex" + + YY_BREAK +case 640: +/* rule 640 can match eol */ +YY_RULE_SETUP +#line 4174 "tth.lex" +{ + if(strcspn(yytext,"\n")==0) TTH_INC_LINE; + fprintf(tth_picfile,"%s",yytext); +} + YY_BREAK +case 641: +YY_RULE_SETUP +#line 4178 "tth.lex" +{ + yy_push_state(discardgroup); + if(tth_debug&32)fprintf(stderr,"Discarding unsupported construct:%s\n",yytext); + } + YY_BREAK +case 642: +YY_RULE_SETUP +#line 4182 "tth.lex" +{ + yy_pop_state(); + if(tth_debug&32)fprintf(stderr,"Ending discarding construct:%s\n",yytext); + } + YY_BREAK +case 643: +YY_RULE_SETUP +#line 4186 "tth.lex" + + YY_BREAK +/***********************************************************************/ +/* Latex tabular and haligns */ +case 644: +YY_RULE_SETUP +#line 4190 "tth.lex" +TTH_TEX_FN("\\begin{tabular}#tthdrop1",1); + YY_BREAK +case 645: +YY_RULE_SETUP +#line 4191 "tth.lex" +{ + TTH_TEX_FN_OPT("\\tth_tabular#tthdrop2",2,""); +} + YY_BREAK +case 646: +YY_RULE_SETUP +#line 4194 "tth.lex" +{ + TTH_HAL_PUSH; + *halstring=0; + if((jscratch=indexkey("#2",margkeys,&margmax))!=-1){ + if(tth_debug&33) fprintf(stderr,"Tabular argument:%s> ",margs[jscratch]); + yy_pop_state(); + TTH_SCAN_STRING("\\tth_endtabpre"); + TTH_SCAN_STRING(margs[jscratch]); + rmdef(margkeys,margs,&margmax); rmdef(margkeys,margs,&margmax); + }else fprintf(stderr,"**** Error: No tabular argument found.\n"); + if(tth_debug&33) fprintf(stderr,"Beginning tabular\n"); + if(!eqdepth)yy_push_state(disptab); /* Prevent $$ from being display math.*/ + yy_push_state(tabpre); /* Prescan the tabular argument.*/ + ncols=0; +} + YY_BREAK +case 647: +/* rule 647 can match eol */ +YY_RULE_SETUP +#line 4209 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 648: +YY_RULE_SETUP +#line 4210 "tth.lex" +/*remove spaces*/ + YY_BREAK +case 649: +YY_RULE_SETUP +#line 4211 "tth.lex" +TTH_CCAT(halstring,yytext); + YY_BREAK +case 650: +YY_RULE_SETUP +#line 4212 "tth.lex" +TTH_CCAT(halstring,yytext);ncols++; + YY_BREAK +/* +c|l|r { + TTH_CCAT(halstring,"&{&"); + TTH_CCAT(halstring,yytext);ncols++; + TTH_CCAT(halstring,"&}&"); +}*/ +case 651: +YY_RULE_SETUP +#line 4219 "tth.lex" +{ TTH_TEX_FN("\\tth_preat#tthdrop1",1); } + YY_BREAK +case 652: +YY_RULE_SETUP +#line 4220 "tth.lex" +{ + yy_pop_state(); + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1){ + TTH_CCAT(halstring,"@{"); + TTH_CCAT(halstring,margs[jscratch]); + TTH_CCAT(halstring,"}"); + if(tth_debug&32) fprintf(stderr,"@string copied =%s\n",margs[jscratch]); + rmdef(margkeys,margs,&margmax); + } +} + YY_BREAK +case 653: +YY_RULE_SETUP +#line 4230 "tth.lex" +{ TTH_TEX_FN("\\tth_presp#tthdrop1",1);ncols++; } + YY_BREAK +case 654: +YY_RULE_SETUP +#line 4231 "tth.lex" +{ + yy_pop_state(); + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1){ + if(tth_debug&32) fprintf(stderr,"p-string =%s ",margs[jscratch]); + TTH_CCPY(scratchstring,margs[jscratch]); + TTH_CCAT(scratchstring,"\\tth_pfinish"); + TTH_SCAN_STRING(scratchstring); + GET_DIMEN; + rmdef(margkeys,margs,&margmax); + } +} + YY_BREAK +case 655: +YY_RULE_SETUP +#line 4242 "tth.lex" +{ + /* sprintf(scratchstring,"&{&p{%d}&}&",thesize/SCALEDPERPIXEL);*/ + sprintf(scratchstring,"p{%d}",thesize/SCALEDPERPIXEL); + TTH_CCAT(halstring,scratchstring); + if(tth_debug&1056) fprintf(stderr,"p-string copied=%s pixels for %d sp\n", + scratchstring,thesize); +} + YY_BREAK +case 656: +YY_RULE_SETUP +#line 4249 "tth.lex" +{ TTH_TEX_FN("\\tth_tabstar#tthdrop2",2); } + YY_BREAK +case 657: +YY_RULE_SETUP +#line 4250 "tth.lex" +{ + yy_pop_state(); + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1){ + if(tth_debug&32) fprintf(stderr,"*{%s} construct. ",margs[jscratch]); + sscanf(margs[jscratch],"%d",&js2); + if((jscratch=indexkey("#2",margkeys,&margmax))!=-1 || + js2>=1 || js2<255){ + if(tth_debug&32) fprintf(stderr,"Codes: %s\n",margs[jscratch]); + for(js2++;js2>1;js2--){TTH_CCAT(halstring,margs[jscratch]);ncols++;} + rmdef(margkeys,margs,&margmax); + }else fprintf(stderr,"**** Error in tabular argument * number:%d\n",js2); + rmdef(margkeys,margs,&margmax); + } +} + YY_BREAK +case 658: +/* rule 658 can match eol */ +YY_RULE_SETUP +#line 4264 "tth.lex" +if(strcspn(yytext,"\n")==0) TTH_INC_LINE;/* Do nothing if we don't recognize */ + YY_BREAK +case 659: +YY_RULE_SETUP +#line 4265 "tth.lex" +{ + yy_pop_state(); + TTH_PUSH_CLOSING; + TTH_CCPY(closing,TTH_TABC); + if(eqdepth) {/* equation case */ + TTH_EQA_PUSH; + eqclose++; + tophgt[eqclose]=0; + levhgt[eqclose]=1; + eqalignrow=0; + } + if(eqdepth && displaystyle) { /* only display equations.*/ + TTH_OUTPUT(TTH_CELL3);TTH_CCAT(closing,TTH_CELL3); + }else {TTH_OUTPUT("\n");} + if(*(halstring) == '|') { + TTH_OUTPUT(TTH_TABB); + }else{ + TTH_OUTPUT(TTH_TABO); + } /* Guess that if template starts '|' we want a boxed table, else not */ + *tdalign=0;*precell=0; /* Safety only; ought not to be needed */ + if(eqdepth)eqalignrow++; + yy_push_state(hendline); /* check for multicol at start */ + TTH_PUSH_BUFF(0);halbuff=yy_scan_string(halstring); /* Setup halbuff */ + yy_switch_to_buffer(include_stack[--tth_stack_ptr]); + /* But keep current*/ + if(tth_debug&32)fprintf(stderr,"Endtabpre:%s>\n",halstring); + if(!*halstring){ + fprintf(stderr,"**** Error Fatal. Null or improper alignment argument, line %d.\n",tth_num_lines); + TTH_EXIT(3); + } + } + YY_BREAK +case 660: +YY_RULE_SETUP +#line 4297 "tth.lex" +{ /* cell boundary. Scan @strings if any */ + if(tth_debug&32)fprintf(stderr,"|"); + jstal=-1; + if(*precell && !jshal && *tdalign){ + strcat(precell,"&"); + *tdalign=0; + yy_switch_to_buffer(include_stack[--tth_stack_ptr] ); + yy_pop_state(); + if(tth_debug&32){fprintf(stderr,"%s",precell);} + TTH_SCAN_STRING(precell);*precell=0; + } else if(jshal==1 || jshal==-1 ){ + TTH_HALACT; + } +} + YY_BREAK +case 661: +YY_RULE_SETUP +#line 4311 "tth.lex" +{ + /* if(tth_debug&32) fprintf(stderr,"tth_@, %d\n",margmax);*/ + TTH_TEX_FN("\\tth_atstring#tthdrop1",1); +} + YY_BREAK +case 662: +YY_RULE_SETUP +#line 4315 "tth.lex" +{ + yy_pop_state(); + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1){ + if(jshal<1){ + TTH_CCAT(precell,"{"); + TTH_CCAT(precell,margs[jscratch]); + TTH_CCAT(precell,"}"); + /* if(tth_debug&32) fprintf(stderr,"@string=%s ",precell);*/ + } + rmdef(margkeys,margs,&margmax); + } /* Have to explicitly excape from macro + because <> not handled in talign */ + yy_delete_buffer(YY_CURRENT_BUFFER ); + yy_switch_to_buffer(include_stack[--tth_stack_ptr] ); +} + YY_BREAK +case 663: +/* rule 663 can match eol */ +YY_RULE_SETUP +#line 4331 "tth.lex" +{ + if(jshal==1||jshal==-1){yyless(0);} + if(jstal==-1)jstal=0; + TTH_HALACT; +} + YY_BREAK +case YY_STATE_EOF(talign): +#line 4336 "tth.lex" +{ /* Reset halbuff to start. Gives matrix underflows. + yy_delete_buffer(YY_CURRENT_BUFFER); + if(tth_debug&32)fprintf(stderr,"\nTemplate end rescan:%s> \n",halstring); + halbuff=yy_scan_string(halstring); + yy_switch_to_buffer(halbuff); */ + TTH_HALACT; /*Old approach */ +} + YY_BREAK +case 664: +YY_RULE_SETUP +#line 4343 "tth.lex" +yy_push_state(tempamp); + YY_BREAK +case 665: +YY_RULE_SETUP +#line 4344 "tth.lex" +{ + yy_pop_state(); + /* if(tth_debug&32)fprintf(stderr,"%dprecell=%s\n",jshal,precell);*/ + /* if(jshal>0)*precell=0; don't now throw away */ +} + YY_BREAK +case 666: +YY_RULE_SETUP +#line 4349 "tth.lex" +{TTH_CCAT(precell,yytext);} + YY_BREAK +case 667: +#line 4351 "tth.lex" +case 668: +/* rule 668 can match eol */ +YY_RULE_SETUP +#line 4351 "tth.lex" +{ + if(strcspn(yytext,"\n")==0) TTH_INC_LINE; + if(jshal<1){TTH_CCAT(precell,yytext);} +} + YY_BREAK +case 669: +YY_RULE_SETUP +#line 4355 "tth.lex" +fprintf(stderr,"Unknown tabular format: %s\n",yytext);TTH_HALACT; + YY_BREAK +case 670: +YY_RULE_SETUP +#line 4357 "tth.lex" +TTH_SCAN_STRING("\\par"); + YY_BREAK +case 671: +YY_RULE_SETUP +#line 4358 "tth.lex" +{ + fprintf(tth_fdout,"\n",valignstring); +} + YY_BREAK +case 672: +YY_RULE_SETUP +#line 4361 "tth.lex" +{ + yy_pop_state(); +} + YY_BREAK +case 673: +YY_RULE_SETUP +#line 4365 "tth.lex" +{ + if(*halstring) {yy_push_state(hamper); + }else{fprintf(tth_fdout,"\n",tabwidth);}/* settabs */ +} + YY_BREAK +case 674: +#line 4370 "tth.lex" +case 675: +#line 4371 "tth.lex" +case 676: +#line 4372 "tth.lex" +case 677: +/* rule 677 can match eol */ +YY_RULE_SETUP +#line 4372 "tth.lex" +{ + TTH_INC_MULTI; + if(*halstring){ /* halign and tabular */ + if(jstal==0){ + jstal=1; + jshal=-1; + yyless(0); + TTH_HALSWITCH; + }else{ + jstal=0; + TTH_OUTPUT(TTH_CELL_TAB); + TTH_OUTPUT(TTH_TRC); + if(eqdepth){ + if(tth_istyle&1)eqalignrow=eqalignrow+6*(levhgt[eqclose]-1)+TTH_HGT;else + eqalignrow=eqalignrow+levhgt[eqclose]; + if(tth_debug&2)fprintf(stderr, + "Halcr. eqalignrow=%d, eqaind=%d, levhgt=%d\n", + eqalignrow,eqaind,levhgt[eqclose]); + levhgt[eqclose]=1; + } + yy_push_state(hendline); + yy_delete_buffer(halbuff); /* Reset halbuff to start */ + if(tth_debug&32)fprintf(stderr,"\nEOL rescan:%s> \n",halstring); + TTH_PUSH_BUFF(0);halbuff=yy_scan_string(halstring); + yy_switch_to_buffer(include_stack[--tth_stack_ptr]); + } + }else{ + if(*(yytext+1)=='c'){ + TTH_OUTPUT("\n"); /* settabs */ + }else{ + TTH_OUTPUT("
    "); /* LaTeX Plain text line break */ + } + } +} + YY_BREAK +case 678: +/* rule 678 can match eol */ +YY_RULE_SETUP +#line 4406 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 679: +YY_RULE_SETUP +#line 4407 "tth.lex" + + YY_BREAK +case 680: +YY_RULE_SETUP +#line 4408 "tth.lex" +{ + if(tth_debug&32) fprintf(stderr,"\nInner Multicolumn(%d%d)",jshal,jstal); + if(jstal==0){ + jstal=1; + jshal=-1; + yyless(0); + yy_pop_state();TTH_SCAN_STRING("&"); + TTH_HALSWITCH; + }else /**/{ + jstal=0; + TTH_OUTPUT(TTH_CELL_TAB); + TTH_TEX_FN("\\tth_multistart#tthdrop2",2); + } +} /* See psub below. */ + YY_BREAK +case 681: +YY_RULE_SETUP +#line 4422 "tth.lex" +TTH_SCAN_STRING("\\multispan1"); + YY_BREAK +case 682: +YY_RULE_SETUP +#line 4423 "tth.lex" +{ + if(tth_debug&32) fprintf(stderr,"Inner Multispan(%d%d)",jshal,jstal); + if(jstal==0){ + jstal=1; + jshal=-1; + yyless(0); + yy_pop_state();TTH_SCAN_STRING("&"); + TTH_HALSWITCH; + }else{ + jstal=0; + yy_pop_state(); + TTH_OUTPUT(TTH_CELL_TAB); + TTH_TEX_FN("\\tth_multispan#tthdrop1",1); + } +} /* See psub below */ + YY_BREAK +case 683: +YY_RULE_SETUP +#line 4438 "tth.lex" +{ /* expand first */ + TTH_DO_MACRO + else{ + yyless(0); + strcpy(tdalign,TTH_CELL_TAB); /* Save the cell closing.*/ + yy_pop_state();jshal=0; + TTH_HALSWITCH; + } +} + YY_BREAK +case 684: +YY_RULE_SETUP +#line 4447 "tth.lex" +{ + yyless(0); + strcpy(tdalign,TTH_CELL_TAB); /* Save the cell closing.*/ + yy_pop_state(); + jshal=0; + TTH_HALSWITCH; +} + YY_BREAK +case 685: +YY_RULE_SETUP +#line 4454 "tth.lex" + + YY_BREAK +case 686: +/* rule 686 can match eol */ +YY_RULE_SETUP +#line 4455 "tth.lex" +TTH_INC_MULTI;TTH_OUTPUT(TTH_TRTD); + YY_BREAK +case 687: +YY_RULE_SETUP +#line 4456 "tth.lex" +yy_push_state(matchbrace); + YY_BREAK +case 688: +YY_RULE_SETUP +#line 4457 "tth.lex" + + YY_BREAK +case 689: +/* rule 689 can match eol */ +YY_RULE_SETUP +#line 4458 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 690: +YY_RULE_SETUP +#line 4460 "tth.lex" +{ + if(tth_debug&32) fprintf(stderr,"Multicolumn at start:"); + TTH_OUTPUT(TTH_TRO); + TTH_TEX_FN("\\tth_multiinner#tthdrop2",2); +} + YY_BREAK +/* Add an open brace for a starting multicol */ +case 691: +YY_RULE_SETUP +#line 4466 "tth.lex" +{ + /*TTH_SCAN_STRING("{"); + if(tth_debug&32){fprintf(stderr,"{");}*/ + TTH_SCAN_STRING("\\tth_multistart#tthdrop2"); +} + YY_BREAK +case 692: +YY_RULE_SETUP +#line 4471 "tth.lex" +{ + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1){ + sscanf(margs[jscratch],"%d",&jshal); + }else{fprintf(stderr,"No argument #1 in multicol\n");} + if((jscratch=indexkey("#2",margkeys,&margmax))!=-1){ + strcpy(scrstring,margs[jscratch]); + chscratch=scrstring+strcspn(scrstring,"lrcp"); /* No @strings allowed */ + strcpy(scratchstring,TTH_HALCODE(chscratch)); + }else{*scratchstring=0;fprintf(stderr,"No argument #2 in multicol\n");} + if(tth_debug&32) fprintf(stderr,"%d,%s\n",jshal,scratchstring); + sprintf(scrstring,TTH_MULSTART,jshal,scratchstring); + TTH_OUTPUT(scrstring); + if(eqdepth){TTH_OUTPUT(TTH_EQ5);} + yy_pop_state(); yy_pop_state(); /* get out of hendline/hamper too */ + rmdef(margkeys,margs,&margmax);rmdef(margkeys,margs,&margmax); + jshal++;/* fix */ + TTH_HALSWITCH; + } + YY_BREAK +case 693: +YY_RULE_SETUP +#line 4489 "tth.lex" +{ + TTH_TEXCLOSE else{ + if(tth_debug&32) fprintf(stderr,"Ending tabular\n"); + yy_delete_buffer(halbuff); + yy_pop_state(); + TTH_HAL_POP; + if(eqdepth){ + eqclose--; + if(tth_istyle&1)jscratch=(eqalignrow+6*(levhgt[eqclose+1]-1)+TTH_HGT)/6; + else jscratch=levhgt[eqclose+1]+eqalignrow; + if(jscratch>levhgt[eqclose])levhgt[eqclose]=jscratch; + /* This was an alternative attempt when \\ was forced. Height was broken. + if(eqalignrow>levhgt[eqclose])levhgt[eqclose]=eqalignrow;*/ + if(tth_debug&2)fprintf(stderr, + "Equation Tabular Close: eqclose=%d, eqalignrow=%d, levhgt=%d\n", + eqclose,eqalignrow,levhgt[eqclose]); + TTH_EQA_POP; + } + TTH_CLOSEGROUP;TTH_POP_CLOSING; + if(!eqdepth)yy_pop_state(); /* the disptab we added */ +} +} + YY_BREAK +case 694: +YY_RULE_SETUP +#line 4511 "tth.lex" +{ + yy_pop_state(); /* out of hendline */ + TTH_TEXCLOSE else{ + if(!eqdepth){ + if(tth_push_depth==halignenter){ + TTH_HAL_POP; + } + TTH_CLOSEGROUP;TTH_POP_CLOSING; + }else{ /* This for equation state should not happen */ + eqclose--; + TTH_EQA_POP; + yy_pop_state();yyless(0); + } +}} /* end of halign. */ + YY_BREAK +case 695: +YY_RULE_SETUP +#line 4525 "tth.lex" +{ + yyless(0); TTH_OUTPUT(TTH_TRO); + yy_pop_state(); + jshal=0; + TTH_HALSWITCH; +} + YY_BREAK +case 696: +YY_RULE_SETUP +#line 4532 "tth.lex" +{/*attempt to fix*/ + if(tth_debug&33) fprintf(stderr, + "Noalign in hendline. eqdepth=%d, ncols=%d.\n",eqdepth,ncols); + sprintf(scrstring,"\\multicolumn{%d}{l}{#1}\\cr#tthdrop1",ncols); + TTH_TEX_FN(scrstring,1); +} + YY_BREAK +case 697: +YY_RULE_SETUP +#line 4539 "tth.lex" +TTH_SCAN_STRING("\\multispan1"); + YY_BREAK +case 698: +YY_RULE_SETUP +#line 4540 "tth.lex" +{ + yy_pop_state(); + if(tth_debug&32) fprintf(stderr,"Line Start Multispan\n"); + TTH_TEX_FN("\\tth_multispan#tthdrop1",1); + TTH_OUTPUT(TTH_TRO); +} + YY_BREAK +case 699: +YY_RULE_SETUP +#line 4546 "tth.lex" +{ + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1) + sscanf(margs[jscratch],"%d",&jshal); + if(tth_debug&32) fprintf(stderr," %d",jshal); + sprintf(scrstring,TTH_MULSPAN,jshal); + TTH_OUTPUT(scrstring); + yy_pop_state(); + rmdef(margkeys,margs,&margmax); + jshal++;/* fix */ + TTH_HALSWITCH; +} + YY_BREAK +case 700: +YY_RULE_SETUP +#line 4557 "tth.lex" +{ /* expand first */ + TTH_DO_MACRO + else{ + yyless(0);TTH_OUTPUT(TTH_TRO); + yy_pop_state(); + jshal=0; + TTH_HALSWITCH; + } +} + YY_BREAK +case 701: +YY_RULE_SETUP +#line 4566 "tth.lex" +yyless(0);TTH_SCAN_STRING("\\\\"); + YY_BREAK +case 702: +YY_RULE_SETUP +#line 4568 "tth.lex" +yy_push_state(matchbrace); + YY_BREAK +case 703: +YY_RULE_SETUP +#line 4569 "tth.lex" + + YY_BREAK +case 704: +/* rule 704 can match eol */ +YY_RULE_SETUP +#line 4570 "tth.lex" +TTH_INC_MULTI;TTH_OUTPUT(""); + YY_BREAK +/* End of tabular and halign code.*/ +/********************************************************************/ +case 705: +YY_RULE_SETUP +#line 4574 "tth.lex" +TTH_OUTPUT(TTH_TINY);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 706: +YY_RULE_SETUP +#line 4575 "tth.lex" +TTH_OUTPUT(TTH_SCRIPTSIZE);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 707: +YY_RULE_SETUP +#line 4576 "tth.lex" +TTH_OUTPUT(TTH_FOOTNOTESIZE);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 708: +YY_RULE_SETUP +#line 4577 "tth.lex" +TTH_OUTPUT(TTH_SMALL);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 709: +YY_RULE_SETUP +#line 4578 "tth.lex" +TTH_OUTPUT(TTH_NORMALSIZE);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 710: +YY_RULE_SETUP +#line 4579 "tth.lex" +TTH_OUTPUT(TTH_large);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 711: +YY_RULE_SETUP +#line 4580 "tth.lex" +TTH_OUTPUT(TTH_Large);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 712: +YY_RULE_SETUP +#line 4581 "tth.lex" +TTH_OUTPUT(TTH_LARGE);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 713: +YY_RULE_SETUP +#line 4582 "tth.lex" +TTH_OUTPUT(TTH_HUGE);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 714: +YY_RULE_SETUP +#line 4584 "tth.lex" +fprintf(tth_fdout,"
    ");TTH_PRECLOSE("
    "); + YY_BREAK +case 715: +YY_RULE_SETUP +#line 4585 "tth.lex" +fprintf(tth_fdout,"
    ");TTH_PRECLOSE("
    "); + YY_BREAK +/* Insert an implied hbox around the minipage(s) that terminates at the + next \par. Inside the minipages the state is not pargroup. Thus any + \par inside the minipage does not terminate the hbox group. + */ +case 716: +YY_RULE_SETUP +#line 4591 "tth.lex" +{ + yy_push_state(INITIAL); + TTH_TEX_FN_OPT("\\vbox\\bgroup\\hsize=#2#tthdrop2",2,""); +} + YY_BREAK +case 717: +YY_RULE_SETUP +#line 4595 "tth.lex" +{ + TTH_PUSH_CLOSING; /* This will be cancelled at the end of the pargroup*/ + yy_push_state(pargroup); + yy_push_state(INITIAL); + TTH_TEX_FN_OPT("\\tth_hbox\\vbox\\bgroup\\hsize=#2#tthdrop2",2,""); +} + YY_BREAK +case 718: +YY_RULE_SETUP +#line 4601 "tth.lex" +{ + TTH_SCAN_STRING("\\egroup"); + yy_pop_state(); +} + YY_BREAK +/*Default Begin and End Are at end of flex code. */ +/* colordvi-compatible commands. Expand the argument first.*/ +case 719: +YY_RULE_SETUP +#line 4609 "tth.lex" +TTH_TEX_FN("{\\textColor{#1}#2}#tthdrop2",2); + YY_BREAK +/* textColor in colordvi is global. But that's a terrible thing to do + so in TtH it is local. */ +case 720: +YY_RULE_SETUP +#line 4612 "tth.lex" +TTH_TEX_FN("\\edef\\tthexpcol{\\tthtextColor{#1}}\\tthexpcol#tthdrop1",1); + YY_BREAK +case 721: +/* rule 721 can match eol */ +#line 4614 "tth.lex" +case 722: +/* rule 722 can match eol */ +#line 4615 "tth.lex" +case 723: +/* rule 723 can match eol */ +#line 4616 "tth.lex" +case 724: +/* rule 724 can match eol */ +YY_RULE_SETUP +#line 4616 "tth.lex" +{ /* Color defined in one of four ways*/ + chscratch=yytext+strcspn(yytext,"{")+1; + *(chscratch+strcspn(chscratch,"}"))=0; + if((jscratch=sscanf(chscratch,"%f %f %f %f", + &cyanc,&magentac,&yellowc,&blackc))<=2){ + if((jscratch=sscanf(chscratch,"%f , %f , %f , %f", /*Latex comma delimits*/ + &cyanc,&magentac,&yellowc,&blackc))<=2){ + if(jscratch == 1) { /* grey */ + redc=cyanc; + greenc=cyanc; + bluec=cyanc; + }else if(jscratch==0 || jscratch==EOF){ /* Try a named color*/ + if((jscratch=indexkey(chscratch,keys,&nkeys))!=-1){ + /* Custom color.*/ /*Substitute and scan again*/ + TTH_CCPY(scratchstring,yytext); + *(scratchstring+strcspn(scratchstring,"{"))=0; + TTH_CCAT(scratchstring,defs[jscratch]); + *(scratchstring+strcspn(scratchstring,"#"))=0; /* Fix end*/ + TTH_SCAN_STRING(scratchstring); + jscratch=5; + }else{ + jscratch=tth_cmykcolor(chscratch,&cyanc,&magentac,&yellowc,&blackc); + } + }else{ + jscratch=0; + } + } + } + if(jscratch!=5){ /* For non custom colors*/ + if(jscratch==0){ + fprintf(stderr,"**** Unknown color specification %s\n",chscratch); + }else if(jscratch==4){ /* Convert to RGB from CMYK*/ + if((redc=1.-cyanc-blackc)<0.) redc=0.; + if((greenc=1.-magentac-blackc)<0.) greenc=0.; + if((bluec=1.-yellowc-blackc)<0.) bluec=0.; + }else if(jscratch==3){ /* It is RGB already */ + redc=cyanc; + greenc=magentac; + bluec=yellowc; + } + if(jscratch){ + sprintf(colorchar,"%2.2X%2.2X%2.2X", + (int)(redc*255),(int)(greenc*255),(int)(bluec*255)); + if(tth_debug&32)fprintf(stderr,"RGB=%f,%f,%f\ncolorchar=%s\n", + redc,greenc,bluec,colorchar); + if(strstr(yytext,"tthbgC")){/*Box Background color case CSS*/ + sprintf(scratchstring, + "\\special{html:\n}" + ,colorchar); + TTH_PRECLOSE(""); + }else if(strstr(yytext,"tthpageC")){ /* Page color HTML violation*/ + sprintf(scratchstring, + "\\special{html:}",colorchar); + }else{ + sprintf(scratchstring,TTH_COLOR,colorchar); + /* if(!strstr(yytext,"tthspecial")) + Not closing locally for the colordvi special case breaks stuff. */ + {TTH_PRECLOSE(TTH_COLOREND);} + } + TTH_SCAN_STRING(scratchstring); + } + } +} + YY_BREAK +/* The specials that colordvi constructs for dvips for unknown colors. */ +case 725: +/* rule 725 can match eol */ +YY_RULE_SETUP +#line 4680 "tth.lex" +TTH_INC_MULTI; + YY_BREAK +/* TTH_OUTPUT(TTH_COLOREND); Remove because nesting gets broken */ +case 726: +/* rule 726 can match eol */ +YY_RULE_SETUP +#line 4682 "tth.lex" +{ + TTH_INC_MULTI; + TTH_CCPY(scratchstring,"\\tthspecialcolor{"); + /* if(strstr(yytext,"push")){ + TTH_CCPY(scratchstring,"\\tthtextColor{"); + } */ + TTH_CCAT(scratchstring,(strrchr(yytext,' ')+1)); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +/* Latex graphics colors (see grfguide.ps). The syntax is confusingly the + exact opposite of colordvi, in that textcolor colorizes its argument + but color is the switch. Use the preceding function anyway.*/ +case 727: +YY_RULE_SETUP +#line 4695 "tth.lex" +TTH_TEX_FN_OPT("{\\textColor{#2}#3}#tthdrop3",3,""); + YY_BREAK +case 728: +YY_RULE_SETUP +#line 4696 "tth.lex" +TTH_TEX_FN_OPT("\\edef\\tthexpcol{\\tthtextColor{#2}}\\tthexpcol#tthdrop2",2,""); + YY_BREAK +case 729: +YY_RULE_SETUP +#line 4697 "tth.lex" +TTH_TEX_FN_OPT("{\\edef\\tthexpcol{\\tthbgColor{#2}}\\tthexpcol #3}#tthdrop3",3,""); + YY_BREAK +case 730: +YY_RULE_SETUP +#line 4698 "tth.lex" +TTH_TEX_FN_OPT("\\fbox{\\colorbox[#1]{#2}{#3}}#tthdrop3",3,""); + YY_BREAK +case 731: +YY_RULE_SETUP +#line 4699 "tth.lex" +TTH_TEX_FN_OPT("{\\edef\\tthexpcol{\\tthpageColor{#2}}\\tthexpcol}#tthdrop2",2,""); + YY_BREAK +case 732: +#line 4702 "tth.lex" +case 733: +#line 4703 "tth.lex" +case 734: +#line 4704 "tth.lex" +case 735: +#line 4705 "tth.lex" +case 736: +#line 4706 "tth.lex" +case 737: +YY_RULE_SETUP +#line 4706 "tth.lex" +{ + localdef=1; + horizmode=0; /* This protection against \par should not be needed but ...*/ + yy_push_state(define); + yy_push_state(getnumargs); + yy_push_state(getdef); +} + YY_BREAK +case 738: +/* rule 738 can match eol */ +YY_RULE_SETUP +#line 4713 "tth.lex" +{ + fprintf(stderr,"**** %s: works only for non-standard environments\n",yytext); + strcpy(scratchstring,"\\newenvironment"); + strcat(scratchstring,yytext+strcspn(yytext,"{")); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +case 739: +/* rule 739 can match eol */ +YY_RULE_SETUP +#line 4719 "tth.lex" +{ + localdef=0; + horizmode=0; + yy_push_state(getend); /* will define the end environment, see following */ + yy_push_state(define); /* defines the begin environment */ + yy_push_state(getnumargs); + TTH_CCPY(defchar,"\\begin"); + strcat(defchar,strstr(yytext,"{")); + *dupstore=0; /*does getdef*/ + TTH_PUSH_CLOSING;TTH_CCPY(closing,strstr(yytext,"{")); /* save for getend */ +} + YY_BREAK +case 740: +/* rule 740 can match eol */ +YY_RULE_SETUP +#line 4730 "tth.lex" +{ + TTH_INC_MULTI; + /* Newtheorem with numberedlike option. Overrides macro definition.*/ + if(tth_debug&4)fprintf(stderr,"New numbered-like theorem:%s\n",yytext); + strcpy(scratchstring,strstr(yytext,"{")+1); + strcpy(dupstore,strstr(scratchstring,"{")); + *strstr(scratchstring,"}")=0; + strcpy(scrstring,strstr(yytext,"[")+1); + *strstr(scrstring,"]")=0; + sprintf(dupstore2,"\\newenvironment{%s}{\\par\\stepcounter{%s} \\textbf{%s \\arabic{%s}}\\bgroup \\em}{\\par\\egroup}", + scratchstring,scrstring,dupstore,scrstring); + TTH_SCAN_STRING(dupstore2); + *dupstore=0; + *dupstore2=0; +} + YY_BREAK +case 741: +YY_RULE_SETUP +#line 4745 "tth.lex" +{ + yyless(0);yy_pop_state(); + yy_push_state(define); + yy_push_state(getnumargs); + TTH_CCPY(defchar,"\\end");strcat(defchar,closing); + *dupstore=0; /*does getdef*/ + TTH_POP_CLOSING; +} /* end and beginning now defined. */ + YY_BREAK +case 742: +YY_RULE_SETUP +#line 4754 "tth.lex" +{ + if(indexkey("\\amslatex",keys,&nkeys)!=-1){ + TTH_SCAN_STRING("\\verb|"); + }else{ + TTH_OUTPUT(" - "); + } +} + YY_BREAK +/* url that does not use braces */ +case 743: +#line 4763 "tth.lex" +/*\\verb\*?[^ \t\na] { prior to 12 Jan 2002*/ +case 744: +YY_RULE_SETUP +#line 4764 "tth.lex" +{ /* Prevent erroneous \verbatim detection */ + if(tth_debug&8)fprintf(stderr,"Entering Verb state:%s\n",yytext); + chr1[0]=*(yytext+strlen(yytext)-1); + TTH_OUTPUT(TTH_TT1); yy_push_state(verb); + TTH_PUSH_CLOSING; TTH_CCPY(closing,TTH_TT2); + } + YY_BREAK +/* Deal with cases that are not in line.*/ +case 745: +YY_RULE_SETUP +#line 4771 "tth.lex" +TTH_TEX_FN("\\verb#1#tthdrop1",1); + YY_BREAK +/* ************* Enclosing multiple groups in stuff. ******** removed **/ +/* **************Paragraphing closures.***************/ +case 746: +/* rule 746 can match eol */ +YY_RULE_SETUP +#line 4776 "tth.lex" +{ + TTH_INC_LINE;yy_pop_state();TTH_SCAN_STRING("\\par\n");horizmode=1;} + YY_BREAK +case 747: +YY_RULE_SETUP +#line 4778 "tth.lex" +{yyless(0);yy_pop_state();horizmode=1;} + YY_BREAK +case 748: +/* rule 748 can match eol */ +YY_RULE_SETUP +#line 4780 "tth.lex" +{ + TTH_INC_LINE; + if(horizmode==1){ + horizmode=-1; + yy_push_state(parcheck); + fprintf(tth_fdout,"%s",yytext); + }else if(horizmode==-1) { + fprintf(stderr,"**** Abnormal NL in -1 horizmode, pargroup\n"); + /* TTH_SCAN_STRING("\\par"); */ + } +} + YY_BREAK +case 749: +YY_RULE_SETUP +#line 4791 "tth.lex" +{ + TTH_TEXCLOSE else{ + TTH_CLOSEGROUP;TTH_POP_CLOSING; + yy_pop_state(); + if(tth_eqwidth<100) tth_eqwidth=tth_eqwidth+TTH_INDPC; + horizmode=0;/*{TTH_PAR_ACTION} not in pargroup?*/ + } +} + YY_BREAK +case 750: +YY_RULE_SETUP +#line 4799 "tth.lex" +{ + TTH_TEXCLOSE else{ + if(!strcmp(closing,"
    ")) { + /* Do not close the list or pop closing.*/ + fprintf(tth_fdout,"%s","\n
    \n"); + }else{ /* Have to close a different item */ + TTH_CLOSEGROUP; /* This a special case no POP_CLOSING */ + fprintf(tth_fdout,"
    "); + TTH_CCPY(closing,"
    "); + horizmode=0;/*{TTH_PAR_ACTION}*/ + } + TTH_CCPY(argchar,"
    \n
    ");yy_push_state(tokenarg); + } +} + YY_BREAK +case 751: +YY_RULE_SETUP +#line 4813 "tth.lex" +{ + TTH_TEXCLOSE else{ + if(!strcmp(closing,"
    ")) { + /* Do not close the list or pop closing.*/ + fprintf(tth_fdout,"%s","
    \n"); + }else{ /* Have to close a different item */ + TTH_CLOSEGROUP; /* This a special case no POP_CLOSING */ + fprintf(tth_fdout,"
    "); + TTH_CCPY(closing,"
    "); + horizmode=0; + } + TTH_CCPY(argchar,"
    \n");yy_push_state(tokenarg); + } +} + YY_BREAK +case 752: +#line 4829 "tth.lex" +case 753: +#line 4830 "tth.lex" +case 754: +YY_RULE_SETUP +#line 4830 "tth.lex" +{ + sprintf(scratchstring,"\\par%s",yytext); TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +/* Fix for \hang and friends end of a vbox implies a par */ +case 755: +#line 4835 "tth.lex" +case 756: +#line 4836 "tth.lex" +case 757: +YY_RULE_SETUP +#line 4836 "tth.lex" +{ + if(strstr(closing,"--vbox")){ + TTH_SCAN_STRING("\\par}"); + }else{ + TTH_SCAN_STRING("\\tthparendgroup"); + } +} + YY_BREAK +case 758: +YY_RULE_SETUP +#line 4845 "tth.lex" +{ + if(strstr(tth_texclose[tth_push_depth-1],"\\tthhbclose")){ + if(tth_debug&1024){ + fprintf(stderr,"Par in hhbc:%s\n",tth_texclose[tth_push_depth-1]);} + yyless(0);TTH_SCAN_STRING(tth_texclose[tth_push_depth-1]); + *tth_texclose[tth_push_depth-1]=0; + }else{ + if(horizmode) {TTH_PAR_ACTION} + else {fprintf(tth_fdout,"\n");} + } +} + YY_BREAK +case 759: +/* rule 759 can match eol */ +YY_RULE_SETUP +#line 4856 "tth.lex" +{ + TTH_CHECK_LENGTH; + if(bracecount) fprintf(stderr, + "**** Error. Bracecount=%d nonzero, line %d\n", + bracecount,tth_num_lines); + TTH_INC_LINE; + if(horizmode==1){ + horizmode=-1; + yy_push_state(parcheck); + TTH_OUTPUT(yytext); + }else if(horizmode==-1) { + fprintf(stderr,"**** Abnormal NL in -1 horizmode, parclose\n"); + } +} + YY_BREAK +case 760: +YY_RULE_SETUP +#line 4871 "tth.lex" +{ + if(horizmode) { + {TTH_PAR_ACTION} + } else {fprintf(tth_fdout,"\n");} + } + YY_BREAK +case 761: +/* rule 761 can match eol */ +YY_RULE_SETUP +#line 4877 "tth.lex" +{ + TTH_CHECK_LENGTH; + if(bracecount) fprintf(stderr,"**** Error. Bracecount=%d nonzero, line %d\n", + bracecount,tth_num_lines); + TTH_INC_LINE; + if(horizmode==1){ + horizmode=-1; + yy_push_state(parcheck); + TTH_OUTPUT(yytext); + }else if(horizmode==-1) { + fprintf(stderr,"**** Abnormal NL in -1 horizmode.\n"); +/* {TTH_PAR_ACTION} */ + } + } + YY_BREAK +/*************************** General Rules. *****************/ +case 762: +YY_RULE_SETUP +#line 4893 "tth.lex" +{ + TTH_PUSH_CLOSING; fprintf(tth_fdout,"\n

    "); + TTH_CCPY(closing,"

    \n"); + yy_push_state(pargroup);tth_eqwidth=tth_eqwidth-TTH_INDPC;} + YY_BREAK +case 763: +YY_RULE_SETUP +#line 4897 "tth.lex" +{ + TTH_OUTPUT("\n
    \n"); + TTH_CCPY(argchar,"
    "); + yy_push_state(tokenarg); +} + YY_BREAK +case 764: +YY_RULE_SETUP +#line 4902 "tth.lex" +{ + fprintf(tth_fdout,"\n
    ");yy_push_state(tokenarg); + TTH_CCPY(argchar,"
    ");} + YY_BREAK +case 765: +#line 4908 "tth.lex" +case 766: +#line 4909 "tth.lex" +case 767: +#line 4910 "tth.lex" +case 768: +YY_RULE_SETUP +#line 4910 "tth.lex" +TTH_SWAP("\\tth_underline "); + YY_BREAK +case 769: +YY_RULE_SETUP +#line 4911 "tth.lex" +yy_push_state(ruledim);TTH_OUTPUT("
    \n"); + YY_BREAK +case 770: +YY_RULE_SETUP +#line 4912 "tth.lex" +yy_push_state(ruledim); + YY_BREAK +case 771: +#line 4914 "tth.lex" +case 772: +YY_RULE_SETUP +#line 4914 "tth.lex" +{ + /* if(horizmode) {fprintf(tth_fdout,TTH_PAR);horizmode=0;} replaced by*/ + if(horizmode) {{TTH_PAR_ACTION}} + fprintf(tth_fdout,"

    "); +} + YY_BREAK +case 773: +#line 4920 "tth.lex" +case 774: +YY_RULE_SETUP +#line 4920 "tth.lex" +{ + if(horizmode) {{TTH_PAR_ACTION}} + fprintf(tth_fdout,"
    "); +} + YY_BREAK +case 775: +#line 4925 "tth.lex" +case 776: +#line 4926 "tth.lex" +case 777: +YY_RULE_SETUP +#line 4926 "tth.lex" +{ + if(horizmode) {{TTH_PAR_ACTION}} +} + YY_BREAK +/* Suck up prior whitespace to prevent paragraphs in lists*/ +case 778: +/* rule 778 can match eol */ +YY_RULE_SETUP +#line 4931 "tth.lex" +{ + TTH_EXTRACT_COMMENT{TTH_INC_MULTI;TTH_OUTPUT("
    ");} +} + YY_BREAK +/* Because of sucking up, this must be explicit. */ +case 779: +/* rule 779 can match eol */ +YY_RULE_SETUP +#line 4935 "tth.lex" +{ + TTH_EXTRACT_COMMENT{GET_DIMEN;} +} + YY_BREAK +/* Try a better job at sucking up whitespace before items. */ +case 780: +/* rule 780 can match eol */ +YY_RULE_SETUP +#line 4939 "tth.lex" +{ + TTH_EXTRACT_COMMENT{ /* Fix tth-comment before item bug. */ + TTH_INC_MULTI; + TTH_OUTPUT(closing); + *closing=0; + strcat(closing,"\n
    \n"); + strcat(closing,"
  • \n"); + fprintf(tth_fdout,"\n
  • "); + } +} + YY_BREAK +/* New approach to optional item argument. Don't try to grab the whole.*/ +case 781: +/* rule 781 can match eol */ +YY_RULE_SETUP +#line 4950 "tth.lex" +{ + TTH_EXTRACT_COMMENT{ /* Fix tth-comment before item bug. */ + TTH_INC_MULTI; + if(tth_htmlstyle&2){/* Strict xhtml doesn't allow text outside
  • */ + TTH_OUTPUT(closing); + *closing=0; + strcat(closing,"\n
    \n"); + strcat(closing,"
  • \n"); + fprintf(tth_fdout,"\n
  • "); + TTH_SCAN_STRING("\\tthnooutopt["); + }else{ + fprintf(tth_fdout,"\n
    "); + TTH_SCAN_STRING("\\tthoutopt["); + } + } +} + YY_BREAK +case 782: +YY_RULE_SETUP +#line 4966 "tth.lex" +fprintf(tth_fdout,"
        "); + YY_BREAK +case 783: +YY_RULE_SETUP +#line 4967 "tth.lex" +fprintf(tth_fdout,"
            "); + YY_BREAK +case 784: +/* rule 784 can match eol */ +YY_RULE_SETUP +#line 4968 "tth.lex" +{ /* Space might not mean no opt. */ + /* If we can immediately detect absence of opt arg. Don't put dt section*/ + TTH_INC_MULTI; + jscratch=strlen(yytext)-1; /*circumlocution necessary*/ + yyless(jscratch); + TTH_OUTPUT(closing); strcpy(closing,"\n"); + fprintf(tth_fdout,"\n\t
    "); + tth_index_line++; +} + YY_BREAK +case 785: +/* rule 785 can match eol */ +YY_RULE_SETUP +#line 4977 "tth.lex" +{ /* If opt arg absent just gives null dt*/ + TTH_EXTRACT_COMMENT{ /* Fix tth-comment before item bug. */ + TTH_INC_MULTI; + TTH_OUTPUT(closing); strcpy(closing,"
    \n"); + TTH_TEX_FN_OPT("\\special{html:
    }#1\\special{html:
    \n\t
    }#tthdrop1",1,""); + tth_index_line++; + } +} + YY_BREAK +case 786: +/* rule 786 can match eol */ +YY_RULE_SETUP +#line 4985 "tth.lex" +{ + TTH_EXTRACT_COMMENT{ /* Fix tth-comment before item bug. */ + TTH_INC_MULTI; + TTH_OUTPUT(closing); strcpy(closing,"
    \n"); + fprintf(tth_fdout,"
        "); + tth_index_line++; + } +} + YY_BREAK +case 787: +/* rule 787 can match eol */ +YY_RULE_SETUP +#line 4993 "tth.lex" +{ + TTH_EXTRACT_COMMENT{ /* Fix tth-comment before item bug. */ + TTH_INC_MULTI; + TTH_OUTPUT(closing); strcpy(closing,"
    \n"); + fprintf(tth_fdout,"
            "); + tth_index_line++; + } +} + YY_BREAK +case 788: +YY_RULE_SETUP +#line 5001 "tth.lex" +{ + fprintf(tth_fdout,"%s","\n
    \n
    \n");TTH_PUSH_CLOSING; + TTH_CCPY(closing,"
    "); + TTH_CCPY(argchar,"\n
    \n"); + yy_push_state(pargroup);tth_eqwidth=tth_eqwidth-TTH_INDPC; + yy_push_state(tokenarg); /* item code */ + } + YY_BREAK +case 789: +YY_RULE_SETUP +#line 5008 "tth.lex" +{ + fprintf(tth_fdout,"\n
    ");TTH_PUSH_CLOSING; + TTH_CCPY(closing,"
    "); + TTH_CCPY(argchar,"
    "); + yy_push_state(pargroup);tth_eqwidth=tth_eqwidth-TTH_INDPC; + yy_push_state(tokenarg); /* itemitem code */ +} + YY_BREAK +case 790: +YY_RULE_SETUP +#line 5015 "tth.lex" +{TTH_PUSH_CLOSING;fprintf(tth_fdout,"\n
    ");} + YY_BREAK +case 791: +YY_RULE_SETUP +#line 5016 "tth.lex" +{ + TTH_TEXCLOSE else{ + TTH_CLOSEGROUP;TTH_POP_CLOSING;fprintf(tth_fdout,"\n
    ");} +} + YY_BREAK +case 792: +YY_RULE_SETUP +#line 5021 "tth.lex" +{ /* Now using embracetok Sep 98*/ + ftntno++; + tth_encode(ftntcode,ftntno); + if(tth_LaTeX){ /* convert to plain TeX form */ + if((chscratch=strstr(yytext,"["))){ /* optional argument case */ + strcpy(scratchstring,chscratch+1); + *(scratchstring+strcspn(scratchstring,"]"))=0; + sprintf(dupstore,"{$^{%s}$}",scratchstring); + ftntno--; + sscanf(scratchstring,"%d",&js2); + tth_encode(ftntcode,js2); + }else{ + sprintf(dupstore,"{$^{%d}$}",ftntno); + } + } + if(tth_splitfile)sprintf(scratchstring,"",ftntcode,ftntcode);else /*sf*/ + sprintf(scratchstring, + "",ftntcode,ftntcode); + TTH_OUTPUT(scratchstring); + bracecount--; + TTH_CCPY(argchar,"\\tth_footnote"); + storetype=3; /* Make argchar to be rescanned */ + yy_push_state(dupgroup); /* Puts in anchors */ + yy_push_state(embracetok); +} + YY_BREAK +case 793: +YY_RULE_SETUP +#line 5047 "tth.lex" +{ /* xdef footnote with reference.*/ + if(tth_debug&4) fprintf(stderr,"tthfootnote, dupstore=%s\n",dupstore); + TTH_OUTPUT(""); /* end the anchors */ + sprintf(newcstr, + "\\xdef\\tthFtNt%s{\\tthhref{%s#tthFref%s}{#1}{#2}\\end}#tthdrop2", + ftntcode,filechar,ftntcode); + TTH_TEX_FN(newcstr,2); + } + YY_BREAK +case 794: +YY_RULE_SETUP +#line 5056 "tth.lex" +{ + yy_push_state(uppercase); + tth_push_depth--; + TTH_PRETEXCLOSE("\\tth_endupper"); + tth_push_depth++; +} + YY_BREAK +case 795: +YY_RULE_SETUP +#line 5062 "tth.lex" +{ + for(jscratch=0;jscratch\n"); + TTH_HAL_PUSH; + *halstring=0; + halignenter=tth_push_depth; + } + YY_BREAK +case 800: +YY_RULE_SETUP +#line 5087 "tth.lex" +{ + strcpy(scratchstring," border=\"1\""); + TTH_CCAT(scrstring,yytext); +} + YY_BREAK +/* Add template interpretation into && strings and alignment.*/ +case 801: +YY_RULE_SETUP +#line 5092 "tth.lex" +{ + TTH_CCAT(halstring,tdalign); + /* TTH_CCAT(scrstring,"}&|"); */ + TTH_CCAT(scrstring,"&|"); + TTH_CCAT(halstring,scrstring); + /* strcpy(scrstring,"&{");*/ + strcpy(scrstring,"&"); + /*TTH_CCAT(scrstring,"&|"); + if(strlen(scrstring)>3){ + TTH_CCAT(halstring,scrstring); + }else {TTH_CCAT(halstring,"|");} + strcpy(scrstring,"&"); Old version */ + *tdalign=0; + js2=ncols; /* signifies that we are in the first part of the cell */ +} + YY_BREAK +case 802: +YY_RULE_SETUP +#line 5107 "tth.lex" +{ + if(*tdalign==0) { + strcpy(tdalign,"r"); + } else if(ncols!=js2){ + if(*tdalign=='r') strcpy(tdalign,"c"); else strcpy(tdalign,"l"); + yy_push_state(removespace); + } +} + YY_BREAK +case 803: +YY_RULE_SETUP +#line 5115 "tth.lex" +{ + ncols++; + TTH_CCAT(scrstring,"&"); + if(strlen(scrstring)>2){TTH_CCAT(halstring,scrstring);} + strcpy(scrstring,"&"); + if(!*tdalign) strcpy(tdalign,"l"); +} + YY_BREAK +case 804: +#line 5123 "tth.lex" +case 805: +/* rule 805 can match eol */ +YY_RULE_SETUP +#line 5123 "tth.lex" +TTH_INC_LINE;TTH_CCAT(scrstring,yytext); + YY_BREAK +case 806: +YY_RULE_SETUP +#line 5124 "tth.lex" +TTH_CCAT(scrstring,yytext); + YY_BREAK +case 807: +YY_RULE_SETUP +#line 5125 "tth.lex" +{ /* New version uses the scanning of template. */ + /* + TTH_CCAT(scrstring,"&"); + TTH_CCAT(halstring,tdalign); + if(strlen(scrstring)>2) {TTH_CCAT(halstring,scrstring);} + */ + /* TTH_CCAT(scrstring,"}&"); */ + TTH_CCAT(scrstring,"&"); + TTH_CCAT(halstring,tdalign); + TTH_CCAT(halstring,scrstring); + if(tth_debug&32)fprintf(stderr,"halign format string:%s> ",halstring); + *tdalign=0;*dupstore=0; + yy_pop_state(); + yy_push_state(hendline); /* check for multicol at start */ + TTH_PUSH_BUFF(0);halbuff=yy_scan_string(halstring); /* Setup halbuff */ + yy_switch_to_buffer(include_stack[--tth_stack_ptr]); + fprintf(tth_fdout,"\n",scratchstring); +} + YY_BREAK +/* end of halign and htemplate */ +/* Hack of valign allowing only one row . */ +case 808: +/* rule 808 can match eol */ +YY_RULE_SETUP +#line 5147 "tth.lex" +{ + TTH_INC_MULTI; + yy_push_state(valign); + yy_push_state(vtemplate); + *valignstring=0; + valsec=0; + TTH_PRETEXCLOSE("\\tthexitvalign"); + TTH_PUSH_CLOSING; + TTH_CCPY(closing,"\n"); + } + YY_BREAK +case 809: +YY_RULE_SETUP +#line 5158 "tth.lex" +valsec++; + YY_BREAK +case 810: +YY_RULE_SETUP +#line 5159 "tth.lex" +{ + if(valsec){ + if(*valignstring){ + TTH_CCPY(valignstring," valign=\"middle\""); + }else{ + TTH_CCPY(valignstring," valign=\"top\""); + } + }else{ + TTH_CCPY(valignstring," valign=\"bottom\""); + } +} + YY_BREAK +case 811: +YY_RULE_SETUP +#line 5170 "tth.lex" +{ + fprintf(tth_fdout,"\n",valignstring); + yy_pop_state(); +} + YY_BREAK +case 812: +#line 5177 "tth.lex" +case 813: +YY_RULE_SETUP +#line 5177 "tth.lex" +{ + yy_pop_state(); +} + YY_BREAK +/* altered approach to input*/ +case 814: +#line 5182 "tth.lex" +case 815: +#line 5183 "tth.lex" +case 816: +YY_RULE_SETUP +#line 5183 "tth.lex" +yy_push_state(inputfile);yy_push_state(removespace); + YY_BREAK +case YY_STATE_EOF(inputfile): +#line 5184 "tth.lex" +TTH_SCAN_STRING(" \\tth_eof"); + YY_BREAK +case 817: +/* rule 817 can match eol */ +#line 5186 "tth.lex" +case 818: +/* rule 818 can match eol */ +YY_RULE_SETUP +#line 5186 "tth.lex" +TTH_INC_LINE;TTH_SCAN_STRING(" "); + YY_BREAK +case 819: +#line 5188 "tth.lex" +case 820: +YY_RULE_SETUP +#line 5188 "tth.lex" +{ + if ( tth_stack_ptr >= MAX_INCLUDE_DEPTH ) + { + fprintf(stderr, "**** Error: Fatal. Includes nested too deeply. Line %d\n",tth_num_lines); + TTH_EXIT( 1 ); + } + if(tth_allowinput){ + strcpy(scratchstring,input_filename); + if( (tth_inputfile=TTH_FILE_OPEN(scratchstring)) == NULL){ + strcat(scratchstring,".tex"); + if ( (tth_inputfile=fopen(scratchstring,"r")) == NULL){ + if(strlen(tth_texinput_path) > 0){ + chscratch=tth_texinput_path; + while(strlen(chscratch)){ + if((js2=strcspn(chscratch,PATH_SEP))){ + strcpy(scratchstring,chscratch); + strcpy(scratchstring+js2,DIR_SEP); + strcat(scratchstring,input_filename); + if(tth_debug&128) + fprintf(stderr,"Input try file:%s\n",scratchstring); + chscratch=chscratch+js2; + chscratch=chscratch+strspn(chscratch,PATH_SEP); + if ( (tth_inputfile=fopen(scratchstring,"r")) == NULL){ + strcat(scratchstring,".tex"); + tth_inputfile=fopen(scratchstring,"r"); + } + }else{++chscratch;} + if(tth_inputfile)break; + } + } + } + } + if(tth_inputfile){ + if(tth_debug&1) fprintf(stderr,"Input file: %s\n",scratchstring); + sprintf(scrstring,"\\tth_fileclose%p ",tth_inputfile); + TTH_SCAN_STRING(scrstring); + include_stack[tth_stack_ptr++] = YY_CURRENT_BUFFER; + yy_switch_to_buffer(yy_create_buffer(tth_inputfile,YY_BUF_SIZE)); + }else{ + fprintf(stderr,"Input file %s not found\n",input_filename); + } + }else{ + fprintf(stderr,"Input of file %s not allowed.\n",input_filename); + } + *input_filename=0; + yy_pop_state(); + } + YY_BREAK +case 821: +YY_RULE_SETUP +#line 5235 "tth.lex" + + YY_BREAK +case 822: +YY_RULE_SETUP +#line 5236 "tth.lex" +TTH_CCAT(input_filename,yytext); + YY_BREAK +/* Specific internal commands to expand in inputfile */ +case 823: +YY_RULE_SETUP +#line 5238 "tth.lex" +TTH_SCAN_STRING(tth_latex_file); + YY_BREAK +case 824: +YY_RULE_SETUP +#line 5239 "tth.lex" +{ + TTH_DO_MACRO + else{ + TTH_CCAT(input_filename,yytext); + } +} + YY_BREAK +case 825: +/* rule 825 can match eol */ +#line 5247 "tth.lex" +case 826: +/* rule 826 can match eol */ +YY_RULE_SETUP +#line 5247 "tth.lex" +{ +#ifdef MSDOS + /* pointer reading is broken in DJGPP */ + sscanf(yytext,"\\tth_fileclose%x ",&tth_inputfile); +#else + sscanf(yytext,"\\tth_fileclose%p ",&tth_inputfile); +#endif + if(!fclose(tth_inputfile)) { + if(tth_debug&1){ + fprintf(stderr,"Closing %s.\n",yytext); + } + }else{ + fprintf(stderr,"**** Error closing %s. ",yytext); + fprintf(stderr," Apparent file pointer:%p.\n",tth_inputfile); + } + + tth_inputfile=NULL; +} + YY_BREAK +case 827: +/* rule 827 can match eol */ +YY_RULE_SETUP +#line 5266 "tth.lex" +{ + TTH_INC_MULTI; + if(tth_fontguess){/* Try to guess what size etc is being called for. */ + strcpy(scratchstring,yytext); + jscratch=0; + js2=0; + if(tth_debug&2048)fprintf(stderr,"Font definition start:%s\n",scratchstring); + if((chscratch=strstr(scratchstring," at ")) != NULL){ /* at NNpt */ + chscratch=chscratch+4+strspn(chscratch+4," "); + if(strspn(chscratch,"0123456789")){ + *(chscratch+strspn(chscratch,"0123456789"))=0; + sscanf(chscratch,"%d",&js2); + jscratch=(js2-10)/2; + } + } + if(!js2){ /* No "at", Guess scaled */ + if((chscratch=strstr(scratchstring,"\\magstep")) != NULL){ + if(strspn(chscratch+8,"1234567890")){ + *(chscratch+8+strspn(chscratch+8,"1234567890"))=0; + sscanf(chscratch+8,"%d",&jscratch); + *chscratch=0; + } + } + if(strcspn(scratchstring,"123456789") != strlen(scratchstring)){ + sscanf(scratchstring+strcspn(scratchstring,"123456789"),"%d",&js2); + jscratch=jscratch + (js2-10)/2; /* Approx */ + *(scratchstring+strcspn(scratchstring,"123456789"))=0; + } + } + chscratch=strstr(scratchstring+1,"\\"); + chscratch=chscratch+strcspn(chscratch," ="); + if(strstr(chscratch,"mb") != NULL) strcpy(defstore,"\\rmfamily\\bf"); + else if(strstr(chscratch,"mr") != NULL) strcpy(defstore,"\\rmfamily"); + else if(strstr(chscratch,"mssb") != NULL) strcpy(defstore,"\\sffamily\\bf"); + else if(strstr(chscratch,"mssi") != NULL) strcpy(defstore,"\\sffamily\\it"); + else if(strstr(chscratch,"mss") != NULL) strcpy(defstore,"\\sffamily "); + else if(strstr(chscratch,"msl") != NULL) strcpy(defstore,"\\rmfamily\\it"); + else if(strstr(chscratch,"mi") != NULL) strcpy(defstore,"\\rmfamily\\it"); + else if(strstr(chscratch,"mtti") != NULL) strcpy(defstore,"\\ttfamily\\it"); + else if(strstr(chscratch,"mttb") != NULL) strcpy(defstore,"\\ttfamily\\bf"); + else if(strstr(chscratch,"mtt") != NULL) strcpy(defstore,"\\upshape\\ttfamily"); + else *defstore=0; + switch(jscratch){ + case 1: strcat(defstore,"\\large ");break; + case 2: strcat(defstore,"\\Large ");break; + case 3: strcat(defstore,"\\LARGE ");break; + case 4: case 5: case 6: case 7: case 8: strcat(defstore,"\\huge ");break; + case -1: strcat(defstore,"\\small ");break; + case -2: strcat(defstore,"\\footnotesize ");break; + case -3: strcat(defstore,"\\scriptsize ");break; + case -4: case -5: case -6: strcat(defstore,"\\tiny ");break; + default : strcat(defstore,"\\normalsize ");break; + } + chscratch=strstr(scratchstring+1,"\\"); + *(chscratch+strcspn(chscratch," ="))=0; + sprintf(dupstore,"\\def%s{%s}",chscratch,defstore); + if(tth_debug&2048)fprintf(stderr,"Font definition:%s\n",dupstore); + *defstore=0; + TTH_SCAN_STRING(dupstore); + *dupstore=0; + }else fprintf(tth_fdout," "); +} + YY_BREAK +/* Latex counters etc.*/ +case 828: +/* rule 828 can match eol */ +YY_RULE_SETUP +#line 5329 "tth.lex" +{ + TTH_INC_MULTI; + sprintf(newcstr,"\\tth_newcounter%s",strstr(yytext,"{")); + TTH_TEX_FN_OPT(newcstr,1,""); + /* This does not work using scratchstring. Need a permanent String*/ +} + YY_BREAK +case 829: +YY_RULE_SETUP +#line 5335 "tth.lex" +{ + if(tth_debug&4)fprintf(stderr,"Newcounter: %s\n",yytext); + strcpy(dupstore2,"\\");strcat(dupstore2,yytext+strcspn(yytext,"{")+1); + *(strstr(dupstore2,"}"))=0; + mkkey(dupstore2,countkeys,&ncounters); + if(tth_debug&4) fprintf(stderr,"Created new counter %s\n",dupstore2); + sprintf(scratchstring,"\\gdef\\the%s{\\arabic{%s}}",dupstore2+1,dupstore2+1); + strcpy(scrstring,yytext); + TTH_SCAN_STRING(scratchstring); + /* New using opt arg.*/ + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1){ + sprintf(scratchstring,"\\%s",margs[jscratch]); + yy_pop_state(); + rmdef(margkeys,margs,&margmax); + } + if(strlen(scratchstring)>1){ + if((ind=indexkey(scratchstring,countkeys,&ncounters)) != -1){ + *scrstring=0; + i=ind; + if(countwithins[ind]){ + strcpy(scrstring,countwithins[i]); + i++; + rmkey(countwithins,&i); + } + strcat(scrstring,dupstore2+1); + strcat(scrstring,","); + mkkey(scrstring,countwithins,&i); + if(tth_debug&4)fprintf(stderr,"Added %s to withins of %s:%s\n", + dupstore2+1,scratchstring,scrstring); + }else{ + fprintf(stderr,"**** Error: No such counter for \"within\" option: %s. Line %d\n", + scratchstring,tth_num_lines); + } + } + *dupstore2=0; + if(horizmode)horizmode=1; + } + YY_BREAK +case 830: +/* rule 830 can match eol */ +YY_RULE_SETUP +#line 5372 "tth.lex" +{ + TTH_INC_MULTI; + if(tth_debug&4)fprintf(stderr,"Setcounter: %s\n",yytext); + yytext=yytext+strcspn(yytext,"{"); + TTH_CCPY(argchar,yytext);*(argchar+strcspn(argchar,"}"))=0; + *(argchar)='\\'; + if((ind=indexkey(argchar,countkeys,&ncounters)) != -1){ + yy_push_state(counterset); + if((chscratch=strstr(yytext,"\\value")) != NULL){ + strcpy(dupstore2,(chscratch+6)); + *dupstore2='\\'; + }else{ + strcpy(dupstore2,yytext+1+strcspn(yytext+1,"{")+1); + } + *(dupstore2+strcspn(dupstore2,"}"))=0; + TTH_SCAN_STRING(dupstore2); + *dupstore2=0; + }else fprintf(stderr,"**** No counter: %s to set. Line %d\n",argchar,tth_num_lines); + *argchar=0; + } + YY_BREAK +case 831: +YY_RULE_SETUP +#line 5392 "tth.lex" +iac=-1;yy_push_state(advance); yy_push_state(removespace); + YY_BREAK +case 832: +YY_RULE_SETUP +#line 5393 "tth.lex" +{ + if(strstr(yytext,"alph")) jscratch=1; + else if(strstr(yytext,"Alph")) jscratch=2; + else if(strstr(yytext,"roman")) jscratch=3; + else if(strstr(yytext,"Roman")) jscratch=4; + else jscratch=0; + if((chscratch=strstr(yytext,"{"))!=NULL) yytext=chscratch; + else yytext=yytext+3; + if((chscratch=strstr(yytext,"}"))!=NULL) *chscratch=0; + *yytext='\\'; + TTH_SCAN_STRING(yytext); + yy_push_state(number);if(horizmode)horizmode=1; + } + YY_BREAK +case 833: +/* rule 833 can match eol */ +YY_RULE_SETUP +#line 5406 "tth.lex" +{ + TTH_INC_MULTI; + strcpy(scratchstring,yytext+strcspn(yytext,"{")); + *scratchstring='\\'; + *(scratchstring+strlen(scratchstring)-1)=0; + if((ind=indexkey(scratchstring,countkeys,&ncounters)) != -1){ + strcpy(dupstore2,"\\addtocounter"); + strcat(dupstore2,yytext+strcspn(yytext,"{")); + strcat(dupstore2,"{1}"); + if(countwithins[ind]){ + strcpy(scrstring,countwithins[ind]); + chscratch=scrstring; + while((chs2=strstr(chscratch,",")) != NULL){ + *chs2=0; + sprintf(dupstore2+strlen(dupstore2),"\\setcounter{%s}{0}",chscratch); + chscratch=chs2+1; + } + } + if(tth_debug&4) fprintf(stderr,"Stepping counter:%s\n",dupstore2); + TTH_SCAN_STRING(dupstore2); + }else{ + fprintf(stderr,"**** No counter:%s to step. Line %d\n",scratchstring,tth_num_lines); + } + *dupstore2=0;if(horizmode)horizmode=1; + } + YY_BREAK +case 834: +/* rule 834 can match eol */ +YY_RULE_SETUP +#line 5431 "tth.lex" +{ + TTH_INC_MULTI; + chscratch=yytext+strcspn(yytext,"{")+1; + chs2=chscratch+strcspn(chscratch,"{")+1; + *(chscratch+strcspn(chscratch,"}"))=0; + *(chs2+strcspn(chs2,"}"))=0; + strcpy(scratchstring,"\\"); + strcat(scratchstring,chs2); + if((ind=indexkey(scratchstring,countkeys,&ncounters)) != -1){ + *scrstring=0; + i=ind; + if(countwithins[ind]){ + strcpy(scrstring,countwithins[i]); + rmkey(countwithins,&i); + i++; + } + strcat(scrstring,chscratch); + strcat(scrstring,","); + mkkey(scrstring,countwithins,&i); + if(tth_debug&4)fprintf(stderr,"Added %s to withins of %s:%s\n", + chscratch,scratchstring,scrstring); + }else{ + fprintf(stderr,"**** Error: No such counter for \"within\" option: %s. Line %d\n", + scratchstring,tth_num_lines); + } +} + YY_BREAK +/* TeX counters */ +case 835: +YY_RULE_SETUP +#line 5459 "tth.lex" +{ + if(horizmode)horizmode=1;yy_push_state(getcount);yy_push_state(removespace);} + YY_BREAK +case 836: +YY_RULE_SETUP +#line 5461 "tth.lex" +{ + mkkey(yytext,countkeys,&ncounters);yy_pop_state(); + } + YY_BREAK +case 837: +YY_RULE_SETUP +#line 5464 "tth.lex" +fprintf(stderr,"Ill-formed newcount");yy_pop_state(); + YY_BREAK +case 838: +YY_RULE_SETUP +#line 5467 "tth.lex" +{iac=-1;yy_push_state(advance);if(horizmode)horizmode=1;} + YY_BREAK +case 839: +/* rule 839 can match eol */ +YY_RULE_SETUP +#line 5469 "tth.lex" +TTH_INC_MULTI; + YY_BREAK +/* +\\[a-zA-Z]+((margin)|(width)|(height)|(size)|(offset)|(indent)){SP}*(by)? { + TTH_INC_MULTI; + if(tth_debug&4) fprintf(stderr,"Removing dimension advance: %s\n",yytext); + yy_pop_state(); + GET_DIMEN; + } Override the real command */ +case 840: +/* rule 840 can match eol */ +YY_RULE_SETUP +#line 5479 "tth.lex" +{ + /* Latex addtocounter. Convert into plain form. */ + TTH_INC_MULTI; + *yytext='\\'; + *(yytext+strcspn(yytext,"}"))=' '; + *(yytext+strcspn(yytext,"{"))=' '; + *(yytext+strlen(yytext)-1)=0; + if((chscratch=strstr(yytext,"\\value")) != NULL){ + strcpy(chscratch," "); + *(chscratch+6)='\\'; + *(chscratch+strcspn(chscratch,"}"))=0; + } + if(tth_debug&4)fprintf(stderr,"Latex advance string:%s\n",yytext); + TTH_SCAN_STRING(yytext); +} + YY_BREAK +case 841: +YY_RULE_SETUP +#line 5495 "tth.lex" + + YY_BREAK +case 842: +YY_RULE_SETUP +#line 5496 "tth.lex" +{/* Dimension advancing: get counter name.*/ + chscratch=yytext+strlen("\\tthdimen"); + strcpy(newcstr,chscratch+strspn(chscratch," ")); + yy_pop_state(); + yy_push_state(dimadv); /* Prepare to get second and advance. */ + dimadvstate=0; + GET_DIMEN; + if(tth_debug&1024)fprintf(stderr,"Advancing %s\n",newcstr); +} + YY_BREAK +case 843: +/* rule 843 can match eol */ +YY_RULE_SETUP +#line 5506 "tth.lex" +{ + yyless(0); + if(!dimadvstate){ /* Return of first time we have the first num,unit. */ + cnumber=anumber; + strcpy(scrstring,scratchstring); + GET_DIMEN; + dimadvstate=1; + }else{ + if(tth_debug&1024)fprintf(stderr,"Adding: %f %s, %f %s\n", + cnumber,scrstring,anumber,scratchstring); + adddimen(&cnumber,scrstring,&anumber,scratchstring); + if(*scrstring=='%')strcpy(scrstring,"\\tth_hsize"); + yy_pop_state(); + sprintf(scratchstring,"%s %f%s",newcstr,cnumber,scrstring); + if(tth_debug&1024)fprintf(stderr,"Dimension advance string:%s\n",scratchstring); + TTH_SCAN_STRING(scratchstring); + dimadvstate=0; + } +} + YY_BREAK +case 844: +YY_RULE_SETUP +#line 5527 "tth.lex" +{ + if(strcspn(yytext,"-") < strlen(yytext)) minus=-1; +} + YY_BREAK +case 845: +#line 5531 "tth.lex" +case 846: +YY_RULE_SETUP +#line 5531 "tth.lex" +{ + if(iac==-1){ /* First time we are getting the one to set */ + iac=indexkey(yytext,countkeys,&ncounters); + if(tth_debug&4) fprintf(stderr,"First advance:%s: %d, currently: %d.\n", + yytext,iac,counters[iac]); + if(iac == -1) { + TTH_DO_MACRO else{ + if(!(tth_debug&32768)) + fprintf(stderr,"**** Unknown counter to advance: %s\n",argchar); + yy_pop_state(); + GET_DIMEN; + } + } else { + strcpy(argchar,yytext); + } + }else{ + if(tth_debug&4) fprintf(stderr,"Advancing counter %d, %s by %s. " + ,iac,argchar,yytext); + if(strcspn(yytext,"0123456789") < strlen(yytext)){ + sscanf(yytext+strcspn(yytext,"+-0123456789"),"%d",&jac); + counters[iac]=counters[iac]+jac*minus; + jac=0; + } else { + TTH_CCPY(newcstr,yytext+strcspn(yytext,"\\")); + jac=indexkey(newcstr,countkeys,&ncounters); + if(jac == -1) { + TTH_DO_MACRO else{ + if(!(tth_debug&32768)) + fprintf(stderr,"**** Unknown counter: %s\n",newcstr); + jac=-2; /* Quit. Expansion is exhausted. */ + } + } else { + if(strcspn(yytext,"-") == strlen(yytext)) { + counters[iac]=counters[iac]+minus*counters[jac]; + }else{ + counters[iac]=counters[iac]-minus*counters[jac]; + } + } + } + if(jac!=-1){ + minus=1; + yy_pop_state(); + if(tth_debug&4) fprintf(stderr,"New counter value=%d\n",counters[iac]); + *argchar=0; + } + } +} + YY_BREAK +case 847: +YY_RULE_SETUP +#line 5578 "tth.lex" +{ + fprintf(stderr,"**** Error. Ill-formed \\advance statement\n"); + yy_pop_state(); +} + YY_BREAK +case 848: +/* rule 848 can match eol */ +#line 5584 "tth.lex" +case 849: +/* rule 849 can match eol */ +YY_RULE_SETUP +#line 5584 "tth.lex" +{ + chscratch=strstr(yytext,"{"); + strcpy(scratchstring,chscratch); + *(scratchstring+strcspn(scratchstring,"}"))=0; + *(scratchstring)='\\'; + TTH_SCAN_STRING(scratchstring); + } + YY_BREAK +case 850: +#line 5593 "tth.lex" +case 851: +#line 5594 "tth.lex" +case 852: +#line 5595 "tth.lex" +case 853: +YY_RULE_SETUP +#line 5595 "tth.lex" +yy_push_state(number);jscratch=0; + YY_BREAK +case 854: +YY_RULE_SETUP +#line 5596 "tth.lex" +{ + i=indexkey(yytext,countkeys,&ncounters); + if(i == -1) { + TTH_DO_MACRO else { + if(!(tth_debug&32768)) + fprintf(stderr,"**** Unknown counter for number, %s\n",yytext); + yy_pop_state(); + } + } else { + switch(jscratch){ + case 0: sprintf(dupstore2,"%d",counters[i]);break; + case 1: sprintf(dupstore2,"%c",counters[i]+96);break; + case 2: sprintf(dupstore2,"%c",counters[i]+64);break; + case 3: roman(counters[i],dupstore2);break; + case 4: roman(counters[i],dupstore2); + for(js2=0;js2 */ + if(!bracecount){ + if(tth_debug&4) fprintf(stderr,"Close brace ending let,count=%d\n", + bracecount); + yy_pop_state(); + strcpy(scratchstring,defstore+strspn(defstore," {")); + *(scratchstring+strcspn(scratchstring,"}"))=0; + if((i=indexkey(scratchstring,keys,&nkeys))==-1){ + if(tth_debug&4) fprintf(stderr,"Macro %s not found for \\let. Presuming native.\n",scratchstring); + strcat(defstore,"#tthdrop"); + sprintf((defstore+strlen(defstore)),"%d",abs(narg)); + if(nkeys < NFNMAX) { + lkeys[nkeys]=localdef; + mkdef(defchar,keys,defstore,defs,&narg,nargs,&nkeys); + if(tth_debug&4){ + i=indexkey(defchar,keys,&nkeys); + fprintf(stderr," Just Defined Key %s index %d nargs %d Def %s\n", + defchar,i,nargs[i],defs[i]); + } + } + else fprintf(stderr,"Too many functions to define %s",defchar); + }else{ + if(nkeys < NFNMAX) { + lkeys[nkeys]=localdef; + mkdef(defchar,keys,defs[i],defs,nargs+i,nargs,&nkeys); + if(tth_debug&4){ + i=indexkey(defchar,keys,&nkeys); + fprintf(stderr,"Defined Let Key %s index %d nargs %d Def %s\n", + defchar,i,nargs[i],defs[i]); + } + }else fprintf(stderr,"Too many functions to define %s",defchar); + } + *defchar=0; + *defstore=0; + } else { + if(tth_debug&4) fprintf(stderr,"Close brace in [e]def, count=%d\n", + bracecount); + strcat(defstore,yytext);bracecount--; + } +} + YY_BREAK +case 863: +YY_RULE_SETUP +#line 5705 "tth.lex" +{ + if(*(yytext+1)!='d')localdef=0; else localdef=1; + if(tth_debug&4) fprintf(stderr,"%s(localdef=%d)",yytext,localdef); + yy_push_state(define); + yy_push_state(getnumargs); + yy_push_state(getdef); + } + YY_BREAK +case 864: +YY_RULE_SETUP +#line 5712 "tth.lex" +{ + if(*(yytext+1)!='e')localdef=0; else localdef=1; + if(tth_debug&4) fprintf(stderr,"%s(localdef=%d)",yytext,localdef); + edeftype=1; + yy_push_state(define); + yy_push_state(getnumargs); /* determine no of args */ + yy_push_state(getdef); /* determine the key of definition */ + } + YY_BREAK +case 865: +/* rule 865 can match eol */ +YY_RULE_SETUP +#line 5720 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 866: +YY_RULE_SETUP +#line 5721 "tth.lex" + + YY_BREAK +case 867: +YY_RULE_SETUP +#line 5722 "tth.lex" +yy_push_state(getdefbr);strcpy(dupstore,"{"); + YY_BREAK +case 868: +YY_RULE_SETUP +#line 5723 "tth.lex" +{ /* Really ought to match braces. */ + /*fprintf(stderr,"getdefbr strings:%s:%s:",yytext,dupstore);*/ + yy_pop_state(); + TTH_CCPY(defchar,dupstore+strspn(dupstore,"{ \t\n")); + yy_pop_state();*dupstore=0; + /* If this is a true definition, terminate at space etc.*/ + if(*defchar=='\\') + *(defchar+strcspn(defchar," =}"))=0; + if(tth_debug&4) fprintf(stderr,":%s,",defchar); +} + YY_BREAK +case 869: +YY_RULE_SETUP +#line 5733 "tth.lex" +strcat(dupstore,yytext); + YY_BREAK +case 870: +YY_RULE_SETUP +#line 5734 "tth.lex" +{ + /*fprintf(stderr,"getdef string:%s:",yytext);*/ + TTH_CCPY(defchar,yytext+strspn(yytext,"{ \t\n")); + yy_pop_state();*dupstore=0; + *(defchar+strcspn(defchar," =}"))=0; + if(tth_debug&4) fprintf(stderr,":%s,",yytext); + } + YY_BREAK +case 871: +YY_RULE_SETUP +#line 5741 "tth.lex" +{ + fprintf(stderr, + "\n**** Error: incompatible syntax in macro name:%s: Line %d\n", + yytext,tth_num_lines); + yy_pop_state(); +} + YY_BREAK +/* Latex form accommodates arg number perhaps WSP is wrong. */ +case 872: +/* rule 872 can match eol */ +#line 5750 "tth.lex" +case 873: +/* rule 873 can match eol */ +YY_RULE_SETUP +#line 5750 "tth.lex" +{ /* New pattern */ + /* sscanf((yytext+strcspn(yytext,"] \t\n{")-1),"%d",&narg); */ + TTH_INC_MULTI; + sscanf((yytext+strcspn(yytext,"]{")-1),"%d",&narg); + yy_pop_state(); + if(tth_debug&4) fprintf(stderr," %d arguments.\n",narg); + } + YY_BREAK +case 874: +YY_RULE_SETUP +#line 5757 "tth.lex" +{ + narg=0; + yy_pop_state(); + if(tth_debug&4) fprintf(stderr," no arguments.\n"); + } + YY_BREAK +case 875: +/* rule 875 can match eol */ +YY_RULE_SETUP +#line 5762 "tth.lex" +{ + if(tth_delimdef){ + yy_pop_state(); + if(tth_debug&4) fprintf(stderr,"yytext=%s",yytext); + chs2=yytext-1; + while(chs2 != NULL){ + chscratch=chs2; + chs2=strstr(chscratch+1,"#"); + } + sscanf(chscratch+1,"%d",&narg); + narg=-narg; + if(tth_debug&4) fprintf(stderr, + "Delimited definition:%s\n No of args: %d\n ",defchar,narg); + if(nkeys < NFNMAX) { + whitespace=1; + horizmode=1; + yyless(0); + *dupstore=0; /* ought not to be needed */ + yy_push_state(ddcomp); + } + else fprintf(stderr,"Too many functions to define %s",defchar); + }else{ + TTH_INC_MULTI; + yy_pop_state();yy_pop_state();yy_push_state(matchbrace); + fprintf(stderr,"Discarding delimited definition:%s\n",defchar); + } +} + YY_BREAK +case 876: +/* rule 876 can match eol */ +YY_RULE_SETUP +#line 5789 "tth.lex" +{ + if(!whitespace)strcat(dupstore," "); + TTH_INC_LINE; + whitespace=1; + if(horizmode==1){ + horizmode=-1; + yy_push_state(parcheck); + }else{ + if(horizmode==-1){ + fprintf(stderr,"**** Abnormal NL in -1 ddcomp.\n"); +/* horizmode=0;strcat(dupstore,"\\par"); */ + } + } +} + YY_BREAK +case 877: +YY_RULE_SETUP +#line 5803 "tth.lex" +{if(!whitespace){strcat(dupstore," ");} whitespace=1; } + YY_BREAK +case 878: +YY_RULE_SETUP +#line 5804 "tth.lex" +{whitespace=1;strcat(dupstore,yytext);} + YY_BREAK +case 879: +YY_RULE_SETUP +#line 5805 "tth.lex" +{ + whitespace=0;strcat(dupstore,yytext);horizmode=1; + lkeys[nkeys]=0; + mkdef("",keys,dupstore,defs,&narg,nargs,&nkeys); + if(tth_debug&4){ + fprintf(stderr,"Defined Argument-Template: index %d nargs %d Def:%s\n", + nkeys-1,nargs[nkeys-1],defs[nkeys-1]); + } + *dupstore=0; + yy_pop_state(); +} + YY_BREAK +case 880: +YY_RULE_SETUP +#line 5816 "tth.lex" +{whitespace=0;strcat(dupstore,yytext+1);horizmode=1;} + YY_BREAK +case 881: +YY_RULE_SETUP +#line 5817 "tth.lex" +{whitespace=0;strcat(dupstore,yytext);horizmode=1;} + YY_BREAK +case 882: +/* rule 882 can match eol */ +YY_RULE_SETUP +#line 5819 "tth.lex" +{ + TTH_INC_MULTI; + strcpy(scratchstring,yytext); + chscratch=strstr(scratchstring+1,"[")+1; + *(chscratch+strcspn(chscratch,"]"))=0; + js2=nkeys; + mkkey(chscratch,optargs,&js2); + if(tth_debug&4){ + js2--; + fprintf(stderr,"Defined Default argument %s index %d nargs %d Def %s\n", + chscratch,js2,nargs[js2],optargs[js2]); + } + strcpy(scratchstring+3,"{"); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +case 883: +#line 5836 "tth.lex" +case 884: +#line 5837 "tth.lex" +case 885: +YY_RULE_SETUP +#line 5837 "tth.lex" +TTH_PUSH_CLOSING; + YY_BREAK +case 886: +#line 5839 "tth.lex" +case 887: +#line 5840 "tth.lex" +case 888: +#line 5841 "tth.lex" +case 889: +YY_RULE_SETUP +#line 5841 "tth.lex" +{ + TTH_TEXCLOSE else{ +/* if(horizmode==-1)horizmode=1; */ + TTH_CLOSEGROUP;TTH_POP_CLOSING;} +} + YY_BREAK +case 890: +YY_RULE_SETUP +#line 5846 "tth.lex" +bracecount++; + YY_BREAK +case 891: +YY_RULE_SETUP +#line 5847 "tth.lex" +{if(!bracecount){yy_pop_state();} else {bracecount--;}} + YY_BREAK +case 892: +YY_RULE_SETUP +#line 5848 "tth.lex" + + YY_BREAK +case 893: +YY_RULE_SETUP +#line 5849 "tth.lex" + + YY_BREAK +case 894: +YY_RULE_SETUP +#line 5850 "tth.lex" + + YY_BREAK +case 895: +YY_RULE_SETUP +#line 5852 "tth.lex" +if(!tth_LaTeX) fprintf(tth_fdout,"
    \n",tabwidth); + YY_BREAK +case 896: +YY_RULE_SETUP +#line 5854 "tth.lex" +{ + sscanf(yytext+8,"%d",&jscratch); + tabwidth=1000/jscratch; + } + YY_BREAK +case 897: +YY_RULE_SETUP +#line 5858 "tth.lex" +{TTH_PAR_ACTION}; + YY_BREAK +/* Standard TeX formatting switches work properly inside groups.*/ +case 898: +YY_RULE_SETUP +#line 5861 "tth.lex" +fprintf(tth_fdout,"
    ");TTH_PRECLOSE("\n
    "); + YY_BREAK +case 899: +YY_RULE_SETUP +#line 5862 "tth.lex" +{ /* underline switch. */ + if(eqdepth && strcspn(TTH_NAME,"M")>0 ){ /* In equations not Mathml */ + TTH_CCAT(tth_font_open[tth_push_depth],TTH_UNDL1); + TTH_CCAT(tth_font_close[tth_push_depth],TTH_UNDL2); + }else{ + TTH_OUTPUT(TTH_UNDL1);TTH_PRECLOSE(TTH_UNDL2); + } + } + YY_BREAK +case 900: +YY_RULE_SETUP +#line 5870 "tth.lex" +{ + if(eqdepth){ + TTH_CCAT(tth_font_open[tth_push_depth],TTH_BOLDO); + TTH_CCAT(tth_font_close[tth_push_depth],TTH_BOLDC); + if(strstr(tth_texclose[tth_push_depth-1],"tth_boxclose")) { + TTH_OUTPUT(TTH_BOLD1);TTH_PRECLOSE(TTH_BOLD2); + } + }else{ + TTH_OUTPUT(TTH_BOLD1);TTH_PRECLOSE(TTH_BOLD2); + } + } + YY_BREAK +case 901: +YY_RULE_SETUP +#line 5881 "tth.lex" +{ + if(eqdepth){ + TTH_CCPY(tth_font_open[tth_push_depth],TTH_BOLDO); + TTH_CCPY(tth_font_close[tth_push_depth],TTH_BOLDC); + if(strstr(tth_texclose[tth_push_depth-1],"tth_boxclose")) { + TTH_OUTPUT(TTH_BOLD1);TTH_PRECLOSE(TTH_BOLD2); + } + }else{ + TTH_OUTPUT(TTH_BOLD1);TTH_PRECLOSE(TTH_BOLD2); + } + } + YY_BREAK +/* Implementation of \bm from math package. Bold italic.*/ +case 902: +YY_RULE_SETUP +#line 5893 "tth.lex" +{ + if(eqdepth){ + TTH_CCPY(tth_font_open[tth_push_depth],TTH_BLDITO); + TTH_CCPY(tth_font_close[tth_push_depth],TTH_BLDITC); + if(strstr(tth_texclose[tth_push_depth-1],"tth_boxclose")) { + TTH_OUTPUT(TTH_BLDIT1);TTH_PRECLOSE(TTH_BLDIT2); + } + }else{ + TTH_OUTPUT(TTH_BLDIT1);TTH_PRECLOSE(TTH_BLDIT2); + } + } + YY_BREAK +case 903: +#line 5905 "tth.lex" +case 904: +YY_RULE_SETUP +#line 5905 "tth.lex" +{ + if(eqdepth){ + TTH_CCAT(tth_font_open[tth_push_depth],TTH_ITALO); + TTH_CCAT(tth_font_close[tth_push_depth],TTH_ITALC); + if(strstr(tth_texclose[tth_push_depth-1],"tth_boxclose")) { + TTH_OUTPUT(TTH_ITAL1);TTH_PRECLOSE(TTH_ITAL2); + } + }else{ + TTH_OUTPUT(TTH_ITAL1);TTH_PRECLOSE(TTH_ITAL2); + } + } + YY_BREAK +case 905: +#line 5917 "tth.lex" +case 906: +YY_RULE_SETUP +#line 5917 "tth.lex" +{ + if(eqdepth){ + TTH_CCPY(tth_font_open[tth_push_depth],TTH_ITALO); + TTH_CCPY(tth_font_close[tth_push_depth],TTH_ITALC); + if(strstr(tth_texclose[tth_push_depth-1],"tth_boxclose")) { + TTH_OUTPUT(TTH_ITAL1);TTH_PRECLOSE(TTH_ITAL2); + } + }else{ + TTH_OUTPUT(TTH_ITAL1);TTH_PRECLOSE(TTH_ITAL2); + } + } + YY_BREAK +case 907: +#line 5929 "tth.lex" +case 908: +YY_RULE_SETUP +#line 5929 "tth.lex" +{ + if(eqdepth){ + TTH_CCPY(tth_font_open[tth_push_depth],TTH_TTO); + TTH_CCPY(tth_font_close[tth_push_depth],TTH_TTC); + if(strstr(tth_texclose[tth_push_depth-1],"tth_boxclose")) { + TTH_OUTPUT(TTH_TT1);TTH_PRECLOSE(TTH_TT2); + } + }else{ + TTH_OUTPUT(TTH_TT1);TTH_PRECLOSE(TTH_TT2); + } + } + YY_BREAK +case 909: +#line 5941 "tth.lex" +case 910: +#line 5942 "tth.lex" +case 911: +#line 5943 "tth.lex" +case 912: +#line 5944 "tth.lex" +case 913: +YY_RULE_SETUP +#line 5944 "tth.lex" +{ + if(eqdepth){ + TTH_CCPY(tth_font_open[tth_push_depth],TTH_NORM1); + TTH_CCPY(tth_font_close[tth_push_depth],TTH_NORM2); + }else{ + if(!eqdepth && !(tth_istyle&1)){ + TTH_OUTPUT(TTH_FONTCANCEL); /* not in equations: avoid bug */ + }else{ + TTH_OUTPUT(TTH_NORM1);TTH_PRECLOSE(TTH_NORM2); + } + } +} + YY_BREAK +case 914: +YY_RULE_SETUP +#line 5956 "tth.lex" +{ /* new approach */ + if(tth_push_depth){ + yy_push_state(textsc); + tth_push_depth--; + TTH_PRETEXCLOSE("\\tth_endsmallcaps"); + tth_push_depth++;} +} + YY_BREAK +case 915: +YY_RULE_SETUP +#line 5963 "tth.lex" +{ + TTH_OUTPUT(TTH_HELV1); TTH_PRECLOSE(TTH_HELV2);} + YY_BREAK +case 916: +YY_RULE_SETUP +#line 5965 "tth.lex" +{ + TTH_CCAT(tth_font_open[tth_push_depth],TTH_BOLDO); + TTH_CCAT(tth_font_close[tth_push_depth],TTH_BOLDC); +} + YY_BREAK +case 917: +YY_RULE_SETUP +#line 5969 "tth.lex" +{ + TTH_CCPY(tth_font_open[tth_push_depth],tth_fonto_def); + TTH_CCPY(tth_font_close[tth_push_depth],tth_fontc_def); +} + YY_BREAK +case 918: +YY_RULE_SETUP +#line 5974 "tth.lex" +fprintf(tth_fdout,"
    ");TTH_PRECLOSE("
    "); + YY_BREAK +case 919: +YY_RULE_SETUP +#line 5976 "tth.lex" +{ + fprintf(tth_fdout,"
    "); + if(strstr(closing,"--vbox")){ + TTH_CCPY(scratchstring,""); + }else{*scratchstring=0;} + TTH_PUSH_CLOSING; + TTH_CCPY(closing,scratchstring); + TTH_CCAT(closing,"
    \n"); + yy_push_state(pargroup);tth_eqwidth=tth_eqwidth-TTH_INDPC;} + YY_BREAK +case 920: +YY_RULE_SETUP +#line 5985 "tth.lex" +{ + TTH_PUSH_CLOSING; fprintf(tth_fdout,"
    "); + TTH_CCPY(closing,"
    \n"); + yy_push_state(pargroup);tth_eqwidth=tth_eqwidth-TTH_INDPC; + GET_DIMEN } + YY_BREAK +case 921: +YY_RULE_SETUP +#line 5990 "tth.lex" +{ + fprintf(stderr,"Hangafter ignored\n");yy_push_state(lookfornum);*argchar=0; +} + YY_BREAK +/* Getting values and units, do nothing. Only treat the explicit case. + A tokenized DIMEN will treat command and dimen as unknown commands. + Removed /{NUM} also in hangindent, 1.01 (also saved 10k size)*/ +case 922: +YY_RULE_SETUP +#line 5999 "tth.lex" +GET_DIMEN + YY_BREAK +case 923: +YY_RULE_SETUP +#line 6000 "tth.lex" +GET_DIMEN + YY_BREAK +/* Setting sizes: */ +case 924: +YY_RULE_SETUP +#line 6002 "tth.lex" +GET_DIMEN + YY_BREAK +case 925: +YY_RULE_SETUP +#line 6003 "tth.lex" +GET_DIMEN + YY_BREAK +case 926: +YY_RULE_SETUP +#line 6004 "tth.lex" +GET_DIMEN + YY_BREAK +case 927: +YY_RULE_SETUP +#line 6005 "tth.lex" +GET_DIMEN + YY_BREAK +case 928: +YY_RULE_SETUP +#line 6006 "tth.lex" +GET_DIMEN + YY_BREAK +/*.|\n yyless(0);yy_pop_state(); *argchar=0; */ +case 929: +/* rule 929 can match eol */ +YY_RULE_SETUP +#line 6010 "tth.lex" +{ /* Set a dimension that was defined. */ + strcpy(newcstr,yytext+1+strcspn(yytext+1,"\\")); + *scratchstring=0; + if(tth_push_depth-tth_LaTeX>0 || strcmp(newcstr,"\\hsize")) + yy_push_state(setdimen); + GET_DIMEN;/* Get the new dimension */ + /* yy_push_state(argclear); */ + GET_DIMEN;/* Get the current dimension*/ + if(tth_debug&1024){fprintf(stderr,"Dimension to set: %s Now follow the current and the new values:\n",newcstr);} +} + YY_BREAK +/* Preexisting dimensions, skips etc. Now not preexisting. +\\hsize { + strcpy(newcstr,yytext);*scratchstring=0; + if(tth_push_depth-tth_LaTeX>0)yy_push_state(setdimen); + GET_DIMEN; +} */ +case 930: +/* rule 930 can match eol */ +YY_RULE_SETUP +#line 6026 "tth.lex" +{ + yy_pop_state();yyless(0); + if(tth_debug&1024)fprintf(stderr,"Setdimen. scratchstring=%s, closing=%s, newcstr=%s, thesize=%d\n",scratchstring,closing,newcstr,thesize); + if(thesize){ + if(*scratchstring=='%') { + sprintf(scrstring,"\\def%s{\\tthdimen%s %f%s}", + newcstr,newcstr,anumber,"\\tth_hsize"); + if(strstr(closing,"")!=NULL + && strstr(newcstr,"\\hsize")!=NULL){ + sprintf(scratchstring,"
    \n", + (thesize*DEFAULTHSIZEPIX)/100,boxalign); /*Guess at width */ + TTH_OUTPUT(scratchstring); + } + }else if(strlen(scratchstring)){ + sprintf(scrstring,"\\def%s{\\tthdimen%s %f%s}", + newcstr,newcstr,anumber,scratchstring); + if(strstr(closing,"")!=NULL + && strstr(newcstr,"\\hsize")!=NULL){ + sprintf(scratchstring,"\n", + thesize/SCALEDPERPIXEL,boxalign); + TTH_OUTPUT(scratchstring); + } + } + TTH_SCAN_STRING(scrstring); + } +} + YY_BREAK +case 931: +YY_RULE_SETUP +#line 6052 "tth.lex" +{ + TTH_DO_MACRO + else{GET_DIMEN;} +} + YY_BREAK +case 932: +YY_RULE_SETUP +#line 6056 "tth.lex" +TTH_TEX_FN("\\hskip #1{}#tthdrop1",1); + YY_BREAK +case 933: +YY_RULE_SETUP +#line 6057 "tth.lex" +TTH_TEX_FN("\\vskip #1{}#tthdrop1",1); + YY_BREAK +case 934: +YY_RULE_SETUP +#line 6058 "tth.lex" +{ + yy_push_state(hskip); + yy_push_state(glue);GET_DIMEN; +} + YY_BREAK +case 935: +/* rule 935 can match eol */ +YY_RULE_SETUP +#line 6062 "tth.lex" +{ + if(*scratchstring=='%'){ /* Size is in % of hsize. Guess 100 nbsp per line!*/ + for(js2=0;js2 is 14 pixels */ + for(js2=0;js2<(thesize/(SCALEDPERPIXEL*14));js2++){TTH_OUTPUT("
    ");} + yy_pop_state(); yyless(0); +} + YY_BREAK +case 938: +#line 6079 "tth.lex" +case 939: +YY_RULE_SETUP +#line 6079 "tth.lex" +{ + TTH_DO_MACRO + else{ + if(horizmode) horizmode=1; + if(tth_debug&1) fprintf(stderr,"Removing glue command:%s\n",yytext); + yy_push_state(glue);GET_DIMEN; + } + } + YY_BREAK +case 940: +YY_RULE_SETUP +#line 6087 "tth.lex" +{ + if(!horizmode || horizmode==3 || strstr(closing,""); + } +} + YY_BREAK +case 941: +YY_RULE_SETUP +#line 6109 "tth.lex" +{ + if(tth_debug&1024)fprintf(stderr,"tthhbclose Stack_ptr=%d. Closing=%s\n",tth_stack_ptr,closing); + yy_pop_state(); + if(tth_debug&1024)fprintf(stderr,"tthhbclose pop completed\n"); + TTH_CLOSEGROUP;TTH_POP_CLOSING; +} + YY_BREAK +case 942: +/* rule 942 can match eol */ +YY_RULE_SETUP +#line 6117 "tth.lex" +{ + if(tth_debug&1024)fprintf(stderr,"Starting vbox\n"); + yy_pop_state(); + /*If box does not start with explicit hsize manipulation, make it do so. */ + chscratch=strstr(yytext,"\\hsize"); + js2=1+strcspn(yytext+1,"\\"); + yyless(js2); + if(chscratch){ +/* fprintf(stderr,"vbox:%s\n",yytext); */ + }else{ + if((ind=indexkey("\\hsize",keys,&nkeys))!=-1){/*hsize is defined*/ + if(indexkey("\\hsize",keys,&ind)!=-1){/*hsize is currently redefined*/ + /* Must be done after the yyless */ + TTH_SCAN_STRING("\\hsize=\\hsize ");/*Set size at the start of vbox*/ + if(tth_debug&1024)fprintf(stderr,"Vbox auto hsize reset\n"); + } + } + } + *scratchstring=0; + if(strstr(closing,""); + TTH_CCAT(closing,scratchstring); + if(!horizmode || horizmode==3){ /* Pass on vert mode to next box if any*/ + TTH_CCAT(tth_texclose[tth_push_depth-1],"\\tthvertbox"); + } + horizmode=1; +} + YY_BREAK +case 943: +YY_RULE_SETUP +#line 6158 "tth.lex" +{TTH_SWAP("\\tth_hbox");} + YY_BREAK +case 944: +YY_RULE_SETUP +#line 6159 "tth.lex" +{ + if(horizmode){ + TTH_CCAT(closing,""); + }else{ + TTH_OUTPUT("
    "); + TTH_CCAT(closing,"
    "); + } +} + YY_BREAK +case 945: +YY_RULE_SETUP +#line 6167 "tth.lex" +{ + yy_push_state(hbox); + GET_DIMEN; +} + YY_BREAK +case 946: +YY_RULE_SETUP +#line 6171 "tth.lex" +TTH_SCAN_STRING("\\par\\hbox to\\hsize "); + YY_BREAK +case 947: +/* rule 947 can match eol */ +YY_RULE_SETUP +#line 6173 "tth.lex" +{ + if(strstr(yytext,"\\h")){ + strcpy(boxalign," align=\"right\""); + } + TTH_PUSH_CLOSING; + TTH_CCPY(closing,"
    \n"); + if(!horizmode){ + TTH_CCAT(closing,"
    "); + } + /*Special post-table state does not trigger broken table code */ + TTH_CCAT(tth_texclose[tth_push_depth-1],"\\tthhorizbox"); + if(horizmode&&(horizmode!=2)){TTH_OUTPUT("
    ");} + /* avoid broken table alignment*/ + if(*scratchstring == '%'){ + sprintf(scratchstring, + "\n", + boxborder,thesize,"%",boxalign); + TTH_OUTPUT(scratchstring); + }else{ + sprintf(scratchstring, + "
    \n", + boxborder,thesize/SCALEDPERPIXEL,boxalign); + TTH_OUTPUT(scratchstring); + } + horizmode=1; + *boxalign=0;boxborder=0; + yy_pop_state(); +} + YY_BREAK +case 948: +YY_RULE_SETUP +#line 6201 "tth.lex" +horizmode=2; /* fprintf(stderr,"Set Horizmode=2.\n"); */ + YY_BREAK +case 949: +YY_RULE_SETUP +#line 6202 "tth.lex" +horizmode=3; + YY_BREAK +case 950: +YY_RULE_SETUP +#line 6204 "tth.lex" +{ + fprintf(stderr, + "**** Error: Apparently unembraced h/vbox:%s, near line %d\n", + yytext,tth_num_lines); + yyless(0); + *boxalign=0; + yy_pop_state(); +} + YY_BREAK +case 951: +YY_RULE_SETUP +#line 6212 "tth.lex" +{ /* expand a possible macro */ + TTH_DO_MACRO else{ + yyless(0); + *boxalign=0; + yy_pop_state(); + horizmode=1; + } +} + YY_BREAK +case 952: +#line 6221 "tth.lex" +case 953: +YY_RULE_SETUP +#line 6221 "tth.lex" +{ + if(strstr(closing,"
    ")){ + TTH_OUTPUT(""); /* align=right a compromise. */ + } + else{if(tth_debug&1024)fprintf(stderr, + "Apparent hfill/hss outside hbox. Closing=%s\n",closing);} +} + YY_BREAK +case 954: +#line 6229 "tth.lex" +case 955: +/* rule 955 can match eol */ +YY_RULE_SETUP +#line 6229 "tth.lex" +{ + TTH_INC_MULTI; + if(*(yytext+1)=='f')boxborder=1; + if(strcspn(yytext,"[") == strlen(yytext)){ + *scrstring=0;*scratchstring=0; + }else{ + TTH_CCPY(scratchstring,yytext+strcspn(yytext,"[")+1); + if((chscratch=strstr(scratchstring,"["))!=NULL){ + strcpy(scrstring,chscratch+1);}else{*scrstring=0;} + *(scratchstring+strcspn(scratchstring,"]"))=0; + } /* Now we have the width and optional alignment. */ + switch(*scrstring){ + case 'l': strcpy(boxalign," align=\"left\"");break; + case 'r': strcpy(boxalign," align=\"right\"");break; + default : strcpy(boxalign," align=\"center\""); + } + chscratch=scrstring; + if(*(yytext+1) =='s'){ /* Setbox case, prefix definitions.*/ + TTH_CCPY(scrstring,"\\setbox"); + TTH_CCAT(scrstring,yytext+strcspn(yytext,"{")); + chscratch=(scrstring+strcspn(scrstring,"}")+1); + } + if(*scratchstring)sprintf(chscratch,"\\hbox to %s",scratchstring); + else if(boxborder)strcpy(chscratch,"\\hbox to 0pt");/*really undefined*/ + else strcpy(chscratch,"\\hbox"); + + TTH_SCAN_STRING(scrstring); +} + YY_BREAK +case 956: +YY_RULE_SETUP +#line 6258 "tth.lex" +{ + sscanf(yytext+7,"%d",&js2); + js2++; + roman(js2,scratchstring); + sprintf(scrstring,"\\setbox\\tthbox%s",scratchstring); + TTH_SCAN_STRING(scrstring); +} + YY_BREAK +case 957: +YY_RULE_SETUP +#line 6266 "tth.lex" +{ + yy_push_state(getbox); /* Get the box definition, then define */ + yy_push_state(getdef); /* Get the next cs and leave in defchar.*/ + *argchar=0; /* ensure null if no box found */ +} + YY_BREAK +case 958: +YY_RULE_SETUP +#line 6273 "tth.lex" +{ + TTH_CCPY(argchar,yytext); + TTH_CCAT(argchar," "); + if(strstr(yytext," ")){ + yy_push_state(lookforunit);yy_push_state(lookfornum); + /* GET_DIMEN, but without resetting argchar.*/ + } + if(tth_debug&4)fprintf(stderr,"Setting box as:%s\n",yytext); +} + YY_BREAK +case 959: +/* rule 959 can match eol */ +YY_RULE_SETUP +#line 6282 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 960: +YY_RULE_SETUP +#line 6283 "tth.lex" + + YY_BREAK +case 961: +/* rule 961 can match eol */ +YY_RULE_SETUP +#line 6284 "tth.lex" +{ + yyless(0); + yy_pop_state(); + sprintf(dupstore,"{%s}{%s}",defchar,argchar); + *defchar=0;*argchar=0; + TTH_SCAN_STRING(dupstore); + *dupstore=0; + TTH_TEX_FN("\\edef#1{#2{#3}}#tthdrop3",3); +} + YY_BREAK +case 962: +#line 6295 "tth.lex" +/*\\vbox{SP}+to |*/ +case 963: +#line 6297 "tth.lex" +case 964: +#line 6298 "tth.lex" +case 965: +YY_RULE_SETUP +#line 6298 "tth.lex" +GET_DIMEN + YY_BREAK +case 966: +YY_RULE_SETUP +#line 6299 "tth.lex" +TTH_TEX_FN_OPT("#tthdrop3",3,""); + YY_BREAK +/* Looking constructs */ +case 967: +YY_RULE_SETUP +#line 6302 "tth.lex" +{TTH_PUSH_CLOSING;TTH_CCPY(closing,argchar); + argchar[0]=0;yy_pop_state();} + YY_BREAK +case 968: +#line 6305 "tth.lex" +case 969: +YY_RULE_SETUP +#line 6305 "tth.lex" +{ + strcpy(dupstore,"{");strcat(dupstore,yytext);strcat(dupstore,"}"); + TTH_SCAN_STRING(dupstore); + *dupstore=0; + } + YY_BREAK +case 970: +#line 6311 "tth.lex" +case 971: +#line 6312 "tth.lex" +case 972: +/* rule 972 can match eol */ +YY_RULE_SETUP +#line 6312 "tth.lex" +{ + /* Count braces, save text in dupstore */ + TTH_INC_MULTI; + TTH_CHECK_LENGTH; + if(tth_debug&16) + fprintf(stderr,"Open brace appending - %s - to - %s -\n",yytext,dupstore); + bracecount++;strcat(dupstore,yytext); + } + YY_BREAK +case 973: +YY_RULE_SETUP +#line 6320 "tth.lex" +yy_push_state(number);jscratch=0; + YY_BREAK +case 974: +YY_RULE_SETUP +#line 6321 "tth.lex" +yy_push_state(matchbrace); + YY_BREAK +/* Prevent an expanding state from expanding: + \hsize, natbib cites in footnotes*/ +case 975: +#line 6325 "tth.lex" +case 976: +YY_RULE_SETUP +#line 6325 "tth.lex" +{ + if(tth_debug&4)fprintf(stderr,"We don't expand:%s \n",yytext); + strcat(defstore,yytext);strcpy(xpndstring," "); +} + YY_BREAK +case 977: +YY_RULE_SETUP +#line 6329 "tth.lex" +{ + if(tth_debug&4)fprintf(stderr,"Attempt to expand:%s ",yytext); + TTH_DO_MACRO + else { + if(tth_debug&4)fprintf(stderr,"failed"); + strcat(defstore,yytext); + strcpy(xpndstring," "); + } + if(tth_debug&4)fprintf(stderr,"\n"); +} + YY_BREAK +case 978: +YY_RULE_SETUP +#line 6339 "tth.lex" +{ /* tth pseudo commands are unexpandable. */ + strcat(defstore,yytext); + /* strcpy(xpndstring," "); And no termination is needed. */ +} + YY_BREAK +case 979: +YY_RULE_SETUP +#line 6343 "tth.lex" +{ + strcat(defstore,yytext+9); strcpy(xpndstring," "); +} + YY_BREAK +case 980: +YY_RULE_SETUP +#line 6346 "tth.lex" + + YY_BREAK +case 981: +YY_RULE_SETUP +#line 6348 "tth.lex" +{ + strcat(defstore,yytext); + yy_pop_state(); + if(nkeys < NFNMAX) { + lkeys[nkeys]=localdef; + mkdef(defchar,keys,defstore,defs,&narg,nargs,&nkeys); + if(tth_debug&12){ + i=indexkey(defchar,keys,&nkeys); + fprintf(stderr,"Defined Key %s index %d nargs %d Def %s\n", + defchar,i,nargs[i],defs[i]); + } + } + else fprintf(stderr,"Too many functions to define %s",defchar); + *defstore=0;*defchar=0; /* Clean up */ +} + YY_BREAK +/* If the next thing is a brace don't put the xpndstring (possible space) + If it is not, then output the space denoting the end of previous macro*/ +case 982: +YY_RULE_SETUP +#line 6365 "tth.lex" +strcat(defstore,yytext);*xpndstring=0; + YY_BREAK +case 983: +/* rule 983 can match eol */ +YY_RULE_SETUP +#line 6366 "tth.lex" +{ + if(strcspn(yytext,"\n")==0) TTH_INC_LINE; + strcat(defstore,xpndstring);strcat(defstore,yytext);*xpndstring=0; +} + YY_BREAK +case 984: +YY_RULE_SETUP +#line 6370 "tth.lex" +strcat(defstore,yytext); /* Ensure \\ doesn't escape. */ + YY_BREAK +case 985: +YY_RULE_SETUP +#line 6371 "tth.lex" +strcat(defstore,yytext); /* Don't count escaped { */ + YY_BREAK +case 986: +YY_RULE_SETUP +#line 6372 "tth.lex" +{ + if(tth_debug&16) fprintf(stderr,"Open brace in [e]def, count=%d\n", + bracecount); + bracecount++;strcat(defstore,yytext); + } + YY_BREAK +case 987: +YY_RULE_SETUP +#line 6377 "tth.lex" +strcat(defstore,yytext); + YY_BREAK +case 988: +YY_RULE_SETUP +#line 6378 "tth.lex" +{ + if(!bracecount){ + if(tth_debug&16) fprintf(stderr,"Close brace ending [e]def,count=%d\n", + bracecount); + yy_pop_state(); + strcat(defstore,"#tthdrop"); + sprintf((defstore+strlen(defstore)),"%d",abs(narg)); + if(edeftype){ + if(tth_debug&4) fprintf(stderr,"Expanding definition:%s\n",defstore); + edeftype=0; + yy_push_state(xpnd); + TTH_SCAN_STRING(defstore); + }else{ + if(nkeys < NFNMAX) { + lkeys[nkeys]=localdef; + mkdef(defchar,keys,defstore,defs,&narg,nargs,&nkeys); + if(tth_debug&4){ + i=indexkey(defchar,keys,&nkeys); + fprintf(stderr,"Defined Key %s index %d nargs %d Def %s\n", + defchar,i,nargs[i],defs[i]); + } + } + else fprintf(stderr,"Too many functions to define %s",defchar); + *defchar=0; + } + *defstore=0; + } else { + if(tth_debug&16) fprintf(stderr,"Close brace in [e]def, count=%d\n", + bracecount); + strcat(defstore,yytext);bracecount--; + } + } + YY_BREAK +case 989: +/* rule 989 can match eol */ +YY_RULE_SETUP +#line 6410 "tth.lex" +TTH_INC_LINE;TTH_CHECK_LENGTH;strcat(defstore,yytext); + YY_BREAK +case 990: +/* rule 990 can match eol */ +YY_RULE_SETUP +#line 6411 "tth.lex" +strcat(defstore,yytext); + YY_BREAK +case 991: +/* rule 991 can match eol */ +YY_RULE_SETUP +#line 6413 "tth.lex" +TTH_INC_MULTI; /*Necessary for roots to work etc.*/ + YY_BREAK +case 992: +YY_RULE_SETUP +#line 6414 "tth.lex" +{ + yyless(0);yy_pop_state(); + yy_push_state(macarg);yy_push_state(embracetok);yy_push_state(optag); +} + YY_BREAK +case 993: +/* rule 993 can match eol */ +YY_RULE_SETUP +#line 6418 "tth.lex" +{ + yyless(0);yy_pop_state(); + sprintf(scratchstring,"#%d",jarg); + if(margmax < NARMAX) { + jscratch=0; + { + strcpy(scrstring,chopt); /* changed Aug 15 */ + mkdef(scratchstring,margkeys,scrstring,margs,&jscratch,margn,&margmax); + if(tth_debug&8){ + i=indexkey(scratchstring,margkeys,&margmax); + fprintf(stderr,"Used Default argument %s index %d Def:%s\n", + scratchstring,i,margs[i]); + } + }/* optargs should always be defined. */ + } else fprintf(stderr,"**** Error: Too many Macro Args to define %s Line %d\n",argchar,tth_num_lines); + if( jargmax < 0){ /* Don't understand why */ + jarg++; + }else if(jarg == jargmax) { + jarg=1; + TTH_SCAN_STRING(chdef); + yy_push_state(psub); + if(tth_debug&8) fprintf(stderr, + "Using definition %s in optdetect\n",chdef); + bracecount=0; + } else { + bracecount=-1; + yy_push_state(macarg);yy_push_state(embracetok); + jarg++; + } +} + YY_BREAK +case 994: +YY_RULE_SETUP +#line 6448 "tth.lex" +{ /* Don't add space after verb */ + strcat(dupstore,yytext); + *(dupstore+strlen(dupstore)-1)=0; + unput('}'); +} + YY_BREAK +case 995: +#line 6454 "tth.lex" +case 996: +YY_RULE_SETUP +#line 6454 "tth.lex" +{ + strcat(dupstore,yytext); + strcpy(dupstore+strlen(dupstore)-1," "); + if(tth_debug&8) fprintf(stderr,"Macarg added space in:%s\n",yytext); + unput(*(yytext+strlen(yytext)-1)); + } + YY_BREAK +case 997: +#line 6461 "tth.lex" +case 998: +YY_RULE_SETUP +#line 6461 "tth.lex" +bracecount++;strcat(dupstore,yytext); + YY_BREAK +case 999: +#line 6463 "tth.lex" +case 1000: +YY_RULE_SETUP +#line 6463 "tth.lex" +{ + if(bracecount == 0){ + sprintf(argchar,"#%d",jarg); + if(margmax < NARMAX) { + jscratch=0; + mkdef(argchar,margkeys,dupstore+1,margs,&jscratch,margn,&margmax); + if(tth_debug&8){ + i=indexkey(argchar,margkeys,&margmax); + fprintf(stderr,"Argument %s index %d Def:%s:\n", + argchar,i,margs[i]); + } + } else fprintf(stderr,"**** Error: Too many Macro Args to define %s Line %d\n",argchar,tth_num_lines); + *argchar=0;*dupstore=0; + if(jarg==1 && lopt){ + if(tth_debug&8)fprintf(stderr,"Ended optional argument\n"); + yy_pop_state();yy_pop_state(); + } + if( jargmax < 0){ + yy_pop_state(); + jarg++; + }else if(jarg == jargmax) { + jarg=1; + yy_pop_state(); + TTH_SCAN_STRING(chdef); + yy_push_state(psub); + if(tth_debug&8) fprintf(stderr, + "Using definition %s in macarg\n",chdef); + } else { + bracecount=-1; + yy_push_state(embracetok); + jarg++; + } + } else { + strcat(dupstore,yytext);bracecount--; + } + } + YY_BREAK +case 1001: +#line 6500 "tth.lex" +case 1002: +#line 6501 "tth.lex" +case 1003: +/* rule 1003 can match eol */ +YY_RULE_SETUP +#line 6501 "tth.lex" +{ + /* Count down braces. Save, or complete. + storetype= + 0 Duplicate and rescan with argchar = closing of first. + 1 copy to superscript. 2 copy to subscript. + 3 Duplicate but with argchar inserted in middle and hence scanned. + 4 Rescan just one copy prefixed by argchar. + 5 Rescan one copy with argchar postfixed. + 6 Rescan two copies with argchar prefixed to first. + Else just leave in dupstore. (Caller must clean up). + */ + TTH_INC_MULTI; + if(!bracecount){ + strcat(dupstore,yytext); + if(tth_debug&16)fprintf(stderr, + "Ending dupgroup, dupstore= %s, storetype=%d\n",dupstore,storetype); + if(storetype == 0){ + strcpy(dupstore2,dupstore);strcat(dupstore2,dupstore); + TTH_PUSH_CLOSING;TTH_CCPY(closing,argchar); + TTH_SCAN_STRING(dupstore2); + *dupstore2=0; + *dupstore=0; + } else if (storetype == 1) { /* Take the } off the end.*/ + *(dupstore+strlen(dupstore)-1)=0; + strcpy(supstore,dupstore); + *dupstore=0; + } else if (storetype == 2) { + *(dupstore+strlen(dupstore)-1)=0; + strcpy(substore,dupstore); + *dupstore=0; + } else if (storetype == 3) { + strcpy(dupstore2,dupstore);strcat(dupstore2,argchar); + strcat(dupstore2,dupstore); + *argchar=0; + if(tth_debug&16)fprintf(stderr,"Rescanning: %s\n",dupstore2); + TTH_SCAN_STRING(dupstore2);*dupstore2=0; + *dupstore=0; + } else if (storetype == 4) { + strcpy(dupstore2,argchar); *argchar=0; + strcat(dupstore2,dupstore); *dupstore=0; + if(tth_debug&16)fprintf(stderr,"Rescanning: %s\n",dupstore2); + TTH_SCAN_STRING(dupstore2);*dupstore2=0; + } else if (storetype == 5) { + strcat(dupstore,argchar); *argchar=0; + if(tth_debug&16)fprintf(stderr,"Rescanning: %s\n",dupstore); + TTH_SCAN_STRING(dupstore);*dupstore=0; + } else if (storetype == 6) { + strcpy(dupstore2,argchar); *argchar=0; + strcat(dupstore2,dupstore);strcat(dupstore2,dupstore); *dupstore=0; + if(tth_debug&16)fprintf(stderr,"Rescanning: %s\n",dupstore2); + TTH_SCAN_STRING(dupstore2);*dupstore2=0; + } + storetype=0; + yy_pop_state(); + } else { + if(tth_debug&16) + fprintf(stderr,"appending - %s - to - %s -\n",yytext,dupstore); + strcat(dupstore,yytext);bracecount--;} +} + YY_BREAK +case 1004: +YY_RULE_SETUP +#line 6560 "tth.lex" +{ + if(verbinput){ TTH_OUTPUT(yytext);} + else{ + if(tth_titlestate) tth_titlestate=99; + TTH_TEXCLOSE else{TTH_CLOSEGROUP;TTH_POP_CLOSING;yy_pop_state();} + } +} + YY_BREAK +case 1005: +YY_RULE_SETUP +#line 6568 "tth.lex" +TTH_TEX_FN("\\tth_grabverbname#tthdrop1",1); + YY_BREAK +case 1006: +YY_RULE_SETUP +#line 6569 "tth.lex" +{ /* Set the name of verb environment */ + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1){ + strcpy(tth_verbenviron,margs[jscratch]); + rmdef(margkeys,margs,&margmax); + yy_pop_state(); + if(tth_debug)fprintf(stderr,"Verbenviron=%s\n",tth_verbenviron); + /* Now the rest of entering verbatim environment. */ + if(horizmode) horizmode=1; + fprintf(tth_fdout,"
    "); yy_push_state(verbatim);
    +    TTH_PUSH_CLOSING;  TTH_CCPY(closing,"
    "); + }else{ + fprintf(stderr,"Failed to grab verbatim name"); + } +} + YY_BREAK +case 1007: +YY_RULE_SETUP +#line 6583 "tth.lex" +{/* Redefinable verbatim end command */ + if(verbinput){ TTH_OUTPUT(yytext); + }else{ + TTH_CCPY(scratchstring,yytext+5); + *(scratchstring+strlen(scratchstring)-1)=0; + if(tth_debug)fprintf(stderr,"End of: %s\n",scratchstring); + if(strstr(tth_verbenviron,scratchstring)==tth_verbenviron){ + if(tth_titlestate) tth_titlestate=99; + TTH_TEXCLOSE else{TTH_CLOSEGROUP;TTH_POP_CLOSING;yy_pop_state(); + if(tth_debug)fprintf(stderr,"Popped state\n");} + /* Scan \end{....} a second time for end of environment */ + if(tth_debug)fprintf(stderr,"environment:%s\nscratchstring:%s\n" + ,environment,scratchstring); + if(!strcmp(environment,scratchstring)){TTH_SCAN_STRING(yytext);} + *scratchstring=0; + *tth_verbenviron=0; + }else{ + TTH_OUTPUT(yytext); + } + } +} + YY_BREAK +case 1008: +YY_RULE_SETUP +#line 6605 "tth.lex" +{ + verbinput=0; + TTH_TEXCLOSE else{TTH_CLOSEGROUP;TTH_POP_CLOSING;yy_pop_state();} +} + YY_BREAK +case 1009: +#line 6610 "tth.lex" +case 1010: +YY_RULE_SETUP +#line 6610 "tth.lex" +{ + TTH_TEXCLOSE else{TTH_CLOSEGROUP;TTH_POP_CLOSING;yy_pop_state();} +} + YY_BREAK +case 1011: +YY_RULE_SETUP +#line 6613 "tth.lex" +{ + TTH_OUTPUT(yytext);TTH_PUSH_CLOSING; + TTH_CCPY(closing,"}"); + yy_push_state(rawgroup);} + YY_BREAK +/* Dimensions and Numbers etc. */ +case 1012: +/* rule 1012 can match eol */ +YY_RULE_SETUP +#line 6620 "tth.lex" +{ + TTH_INC_MULTI; + yy_pop_state(); + TTH_CCAT(argchar,yytext); + strcpy(scratchstring,yytext+strlen(yytext)-2); /*unit is last 2 letters */ + if(!tthglue) { + thesize = scaledpoints(anumber,scratchstring); + } + if(tth_debug&1024) fprintf(stderr,"Dimension %d sp, from specified %f %s\n", + thesize,anumber,scratchstring); + *argchar=0; /* Don't think this is used. */ +} + YY_BREAK +case 1013: +YY_RULE_SETUP +#line 6632 "tth.lex" +{ /* The dimension is in \hsizes */ + thesize=100*anumber; + strcpy(scratchstring,"%"); + yy_pop_state(); + if(tth_debug&1024) fprintf(stderr,"Dimension tth_hsize: %d\n",thesize); + *argchar=0; /* this is used. */ +} + YY_BREAK +case 1014: +YY_RULE_SETUP +#line 6639 "tth.lex" +GET_DIMEN; /* Do nothing outside for now */ + YY_BREAK +case 1015: +YY_RULE_SETUP +#line 6640 "tth.lex" +{ /* expand a possible macro */ + TTH_DO_MACRO else { /* pop state if uninterpretable */ + if(tth_debug&1024) fprintf(stderr,"Unknown dimension %s\n",yytext); + thesize=0; + yyless(0); + yy_pop_state();} +} + YY_BREAK +case 1016: +YY_RULE_SETUP +#line 6647 "tth.lex" +/* Rip this out of the way */ + YY_BREAK +case 1017: +YY_RULE_SETUP +#line 6648 "tth.lex" +{/* We find a number. Scale instead. Shouldn't be in TeX*/ + if(! sscanf(yytext,"%f",&bnumber) ){ + fprintf(stderr,"**** Uninterpreted scaled dimension value:%s\n",yytext); + bnumber=1.; + } + anumber=anumber*bnumber; +} + YY_BREAK +case 1018: +/* rule 1018 can match eol */ +YY_RULE_SETUP +#line 6656 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 1019: +YY_RULE_SETUP +#line 6657 "tth.lex" +/* Ignore spaces */ + YY_BREAK +case 1020: +YY_RULE_SETUP +#line 6658 "tth.lex" +/* and equal signs */ + YY_BREAK +case 1021: +YY_RULE_SETUP +#line 6659 "tth.lex" +{ /* If we find a number store it.*/ + TTH_CCAT(argchar,yytext); + if(! sscanf(argchar,"%f",&anumber) ){ + if(tth_debug&4)fprintf(stderr,"Uninterpreted dimension value:%s\n",argchar); + anumber = 0; + } +/* if(tth_debug&1024)fprintf(stderr,"Got number: %f\n",anumber); */ + yy_pop_state(); +} + YY_BREAK +case 1022: +YY_RULE_SETUP +#line 6668 "tth.lex" +strcat(argchar,yytext); + YY_BREAK +/* If this is an unknown token, pop extra lookforunit state too.*/ +case 1023: +YY_RULE_SETUP +#line 6670 "tth.lex" +{ + TTH_DO_MACRO + else{ + /* was TTH_CCAT(argchar,yytext); then became yyless(0) now + presume if argchar !=0 that we need to collect it e.g. in setbox.*/ + if(strlen(argchar)){TTH_CCAT(argchar,yytext);}else yyless(0); + if(tth_debug&1024)fprintf(stderr,"Failed lookfornum:%s\n",yytext); + yy_pop_state();yy_pop_state(); + } +} + YY_BREAK +case 1024: +YY_RULE_SETUP +#line 6680 "tth.lex" +{ + fprintf(tth_fdout,"%s%s",yytext,argchar);yy_pop_state();} + YY_BREAK +case 1025: +/* rule 1025 can match eol */ +YY_RULE_SETUP +#line 6682 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 1026: +YY_RULE_SETUP +#line 6683 "tth.lex" + + YY_BREAK +case 1027: +YY_RULE_SETUP +#line 6684 "tth.lex" +{TTH_CCPY(argchar,yytext);yy_pop_state(); + if(tth_verb) fprintf(stderr,"File:%s",yytext);} + YY_BREAK +case 1028: +/* rule 1028 can match eol */ +YY_RULE_SETUP +#line 6686 "tth.lex" +TTH_INC_MULTI;tthglue=1;GET_DIMEN + YY_BREAK +/* nested glue not allowed */ +case 1029: +/* rule 1029 can match eol */ +YY_RULE_SETUP +#line 6688 "tth.lex" +tthglue=0;yyless(0);yy_pop_state(); + YY_BREAK +case 1030: +#line 6691 "tth.lex" +case 1031: +#line 6692 "tth.lex" +case 1032: +YY_RULE_SETUP +#line 6692 "tth.lex" +{ /* already embraced */ + strcat(dupstore,"{"); + TTH_SCAN_STRING(dupstore); + *dupstore=0; + yy_pop_state(); +} + YY_BREAK +case 1033: +/* rule 1033 can match eol */ +YY_RULE_SETUP +#line 6699 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 1034: +YY_RULE_SETUP +#line 6700 "tth.lex" + + YY_BREAK +case 1035: +#line 6702 "tth.lex" +case 1036: +#line 6703 "tth.lex" +case 1037: +YY_RULE_SETUP +#line 6703 "tth.lex" +{ /* Enclose a bare token for using as argument.*/ + strcat(dupstore,"{");strcat(dupstore,yytext);strcat(dupstore,"}"); + TTH_SCAN_STRING(dupstore); + *dupstore=0; + yy_pop_state(); + } + YY_BREAK +case 1038: +#line 6710 "tth.lex" +case 1039: +YY_RULE_SETUP +#line 6710 "tth.lex" +{ + sprintf(scratchstring,"{%s",swapchar); + TTH_SCAN_STRING(scratchstring);*swapchar=0;yy_pop_state(); +} + YY_BREAK +case 1040: +YY_RULE_SETUP +#line 6714 "tth.lex" +{ + fprintf(stderr,"**** Error: swaparg fault:%s:%s:\n",swapchar,yytext); + yy_pop_state();} + YY_BREAK +/************* count lines ****************/ +case 1041: +/* rule 1041 can match eol */ +YY_RULE_SETUP +#line 6719 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 1042: +/* rule 1042 can match eol */ +YY_RULE_SETUP +#line 6720 "tth.lex" +{ + TTH_INC_LINE; + fprintf(tth_fdout,"%s",yytext); + strcpy(scratchstring,"\n"); + if(tth_debug&8192)fprintf(stderr,"Verbatim \\n:%d, \\n code:%d Length:%d\n",(int) *yytext,(int) *scratchstring, (int) strlen(scratchstring)); +} + YY_BREAK +case 1043: +/* rule 1043 can match eol */ +YY_RULE_SETUP +#line 6726 "tth.lex" +{ /* Final route for all cases once expanded. */ + TTH_INC_MULTI; + if(strlen(expchar)){ + yyless(strcspn(yytext,"{")); + TTH_PUSH_CLOSING;TTH_CCPY(closing,expchar); + *expchar=0;yy_pop_state(); + if(tth_debug&8) { + fprintf(stderr,"Exptok Group {, eqdepth=%d, eqclose=%d, tth_flev=%d, levdelim=%s\n",eqdepth,eqclose,tth_flev,levdelim[eqclose]); + } + mkkey(eqstr,eqstrs,&eqdepth); + tth_flev=tth_flev-99; + eqclose++; + tophgt[eqclose]=0; + levhgt[eqclose]=1; + *eqstr=0; + active[eqclose]=1; + }else{ + strcat(exptex,yytext+strcspn(yytext,"{")); + TTH_SCAN_STRING(exptex); + if(tth_debug&8){ + fprintf(stderr,"Expansion completed. Rescanning %s\n",exptex); + } + *exptex=0; + yy_pop_state(); + } +} + YY_BREAK +case 1044: +YY_RULE_SETUP +#line 6753 "tth.lex" +{ + if(tth_debug&8) fprintf(stderr, + "Nothing to expand in exptok[arg]. Rescan:{%s}\n",yytext); + sprintf(scratchstring,"{%s}",yytext+strlen(yytext)-1); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +case 1045: +YY_RULE_SETUP +#line 6759 "tth.lex" +{ /* fix for _\| etc */ + if(tth_debug&8)fprintf(stderr,"Exptokarg, expanding:%s\n",yytext); + TTH_DO_MACRO + else { + strcpy(dupstore,"{");strcat(dupstore,yytext);strcat(dupstore,"}"); + TTH_SCAN_STRING(dupstore); + *dupstore=0; + } +} + YY_BREAK +case 1046: +YY_RULE_SETUP +#line 6769 "tth.lex" +{ + yyless(0);yy_pop_state(); + if(strlen(exptex)){TTH_SCAN_STRING(exptex); *exptex=0;} +} + YY_BREAK +case 1047: +YY_RULE_SETUP +#line 6773 "tth.lex" +{ /* fix for _\| etc OUT for tokexp. */ + if(tth_debug&8)fprintf(stderr,"Tokexp, expanding:%s\n",yytext); + TTH_DO_MACRO + else { + yy_pop_state(); + yyless(0); + *dupstore=0; + if(strlen(exptex)){TTH_SCAN_STRING(exptex); *exptex=0;} + } +} + YY_BREAK +case 1048: +YY_RULE_SETUP +#line 6784 "tth.lex" +{ + if(*halstring){ /* In a display table has to be a null inline*/ + }else{ + TTH_TEXCLOSE else{ + yy_pop_state(); + /* moved into closing. fprintf(tth_fdout,"");*/ + TTH_CLOSEGROUP;TTH_POP_CLOSING; + if(tth_debug&33)fprintf(stderr,"Display Table end.\n"); + } + } +} + YY_BREAK +case 1049: +#line 6797 "tth.lex" +case 1050: +#line 6798 "tth.lex" +case 1051: +YY_RULE_SETUP +#line 6798 "tth.lex" +{ + if(tth_debug&2) + fprintf(stderr,"Starting textbox equation, line %d\n",tth_num_lines); + /* TTH_OUTPUT(TTH_TEXTBOX2);*/ + if(displaystyle)displaystyle++; + mkkey(eqstr,eqstrs,&eqdepth); + TTH_PUSH_CLOSING; + yy_push_state(equation); + TTH_SCAN_STRING("{"); +} + YY_BREAK +/* $ Will be superceded by equation grab for non-null eqs */ +case 1052: +#line 6810 "tth.lex" +case 1053: +#line 6811 "tth.lex" +case 1054: +#line 6812 "tth.lex" +case 1055: +YY_RULE_SETUP +#line 6812 "tth.lex" +{ + if(displaystyle) fprintf(stderr,"Starting displaystyle incorrect.\n"); + displaystyle=0; + tophgt[eqclose]=0;levhgt[eqclose]=1; + *eqstr=0; + eqclose=0; + mkkey(eqstr,eqstrs,&eqdepth); + if((!tth_inlinefrac)^(strstr(TTH_NAME,"M")!=NULL)) tth_flev=tth_flev-89; + TTH_PUSH_CLOSING; + if(!strstr(tth_font_open[tth_push_depth],TTH_ITALO)){ + TTH_CCAT(tth_font_open[tth_push_depth],tth_font_open[0]); + TTH_CCAT(tth_font_close[tth_push_depth],tth_font_close[0]); + } + yy_push_state(equation); + TTH_SCAN_STRING("{"); + } + YY_BREAK +case 1056: +YY_RULE_SETUP +#line 6829 "tth.lex" + + YY_BREAK +case 1057: +/* rule 1057 can match eol */ +YY_RULE_SETUP +#line 6831 "tth.lex" +{ + if(strcspn(yytext,"_^")==1){ + if(tth_debug&3) fprintf(stderr,"Special In line Eq:%s\n",yytext); + /* + yyless(1); + unput(' '); This broke with pushback errors + Handle subdefer appropriately for specials. + Hence we use the following more cumbersome but safer approach. + Really I ought to find a better way to make sure that we can + accommodate constructs like $^1_2$ using msupsub in mathml. + The problem seems to be the implied { which never has subscripts. + */ + *scrstring=0; + if(strstr(TTH_NAME,"M")){ /* MathML */ strcat(scrstring," ");} + strcat(scrstring,yytext+1); + TTH_SCAN_STRING(scrstring); + *scrstring=0; + }else{ + if(tth_debug&3) fprintf(stderr,"In line Eq:%s\n",yytext); + yyless(1); + } + TTH_SCAN_STRING("$"); /* Force into other channel above.*/ + } + YY_BREAK +case 1058: +/* rule 1058 can match eol */ +#line 6856 "tth.lex" +case 1059: +/* rule 1059 can match eol */ +YY_RULE_SETUP +#line 6856 "tth.lex" +{ + if(tth_debug&33)fprintf(stderr,"Display Table:\n%s\n",yytext); + fprintf(tth_fdout,"
    "); + yyless(2); + yy_push_state(disptab); + TTH_PUSH_CLOSING; + TTH_CCPY(closing,"
    "); +} + YY_BREAK +/* Allowing the first half of a display to be recognized as equation is + problematic. Instead go to halsearch state. + Does not permit non-output commands before the halign. TeX does.*/ +case 1060: +YY_RULE_SETUP +#line 6867 "tth.lex" +{ + yy_push_state(halsearch); +} + YY_BREAK +case 1061: +/* rule 1061 can match eol */ +YY_RULE_SETUP +#line 6871 "tth.lex" +TTH_INC_MULTI; + YY_BREAK +case 1062: +YY_RULE_SETUP +#line 6872 "tth.lex" +{ + if(tth_debug&33)fprintf(stderr,"Display Table:\n%s\n",yytext); + yyless(0); + yy_pop_state(); + yy_push_state(disptab); + fprintf(tth_fdout,"
    "); + TTH_PUSH_CLOSING; + TTH_CCPY(closing,"
    "); +} + YY_BREAK +case 1063: +/* rule 1063 can match eol */ +YY_RULE_SETUP +#line 6881 "tth.lex" +{ + yyless(0); + yy_pop_state(); + TTH_SCAN_STRING("\\tth_start_equation"); +} + YY_BREAK +/* Don't recognize display equations except in certain allowed states. */ +case 1064: +#line 6889 "tth.lex" +case 1065: +/* rule 1065 can match eol */ +YY_RULE_SETUP +#line 6889 "tth.lex" +{ + { + if(tth_debug&3) fprintf(stderr,"Display Eq:\n%s\n",yytext); + if(strstr(yytext,"\\tth_start_equation")==NULL) yyless(2); + if(strcspn(yytext,"_^")==2){ + if(strstr(TTH_NAME,"M")){ /* MathML */ unput(' ');} + } + TTH_SCAN_STRING("{"); + /* + if(tth_htmlstyle&2){ + TTH_OUTPUT(closing); strcpy(closing,"
  • "); + TTH_OUTPUT("\n
    \n");}*/ + horizmode=0; + displaystyle=1; + *eqstr=0; + eqclose=0; + tophgt[eqclose]=0; + mkkey(eqstr,eqstrs,&eqdepth); + TTH_PUSH_CLOSING; + if(!strstr(tth_font_open[tth_push_depth],TTH_ITALO)){ + TTH_CCAT(tth_font_open[tth_push_depth],tth_font_open[0]); + TTH_CCAT(tth_font_close[tth_push_depth],tth_font_close[0]); + } + yy_push_state(equation); + } + } + YY_BREAK +/* Translate single characters. */ +case 1066: +YY_RULE_SETUP +#line 6917 "tth.lex" +TTH_OUTPUTH(yytext+strlen(yytext)-1); + YY_BREAK +case 1067: +/* rule 1067 can match eol */ +YY_RULE_SETUP +#line 6919 "tth.lex" +{ + TTH_INC_MULTI; + sscanf(yytext+5,"%d",&jscratch); + sprintf(scratchstring,"%c",jscratch); + TTH_OUTPUTH(scratchstring); + yy_push_state(removespace); +} + YY_BREAK +/* Latin Characters and other non-math but output correctly in math.*/ +case 1068: +YY_RULE_SETUP +#line 6928 "tth.lex" +{ /* Circumvent spaces after accents.*/ + strcpy(scratchstring,yytext); + unput(*(scratchstring+strlen(scratchstring)-1)); + unput(*(scratchstring+1));unput(*scratchstring); +} + YY_BREAK +case 1069: +#line 6935 "tth.lex" +case 1070: +#line 6936 "tth.lex" +case 1071: +YY_RULE_SETUP +#line 6936 "tth.lex" +TTH_OUTPUTH(" "); + YY_BREAK +case 1072: +/* rule 1072 can match eol */ +YY_RULE_SETUP +#line 6937 "tth.lex" +TTH_OUTPUTH(" ");TTH_INC_LINE; + YY_BREAK +case 1073: +YY_RULE_SETUP +#line 6938 "tth.lex" +TTH_OUTPUTH("  "); + YY_BREAK +case 1074: +YY_RULE_SETUP +#line 6939 "tth.lex" +TTH_OUTPUTH("   "); + YY_BREAK +case 1075: +YY_RULE_SETUP +#line 6940 "tth.lex" +TTH_OUTPUTH("      "); + YY_BREAK +case 1076: +YY_RULE_SETUP +#line 6941 "tth.lex" +TTH_OUTPUTH("Æ"); + YY_BREAK +case 1077: +YY_RULE_SETUP +#line 6942 "tth.lex" +TTH_OUTPUTH("Á"); + YY_BREAK +case 1078: +YY_RULE_SETUP +#line 6943 "tth.lex" +TTH_OUTPUTH("Â"); + YY_BREAK +case 1079: +YY_RULE_SETUP +#line 6944 "tth.lex" +TTH_OUTPUTH("À"); + YY_BREAK +case 1080: +#line 6946 "tth.lex" +case 1081: +YY_RULE_SETUP +#line 6946 "tth.lex" +TTH_OUTPUTH("Å"); + YY_BREAK +case 1082: +YY_RULE_SETUP +#line 6947 "tth.lex" +TTH_OUTPUTH("Ã"); + YY_BREAK +case 1083: +#line 6949 "tth.lex" +case 1084: +YY_RULE_SETUP +#line 6949 "tth.lex" +TTH_OUTPUTH("Ä"); + YY_BREAK +/* \\c{SP}?C | */ +case 1085: +YY_RULE_SETUP +#line 6951 "tth.lex" +TTH_OUTPUTH("Ç"); + YY_BREAK +case 1086: +YY_RULE_SETUP +#line 6952 "tth.lex" +TTH_OUTPUTH("É"); + YY_BREAK +case 1087: +YY_RULE_SETUP +#line 6953 "tth.lex" +TTH_OUTPUTH("Ê"); + YY_BREAK +case 1088: +YY_RULE_SETUP +#line 6954 "tth.lex" +TTH_OUTPUTH("È"); + YY_BREAK +case 1089: +#line 6956 "tth.lex" +case 1090: +YY_RULE_SETUP +#line 6956 "tth.lex" +TTH_OUTPUTH("Ë"); + YY_BREAK +case 1091: +YY_RULE_SETUP +#line 6957 "tth.lex" +TTH_OUTPUTH("Ì"); + YY_BREAK +case 1092: +YY_RULE_SETUP +#line 6958 "tth.lex" +TTH_OUTPUTH("Í"); + YY_BREAK +case 1093: +YY_RULE_SETUP +#line 6959 "tth.lex" +TTH_OUTPUTH("Î"); + YY_BREAK +case 1094: +#line 6961 "tth.lex" +case 1095: +YY_RULE_SETUP +#line 6961 "tth.lex" +TTH_OUTPUTH("Ï"); + YY_BREAK +case 1096: +YY_RULE_SETUP +#line 6962 "tth.lex" +TTH_OUTPUTH("Ñ"); + YY_BREAK +case 1097: +YY_RULE_SETUP +#line 6963 "tth.lex" +TTH_OUTPUTH("Ò"); + YY_BREAK +case 1098: +YY_RULE_SETUP +#line 6964 "tth.lex" +TTH_OUTPUTH("Ó"); + YY_BREAK +case 1099: +YY_RULE_SETUP +#line 6965 "tth.lex" +TTH_OUTPUTH("Ô"); + YY_BREAK +case 1100: +YY_RULE_SETUP +#line 6966 "tth.lex" +TTH_OUTPUTH("Ø"); + YY_BREAK +case 1101: +YY_RULE_SETUP +#line 6967 "tth.lex" +TTH_OUTPUTH("Õ"); + YY_BREAK +case 1102: +#line 6969 "tth.lex" +case 1103: +YY_RULE_SETUP +#line 6969 "tth.lex" +TTH_OUTPUTH("Ö"); + YY_BREAK +case 1104: +YY_RULE_SETUP +#line 6970 "tth.lex" +TTH_OUTPUTH("¶"); + YY_BREAK +case 1105: +YY_RULE_SETUP +#line 6971 "tth.lex" +TTH_OUTPUTH("§"); + YY_BREAK +case 1106: +YY_RULE_SETUP +#line 6972 "tth.lex" +TTH_OUTPUTH("Ú"); + YY_BREAK +case 1107: +YY_RULE_SETUP +#line 6973 "tth.lex" +TTH_OUTPUTH("Û"); + YY_BREAK +case 1108: +YY_RULE_SETUP +#line 6974 "tth.lex" +TTH_OUTPUTH("Ù"); + YY_BREAK +case 1109: +#line 6976 "tth.lex" +case 1110: +YY_RULE_SETUP +#line 6976 "tth.lex" +TTH_OUTPUTH("Ü"); + YY_BREAK +case 1111: +YY_RULE_SETUP +#line 6977 "tth.lex" +TTH_OUTPUTH("Ý"); + YY_BREAK +case 1112: +YY_RULE_SETUP +#line 6978 "tth.lex" +TTH_OUTPUTH("&"); + YY_BREAK +case 1113: +YY_RULE_SETUP +#line 6979 "tth.lex" +TTH_OUTPUTH("&"); + YY_BREAK +case 1114: +YY_RULE_SETUP +#line 6980 "tth.lex" +TTH_OUTPUTH("æ"); + YY_BREAK +case 1115: +YY_RULE_SETUP +#line 6981 "tth.lex" +TTH_OUTPUTH("à"); + YY_BREAK +case 1116: +YY_RULE_SETUP +#line 6982 "tth.lex" +TTH_OUTPUTH("á"); + YY_BREAK +case 1117: +YY_RULE_SETUP +#line 6983 "tth.lex" +TTH_OUTPUTH("â"); + YY_BREAK +case 1118: +YY_RULE_SETUP +#line 6984 "tth.lex" +TTH_OUTPUTH("ã"); + YY_BREAK +case 1119: +#line 6986 "tth.lex" +case 1120: +YY_RULE_SETUP +#line 6986 "tth.lex" +TTH_OUTPUTH("ä"); + YY_BREAK +case 1121: +#line 6988 "tth.lex" +case 1122: +YY_RULE_SETUP +#line 6988 "tth.lex" +TTH_OUTPUTH("å"); + YY_BREAK +/* \\c{SP}?c | */ +case 1123: +YY_RULE_SETUP +#line 6990 "tth.lex" +TTH_OUTPUTH("ç"); + YY_BREAK +case 1124: +YY_RULE_SETUP +#line 6991 "tth.lex" +TTH_OUTPUTH("^"); + YY_BREAK +case 1125: +YY_RULE_SETUP +#line 6992 "tth.lex" +TTH_OUTPUTH("©"); + YY_BREAK +case 1126: +YY_RULE_SETUP +#line 6993 "tth.lex" +TTH_OUTPUTH("é"); + YY_BREAK +case 1127: +YY_RULE_SETUP +#line 6994 "tth.lex" +TTH_OUTPUTH("ê"); + YY_BREAK +case 1128: +YY_RULE_SETUP +#line 6995 "tth.lex" +TTH_OUTPUTH("è"); + YY_BREAK +case 1129: +YY_RULE_SETUP +#line 6996 "tth.lex" +TTH_OUTPUTH("ð"); + YY_BREAK +case 1130: +#line 6998 "tth.lex" +case 1131: +YY_RULE_SETUP +#line 6998 "tth.lex" +TTH_OUTPUTH("ë"); + YY_BREAK +case 1132: +#line 7000 "tth.lex" +case 1133: +YY_RULE_SETUP +#line 7000 "tth.lex" +TTH_OUTPUTH(">"); + YY_BREAK +case 1134: +#line 7002 "tth.lex" +case 1135: +YY_RULE_SETUP +#line 7002 "tth.lex" +TTH_OUTPUTH("<"); + YY_BREAK +case 1136: +YY_RULE_SETUP +#line 7003 "tth.lex" +TTH_OUTPUTH(" ") + YY_BREAK +case 1137: +#line 7005 "tth.lex" +case 1138: +YY_RULE_SETUP +#line 7005 "tth.lex" +TTH_OUTPUTH("ì"); + YY_BREAK +case 1139: +#line 7007 "tth.lex" +case 1140: +#line 7008 "tth.lex" +case 1141: +YY_RULE_SETUP +#line 7008 "tth.lex" +TTH_OUTPUTH("í"); + YY_BREAK +case 1142: +#line 7010 "tth.lex" +case 1143: +YY_RULE_SETUP +#line 7010 "tth.lex" +TTH_OUTPUTH("î"); + YY_BREAK +case 1144: +#line 7012 "tth.lex" +case 1145: +#line 7013 "tth.lex" +case 1146: +YY_RULE_SETUP +#line 7013 "tth.lex" +TTH_OUTPUTH("ï"); + YY_BREAK +case 1147: +YY_RULE_SETUP +#line 7014 "tth.lex" +TTH_OUTPUTH("ñ"); + YY_BREAK +case 1148: +YY_RULE_SETUP +#line 7015 "tth.lex" +TTH_OUTPUTH("ò"); + YY_BREAK +case 1149: +YY_RULE_SETUP +#line 7016 "tth.lex" +TTH_OUTPUTH("ó"); + YY_BREAK +case 1150: +YY_RULE_SETUP +#line 7017 "tth.lex" +TTH_OUTPUTH("ô"); + YY_BREAK +case 1151: +YY_RULE_SETUP +#line 7018 "tth.lex" +TTH_OUTPUTH("ø"); + YY_BREAK +case 1152: +YY_RULE_SETUP +#line 7019 "tth.lex" +TTH_OUTPUTH("õ"); + YY_BREAK +case 1153: +#line 7021 "tth.lex" +case 1154: +YY_RULE_SETUP +#line 7021 "tth.lex" +TTH_OUTPUTH("ö"); + YY_BREAK +case 1155: +YY_RULE_SETUP +#line 7022 "tth.lex" +TTH_OUTPUTH("¯"); + YY_BREAK +case 1156: +YY_RULE_SETUP +#line 7023 "tth.lex" +TTH_OUTPUTH("£"); + YY_BREAK +case 1157: +YY_RULE_SETUP +#line 7024 "tth.lex" +TTH_OUTPUTH("~"); + YY_BREAK +case 1158: +YY_RULE_SETUP +#line 7025 "tth.lex" +TTH_OUTPUTH("ú"); + YY_BREAK +case 1159: +YY_RULE_SETUP +#line 7026 "tth.lex" +TTH_OUTPUTH("û"); + YY_BREAK +case 1160: +YY_RULE_SETUP +#line 7027 "tth.lex" +TTH_OUTPUTH("ù"); + YY_BREAK +case 1161: +#line 7029 "tth.lex" +case 1162: +YY_RULE_SETUP +#line 7029 "tth.lex" +TTH_OUTPUTH("ü"); + YY_BREAK +case 1163: +YY_RULE_SETUP +#line 7030 "tth.lex" +TTH_OUTPUTH("ý"); + YY_BREAK +case 1164: +#line 7032 "tth.lex" +case 1165: +YY_RULE_SETUP +#line 7032 "tth.lex" +TTH_OUTPUTH("ÿ"); + YY_BREAK +case 1166: +YY_RULE_SETUP +#line 7033 "tth.lex" +TTH_OUTPUTH("ß"); + YY_BREAK +case 1167: +#line 7035 "tth.lex" +case 1168: +YY_RULE_SETUP +#line 7035 "tth.lex" +TTH_DO_MACRO else{ TTH_OUTPUTH("ß");} + YY_BREAK +/* Polish character macros:*/ +case 1169: +YY_RULE_SETUP +#line 7037 "tth.lex" +TTH_OUTPUTH("Ą"); + YY_BREAK +case 1170: +YY_RULE_SETUP +#line 7038 "tth.lex" +TTH_OUTPUTH("Ć"); + YY_BREAK +case 1171: +YY_RULE_SETUP +#line 7039 "tth.lex" +TTH_OUTPUTH("Ę"); + YY_BREAK +case 1172: +YY_RULE_SETUP +#line 7040 "tth.lex" +TTH_OUTPUTH("Ł"); + YY_BREAK +case 1173: +YY_RULE_SETUP +#line 7041 "tth.lex" +TTH_OUTPUTH("Ń"); + YY_BREAK +case 1174: +YY_RULE_SETUP +#line 7042 "tth.lex" +TTH_OUTPUTH("Ś"); + YY_BREAK +case 1175: +YY_RULE_SETUP +#line 7043 "tth.lex" +TTH_OUTPUTH("Ź"); + YY_BREAK +case 1176: +YY_RULE_SETUP +#line 7044 "tth.lex" +TTH_OUTPUTH("Ż"); + YY_BREAK +case 1177: +YY_RULE_SETUP +#line 7045 "tth.lex" +TTH_OUTPUTH("ą"); + YY_BREAK +case 1178: +YY_RULE_SETUP +#line 7046 "tth.lex" +TTH_OUTPUTH("ć"); + YY_BREAK +case 1179: +YY_RULE_SETUP +#line 7047 "tth.lex" +TTH_OUTPUTH("ę"); + YY_BREAK +case 1180: +YY_RULE_SETUP +#line 7048 "tth.lex" +TTH_OUTPUTH("ł"); + YY_BREAK +case 1181: +YY_RULE_SETUP +#line 7049 "tth.lex" +TTH_OUTPUTH("ń"); + YY_BREAK +case 1182: +YY_RULE_SETUP +#line 7050 "tth.lex" +TTH_OUTPUTH("ś"); + YY_BREAK +case 1183: +YY_RULE_SETUP +#line 7051 "tth.lex" +TTH_OUTPUTH("ź"); + YY_BREAK +case 1184: +YY_RULE_SETUP +#line 7052 "tth.lex" +TTH_OUTPUTH("ż"); + YY_BREAK +case 1185: +YY_RULE_SETUP +#line 7054 "tth.lex" +TTH_OUTPUTH(",,"); + YY_BREAK +case 1186: +YY_RULE_SETUP +#line 7055 "tth.lex" +TTH_OUTPUTH("''"); + YY_BREAK +case 1187: +YY_RULE_SETUP +#line 7056 "tth.lex" +TTH_OUTPUTH("«"); + YY_BREAK +case 1188: +YY_RULE_SETUP +#line 7057 "tth.lex" +TTH_OUTPUTH("»"); + YY_BREAK +case 1189: +YY_RULE_SETUP +#line 7058 "tth.lex" + + YY_BREAK +/* Convert TeX double quotes to single-character */ +case 1190: +#line 7061 "tth.lex" +case 1191: +YY_RULE_SETUP +#line 7061 "tth.lex" +TTH_OUTPUTH("\""); + YY_BREAK +case 1192: +YY_RULE_SETUP +#line 7062 "tth.lex" +{ + if(*(yytext+1)=='g') strcpy(scratchstring,"\\`"); + else strcpy(scratchstring,"\\'"); + strcat(scratchstring,yytext+strlen(yytext)-3); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +/* Remove unwanted braces from around accented characters. */ +case 1193: +#line 7070 "tth.lex" +/* \\c{SP}*\{[cC]\} | */ +case 1194: +YY_RULE_SETUP +#line 7071 "tth.lex" +{ + if(tth_debug&8) fprintf(stderr,"Fixing accent:%s\n",yytext); + *dupstore2=0; + strncat(dupstore2,yytext,2); + strncat(dupstore2,yytext+strcspn(yytext,"{")+1, + strcspn(yytext,"}")-strcspn(yytext,"{")-1); + TTH_SCAN_STRING(dupstore2); + *dupstore2=0; + } + YY_BREAK +/* Unknown diacriticals must terminate safely. +\\noexpand\\H +\\noexpand\\b + Above are safely defined. Below need protection.*/ +case 1195: +YY_RULE_SETUP +#line 7084 "tth.lex" + + YY_BREAK +case 1196: +YY_RULE_SETUP +#line 7085 "tth.lex" + + YY_BREAK +case 1197: +YY_RULE_SETUP +#line 7086 "tth.lex" + + YY_BREAK +case 1198: +YY_RULE_SETUP +#line 7087 "tth.lex" + + YY_BREAK +case 1199: +YY_RULE_SETUP +#line 7089 "tth.lex" +TTH_OUTPUTH(TTH_BOXCODE); + YY_BREAK +case 1200: +YY_RULE_SETUP +#line 7090 "tth.lex" +TTH_OUTPUTH(TTH_HBAR); + YY_BREAK +/* Various things not being used. + \\\c TTH_OUTPUTH("¸"); + \? TTH_OUTPUTH("¿"); + \! TTH_OUTPUTH("¡"); + */ +case 1201: +YY_RULE_SETUP +#line 7097 "tth.lex" +{ + TTH_SCAN_STRING(tth_latex_file); +} + YY_BREAK +/* This needs to match all the cases of comments otherwise they will + not allow escaping of the % in that state. Not all are TTH_OUTPUT */ +case 1202: +#line 7103 "tth.lex" +case 1203: +#line 7104 "tth.lex" +case 1204: +YY_RULE_SETUP +#line 7104 "tth.lex" +TTH_OUTPUTH("%"); + YY_BREAK +case 1205: +YY_RULE_SETUP +#line 7105 "tth.lex" + + YY_BREAK +case 1206: +#line 7107 "tth.lex" +case 1207: +/* rule 1207 can match eol */ +YY_RULE_SETUP +#line 7107 "tth.lex" +{ + if(strcspn(yytext,"\n")==0) {TTH_INC_LINE;TTH_CHECK_LENGTH;} + strcat(dupstore,yytext); +} + YY_BREAK +case 1208: +YY_RULE_SETUP +#line 7111 "tth.lex" +strcat(defstore,yytext); + YY_BREAK +case 1209: +/* rule 1209 can match eol */ +YY_RULE_SETUP +#line 7112 "tth.lex" +{ + TTH_INC_LINE; +} + YY_BREAK +case 1210: +#line 7116 "tth.lex" +case 1211: +#line 7117 "tth.lex" +/* \\\\\*?({SP}*\[[^\]]*\])? | */ +case 1212: +YY_RULE_SETUP +#line 7118 "tth.lex" +TTH_SCAN_STRING("\\par"); + YY_BREAK +case 1213: +YY_RULE_SETUP +#line 7119 "tth.lex" +{ + if(horizmode) horizmode=1; + jscratch=indexkey("#1",margkeys,&margmax); + yy_pop_state(); + if(jscratch!=-1){ + strcpy(dupstore,margs[jscratch]); + rmdef(margkeys,margs,&margmax); + for(js2=0;js2<2*(strlen(dupstore));js2++)TTH_OUTPUT(" "); + }else{ + fprintf(stderr,"***** Error. No argument in \\phantom. Line %d\n",tth_num_lines); + } + *dupstore=0; + } + YY_BREAK +case 1214: +YY_RULE_SETUP +#line 7133 "tth.lex" +TTH_OUTPUTH("$"); + YY_BREAK +case 1215: +YY_RULE_SETUP +#line 7134 "tth.lex" +TTH_OUTPUTH("#"); + YY_BREAK +case 1216: +YY_RULE_SETUP +#line 7135 "tth.lex" +TTH_OUTPUTH("{"); + YY_BREAK +case 1217: +YY_RULE_SETUP +#line 7136 "tth.lex" +TTH_OUTPUTH("}"); + YY_BREAK +/* In nbsp choice above \\{SP} TTH_OUTPUTH(" "); */ +case 1218: +YY_RULE_SETUP +#line 7138 "tth.lex" +TTH_OUTPUTH("_"); + YY_BREAK +case 1219: +YY_RULE_SETUP +#line 7139 "tth.lex" + + YY_BREAK +case 1220: +YY_RULE_SETUP +#line 7140 "tth.lex" +TTH_OUTPUTH(" "); + YY_BREAK +case 1221: +YY_RULE_SETUP +#line 7141 "tth.lex" +TTH_OUTPUTH("-"); + YY_BREAK +case 1222: +YY_RULE_SETUP +#line 7142 "tth.lex" +TTH_OUTPUTH("..."); /* non-math dots */ + YY_BREAK +/* Commands to ignore in equations as well as text*/ +case 1223: +YY_RULE_SETUP +#line 7144 "tth.lex" + + YY_BREAK +case 1224: +YY_RULE_SETUP +#line 7145 "tth.lex" + + YY_BREAK +case 1225: +YY_RULE_SETUP +#line 7146 "tth.lex" + + YY_BREAK +/* Some problems in equations being confused with this, unless specific. */ +case 1226: +YY_RULE_SETUP +#line 7149 "tth.lex" +{ + fprintf(stderr,"**** Removing inappropriate parameter command %s Line %d\n",yytext,tth_num_lines); + yy_push_state(lookfornum);*argchar=0; + } + YY_BREAK +case 1227: +YY_RULE_SETUP +#line 7153 "tth.lex" +/* Overridden where necessary for defs.. */ + YY_BREAK +/* TeX Commands in equations*/ +case 1228: +YY_RULE_SETUP +#line 7156 "tth.lex" +{ + TTH_DO_MACRO + else if( (ind=indexkey(yytext,countkeys,&ncounters)) != -1) { + if(tth_debug&4) fprintf(stderr,"Setting counter %d, %s. ",ind,countkeys[ind]); + yy_push_state(counterset); + } else { + if(!(tth_debug&32768)) + fprintf(stderr,"**** Unknown command %s in equation, Line %d\n" + ,yytext,tth_num_lines); + strcat(eqstr,yytext); + } + } + YY_BREAK +/* Default equation action may no longer be needed, but not sure. 21 Mar*/ +case 1229: +YY_RULE_SETUP +#line 7169 "tth.lex" +{ + strcat(eqstr,yytext); + } + YY_BREAK +case 1230: +YY_RULE_SETUP +#line 7173 "tth.lex" +yy_scan_string("}\\end"); + YY_BREAK +/* Latex default (unknown) environment */ +case 1231: +YY_RULE_SETUP +#line 7175 "tth.lex" +{ + TTH_CCPY(environment,strstr(yytext,"{")+1); + environment[strlen(environment)-1]=0; + TTH_DO_MACRO + else{ + environment[0]=0; + fprintf(stderr,"**** Unknown or ignored environment: %s Line %d\n" + ,yytext,tth_num_lines); + } + TTH_PUSH_CLOSING; + /*This is balanced by the \egroup just below.*/ + } + YY_BREAK +case 1232: +YY_RULE_SETUP +#line 7187 "tth.lex" +{ + ind=indexkey(yytext,keys,&nkeys); + TTH_SCAN_STRING("\\egroup"); + if(ind != -1) { /* This was defined by newenvironment */ + TTH_SCAN_STRING(defs[ind]); + environment[0]=0; + yy_push_state(psub); + if(tth_debug&8) fprintf(stderr,"Using definition %d= %s in end\n" + ,ind,defs[ind]); + } + } + YY_BREAK +case 1233: +/* rule 1233 can match eol */ +YY_RULE_SETUP +#line 7198 "tth.lex" +{ + TTH_INC_MULTI; + if(strstr(yytext,"\n")){TTH_INC_LINE;} + fprintf(stderr, + "**** Warning! Bad LaTeX Style. Space after \\begin. Line %d\n",tth_num_lines); + unput('n');unput('i');unput('g');unput('e');unput('b');unput('\\'); +} + YY_BREAK +case 1234: +/* rule 1234 can match eol */ +YY_RULE_SETUP +#line 7205 "tth.lex" +{ + TTH_INC_MULTI; + if(strstr(yytext,"\n")){TTH_INC_LINE;} + fprintf(stderr, + "**** Warning! Bad LaTeX Style. Space after \\end Line %d\n",tth_num_lines); + unput('{');unput('d');unput('n');unput('e');unput('\\'); +} + YY_BREAK +case 1235: +YY_RULE_SETUP +#line 7213 "tth.lex" +{ + if(*yytext == *chr1){ + TTH_TEXCLOSE else{ + TTH_CLOSEGROUP;TTH_POP_CLOSING; + yy_pop_state(); + } + }else{ + if(*yytext == '&') {TTH_OUTPUTH("&");} + else if(*yytext == '<') {TTH_OUTPUTH("<");} + else if(*yytext == '>') {TTH_OUTPUTH(">");} + else if(*yytext == ' ') {TTH_OUTPUTH(" ");} + else {TTH_OUTPUTH(yytext);} + } + } + YY_BREAK +/* Special escape sequences in rawgroup */ +case 1236: +YY_RULE_SETUP +#line 7229 "tth.lex" +TTH_OUTPUT(yytext+1); + YY_BREAK +/* Don't set horizmode for whitespace.*/ +case 1237: +YY_RULE_SETUP +#line 7231 "tth.lex" +TTH_OUTPUT(yytext); + YY_BREAK +/* Default action */ +case 1238: +YY_RULE_SETUP +#line 7233 "tth.lex" +horizmode=1;TTH_OUTPUT(yytext); + YY_BREAK +/* Normal action. Set to horizontal mode if not space*/ +case 1239: +YY_RULE_SETUP +#line 7235 "tth.lex" +fprintf(tth_fdout,"%s",yytext); + YY_BREAK +/* Default action */ +case 1240: +YY_RULE_SETUP +#line 7237 "tth.lex" +horizmode=1;fprintf(tth_fdout,"%s",yytext); + YY_BREAK +/* Delete in certain states. */ +case 1241: +YY_RULE_SETUP +#line 7240 "tth.lex" +yyless(0);yy_pop_state(); + YY_BREAK +case 1242: +YY_RULE_SETUP +#line 7241 "tth.lex" + + YY_BREAK +case 1243: +/* rule 1243 can match eol */ +YY_RULE_SETUP +#line 7243 "tth.lex" +{ + if(tth_ercnt==0){ + fprintf(stderr,"%s",yytext); + tth_ercnt=0; + fprintf(stderr,"\n");TTH_EXIT(1); + }else if(tth_ercnt>0){ fprintf(stderr,"%s",yytext);tth_ercnt--; + }else{tth_ercnt=0;TTH_EXIT(tth_erlev);} ; +} + YY_BREAK +case 1244: +YY_RULE_SETUP +#line 7252 "tth.lex" +horizmode=1; + YY_BREAK +case 1245: +YY_RULE_SETUP +#line 7253 "tth.lex" +{TTH_PAR_ACTION} + YY_BREAK +case 1246: +YY_RULE_SETUP +#line 7254 "tth.lex" +yy_push_state(unknown); + YY_BREAK +case 1247: +YY_RULE_SETUP +#line 7255 "tth.lex" +yy_push_state(unknown); + YY_BREAK +case 1248: +YY_RULE_SETUP +#line 7256 "tth.lex" +fprintf(stderr,"**** DANGER: Catcode changes not honored. Expect abnormal behavior. Line %d\n",tth_num_lines); + YY_BREAK +/* Ignore quietly */ +case 1249: +YY_RULE_SETUP +#line 7259 "tth.lex" + + YY_BREAK +case 1250: +YY_RULE_SETUP +#line 7260 "tth.lex" + + YY_BREAK +case 1251: +YY_RULE_SETUP +#line 7261 "tth.lex" + + YY_BREAK +case 1252: +YY_RULE_SETUP +#line 7262 "tth.lex" + + YY_BREAK +case 1253: +YY_RULE_SETUP +#line 7263 "tth.lex" + + YY_BREAK +case 1254: +YY_RULE_SETUP +#line 7264 "tth.lex" + + YY_BREAK +case 1255: +YY_RULE_SETUP +#line 7265 "tth.lex" + + YY_BREAK +/*\\line | */ +case 1256: +YY_RULE_SETUP +#line 7267 "tth.lex" + + YY_BREAK +case 1257: +YY_RULE_SETUP +#line 7268 "tth.lex" + + YY_BREAK +case 1258: +YY_RULE_SETUP +#line 7269 "tth.lex" + + YY_BREAK +case 1259: +#line 7271 "tth.lex" +case 1260: +#line 7272 "tth.lex" +case 1261: +YY_RULE_SETUP +#line 7272 "tth.lex" +{ /* Dump the argument. Might be used instead of matchbrace. */ + TTH_TEX_FN("#tthdrop1",1); +} + YY_BREAK +case 1262: +#line 7276 "tth.lex" +case 1263: +#line 7277 "tth.lex" +case 1264: +YY_RULE_SETUP +#line 7277 "tth.lex" +{ + sscanf(yytext+strcspn(yytext,"0123456789"),"%d", &js2); + js2++; + roman(js2,scratchstring); + sprintf(scrstring,"\\tthbox%s",scratchstring); + TTH_SCAN_STRING(scrstring); +} + YY_BREAK +case 1265: +#line 7286 "tth.lex" +case 1266: +#line 7287 "tth.lex" +case 1267: +#line 7288 "tth.lex" +case 1268: +#line 7289 "tth.lex" +case 1269: +#line 7290 "tth.lex" +case 1270: +#line 7291 "tth.lex" +case 1271: +#line 7292 "tth.lex" +case 1272: +#line 7293 "tth.lex" +case 1273: +/* rule 1273 can match eol */ +#line 7294 "tth.lex" +case 1274: +/* rule 1274 can match eol */ +#line 7295 "tth.lex" +case 1275: +/* rule 1275 can match eol */ +#line 7296 "tth.lex" +case 1276: +/* rule 1276 can match eol */ +#line 7297 "tth.lex" +case 1277: +/* rule 1277 can match eol */ +#line 7298 "tth.lex" +case 1278: +/* rule 1278 can match eol */ +#line 7299 "tth.lex" +case 1279: +/* rule 1279 can match eol */ +#line 7300 "tth.lex" +case 1280: +/* rule 1280 can match eol */ +YY_RULE_SETUP +#line 7300 "tth.lex" +if(horizmode)horizmode=1; + YY_BREAK +case 1281: +#line 7302 "tth.lex" +case 1282: +#line 7303 "tth.lex" +case 1283: +#line 7304 "tth.lex" +case 1284: +#line 7305 "tth.lex" +case 1285: +#line 7306 "tth.lex" +case 1286: +#line 7307 "tth.lex" +case 1287: +#line 7308 "tth.lex" +case 1288: +YY_RULE_SETUP +#line 7308 "tth.lex" +TTH_INC_MULTI;yy_push_state(matchbrace); + YY_BREAK +case 1289: +#line 7311 "tth.lex" +case 1290: +#line 7312 "tth.lex" +case 1291: +#line 7313 "tth.lex" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(pargroup): +case YY_STATE_EOF(parclose): +case YY_STATE_EOF(tokenarg): +case YY_STATE_EOF(exptokarg): +case YY_STATE_EOF(swaparg): +case YY_STATE_EOF(embracetok): +case YY_STATE_EOF(rawgroup): +case YY_STATE_EOF(verbatim): +case YY_STATE_EOF(verb): +case YY_STATE_EOF(notags): +case YY_STATE_EOF(dupgroup): +case YY_STATE_EOF(dupsquare): +case YY_STATE_EOF(discardgroup): +case YY_STATE_EOF(falsetext): +case YY_STATE_EOF(innerfalse): +case YY_STATE_EOF(ortext): +case YY_STATE_EOF(orbreak): +case YY_STATE_EOF(getifx): +case YY_STATE_EOF(getiftok): +case YY_STATE_EOF(getifnum): +case YY_STATE_EOF(lookfornum): +case YY_STATE_EOF(insertnum): +case YY_STATE_EOF(lookforunit): +case YY_STATE_EOF(lookforfile): +case YY_STATE_EOF(matchbrace): +case YY_STATE_EOF(getbox): +case YY_STATE_EOF(getsubp): +case YY_STATE_EOF(getdef): +case YY_STATE_EOF(getdefbr): +case YY_STATE_EOF(getnumargs): +case YY_STATE_EOF(ddcomp): +case YY_STATE_EOF(getend): +case YY_STATE_EOF(letdef): +case YY_STATE_EOF(unknown): +case YY_STATE_EOF(dimadv): +case YY_STATE_EOF(getcount): +case YY_STATE_EOF(advance): +case YY_STATE_EOF(number): +case YY_STATE_EOF(counterset): +case YY_STATE_EOF(htemplate): +case YY_STATE_EOF(halign): +case YY_STATE_EOF(hendline): +case YY_STATE_EOF(hamper): +case YY_STATE_EOF(mamper): +case YY_STATE_EOF(vtemplate): +case YY_STATE_EOF(valign): +case YY_STATE_EOF(equation): +case YY_STATE_EOF(disptab): +case YY_STATE_EOF(textbox): +case YY_STATE_EOF(Litemize): +case YY_STATE_EOF(Lenumerate): +case YY_STATE_EOF(Ldescription): +case YY_STATE_EOF(Lindex): +case YY_STATE_EOF(uppercase): +case YY_STATE_EOF(textsc): +case YY_STATE_EOF(define): +case YY_STATE_EOF(macarg): +case YY_STATE_EOF(optag): +case YY_STATE_EOF(optdetect): +case YY_STATE_EOF(psub): +case YY_STATE_EOF(xpnd): +case YY_STATE_EOF(delimint): +case YY_STATE_EOF(removespace): +case YY_STATE_EOF(titlecheck): +case YY_STATE_EOF(stricttitle): +case YY_STATE_EOF(builtins): +case YY_STATE_EOF(latexbuiltins): +case YY_STATE_EOF(glue): +case YY_STATE_EOF(ruledim): +case YY_STATE_EOF(bigdel): +case YY_STATE_EOF(picture): +case YY_STATE_EOF(csname): +case YY_STATE_EOF(tempamp): +case YY_STATE_EOF(hskip): +case YY_STATE_EOF(vskip): +case YY_STATE_EOF(hbox): +case YY_STATE_EOF(vbox): +case YY_STATE_EOF(setdimen): +case YY_STATE_EOF(tabpre): +case YY_STATE_EOF(error): +case YY_STATE_EOF(parcheck): +case YY_STATE_EOF(tokexp): +case YY_STATE_EOF(escgroup): +case YY_STATE_EOF(uncommentgroup): +case YY_STATE_EOF(urlgroup): +case YY_STATE_EOF(indexgroup): +case YY_STATE_EOF(halsearch): +#line 7313 "tth.lex" +{ + if(!strcmp(yytext,"\\end")) { + tth_stack_ptr=0; + if(!ftntno){ + TTH_INC_LINE; + if(tth_debug&1024 && !(tth_stack_ptr||ftntwrap)) fprintf(stderr,"\n"); + /*Terminate the diagnostic*/ + }/* Count the last line if it is \end */ + } + /*Function returns here*/ + if ( --tth_stack_ptr < 0){ + TTH_CLOSEGROUP;*closing=0; + if(ftntno){ + TTH_SCAN_STRING("\\special{html:

    }\\tthfootnotes:\\special{html:

    \n}"); + ftntno=0; + if(tth_splitfile){ /*sf*/ + strcpy(filenext,"footnote.html");/*sf*/ + TTH_SCAN_STRING("\\tthsplittail\\tthsplitinv\\tthsplittop\\tthfileupd"); /*sf*/ + }/*sf*/ + }else{ + if(tth_debug&4096)fprintf(stderr,"ftntwrap:%d,",ftntwrap); + if(ftntwrap < nkeys){ /* Footnote wrap-up. Search keys. */ + if(tth_debug&4096)fprintf(stderr," %s\n",keys[ftntwrap]); + yy_delete_buffer(YY_CURRENT_BUFFER );/*leakfix*/ + if(strstr(keys[ftntwrap],"tthFtNt")){ + {TTH_PAR_ACTION}; + fprintf(tth_fdout,"",keys[ftntwrap]+1); + if(tth_debug&256)fprintf(stderr,"Footnote key %d, scanning: %s\n", + ftntwrap,defs[ftntwrap]); + yy_scan_string(defs[ftntwrap]);yy_push_state(psub); + } else yy_scan_string("\\end"); + tth_stack_ptr++; + /* tth_stack_ptr=1;*/ + ftntwrap++; + }else{ + if(tth_indexfile){ + /* We no longer remove it because we use different name. + sprintf(scratchstring,"%s %s.ind%s",RMCMD,tth_latex_file,RMTERM); + system(scratchstring); + */ + tth_indexfile=NULL; + } + if(tth_splitfile)fprintf(tth_fdout,"
    %s",TTH_HEAD);/*sf*/ + if(tth_debug&4096)fprintf(stderr,"Terminating.\n"); + fflush(stdout); + yyterminate(); + } + } + }else{ + if(eofrmv[tth_stack_ptr] == 11){ /*Index ref in toc*/ + if(tth_splitfile)/*sf*/ + {fprintf(tth_fdout,"Index
    ");}else/*sf*/ + {fprintf(tth_fdout,"Index
    ");} + eofrmv[tth_stack_ptr] = 0; /* Do it only once. */ + }else{ + /*horizmode=0; for removespace caused uppercase problem*/ + if(eofrmv[tth_stack_ptr]) yy_push_state(removespace); + } + if(tth_debug&16) fprintf(stderr, + "EOF encountered: level=%d rmv=%d\n", + tth_stack_ptr, eofrmv[tth_stack_ptr]); + yy_delete_buffer(YY_CURRENT_BUFFER ); + yy_switch_to_buffer(include_stack[tth_stack_ptr] ); + } +} + YY_BREAK +case 1292: +YY_RULE_SETUP +#line 7378 "tth.lex" +{ /* Don't suppose glue command in equations */ + TTH_CCPY(argchar,yytext); + strcpy(argchar+strlen(argchar)-1,"\n="); + TTH_SCAN_STRING(argchar); + *argchar=0; +} + YY_BREAK +case 1293: +YY_RULE_SETUP +#line 7385 "tth.lex" +yy_push_state(unknown); + YY_BREAK +/* Format looks like counter or dimension setting */ +case 1294: +YY_RULE_SETUP +#line 7388 "tth.lex" +{ + TTH_CCPY(argchar,yytext); + argchar[strcspn(yytext," =")]=0; + if( (ind=indexkey(argchar,countkeys,&ncounters)) != -1 ){ + if(tth_debug&4) fprintf(stderr,"Setting counter %d, %s\n",ind,countkeys[ind]); + yy_push_state(counterset); + } else if((ind=indexkey(argchar,keys,&nkeys)) != -1 ){ /*defined command*/ + yyless(strcspn(yytext," =")); + TTH_SCAN_STRING(argchar); + *argchar=0; + } else { + if((!strstr(unknownstring,yytext)||tth_debug)&&!(tth_debug&32768)){ + fprintf(stderr,"**** Unknown parameter/dimension/glue command %s Line %d\n",yytext,tth_num_lines); + if(!strstr(unknownstring,yytext) && + strlen(unknownstring)+strlen(yytext) < TTH_UNKS_LEN) + strcat(unknownstring,yytext); + } + yy_push_state(glue); /* In case glue */ + GET_DIMEN + } + } + YY_BREAK +case 1295: +#line 7411 "tth.lex" +case 1296: +YY_RULE_SETUP +#line 7411 "tth.lex" +{ /* Not a tth native command */ + TTH_DO_MACRO + else if( (ind=indexkey(yytext,countkeys,&ncounters)) != -1) { + if(tth_debug&4) fprintf(stderr,"Setting counter %d, %s\n",ind,countkeys[ind]); + yy_push_state(counterset); + } else { + if((!strstr(unknownstring,yytext)||tth_debug)&&!(tth_debug&32768)){ + fprintf(stderr,"**** Unknown command %s, (%d user-defined) Line %d\n", + yytext,nkeys-nbuiltins,tth_num_lines); + if(!strstr(unknownstring,yytext)&& + strlen(unknownstring)+strlen(yytext) < TTH_UNKS_LEN) + strcat(unknownstring,yytext); + } + yy_push_state(unknown); + } + } + YY_BREAK +case 1297: +YY_RULE_SETUP +#line 7429 "tth.lex" +yy_push_state(matchbrace); + YY_BREAK +case 1298: +/* rule 1298 can match eol */ +YY_RULE_SETUP +#line 7430 "tth.lex" +TTH_INC_MULTI; + YY_BREAK +case 1299: +/* rule 1299 can match eol */ +YY_RULE_SETUP +#line 7431 "tth.lex" +yy_pop_state();yyless(0); + YY_BREAK +case 1300: +YY_RULE_SETUP +#line 7433 "tth.lex" +strcat(psubstore,yytext); + YY_BREAK +case 1301: +YY_RULE_SETUP +#line 7434 "tth.lex" +strcat(psubstore,yytext); + YY_BREAK +case 1302: +/* rule 1302 can match eol */ +YY_RULE_SETUP +#line 7435 "tth.lex" +TTH_INC_LINE;strcat(psubstore,yytext); + YY_BREAK +case 1303: +YY_RULE_SETUP +#line 7436 "tth.lex" +{ + strcat(psubstore,"#"); + if(tth_debug&8) fprintf(stderr,"Double # added to %s\n",psubstore); + } + YY_BREAK +/* Changed * to + here 4 Nov 07 */ +case 1304: +YY_RULE_SETUP +#line 7441 "tth.lex" +{ /* Add space after a command string, in case */ + if( (js2 = strcspn(yytext,"#")) ){ + strcpy(scratchstring,yytext); + if(!strstr(yytext,"\\verb")){/*Don't add space after \verb*/ + strcpy(scratchstring+js2," "); + }else {*(scratchstring+js2)=0;} + strcat(psubstore,scratchstring); + } + jscratch=margmax-jarg+1; + i=indexkey(yytext+js2,margkeys,&jscratch); + if(tth_debug&8)fprintf(stderr,"%s argument search starting at %d finds %d\n", + yytext,jscratch,i); + if(i != -1) { + strcat(psubstore,margs[i]); + } else { + fprintf(stderr,"Could not find argument %s on macro arg stack\n",yytext); + } + } + YY_BREAK +case 1305: +YY_RULE_SETUP +#line 7459 "tth.lex" +{ + sscanf((yytext+strlen(yytext)-1),"%d",&i); + if(tth_debug&8) fprintf(stderr,"dropping %d args\n",i); + for (jscratch=0;jscratch63 && *yytext<91) || (*yytext>96 && *yytext<123)){ + if(whitespace==1)whitespace=1; else whitespace=0; + }else{ + if(whitespace==1)whitespace=2; else whitespace=0; + } + strcat(dupstore,scratchstring); + if(*chscratch == '#' ) { /* Nondelimited argument. */ + if(tth_debug&8) fprintf(stderr,"Non-delimited argument; jarg=%d\n",jarg); + chs2=chscratch+2; + chscratch=chs2; + if(strstr(yytext,"\n")){tth_num_lines--;}/*don't count twice*/ + yyless(0); + horiztemp=horizmode; + *dupstore=0; + if(jarg){ /* Not for zeroth argument */ + bracecount=-1; + yy_push_state(macarg); + yy_push_state(embracetok); + } else jarg++; + }else if(*chscratch == '{'){ /* Last argument is nondelimited */ + jargmax=jarg; /* use standard form of macarg */ + yyless(0); + horiztemp=horizmode; + *dupstore=0; + bracecount=-1; + yy_pop_state(); + yy_push_state(macarg); + yy_push_state(embracetok); + } else if(*chscratch == *scratchstring){ /* Normal delimited case. */ + chscratch++; + if((*chscratch == '#')||(*chscratch == '{')){ /* Matched pattern seg */ + sprintf(argchar,"#%d",jarg); + if(tth_debug&8)fprintf(stderr,"Matched Pattern:%s: jarg=%d, argchar=%s\n" + ,dupstore,jarg,argchar); + jscratch=0; + /* dupstore[strlen(dupstore)-(chscratch-chs2-compression)]=0;*/ + dupstore[strlen(dupstore)-(chscratch-chs2)]=0; + if(jarg){ + mkdef(argchar,margkeys,dupstore,margs, + &jscratch,margn,&margmax); + if(tth_debug&8){ + i=indexkey(argchar,margkeys,&margmax); + fprintf(stderr,"Delimited Argument:%s: index %d Def %s\n", + argchar,i,margs[i]); + } + } + if(*chscratch == '{') { /* Completed Template */ + jarg=1; + yy_pop_state(); + TTH_SCAN_STRING(defs[ind]); + if(tth_debug&8)fprintf(stderr,"Using definition %s (%d) = %s.\n", + keys[ind],ind,defs[ind]); + yy_push_state(psub); + }else{ /* Look for next argument */ + jarg++; + chs2=chscratch+2; + chscratch=chs2; + } + *dupstore=0; + /* compression=0;*/ + } + }else{ /* Mismatch. Start over. */ + chscratch=chs2; + if(*scratchstring == '{') { /* Nested braces protect against matching. */ + bracecount=0; storetype=10; /* Was 4 till new definitions */ + yy_push_state(dupgroup); + } + } + horizmode=horiztemp; +} + YY_BREAK +case 1311: +/* rule 1311 can match eol */ +YY_RULE_SETUP +#line 7593 "tth.lex" +{ + TTH_CHECK_LENGTH; + TTH_INC_LINE; + if(horizmode==1){ + horizmode=-1; + yy_push_state(parcheck); + TTH_OUTPUT(yytext); + }else if(horizmode==-1) { + fprintf(stderr,"**** Abnormal NL, removespace. Line %d\n",tth_num_lines); + } +} + YY_BREAK +case 1312: +YY_RULE_SETUP +#line 7604 "tth.lex" + + YY_BREAK +case 1313: +/* rule 1313 can match eol */ +YY_RULE_SETUP +#line 7605 "tth.lex" +{ + if(tth_debug&16)fprintf(stderr,"End of removespace:%s\n",yytext); + yy_pop_state();yyless(0); + } + YY_BREAK +case 1314: +/* rule 1314 can match eol */ +YY_RULE_SETUP +#line 7609 "tth.lex" +TTH_INC_MULTI;GET_DIMEN; + YY_BREAK +case 1315: +/* rule 1315 can match eol */ +YY_RULE_SETUP +#line 7610 "tth.lex" +yyless(0);yy_pop_state(); + YY_BREAK +case 1316: +YY_RULE_SETUP +#line 7612 "tth.lex" +ECHO; + YY_BREAK +#line 26748 "lex.yy.c" + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), (size_t) num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart(yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 11276 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 11276 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 11275); + + return yy_is_jam ? 0 : yy_current_state; +} + + static void yyunput (int c, register char * yy_bp ) +{ + register char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = (yy_n_chars) + 2; + register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + register char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart(yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return EOF; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_init_buffer(YY_CURRENT_BUFFER,input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree((void *) b->yy_ch_buf ); + + yyfree((void *) b ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = 1; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + int num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +{ + + return yy_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) yyalloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + + static void yy_push_state (int new_state ) +{ + if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) ) + { + yy_size_t new_size; + + (yy_start_stack_depth) += YY_START_STACK_INCR; + new_size = (yy_start_stack_depth) * sizeof( int ); + + if ( ! (yy_start_stack) ) + (yy_start_stack) = (int *) yyalloc(new_size ); + + else + (yy_start_stack) = (int *) yyrealloc((void *) (yy_start_stack),new_size ); + + if ( ! (yy_start_stack) ) + YY_FATAL_ERROR( "out of memory expanding start-condition stack" ); + } + + (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START; + + BEGIN(new_state); +} + + static void yy_pop_state (void) +{ + if ( --(yy_start_stack_ptr) < 0 ) + YY_FATAL_ERROR( "start-condition stack underflow" ); + + BEGIN((yy_start_stack)[(yy_start_stack_ptr)]); +} + + static int yy_top_state (void) +{ + return (yy_start_stack)[(yy_start_stack_ptr) - 1]; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +int yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param line_number + * + */ +void yyset_lineno (int line_number ) +{ + + yylineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * in_str ) +{ + yyin = in_str ; +} + +void yyset_out (FILE * out_str ) +{ + yyout = out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int bdebug ) +{ + yy_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + + (yy_start_stack_ptr) = 0; + (yy_start_stack_depth) = 0; + (yy_start_stack) = NULL; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Destroy the start condition stack. */ + yyfree((yy_start_stack) ); + (yy_start_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 7612 "tth.lex" + + + /********************************** CODE ******************************/ + +int main(argc,argv) +int argc; +char *argv[]; +{ +int raw=0,httpcont=0; +int i,ilatex=0,ititle=1; +char *spoint=0; +char ttver[]=TTH_VERSION; +char ttname[20]; +time_t secs_elapsed; +time_t make_time=939087164; +char timestr[]="On 00 Jan 2000, 00:00."; +FILE *fdin=0; +int horizmode=1; /* In signoff use font tags not divs */ +char main_input[TTH_CHARLEN]; +char main_output[TTH_CHARLEN]; + tth_fdout=stdout; + if((spoint=strstr(tth_DOC,"XXXX"))){ /* Make version strings */ + strcpy(ttname,"Tt"); + strcat(ttname,TTH_NAME); + strncpy(spoint-10-strlen(ttname),ttname,strlen(ttname)); + strncpy(spoint,ttver,strlen(ttver)); + if(strstr(TTH_NAME,"M")){ /* MathML */ + tth_mathitalic=0; /* Don't use for mml */ + tth_htmlstyle=2; /* Use default XHTML style for MathML*/ +#ifdef TTM_LAPSED + time(&secs_elapsed); + /*fprintf(stderr,"Maketime=%ld, elapsed=%ld",(long)make_time, + (long)secs_elapsed); */ + if(make_time!=939087164){ + if(secs_elapsed>make_time+30*24*60*60){ + fprintf(stderr,TTM_LAPSED); + TTH_EXIT(1); + } + } +#else + secs_elapsed=make_time; +#endif + while((spoint=strstr(tth_DOC,"tth")))strncpy(spoint,"ttm",3); + while((spoint=strstr(tth_DOC,"TtH")))strncpy(spoint,"TtM",3); + while((spoint=strstr(tth_USAGE,"tth")))strncpy(spoint,"ttm",3); + while((spoint=strstr(tth_USAGE,"TtH")))strncpy(spoint,"TtM",3); + while((spoint=strstr(tth_DOC,"(TeX-to-HTML"))) + strncpy(spoint," Tex to MathML/HTML translator. ", + strlen(" Tex to MathML/HTML translator. ")); + } + } + for (i=1;i"); + strcpy(tth_font_close[0],""); + TTH_CCPY(tth_fonto_def,tth_font_open[0]); + TTH_CCPY(tth_fontc_def,tth_font_close[0]); + }else{ + /* Make all (even multi-letter) identifiers italic*/ + strcpy(tth_font_open[0],TTH_ITALO); + } + break; + case 'j': tth_indexpage=9999; + if(*(argv[i]+2)) sscanf(argv[i]+2,"%d",&tth_indexpage); + fprintf(stderr,"HTML index page length %d\n",tth_indexpage);break; + case 'k': strcpy(tth_latex_file,argv[i]+2);break; + case 'L': case 'l':{ + if(strlen(tth_latex_file)){ + fprintf(stderr, + "Do not use both -L switch and file command-line argument %s\n", + main_input); + return 1; + } + strcpy(tth_latex_file,argv[i]+2); + fprintf(stderr,"Including LaTeX commands\n"); + ilatex=1; + break; + } + case 'n': + tth_titlestate=4; + if(*(argv[i]+2)) sscanf(argv[i]+2,"%d",&tth_titlestate); + break; + /*case 'n': tth_multinum=0;break; disable 3.0*/ + case 'P': case 'p': + if(!strcmp(argv[i]+2,"NULL")){tth_allowinput=0;} + TTH_CCPY(tth_texinput_path,argv[i]+2);break; + case 'r': raw=1;if(*(argv[i]+2)) sscanf(argv[i]+2,"%d",&raw);break; + case 's': tth_splitfile=1;break; /*sf*/ + case 't': tth_inlinefrac=1;break; + case 'u': tth_unicode=1; + if(*(argv[i]+2)) sscanf(argv[i]+2,"%d",&tth_unicode); + fprintf(stderr,"HTML unicode style %d\n",tth_unicode);break; + case 'v': tth_verb=1; tth_debug=1; + if(*(argv[i]+2)=='?'){fprintf(stderr,"%s",tth_debughelp);return 1;} + else if(*(argv[i]+2)) sscanf(argv[i]+2,"%d",&tth_debug); + break; + case 'V': tth_verb=1; tth_debug=2048+256+7;break; + case 'w': sscanf(argv[i]+2,"%d",&tth_htmlstyle); + fprintf(stderr,"HTML writing style %d\n",tth_htmlstyle); + if(!tth_htmlstyle&1) ititle=0;break; + case 'x':strcpy(tth_index_cmd,argv[i]+2);break; + case 'y': sscanf(argv[i]+2,"%d",&tth_istyle); + fprintf(stderr,"Equation layout style %d\n",tth_istyle); + break; + } + if(tth_verb)fprintf(stderr,"Debug level %d\n",tth_debug); + } + } + if((spoint=getenv("TTHINPUTS"))){ + TTH_CCAT(tth_texinput_path,PATH_SEP);TTH_CCAT(tth_texinput_path,spoint);} + if(httpcont) fprintf(tth_fdout,"Content-type: text/HTML\n\n"); + if(tth_splitfile) fprintf(tth_fdout,TTH_MIME_HEAD); /*sf*/ + if(raw!=1){ + fprintf(tth_fdout,TTH_DOCTYPE); + fprintf(tth_fdout,TTH_GENERATOR,TTH_NAME,TTH_VERSION); + fprintf(tth_fdout,TTH_ENCODING); + /*if(tth_htmlstyle&2) */ + fprintf(tth_fdout,"%s",TTH_P_STYLE); + if(tth_istyle)fprintf(tth_fdout,"%s",TTH_STYLE); + if(!(tth_htmlstyle&4))fprintf(tth_fdout,"%s",TTH_SIZESTYLE); + } + if(tth_flev0) tth_flev0=tth_flev0+2; /* Increment to compensate for dummy levels. */ + if(ititle && raw!=1){ + if(tth_htmlstyle&3){ + yy_push_state(stricttitle); + }else{ + yy_push_state(titlecheck); + } + } + yy_push_state(builtins); + if(ilatex)yy_push_state(latexbuiltins); + /* if(tth_debug) + fprintf(stderr,"Starting yylex\n"); */ + yylex(); + fprintf(stderr, "Number of lines processed approximately %d\n", + tth_num_lines-1); + /* Time stamp */ + time(&secs_elapsed); + spoint=ctime(&secs_elapsed); + strncpy(timestr+3,spoint+8,2); + strncpy(timestr+6,spoint+4,3); + strncpy(timestr+10,spoint+20,4); + strncpy(timestr+16,spoint+11,5); + if(raw==2)*timestr=0; /* Not if -r2 */ + if(raw!=1 && raw != 4){ + fprintf(tth_fdout,"\n


    File translated from\n\ +T%sE%sX\nby \n\ +T%sT%s%s,\n\ +version %s.
    %s
    \n",TTH_SMALL,TTH_SIZEEND,TTH_SMALL,TTH_SIZEEND + ,TTH_NAME,TTH_VERSION,timestr); + } + if(raw!=1){ + if(tth_htmlstyle&3)fprintf(tth_fdout,"
    "); + fprintf(tth_fdout,"\n"); + } + if(tth_debug&16) fprintf(stderr, "Exit pushdepth= %d\n",tth_push_depth); + /* silence gcc warnings:*/ if(1==0){yy_top_state();input();} + return 0; +} /* end main */ + +void tth_push(arg) +char arg[]; +{ + if(tth_debug&16) fprintf(stderr,"tth_push:%s depth:%d\n",\ + arg,tth_push_depth); + if(tth_push_depth == TTH_MAXDEPTH) { + fprintf(stderr, + "**** Error Fatal: Attempt to exceed max nesting:%d\n", + tth_push_depth); + TTH_FATAL(6); + }else{ + strcpy(tth_closures[tth_push_depth],arg); + strcpy(tth_font_open[tth_push_depth+1], + tth_font_open[tth_push_depth]); + strcpy(tth_font_close[tth_push_depth+1], + tth_font_close[tth_push_depth]); + tth_push_depth++; + } + arg[0]=0; +} + +void tth_pop(arg) +char arg[]; +{ + if(tth_push_depth < 1){ + fprintf(stderr,"**** Error: Fatal. Apparently too many }s.\nCheck for TeX errors or incompatibilities before line %d,\nnext material ",tth_num_lines); + /*TTH_FATAL(1);*/ + yy_push_state(error); + tth_ercnt=40; + }else{ + tth_push_depth--; + strcpy(arg,tth_closures[tth_push_depth]); + if(tth_debug&16) fprintf(stderr,"tth_pop:%s depth:%d\n",\ + arg,tth_push_depth); + } +} + +/* ******************************************************************** + Process epsbox. If epsftype=0 put link. Arg is the file name. + epsftype=1 Convert the ps or eps file to a gif reference. + epsftype=2 Ditto but inline it. epsftype=3 inline an iconized version.*/ +void tth_epsf(arg,epsftype) +char *arg; +int epsftype; +{ +#define NCONV 2 +#define NGTYPES 3 + char *gtype[NGTYPES]={"png","gif","jpg"}; + char commandstr[150]={0}; + char filestr[150]={0}; + char filestr1[150]={0}; + char filestr2[150]={0}; + FILE *giffile; + int sys=SUCCESS; + int c,i,psfound; + char *ext; + char eqstr[1]; /*dummy here for tthfunc*/ + *eqstr=0; /*silence warnings */ + ext=arg; /*silence warnings */ +if(epsftype==0){ + fprintf(tth_fdout,"Figure",arg); +}else{ + c=0; + for(i=1;i<=(strlen(arg)<4 ? strlen(arg) : 4);i++){ + ext=arg+strlen(arg)-i; + if(*ext=='.'){ + c=i; + break; + } + ext=ext+i; + } + if(c){ + if(strcmp(ext,".eps") && strcmp(ext,".EPS") + && strcmp(ext,".ps") && strcmp(ext,".PS") + && strcmp(ext,".pdf") && strcmp(ext,".PDF")) + { + fprintf(stderr,"Not a [e]ps file: %s, no conversion\n",arg); + if(epsftype==1) fprintf(tth_fdout,"Figure",arg); + if(epsftype==2) fprintf(tth_fdout,"\"%s\"",arg,arg); + return; + } + } + /* c=length of extension.*/ + strcpy(filestr,arg); + giffile=fopen(filestr,"r"); + psfound=0; + if(giffile == NULL){ /* Try possible file names */ + if(tth_debug&32)fprintf(stderr,"Graphic Input File %s not found.\n",filestr); + if(c==0){ + strcat(filestr,".eps"); + giffile=fopen(filestr,"r"); + if(giffile == NULL){ + if(tth_debug&32)fprintf(stderr,"Graphic Input File %s not found.\n",filestr); + strcpy(filestr,arg); strcat(filestr,".ps"); + giffile=fopen(filestr,"r"); + if(giffile == NULL){ + if(tth_debug&32)fprintf(stderr,"Graphic Input File %s not found.\n",filestr); + strcpy(filestr,arg); strcat(filestr,".pdf"); + giffile=fopen(filestr,"r"); + if(giffile == NULL){ + if(tth_debug&32)fprintf(stderr,"Graphic Input File %s not found.\n",filestr); + psfound=0; + strcpy(filestr,arg); /*Restore original name*/ + }else{ + fprintf(stderr,"Found %s. ",filestr); + psfound=1; + c=4; + } + }else{ + fprintf(stderr,"Found %s. ",filestr); + psfound=1; + c=3; + } + }else{ + fprintf(stderr,"Found %s. ",filestr); + psfound=1; + c=4; + } + } + }else{psfound=1;} + strcat(filestr1,filestr); /* The file we found for input if any.*/ + filestr[strlen(filestr)-c]=0; + sys=SUCCESS+1; + for(c=0;cFigure",filestr); + if(epsftype==2) fprintf(tth_fdout,"\"%s\"",filestr,filestr); + if(epsftype==3) fprintf(tth_fdout,"\"%s\"" + ,filestr,filestr1,filestr1); + }else if(psfound){ /* This can only happen if the system call occurs. */ + fprintf(stderr,"**** System call:%s failed.\n",commandstr); + fprintf(stderr, + "**** This failure is NOT in TtH; it is in an auxiliary program.\n"); + fprintf(tth_fdout,"Figure",arg); + }else { + fprintf(stderr,"**** No suitable source file for %s\n",arg); + } +} +} +/**************************************************************************/ +/* handling code for defs */ + +static int indexkey(key,keys,nkeys) +char *key; +char *keys[]; +int *nkeys; +{ + int i, j; + j=-1; + for(i = *nkeys-1; i>=0; i--) { + if(!strcmp(key,keys[i])) { + j=i; + break; + } + } + return j; +} + +static void mkkey(key,keys,nkeys) +char *key; +char *keys[]; +int *nkeys; +{ + size_t size; + size=strlen(key)+1; + keys[*nkeys]=malloc(size); + strcpy(keys[*nkeys],key); + (*nkeys)++; +} + +static void mkdef(key,keys,def,defs,narg,nargs,nkeys) +char *key; +char *keys[]; +char *def; +char *defs[]; +int *narg; +int nargs[]; +int *nkeys; +{ + size_t size; + size=strlen(key)+1; + keys[*nkeys]=malloc(size); + strcpy(keys[*nkeys],key); + size=strlen(def)+1; + defs[*nkeys]=malloc(size); + strcpy(defs[*nkeys],def); + nargs[*nkeys]=*narg; + (*nkeys)++; +} + +static void rmkey(keys,nkeys) +char *keys[]; +int *nkeys; +{ + if((*nkeys) > 0){ + (*nkeys)--; + free(keys[*nkeys]); + keys[*nkeys]=0; + } else { + fprintf(stderr,"**** Error: No keys left to remove\n"); + } +} + +static void rmdef(keys,defs,nkeys) +char *keys[]; +char *defs[]; +int *nkeys; +{ + if((*nkeys) > 0){ + (*nkeys)--; + free(keys[*nkeys]); + keys[*nkeys]=0; + free(defs[*nkeys]); + defs[*nkeys]=0; + } else { + fprintf(stderr,"**** Error: No defs left to remove\n"); + } +} + +void tth_undefine(keys,nkeys,udkey,lkeys) +char *keys[]; +int *nkeys; +int udkey; +int lkeys[]; + /* Undefine all local keys (lkeys(n)=1) from udkey to nkeys-1 */ +{ + /*static void rmkey();*/ + int i,ig; + ig=0; + for(i=(*nkeys)-1;i>=udkey;i--) { + if(lkeys[i]){ + if(tth_debug&4)fprintf(stderr, + "Undefining:Key %d, %s, %s\n",i,keys[i], + (ig ? "Trapped." : "Freed.")); + if(ig){ + *keys[i]=0; + lkeys[i]=0; + }else{ + rmkey(keys,nkeys); + } + }else{ig=1;} + } +} + +void tth_enclose(str0,str1,str2,store) /* Enclose str1 with str0, str2 */ +char *str0, *str2, *str1, *store; +{ /* Exit if string gets more than 3.5 of the 4*max */ + int lost; + strcpy(store,str1); + if((lost=strlen(str2)+strlen(store)- TTH_34DLEN) < 0){ + strcat(store,str2); + }else{ + fprintf(stderr,"**** Error: Fatal. String overflow: Lengths %d,%d\n", + (int)strlen(store),(int)strlen(str2)); + fprintf(stderr,"Line %d\n",tth_num_lines); + TTH_FATAL(2); + } + strcpy(str1,str0); + if((lost=strlen(str1)+strlen(store)- TTH_34DLEN) < 0){ + strcat(str1,store); + }else{ + fprintf(stderr,"**** Error: Fatal. String overflow: Lengths %d,%d\n", + (int)strlen(store),(int)strlen(str1)); + fprintf(stderr,"Line %d\n",tth_num_lines); + TTH_FATAL(2); + } +} + +void tth_prefix(str0,str1,store) /* Prefix str1 by str0, in str1 */ +char *str0, *str1, *store; +{ + int lost; + strcpy(store,str1); + strcpy(str1,str0); + if((lost=strlen(str1)+strlen(store)- TTH_34DLEN) < 0){ + strcat(str1,store); + }else{ + fprintf(stderr, + "**** Error: Fatal. Prefix string overflow: String %d, Prefix %d\n" + ,(int)strlen(store),(int)strlen(str1)); + fprintf(stderr,"Line %d. Check for excessive length equation.\n%s\n" + ,tth_num_lines," If necessary use switch -y0."); + TTH_FATAL(2); + } +} +/************************************************************************/ +/* start delimit */ +static void delimit(char *type, int heightin, char *codes) + /* Return codes corresponding to a delimiter of given type and height*/ +{ +#define notypes 14 + static int top[notypes]={230,246,233,249,236,252,234,243,233,249,234,250,32,32}; + static int flat[notypes]={231,247,234,250,239,239,234,244,234,250,234,250,32,32}; + static int mid[notypes]={231,247,234,250,237,253,234,244,234,250,234,250,225,241}; + static int bot[notypes]={232,248,235,251,238,254,234,245,234,250,235,251,32,32}; + int i,j; + char chr1[2]={0}; + char buff[20]; + int height; + int horizmode=1; /* In equations use font tags not divs */ + + /*tth_istyle case*/ + if(tth_istyle&1) height=0.65*heightin + 0.71; /* 2 has to yield 2*/ + else height=0.95*heightin+heightin*heightin/16 +.11; + /* Experimental size. Evenness fixed. If very large assume matrix. */ + if(tth_debug&32)fprintf(stderr,"Delimiter %s, heightin=%d, height=%d\n", + type,heightin,height); + + if (!strcmp(type,"(")) i=0 ; + else if(!strcmp(type,")")) i=1 ; + else if(!strcmp(type,"[")) i=2 ; + else if(!strcmp(type,"]")) i=3 ; + else if(!strcmp(type,"{")) {i=4 ; height=2*(height/2)+1;} + else if(!strcmp(type,"}")) {i=5 ; height=2*(height/2)+1;} + else if(!strcmp(type,"|")) i=6 ; + else if(!strcmp(type,"ò")) i=7 ; /* int */ + else if(!strcmp(type,"é")) i=8 ; /* lceil */ + else if(!strcmp(type,"ù")) i=9 ; /* rceil */ + else if(!strcmp(type,"ë")) i=10 ; /* lfloor */ + else if(!strcmp(type,"û")) i=11 ; /* rfloor */ + else if(!strcmp(type,"á")) i=12 ; /* langle */ + else if(!strcmp(type,"ñ")) i=13 ; /* rangle */ + else if(!strcmp(type,"/") || !strcmp(type,"\\")) { + /* Old version with font size=+... and bug sprintf(codes, + "%s%d%s%s%s\n", + TTH_SIZEGEN1,2*(height-1),TTH_SIZEGEN2,TTH_SIZEEND,type); + */ + sprintf(codes, + "%s%d%s%s%s\n", + TTH_SIZEGEN1,100*(height),TTH_SIZEGEN2,type,TTH_SIZEEND); + return; + } + else if(!strcmp(type,"Ö")) { /* Sqrt code */ + if(tth_root_len[tth_root_depth]){ /* An index exists */ + if(heightin<=2 ){ + if(tth_istyle&1){ + sprintf(codes,"%s%s%s%s %s%s%s%s",TTH_CELL_R,TTH_OA1, + TTH_FOOTNOTESIZE,tth_root_index[tth_root_depth], + TTH_SIZEEND,TTH_OA2,TTH_SYMBOL,TTH_large); + chr1[0]=214; + sprintf(codes+strlen(codes), + "%s%s%s%s%s",TTH_SYMPT(chr1),TTH_SIZEEND,TTH_SYMEND,TTH_OA3,TTH_CELL3); + }else{ + chr1[0]=230; + sprintf(codes,"%s\n%s%s %s%s%s%s
    ", + TTH_CELL_R,TTH_SCRIPTSIZE,tth_root_index[tth_root_depth], + TTH_SIZEEND,TTH_SYMBOL,TTH_NORMALSIZE,TTH_SYMPT(chr1)); + chr1[0]=214; + sprintf(codes+strlen(codes),"%s
    %s%s%s", + TTH_SYMPT(chr1),TTH_SIZEEND,TTH_SYMEND,TTH_CELL3); + } + }else{ + chr1[0]=230; + sprintf(codes,"%s%s%s%s %s%s%s%s
    ",TTH_CELL_R,TTH_OA5,TTH_SMALL, + tth_root_index[tth_root_depth],TTH_SIZEEND, + TTH_SYMBOL,TTH_Large,TTH_SYMPT(chr1)); + chr1[0]=231; + for(j=1;j<(height*.78-2.3);j++){ /* extra sqrt height */ + sprintf(codes+strlen(codes),"%s
    ",TTH_SYMPT(chr1)); + } + chr1[0]=214; + if(tth_istyle&1) sprintf(codes+strlen(codes), + "%s%s\n %s%s%s",TTH_SYMPT(chr1),TTH_SIZEEND,TTH_SYMEND, + TTH_OA3,TTH_CELL3); + else sprintf(codes+strlen(codes),"%s%s\n %s
    \n%s", + TTH_SYMPT(chr1),TTH_SIZEEND,TTH_SYMEND, + TTH_CELL3); + } + }else{ /* Vanilla */ + if(heightin > 2){ + chr1[0]=230; + sprintf(codes, + "%s\n%s  %s%s
    " + ,TTH_CELL_L,TTH_Large,TTH_SYMBOL,TTH_SYMPT(chr1)); + chr1[0]=250; + for(j=1;j < (0.78*height-2.3);j++){ + sprintf(codes+strlen(codes),"%s %s%s
    \n", + TTH_SYMEND,TTH_SYMBOL,TTH_SYMPT(chr1)); + }/* Accommodate Konqueror nbsp symbol bug */ + chr1[0]=214; + sprintf(codes+strlen(codes),"%s
    %s%s%s", + TTH_SYMPT(chr1),TTH_SIZEEND,TTH_SYMEND,TTH_CELL3); + }else{ + chr1[0]=214; + sprintf(codes, + "%s
    %s%s%s%s
    %s%s%s",TTH_CELL_L,TTH_SYMBOL, + TTH_Large,TTH_SYMPT(chr1),TTH_SIZEEND,TTH_SYMEND,TTH_OA4,TTH_CELL3); + } + } + *tth_root_index[tth_root_depth]=0; + tth_root_len[tth_root_depth]=0; + tth_root_depth--; + return; + } + else if(!strcmp(type,".")) { *codes=0; return; } + else { + fprintf(stderr, "Incorrect delimiter::%s::\n",type); + i=-1; + *codes=0; + return; + } + + /* Now using 8 bit codes. */ + if(height>1){ + strcpy(codes,TTH_CELL_L); + strcat(codes,TTH_SYMBOLN); + for (j=1 ; j <= height ; j++){ + if(j == 1) {chr1[0]=top[i]; sprintf(buff,"%s
    ",TTH_SYMPT(chr1));} + else if(j == height) {chr1[0]=bot[i]; sprintf(buff,"%s\n",TTH_SYMPT(chr1));} + else if(j == (height+1)/2) { + chr1[0]=mid[i];sprintf(buff,"%s
    \n",TTH_SYMPT(chr1));} + else {chr1[0]=flat[i]; sprintf(buff,"%s
    ",TTH_SYMPT(chr1));} + strcat(codes,buff); + } + strcat(codes,TTH_SYMEND); + strcat(codes,TTH_CELL3); + if(tth_debug&512) fprintf(stderr,"codes=%s",codes); + }else{ + if(i > 6){ + strcpy(codes,TTH_SYMBOLN); + strcat(codes,TTH_SYMPT(type)); + strcat(codes,TTH_SYMEND); + }else strcpy(codes,type); + } +} + /* end delimit */ + /*start symext*/ +/**************** Construct large, possibly extended, character. */ +void tth_symext(charin,charout) +char *charin,*charout; +{ + int horizmode=1; /* In equations use font tags not divs */ + char chr1[2]={0}; + chr1[0]=242; + if(strlen(charin) == 1){ + if(charin[0]==chr1[0]) { + strcpy(charout,TTH_SYMBOL); + chr1[0]=243;strcat(charout,TTH_SYMPT(chr1)); + strcat(charout,"
    "); + chr1[0]=245;strcat(charout,TTH_SYMPT(chr1)); + strcat(charout,"
    "); + strcat(charout,TTH_SYMEND); + }else { + strcpy(charout,TTH_LARGE); + strcat(charout,TTH_SYMBOL); + strcat(charout,TTH_SYMPT(charin)); + strcat(charout,"
    \n") ; + strcat(charout,TTH_SYMEND); + strcat(charout,TTH_SIZEEND); + } + }else{ /* Longer than one: remove a leading space, quote and terminate. */ + if(*charin==' ')strcpy(charout,charin+1); else strcpy(charout,charin); + if(strstr(charout,TTH_OBR)+strlen(TTH_OBR)!=charout+strlen(charout) + && strstr(charout, /*This mess is really TTH_DIV without eqclose ref*/ + (tth_istyle&1 ? + "\n

    " + :"
    ") + )+strlen( + (tth_istyle&1 ? + "\n

    " + :"
    ") + )!=charout+strlen(charout) + && strstr(charout+strlen(charout)-9,"ble>")==NULL) + strcat(charout,"
    \n"); + } /* Don't add an extra br to a hr or table end. */ +} + /*end symext*/ +/***************** Encode 3-digit integers *************************/ +void tth_encode(code,num) +char *code; +int num; +{ +int i; +sprintf(code,"%03d",num); +for (i=0;i<3;i++) *(code+i)=*(code+i) + 17; +} + +/*******************************************************************/ +/* Find the first brace group in the string "text" and copy it to the + string group, whose maximum length is len, value returned 0 if successful.*/ +int tth_group(group,text,len) +char *text,*group; +int len; +{ + int i,j; + int brace; + i=strspn(text," \t\n"); + /* if(*(text+i)=='{') i++; remove leading brace */ + j=0; + brace=0; /* 1 if removing braces */ + while(i+j < strlen(text)){ + if(*(text+i+j)=='{')brace++; + else if(*(text+i+j)=='}')brace--; + if(brace <= 0) break; + j++; + } + strncpy(group,text+i,len); + if(i+j= 4*multiples[0]){ + strcpy(rm,"A LARGE NUMBER"); + return 1; + } + m=0; + i=num; + if(i < 0){ + i=-i; + *(rm+(m++))='-'; + } + for(j=0;j=0){ + i=i-k; + *(rm+(m++))=codes[j]; + } + if(j=k){ + i=i-(k-p); + *(rm+(m++))=codes[n]; + *(rm+(m++))=codes[j]; + } + } + } + *(rm+(m++))=0; + return 0; +} +/* start b_align */ +/************************************************************************* + Take off the Cell start and the extra bottom from single over construct. + This is used only at the completion of the top or bottom of a fraction. + If cell starts or ends with CELL3, cut off since they are redundant. + If it then ends with OA4 it is a candidate for bottom removal. + If every CELL3 appears as part of the sequence OA4 CELL3, then change + each occurrence to just CELL3. + */ +#define BMAXLEN 1000 +#define NSTS 20 +static int b_align(thestring,tth_debug) + char *thestring; + int tth_debug; +{ + char buff1[BMAXLEN]; + char *chr,*chr1,*chr2; + char *oastarts[NSTS]; + char *oa4null=" "; + int ists=0,i; + + if(tth_debug&8192)fprintf(stderr,"b_align string:%s",thestring); + if(strlen(thestring) > BMAXLEN) return 0; /*Too long*/ + strcpy(buff1,thestring); + if(strstr(thestring,TTH_CELL3) == thestring) { /*Starts with CELL3 */ + strcpy(buff1,thestring+strlen(TTH_CELL3)); + if(tth_debug&2)fprintf(stderr,"String Head cut, "); + } + if(strstr(buff1+strlen(buff1)-strlen(TTH_CELL3),TTH_CELL3)){/*end*/ + *(buff1+strlen(buff1)-strlen(TTH_CELL3))=0; + if(tth_debug&2)fprintf(stderr,"String Tail cut. "); + } + if((oastarts[0]=strstr(buff1+strlen(buff1)-strlen(TTH_OA4),TTH_OA4))){ + chr=buff1; + for (ists=0; ists=0 && i<256) { + strcpy(tth_chuni,(tth_unicode==1 ? tth_sympoint[i] : tth_sympoint2[i])); + }else {i=-1;} + } + if(i==-1){ + j=0; + *tth_chuni=0; + while(strlen(chsym+j)){ + i=(int)*(chsym+j++); + if(i<0)i=i+256; + strcat(tth_chuni,(tth_unicode==1 ? tth_sympoint[i] : tth_sympoint2[i])); + } + } + } + return tth_chuni; +} +/*************************************/ +void tagpurge(eqstr) + char *eqstr; +{ + char *position; + char eqpurge[4*TTH_DLEN]; + int len; +/* fprintf(stderr,"Title Purging %s\n",eqstr); */ + position=eqstr; + *eqpurge=0; + while(position")+1; + } + strcpy(eqstr,eqpurge); +/* fprintf(stderr,"Purged %s\n",eqstr); */ +} + +/**End of TtH**/ + diff --git a/code-postprocessing/bbob_pproc/tth_C/tth.gif b/code-postprocessing/bbob_pproc/tth_C/tth.gif new file mode 100644 index 0000000000000000000000000000000000000000..f5ee5058b294d1e66a2cdbf1cddfb9670fc3dc5a GIT binary patch literal 7341 zcmeI1cQ{=8pT|cDqnGHSMzkPA#27@0GCCom_k`#zA&BTRV|0mLLqsnj$`}ln7=#dA z^ymyj)X_F~@9sXkclYk@@AvGp``g`n{yfh)f4yGk`+2|5M_oe=Bx7p^FazWR{{9*o zx�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 literal 0 HcmV?d00001 diff --git a/code-postprocessing/bbob_pproc/tth_C/tth_manual.html b/code-postprocessing/bbob_pproc/tth_C/tth_manual.html new file mode 100644 index 000000000..2a21d3daf --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/tth_manual.html @@ -0,0 +1,3123 @@ + + + + + + + + + \TtH: a ``\TeX to HTML'' translator. + +

    TTH: a "TEX to HTML" translator.

    +
    TtH icon
    + +
    +Version 4.04
    + +

    +

    + + +
    + +

    Abstract

    +TTH translates TEX documents that use the Plain macro package or +LATEX, into HTML. + It is extremely fast and completely portable. It +produces web documents that are more compact and managable, and +faster-viewing, than those from other converters, because it really +translates the equations, instead of converting them into images. + +
    + +

    Contents

    1  Capabilities
    +    1.1  Plain TEX
    +        1.1.1  Mathematics
    +        1.1.2  Formatting and Macro Support
    +    1.2  LATEX
    +        1.2.1  Environments:
    +        1.2.2  LATEX Commands:
    +    1.3  Special TEX usage for TTH
    +    1.4  Unsupported Commands
    +2  Installation
    +3  Usage
    +4  Messages
    +5  Mathematics
    +    5.1  Equations
    + + +    5.2  In-line Equation Limitations
    +    5.3  Mathematics Layout Style Improvement using CSS
    + + +6  Features dependent on external programs.
    +    6.1  Independence of [La]TEX installation and the -L switch.
    +    6.2  BibTeX bibliographies
    +    6.3  Indexing
    + +        6.3.1  Glossaries.
    +    6.4  Graphics Inclusion: epsfbox/includegraphics
    +    6.5  Picture Environments
    +7  Tabular Environment or Halign for Tables
    +    7.1  Tabular
    +    7.2  Halign
    +    7.3  Longtables
    +8  Boxes, Dimensions, and fills
    +TEX command definitions and other extensions
    +    9.1  Delimited-parameter macros and Conditionals
    +    9.2  Macro- and Style-file inclusion
    +    9.3  Layout to include arguments of unknown commands
    +    9.4  Restrictions on redefinition of internal commands
    +        9.4.1  Footnotes
    +10  Color
    +    10.1  LATEX Color
    +    10.2  Plain Color
    +    10.3  Limitations
    +11  Producing output split into different files.
    +    11.1  Overview
    +    11.2  Navigation Controls at File Top and Tail
    +    11.3  Special Precautions when Splitting Output
    +        11.3.1  Floats such as figures or tables
    +        11.3.2  Multiple Bibliographies
    +12  HTML and output
    +    12.1  Formal HTML validation
    +    12.2  HTML Styles
    +13  Browser and Server Problems
    +    13.1  Accessing Symbol Fonts: Overview
    +    13.2  Accessing Symbol Fonts: Details
    +    13.3  Printing
    +    13.4  Netscape/Mozilla Composer
    +    13.5  Other Browser Bugs
    +    13.6  Web server problems
    +14  Code Critique
    +15  License
    +16  Acknowledgements
    +A  Appendix: Non-Standard TEX Macros
    +B  Appendix: Frequently Asked Questions
    +    B.1  Building and Running TTH
    + + + +    B.2  [La]TeX constructs TTH does not seem to recognize
    + + + + + + + + + +    B.3  HTML output that does not satisfy
    + + + + + + + + + + + + +    B.4  How to write TEX designed for Web publishing
    + + + + + + + +    B.5  Formerly Frequently Asked Now Rarely Asked
    + + + +Index
    + +
    +

    +1  Capabilities

    + +
    +

    +1.1  Plain TEX

    + +
    +

    +1.1.1  Mathematics

    + +
    +Almost all of TEX's mathematics is supported with the exception of a +few obscure symbols that are absent from the fonts normally available +to browsers. Support includes, for example, in-line equations with +subscripts and superscripts, display equations with built-up +fractions, over accents, large delimiters, operators with limits; +matrix, pmatrix, cases, [but not bordermatrix]; over/underbrace [but +using a rule, not a brace]. + +
    +

    +1.1.2  Formatting and Macro Support

    + +
    + +
      +
    • Font styles: \it, \bf, \sl, \uppercase, everywhere, +\rm in most situations +1. +
      +
    • + +
    • Accented characters written like \"o or \'{e}. +
      +
    • + +
    • Guess the intent of font definitions, i.e. \font commands +[optionally, remove contruct]. +
      +
    • + +
    • Macro definitions that are global: \gdef, \xdef, +\global\def, \global\edef; or local to the +current group: \def, \edef. +
      +
    • + +
    • Definitions with delimited arguments. +
      +
    • + +
    • Input of files [see 9.2]. +
      +
    • + +
    • Newcount, number, advance and counter setting [global counter setting +only]. + + + +
      +
    • + +
    • Conditionals: iftrue, +iffalse, +ifnum, +ifodd, +ifcase, +if [for defined commands and plain characters, not some internals] +2, ifx [only for +defined commands and counters; internals appear undefined], ifvmode, +ifmmode, newif. +
      +
    • + +
    • Centerline, beginsection, item, itemitem, obeylines; hang, hangindent, +narrower [for entire paragraphs, hangafter ignored]. + Headline is made +into a title, footnote{}{}. Comments: removed. +
      +
    • + +
    • Tables: halign [uses border style if the template contains +vrule.]. Settabs, \+. +
      +
    • + +
    • Simple uses of \hbox,\vbox and \hsize to align text and +make boxes with restricted widths, but these are discouraged. In +setting the width of a vbox, the value of hsize should be once only, +immediately at the beginning of the vbox. +
      +
    • +
    + +
    +

    +1.2  LATEX

    +LATEX support includes essentially all mathematics plus the following + +
    +

    +1.2.1  Environments:

    + em, verbatim, center, flushright, verse, quotation, quote, itemize, +enumerate, description, list [treated as if description], figure, +table, tabular[*,x], equation, displaymath, eqnarray, math, array [not +generally in in-line equations], thebibliography, [raw]html, +index [as description], minipage [ignoring optional argument], +longtable [but see 7.3]. + +
    +

    +1.2.2  LATEX Commands:

    + [re]newcommand, newenvironment, chapter, section, subsection, +subsubsection, caption, label, ref, pageref [no number], emph, textit, +texttt, textbf, centering, raggedleft, includegraphics, [e]psfig, +title, author, date [maketitle ignored: title etc inserted when +defined], lefteqn, frac, tableofcontents, input, include [as input, +includeonly ignored], textcolor, color, footnote +[ignoring optional arg], cite, bibitem, bibliography, tiny +... normalsize ... Huge, newcounter, setcounter, addtocounter, value +[inside set or addto counter], arabic, the, stepcounter, newline, +verb[*] [can't use @ as separator], bfseries, itshape, ttfamily, +textsc, ensuremath, listoftables, listoffigures, newtheorem [no +optional arguments permitted], today, printindex, boldmath, +unboldmath, newfont, thanks, makeindex, index, @addtoreset, +verbatiminput, paragraph, subparagraph, url, makebox, framebox, mbox, +fbox, parbox [ignoring optional argument], definecolor, colorbox, +fcolorbox [not in equations], pagecolor [discouraged], savebox, sbox, +usebox. + +
    + These cover most of the vital LATEX constructs. Internal hypertext +cross-references are automatically generated (e.g. by ref and +tableofcontents) provided LATEX has previously been run on the +document and the appropriate command-line switch is used. + +
    +

    +1.3  Special TEX usage for TTH

    + A few non-standard TEX commands are supported as follows +3. See +also 6.4. + +
    +\epsfbox{file.[e]ps} Puts in an anchor called "Figure" linked to 
    +    file.[e]ps (default), or alternatively calls user-supplied script 
    +    to convert the [e]ps file to a gif image and optionally inline it.  
    +\special{html:"tags"} inserts ``tags'' into the HTML e.g. for images etc.  
    +\href{reference}{anchor} highlights ``anchor'' with href=``reference''.
    +\url{URL} like \href but with URL providing both reference and anchor.
    +\begin{[raw]html} ... \end{[raw]html} environment passed direct to output.
    +\tthtensor Subscripts and superscripts immediately following, on simple
    +    characters, are stacked up in displaystyle equations, not staggered. 
    +\tthdump{...} The group is omitted by tth. Define \tthdump as a nop for TeX.
    +%%tth:... The rest of the comment line is passed to tth (not TeX) for parsing.
    +
    +
    + +
    +

    +1.4  Unsupported Commands

    + +
    + When TTH encounters TEX constructs that it cannot handle either +because there is no HTML equivalent, or because it is not clever +enough, it tries to remove the mess they would otherwise cause in the +HTML code, generally giving a warning of the action if it is not sure +what it is doing. The following are +not translated. + +
    + +
    + \magnification \magstep etc : Removes the whole construct.
    + Some boxes in equations.
    + \raisebox, \lowerbox and similar usages.
    + \accent, \mathaccent. 
    +
    +
    + +
    +

    +2  Installation

    + +
    +The source for TTH is flex code which is processed to produce a C program +tth.c which comprises the distribution. This file is compiled by + +
    +	gcc -o tth tth.c
    +
    +
    + or whatever C compiler you are using. Compilation takes +typically less than a minute on a modern PC. + +
    +The executable should then be copied to whatever directory you want +(preferably on your path of course). That's all! + +
    +Alternatively you may be able to obtain a precompiled executable from +wherever you accessed this file. The Wind@ws executable comes with a +batch file for installation. Just run it by the command "install". + +
    +

    +3  Usage

    + +
    + Command line is as +follows. The order of the parts is irrelevant. Switches (preceded by a +minus sign -) can appear anywhere on the line. Square brackets should +not be entered, they simply indicate optional parts of the command +line. + + + + +
    +Either filter style (the < and > are file redirection operators):
    +  tth [-a -c -d ... ] <file.tex [>file.html] [2>err]
    +
    +Or, specifying the input file as an argument (output is then implied):
    +  tth [-a -c -d ... ] file[.tex] [2>err]
    +
    +Switches:
    +   -a automatic picture environment conversion using latex2gif (default omit). 
    +   -c prefix header "Content-type: text/HTML" (for direct web serving).
    +   -d disable delimited definitions.
    +   -e? epsfbox handling: -e1 convert figure to gif using user-supplied ps2gif.
    +       -e2 convert and include inline. -e0 (default) no conversion, just ref. 
    +   -f? sets the depth of grouping to which fractions are constructed built-up
    +    f5 (default) allows five levels built-up, f0 none, f9 lots. 
    +   -g don't guess an HTML equivalent for font definitions, just remove.
    +   -h print help. -? print usage.
    +   -i use italic as default math font.
    +   -Lfile  tells tth the base file (no extension) for LaTeX auxiliary input, 
    +      enables LaTeX commands (e.g. \frac) without a \documentclass line.
    +   -n? HTML title format control. 0 raw. 1 expand macros. 2 expand equations.
    +   -ppath specify additional directories (path) to search for input files.
    +      -pNULL is a special switch that disables all \input or \includes.
    +   -r output raw HTML (no preamble or postlude) for inclusion in other HTML.
    +	-r2 omit just the time stamp. -r1 is equivalent to -r.
    +   -t display built-up items in textstyle equations (default in-line).
    +   -u? unicode character encoding. Default 2 (unicode 3.2). 0 (iso8859-1)
    +   -v give verbose commentary. 
    +   -w? html writing style: 0 no title construction. 1 use head/body. 2 XHTML.
    +   -y? equation style: bit 1 compress vertically; bit 2 inline overaccents.
    +   -xmakeindx  specify a non-standard makeindex command line.
    +
    +
    + + + +With no arguments other than switches starting with a "-", +the program is a filter, i.e. it reads from stdin and writes to stdout. +In addition, diagnostic messages concerning its detection of unknown +or untranslated constructs are sent to stderr. If these standard +channels are not redirected using < and >, then the +input is read from the command line, and both output and error +messages are printed on the screen. + +
    +If a non-switch argument is present, it is assumed to be the name of +the input file. The file must have extension ".tex" but the extension +may be omitted. The output file is then constructed from the argument +by removing the extension ".tex" if specified, and adding ".html". + +
    +TTH is extremely fast in default mode on any reasonable hardware. +Conversion of even large TEX files should be a matter of a second or +two. +This makes it possible to use TTH in a CGI script to output HTML +directly from TEX source if desired; (stderr may then need to be redirected.) + +
    +

    +4  Messages

    + +
    +Messages about TTH's state and its assessment of the TEX it is +translating are output always to the stderr stream, which +normally displays on the console, but under Un*x type systems can be +redirected to a file if necessary. Normally these messages are one of +three types: + +
    + +

    Error Messages

    +These start **** Error: and indicate some improper condition or +error either in TTH or in the TEX of the file being +translated. Some errors are fatal and cause TTH to stop. On others +it will continue, but the TEX file probably should be corrected in +order to get correct output. + +
    + +

    Warnings

    +These start **** but without reporting Error. They are +messages by which TTH indicates aspects of the translation process +that may not be fully satisfactory, usually because of known limitations, +but which quite likely will not prevent the translated file from +displaying correctly, and so do not necessarily require +intervention. Examples include the use of some dimensions, glue, or similar +TEX commands that have no HTML equivalent. + +
    + +

    Informational and external

    +Lines with no **** are either informational, meaning the state +of the translation is not considered abnormal, or else they may come +from external programs (e.g. makeindex), over which TTH has no +control. + +
    +The switch -v causes more verbose messages to be output, which +may be helpful for understanding why errors are reported. A higher +level of verbosity -V can be invoked, but is intended primarily +for internal debugging of TTH and will rarely be comprehensible! + +
    +The presumption that lies behind TTH message design is that the file +being translated has been debugged using TEX or LATEX to remove +syntax errors. TTH is not good at understanding or reporting TEX syntax errors and counts only the lines in the main TEX file, not +those in files read by \input. Therefore error reporting by +TTH does not reach even the low standard of clarity set by TEX and +LATEX error messages. Although TEX files can be debugged using +TTH alone, since it is very fast, the process is not recommended for +inexpert TEX users. Moreover, since TTH understands both TEX and +LATEX simultaneously, it can parse some files that TEX or LATEX  +separately cannot. + +
    +

    +5  Mathematics

    + +
    +

    +5.1  Equations

    + +
    + Equations are translated internally into HTML. TTH uses HTML tables + for layout of built-up fractions in display equations. It also uses + the HTML tag < font face="symbol" > to render Greek and large + delimiters etc. Untranslatable TEX math tokens are inserted + verbatim. + +
    +The internal approach to equation translation is a major area where +TTH departs from the philosophy of LATEX2html and its +derivatives. TTH  +does not use any images to try to represent hard-to-translate +constructs like equations. Instead it uses the native ability of HTML +to the fullest in providing a semantically correct rendering of the +equation. The aesthetic qualities obtained are in practice no worse on +average than LATEX2html's inlined images, which are generally slightly +misaligned and of uncertain scaling relative to the text. Some +limitations in the HTML code are inevitable, of course, but one ends +up with a compact representation that can be rendered directly by the +browser without the visitor having to download any additional helper +code (e.g. Java equation renderer). + +
    + +The option [-i]   to TTH makes italic the default +font within equations, and thus the style more TEX-like. The italic +font appearance in browsers is not as satisfactory as TEX's math +italic, so for many documents roman looks better. + +
    + +Spacing   in equations is handled slightly differently by TTH than +by TEX. The reason is that most browsers use fonts that will crowd the +characters horizontally too close for comfort in many cases (for +example: M||/2). Also, built-up HTML equations are more +spread out vertically than in TEX. Therefore TTH equations look better +if spaces are added between some characters. So TTH  +does not remove spaces in the original TEX file between characters in +equations. The author is thus able to control this detail of layout in +the HTML without messing up their TEX file - since TEX will ignore +any spaces inserted. Legacy TEX code that contains a lot of spurious +whitespace (ignored by TEX) may, as a result, occasionally become too +spread-out when translated. + +
    +

    +5.2  In-line Equation Limitations

    + +
    + Some TEX capabilities are +extremely difficult or impossible to translate into HTML, because of +browser limitations, and are best avoided if possible. Arrays or +matrices or built-up fractions in in-line equations cannot be +properly supported because tables cannot be placed in-line in HTML. +TTH output often will be strangely disjointed. + + + + + As an option, TTH provides switch -t to convert inline +equations that use built-up constructs into a sort of half display, +half in-line equation. Each time a new in-line equation is encountered +[$ ... $ or \( ... \)] that needs to be built up, an +HTML table that starts a new line is begun, and the text then flows on +afterwards. For example +
    1
    2 + n

    +This option gives a slightly strange layout for simple equations +but is a big improvement for some situations, e.g. in-line matrices. + + +
    +Likewise most over- and under-accents, and indeed anything that +requires specific placement on the page other than simple subscript or +superscript and underline, cannot be rendered in-line in plain +HTML, although TTH will render them well in +displaystyle. These latter constructs are nevertheless commonly +used in in-line TEX. By default TTH renders these constructs in a +relatively intuitive way. For example $\hat{a}$ is rendered +a. The result is rarely elegant but it is +unambiguous. + +
    +

    +5.3  Mathematics Layout Style Improvement using CSS

    + + + + +
    +Some of the mathematics rendering limitations just mentioned can be + overcome using Cascading Style Sheets. These are an extension of HTML + that allows finer control over the layout. Most modern browsers + support some fraction of the CSS specification, but historically its + implementation has been slow and buggy. So it used to be awkward and + dangerous to adopt CSS for authoring because of never knowing whether + one was producing HTML that would simply be broken on a particular + browser. Moreover using style sheets slows down the browser's + rendering. + +
    + +Vertical Compression   of the otherwise sometimes rather +spread-out mathematics is implemented on TTH using a simple built-in +style sheet to reduce unwanted vertical space. The implementation +works around the different idiosyncrasies of the browsers' +implementations as well as it can, and is designed to degrade +gracefully in browsers without CSS support or with the support +switched off. This compression can be controlled by the switch -y, +which permits a numeric argument, e.g. -y1. Compression is on +by default, which corresponds to the first bit of the -y switch value +being 1 (in other words the value is odd). It may be switched off by +using the switch -y with an even numeric argument (or none at +all), e.g. -y2 or -y. + +
    + +In-line over-accents   can be rendered explicitly using the +relative positioning available in CSS2. The result is visually + preferable to the the indicative base rendering. However, it does not + fall-back gracefully, and the application of over accents to + multiple-character groups produces a poorly aligned result. + Nevertheless, since TTH version 3.87 it is used as default. It can + be turned off using the -y switch with the second bit (2) zeroed + in the numeric argument. For example -y1 or -y0 turns + it off. + +
    +

    +6  Features dependent on external programs.

    + +
    +

    +6.1  Independence of [La]TEX installation and the -L switch.

    + + + A major difference +between TTH and LaTeX2HTML is that TTH does not call the LATEX or tex programs at all by default, and is not specifically dependent +upon these, or indeed any other (e.g. PERL), programs being installed +on the translating system. Its portability is therefore virtually +universal. + +
    +Forward references in LATEX are handled by multiple passes that write +auxiliary files. TTH does only a single pass through the source. If +you want TTH to use LATEX constructs (e.g. tableofcontents, +bibliographic commands, etc.) that depend on auxiliary files, then +you do need to run LATEX on the code so that these files are +generated. Alternatively, the TTH switch +-a +causes TTH automatically to attempt to run latex on the file, +if no auxiliary file .aux exists. + +
    +When run specifying a filename on the command line as a non-switch +argument, TTH constructs the name of the expected auxiliary LATEX files in the usual way and looks for them in the same directory as the +file. +If you are using TTH as a filter, you must tell TTH, using the +switch -Lfilename, the base file name of these auxiliary files +(which is the name of the original file omitting the extension). If +TTH cannot find the relevant auxiliary file because you didn't run +LATEX and generate the files or didn't include the switch, then it +will omit the construct and warn you. +Forward references via ref will not work if the .aux file is +unavailable, but backward references will. The -L switch with no +filename may be used to tell TTH that the document being translated +is to be interpreted as a LATEX file even though it lacks the usual +LATEXheader commands. This may be useful for translating single +equations that (unwisely) use the \frac command. + +
    +

    +6.2  BibTeX bibliographies +

    + +
    +TTH supports bibliographies that are created by hand using +\begin{thebibliography} etc. Such bibliographies do not require +anything beyond the .aux file. TTH also supports +bibliographies created using BibTEX from a biblography database. The +filename.bbl file is input at the correct place in the +document. However, this filename.bbl is not created +automatically by LATEX. In addition to running LATEX on the source +file to create the auxiliary file, you must also execute +bibtex filename in the same directory, to create the +filename.bbl file, and then run LATEX again to get the +references right. (This is, of course, no more than the standard +procedure for using BibTEX with LATEX but it must be done if you +want TTH to get your bibliography right). If you don't create the +.bbl file, or if you create it somewhere else that TTH does not +search, then naturally TTH won't find it. Since the BibTEX process +is relatively tortuous, TTH offers an alternative. Using the -a +switch with TTH will cause it +to attempt to generate the required .bbl file automatically using +BibTEX and LATEX. + +
    +There are many different styles for bibliographies and a large number +of different LATEX extension packages has grown up to implement +them, which TTH does not support. More recently, a significant +rationalization of the situation has been achieved by the package +natbib. TTH has rudimentary support built in for its +commands \citep and citet in the default author-date +form without a second optional argument. A style file for +natbib is distributed with TTHgold which makes it possible to +accommodate most of its more useful styles and commands and easily switch from +author-date citation to numeric citation. + +
    +

    +6.3  Indexing

    + +
    +TTH can make an extremely useful hyperlinked index using LATEX automatic indexing entries. But indexing an HTML document is different +from indexing a printed document, because a printed index refers to +page numbers, which have no meaning in HTML because there are no page +breaks. TTH indexes LATEXdocuments by section number rather +than by page; assuming, of course, that they have been prepared with +index entries in the standard LATEX fashion. + +
    + When processing a LATEX file that contains the +\makeindex command in its preamble, TTH will construct an +appropriately cross-hyperlinked index that will be input when the +command \printindex is encountered, which must be after +all the index references \index{ ... } in the document. TTH does this independently of LATEX, but not of the subsidiary program +makeindex that is normally used with LATEX to produce the +final index. TTH creates its index entries in a file with extension +.tid (Tth InDex). Unfortunately the standard form that +makeindex expects for compound numbering of its sections or +pages is "1-2", separated by a dash. TtH changes that to "1.2" +using a point, and has to output a style file filename.mst , +where filename is the base filename of the latex file being +processed, to enable makeindex to handle this form. When the +\printindex command is encountered, TTH closes the .tid file and +runs the command + +
    +makeindex -o filename.tin filename.tid
    +
    +
    +on it. This creates an output file filename.tin, and +then TTH reads that file in as its index. If, instead of creating +an index file during TTH processing, one wants to use with TTH an +index file already created, all that is needed is to remove the +\makeindex command from the top of the LATEX source and copy +the existing .ind file to a .tin file that will be input by +\printindex. No indexing files will be written or deleted +without a \makeindex command in the document. + +
    +The \makeindex command, if present, will also cause TTH to add + +a linked entry called "Index" +to the end of any table of contents. This entry is a highly desirable +feature for an HTML file, but if there is no \printindex +command at the end of the document, the index will not exist, so the +reference will be non-existent. + +
    +On some operating systems with file name length restrictions, the +makeindex program is called makeindx. Therefore a TTH switch is +provided: -xcommandline, which substitutes commandline +for the default call makeindex. Therefore, -xmakeindx +will switch to the correct program name on one of these limited +operating systems. This switch also allows additional parameters or +switches to be passed to makeindex. If the -xcommandline +contains any spaces, then it is interpreted as the complete +command-line (not just the first word of the command-line), in which +the base filename may be referenced up to 3 times as "%s". For +example +-x"makeindex -s style.sty -o %s.tin %s.tid" will handle the +index using a different style file "style.sty". +If you don't have the makeindex program, you can't create indexes with +TTH or LATEX, except by hand. + +
    +All of the index file processing naturally requires that TTH have +write permission for the directory in which the original LATEX file +(specified by the -L switch) resides. + +
    + +Layout of the index   can be controlled with the switch +-j with an immediately following argument that specifies the +minimum number of lines in a column before the column will be +terminated. Because index entries are usually short, books almost +always adopt a two-column format for the index. TTH will also do so +by default, but since an HTML document has no page breaks, the question +arises how long the individual columns are allowed to be. The default +(no switch) is equivalent to -j20. A switch -j with no +argument is equivalent to specifying a very large number of lines, +with the result that only one column is used. A switch -j1 +will cause the columns to break at every indexspace, that is generally +at every new letter, so letter lists will alternate between columns. + +
    +

    +6.3.1  Glossaries.

    LATEX has a parallel set of commands for +glossary construction, replacing "index" with "glossary". +However, there is no \printglossary command and the .glo file +that LATEX produces cannot be handled by the makeindex program +without a specific style file being defined. Therefore glossary +entries are highly specialized and rarely used. TTH does not support +a glossary separate from the index. Instead it simply defines the +command as \def\glossary{\index} with the result that glossary +entries are placed in the index. It may be necessary to add +\makeindex and \printindex commands to make TTH handle +the glossary entries for a file that has only a \makeglossary +command. + +
    +

    +6.4  Graphics Inclusion: epsfbox/includegraphics

    + + +The standard way in plain TEX to include a graphic is using the epsf +macros. The work is done by \epsfbox{file.[e]ps} which +TTH can parse. By default TTH produces a simple link to such a +postscript file, or indeed any format file. + +
    + Optionally TTH can use a more appropriate +graphics format, possibly using a user-supplied (script or) program +called ps2png or ps2gif to convert the postscript file +to a png4 or gif +file, "file.png" or "file.gif". ["file" is the name of the +original postscript file without the extension and png or gif are +interchangeable as far as matters for this +description]. When the switch -e1 or -e2 is specified, if +"file.png", "file.gif" or "file.jpg" already exists in the same +directory as implied by the reference to "file.ps" then no +conversion is done and the file found is used instead. That graphics +file is then automatically either linked (-e1) or inlined (-e2) in the +document. If no such file is found, TTH tries to find a postscript +file with extension that starts either .ps or .eps and convert it, +first using ps2png then, if unsuccessful, ps2gif. Linux +(un*x) ps2png and ps2gif scripts using Ghostscript and +the netpbm utilities for this purpose are included with the +distribution. A comparable batch program can be constructed to work +under other operating systems +5 + or else the conversion can be done by +hand. Naturally you need these utility programs or their equivalent on +your system to do the conversion. The calling command-line for +whatever ps2png (or gif) is supplied must be of the form: + +
    ps2png inputfile.ext outputfile.ext
    +
    + The program must +have permission to write the outputfile (file.png) in the directory in +which the file.ps resides. + +
    +By popular request, a third graphics option -e3 for generating icons is +now available. If no previously translated graphics file, +e.g. "file.png" exists, TTH passes to ps2gif (or png) a third +argument consisting of the name, "file_icon.gif", of an icon file. +ps2gif is expected to create it from the same postscript file. In +other words the call becomes + +
    ps2gif file.eps file.gif file_icon.gif
    +
    + This third argument is then the file that is +inlined, while the larger gif file named "file.gif" is linked such +that clicking on the icon displays the full-size gif file. The icon +will not be created if "file.gif" already exists, because +ps2gif will not then be called. + +
    +The LATEX2e command \includegraphics{...} and the older +\[e]psfig{file=...} are treated the same as \epsfbox. +Their optional arguments are ignored. + +
    +If the extension is omitted for the graphics file specification, then +.ps or .eps is tried. If the extension of the file specified is +non-null and not .ps or .eps, no conversion is done but the file +is referenced or in-lined as an image. In effect, then, TTH supports +postscript, encapsulated postscript, gif, and jpeg, plus any future +formats that become supported by common browsers. However, LATEX does +not support these other formats, so it will give an error message if +it can't find a postscript file, unless you specify the bounding box, +thus preventing LATEX interrogating the file. + +
    +

    +6.5  Picture Environments

    + + +The picture environment cannot be translated to HTML. Pictures using +the built-in LATEX commands must be converted to a graphics file such +as a gif, and then included using \includegraphics, see +6.4. The switch -a, + causes TTH to attempt automatic +picture conversion using a user-supplied routine latex2gif. +When this switch is used, TTH outputs the picture to a file picn.tex, +where n is the number of the picture (if there does not already exist +a file picn.gif). It then calls the command latex2gif picn +which must be a command (e.g. a script using LATEX, dvips, etc.) on +the system, which converts the file picn.tex to a file picn.gif. An +example linux script is included in the distribution but this +conversion script is dependent on the system and so is entirely the +user's responsibility. For viewing the results, the files picn.gif +must be accessible to the browser in the same directory as the HTML +files, then they will be included in-line. It is impossible for a +picture environment to be converted in this automatic fashion if it +contains macros defined somewhere else in the original LATEX file, +because the macros will then be undefined in the picture file that is +extracted, and LATEX will be stumped. In that case, manual +intervention is necessary. + +
    +

    +7  Tabular Environment or Halign for Tables

    + + +The tabular environment is the recommended way to construct tables in +LATEX. In plain TEX, although \settabs etc. is supported, the +\halign{ ... } command is recommended. (The LATEX tabbing +environment is not supported by TTH because it is antithetical +to the spirit of HTML document description, and because it is an +extremely complicated construct. If you are lucky, TTH will not mess +up your tabbing environment too much, but it makes no attempt to +interpret it properly.) Considerable effort has been expended to +translate the tabular environment, including interpreting the +alignment argument of the environment, into as near an equivalent in +HTML as reasonably achievable6. However, the limitations of HTML tables impose +the following limitations on the translation. + +
    +

    +7.1  Tabular

    + +
      +
    • HTML tables have either all cells bordered with rules or +none. TTH therefore decides whether to use a bordered table by +examining the first character of the alignment argument. If is it +|, then the table is bordered, otherwise not. +
      +
    • + +
    • HTML tables are not capable of simultaneously aligning part of a +cell's contents to the right and part to the left, which is +automatically done by LATEX on some occasions when @-strings are used. +For example if the alignment argument is |l@{~units}|r|, LATEX +will align "units" to the right of the first cell. TTH can't. In +some unbordered cases TTH will try for the same effect by putting the +closing @-string in the following cell. This won't always give a good +result. +
      +
    • + +
    • @-strings and *{num} code repetition are not permitted in the +alignment argument to \multicolumn, but they are in the main +tabular alignment argument. +
      +
    • +
    + +
    +

    +7.2  Halign

    + +
    + +
      +
    • TTH decides whether to use a bordered table in Plain TEX +by examining the entire halign template (i.e. the material up to the +first \cr of the halign). If it contains the command +\vrule TTH makes the table bordered, otherwise not. +
      +
    • + +
    • TTH decides on the alignment of the cell contents by looking for +\hfill or \hss commands in the cell template. The +default is to left-align the cell. If one of these spacing commands is present +in the template prior to the # for this cell, then the cell +will be right-aligned unless such a command also appears after the +#, in which case the cell is centered. Again HTML is not capable of +applying different alignments to different parts of a cell. So results may +sometimes be different from TEX. However, if most of this paragraph +sounds totally obscure to you, don't worry; TTH will probably do the +right thing. +
      +
    • + +
    • The \multispan command is supported, giving a centered +multicolumn cell, and \omit is treated as \multispan1. +However, \span is currently not supported. +
      +
    • + +
    • In TEX each cell of an halign table resides within its own + implied brace group. Because TTH does not implement this implied + group, errors can arise. Even HTML table errors that lead to parse + errors with XML parsers can arise when the cells have boxes in them. + If this happens, the fix is to put an explicit brace group round the + offending cell in the template line like this example: + +
      +  \halign{#\quad\hfil &{\vbox{\hsize\0.5\hsize #}}\cr
      +    1 & V-box material\cr
      +    }
      +
      +
      +
      +
    • +
    + +
    +

    +7.3  Longtables

    + + + +
    + +
      +
    • The longtable environment is supported, but it is always centered. It +is converted into a standard tabular inside a table environment +because there is no need to accommodate page breaks (the main point of +longtable) in HTML. +
      +
    • + +
    • The caption (including caption*) command is +translated correctly but set as part of the HTML table; so, if the +caption is longer than the longest row of the table, it will cause the +whole table width to expand, possibly up to 100% of the +line-width. +
      +
    • + +
    • The commands endhead, endfirsthead, endfoot, endlastfoot, +are ignored, but their immediately preceding commands are therefore +inserted into the table. That is probably not desirable for the foot +commands. Longtable footers are not translated into footers. +
      +
    • + +
    • The \kill command is ignored. Its text is spuriously inserted. +
      +
    • +
    + +
    +

    +8  Boxes, Dimensions, and fills

    + +
    +Boxes, dimensions, and fills are rarely appropriate for web documents +because they imply an attempt to control the fine details of +layout. Browsers make their own choices about layout of a document in +HTML. For example they make the lines fit whatever size of window +happens to be present. This dynamic formatting makes mincemeat of most +detailed TEX layout. In fact, if you want your readers to see +exactly what you see, that is impossible with HTML, and you should use +some other representation of your document. + +
    +There are nevertheless many cases when a TEX document containing +boxes, dimensions, and fills needs to be translated. Limited +translation of these constructs is supported. They are translated, +where appropriate and possible, into HTML tables with widths and +vertical skips estimated to give a reasonable result on a browser. It +must be stressed that accurate translation is inherently impossible +because browsers deal in pixel sizes and default font sizes that vary +and are out of the control of the publisher. + +
    +The types of box usage that translate quite well are when things like + +
    +\hbox to \hsize{The left \hfil the Right}
    +\vbox{\hsize=2in Matter to be set in horizontal mode to a 
    +  limited hsize}
    +\makebox[0.6\hsize][r]{Stuff to the right of the makebox.}
    +\framebox{check}
    +
    +
    +are on a line by themselves. +You get: + +
    +
    +The left the Right
    +
    + Matter to be set in horizontal mode to a limited hsize +
    +
    +
    +
    +
    +Stuff to the right of the makebox.
    +
    +check
    +Usages that translate poorly tend to be boxes within a line of +text. That is because current HTML table implementations have to start +a new line unless they happen to be adjacent to a table already. Thus +an hbox in a line will give a line break that you might not have +wanted. This behaviour is really a bug in the browsers, but we are +currently stuck with it. The behaviour of HTML tables is buggy +[see 13.5] when their alignment is specified, which means that +strange results are likely if more than one box on a line is being +set. Boxes in equations are troublesome. The only type that is +reasonably supported is \mbox which is often used in LATEX for +introducing text inside equations. + +
    +Negative skips are not supported at all. + +
    +The only important dimension parameter that is currently interpreted +is \hsize. It is what controls the width of a vbox. It can be +reset using the plain TEX format e.g. \hsize = 3in or scaled +or advanced e.g. \hsize=0.6\hsize but only within a group. It +makes no sense for the HTML file to try to specify the width of the +line at the outermost level. That is the browser's business. + +
    +New dimensions can be defined, set, advanced, scaled and used to set +other dimensions including \hsize. + +
    +TTH trys valiantly to mimic the sort of text alignment that is +obtained using glue such as \hfil and \hss, provided it +is inside a box. However, the alignment algorithm of HTML tables makes +it impossible to obtain fills with exactly equal sizes. So don't be +surprised if some results looks disagreeable. Moreover, TTH will +completely ignore the glue outside an hbox, and it doesn't know +the difference between \hfil and \hfill, etc. + +
    +

    +9  TEX command definitions and other extensions

    + +
    +

    +9.1  Delimited-parameter macros and +Conditionals

    + +
    +Delimited parameter definitions are fully supported. However, macros +in some style files are written in such a way that the recognition of +the delimited parameter depends on other TEX behaviour +(e.g. dimensions) that are not supported or handled differently by +TTH. In such cases it is all too possible for the delimited parameter +not to be matched, resulting in a runaway argument situation. +Thus, delimited parameter macros are especially dangerous when using +TTH, or indeed any process other than TEX itself. (And they are +never exactly "safe TEX"). The recognition of these definitions can +be disabled using the -d switch, in which case the definitions are +simply discarded. + +
    +Conditionals such as \if, \ifnum and so on are +supported, as listed above (1.1.2). In TTH they have one +syntax limitation. Further `if' commands are not permitted in, or as part of +a command expanded in, the tokens, characters, or numbers being +tested. Thus, an example of truly perverse usage such as
    +\ifnum 1=\if ab 1\else 2\fi  True \else False \fi
    will likely +break. Nested `if' constructs are permitted in the conditional +text, however, so
    +\ifnum 1=1 True\if ab -true\else -false\fi \else False \fi
    is fine. +Because TTH does not internally resemble TEX, whereas the result of +conditionals such as \if and \ifx may depend on internal +representations, there cannot be 100% compatibility of such tests at +the lowest level. Still, tests on externally defined commands ought +generally to give correct results. When authoring documents in TEX one +is generally well advised to avoid conditionals. + +
    +Although TTH supports a remarkably complete subset of LATEX, it does +not support all of the complicated primitive details of +TEX, partly because that would be unnecessary. +For example, practically any TEX that redefines category codes +(other than @ which TTH treats universally as a letter) will break because +TTH knows nothing about the concept of category codes. (If you don't +know much either, about this unfortunate aspect of TEX, join the vast +majority of TEX users!) A related example is that TTH expects +only letters or @ in user-defined command names, not punctuation +characters etc. + +
    +

    +9.2  Macro- and Style-file +inclusion

    + + +Macro definitions are fully supported by TTH. However, special macro +packages designed for a specific layout of journal or conference, for +example, often use unsupported constructs such as catcode changes. It +may then be inadvisable to use the macro package. TTH does not +recognize the \usepackage command by default because the +LATEX macros that are input by this command almost always contain +catcode changes or other usages incompatible with TTH. That is +another reason why TTH does not normally have directory paths +defined the same as TEX. If a macro package is on the TEXINPUTS path +it will be found by TEX but not by TTH. Thus, the macro +definitions are included when "TEX"ing the file, but not when +"TTH"ing it. It should be clear from this discussion, however, +that TTH generally does not support any of the enormous number of +extensions to LATEX unless they are mentioned in this manual, +because most extension packages are incompatible with TTH. + +
    +TTH will find an input file if + +
      +
    1. the full path is + specified relative to the directory from which TTH is run, e.g.
      + \input /home/myhome/mytexdir/mymacro.tex
      +
      +
    2. + +
    3. the -p switch specifies a path on which the file is +found, or +
      +
    4. + +
    5. the TTHINPUTS environment variable is defined to be a path on +which the file is found. +
      +
    6. +
    +Paths are searched in this order until an appropriate file is +found or all directory options are exhausted + +
    + This policy provides a mechanism +for making available the alternative package for TTH, +without alteration of the original TEX files, by placing the +(simplified) version of the macro package on the path TTH searches. + An example using the -p switch might be + +
    +tth >file.html <file.tex -p/usr/local/tthinputs:~/mytthinputs
    +
    +
    + +
    +Since it is impossible to anticipate all style file incompatibilities, +it must be the responsibility of the user (or the journal) to decide +how to translate the concepts implemented in the original complicated +macro package into simpler, TTH-compatible, TEX macros. + +
    +When TTH is used within a CGI script accepting arbitrary TEX for +translation, its ability to input any file on the system is a serious +security hole. It can be used to view all sorts of files on the system +by \inputing them. Therefore a special switch -pNULL is +provided that disables all \input or \include files. + +
    +

    +9.3  Layout to include arguments of unknown +commands +

    + +
    +Unrecognized or undefined commands of the form +\dothis{one}{two}{three}, are treated by discarding +all the following adjacent brace groups. A space between the close and +open braces will terminate the discarded arguments and cause the +following brace group(s) to be scanned as if just the text. This +makes it possible to use formatting to make TEX code come out right in +both TEX and HTML. For example if TTH encounters a command written +"\boxthis{width} {boxed material}" which might be +designed in TEX to provide a width to a defined command, written with +a space after the first argument, it will ignore the width and scan +the boxed material into the text. + +
    +

    +9.4  Restrictions on redefinition of internal +commands +

    + +
    +In TTH (unlike TEX) most internal commands can not normally be +redefined; any redefinition will simply be ignored (except inside edef +and a few other places). This prevents TTH from safely allowing use of +major packages that redefine standard TEX commands. For example amsTEX redefines footnote to have just one argument, which will cause +problems. This particular example is potentially a problem with LATEX too, which also redefines footnote. TTH handles this by keeping track +of whether the file is LATEX or TEX; therefore you should not mix the +two dialects in a single file even though there is no need to tell TTH +explicitly which type the file is. (Besides, a mixed file will play +havoc with TEX itself.) + +
    +

    +9.4.1  Footnotes

    +Footnotes are placed together at the end of the document, or, in the +case of TTHgold splitting files, in a separate file called +footnote.html. The title of this end section is determined by the +macro \tthfootnotes. By default this is "Footnotes", but can +be redefined by the user at will, e.g. by +\def\tthfootnotes{Tailnotes}. + +
    +

    +10  Color

    + +TTH supports the coloring of text using the color package macros for +LATEX, supported by dvips (but not xdvi). TTH also supports the Plain +TEX colordvi macros contained in the package colordvi.tex that do the +same thing. + +
    +

    +10.1  LATEX Color

    + +
    +The LATEX syntax is recommended because the 68 standard +named colors7 are directly supported internally by TTH using the named +model. Any numerical CMYK, RGB and Gray color can also be prescribed. For +example the following commands are enclosed in themselves: +\textcolor[named]{BrickRed}{...}, +\textcolor[rgb]{0.,.5,0.}{...}, +\textcolor[cmyk]{0.,.5,0.,0.3}{...}. +You can define custom colors in the usual way using, for example + +
    +{\definecolor{Puce}{rgb}{1.,.5,.8}
    +\color{Puce} This is my own Puce.}
    +
    +
    +Which gives " +This is my own Puce." + +
    +The command \pagecolor is supported but discouraged. It +is highly likely to give rise to an HTML file that will fail +validation because it inserts an HTML tag <body bgcolor=...> +which will not be in its correct position (immediately following the +title). The only way to be certain to produce an HTML file that passes +validation is to put the title and body commands in by hand, using +e.g. \special{html:<title>...</title><body ...>} Netscape +seems not to mind a body tag out of order, but only the first one is +able to set the page background color. + +
    +The commands \colorbox and \fcolorbox are supported via +CSS style sheet commands. They will only work to set the background +color of included text if the browser is set to use style sheets. + +"This sentence" is the result of the command +\colorbox{green}{``This sentence''}. If it is colored, then +your browser supports style sheets to this extent. If not, check your +preferences settings. + +
    +

    +10.2  Plain Color

    + +
    +The Plain TEX syntax using commands such as \Red{red text} requires +the file colordvi.tex to be input prior to their use. But +because TTH does not search the standard TEX paths, that file will +not usually be found unless the full path is explicitly +specified. If the file is not found, only the 8 standard colors + +
    +\Red, \Green, \Blue, \Cyan, \Magenta, \Yellow, \Black, and \White
    +
    +
    + are +recognized internally by TTH. You can use the user-defined CMYK numeric +style + +
    +\Color{0. .5 .5 0.}{pale red}
    +
    +
    +without the colordvi +file. It gives the result "pale red" but the +notation becomes cumbersome unless you define your color +e.g. like + +
    +\def\redcolor{0. .5 .5 0.}
    +\Color{\redcolor}{The stuff that is red.}
    +
    +
    + +
    +Another difficulty with the colordvi +command \textColor (which is the color switch - LATEX +syntax reversed that usage and changed to comma-delimited arguments +just to confuse us) is that it is a global setting. It then +becomes almost impossible to maintain proper nesting of the closure of +the font commands used for colors in HTML. As a result, use of +\textColor often gives HTML files that won't pass HTML validation. + +
    +

    +10.3  Limitations

    +Color commands do not propagate into different cells of HTML tables +because of what may be regarded as a browser bug +[13.5]. For that reason, tables and equations will not color +correctly if the color commands enclose more than one cell (for +tables) or equation element. Remember also that some computers may be +limited in their color display capability, so the subtleties of colors +will be lost in some circumstances. + +
    + +
    +

    +11  Producing output split into different files.

    + +
    +

    +11.1  Overview

    + +
    +Because the TTH program itself always produces just one output file, +the division of the output into different files takes place in two +steps. First, TTH is run on the LATEX file with the switch +-s (for "split"). This switch tells TTH to produce output +that is in multipart MIME format. Incidentally, this format is +used for sending multipart mail messages with attachments over the +internet. For present purposes it is simply a convenient standard for +TTH to use to show how to split the output and what the names of the +final files should be. If we wanted to keep this MIME file, then for +example the command + +
    +tth -s -Ltexdocument <texdocument.tex >mimedocument.html
    +
    +
    + +
    + would produce such a file called mimedocument.html from a +LATEX file called texdocument.tex. The switch -L +tells TTH to use auxiliary files that were produced when LATEX  +was previously run on it. Alternatively if you want the output file to +have the same name as the texdocument but with the extension +html, you can use just + +
    +tth -s texdocument
    +
    +
    + +
    +There are available standard tools for unpacking multipart mime files +into their individual files, notably the mpack tools available from +the "Andrew" distribution, which may be available on some +systems. However the executable tthsplit (whose source is in +the tthgold directory) is a more specific +program that will unpack MIME files produced by TTH. (tthsplit +will not handle general MIME files.) To unpack the multipart +file into its individual files requires the simple command: + +
    + +
    +tthsplit <mimedocument.html
    +
    +
    + +
    + This will inform the user of the files produced, for +example + +
    + +
    +index.html
    +chap1.html
    +chap2.html
    +refs.html
    +footnote.html
    +
    +
    + +
    + the file index.html is always the topmost file with +links to succeeding files, and cross-links from any table of contents +or list of figures, etc. + +
    +It is unnecessary to save the intermediate file. Instead, the output +of tth can be piped to tthsplit to produce the split +files directly by the command line: + +
    + +
    +tth -s -Ltexdocument <texdocument.tex | tthsplit
    +
    +
    + +
    +Since the names of the split parts of the document are predetermined, +it is strongly advisable to make a separate directory for each +different LATEX document to keep the parts of the document in. The +conversion and splitting must then be performed in that directory to +ensure the files end up there. This task is left to the user. + +
    +The Windows graphical user interface tth-gui offers an option for +the translated file to "split it here". If this button is checked, +the file will be split in the same folder as the tex file, producing +the HTML files as above. + +
    +

    +11.2  Navigation Controls at File Top and Tail

    + +
    +By default TTH places navigation links labelled "PREVIOUS" and +"NEXT" at the top and tail of the split pages, and a link "HEAD" +to the first section of the file at both places. These do not use cute +little images because images have to be in separate files, which would +defeat the principle of TTH always outputing just one file. However, +authors might want their own images or indeed far more elaborate +navigation links. The links can be customized straightforwardly by +redefining two special macros that are used for the navigation +section. By default these macros are defined as + +
    +\def\tthsplittail{
    + \special{html:\n<hr><table width=\"100\%\"><tr><td>
    + <a href=\"}\tthfilenext\special{html:\">}NEXT
    + \special{html:</a></td><td align=\"right\">
    + <a href=\"index.html\">HEAD</a></td></tr></table>\n</html>}}
    +\def\tthsplittop{
    + \special{html:<table width=\"100\%\"><tr><td>
    + <a href=\"}\tthfilechar\special{html:\">}PREVIOUS
    + \special{html:</a></td><td align=\"right\">
    + <a href=\"index.html\">HEAD</a></td></tr></table>}}
    +
    +
    + +
    +The macro \tthsplittail is called when splitting, as soon as a +chapter or section command is detected. Then after the split is +completed and the HTML header has been inserted for the next file, +\tthsplittop is called. Note that these macros use the +builtins \tthfilenext and \tthfilechar to access the +names of the next and the previous HTML files respectively. + +
    +These splitting macros can be redefined to whatever style of +navigation the author prefers. But careful attention should be paid to +the use of raw HTML output, for example using the HTML special. + +
    +

    +11.3  Special Precautions when Splitting Output

    + +
    +

    +11.3.1  Floats such as figures or tables

    +If you are splitting an article-style file that has a lot of +floating bodies (i.e. figures or tables) in it, these may be moved by +LATEX beyond the end of their corresponding section. This is a +familiar problem with LATEX. The result of this float misplacement +is that TTH may become confused and generate incorrect +cross-references to these floats in the list of figures and or list of +tables, because the only way that TTH can tell the section of float +placement is by the order of lines in the auxiliary files. If this +happens, some special precautions will prevent it. + +
    +All that is required is to add to the LATEX source file, in the +preamble between the documentclass and the begin{document} commands, +the extra command: + +
    + +
    +\input /usr/local/tth/tthprep.sty
    +
    +
    + +
    + where the path should be to wherever you unpacked or are +keeping the tth distribution file tthprep.sty. Then LATEX should +be run twice on the file to create the auxiliary files that tth will +use in its translation. Because of the extra definitions in +tthprep.sty, the auxiliary files so produced can be interpreted by +tth to give correctly linked split files. If you want to produce +dvi output from your LATEX then you should remove this extra +input command. None of this is needed unless splitting by +sections (not chapters) is to be performed or floats are +problematic. + +
    +To make it easier for the user, a script is provided called +tthprep which automates the process of producing satisfactory +auxiliary files through the single command + +
    + +
    +tthprep texdocument.tex
    +
    +
    + +
    + The script will leave the LATEX file in its original condition, +but the auxiliary files in appropriate form for TTH. + +
    +

    +11.3.2  Multiple Bibliographies

    +Multiple bibliographies in split files are a problem. All the +citations in the rest of the text link to a single file +refs.html because there is no way for TtHgold know the name of other +files to refer to. However, each time a bibliography is started, +when splitting, TtHgold starts a new file. TtHgold numbers reference +files after the first as refs1.html refs2.html +etc. + +
    +After splitting the output using tthsplit, the user has then to +concatenate the reference files into a single html file if the +cross-references are all to be correct. The utility program +tthrfcat will do this if run in the directory where the split +files reside. It destroys all the refsx.html files. But since those +were generated by TtHgold, they can always be generated again. Some +spurious file navigation buttons will remain in the resulting +refs.html file. They can be removed by hand if desired. + +
    +Things go much more smoothly if there is only one bibliography per TeX +document and it is at the end of the TeX file. + +
    +

    +12  HTML and output

    + +

    +12.1  Formal HTML validation

    + TTH takes as its standard HTML that +can be rendered by Netscape and IE browsers versions 4 and higher +(with the caveats above). The formal standard that TTH-translated +documents follow is strictly HTML4.0[1]8 +Transitional. However, TTH does +not formally validate its documents, and can be made to violate the +standard by some TEX usage. + +
    +One reason for violation +arises because HTML4.0 requires a +<title>...</title> for every document. +A title is constructed from LATEX files that contain the \title{...} +command, in which case HTML conformance is ensured by putting the +\title command before any text (i.e. in the preamble, where it +belongs). If the \title command is not desired in the TEX +file, for example because it is a plain TEX document, +a title can be provided by the author for the HTML document by putting +a line like this at the top of the TEX file. + +
    +%%tth:\begin{html}<title>Put the title here</title>\end{html}
    +
    +
    +This line will be ignored by TEX. Actually, any raw HTML output at the +start of the file is assumed by TTH to indicate that the author has +explicitly output a title. If no title indication of any of the above +types is present, TTH attempts to construct a title from the first few +plain words in the document, in much the way that the first line can +become the title of a hymn. + +
    +If commands like +\item, that output material to the HTML file occur +before the title has been constructed, the HTML title command will be +out of order and the formal standard will be violated. + +
    +In the case where the title construction fails, or if some other TEX +usage causes a violation of the formal standard, browsers will +still render the output correctly if this manual is followed. + +
    +

    +12.2  HTML Styles

    + + +There are good reasons why the <head> and <body> tags +are by default omitted by TTH. See the FAQ [B.3] for a +brief discussion. However, the evolution of HTML standards (not yet +browsers) is towards imposing more restrictions on the freedom to omit +tags. For example XHTML requires that containers have both +opening and closing tags. Therefore TTH has a switch -w? +(where the question mark denotes an optional integer) that controls +its writing style as follows. + +
    +
    Default
    +
    Construct title. Do not enter head and body tags.
    +
    -w -w0
    +
    Do not construct title or enter head/body tags.
    +
    -w1
    +
    Enter head and body tags assuming that the title is the +dividing point.
    +
    -w2
    +
    Use XHTML syntax.
    +
    -w4
    +
    Don't use block level font size commands between paragraphs.
    +
    +At present, in addition to the default style that +attempts to construct a title but does not enter head and body tags, +-w or equivalently -w0 prevents TTH from attempting to construct a +title or anything else in the way of head/body divisions. This style +is best used for documents where the author has explicitly entered the +required HTML tags. The switch -w1 invokes pedantic HTML style which +enters head and body tags under the assumption that the title +(possibly constructed automatically) is the last thing in the head +section. A style -w2 produces XHTML documents but requires +cascading style sheet (CSS) support in the browser otherwise the +rendering will not be as satisfactory as the default. + +
    +Addition of four to the writing style index (e.g. -w4) prevents + TTH employing block-level font size commands if the size is changed + immediately after a \par or implied paragraph. The additional + CSS style sheet is not inserted and, of course, the browser need not + support CSS. The (now) default writing style is to accommodate tables + and equations inside sections of larger or smaller text in a manner + that will pass standards validation. According to the standard, HTML + font changing commands like most others, are either of + inline type, in which case they are forbidden + to contain block level constructs like + tables, or block type, in which case they force a new line and so + can't be used within a paragraph. The default can't universally fix + this unnecessarily restrictive requirement of the standard (which + most browsers wisely do not honor). There are situations where + TEX usage is simply impossible to express in HTML. However, it does + fix the vast majority of sensible usages. The switch -w4 turns off + this approach, reverting to less standards-compatible style. + +
    +

    +13  Browser and Server Problems

    + +
    +TTH translates TEX into standard HTML and takes account as far as +possible of the idiosyncrasies of the major browsers. Nevertheless, +there are several problems that are associated with the browsers, and +a few that are associated with web servers. Authors and publishers +should recognize that these are not TTH bugs. Font-related +problems are complicated. If you don't need all the gory details, you +might want to read section 13.1 and then skip to +13.3. + +
    +

    +13.1  Accessing Symbol Fonts: Overview

    + + +
    +Many of the most serious difficulties of Mathematics rendering in HTML +are associated with the need for extra symbols. In addition to various +Greek letters and mathematical operators, one needs access to the +glyphs used to build up from parts the large brackets matching the +height of built-up fractions. These symbols are almost universally +present on systems with graphical browsers, which all have a +"Symbol" font, generally based on that made freely available by +Adobe. The problem lies in accessing the font because of +shortcomings in the browsers and the HTML standards that relate to +font use. + +
    +In brief, there are three ways to access the symbol fonts; these will +be described in more detail below. The following table indicates which of +these approaches to accessing the symbol fonts works with which +browser. It also outlines which of the mathematics rendering +improvements via CSS positioning are satisfactory. + +
    + + + + + + + + + + + + + + +
    Symbol Encoding CSS Positioning
    8-bit numeric Adobe Private Unicode 3.2 relative height +compress
    TTH switch -u0-u1-u2 -y2-y1
    Browser:
    MSIE 5.0 Yes No No Yes Buggy
    Mozilla 1.x X Alias/Font Buggy Buggy Yes Yes
    Firefox 1.x X Alias/Font Buggy Buggy Yes Yes
    Firefox 1.x Win Yes Buggy Buggy Yes Yes
    Konqueror 1.9.8Alias No No Yes Yes
    Firefox 3.5 X No Buggy Ugly Yes Yes
    Chrome 4.0 X No Buggy Ugly Yes Yes
    Firefox 3.5 Win Yes No Buggy Yes Yes
    MSIE 8.0 Win Yes No Ugly Yes Yes
    + +
    + +
    +This situation is painful. The 8-bit numeric style symbol access + method, which was the approach originally pioneered by TTH, used to + work with a significant number of browsers but needed additional font + settings for X-window systems. This is the approach that TTH used +to use + by default. However Mozilla and Firefox have systematically moved + towards disabling this method under linux and OSX, presumably because + they consider it not standards-compliant. They have not properly + implemented the unicode 3.2 alternative, because the glyphs they use + for built-up delimiters are incorrectly sized and leave ugly gaps. In + some cases the spacing is completely erroneous. One is left with the + choice between the traditional 8-bit approach, which works well with all + MSWindows systems up to Vista, but does not work with most recent + X-based operating systems; or Unicode 3.2 which works with most + browsers, but is badly buggy in Windows Firefox and ugly everywhere. + +
    +In the interests of an eventual rationalization of this situation, TtH + has changed to make the Unicode 3.2 coding its default from the 2010 + version 3.87 on, but this by no means universally satisfactory. + +
    +

    +13.2  Accessing Symbol Fonts: Details

    + +
    +Prior to HTML4.0, that is, during the major phase of the evolution of +HTML, the default encoding for HTML documents was ISO-8859-1 +(sometimes called ISO Latin-1). The document encoding defines a +mapping between the bytes of the file itself and characters. The +HTML4.0 standard draws a strict (but often confused) distinction +between the document "character set", sometimes referred to more +recently as the character "repertoire"(which refers to all the +characters that might be used in it) and the "document encoding" +(which encodes a subset of the character set by mapping them to +bytes). The confusion is compounded by the entrenched usage of the term +"charset" to refer to the "document encoding" (not the character +set). This usage is presumably a reflection of the prior lack of any +significant distinction between the two. + +
    +Purists since the adoption of HMTL4.0 regard the selection of a glyph +as governed by the process: (byte) code →glyph-name → font-glyph. In this view, even +though the font contains the glyphs in a well defined order, the +glyph is accessed not by its position in the font but by its name. For +example, in a document with ISO-8859-1 encoding, the byte with decimal +value 97 maps to the "latin small letter a" which is accessed from +the font on that basis. On this view, it is not possible, or rather +ought not to be possible, to access the Greek letter alpha by +specifying that the font is Symbol and the byte coding decimal value +is 97, despite the fact that the Greek alpha is indeed in the same +position in the Symbol font as the lower case a in its font. This is +because (the story goes) 97 means "latin small letter a" and the +Symbol font simply does not contain the latin small letter a. + +
    +In practice, of course, most browsers, including Internet Explorer (to +8.x), have not taken so pedantic an approach. In a document that is +encoded in the same order as the fonts on the system, as is the case +for ISO-8859 on systems other than the (old) MacIntosh, the browser maps +code to glyph directly on the basis of numeric position in the +font. Therefore it is perfectly sensible to specify eight-bit code 97 +and Symbol font to obtain alpha. In other words, the browsers treat +the Symbol font as if it were an ISO-8859 font even though, as far as +the glyph names are concerned, it is not. It can be argued, even +within the world-view of standards lawyers, that a document that does +not explicitly specify its encoding (and TTH documents do not) could +be considered to obey its own font encoding or some unspecified +encoding, in which case, bytes ought to be permitted to refer directly +to numeric font positions, in just this fashion, regardless of whether +the font is identified as ISO 8859. But such arguments are usually a +waste of breath. In any case, recent versions of Mozilla and its +derivatives on the Windows operating system will properly render +symbols provided they are told that the DOCTYPE is HTML 4.0, not HTML +4.01. This is the reason why TTH has reverted to giving its +documents this rather out of date DOCTYPE. + +
    +On the X-windows system, a distinction between fonts is provided +directly in the system via the font naming conventions. Mozilla takes +notice of this font allocation by permitting access only to fonts +whose names end 8859-1, for default encoded documents. The symbol font +is not one of those fonts unless additional steps are taken. The +enabling of the symbol font requires specification of some system font +aliases, or installation of a specially encoded Symbol font, which +then ensures that the Symbol font is treated as if it were ISO-8859-1 +encoded. Notice that this type of problem arises for any document that +wants to access more than one language of font. Thus, any document +desiring a mixture of, for example, western and cyrilic characters +would face the same problem. + +
    +To summarise, the symbol font is present on practically every computer +on the planet that runs a graphical browser. Under the MSWindows +operating system, IE to version 8.x, and Mozilla (gecko)-based +browsers treat the symbol font as if it were a numerically encoded +font and compatible with ISO 8859-1 encoding, provided the DOCTYPE is +HTML 4.0 Transitional. Treating the font as such enables the glyphs to be +accessed using either eight-bit codes in just the same way as standard +ASCII characters. This is the way that documents have accessed these +glyphs for years. + +
    +The HTML4.01 standard says that unicode (ISO 10646, also called UCS) is +the character set of HTML, and that the way characters outside the +current document encoding should be accessed is through unicode +points. Unicode is backwardly compatible with ISO 8859-1 in a way that +we need not dwell on. Unicode is supposed to fix all the font problems +that are described here, and with luck eventually it will indeed +help. The problem is that (1) Unicode is enormous, so only a tiny +fraction of it is so far supported, and (2) in its original incarnation +unicode does not even assign points to the parts of large delimiters +that are needed for mathematics. They are present in the new +version of unicode, 3.2, becoming current. However, as the +table above shows, no browser cleanly supports the new unicode +assignments. Mozilla used to support some assignments of points in +unicode's designated "private usage area" to the glyphs we +need. Apparently these assignments have become de-facto standards for +the Adobe Symbol font in typographic circles. No other browser +supports them. They are not and, according to unicode principles, +never will be part of the unicode standard, and appear to be on the +way out. + +
    +The option that mathematics web publishing currently has, then, is + either an approach that works with Windows browsers but which purists + say is not consistent with latest standards, or a representation that + is consistent with the standard but useless with some browsers. It +would be really nice if the browsers would get their act together on +mathematical symbols. + +
    +

    +13.3  Printing

    + + + +
    +In many browsers, the printing fonts are hard coded into the browser +and the font-changing commands are ignored when printing. For that +reason, visitors viewing TTH documents will often not be able to +print readable versions of documents with lots of mathematics. This +problem could, and should, be fixed in the browsers. However, if you +want your readers to be able to print a high-quality paper copy of the +file, then you probably want to make available to them either the +TEX source or a common page-description format such as Postscript or +PDF. Since HTML documents download and display so much faster and +better than these other formats on the screen, TTH's translation +provides the natural medium for people to browse, but not +necessarily the best medium for paper production. + +
    +

    +13.4  Netscape/Mozilla Composer

    + + +Netscape Composer and Mozilla Composer is +too clever for its own good. If you run an HTML document produced by TTH +through Netscape Composer, all sorts of internal translations are +performed that are detrimental to its eventual display. For example, +if you subsequently save the document with the usual encoding set +(Western), the eightbit codes that work with Macs are replaced with +HTML4.0 entities such as [&]ograve; or [&]pound;. This effectively +breaks the document for viewing on Macs because it undoes everything +just explained. Even if you use User-Defined encoding, which prevents +this particular substitution, Composer will rearrange the document in +various ways that it thinks are better, but that make the display of +the document worse. The moral is, don't run TTH documents through +Netscape Composer. + You therefore cannot use the "publish" facility +of Composer. Transfering the document to the server with plain old ftp +will keep it away from Composer's clutches. + +
    +

    +13.5  Other Browser Bugs

    + +
    + +Font changing commands do not propagate from cell to cell of HTML +tables. In rendering equations (using tables) TTH circumvents this +bug (excuse me, feature) at the cost of significant extra effort and +slightly verbose HTML. However, for tables generated by +\halign or \begin{tabular} TTH takes no special steps +to avoid this problem. A change of font face in a cell, for example by +\it will not carry over to the next cell. A document +containing this problem will not pass some HTML validations. It is +prevented if every cell of a TEX table is enclosed in braces and the +required style applied separately to every cell - a serious +annoyance. + +
    + +Tables are incapable of being properly embedded within a line of text. +They generally force a new line. This is quite a significant handicap +when translating in-line material that could use a table. It can be +argued that this behaviour is required by the HTML +standard. Specifically, the <p> element is defined as having +in-line attributes which prevent it from containing any elements +defined as being block type, of which <table> or +actually strictly <td> is one. However, even if you ensure that +text is not inside a <p>, most browsers force a new line. + +
    +

    +13.6  Web server problems

    + + +
    +The HTML files that TTH produces are encoded using the charset +ISO-8859-1, like most web files. In newer linux systems the default +file encoding on the computer is in many cases now UTF-8. For the +characters with codes above 128, this can cause problems with the web +server. The web server may wrongly assume that the HTML file is a +UTF-8-encoded file, and declare this assumption in the http content-type +header that it sends to browsers when they access the file. For +gecko-based browsers, the http content-type declaration overrides any +internal file declaration of the encoding of the file. Consequently, +the browser treats this file as if it is UTF-8 encoded, with the +result that codes higher than 128 are misinterpreted. This is an +inadequacy in the web server (apache is known to behave this way in +some situations). + +
    +There are several options to work around this problem. + +
    +It is possible to convert all files from ISO-8859-1 to UTF-8 encoding, +using a utility called iconv, present on most modern linux +installations. This is not an attractive solution because then when +the files are browsed locally (via file://...) they will display +incorrectly. Locally, the browser does not have the http content-type +declaration to guide (or misguide) it, and it thinks the files are +ISO-8859-1 encoded. But if they've been converted, they are not. + +
    +The better approach seems to be to fix the web server so that it gets +the file content-type right. This can be done on a per-directory basis +by creating a file called .htaccess in the directory. This file +should contain the line: + +
    +  AddType text/html;charset=ISO-8859-1 html
    +
    +
    +This tells the server that all files in this directory and its +subdirectories that have extension html are to be considered of +type HTML and encoded with the ISO-8859-1 charset. + +
    +Unfortunately some web servers are configured not to pay attention to +the .htaccess file. If yours is one, you have to get the web +master to edit the server configuration file +(/etc/httpd/conf/httpd.conf). The lines that read +AllowOverride None must read instead +AllowOverride FileInfo. Alternatively, get the webmaster to +change the line in that configuration file that reads +AddDefaultCharset UTF-8 to read instead + +
    +AddDefaultCharset ISO-8859-1
    +
    +
    + and once the server is restarted all your troubles will be over +without any of those pesky .htaccess files. + +
    +There are other ways of accomplishing the same thing in the web +server, if you are a guru. Information is available at +the + W3C FAQ. + +
    +

    +14  Code Critique

    + +
    +If you think you have found a bug, you can report it to +tth(at)hutchinson.belmont.ma.us (with the usual character +substituted in the email address). You are most likely to get help if +your report is accompanied by the brief section of TEX code that +causes the problem. Let me repeat, in addition to a brief description +of the problem, send the TEX code, preferably a short +section isolating the problem, in a document that can be processed +by TEX. It is the only way for me to establish +what the problem is. But please don't send LATEX2.09 files or files +that do not conform to the (1994) LATEX users' guide. And +please check this TTH manual and especially the FAQ (B) first. + +
    +The code has been compiled and run on Linux, MSDOS, Wind*ws, Open VMS, +and sundry other operating systems. See +http://hutchinson.belmont.ma.us/tth/platform.html. + +
    +

    +15  License

    + +
    +TTH is copyright © Ian Hutchinson, 1997-2011. + +
    +You are hereby freely licensed to use this software under the terms of +the GNU General Public License, version 2, published by the Free +Software Foundation, a copy of which is enclosed in the file +license.txt. + +
    +The software comes WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +
    + +

    +16  Acknowledgements

    + +
    +Many thanks for useful discussions and input to Robert Curtis, Ken +Yap, Paul Gomme, Michael Sanders, Michael Patra, Bryan Anderson, +Wolfram Gloger, Ray Mines, John Murdie, David Johnson, Jonathan +Barron, Michael Hirsch, Jon Nimmo, Alan Flavell, Ron Kumon, Magne +Rudshaug, Rick Mabry, Andrew Trevorrow, Guy Albertelli II, Steve +Schaefer and for bug +reports from others too numerous to mention. + +
    +

    +A  Appendix: Non-Standard TEX Macros

    + +
    +The following macro definitions, although not needed for TTH, will +enable a TEX file that uses the non-standard TTH commands to be +correctly parsed by Plain TEX. + +
    + +
    +\def\hyperlink#1#2{\special{html:<a href="\##1">}#2\special{html:</a>}}
    +  % Incorrect link name in \TeX\ because # can't be passed properly to a special.
    +\def\hypertarget#1#2{\special{html:<a name="#1">}#2\special{html:</a>}}
    +\long\def\tthdump#1{#1} % Do nothing. The following are not done for TtH.
    +\tthdump{%
    +\def\title#1{\bgroup\leftskip 0 pt plus1fill \rightskip 0 pt plus1fill
    +\pretolerance=100000 \lefthyphenmin=20 \righthyphenmin=20
    +\noindent #1 \par\egroup}% Centers a possibly multi-line title.
    + \let\author=\title % Actually smaller font than title in \LaTeX.
    + \input epsf     % PD package defines \epsfbox for figure inclusion
    +  % Macro for http reference inclusion, per hypertex.
    + \def\href#1#2{\special{html:<a href="#1">}#2\special{html:</a>}}
    + \def\urlend#1{#1\endgroup}
    + \def\url{\begingroup \tt 
    +  \catcode`\_=13 % Don't know why this works.
    +  \catcode`\~=11 \catcode`\#=11 \catcode`\^=11 
    +  \catcode`\$=11 \catcode`\&=11 \catcode`\%=11
    +\urlend}% \url for plain \TeX.
    +}
    +
    +
    + +
    +

    +B  Appendix: Frequently Asked Questions

    + + + +
    +

    +B.1  Building and Running TTH

    + +
    + +Why does my compiler crash when compiling TTH?   +
    TTH comes in the form of a single C source file +because it is mostly one very large function which is produced by +flex. It is completely standard C code but the size challenges +compilers' capabilities, especially if you try to optimize using the +-O switch. With gcc under linux it is possible to compile an optimized +version, but optimization hardly affects the speed and reduces the +disk size of the already modest executable only by about +20%. Therefore it is no significant loss to compile without +optimization. Under DOS, even unoptimized compilation can cause DJGPP +to crash if its stack size is less than about 1024k. The fix (using +stubedit on cc1.exe) for this DJGPP bug is described in its FAQ. + +
    + +Why does my TTH executable, which I compiled myself, crash?   +
    Assuming that this is not a problem caused by invalid +TEX, or by you poking around inside the C code, it is probably a +compiler shortcoming. Some default settings of some compilers give +TTH too little stack space and cause it to crash. Most +self-respecting compilers have switches or settings to increase that +space. Try increasing it, or get one of the binary distributions. + +
    + +Why won't TTH run from Program Manager in Wind*ws?  
    +You need a command line. Call up the DOS prompt. If you feel the need +for a drag and drop facility, get TTHgold. + +
    +

    +B.2  [La]TeX constructs TTH does not seem to recognize

    + +
    + +TTH does not recognize tableofcontents, backward +references, listoffigures, ...  
    +Yes it does, see section 6.1, and use the -L switch. + +
    + +TTH does not insert my picture environments.  
    +If picture environment pictures are to be included, conversion to a gif file +is needed. See 6.5. + +
    + +TTH messes up my tabbing environment.  
    +Tabbing is not currently supported. It is alien to the HTML document +mark-up approach. See section 7. + +
    + +Why doesn't \frac work in equations?  
    +It does, but only in LATEX documents because \frac is not a +plain TEX command. The document you are presenting to TTH doubtless +has no \documentclass command and other LATEX blurb at the top. +If you insist on having LATEX commands available in such a document, +you can use the -L switch. But note that other changes in +interpretation (e.g. in footnotes) are implied by using this switch to +tell TTH that this is a LATEX file. + +
    + +Why does TTH not recognize ... command from ... style +package?  
    +Let's be perfectly clear here. TTH does not currently recognize +\usepackage and, with the exception of commands explicitly +mentioned in this manual, does not support any of the zillions +of extensions to LATEX that exist, even if they are part of the +"standard distribution". TTH does support macro definitions, see +section 9.2, and +you might find that if you explicitly \input the style file +that you need it will recognize the macro. However, many LATEX extension packages are written in a complicated manner such that they +depend on changes in catcodes, which TTH does not +support. Therefore no guarantee can be given. This is one reason why +TTH deliberately does not recognize \usepackage. + +
    + +Why does TTH not recognize my ends of lines properly?  
    +If you transfer a file from one operating system to another as a +binary file, the line-end codes are likely to be messed up. They use +different codes on Un*x, DOS, and Mac. Usually TEX is not bothered by +this. TTH is somewhat more sensitive. Use ASCII transfer. + +
    + +Why does TTH complain about my skip, space, ... command?  
    +Dimensions are often inappropriate for HTML. TTH +tries do something sensible with dimension, space, and glue +commands. Usually it is successful. If so, you need do nothing. In +some rare cases, you might see some irrelevant left-over characters +from the dimension command that have to be removed by hand. + +
    + +Can TTH be made to support BibTEX bibliographies?  
    +It already does; see 6.2. If TTH is not finding the .bbl file +even though you used the -L switch, then you probably forgot to +generate it using LATEX and BibTEX, or perhaps it is in the +wrong place. Try using the TTH switch -a. + +
    + +Does TTH support ...?  
    Probably yes if it is part +of LATEX. But if you want a specific additional capability, and find +that it is not supported, why not write a TeX macro to support it and +translate it into suitable HTML using the functions described in this +manual. Then you will have your support and if you send it to +tth(at)hutchinson.belmont.ma.us (with the usual character +substituted in the email address), it may be possible to include it +into the standard TTH executable and you'll have helped all the +other users of TTH. + +
    +

    +B.3  HTML output that does not satisfy

    + +
    + + +Why doesn't TTH automatically generate   <head> +and <body> HTML tags?
    + First, the <head> and +<body> tags are optional in the HTML specification. There is +no need for TTH to generate them to statisfy the standard. Second, TEX +and LATEX files do not have a corresponding structural division into +separate head and body sections. It might seem as if LATEX does, with +\begin{document} being the divider, but there are many cases +where this mapping is incorrect. For example title may not be defined +until after \begin{document}, corresponding to the HTML body +section, whereas it must be in the head section. Finally, if TTH +automatically entered <head> and <body> tags, then the +thoughtful author would not be able to enter them where they ought to +be by using, for example:
    +%%tth: \begin{html} <head> \end{html}
    +Therefore, the choice not to produce these tags automatically +is a deliberate one based on a careful consideration of the advantages +and disadvantages. An author can always adjust their TEX code to +include them, if they wish to be pedantic about the division. See also +the section on HTML style [12.2]. + +
    + +Why don't TEX commands get expanded in the HTML title?  
    +In HTML, the stuff that goes in the <title>...</title> of a +page is not permitted by the specification to contain HTML tags - +things in angle brackets - and tags are not interpreted. If an +equation or some other command that TTH translates into HTML +formatting is in the title, then the title will break when +expanded. Therefore TTH deals with commands differently in the +title. By default it leaves them in the TEX form that they started +as, since that is about as easy to read as any unformatted +mathematics. Using the -n? switch enables control of the precise +behaviour. See 3. + +
    + +How do I make TTH border my tabular table?  
    +TTH looks in the format string argument of the begin{tabular} +environment and if it begins with a | (vertical bar) then the HTML +table is bordered. + +
    + +TTH inserts the title and author even without the +maketitle command  
    +True, TTH inserts them when you define them. This gives you a chance +to fine-tune the presentation if you wish. + +
    + +What is this strange result using \dot +\hat \tilde \frac +\vec ... in in-line equations?  
    +Neither over and under accents nor built-up constructs such as +fractions can be rendered in-line (i.e. in a textstyle equation +produced by $ ... $) in HTML. Therefore, TTH outputs something that is +not elegant but reasonably indicates the original +intention. Additional brackets are inserted to ensure that fractions +are unambiguous. TTH will render all these built-up constructs +correctly in a display equation. See also 5.2 and +5.3 for alternatives. + + +
    + +Why does the large square root sign look so ugly?  
    +There are some things that browser symbol fonts can't do well. + +
    + +Why does a dagger sign come out strange?  
    +Browsers don't generally have a dagger sign in their fonts. TTH uses a +kludge. + +
    + +The file I "published" using Netscape Composer looks +messed up when viewed on a Mac.  
    +Don't use Composer on TTH documents. See section 13.4. + +
    + +Why does TTH mess up my \fbox, +minipage, etc?  
    The whole concept of a "box" is not really +translatable into HTML. TTH tries to mimic the box using tables. But +in some cases, especially in equations, it can't cope. + +
    + +How do I get caligraphic fonts, {\cal E}, AMS +fonts, etc?  
    +You can't because browsers don't have access to them. TTH can only +support fonts that are available on the browsers that eventually visit +the page. By default TTH tells the browser to render caligraphic as +italic helvetica font. You may, if you wish, define \cal to be +something different, such as %%tth:\def\cal{\it\color{red}}. + +
    + +Why does TTH turn double-quotes into an accent +instead of quotes?  
    In basic TEX the double quotes character +" is not defined, and hence may do anything that the local +installation feels like. Double quotes must be inserted by using two +quote " or back-quote " characters. In German TEX implementations, +the double-quotes character is used to provide the umlaut over accent +and for some other special needs. TTH supports these German uses in +some appropriate contexts. English speakers should adopt proper TEX +quote usage. There is essentially never a situation in LATEX where +it is advisable to use a double quote to represent itself outside of a +verbatim section (where it will naturally be treated literally). In +Plain TEX you might need it. If so, \char`" is an +absolutely fool-proof way to insert it. Here it is:". +You can also just enclose it in braces thus:{"}. + +
    + +Why doesn't TtH output use < p > for paragraphs?  
    + For the first years of its existence it +did. However, standards of HTML interpretation have grown tighter to +the point where <p> is a great liability. In XHTML (the latest +HTML standard) <p> is a container element. It must have a +closing </p>; so that every paragraph must be its own +group. This compulsion is contrary to TEX usage. Therefore TtH +changed to dispense completely with any use of <p>, using an +empty <div> with an associated CSS style instead. This has the +significant benefit of ensuring that for standards-compliant browsers, +font changes propagate even into the cells of tables. (NS4 is not +compliant, Mozilla, NS7 etc are, in this respect.) + +
    +

    +B.4  How to write TEX designed for Web publishing

    + +
    + +How do I insert code that is used only by TTH, not TEX?  
    +Use %%tth: followed by the material you wish to pass to TTH. +TEX omits this line as a comment. Alternatively, insert \newif\iftth +at the top of your document, then use a conditional: +\iftth \TtH\ material \fi. TtH recognizes \iftth as a +special `if' that is always true, whereas to TEX it is simply a +new `if', which by default is false when defined. + +
    + +How do I insert HTML tags into my file without TEX knowing?  
    +Use %%tth: then on this line put +\begin{html} tags \end{html}. Do not try to continue this +html onto a second line with a second %%tth: before the +\end{html} because the html environment will output the +%%tth:, which it probably not what you want. Another way to +pass codes directly to the output is the \special{html: ... } +command. Do +not use \begin{verbatim} to pass HTML tags. It will +convert the greater than and less than signs to make them appear in +the display and not be interpreted as tags. + +
    + +How do I insert code that is used only by TEX, not TTH?  
    +Insert \newif\iftth at the top of the file and then use +the conditional constr +uction: + +
    \iftth\beginsection{The \TtH\ Header}\par\else\beginsection{The \TeX\ Header}\fi
    +
    +
    +The `else' clause may also be used with a blank first clause, of +course: \iftth\else ... \fi. +Alternatively, insert the definition \def\tthdump#1{#1} at the +top of the file and then use \tthdump{\TeX\ material} to pass +stuff only to TEX. The command \tthdump is an internal command +for TTH (which cannot be redefined) that simply discards its argument. +Thus, for example, the following will output +alternate versions from TEX and TTH. +
    +\def\tthdump#1{#1}
    +%%tth:\begin{html}<H1>The HTML Header</H1>\end{html}
    +\tthdump{\beginsection{The \TeX\ Header}\par}
    +
    +
    + +
    + +How do I include the style file ...sty for the TEX paper I prepared for... journal?  
    + If you must, put it in the same directory as your .tex file and see + if it works. If it crashes, you may have to write a simpler one. + Remove the old style file. Look at your TEX file, or the + TTH messages telling you which commands are unknown. Decide which of + the journal's specific commands or environments you used or + need. Write a little style file that defines them to do something + simple and sensible, or translates them into standard LATEX +commands. Or ask the journal to provide such a style file! If you are + a journal publisher, distribute your simplified style file to your + authors. + +
    + +In bordered tables I want an empty cell to look +empty. How do I make TTH do that?  
    +HTML tables by default "fill in" an empty cell, so that it gives the +visual impression of being absent. This is sometimes useful, so TTH +does not prevent it. If you want it to look like an empty cell, put a +non-break space in it by &~& in the TEX. + +
    + +How do I include into a macro I am defining a # sign +for an HTML reference?  
    +When you do \special{html:<a href="#reference">} +TTH just puts the html tag in the output verbatim. TEX does essentially the +same for its dvi file and the dvi processor later may or may not complain +about not understanding it; but generally it is ignored. However if you try +to define a macro like +\def\localhref{\special{html:<a href="#reference">}} then TEX +will complain as follows: +
    +! Illegal parameter number in definition of \localref.
    +<to be read again> 
    +                   r
    +l.3 \def\localref{\special{html:<a href="#r
    +                                            eference">}}
    +?
    +
    This problem is caused by TEX's syntax analysis of +the contents of the definition. One solution is to hide the +definition from TEX using %%tth:. An alternative definition +that avoids this problem must also be included for TEX's benefit, for +example thus: +
    +\def\tthdump#1{#1}
    +\tthdump{\edef\localref{[a hyperreference]}}
    +%%tth:\def\localhref{\special{html:<a href="#reference">}}
    +
    +
    +Alternatively, use \# in place of # in the hypertex +reference. TTH specifically recognizes this as a literal and does +appropriate translation. For example + +
    +\def\localhref#1#2{\special{html:<a href="\##1">}#2\special{html:</a>}}
    +
    +
    +will use its first parameter as a local anchor reference, preceded by #, +and its second as the text of the anchor. The sequences \% and +\\ are also treated as escaped literals, inserting their second +character, inside a raw html section. + +
    + +How do I construct a macro to take as a single +argument a URL, which may contain special TEX characters like   +_ ~ @ & +etc, that makes TTH construct a hyperreference but TEX just enter it in the +text?
    Use the built-in command \url{...}. This behaves in +essentially the same way as the command defined in LATEX's +url.sty. The reference will appear verbatim in the text (in teletype +font). + +
    +

    +B.5  Formerly Frequently Asked Now Rarely Asked

    + +
    + +Why does TTH only manage to input a limited number +of files, perhaps 15 or so, then report "file not found" after +that?  
    +This is a limitation of the operating system. It has only a limited +number of file handles available. In MSDOS this number is set by a command +FILES=... in the operating system configuration file +config.sys. It needs to be set to a number large enough to +accommodate all the input or include files that your TEX document +uses, plus whatever other file overhead the operating system is +using. Under OS/2 a similar limitation exists and is avoided by +increasing the number of allowable file handles in the emx run-time +system (e.g. SET EMXOPT=-c -h400 in config.sys). + +
    + +TTH seems not to work on WinNT when converting +included PostScript   files, even though my ps2gif program works fine +from the command line. What is the problem?
    +The problem is not TTH. It appears to be an operating system +problem. The batch program ps2gif is breaking for some strange reason +when called from TTH. See footnote 5. + +
    + +TTH does not recognize evironment ... even though it +claims to.  
    +Probably you left a spurious space, e.g. \begin {enumerate} +between the \begin and the following brace. TTH occasionally won't +accept that, even though LATEX does. It is bad style. + +
    + + +

    Index (showing section)

    + +

    +
    +
    +
    -a switch, 6.1, 6.2, + 6.5, B.2
    +
    +
    auxiliary files, 6.1

    +
    +
    BibTEX, 6.2
    +
    +
    bibtex, B.2
    +
    +
    block level elements, 12.2
    +
    +
    <body>, B.3
    +
    +
    bugs, 14.0

    +
    +
    calligraphic, B.3
    +
    +
    catcodes, 9.1
    +
    +
    CGI script, 3.0
    +
    +
    character set, 13.2
    +
    +
    color, 10.0
    +
    +
    colordvi, 10.0
    +
    +
    commands
    +
         LATEX supported, + 1.2
    +
         alternative files, + 9.2
    +
         handling unsupported, + 1.4
    +
         redefining, 9.4
    +
         renaming, 9.4
    +
         unknown, 9.3
    +
         unsupported, 1.4
    +
    +
    compile, 2.0
    +
    +
    Composer, B.3
    +
    +
    compression
    +
         vertical, 5.3
    +
    +
    conditionals, see \if
    +
    +
    CSS, 5.3
    +

    +
    +
    +
    dagger, B.3
    +
    +
    definitions
    +
         delimited, 9.1
    +
    +
    double-quotes, B.3

    +
    +
    encoding, 13.2
    +
    +
    environment
    +
         not recognized, + B.5
    +
    +
    environments, 1.2
    +
    +
    equations
    +
         textstyle, see in-line equations, overaccents
    +
    +
    Error, 4.0
    +
    +
    extensions to LATEX, B.2

    +
    +
    fbox, B.3
    +
    +
    file not found, B.5
    +
    +
    FILES, B.5
    +
    +
    flex, 2.0
    +
    +
    font
    +
         face="symbol", 5.1
    +
    +
    fonts, 1.1
    +
         accessing, 13.0
    +
         details, 13.2
    +
    +
    footnotes, 9.4
    +
    +
    frac command
    +
         see switch -L, + B.2
    +

    +
    +
    +
    gif, 6.4
    +
    +
    glossary, 6.3
    +
    +
    graphics files, 6.4

    +
    +
    \halign, 7.2
    +
    +
    hash sign, B.4
    +
    +
    <head>, B.3
    +
    +
    \headline, 1.1
    +
    +
    HTML
    +
         3.2, 5.1
    +
         4.0, 5.1
    +
         insertion, 1.3
    +
         tags, B.4

    +
    +
    icons, 6.4
    +
    +
    \if, 1.1, 9.1
    +
    +
    iftth, B.4
    +
    +
    in-line equations
    +
         arrays, 5.2
    +
         built-up display, + 5.2
    +
         fractions, 5.2
    +
         overaccents, + 5.2
    +
    +
    \includegraphics, 6.4
    +
    +
    index
    +
         layout in one or two columns and the equivalent page length, + 6.3
    +
    +
    indexing, 6.3
    +
    +
    inline elements, 12.2
    +
    +
    \input
    +
         "file not found" error, B.5
    +
         disabling, 9.2
    +
         TEXINPUTS, 9.2
    +
         TTHINPUTS, 9.2
    +
    +
    italic
    +
         equation style, 5.1
    +

    +
    +
    +
    jpeg, 6.4

    +
    +
    LATEX extension packages, B.2
    +
    +
    LaTeX2HTML
    +
         differences, 5.1, + 6.1
    +
    +
    license, 15.0
    +
    +
    limitations, 5.2
    +
    +
    line-ends, B.2
    +
    +
    longtable, 7.3

    +
    +
    macro files, 9.2
    +
    +
    macros
    +
         alternate, 9.2
    +
         special use, A.0
    +
    +
    makeindex, 6.3
    +
    +
    mathematics, 1.1
    +
         layout style, 5.3
    +
    +
    messages, 4.0

    +
    +
    Netscape/Mozilla Composer, + 13.4

    +
    +
    <p>, B.3
    +
    +
    picture environment, 6.5
    +
    +
    portability, 6.1
    +
    +
    postscript, 6.4
    +
    +
    printing, 13.3
    +
    +
    ps2gif, 6.4
    +
    +
    ps2png, 6.4
    +
    +
    publish
    +
         through composer disallowed, + 13.4
    +

    +
    +
    +
    references
    +
         forward, 6.1
    +
    +
    \rm, 1.1

    +
    +
    skip space and dimension commands, + B.2
    +
    +
    spacing, 5.1
    +
    +
    square root, B.3
    +
    +
    stderr, 3.0
    +
    +
    stdin, 3.0
    +
    +
    stdout, 3.0
    +
    +
    Style Sheets, 5.3
    +
    +
    styles, B.4
    +
    +
    support, B.2
    +
    +
    switches, 6.2, B.2
    +
         -L, 3.0, + 6.1, + B.2
    +
         -a, 6.1, + 6.5
    +
         -j, 6.3
    +
         -u, 13.1
    +
         -y1, 5.3, + 13.1
    +
         -y2, 5.3, + 13.1
    +
         TTH, 3.0
    +
    +
    symbol font
    +
         accessing, 13.0
    +

    +
    +
    +
    Table of Contents
    +
         Index entry, + 6.3
    +
    +
    tables
    +
         bordered cells filled in, + B.4
    +
    +
    TEX-only code, B.4
    +
    +
    texinputs path, 9.2
    +
    +
    title
    +
         HTML construction, + 12.1
    +
         TeX commands not expanded in, + B.3
    +
    +
    TTH-only code, B.4

    +
    +
    unknown commands, see commands, unknown
    +
    +
    URL, B.4
    +
    +
    \usepackage, B.2
    +
    +
    UTF-8, 13.6

    +
    +
    warning, 4.0
    +
    +
    web-server, 13.6
    +
    +
    WinNT, B.5
    +
    + + +
    +

    Footnotes:

    + +
    +1The problem with \rm in text is that HTML +has no < rm > tag, and relies on cancelling all previous (e.g.) + < i > or < b > tags. By default (using style -y1) +TTH uses Cascading Style Sheets to solve this problem. However not +all older browsers support CSS and even in those that do, the user can +turn off the CSS support. The best solution is to avoid +\rm by using proper grouping of non-roman text. (In +equations \rm is essential, but TTH has a +work-around in equations.) +
    +2Conditionals \if + and \ifx are not 100% TEX compatible for cases +where they refer to internal TEX commands because TTH internals are +not identical. Catcodes are also unknown to TTH. +
    +3See appendix for TEX macros supporting these commands +
    +4The PNG graphics file format is an improved +replacement for the GIF standard. Netscape has built in rendering for +PNG. The GIF standard is plagued with legal problems related to a +ridiculous patent on the type of file compression it uses. +
    +5May 1999 reports indicated that there is a +batch program in circulation bearing the comment ":#batchified by +cschenk@snafu.de" that tries to implement the functionality of ps2gif +and gives errors on WinNT when called by TTH but not when called from +the command line. I have not had recent reports of problems, so I +think this problem has been fixed. +
    +6The alignment argument of the +math array environment was ignored in TTH versions earlier than 2.20 +but is now honored. +
    +7See the file colordvi.tex for a list of +the named colors. +
    +8It proves to be + better to specify 4.0 as the HTML Doctype because on some operating + systems symbol font rendering is not honored for 4.01 documents. +


    File translated from +TEX +by +TTH, +version 4.04.
    On 22 Jun 2014, 18:00.
    + diff --git a/code-postprocessing/bbob_pproc/tth_C/tthsplit.c b/code-postprocessing/bbob_pproc/tth_C/tthsplit.c new file mode 100644 index 000000000..72d590faa --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/tthsplit.c @@ -0,0 +1,60 @@ +/* +Split a tth-produced MIME file into its consituent files. +Copyright 1997 I.H.Hutchinson. +*/ + +#define LINELEN 256 +#include +#include +main(argc,argv) +int argc; +char *argv[]; +{ +int slen; +char *ch,*ch2; +char bound[LINELEN]={0}; +char buff[LINELEN]={0}; +FILE *file; +if(argc > 1){ + printf( "Usage: tthsplit Date: Tue, 12 Jul 2016 14:09:24 +0200 Subject: [PATCH 286/446] Update 'verify-postprocessing' test for Mac --- code-postprocessing/bbob_pproc/preparehtml.py | 6 +- code-postprocessing/bbob_pproc/tth_C/CHANGES | 1303 + code-postprocessing/bbob_pproc/tth_C/INSTALL | 7 + .../bbob_pproc/tth_C/latex2gif | 19 + .../bbob_pproc/tth_C/license.txt | 17 + code-postprocessing/bbob_pproc/tth_C/ps2gif | 18 + code-postprocessing/bbob_pproc/tth_C/ps2png | 20 + code-postprocessing/bbob_pproc/tth_C/tth | Bin 0 -> 716960 bytes code-postprocessing/bbob_pproc/tth_C/tth.1 | 362 + code-postprocessing/bbob_pproc/tth_C/tth.c | 28980 ++++++++++++++++ code-postprocessing/bbob_pproc/tth_C/tth.gif | Bin 0 -> 7341 bytes .../bbob_pproc/tth_C/tth_manual.html | 3123 ++ .../bbob_pproc/tth_C/tthsplit.c | 60 + 13 files changed, 33914 insertions(+), 1 deletion(-) create mode 100644 code-postprocessing/bbob_pproc/tth_C/CHANGES create mode 100644 code-postprocessing/bbob_pproc/tth_C/INSTALL create mode 100644 code-postprocessing/bbob_pproc/tth_C/latex2gif create mode 100644 code-postprocessing/bbob_pproc/tth_C/license.txt create mode 100644 code-postprocessing/bbob_pproc/tth_C/ps2gif create mode 100644 code-postprocessing/bbob_pproc/tth_C/ps2png create mode 100755 code-postprocessing/bbob_pproc/tth_C/tth create mode 100644 code-postprocessing/bbob_pproc/tth_C/tth.1 create mode 100644 code-postprocessing/bbob_pproc/tth_C/tth.c create mode 100644 code-postprocessing/bbob_pproc/tth_C/tth.gif create mode 100644 code-postprocessing/bbob_pproc/tth_C/tth_manual.html create mode 100644 code-postprocessing/bbob_pproc/tth_C/tthsplit.c diff --git a/code-postprocessing/bbob_pproc/preparehtml.py b/code-postprocessing/bbob_pproc/preparehtml.py index b66233da1..23586d17a 100644 --- a/code-postprocessing/bbob_pproc/preparehtml.py +++ b/code-postprocessing/bbob_pproc/preparehtml.py @@ -41,7 +41,11 @@ def prepare_html(texFile): print('pdflatex done') - tthFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tth\\tth.exe') + if ('win32' in sys.platform): + tthFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tth\\tth.exe') + else: + tthFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tth_C/tth') + args = "%s %s" % (tthFile, texFile) subprocess.call(args.split(), stdout=FNULL, stderr=FNULL, shell=False) diff --git a/code-postprocessing/bbob_pproc/tth_C/CHANGES b/code-postprocessing/bbob_pproc/tth_C/CHANGES new file mode 100644 index 000000000..525705478 --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/CHANGES @@ -0,0 +1,1303 @@ +Version 4.07 +____________ +Fix the tthverbatim command so it can be used as planned to end environments. + +Version 4.07 +____________ +Add Polish characters (from package fontenc} to those recognized by default. + +Version 4.06 +____________ +Implement \tthverbatim{} command. + +Version 4.05 +____________ +Reimplement mathml bold as mathvariant. Implement \bm as bold-italic. +Make environment abstract redefinable. +Add class to citation, citeref. + +Version 4.04 +____________ +Fix bug in \not= when inside \edef. +Fix bug in refs.xml reference while splitting. + +Version 4.03 +____________ +Make former -w4 html style of font size changes the default. +Now -w4 turns it off. +Replace with (mostly) and appropriate styles. +Fix bug with big /. +Fix bug with \index entries in footnotes. +Change to to satisfy xhtml 1.1. + +Version 4.02 +____________ +Fix order of

    in chapter/section headers to work around kindlegen bug. +Fix index links not to include a new line, which breaks spacing. +Fix xhtml DTD reference. +Various fixes to improve XHTML conformity. +Remove unallowed characters from automatically generated name attributes. +Prevent \item[] from causing a standard violation in xhtml. +Fix ampersands in URLs. Need to appear as $amp; even in the href. +Make
    into
    ... +Make one giant
    (because strict does not allow text outside + of containers). +Prevent multiple citations from generating multiple anchors with same name. +Differentiate anchors from multiple identical index entries. +Remove compact attributes from
    no longer honored or valid. +Remove width attributes from index and use instead. + +Version 4.01 Release of Full Public Version of Lex Source +_________________________________________________________ +Release under the GPL2. Adjust some readme and other files accordingly. + +Version 4.00 Release of Full Public Version of Lex Source +_________________________________________________________ + 5 Dec 2010 + +Changes between versions 3.88 and 3.89 +______________________________________ +Fix bug in unoptimized version handling newcommand definitions. + +Changes between versions 3.87 and 3.88 +______________________________________ +Fix bug in $$A_\textrm{blah}$$ parsing. + +Changes between versions 3.86 and 3.87 +______________________________________ +Change unicode coding of varphi and varepsilon to accommodate the +inconsistent unicode glyphs. +Make -u2 the default tth coding. +Make -y3 the default compression. I.e. use inline over accents. + +Changes between versions 3.85 and 3.86 +______________________________________ +Fix ifcase to support \else and nesting. +Implement \value. 12 Sep 09 + +Changes between versions 3.84 and 3.85 +______________________________________ +Make unicode hbar the default. +Add align="left" to tabular td even when it is formally unnecessary + to work around IE6.0 bug. + +Changes between versions 3.83 and 3.84 +______________________________________ +Add support for newcommand*, renewcommand* providecommand* + +Changes between versions 3.82 and 3.83 +______________________________________ +Fix segfault risks in macarg and related states. +Fix \url to allow % characters in url. 6 Sep 08. + +Changes between versions 3.81 and 3.82 +______________________________________ +Fix utf-8 bugs in bracket encoding. +Fix ifx bug. + +Changes between versions 3.80 and 3.81 +______________________________________ +Adjust flex source to accommodate bugs in new versions of flex (>2.5.4a) +Should be no changes to behaviour. 3 Jun 08. + +Changes between versions 3.79 and 3.80 +______________________________________ +Define an null AtEndDocument in latex to silence hyperref error messages. + +Changes between versions 3.78 and 3.79 +______________________________________ +Fix escaping of # before a digit when in parameter substitution. + +Changes between versions 3.77 and 3.78 +______________________________________ +Fix \hyperref incorrectly escaping #. + +Changes between versions 3.76 and 3.77 +______________________________________ +TtH license changed to allow free use, even commercial. + +Changes between versions 3.75 and 3.76 +______________________________________ +Fix ignoring of %%tth: before LaTeX \item. 31 Aug 06 + +Changes between versions 3.74 and 3.75 +______________________________________ +Make fatal error exits more systematic. +Implement orderly termination at return value in tthfunc. + +Changes between versions 3.73 and 3.74 +______________________________________ +Fix unembraced $^\the\counter$ bug. 1 Apr 06. + +Changes between versions 3.72 and 3.73 +______________________________________ +Fix omitted embracing of complex expressions in in-line fractions when using +unicode, arising from TTH_COMPLEX inadequate definition. 23 Mar 06. + +Changes between versions 3.71 and 3.72 +______________________________________ +Implement -i switch for ttm to force even multicharacter sequences to be +italic in mathml. 27 Dec 05. + +Changes between versions 3.70 and 3.71 +______________________________________ +19 Nov 05 Accept (ghastly style) space between accent and character. + +Changes between versions 3.69 and 3.70 +______________________________________ +Revert to HTML4.0 DOCTYPE by default because gecko is reported then to +give proper symbols on windows platforms. +Fix charset meta declaration between XML and HTML again: fell out. + +Changes between versions 3.68 and 3.69 +______________________________________ +23 Aug 2005 Fix noalign when it occurs in array in equation. +Fix problem with charset meta declaration between XML and HTML. + +Changes between versions 3.67 and 3.68 +______________________________________ +30 May 2005. Add a meta declaration of charset for -u0 (HTML) versions. +This is necessitated by increasing assumption that documents are utf-8 +(by default) by modern browsers and file systems. + +Changes between versions 3.66 and 3.67 +______________________________________ +Make /,|, vertical arrows, langl and rangl non-stretchy by default. (MathML) + +Changes between versions 3.65 and 3.66 +______________________________________ +Make .xml the default file extension for MathML (ttm). +Improve accuracy of ttm_manual. + +Changes between versions 3.64 and 3.65 +______________________________________ +Make verb[atim] translate spaces as  . + +Changes between versions 3.63 and 3.64 +______________________________________ +Fix bug with @ used as an identifier in equations with subscripts. +Fix infinite loop with null or improper alignment arguments. + +Changes between versions 3.62 and 3.63 +______________________________________ +Fix bug in \prod. (MathML) +Fix \nolimits bugs in MathML. +Fix \iff bug in MathML. + +Changes between versions 3.61 and 3.62 +______________________________________ +Fix bug in MathML with nested sub&supscripts. + +Changes between versions 3.60 and 3.61 +______________________________________ +Fix bug in e.g. \}^n_{i=1} handling of subdefer in \} \{ etc. Mathml only. +Fix bug in \left(^U_D by adding subdefer. Mathml. + +Changes between versions 3.59 and 3.60 +______________________________________ +Fix problem with dimensions mm and ex. + +Changes between versions 3.58 and 3.59 +______________________________________ +The changes in 3.58 probably caused more problems than they fixed, +especially with \multicolumn cases. Take out most of the changes till +they can be considered more carefully. + +Changes between versions 3.57 and 3.58 +______________________________________ +Implement implied grouping for each cell of a matrix or tabular. +This should fix an number of problems with e.g. \vbox in \halign +and setting of fonts within cells giving xml parse errors. + +Changes between versions 3.56 and 3.57 +______________________________________ +Discard \noindent silently in equations (can occur in \noaligns). +Recognize \crcr and \multispan in \matrix. +Allow silencing unknown command warnings via -v32768 + +Changes between versions 3.55 and 3.56 +______________________________________ +Fix \noalign. Avoids some situations with negative closure count. +Fix internal command recognition tth_ errors in \edefs and \setboxes. + +Changes between versions 3.54 and 3.55 +______________________________________ +Fix obscure bug involving \vbox{} in \halign. (remove \\cr). + +Changes between versions 3.53 and 3.54 +______________________________________ +Fix further scanner push-back problems, hopefully for good. +Prevent the appearance of extra space in e.g. $^1$ in HTML (not MathML). + +Changes between versions 3.52 and 3.53 +______________________________________ +Improve comment handling between \items to prevent extra space. +spacing independent of -w switch. +Fix syntax of \buildrel. + +Changes between versions 3.51 and 3.52 +______________________________________ +Fix scanner push-back error arising from "Special Inline" equation code. + +Changes between versions 3.50 and 3.51 +______________________________________ +Fix broken footnotes inside equations in MathML. +Fix optional arguments in itemize/enumerate that do [{[blah]}]. +Define tabularnewline=\\ +Fix improper grouping arising in paragraph and subparagraph. +Fix noalign in tth to avoid improper grouping. +Improve title checking state to avoid many improper tags in the head. +Most of these are for using strict XHTML. + +Changes between versions 3.49 and 3.50 +______________________________________ +Fix \delta non-recognition due to typing. +Improve boldmath handling in mathml. + +Changes between versions 3.48 and 3.49 +______________________________________ +Fix \textsf and similar constructs in mathml. + +Changes between versions 3.47 and 3.48 +______________________________________ +Fix some title generation problems for xml compatibility. + +Changes between versions 3.45 and 3.47 +______________________________________ +Version 3.45 had serious bugs in matrix and eqalign code. Don't use it. +Fix those bugs (I hope!) +Infrastructure changes affecting the code for \choose, \sqrt, \textboxes, +matrices, and other active concepts. + + +Changes between versions 3.44 and 3.45 +______________________________________ +Fix Mathml syntax problem with textboxes. +Fix plain tex footnote in equations to obey xml syntax. +Fix double subscripting of operators MathML syntax problem. + +Changes between versions 3.43 and 3.44 +______________________________________ +Try again on the matrix/eqalign code to fix both simultaneously. + +Changes between versions 3.42 and 3.43 +______________________________________ +Fix line-end error when \overline starts a line. + +Changes between versions 3.41 and 3.42 +______________________________________ +Recognize \displaylines and \leqalignno as synonyms for \eqalign(no). +Make | in text mode give - +Implement \acute \i. +Fix a corruption of \matrix code that arose before version 3.37. + +Changes between versions 3.40 and 3.41 +______________________________________ +Restore some cellpadding to space out major equation terms better. +Remove additional space at start of numerators arising from alignment fix. + +Changes between versions 3.39 and 3.40 +______________________________________ +Change file extension for makeindex style to .tms to avoid overwriting. +Ensure paragraph style sheet is included in split files. + +Changes between versions 3.38 and 3.39 +______________________________________ +Fix XHTML incompatibility/standard violation in equalign and eqnarray. + +Changes between versions 3.37 and 3.38 +______________________________________ +Fix \index{...} to grab its whole argument even if it contains (e.g.) %. + +Changes between versions 3.36 and 3.37 +______________________________________ +Fix a bug in \hsize during edefs, setboxes etc. + +Changes between versions 3.35 and 3.36 +______________________________________ +Recognize a number of additional operators and symbols in MathML. + +Changes between versions 3.34 and 3.35 +______________________________________ +Fix ttm not to use mrow when using horizontally stretchy constructs. +Fix some other mrow enclosure logic. +Change DOCTYPE of mathml output to refer to mathml, hence enabling entites. + +Changes between versions 3.33 and 3.34 +______________________________________ +Use some alternate MathML entities for ones that Mozilla fails to recognize +Change DOCTYPE to refer to 4.01 by default to switch off quirks mode in Mozilla +Introduce writing style -w4 to use CSS to change sizes. + This improves the formal standard-compliance, but not rendering much. +Use for sub/supscripts on large symbols for compatibility. +Add cellpadding and cellspacing=0 in several places: improves layout. +Adjust height of stretched delimiters. +Fix \lefteq bug in html and mathml. + +Changes between versions 3.32 and 3.33 +______________________________________ +Support \valign with a single row. +Fix bug in hsize of a vbox. + +Changes between versions 3.31 and 3.32 +______________________________________ +Fix input filenames or comments at end of file with no new line. +Report unknown commands or dimensions only the first time. +Define floatingfigure environment. +Reduced verbosity of figure conversion/inclusion messages. + +Changes between versions 3.30 and 3.31 +______________________________________ +Accommodate graphics when a pdf file or even no source ps/pdf exists. + +Changes between versions 3.22 and 3.30 +______________________________________ +Make the removal of

    permanent. +Implement \newdimen +Implement advancing of dimensions. +Cope with expansion of macros when searching for counters/numbers/dimensions. +Update the built-in help texts. +Output http type message rationally with -c switch. +Explicitly discard footlines. +Add hrules to index for visual improvement. +Improve layout of \eqnarray etc. +Make citet etc work in footnotes. + +Changes between versions 3.21 and 3.22 +______________________________________ +Fix tag nesting error in index from \indexspace +Change -w2 handling of paragraphs to improve font handling. +Remove commenting of -w2 stylesheet to prevent XML browsers ignoring it. + +Changes between versions 3.20 and 3.21 +______________________________________ +Fix bug in verbatiminput. +Fix bug in \itemsep. + +Changes between versions 3.13 and 3.20 +______________________________________ +Include tth-gui with TtHgold Windows version. +Change Windows version compilation to mingw cross-compiler. +Move split page links NEXT and PREVIOUS to right hand side of page. + + +Changes between versions 3.12 and 3.13 +______________________________________ +Add displaystyle to MathML for rendering improvements. +TtM fixes of unmatched underover tags. + +Changes between versions 3.11 and 3.12 +______________________________________ +Add mathml mstyle displaystyle="true" to equations. +Fix mathml munderover termination bug. + +Changes between versions 3.11 and 3.12 +______________________________________ +Fix problem with multiple-level mbox inside textstyle equation. +Fix erroneous columnalign=0 in ttm. + +Changes between versions 3.10 and 3.11 +______________________________________ +Fix obscure bug with conditionals in math arrays. +Fix hbox bug introduced at 3.09. + +Changes between versions 3.09 and 3.10 +______________________________________ +Fix mathml bug in limited operators introduced by null fix in 3.07 + +Changes between versions 3.08 and 3.09 +______________________________________ +Improve standard validity of lists. +Improve the box behaviour of \includegraphics. +Fix bugs in extension handling of figure names. +Improve handling of \hsize changes in \hbox and \vbox. + +Changes between versions 3.07 and 3.08 +______________________________________ +Implement improved HTML title interpretation and -n switch. + +Changes between versions 3.06 and 3.07 +______________________________________ +Reimplement file \input name acquisition to allow macro expansion in the name. +Explicitly recognize \jobname. +Correct colspan reference in TtM. +Enable \cite{} to contain spaces (LaTeX permits it, but it's daft). +Fix null mrow for constructs like {}_i in MathML. + +Changes between versions 3.05 and 3.06 +______________________________________ +Remove the from -u1 and -u2 char encoding cases. +Implement -pNULL as a switch preventing \input or \include. + +Changes between versions 3.04 and 3.05 +______________________________________ +Inprove compatibility of \href and \url with URLs containing %. +Change tthnatbib.sty name to tthntbib.sty to avoid 8.3 length truncation. +Prevent buffer overflow in -p switch argument handling. +Fix \& bug in equations. +Improve title behaviour when LaTeX has e.g. \date before \title. + +Changes between versions 3.03 and 3.04 +______________________________________ +Improve makeindex operation, avoiding file overlap with latex. +Define \glossary to be equivalent to \index. + +Changes between versions 3.02 and 3.03 +______________________________________ +Implement renewenvironment as newenvironment with a warning. + +Changes between versions 3.01 and 3.02 +______________________________________ +Fix \\end {...} bad style. +Fix MathML problem with embraced single characters and sub/super scripts. +Implement automatic .aux and .bbl file creation with -a switch. +Implement work around for DOS file handles limitations. +Fix bug in ifnum. + +Changes between versions 3.00 and 3.01 +______________________________________ +Fix mangled HTML for \root 3 \of ... +Fix TtM \sqrt. +Improve vertical layout of \underbrace etc. +Improve TtM equation numbering layout. +Correct \bar to be a non-stretch overline. + +Changes between versions 2.92 and 3.0 +______________________________________ +Implement unicode support in the -u switch +Implement Two-column index. +Improve line counting for diagnostics. +Make height compression (-y1) the default. + +Correct colspan=0. +Fix missing

    s +Work around Konqueror alignment bug. + + +Changes between versions 2.91 and 2.92 +______________________________________ +Oops. Footnotes were broken in 2.91. Don't use it. Use 2.92. + +Changes between versions 2.90 and 2.91 +______________________________________ +Fix optional argument detection that broke \root \of and \sqrt[] + +Changes between versions 2.89 and 2.90 +______________________________________ +Fix that directory is fopened successfully even though it can't be read. +Implement \day \month \year, so dates can be redefined. +Remove extra

    before equations in HTML mode (arose from XHTML compat). +Improve error handling of tthsplit. + +Changes between versions 2.88 and 2.89 +______________________________________ +Really fix the space after \item. +Fix \verb< < use of & < > as delimiters with verb. +Fix incorrect file references to floats in split files. +Fix latex_builtins3. + +Changes between versions 2.87 and 2.88 +______________________________________ +Allow space between \item and its optional argument in description env. +Force a new paragraph at the \end{abstract}. +Improve natbib compatibility in TtH and in tthnatbib.sty +Change \verbatiminput to allow "\end{verbatim}" in the input file. + +Changes between versions 2.86 and 2.87 +______________________________________ + +Fix newline not escaped in latex_builtins3. +Allow Part to be added to toc. +Fix handling of toc contentsline with more arguments (e.g. with hyperref). + +Changes between versions 2.85 and 2.86 +______________________________________ +Fix excessive space compression in delimited arguments. +Remove compress variable (housekeeping). +Enable index entry in table of contents in TtH. + +Changes between versions 2.84 and 2.85 +______________________________________ +Work around apparent HTML validator bug in parsing. +Count multiple bibliographies and make separate split files (refs not correct). +Implement tthrfcat for concatenating multiple refs files when splitting (gold). + +Changes between versions 2.83 and 2.84 +______________________________________ +Fix diacriticals broken at 2.83. +Implement \H as if it were a plain umlaut. +Implement \b underbar. + +Changes between versions 2.82 and 2.83 +______________________________________ +Fix edef expansion of builtins etc to include spaces if necessary. +Improve whitespace ignoring in \cite(s) +Remove spurious whitespace from builtins to clean up top of html files. +Fix \expandafter in some bare token situations (e.g. \ifx). +Detect accents etc as the first thing in the title. (Can't handle them). +Prevent incorrect expansion of \H, \c etc inside \xdefs such as footnotes. +Document some Mozilla symbol font problems. + +Changes between versions 2.81 and 2.82 +______________________________________ +Fix unquoted alignments in \author and \date. +Disable -i switch in TtM. + +Changes between versions 2.80 and 2.81 +______________________________________ +Fix generator meta syntax in XHTML version. +Make -w2 the default for TtM, so that Amaya 4.0 can parse. +Add xmlns to TtM math element. Again, Amaya 4.0 changed to be really picky. + +Changes between versions 2.79 and 2.80 +______________________________________ +Improve \vspace handling to prevent it improperly absorbing following numbers. +Include xmlns declaration in -w2 style. +Implement redefinable macros for split files' top and tail navigators (gold). +Add reference to index in navigators. +Allow non-letter characters in equations to have their fonts changed. +Implement \tthtensor. + +Changes between versions 2.78 and 2.79 +______________________________________ +Improve epsfbox layout to be more TeX-like. +Fix space ignoring after e.g. \ss and \i. +Correct upper case /TD /TR to lower case (for XHTML). + +Changes between versions 2.77 and 2.78 +______________________________________ +Fix placement of title when triggered by raw output. +Fix recognition of file names in capitals from Wind@ws drop on executable. +Put back the

    before

  • when the writing style is 0. Gives better layout. + +Changes between versions 2.76 and 2.77 +______________________________________ +Implement command-line specification of input and implied output files. +Reorganize output file descriptors for the above. +Adjust startup messages to reflect knowledge of input file. +Prevent null index generation when base latex filename is unknown. +Adjust the usage and help output to report new behavior. + +Changes between versions 2.75 and 2.76 +______________________________________ +Move static function definitions to global to satisfy Compaq CC. +Implement \setbox recognition and edefinition as if box is a macro. +Implement \savebox, \sbox, \usebox. +Fix incorrect absorption of space after \cite{thecite}. + +Changes between versions 2.73 and 2.75 +______________________________________ +Consolidate document headers into macros in mathstrings. +Implement -w switch 0: no title insertion, 1 head and body tags. +Rework paragraphing to enable XML-style completion (when -w2 is used). +Rework \item and some other list elements for XML-style. +Change colorbox interpretation to for better standardization. +Add \marginpar to builtins. +Add XHTML style terminators to zero-content tags

    . +Fix obscure bug in \hang inside \vbox. +Fix detection of horizontal mode in delimited parameter searching. + +Changes between versions 2.72 and 2.73 +______________________________________ +Make all tags lower case, all attributes quoted and explicit. +Add some tags even though not compulsory. +All this to move (slowly) towards XHTML compatibility, although what to do +about

    and nesting is not at all obvious at this stage. +Make implementation of \uppercase and \scshape more robust. + +Changes between versions 2.71 and 2.72 +______________________________________ +Fix bug with counters in LaTeX files translated without the -L switch + (introduced at version 2.67). + +Changes between versions 2.70 and 2.71 +______________________________________ +Remove the default
    after the image in includegraphics to make the image + alignment more flexible. +Complete the namespace separation of tthfunc and ttmfunc. +Change tthhalcode to be a macro, and make various strings macros. +Fix TtM to use the full tabular argument for alignment etc. +Add handling of optional argument to \cite. +Fix bug with conditional clauses during macro argument searching. +Generalize cite and bibitem to handle the natbib extensions. +Create tthnatbib.sty file for TtHgold implementing variable citep, citet, + and other useful aspects of natbib. +Handle automatic conversion of \section argument into title if it comes first. + +Changes between versions 2.69 and 2.70 +______________________________________ +Fix bug introduced in revised initial scan of tabular argument (at 2.68). +Improve alignment of eqnarray equations to make more centered. + +Changes between versions 2.68 and 2.69 +______________________________________ +Fix broken .ind file removal broken at version 2.68. +Improve handling of vboxes to behave more like TeX. +Make \tthfootnotes the name of the footnotes section, default Footnotes. + +Changes between versions 2.67 and 2.68 +______________________________________ +Improve handling of minipage to behave more like LaTeX. +Modify some rescanning, esp in wrap-up, to fix memory leaks. +Fix error in initial scan of tabular argument. +Prevent spurious paragraphs caused by \else or \fi alone on a line. +Fix bugs with \% percent in conditional text. +Implement a facility for scanning TeX strings at closures. [Infrastructure]. +Define \columnwidth to be a synonym for \hsize. +Improve the table of contents handling of paragraph and subparagraph. + +Changes between versions 2.66 and 2.67 +______________________________________ +Implement \% as equivalent to % within rawhtml for macro purposes. +Make all
    into
    to satisfy validators. + +Changes between versions 2.65 and 2.66 +______________________________________ +Further improve handling of \eqno with \eqalign not to hide wide equations. +Fix bug with single line eqnarray. +Make \caption a command string so it can be redefined. +Implement column counting in tabular. +Fix obscure bug in conditionals with argument finding \else. +Fix bug in delimited parameter matching of blank line as \par. +Ensure \cr in LaTeX is equivalent to \nonumber\\. +Fix incorrect group nesting when using a newenvironment. +Add some tags in tables, even though optional. +Change counter order to prevent spurious title "Footnotes" in plain TeX. +Change tth.gif logo: more realistic document flight. +Implement longtables. + +Changes between versions 2.64 and 2.65 +______________________________________ +Correct misinterpretations of glue removal from (e.g.) \offinterlineskip. +Ensure \hfil is recognized in \halign template. +Improve scanning of template to remove rule dimensions of \vrules. +Fix HTML width error when \eqno is used with \eqalign. + +Changes between versions 2.63 and 2.64 +______________________________________ +Prevent spurious

    at start of environments such as lists, figures etc. +Discard spurious whitespace inside tabular alignment argument. + +Changes between versions 2.62 and 2.63 +______________________________________ +Fix improper termination of \item by display equations. +Improve alignment of equation numbers inside list, items, indented sections. + +Changes between versions 2.61 and 2.62 +______________________________________ +Fix TTHINPUTS and -p to accept consecutive path separators. + +Changes between versions 2.60 and 2.61 +______________________________________ +Fix the accident that -c implies -d. +Implement \colorbox, \fcolorbox, and \pagecolor (deprecated). [Not in eqs]. +Replace printf with a macro for easier editing and subroutines. +Remove unnecessary static declaration from some global variables. +Define \setlength to prevent it putting spurious lengths into text. +Implement corrected array/tabular inside in-line (textstyle) equations. + [But only if the array is the only thing in the equation]. +Prevent erroneous freeing of internal definitions of cross-references. +Fix bug in \hsize setting when accidentally invoked in an error situation. +Improve consistency of setting of TeX and TtH in manual. + +Changes between versions 2.58 and 2.60 +______________________________________ +Improve the layout of equation numbering. Now it is properly right aligned. +Fix bug in VMS compile introduced at 2.56. +Improve alignment of big symbols with limits using -y switch. +Force display equations to clear inline equations using -t switch. + +Changes between versions 2.57 and 2.58 +______________________________________ +Enable \part redefinition to remove possible Plain incompatibility. +Enable garbaging of locally defined macros if they aren't trapped by global. +Fix obscure bug in \indexspace. +Fix spurious \par sometimes arising from \advance and other counter ops. + +Changes between versions 2.56 and 2.57 +______________________________________ +Add diagnostic message when *.bbl bibliography file not found. +Fix obscure problems with null inline equation inside a tabular. +Make e.g. \textrm in equations recognize that this is a text box. +Add switch -k to prescribe filename without forcing LaTeX state. +Fix space problem in attribution string. +Add install file and l2h.exe to tthgold DOS/Windows distribution. + +Changes between versions 2.55 and 2.56 +______________________________________ +Implement pre-expansion of bare command sequence arguments of \sqrt. + (That's pretty bizarre. \sqrt is not really a macro with arguments in TeX!) +Implement multiple directories in -p switch. +Implement recognition of TTHINPUTS as a path for input files. + +Changes between versions 2.54 and 2.55 +______________________________________ +Fix omission of 8 standard colors in lower case in LaTeX. + +Changes between versions 2.53 and 2.54 +______________________________________ +Implement comprehensive color support, \color \textcolor and \definecolor. + +Changes between versions 2.52 and 2.53 +______________________________________ +Reimplement a few constructs: stackrel, pmatrix, cases ... as TeX functions. +Remove the cnvting states which are now obsolete. (Housekeeping). +Make NEXT and PREVIOUS into macros in TtHgold so they can easily be changed. +Obey \textstyle in display equations provided explicitly embraced. + +Changes between versions 2.51 and 2.52 +______________________________________ +Adjust version reporting in startup code. +Improve hbox handling in vertical mode. +Fix centerheader invisible formal HTML bug. +Change \centerline to enclose output in an HTML table for better compatibility. +Improve alignment of first \item. +Recognize \land \gets \mid \lbrack \rbrack \not\in \not\subset +Make - symbol font in equations because some non-adobe times fonts have + a very short hyphen sign. This might cause other problems. We'll see... +Trap \centerline in titlecheck state. +Rework buildrel as a delimited parameter. +Fix small alignment bugs in atop. +Remove spurious space after the 2 in e.g. \hat{v}^2. + +Changes between versions 2.50 and 2.51 +______________________________________ +Work around DOS executable system call non-detection of failure of ps2png etc. +Improve hbox and vbox code to accommodate NS table peculiarities. +Trap explicit \par in titlecheck state. + + +Changes between versions 2.34 and 2.50 +______________________________________ +Implement dimension interpretation. + \hskip \hspace implemented as scaled number of nonbreak spaces. + \vskip \vspace implemented as scaled number of
    s. + p{dimension} in tabular argument as scaled width="pixels" + Float times a dimension implemented. E.g X.YZ\hsize. + \hsize = ... supported inside a brace group (e.g. a \vbox) +Some box handling. But browsers currently won't put text before and after +the table into which these are translated. + \hbox to ... implemented as table of scaled % width. [Not in equations] + \hfil and \hss implemented inside \hbox to.. But spacing is imperfect. + \makebox, \framebox with specified size and alignment. + No \newdimen's. + Prevent \hbox constructs from containing the accidentally. + +Implement *{num} interpretation in tabular alignment argument. +Fix minor inconsistency in definition of \proclaim. +Improve recognition of known but inappropriate parameters e.g. \tolerance. +Improve consistency of parameter discarding of unknown commands. +Improve consistency of paragraph detection near }. +Rewrite the graphics file conversion code to call ps2png, then ps2gif. +Compile DOS executable unoptimized because we are out of memory (again). + +Changes between versions 2.33 and 2.34 +______________________________________ +Implement \subitem for itemize and enumerate environments. +Implement \proclaim. +Correct grouping in definition of \frac. +Correct the missing semicolon from 233. +Fix bug with refs and bibitems whose key has spaces. + +Changes between versions 2.32 and 2.33 +______________________________________ +Accommodate \item[...] in enumerate with a kludged item label. +Implement \url, \hypertarget, \hyperlink, for better compatibility. +Fix tthsplit for tthgold. + +Changes between versions 2.31 and 2.32 +______________________________________ +Fix handling of \rm outside groups in TtHgold (not TtH). +Fix expansion of \if clauses in situations that need it, e.g. limitops. + +Changes between versions 2.30 and 2.31 +______________________________________ +Fix handling of \{ and \} in situations like footnotes. + +Changes between versions 2.27 and 2.3 +______________________________________ +Put the name= reference into quotes for cite and a few other places. +Fix bug with unembraced arguments like \phantom\{ . +Improve vertical placement of overaccents in denominators too. +Improve vertical placement of lone sqrts in fractions. +Fix bug with \right. in in-line equations. +Remove spurious extra space after \over in in-line equations. + +Changes between versions 2.26 and 2.27 +______________________________________ +Improve vertical placement of simple expressions with over accents in + fraction numerators. + +Changes between versions 2.25 and 2.26 +______________________________________ +Reinstitute -O optimization of DOS executable with more compile memory +Fix warnings about ambiguous else on egcs compiler. +Improve compatibility of grabbing unused embraced arguments to + begin{thebibliography},\\begin\{tabular(\*|x)\},\\begin\{minipage\} + +Changes between versions 2.24 and 2.25 +______________________________________ +Fix the title generation code for Mac line-end compatibility. + +Changes between versions 2.23 and 2.24 +______________________________________ +Rework all line-end code to implement work-around for Mac files. + +Changes between versions 2.22 and 2.23 +______________________________________ +Implement work-around for flex line-end bug on Macintosh files. +Fix bug in \color inside equations. + +Changes between versions 2.21 and 2.22 +______________________________________ +Reimplement the redundant brace group delimiter fix to avoid bugs in 2.21. +Fix problem with \iftth following &. + +Changes between versions 2.20 and 2.21 +______________________________________ +Make \.*size check first if it is a user-defined macro before discarding. +Enable proper sub/superscript positioning on large delimiters even when in + (redundant) brace groups. [Fix associated # problems] +Fix problem with \else in nested false conditionals. + +Changes between versions 2.10 and 2.20 +______________________________________ +Implement epsf file handling to accept a filename without extension and search + for .ps or .eps files. +Make equation, figure, and table numbered within chapter by default. +Fix \thanks in title in preamble. +Implement correct (I hope) tabular handling _inside equations_. +Use tabular code for \begin{array} so cell alignment is now honored. +Improve height tracking of matrices. +Remove optimization from DOS executable because of compile memory limitations. + +Changes between versions 2.01 and 2.10 +______________________________________ +Remove some spurious additional cells from equations for better layout. +Reimplement sqrt to work more compatibly. +Implement some extensibility in large sqrt signs. +Reimplement \root \of as a delimited-parameter command. +Implement interpretation of TeX code in index of sqrt[] and \root..\of. +Changed name of top file in tthgold split output to "index.html". +Implement an optional style-sheet approach for equation height compression in + tthgold. +Fix order of closing of improperly nested font changes etc. +Prevent various known unsupported commands from inserting unwanted <p>. +Fix bug with \cite inside footnotes. +Improve \newtheorem to recognize optional arguments (but still not quite + numbering in "within" correctly). +Add handling of \charNNN and \symbol{}. + +Changes between versions 2.00 and 2.01 +______________________________________ +Improve layout of \root \of. +Fix inline sqrt without embedded groups. +Added unsupported alpha diacritical accent commands as null macros to prevent + discarding their arguments. +Implement recognition of "`, "', "<, and "> from the german style. +Fix uninitialized labelchar that occasionally gave \label problems. + +Changes between versions 1.98 and 2.00 +______________________________________ +Recognize \begin with spurious following space. Warn and fix with unput. +Improve recognition of multicolumn hidden in macros, in arrays in equations. +Make first cell of first line of eqalign/eqnarray right aligned. + +Changes between versions 1.96 and 1.98 +______________________________________ +Finally fixed the \halign and \tabular code (I hope). + +Found a serious problem with version 1.97 when tabular environment is +renamed. Withdrew 1.97 from release. + +Changes between versions 1.96 and 1.97 +______________________________________ +Rewrite \halign code to use the template line for alignment and insert strings. +Change tabular alignment coding. Fix @-strings at premature row ends. +Fix insertion of & during verbatim output. + +Changes between versions 1.95 and 1.96 +______________________________________ +Fix \halign, broken by the improvements to \tabular. +Fix \uppercase bug in equations. + +Changes between versions 1.94 and 1.95 +______________________________________ +Implement tabular alignment argument interpretation. (Not *{num} style). +Prevent spurious \par caused by newlines in equations. +Fix bug with LaTeX \input{filename} that regarded the input as within a group + and thus discarded the newcommands that were defined within it, since the + implementation of commands being local in TtH if defined locally (v 1.90). +Correct the anchor at the subsubsection in book class when secnumdepth is >2. +Make \textsc and \uppercase work in equations provided no math or other + complicated constructs are used inside their arguments. + +Changes between versions 1.93 and 1.94 +______________________________________ +Fix bug with auxiliary files and \include{}. + +Changes between versions 1.92 and 1.93 +______________________________________ +Fix obscure bug with \\ at end of argument of macros. +Recognize \+ does not mean a settabs tabbing start in LaTeX (just omit). +If \amslatex is a defined command, recognize | as a synonym for \verb|. +Fix \choose when its second argument has subscripts. +Rework equation start and end always to start and end an implied group. + This is rationalizes treatment of such things as $$n \choose k$$. +Improve brace matching in ignored groups that contain \{ or \}. +Improve dimension and parameter command removal with macros. +Improve counter setting with macros. +Improve eqalign (eqnarray) alignment of first cell (align right). +Make book class equation numbering consistent with LaTeX default. +Split a long string constant to work around brain-dead VisualC++ limitations. +Improve string overflow detection and message. +Reorganize verbose messages. + +Changes between versions 1.90 and 1.92 +______________________________________ +Fix bug with zero length \phantom. + +Changes between versions 1.90 and 1.91 +______________________________________ +Improve \phantom to cope with braces within its argument. + +Changes between versions 1.68 and 1.90 +______________________________________ +Implement command definitions as local within groups for TeX compatibility. + Counters are (incompatibly) still all global. +Implement plain TeX conditionals. + All are working with some limitations except + \loop, \ifdimen, \ifvoid, \ifinner, \ifcat. +Add timestamp to the translation credits. +Rework delimited parameter macros to be compatible with TeX space compression. +Add implied \par to several commands, e.g. \hrule, \bigskip, ... +Implement \[h]phantom as a horizontal space of the approximate length. +Rework bibitem to allow it to function correctly when renamed. +Fix \bye. +Improve error message for string overflow. + +Changes between versions 1.67 and 1.68 +______________________________________ +Fix fatal bug caused by ungrouped \over construct in inline equation. +Use the compiler -O optimization on executables to decrease their size. + +Changes between versions 1.66 and 1.67 +______________________________________ +Permit \headline= syntax. +Permit omission of braces from plain footnote first argument. +Obey optional argument to footnote in LaTeX. +Fix bug in improper \\ handling at lowest closure depth. + +Changes between versions 1.65 and 1.66 +______________________________________ +Correct the behaviour of a command alone on a line. Treat as a non-null line. +Handle improper use of \\ or \cr outside of array environment in an equation. + LaTeX simply ignores it, though it should not be used. + +Changes between versions 1.60 and 1.65 +______________________________________ +Implement HTML title construction or warning for files without title. +Implement \paragraph and \subparagraph. +Implement \secnumdepth handling. +Accept optional arguments on \author etc. +Kludge \dag and \ddag, since they are not available as single glyphs. +Rework \item in description environment to handle optional arguments better. +Improve \noalign rendering. +Improve font handling for inline equations in boxes in displaystyle equations. +Group multiple-letter entities in equations inside font codes (for mathitalic). +Prevent ^\prime from being a superscript in-line. HTML is unlike TeX. +Standardize warning and error syntax. +Correct handling of braces inside of optional arguments. +Fix (rare) bug in glue removal state that defeats paragraphing. +Fix bugs for absent optional argument with no other arguments. +Fix (invisible) bug in \item followed immediately by \end. +Fix incorrect pushdepth induced by display table state. + +Changes between versions 1.59 and 1.60 +______________________________________ +Implement verbatiminput +Fix various entities not to introduce spurious par if on line by themselves. + +Changes between versions 1.58 and 1.59 +______________________________________ +Implement optional parameter handling internal macro call. +Fix recognition of unknown* environments. +Work around strange amslatex use of \newlabel in aux file. +Fix \varphi. + +Changes between versions 1.57 and 1.58 +______________________________________ +Recognize file extensions .ps* .eps* (e.g. .epsi) as valid postscript. +Recode \headline and \title to avoid putting markup in <title>. +Rework epsfbox etc to improve compatibility with non-standard usage. +Add alt="..." to the img tags to conform to HTML4.0. + +Changes between versions 1.56 and 1.57 +______________________________________ +Reduce additional horizontal space with large delimiters in some cases. +Change tabular handling to allow \multicolumn to be inside a macro. +Fix bug with single non-alpha commands as subscripts, (e.g. x_\|). +Fix disabling of \par by \href and \special{html:...}. +Make color codes quoted for syntax validation. + +Changes between versions 1.55 and 1.56 +______________________________________ +Implement \{, \} in macro arguments so that e.g. \subsection{\{} works. +Fix (invisible) incorrect state at close of LaTeX files. +Fix \choose to remove fraction bar. + +Changes between versions 1.54 and 1.55 +______________________________________ +Fix bug in appendix chapter or section title: grouping not honored. + +Changes between versions 1.53 and 1.54 +______________________________________ +Fix large square-root display for Macs. + +Changes between versions 1.52 and 1.53 +______________________________________ +Use <br clear=all> at start of table layout of inline equations with -t switch +Ensure \begin{html} and related code does not cause spurious \par. +Ensure \tthdump is not expanded in (e.g.) edefs or footnotes. + +Changes between versions 1.50 and 1.52 +______________________________________ +Rework \begin{array} for improved compatibility. +Implement \Roman, \roman. +Make \# output # in raw HTML output. +Implement \char`\. as a literal character quoting mechanism. +Make \\cal into italic helvetica. +Various TtHgold improvements to label, etc. + +Changes between versions 1.46 and 1.50 +______________________________________ +Rework \textit ... \mathrm ... to use rescanning of a braced switch. This + resolves ambiguities in equations (the swaparg state), and allows + macros to rename these even using bad (non-argument) style. +Rework \underline and colordvi commands similarly. +Improve picture conversion code by including graphics packages in the + latex file that is output, and fix comment bug. +Rework mbox and raisebox code for greater compatibility. +Remove the eqtokarg state, mostly used in subpscripts. +Implement the exptokarg state, for expanding command sequences immediately + following ^ _ and overaccent-style builtin TeX commands in equations. + This new approach correctly mimics TeX's handling of unembraced command- + sequence arguments in math mode, and removes ambiguities. +Correct internal bug associated with dupstore in tthref. +Rework macro calling to allow internal use of code. +Implement \expandafter. +Improve pattern matching in delimited argument interpretation. +Fix bug in \let interpretation (rare). +Fix footnote wrapup bug that broke \end[{document}}] +Rework \href using special, so it works in equations. +Edit manual to reflect changes. + +Summary: +1) Substantially improved [La]TeX compatibility in + Expansion of macros and boxes in equations; \expandafter support. +2) Improved picture handling code. +3) Various small bug fixes. + +Changes between versions 1.45 and 1.46 +______________________________________ +Simplified some dimension and glue removal code. +Internal output statement rationalization. +Fixed bugs in some accents. e.g. \~ \`O and \'{\i }. + +Changes between versions 1.41 and 1.45 +______________________________________ +Implement optional argument support for newcommand and newenvironment. +Implement "within" capability of newcounter. +Implement \@addtoreset command. +Rework equation labeling to use \theequation command. +Rework sectioning commands to use more latex-like approach involving + \thesection.\arabic{subsection} etc, for greater compatibility with + different sectioning and numbering styles. +Fix bug in \Alph and \alph +Fix bug in \chapter* +Fix bibitem interpretation with parens in optional argument. +Ensure a newtheorem starts a new paragraph. +Rework figure and table numbering in caption to use \thefigure etc, + and observe numbering with chapters of book style, for compatibility. +Make sectioning commands able to be redefined, in case a TeX file does so. +Rework \newlabel code to allow more general label formats (e.g. from a + redefined \theequation or \thefigure command in aux file). + + +Changes between versions 1.40 and 1.41 +______________________________________ +Fix bug in eqnarrays with \\ after e.g. \frac{}{}, \right) etc. + +Changes between versions 1.32 and 1.40 +______________________________________ +Reimplement \bibcite as \def, for greater compatibility with different + bibliography styles such as natbib. +Reworked some equation recognition code to remove tth_eqn. +Rationalized the equation state earlier in the flex code. +Defined many strings as macros for easier editting. +Defined macros TTH_MATHC and TTH_SCAN_STRING. +Reworked some number removal for brevity. +Reworked halign/tabular end of line multicolumn code for clarity and brevity. +Resultant C code is nearly 100k shorter. +Separate -? and -h help text. + +Changes between versions 1.31 and 1.32 +______________________________________ +Implement workaround for browser table font bug in upright math mode. +Fix spurious <p> arising in toc if whole section title is a macro. + +Changes between versions 1.30 and 1.31 +______________________________________ +Implement \multicolumn in array environment. +Improve \eqalign recognition. +Make \bordermatrix a synonym for \matrix to prevent parse errors. +Prevent additional spurious </td> in equations. +Increase buffer size to TTH_DLEN 6000. +Change literal and non-literal treatment in tags for formal HTML conformance. +Add doctype 4.0 statement in standard header. +Fix omission of </a> from indexing tags. +Fix subsubsection labeling in appendix. +Fix \ref and \pageref in footnotes. + +Changes between versions 1.24 and 1.3 +_____________________________________ +Improve placement of subscripts etc on over-accented characters. +Fix bug arising from commands terminated by % in macro arguments. +Change default fraction level to 5. +Improve rendering of single-character fractions in inline equations + and exponents using slash. +Remove unnecessary braces in \frac definition. +Trap most common token ambiguities: \frac \mathrm and \mbox. +Fix scanner error at ambiguous token error. +Fix erroneous \big\ bug. +Adjust bracket height for very large items, e.g. matrices. + +Changes between versions 1.23 and 1.24 +_____________________________________ +Fix bug with \emph inside textbox inside equation. +Fix bug in \cite recognition with []. +Fix footnote bug introduced in equation-compatibility code. +Improve recognition of \begin{list}{}{}. +Fix bug in \(over|under)brace causing buffer overrun and possible crash. + +Changes between versions 1.22 and 1.23 +_____________________________________ +Fix \root n \of bug. + +Changes between versions 1.21 and 1.22 +_____________________________________ +Implement \sqrt[n]{ } and \root n \of. +Fix appendix index reference. + +Changes between versions 1.2 and 1.21 +_____________________________________ +Fix bug misinterpreting \} \{ in macro arguments. + +Changes between versions 1.15 and 1.2 +_____________________________________ +Document the -t switch for built-up textstyle equations. +Document the -a switch for automatic picture conversion. +Include latex2gif in distribution. + +Changes between versions 1.14 and 1.15 +______________________________________ +Omit \null from equations too. +Fix \ at end of line to be nbsp. +Make widehat a synonym for hat, like widetilde. +Add a newline end after </html>. +Add \alph,\Alph,(\roman,\Roman = \arabic). +Fix footnotes to work inside equations. +Add parentheses around \hbar. + +Changes between versions 1.13 and 1.14 +______________________________________ +Add recognition of \bigg/ and \bigg\ etc. +Fix bug in unrecognized \bigg etc. + +Changes between versions 1.12 and 1.13 +______________________________________ +Fix \\ bug arising from optional arg to \\ causing arrays to break. +Fix accent bug in \uppercase. +Add "s German ss usage. +Implement experimental -t switch. + +Changes between versions 1.11 and 1.12 +______________________________________ +Fix appendix subsection alphanumeric label bug. +Fix subsubsection bug that put in spurious name tags. + +Changes between versions 1.1 and 1.11 +_____________________________________ + +Fix the footnote "head.html" bug. +Correct to \dots in paragraph mode. +Add FAQ to manual. + +Changes between versions 1.03 and 1.1 +_____________________________________ + +Implement Indexing. +Improve space removal after numerator of fractions for alignment. +Tidy up some pattern recognition to remove trailing contexts. +Improve documentclass tracking. +Change ps2gif to use -ppmraw to save time and space. +Fix \verb+<font>+ to translate <> correctly to &ls; etc. +Make figure and table section-numbering 2-digit. +Fix space after Chapter names etc. +Fix spurious \\par insertion in \label (etc) on a line by itself. +Fix equations with _{\rm p} climbing up a hill. +Fix eqnarray* bug. +Fix lefteq bug. +Fix bug in interaction between TeX and Latex equation numbering. +Check for existence of .ps file before attempting conversion. +Add l2h script to packages. + +Changes between versions 1.02 and 1.03 +______________________________________ + +Fix space omitted after e.g. Figure. +Recognize .jpg or as a valid graphic file extension; if file.jpg exists, +don't do conversion from file.ps. +Add double hline recognition internal to tables. +Fix obscure bug in sub/superscripts as initial part of a definition. +Rework subscript code for more compact internals. +Remove space before \over, \atop (etc.) commands to improve alignment. + +Changes between versions 1.00 and 1.02 +______________________________________ + +Change glue removal code to save substantial size and improve compatibility. +Change paragraph recognition algorithm to do a better job when the +two line ends are in e.g. different macros. +Improve length overflow checking consistency. +Improve h|vrule handling. +Recognize "fil" as a dimension unit for removal. +Correct \bigg and \left\right delimiter algorithm to correspond to TeX. +Add meta tag to header. + +Changes between version 0.99 and 1.00 +_____________________________________ + +Redefined default states for the -g switch: +Defaults to guessing meaning of font commands; -g means discard construct. + +Changed default eqnarray numbering to be more LaTeX like. Each line is +numbered by default. Switch -n reverts to older style: one number per +environment. Implemented \nonumber. + +Documented -p switch to provide an additional directory for input files. + +Implemented \thanks as a synonym for \footnote in author or title. + +Updates to documentation. + +Added web link to home site in credit line. + +Various small bug fixes: + Allow spaces after \\ + Removed [] from possible macro names to avoid misinterpretation. + Changed handling of \textstyle to avoid consequent errors. + Fixed bug in fractional superscripts to large delimiters. + Improved removal of \penalty and similar commands. + Allow decimal point sizes in font commands. + Trap negative closure counts to prevent crash. diff --git a/code-postprocessing/bbob_pproc/tth_C/INSTALL b/code-postprocessing/bbob_pproc/tth_C/INSTALL new file mode 100644 index 000000000..fa3fea75a --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/INSTALL @@ -0,0 +1,7 @@ +Compile the C code by doing, for example: + +gcc -o tth tth.c + +Copy the executable, tth, to somewhere on your path, e.g. /usr/local/bin/ + +If you find symbols are missing in your browser, run Xfonts.fix as root. diff --git a/code-postprocessing/bbob_pproc/tth_C/latex2gif b/code-postprocessing/bbob_pproc/tth_C/latex2gif new file mode 100644 index 000000000..66f448a80 --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/latex2gif @@ -0,0 +1,19 @@ +#!/bin/sh +#latex2gif script by Ian Hutchinson 1998; use at your own risk. +#You need latex, dvips and ps2gif. +if [ $# != 1 ] ; then + echo " Usage: latex2gif <file> (no extension)" 1>&2 + exit 1 +else + echo "Calling latex, dvips, and ps2gif, please wait ..." >&2 + latex $1 >&2 + dvips -o $1.ps $1 >&2 + ps2gif $1.ps $1.gif + rm $1.tex + rm $1.aux + rm $1.dvi + rm $1.log + rm $1.ps +fi + + diff --git a/code-postprocessing/bbob_pproc/tth_C/license.txt b/code-postprocessing/bbob_pproc/tth_C/license.txt new file mode 100644 index 000000000..d6fb36039 --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/license.txt @@ -0,0 +1,17 @@ +License for TtH, a TeX to HTML translator +_________________________________________ + +tth is copyright Ian Hutchinson, 1997-2007 (hutch@psfc.mit.edu). + +You may freely use this software. + +If you distribute any copies, you must include this file and these +conditions must apply to the recipient. + +No warranty of fitness for any purpose whatever is given, intended, or +implied. + +You use this software entirely at your own risk. If you choose to use +tth, by your actions you acknowledge that any consequential damage +whatever is your responsibility, not mine. + diff --git a/code-postprocessing/bbob_pproc/tth_C/ps2gif b/code-postprocessing/bbob_pproc/tth_C/ps2gif new file mode 100644 index 000000000..8ef783c61 --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/ps2gif @@ -0,0 +1,18 @@ +#!/bin/sh +#ps2gif script by Ian Hutchinson 1998; use at your own risk. +#You need Ghostscript and the pbmplus utilities installed. +if [ $# -lt 2 ] ; then + echo " Usage: ps2gif <file.ps> <file.gif> [<icon.gif>]" 1>&2 + exit 1 +else + echo "Calling ghostscript to convert, please wait ..." >&2 + filein=$1 + gs -sDEVICE=ppmraw -sOutputFile=- -sNOPAUSE -q $filein -c showpage -c quit | pnmcrop| pnmmargin -white 10 | ppmtogif >$2 + shift 2 + if [ $# -eq 1 ] ;then +# Make an icon file. + gs -sDEVICE=ppmraw -sOutputFile=- -sNOPAUSE -r12 -q $filein -c showpage -c quit | pnmcrop| ppmtogif >$1 + fi +fi + + diff --git a/code-postprocessing/bbob_pproc/tth_C/ps2png b/code-postprocessing/bbob_pproc/tth_C/ps2png new file mode 100644 index 000000000..039b7eb19 --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/ps2png @@ -0,0 +1,20 @@ +#!/bin/sh +#ps2png script by Ian Hutchinson 1999; use at your own risk. +#You need Ghostscript and the netpbm utilities installed. +if [ $# -lt 2 ] ; then + echo " Usage: ps2png <file.ps> <file.gif> [<icon.gif>]" 1>&2 + exit 1 +else + echo "Calling ghostscript to convert, please wait ..." >&2 + filein=$1 +# The following uses the internal gs driver but does no cropping etc. +# gs -sDEVICE=png256 -sOutputFile=$2 -sNOPAUSE -q $filein -c showpage -c quit + gs -sDEVICE=ppmraw -sOutputFile=- -sNOPAUSE -q $filein -c showpage -c quit | pnmcrop| pnmmargin -white 10 | pnmtopng >$2 + shift 2 + if [ $# -eq 1 ] ;then +# Make an icon file. + gs -sDEVICE=ppmraw -sOutputFile=- -sNOPAUSE -r12 -q $filein -c showpage -c quit | pnmcrop| pnmtopng >$1 + fi +fi + + diff --git a/code-postprocessing/bbob_pproc/tth_C/tth b/code-postprocessing/bbob_pproc/tth_C/tth new file mode 100755 index 0000000000000000000000000000000000000000..b2a32e7df82d57879b6a576934636a9dd66d2b5d GIT binary patch literal 716960 zcmeEvdz@8c`}ZDNq}ujGn-E4s;-P3Wsm+wqj)_4CF)^jmX(*l$ruHmmw_3@gA%`A0 z=Ny`p$JA6bmD7ll!$T3)&Z#J-^wj(PUiZBYd(T9_=lA~czMqdipJv^M>wI7LeP8!s zt^MA%A9m~=3gzq>3YF~<3WXy0KXtEA$PDEn6$%}M{|WprE-vccyVqsCE;x^+ng4P! zvyJ9Rr#%=H7x(Mczh5SZ;LmK9S*Y`nEo9(7M3R5S#bXDL8>=&TWYa6!AIhNo+&RPw zg_v(5DgCEOs4SQ*E*>-XhO5VTMcMTJS!)Qr4I0ADy9iA+JzqZ3D;_#{MCst`0hCRz zVws|MuQnR<w7d7OfqW&SM~(3n&Zd{QLeb0Zs<dQ2Ltl@uN)#8Dj2V0Vuu(&Fc{aU{ zMl;d(@&^<E^FewUvI3;I_=Zt`A2w=G@vu?XjFx<6`%ZpX(JR&bn9ru6tK>mH87F?y zvwOepfg1ROm~5anoa-+g6%73ZJ{;nc|B8!;jP|X@eB<=;1R8%pkNECCw&yW!2G8Q+ zQ6q}S+%)p)(IbjW$6nunUY?dOSK~0BP4Bo2dLyp-BYGV*y?m`M^Feyl^KTjSvi&4e z-_l2v{qnSc%m>>wKuVIu#e=RIdzD|BZNI56DSAy0R4~l{F}<tD_`R%QdrV)Z=oR@a zGxXJF@M_`5qeqS$J<2V}mT#k`H!tR62Icch6$O8sE9`UbIlX%J@y4hY%I~zFh3eEe zH8W4)u^oc6+J-`90t&d+sB4X9e+4RkOOY>yf3IEHEHoQV#=bzf`j4B17U0?b+h(D0 z`-DQxk#=oyBGUX{g8%=(|Kst0SO3<0-7MsZ9st@G={)>zf&VAoFy{IbM-03A#6dTW z7=%3k9fJRqqhFgv<7-x(vEt!pBHy=oVO7piD9gqFP;=;w{~g>s%kZx~^d(;DHEO(- zLi{10eEeq}b<AnD0_M;0d4vCjH;oxPc;pE^PJkT4t_BeP9gY9wHx>36is!L9Py77! z?=K7dWr4pe@RtStvcO*!_{#!+S>P`V{AGc^Eb#x51ujaYzV3cW_lvt<)V<$@i3#8L zU%z*#Q_XxVlR~K#3A<|Mv-LaY&&E<H^<JTE)-iV&>bj?v7uuC&vyt75<z)BNTM2u{ zOlD_Bn0>d<uAcdF{mw%BiGsx_<&vs<>Yapb|NM0Q&d4P-zeIAwMRSc%B4rPpRlgGz z1#jSyvis}YQppwR+_L(eDYFond1Y9sB~oUARG4*d5zNe2xuP}9Rdqye0XH8|(_YmK zenx8YSkp??v{p5B>xDwD%57A+rYe{FwbX@FuA|D;KZQcuEK<3RDp#s<j>=6{xwR@c zTXI!vkXsPCRivs@HFc_HnbcrK4|!{J&DC3}*F2rOMRK!sZkps~>D=?oRn0_hLEgDS zW4f+cDm7DCQ-*yR(5p~2rG0-VP8n;sXh+RBRkQKc?W`$f%}iA@RMiyBV~sgb<<_cP zf0ZknFLgyaw^DKmo%>EG79h7EbdvDO*ELQ4Ly8@B?i9(j*SVq0Rpkj*Q^9JjYaS4| zT%CJV;F<~?ycG08y5<>ytAA2jtMo<5ZB)4$m2*_C=q0IJt8zEO#X)6_u6sr5>Qt^Y zX9w$+sod1_Bv+$yvu8+dp2~Gxy_1l$b#9I1X6f7~lAEb>pGj`I&V4SqsXDh-auquF zrR2(VZoTBj>D)KWRh1&QpbmRH;5}5=I083N<w6@J*I(u8ev@30&TW-kLg#*$T!GI0 zM{@a+GZyU8j2t>LXBopPkh4(Gt1e-wLiiKSXqkeLs%}rnRIMdlnC*&uYH1=>*&2z$ z)F;10TH37y#%_uSvSt&hG3%cofW1*3m5w}Sti>adnz2T5Rdw>HUM7zxYUJ_!JUpCz zW@CV{Y|$b0o>j#GBw<w&-TC1~sS|Cp>)uy&Vwdc?Dpe;I4AfC0=YCZ;P&D!RN!_ig zZfI7W$a0mc8`oG}FI898SlzLzuA;HJu&SHdSly-<MEB{9)vZ!>GaIX$uj*zsRyRY{ z&2Fr2f~uRBRW}tq)fuenY8tESqw1D5R`)kmSJzlwOI5cft4@4k%kxI4)+~j4Vt7Mp zgqIrXr3QJafnI8Wm+G%m@T|329Hcex5f1%)C?^Z5lzNX8D2_zjCIzjHjY0Jms3MPd zp_fV^#f{urv!_>9;HA2Gsm@-iqnA3~OSSP*t-Vw$FO}=1TIdwytk0GcdFSEh#G_>F z4fG0*%T7|&$%vg@Hw1OHW>cTKjPd~}&Hzq#MM36<?7DWUt|Q<Q*>(G<I+<?*bu&rx zhi6s)&%%?s_f=g{V|7)it2LW=mf4QTf}RA+^v{AXARklF8rWFfFjY4+t4{o*ukfk& zsgKKoDkJq{6orbcx~Z&dE)+Iv3bp1&pVss&c+vXPXT&128mn8V>Si}q_n4}i*I3=1 zs;(xhZW;2<aMabB-$SZ<#g83N()F&SwdQm`In_^A_{lOqIZh{Q&9Ppp)Ju)<QbTnL zO;(pB*cuA9@@X-|+Q#bUsye5!x(8I<#>VPyQ+4%?)m^RXB+LxBsmOAcs*`{;yRL(( zlh8H0ZeLX=L2jUq0kHG)EYVLw<3L>j>sG5e38=H{UPE22IncA?058?gOBH#kLNArj zDa-f~O`bB(M1GR-4bl~6Z=`F@ZXRsDPN8j@W(_nlxSk?1boSso`tY(=2*@n(dntYT zbLP*k+whbT!a77k4Tc=YgBJ1<i7+B*FZq_{QTmyupKbKBwSKnJ&s_a%p`T6h#8831 z93X1VkeAwyMbIEAt4B)JZq_MiJ}^sKnYg+^T67l=-tkgvz0_x3YK@orP^Yf3jCT)g z7P=;7u0#pA)F2FMV3XBPlFQqG;N$`*hE+i*MqAEoK%tHSSg=kkK20br(_8_?pe+c+ zSk4)xDAZ@wwdZ7VfvV#&E{NBfb*G@tiaqc^vrsBF9e<PY2~XmrEn=>qIgRU(q2S5* zC{@f;xLV^%U7Se9pHby4MLVPVRvo(<_n;ire1Mv+e$uNRud3Tfbvc*7h<p!Zp%rc_ zb=?*L?+jF=_rsq~H5H3~U6d0sdFY+S|B&;@u?CJz3y2wS2Nb8S1FaZ;{|TY8n2%JG zt<I͋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%0D;WSN<VU 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 E0mrFAO#lD@ literal 0 HcmV?d00001 diff --git a/code-postprocessing/bbob_pproc/tth_C/tth.1 b/code-postprocessing/bbob_pproc/tth_C/tth.1 new file mode 100644 index 000000000..8dcc375eb --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/tth.1 @@ -0,0 +1,362 @@ +.TH TTH 1 "1 May 2002" 3.10 "TeX to HTML translator" +.SH NAME +tth, latex2gif, ps2gif, ps2png \- TeX and LaTeX to HTML translator +and its auxiliary program +.SH SYNOPSIS +.B tth +[\fIoptions\fP] [\fI<file.tex\fP] [\fI>file.html\fP] [\fI2>err\fP] +.sp +.B tth +[\fIoptions\fP] \fIfile.tex\fP [\fI2>err\fP] +.sp +.B latex2gif +.I file +(no extension) +.sp +.B ps2gif +.I file.ps file.gif +[\fIicon.gif\fP] +.sp +.B ps2png +.I file.ps file.gif +[\fIicon.gif\fP] +.SH DESCRIPTION +.PP +.I tth +translates TeX source that uses the plain macro package or LaTeX, +including most mathematics, into a near equivalent in HTML. The formal +standard that TTH-translated documents follow is strictly HTML4.0 +Transitional. +.PP +The complete documentation is contained in "tth_manual.html" distributed +with the program. This man page is an incomplete summary and updated on an +irregular basis. [Last updated 1 May 2002 by Hans Fredrik Nordhaug.] +.PP +The program is a filter, i.e. it reads from standard input and +writes to standard output. In addition, diagnostic messages concerning +its detection of unknown +or untranslated constructs are sent to standard error. +.PP +In handling embedded graphical files \fItth\fP +can make use of auxiliary programs, \fI ps2gif\fP or \fIps2png\fP, +which in turn make use of the ghostscript interpreter \fIgs\fP (1) +and the Portable Bitmap Graphics suite of commands, see \fIpbm\fP (1). +.PP +.I tth +is extremely fast in default mode on any reasonable hardware. +Conversion of even large TeX files should be a matter of a second or +two. This makes it possible to use \fItth\fP in a CGI script to output +HTML directly from TeX source if desired; (standard error may then +need to be redirected.) +.PP +To discuss how to get the best from \fItth\fP, you can subscribe to a +mailing list by sending an email containing the message +subscribe tth_mailing_list to "majordomo@hutchinson.belmont.ma.us". +Then you can send messages to "tth_mailing_list@hutchinson.belmont.ma.us". +.PP +\fItth\fP handles TeX things like: +.nf +.in 1i +Almost all mathematics, including symbols, fractions, delimiters. +{} \\begingroup\\endgroup grouping. +\\it \\bf \\sl etc styles. +\\beginsection. +\\centerline{}. +\\item{...} \\itemitem{...} {\\obeylines ...}. +Almost all accented latin characters written like \\"o, or \\"{e}. +\\hang \\hangindent \\narrower for entire paragraphs + (\\hangafter ignored). +\\headline is made into a title. +% Comments. Simply removed. +\\halign tables, checks template for the presence of \\vrule, + to decide if the table is to be border style. +\\settabs \\+ style tables. +\\input: But, of course, not from the implicit texinputs path. +\\newcount, \\number, \\advance and counter setting. +\\def, \\edef, \\xdef but no delimited arguments. + All definitions are global. +\\matrix, \\pmatrix but not \\bordermatrix. \\cases. +.in +.fi +.PP +LaTeX support includes essentially all mathematics plus the following +environments: +.in 1i +em, verbatim, center, flushright [one paragraph only], verse, +quotation, quote, itemize, enumerate, description, list [treated +as if description], figure, table, tabular[*,x], equation, +displaymath, eqnarray [only one equation number], math, array, +thebibliography, [raw]html, index [as description]. +.in +.fi +and Latex commands: +.in 1i +[re]newcommand, newenvironment [optional arg not permitted], chapter, +section, subsection, subsubsection, caption, label, ref, pageref [no +number], emph, textit, texttt, textbf, centering, raggedleft, +includegraphics, [e]psfig, title, author, date [not automatic], +lefteqn, frac, tableofcontents, input, include [as input], textcolor, +color [8 standard colors], footnote [ignoring optional arg], cite, +bibitem, bibliography, tiny ... normalsize ... Huge, newcounter [no +``within'' support], setcounter, addtocounter, value [inside set or +addto counter], arabic, the, stepcounter, newline, verb[*], bfseries, +itshape, ttfamily, textsc, ensuremath, listoftables, listoffigures, +newtheorem [no optional arguments permitted], today, printindex, +boldmath, unboldmath, newfont, thanks, makeindex, index. +.in +.fi +.PP +Hypertext cross-references within the document are automatically +generated by (e.g.) ref, and tableofcontents. +.PP +When \fItth\fP encounters TeX constructs that it cannot handle either +because there is no HTML equivalent, or because it is not clever +enough, it tries to remove the mess they would otherwise cause in the +HTML code, generally giving a warning of the action if it is not sure +what it is doing. +Untranslatable TeX math tokens are inserted verbatim. +.SH "Independence of [La]TeX installation and the -L switch" +A major difference between \fItth\fP and \fIlatex2html\fP is that \fItth\fP +does not call the \fIlatex\fP or \fItex\fP programs at all by default, +and is not specifically dependent upon these, or indeed any other +(e.g. \fIperl\fP), programs being installed on the translating system. +Its portability is therefore virtually universal. +.PP +Forward references in LaTeX are handled by multiple passes that write +auxiliary files. \fItth\fP does only a single pass through the source. +If you want \fItth\fP to use LaTeX constructs (e.g. tableofcontents, +bibliographic commands, etc.) that depend on auxiliary files, then +you do need to run LaTeX on the code so that these files are +generated. Alternatively, the \fItth\fP switch -a +causes \fItth\fP automatically to attempt to run \fIlatex\fP on the file, +if no auxiliary file .aux exists. +.PP +When run specifying a filename on the command line as a non-switch argument, +x \fItth\fP constructs the name of the expected auxiliary LaTeX files in the +usual way and looks for them in the same directory as the file. +If you are using \fItth\fP as a filter, you must tell \fItth\fP , using the +switch -Lfilename, the base file name of these auxiliary files +(which is the name of the original file omitting the extension). If +\fItth\fP cannot find the relevant auxiliary file because you didn't +run LaTeX and generate the files or didn't include the switch, then it +will omit the construct and warn you. +Forward references via ref will not work if the .aux file is +unavailable, but backward references will. The -L switch with no +filename may be used to tell \fItth\fP that the document being translated +is to be interpreted as a LaTeX file even though it lacks the usual +LaTeX header commands. This may be useful for translating single +equations that (unwisely) use the \\frac command. +.SH "BibTeX bibliographies" +\fItth\fP supports bibliographies that are created by hand using +\\begin{thebibliography} etc. Such bibliographies do not require +anything beyond the .aux file. \fItth\fP also supports +bibliographies created using BibTeX from a biblography database. The +filename.bbl file is input at the correct place in the document. +However, this filename.bbl is not created +automatically by \fIlatex\fP. In addition to running \fIlatex\fP on the source +file to create the auxiliary file, you must also execute +bibtex filename in the same directory, to create the +filename.bbl file, and then run \fIlatex\fP again to get the +references right. (This is, of course, no more than the standard +procedure for using \fIbibtex\fP with \fIlatex\fP but it must be done if you +want \fItth\fP to get your bibliography right). If you don't create the + .bbl file, or if you create it somewhere else that \fItth\fP does not +search, then naturally \fItth\fP won't find it. Since the BibTeX process +is relatively tortuous, \fItth\fP offers an alternative. Using the -a +switch with \fItth\fP will cause it to attempt to generate the required .bbl +file automatically using \fIbibtex\fP and \fIlatex\fP. +.PP +There are many different styles for bibliographies and a large number +of different LaTeX extension packages has grown up to implement +them, which \fItth\fP does not support. More recently, a significant +rationalization of the situation has been achieved by the package +natbib. \fItth\fP has rudimentary support built in for its +commands \\citep and citet in the default author-date +form without a second optional argument. A style file for +natbib is distributed with TTHgold which makes it possible to +accommodate most of its more useful styles and commands and easily switch from +author-date citation to numeric citation. +.SH "Indexing" +\fItth\fP can make an extremely useful hyperlinked index using LaTeX automatic +indexing entries. But indexing an HTML document is different +from indexing a printed document, because a printed index refers to +page numbers, which have no meaning in HTML because there are no page +breaks. TTH indexes LaTeX documents by section number rather +than by page; assuming, of course, that they have been prepared with +index entries in the standard LaTeX fashion. +.PP +\fItth\fP will construct an index based on the standard LaTeX commands +"\\makeindex" and "\\index{...}", and automatically process it and read it +in when "\\printindex" is encountered. The command line for calling the +makeindex program (not part of this distribution) may be changed using +the +.I -x +switch. For a file without the "\\makeindex" command, tth will write no +index files, just read in an existing one "file.ind" if it exists. +.SH "Graphics inclusion: epsfbox/includegraphics" +.PP +The standard way in plain TeX to include a graphic is using the epsf +macros. The work is done by \\epsfbox{file.ps} which +.I tth +can parse. By +default +.I tth +produces a simple link to such a postscript file, or indeed any format file. +.PP +Optionally TTH can use a more appropriate graphics format, by using +.I ps2gif +or +.I ps2png +to convert the postscript file to a png or gif file, "file.png" or file.gif" +When the switch -e1 or -e2 is specified, if +``file.png'', ``file.gif'' or ``file.jpg'' already exists in the same +directory as implied by the reference to ``file.ps'' then no +conversion is done and the file found is used instead. That graphics +file is then automatically either linked (-e1) or inlined (-e2) in the +document. If no such file is found, TTH tries to find a postscript +file with extension that starts either .ps or .eps and convert it, +first using ps2png then, if unsuccessful, ps2gif. By popular request, +a third graphics option -e3 for generating icons is now available. +.PP +The LaTeX command \\includegraphics{...} and the older +\\[e]psfig{file=...} are treated the same as \\epsfbox. +Their optional arguments are ignored. +.SH "Picture Environments" +The picture environment cannot be translated to HTML. Pictures using +the built-in LaTeX commands must be converted to a graphics file such +as a gif or png, and then included using \\includegraphics. The switch -a, +causes \fItth\fP to attempt automatic picture conversion using +\fIlatex2gif\fP. +.SH OPTIONS +.TP +.B -a +attempt automatic conversion of picture environments. Default omit. +.TP +.B -c +prefix header "Content-type: text/HTML" (for direct web serving). +.TP +.B -d +disable definitions with delimited arguments. Default enable. +.TP +.BR -e ? +epsfbox handling: +.B -e1 +convert figure to png/gif using user-supplied ps2png/ps2gif. +.B -e2 +convert and include inline. +.B -e2 +as e2 but with icon. +.B -e0 +(default) no conversion, just ref. +.TP +.BR -f ? +sets the depth of grouping to which fractions are constructed built-up +.B f5 +(default) allows five levels built-up, +.B f0 +none, +.B f9 +lots. +.TP +.B -g +don't guess an HTML equivalent for font definitions, just remove. +.TP +.B -h +print some help. +.B -? +print usage +.TP +.B -i +use italic font for equations (like TeX). Default roman. +.TP +.B -j? +use index page length ?. Default 20 lines. -j single column. +.TP +.B -Lfile +tells \fItth\fP the base file (no extension) for LaTeX auxiliary input. +.TP +.B -n? +HTML title format control. 0 raw. 1 expand macros. 2 expand eqns. +.TP +.B -ppath +specify additional directories (path) to search for input files. +.TP +.B -r +output raw HTML (no preamble or postlude) for inclusion in other HTML. +.TP +.B -t +permit built-up items in textstyle equations. Default in-line items only. +.TP +.B -u +unicode character encoding. (Default iso-8859-1). +.TP +.B -v +give verbose commentary. +.TP +.B -V +even more verbose (for debugging). +.TP +.B -w? +HTML writing style. Default no head/body tags. -w -w0 no title. +-w1 single title only, head/body tags. -w2 XHTML. +.TP +.B -xmakindxcmd +specify a non-standard makeindex command line. +.TP +.B -y? +equation style: bit 1 compress vertically; bit 2 inline overaccents. + +.SH "SEE ALSO" +The tth manual which is more likely to be up-to-date. +.B http://hutchinson.belmont.ma.us/tth/manual.cgi +(or preferably your local copy). In addition reading the man pages for +\fIlatex\fP, \fIlatex2html\fP, \fItex\fP and \fImakeindex\fP +might be useful. +.SH "Browser Problems" +\fitth\fP translates (La)TeX into standard HTML and takes account as far as +possible of the idiosyncrasies of the major browsers. Nevertheless, +there are several problems that are associated with the +browsers. Authors and publishers should recognize that these are +not \fitth\fP bugs. +.PP +Many of the most serious difficulties of Mathematics rendering in HTML +are associated with the need for extra symbols. In addition to various +Greek letters and mathematical operators, one needs access to the +glyphs used to build up from parts the large brackets matching the +height of built-up fractions. These symbols are almost universally +present on systems with graphical browsers, which all have a +``Symbol'' font, generally based on that made freely available by +Adobe. The problem lies in accessing the font because of +shortcomings in the browsers and the HTML standards that relate to font use. +.PP +For more information please read the section "Browser Problems" in the +manual. +.SH AUTHOR +.PP +.I tth +is copyright (c) 1997-2002 Ian Hutchinson (hutch@psfc.mit.edu). +.SH LICENSE +.PP +You may freely use this software for non-commercial purposes. +It may not be used for commercial purposes without an additional +license. +If you distribute any copies, you must include this file and these +conditions must apply to the recipient. +No warranty of fitness for any purpose whatever is given, intended, or +implied. +You use this software entirely at your own risk. If you choose to use +tth, by your actions you acknowledge that any direct or consequential damage +whatever is your responsibility, not mine. + + For details see http://hutchinson.belmont.ma.us/tth/. +.SH ACKNOWLEDGEMENTS +.PP +Many thanks for useful discussions and input to +Robert Curtis, Ken Yap, Paul Gomme, Bruce Lipschultz, Mike Fridberg, +Michael Sanders, Michael Patra, Bryan Anderson, Wolfram Gloger, +Ray Mines, John Murdie, David Johnson, Jonathan Barron, Michael +Hirsch, Jon Nimmo, Alan Flavell, Ron Kumon. + + + + diff --git a/code-postprocessing/bbob_pproc/tth_C/tth.c b/code-postprocessing/bbob_pproc/tth_C/tth.c new file mode 100644 index 000000000..588368c7b --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/tth.c @@ -0,0 +1,28980 @@ +/* TtH TeX to HTML translator. +TtH Version +"4.08" + (c) Ian Hutchinson +Fri Apr 10 10:13:46 EDT 2015 +*/ + +#line 3 "lex.yy.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include <stdio.h> +#include <string.h> +#include <errno.h> +#include <stdlib.h> + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include <inttypes.h> +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! C99 */ + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart(yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else +#define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +extern int yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart (FILE *input_file ); +void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); +void yy_delete_buffer (YY_BUFFER_STATE b ); +void yy_flush_buffer (YY_BUFFER_STATE b ); +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state (void ); + +static void yyensure_buffer_stack (void ); +static void yy_load_buffer_state (void ); +static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); + +void *yyalloc (yy_size_t ); +void *yyrealloc (void *,yy_size_t ); +void yyfree (void * ); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define yywrap(n) 1 +#define YY_SKIP_YYWRAP + +typedef unsigned char YY_CHAR; + +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; + +typedef int yy_state_type; + +extern int yylineno; + +int yylineno = 1; + +extern char *yytext; +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 1316 +#define YY_END_OF_BUFFER 1317 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[11276] = + { 0, + 1239, 1239, 1239, 1239, 1239, 1239, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 150, 150, 1019, 1019, 0, 0, 1019, 1019, 1026, 1026, + 0, 0, 0, 0, 522, 522, 866, 866, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 839, 839, 0, 0, 856, 856, + 0, 0, 1239, 1239, 0, 0, 679, 679, 0, 0, + 0, 0, 1239, 1239, 512, 512, 1239, 1239, 1237, 1237, + + 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 795, 795, + 606, 606, 0, 0, 0, 0, 0, 0, 0, 0, + 820, 820, 0, 0, 0, 0, 0, 0, 0, 0, + 1239, 1239, 1239, 1239, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1317, 1240, 1239, 761, 761, 1240, 1240, 1053, 102, 673, + 1240, 1240, 1135, 1133, 1240, 1240, 883, 742, 887, 1069, + + 748, 748, 1239, 1240, 755, 759, 759, 1053, 1240, 968, + 1242, 1316, 968, 99, 968, 967, 1044, 1316, 101, 1044, + 1043, 1040, 1040, 1039, 1036, 1034, 1033, 1033, 99, 1036, + 1032, 1238, 1042, 1042, 1238, 1011, 1010, 1136, 1112, 1134, + 1132, 1238, 1235, 1042, 20, 1238, 1207, 99, 1207, 972, + 1003, 1207, 970, 1207, 1001, 643, 1041, 643, 643, 132, + 132, 99, 132, 100, 132, 139, 139, 139, 100, 139, + 141, 141, 161, 161, 158, 158, 154, 153, 153, 150, + 152, 154, 1241, 1019, 1018, 1018, 1241, 1022, 1021, 1020, + 1241, 1316, 1024, 1316, 1019, 1018, 1018, 1241, 1017, 1241, + + 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, + 1027, 1026, 1025, 1025, 894, 894, 101, 894, 890, 891, + 961, 960, 959, 959, 961, 529, 522, 522, 522, 529, + 524, 524, 195, 871, 866, 865, 865, 101, 871, 867, + 869, 868, 1316, 1316, 1316, 1316, 1316, 101, 1316, 1316, + 874, 881, 877, 876, 876, 878, 879, 741, 990, 989, + 989, 990, 986, 862, 1299, 1299, 1297, 843, 843, 837, + 837, 847, 839, 839, 844, 845, 847, 847, 847, 855, + 855, 860, 856, 860, 858, 856, 860, 857, 806, 805, + 803, 100, 801, 806, 1053, 1240, 695, 688, 689, 689, + + 100, 695, 694, 684, 679, 678, 678, 100, 684, 183, + 182, 100, 183, 809, 1316, 670, 1240, 1229, 1239, 165, + 165, 512, 516, 1229, 1229, 236, 102, 180, 292, 515, + 322, 517, 331, 516, 332, 511, 1229, 212, 213, 1229, + 194, 297, 197, 1069, 1053, 1240, 1238, 1238, 1237, 761, + 1238, 1238, 1049, 102, 673, 1238, 1238, 1135, 1133, 1238, + 1238, 194, 742, 197, 1069, 1239, 761, 761, 1053, 102, + 1240, 1239, 761, 761, 102, 1240, 1238, 1053, 1238, 795, + 883, 887, 607, 1238, 606, 99, 990, 988, 1207, 101, + 1207, 998, 1000, 997, 1207, 999, 993, 991, 992, 993, + + 822, 820, 818, 818, 817, 822, 821, 819, 1301, 1302, + 1301, 1301, 1301, 983, 983, 983, 982, 1310, 1308, 1310, + 1313, 1312, 1311, 1311, 1312, 77, 47, 47, 77, 77, + 1053, 77, 77, 77, 77, 77, 1240, 77, 883, 77, + 77, 1240, 591, 590, 592, 1029, 1029, 1029, 1029, 1315, + 1315, 1315, 1315, 1315, 545, 532, 533, 544, 543, 534, + 545, 535, 542, 640, 640, 640, 29, 30, 29, 29, + 669, 664, 661, 663, 669, 660, 668, 100, 665, 668, + 666, 935, 937, 950, 950, 947, 950, 942, 930, 658, + 648, 647, 647, 656, 651, 658, 650, 653, 649, 1243, + + 747, 747, 746, 746, 1046, 101, 1046, 103, 103, 1207, + 971, 1002, 1207, 89, 553, 1063, 1061, 1061, 1061, 1063, + 1239, 0, 0, 0, 761, 1186, 1187, 1188, 1083, 1089, + 1094, 1102, 1109, 1185, 1119, 1130, 1144, 1153, 1166, 1161, + 1164, 1189, 0, 0, 1060, 102, 102, 102, 1190, 1221, + 1072, 1071, 1219, 0, 1215, 1214, 1204, 1113, 0, 1055, + 895, 1071, 1252, 0, 1220, 0, 1167, 1073, 1155, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1100, 1104, + 1296, 1105, 1296, 1296, 548, 677, 1124, 1218, 0, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1151, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1216, 1217, 1157, 1191, 748, 1239, 0, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1100, 1104, + 1296, 1105, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1151, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 759, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 0, 99, 99, 99, + 1202, 969, 0, 1043, 101, 101, 101, 1045, 1044, 1045, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 0, + 0, 1033, 1035, 1035, 1035, 1035, 1042, 1236, 0, 0, + + 0, 19, 18, 18, 18, 18, 18, 18, 18, 0, + 972, 1003, 1206, 1206, 972, 1003, 1041, 0, 0, 117, + 0, 0, 0, 100, 100, 100, 0, 0, 0, 0, + 0, 0, 162, 157, 150, 151, 151, 151, 151, 151, + 151, 151, 1019, 1018, 1022, 1021, 1023, 1023, 1024, 1024, + 1019, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1018, 1017, 1015, 1015, 1012, 0, 0, 1027, 1026, + 1025, 1205, 892, 893, 959, 0, 0, 0, 0, 522, + 522, 527, 527, 527, 527, 527, 527, 525, 526, 866, + 865, 1203, 870, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 101, 101, 101, 101, 0, 1203, 969, + 876, 880, 878, 989, 984, 985, 987, 0, 1298, 841, + 836, 839, 844, 845, 846, 846, 0, 0, 854, 854, + 854, 854, 856, 856, 0, 858, 0, 856, 859, 804, + 0, 0, 0, 1296, 1296, 689, 700, 700, 700, 700, + 700, 700, 700, 700, 700, 700, 679, 678, 683, 683, + 683, 683, 683, 683, 188, 188, 188, 188, 188, 188, + 0, 0, 1296, 1296, 1239, 0, 518, 0, 165, 512, + 518, 0, 0, 198, 0, 292, 517, 333, 518, 335, + 511, 1071, 514, 514, 514, 514, 238, 238, 0, 1167, + + 1155, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1100, 1104, 1228, 1105, 1228, 1228, 1228, 1228, + 1228, 1228, 190, 202, 514, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1151, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 300, 327, 0, 1048, 0, 1237, 1051, 1296, 1296, 1239, + 0, 0, 0, 761, 1060, 102, 102, 102, 1296, 1296, + 1239, 0, 0, 0, 761, 102, 102, 102, 1296, 1296, + 1296, 1296, 1296, 796, 796, 796, 796, 796, 796, 796, + 796, 0, 0, 1124, 0, 1296, 1157, 795, 1296, 606, + + 1208, 0, 0, 0, 0, 0, 0, 0, 820, 818, + 817, 817, 817, 824, 824, 1302, 1303, 1304, 0, 1300, + 0, 0, 0, 977, 977, 977, 977, 977, 977, 977, + 977, 1308, 1308, 1308, 1309, 1311, 77, 0, 47, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 0, 66, 77, + 77, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 65, 65, 65, 77, + + 0, 0, 1296, 1296, 1296, 1296, 1296, 1296, 1151, 1296, + 1296, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, + 0, 0, 30, 0, 0, 667, 951, 951, 947, 0, + 951, 942, 0, 647, 0, 0, 746, 746, 1047, 1046, + 1047, 1047, 1047, 1047, 1047, 1047, 1209, 1209, 104, 104, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1057, 0, 0, 0, 0, 0, 102, 0, 0, 0, + 1221, 1071, 1294, 0, 1084, 1090, 1095, 1103, 1110, 0, + 1120, 1131, 1145, 1154, 1162, 1165, 0, 0, 1077, 1170, + + 1086, 1092, 1173, 1098, 1174, 1106, 1111, 1175, 0, 1116, + 1178, 1126, 1140, 1181, 1149, 1182, 1158, 1163, 1183, 0, + 1071, 1176, 1184, 0, 0, 0, 0, 0, 1167, 1073, + 1296, 1296, 1296, 1296, 1081, 1076, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 0, 1296, 1296, 1296, 1296, 1296, 677, 677, + 0, 1078, 1087, 1093, 1099, 1107, 0, 1117, 1127, 1142, + 1150, 1159, 1079, 1088, 1091, 1097, 1108, 0, 1115, 1128, + 1137, 1148, 1160, 1122, 1296, 1296, 1114, 1296, 1296, 1296, + 1296, 1296, 1296, 901, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 676, 1296, 1296, 1296, 1296, + 1296, 1261, 1296, 1296, 1296, 1296, 608, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 126, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1259, 1296, 156, 1296, 1296, 905, 1296, 1296, 0, + 1296, 1296, 1296, 1296, 1296, 0, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1151, 1296, 1296, 1296, 133, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 913, 1296, 1296, 0, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 906, 1296, 1296, 1168, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 908, 1296, 1296, 1296, 1296, 0, 1296, + 1296, 1296, 1296, 1129, 1296, 1296, 1296, 1296, 1260, 1296, + 1082, 1096, 1101, 1118, 1147, 1152, 0, 1081, 1076, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1122, + 1296, 1296, 1114, 1296, 1296, 1296, 1296, 1296, 1296, 901, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 676, 1296, 1296, 1296, 1296, 1296, 1261, 1296, 1296, + 1296, 1296, 608, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 126, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1259, 1296, 156, + 1296, 1296, 905, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 133, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 913, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 906, 1296, 1296, 1168, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 908, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1129, 1296, 1296, 1296, 1296, 1260, + 1296, 1296, 1296, 1296, 1296, 1296, 905, 1296, 1296, 1296, + 0, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + + 1045, 1045, 1045, 1045, 1045, 1043, 0, 1037, 1037, 1037, + 1037, 0, 0, 0, 3, 18, 18, 4, 6, 5, + 18, 18, 18, 18, 0, 0, 0, 131, 119, 0, + 0, 138, 135, 134, 0, 151, 151, 151, 151, 151, + 151, 1023, 1015, 0, 0, 0, 0, 527, 125, 155, + 527, 527, 0, 870, 0, 0, 0, 873, 101, 0, + 846, 0, 0, 854, 854, 854, 807, 0, 0, 0, + 1296, 1296, 700, 700, 700, 125, 700, 155, 700, 700, + 700, 700, 683, 125, 155, 683, 683, 188, 125, 155, + 188, 188, 811, 0, 0, 671, 908, 0, 0, 0, + + 513, 0, 0, 0, 1071, 1292, 0, 0, 0, 0, + 1167, 1228, 1228, 1228, 1228, 1081, 1076, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 288, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 274, 460, 1228, 421, 286, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 273, 1228, 190, 190, 0, 1122, + 1228, 1228, 1228, 1114, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 901, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 192, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 608, + + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 126, + 1228, 1228, 1228, 1228, 1228, 383, 336, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 156, 1228, 1228, 395, 1228, 905, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 382, 1228, 452, + 1228, 334, 453, 1228, 1228, 1228, 1228, 1228, 1228, 345, + 253, 1228, 389, 398, 1228, 254, 1151, 1228, 1228, 1228, + 1228, 1228, 133, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 256, 344, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 913, 1228, 1228, 1228, 1228, + + 1228, 1228, 1228, 1228, 1228, 906, 1228, 1228, 1228, 1168, + 1228, 1228, 1228, 1228, 1228, 1228, 408, 1228, 908, 1228, + 1228, 1228, 1228, 0, 1228, 1228, 1228, 1228, 1228, 1129, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 284, 1228, 255, + 1228, 327, 0, 0, 1296, 908, 0, 0, 0, 0, + 0, 0, 0, 0, 102, 0, 0, 0, 905, 1296, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, + 0, 0, 0, 1296, 1296, 1296, 905, 1296, 908, 797, + 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, + 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, + + 797, 797, 797, 797, 797, 797, 908, 797, 797, 797, + 908, 996, 0, 0, 0, 995, 0, 0, 824, 0, + 0, 0, 0, 977, 977, 125, 977, 155, 977, 977, + 977, 77, 77, 67, 77, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 905, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 65, 65, 65, 65, 65, 65, 0, 0, + 0, 1296, 1296, 1296, 71, 70, 1296, 1296, 68, 1296, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 663, 951, 0, 951, 0, 0, 0, 1047, 1047, 1047, + 1047, 1047, 1047, 1047, 1047, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1068, 1068, 1146, 0, 0, + 1170, 1173, 1174, 1175, 1141, 1178, 1181, 1182, 1183, 1170, + 1173, 1174, 1175, 1178, 1181, 1182, 1183, 1176, 1184, 0, + + 0, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1199, 1296, 1296, 1296, 1296, 1296, 1296, 1172, + 1296, 95, 1296, 1296, 1296, 0, 677, 1143, 1138, 1122, + 1296, 1296, 1296, 1296, 98, 1296, 1296, 1296, 1296, 901, + 1296, 1296, 1296, 1296, 1296, 1296, 1267, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 434, + 1296, 863, 1296, 1296, 1296, 1258, 1296, 1296, 1296, 1296, + 608, 1296, 1291, 1296, 1296, 1296, 1296, 1296, 1296, 126, + 126, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 952, 1256, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 160, 1296, 1296, 1296, 1296, + 905, 1296, 1296, 1296, 1296, 0, 0, 0, 0, 1296, + 1296, 1296, 1296, 861, 1296, 1296, 1296, 1180, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 760, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 913, 1296, 1296, 1296, 0, 0, 1296, 1296, + 1296, 1296, 1296, 1296, 939, 1296, 1296, 1296, 1296, 906, + 1296, 1296, 1296, 1296, 1168, 1296, 1296, 1296, 1296, 852, + + 1296, 1296, 1296, 1296, 1296, 908, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1129, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1257, 1296, 0, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1199, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 95, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 98, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1267, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 434, 1296, 863, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 754, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 952, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 160, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 861, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 749, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 939, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 852, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1291, 1296, 1296, + 1296, 758, 1296, 0, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 851, 1045, 1045, 0, 1037, 1037, + 1037, 0, 0, 0, 18, 18, 18, 18, 18, 18, + 0, 0, 0, 131, 130, 119, 0, 0, 135, 0, + 106, 151, 151, 148, 151, 151, 1023, 1015, 0, 958, + 0, 0, 527, 125, 527, 527, 527, 527, 527, 159, + 527, 527, 875, 0, 101, 101, 101, 101, 0, 0, + + 872, 846, 0, 0, 0, 0, 109, 854, 854, 0, + 802, 0, 1296, 760, 700, 700, 700, 700, 700, 700, + 700, 700, 700, 159, 700, 700, 700, 700, 683, 683, + 683, 683, 683, 683, 159, 683, 683, 188, 188, 188, + 188, 188, 188, 159, 188, 188, 0, 810, 1296, 1296, + 0, 0, 0, 0, 0, 0, 0, 0, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 499, + 1228, 1228, 1199, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 288, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 277, 274, + 460, 0, 278, 286, 95, 1228, 1228, 1228, 1228, 1228, + + 1228, 1228, 1228, 1228, 273, 1228, 0, 190, 1122, 1228, + 1228, 1228, 1228, 1228, 1228, 98, 1228, 1228, 1228, 1228, + 441, 337, 1228, 1228, 1228, 1228, 495, 1228, 1228, 901, + 1228, 1228, 1228, 499, 1228, 1228, 1228, 1228, 324, 1228, + 1228, 1228, 1228, 343, 1228, 1228, 1228, 1228, 1228, 266, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 442, 444, + 0, 0, 1228, 1228, 166, 446, 1228, 342, 434, 1228, + 1228, 863, 447, 1228, 1228, 463, 1228, 448, 1228, 376, + 1228, 494, 1228, 1258, 1228, 1228, 1228, 280, 1228, 608, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 246, 1228, 1228, + + 449, 1228, 1228, 1228, 126, 1228, 1228, 1228, 1228, 1228, + 462, 1228, 383, 384, 1228, 1228, 336, 1228, 1228, 1228, + 1228, 1228, 1228, 491, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 450, 1228, 1228, 1228, 1228, 952, 1256, + 1228, 1228, 1228, 179, 1228, 1228, 1228, 1228, 1228, 1228, + 160, 1228, 1228, 395, 1228, 1228, 461, 1228, 355, 1228, + 905, 1228, 1228, 1228, 1228, 1228, 451, 1228, 1228, 1228, + 1228, 1228, 1228, 382, 1228, 1228, 381, 1228, 861, 1228, + 452, 469, 1228, 1228, 334, 453, 454, 1228, 346, 1228, + 1228, 1228, 1228, 1228, 464, 1228, 1228, 1228, 380, 465, + + 177, 345, 253, 1228, 1228, 1228, 389, 317, 388, 1228, + 398, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 254, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 760, 1228, 1228, 264, 256, 344, + 1228, 1228, 1228, 1228, 1228, 1228, 267, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 258, + 1228, 913, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 455, 1228, 939, 1228, 1228, 1228, 328, 456, 1228, 1228, + 906, 1228, 1228, 1228, 1228, 1228, 1168, 1228, 1228, 1228, + 364, 466, 1228, 1228, 458, 262, 1228, 852, 1228, 1228, + + 1228, 1228, 1228, 323, 1228, 908, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 492, 347, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1257, 1228, 1228, 284, 1228, 255, 1228, 0, 0, 1296, + 1296, 0, 0, 0, 0, 1296, 1296, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1296, 1291, 1296, 1296, + 1296, 1296, 1296, 1296, 0, 0, 0, 0, 0, 824, + 0, 0, 0, 977, 977, 977, 977, 977, 977, 977, + 977, 159, 977, 977, 977, 977, 0, 77, 65, 65, + 65, 65, 65, 1296, 1296, 1296, 63, 1296, 1296, 1296, + + 1296, 1296, 46, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 59, 1296, 1296, 1296, 71, 70, 1296, 1296, 68, 1296, + 1296, 0, 1028, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 951, 0, 0, 951, 0, 0, 0, 1047, 1047, 1047, + 1047, 1047, 1047, 1047, 0, 98, 0, 0, 0, 1065, + 0, 0, 1146, 1193, 0, 1141, 1170, 1173, 1174, 1175, + 1178, 1181, 1182, 1183, 0, 0, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 94, 1296, 91, 1296, 713, 1296, 1296, + 1296, 1296, 1296, 1296, 1143, 1138, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1262, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1268, 674, 1212, 1296, 436, 1296, + 1296, 1222, 864, 1296, 1296, 128, 610, 0, 0, 1296, + 1296, 0, 1296, 1296, 1296, 1296, 954, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 919, 1200, 943, 1296, 1296, + 953, 1296, 1296, 1296, 1296, 83, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 788, 1296, 1296, 963, 1169, 1171, + 1177, 1179, 1296, 1296, 1296, 946, 1296, 1296, 1296, 1296, + + 1296, 1275, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1225, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1074, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 966, 1080, 1121, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 931, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 852, 705, 1296, + 1296, 1296, 112, 1296, 0, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 743, 743, 743, 743, 743, + + 743, 743, 743, 743, 743, 743, 1296, 939, 1296, 1296, + 940, 745, 1296, 1296, 1296, 1296, 1296, 940, 0, 1296, + 1296, 1296, 94, 1296, 91, 1296, 713, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1268, 674, 1212, 1296, 436, 1296, 1296, 1222, 864, 1296, + 1296, 128, 610, 1296, 1296, 1296, 1296, 1296, 1296, 954, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 919, 1200, + 943, 1296, 1296, 953, 1296, 1296, 1296, 1296, 83, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 750, 1296, 1296, + 963, 1296, 1296, 1296, 946, 1296, 1296, 1296, 1296, 1296, + 1275, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1225, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1074, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 966, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 931, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 705, 1296, 1296, 1296, 112, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 743, 743, 743, 743, 743, 743, 1296, 939, 1296, 1296, + 940, 745, 1296, 1296, 1296, 1296, 1296, 940, 1296, 1296, + 1296, 1296, 1296, 1296, 788, 1296, 1296, 1296, 0, 1045, + 1045, 609, 1045, 221, 221, 1045, 1045, 1045, 1045, 851, + 0, 1045, 0, 1037, 1037, 127, 0, 0, 0, 15, + 0, 18, 18, 18, 0, 18, 0, 0, 129, 0, + 137, 0, 151, 151, 148, 151, 1023, 0, 1015, 0, + 0, 127, 527, 527, 527, 527, 527, 527, 527, 0, + + 527, 0, 0, 0, 0, 0, 846, 840, 0, 854, + 107, 802, 0, 1296, 700, 127, 0, 700, 700, 700, + 700, 700, 700, 700, 700, 700, 697, 700, 127, 683, + 683, 683, 683, 683, 683, 683, 681, 127, 188, 188, + 188, 188, 188, 188, 188, 188, 810, 671, 1296, 0, + 0, 0, 0, 0, 0, 0, 0, 1228, 1228, 1228, + 1228, 1228, 499, 499, 500, 499, 1228, 94, 1228, 91, + 1228, 1228, 1228, 1228, 713, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 277, 0, 0, 278, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 301, 1228, 1228, 1228, 1228, 1228, 1228, + + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 441, 337, 209, 1228, 1228, 1228, 495, 495, 483, 1228, + 240, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 330, 1228, 1228, 324, 1262, 1228, 1228, + 0, 287, 285, 0, 343, 1228, 1228, 341, 1228, 1228, + 1228, 266, 1228, 326, 1228, 1228, 1228, 1228, 1228, 401, + 1228, 1228, 442, 443, 444, 445, 192, 1212, 446, 1228, + 342, 1228, 436, 494, 447, 1228, 1228, 463, 0, 1228, + 448, 1228, 376, 1228, 494, 494, 1222, 481, 1228, 864, + 1228, 1228, 280, 128, 610, 1228, 0, 1228, 1228, 0, + + 1228, 1228, 1228, 1228, 498, 1228, 246, 1228, 1228, 449, + 1228, 1228, 221, 1228, 1228, 1228, 1228, 1228, 1228, 462, + 0, 384, 1228, 403, 1228, 1228, 1228, 1228, 919, 491, + 491, 478, 1200, 221, 1228, 1228, 1228, 953, 1228, 1228, + 1228, 1228, 450, 83, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 461, 0, 1228, 1228, 355, 0, 249, 788, + 1228, 1228, 1228, 1228, 451, 963, 1228, 348, 1228, 1228, + 1228, 1228, 1228, 1228, 503, 381, 1228, 1228, 1228, 469, + 0, 1228, 1228, 946, 1228, 454, 1228, 346, 1228, 1228, + + 1228, 1228, 1228, 1228, 1228, 464, 0, 221, 1228, 1228, + 1228, 380, 1228, 465, 0, 177, 1228, 1228, 1228, 317, + 388, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 0, 387, 0, 1228, 1225, + 1228, 1228, 1228, 357, 1228, 1228, 1228, 1228, 1228, 209, + 399, 1228, 1228, 1228, 1228, 1228, 325, 264, 1228, 329, + 1228, 1228, 1228, 365, 1228, 1228, 1228, 1228, 267, 1228, + 477, 1074, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 258, 1228, 1228, 1228, 966, 482, 1228, 1228, 1228, + 1228, 455, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + + 1228, 328, 1228, 456, 457, 931, 1228, 1228, 1228, 1228, + 1228, 1228, 485, 1228, 338, 1228, 1228, 364, 0, 466, + 0, 1228, 296, 1228, 458, 459, 262, 1228, 852, 1228, + 1228, 1228, 705, 1228, 1228, 323, 1228, 112, 1228, 0, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 743, 743, 743, 743, 743, 743, 743, + 743, 743, 1228, 939, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 221, 1228, 492, 492, 479, 347, 745, 298, 1228, + 1228, 1228, 1228, 1228, 940, 1228, 1228, 245, 0, 0, + + 943, 0, 0, 0, 0, 780, 1296, 1296, 0, 0, + 0, 0, 0, 0, 0, 0, 1296, 0, 1296, 785, + 1296, 1296, 1296, 0, 0, 127, 0, 0, 127, 127, + 824, 0, 0, 0, 0, 0, 0, 0, 0, 977, + 127, 977, 977, 977, 977, 977, 977, 977, 977, 977, + 0, 977, 977, 77, 77, 65, 65, 65, 65, 65, + 1296, 1296, 1296, 1296, 64, 1296, 62, 1296, 54, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 73, 1296, 1296, 1296, + 1296, 1296, 1296, 1314, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 542, 0, 0, 0, 0, 951, + + 0, 947, 951, 0, 0, 0, 1047, 609, 1047, 1047, + 1047, 1047, 1047, 1047, 0, 0, 0, 0, 0, 0, + 0, 0, 112, 1296, 1296, 1296, 1296, 0, 32, 96, + 719, 93, 713, 712, 711, 1296, 97, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1056, 1296, 1210, 1296, 1296, 1296, 0, + 0, 0, 0, 1296, 0, 0, 0, 0, 1296, 728, + 1296, 1263, 1296, 1296, 1296, 1296, 1296, 897, 128, 128, + 1234, 1296, 1296, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1232, 1296, 1296, 1296, 1296, 111, 1296, 0, + + 827, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 0, 1296, 1296, 1296, 953, 925, 938, 703, 1296, + 769, 934, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 143, + 145, 1296, 114, 1296, 1296, 1296, 1296, 1296, 816, 1296, + 1296, 1296, 710, 1296, 1296, 1296, 1296, 964, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 567, 1296, 1296, + 1296, 1296, 1296, 34, 1075, 1296, 965, 1276, 1296, 1296, + 1296, 1296, 0, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 708, 1280, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 705, 43, 1296, 1296, 1296, 0, 0, 0, 0, + 0, 0, 0, 0, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 0, 1296, 744, + 744, 744, 744, 744, 744, 744, 1296, 744, 744, 744, + 744, 744, 744, 1271, 1296, 770, 936, 1296, 750, 32, + 96, 719, 93, 712, 711, 1296, 97, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1056, 1296, 1210, 1296, 1296, 1296, 1296, + 1296, 728, 1296, 1296, 1296, 1296, 1296, 1296, 897, 1296, + 1296, 1296, 1296, 1296, 1296, 111, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 953, 925, 938, 703, 1296, 752, 934, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 143, 145, 1296, 114, 1296, 1296, + 1296, 1296, 1296, 816, 1296, 1296, 1296, 710, 1296, 1296, + 1296, 1296, 964, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 34, 1075, 1296, + 965, 1276, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 708, 1280, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 43, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 744, 1296, 744, 744, 744, 744, 744, 1271, + + 1296, 770, 936, 1296, 1296, 1296, 1296, 1296, 1296, 769, + 1296, 1296, 1296, 708, 0, 1045, 1045, 1045, 221, 221, + 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 0, 1045, 0, 1037, 1037, + 127, 0, 0, 0, 0, 1007, 0, 0, 0, 18, + 18, 18, 18, 18, 18, 18, 18, 0, 18, 0, + 0, 0, 0, 151, 151, 1023, 0, 1015, 0, 0, + 0, 527, 527, 142, 144, 527, 113, 527, 0, 527, + 0, 0, 0, 882, 846, 0, 108, 800, 1296, 700, + 0, 0, 685, 700, 700, 142, 144, 700, 113, 700, + + 700, 700, 683, 683, 142, 144, 683, 113, 683, 188, + 188, 142, 144, 188, 113, 188, 188, 1296, 0, 208, + 0, 0, 0, 0, 112, 1228, 1228, 1228, 32, 500, + 500, 500, 96, 719, 270, 1228, 269, 93, 713, 712, + 1228, 711, 1228, 1228, 1228, 1228, 1228, 279, 0, 0, + 1228, 275, 271, 1228, 1228, 1228, 301, 97, 1228, 209, + 1228, 1228, 1228, 1228, 281, 239, 291, 1228, 1228, 1228, + 1228, 1228, 1228, 209, 209, 1228, 1228, 1228, 0, 1228, + 240, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 506, 330, 1228, 1228, 1228, 1210, + + 1228, 287, 285, 0, 0, 218, 1228, 341, 430, 1228, + 1228, 0, 0, 1228, 326, 1228, 0, 1228, 1228, 728, + 401, 1228, 1263, 1228, 443, 445, 1228, 1228, 1228, 431, + 242, 1228, 0, 0, 1228, 1228, 1228, 426, 427, 428, + 1228, 1228, 897, 128, 1228, 1228, 1228, 0, 0, 0, + 0, 1228, 1228, 1228, 1228, 1228, 0, 0, 0, 0, + 1292, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 385, 1228, + 1228, 1228, 111, 221, 1228, 0, 1228, 1228, 1228, 1228, + 1228, 241, 0, 0, 379, 1228, 1228, 1228, 1228, 1228, + 1228, 221, 1228, 1228, 1228, 1228, 953, 925, 938, 703, + + 1228, 769, 934, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 143, 145, 1228, 114, 1228, 1228, 282, 1228, 1228, 1228, + 0, 0, 290, 816, 0, 249, 1228, 1228, 283, 1228, + 250, 1228, 348, 1228, 710, 1228, 308, 429, 1228, 503, + 503, 1228, 1228, 1228, 1228, 378, 1228, 1228, 0, 0, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 964, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 0, 0, 1228, 1228, 1228, 1228, 0, + 0, 1228, 295, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 387, 0, + + 0, 397, 1228, 1228, 1228, 357, 0, 268, 1228, 350, + 1228, 1228, 1228, 1228, 1228, 1228, 399, 1228, 1228, 1228, + 1228, 1228, 325, 1228, 1228, 293, 1228, 365, 0, 1228, + 1228, 1228, 34, 1075, 1228, 965, 1228, 1228, 306, 1228, + 1228, 1228, 1228, 504, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 260, 400, 457, 1228, + 708, 510, 1228, 1228, 1228, 490, 490, 1228, 338, 1228, + 1228, 1228, 0, 0, 0, 1228, 296, 1228, 459, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 247, + 493, 377, 705, 43, 1228, 1228, 1228, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 257, 1228, 1228, 1228, + 221, 1228, 432, 744, 744, 744, 744, 744, 1228, 744, + 744, 744, 744, 744, 298, 1228, 1228, 770, 936, 1228, + 0, 349, 1228, 1228, 245, 0, 0, 0, 0, 780, + 0, 0, 0, 0, 781, 1296, 1296, 1296, 0, 0, + 785, 0, 0, 0, 0, 0, 0, 1296, 0, 1296, + + 784, 785, 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 1296, 1296, 1296, 0, 0, 0, 994, 824, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 977, 975, 976, 977, + 977, 142, 144, 977, 113, 977, 977, 978, 977, 977, + 0, 77, 65, 65, 65, 65, 65, 1296, 1296, 1296, + 1296, 64, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 42, + 1296, 1296, 73, 75, 76, 74, 1296, 1296, 72, 0, + 0, 0, 536, 0, 0, 0, 537, 0, 639, 0, + 0, 0, 951, 0, 951, 0, 0, 0, 0, 1047, + + 1047, 0, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, + 1047, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 111, 1296, 814, 1296, 1295, 0, 712, 711, 1296, + 92, 0, 0, 0, 1296, 1296, 1296, 1296, 1296, 1233, + 1233, 1296, 1296, 0, 1296, 885, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 0, 1067, 1066, 1066, 1296, + 0, 0, 0, 560, 0, 702, 1296, 1296, 1296, 28, + 1296, 1296, 889, 1296, 1296, 1296, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1296, 1296, 1296, 1296, + 1296, 827, 827, 827, 827, 827, 827, 1296, 1296, 1296, + + 1296, 1227, 1296, 1296, 1296, 1296, 0, 1296, 1296, 1296, + 0, 0, 0, 1296, 1296, 932, 1296, 1296, 147, 1296, + 1296, 1296, 116, 114, 114, 1296, 1296, 1296, 1224, 1296, + 1296, 1296, 1296, 710, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 0, 0, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 853, 1296, 1296, 962, 1296, 1296, 1296, + 1296, 1156, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 931, + 1296, 1296, 0, 955, 1296, 1296, 1296, 1296, 957, 1296, + 1296, 1296, 1296, 1296, 708, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 599, 1296, 602, 597, 1296, + 600, 605, 604, 601, 603, 1296, 1296, 1296, 1296, 902, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 88, 1296, 1296, 1296, + 1296, 1269, 1296, 1296, 1266, 1296, 1296, 0, 0, 0, + 0, 1296, 1296, 1296, 933, 0, 1296, 92, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 0, 1296, 885, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 28, 1296, 1296, 757, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1227, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 932, 1296, 1296, + 147, 1296, 1296, 1296, 116, 1296, 1296, 1296, 1224, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 853, 1296, 1296, 962, 1296, 1296, 1296, 1296, 1156, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 931, 1296, 1296, 1296, + 1296, 1296, 1296, 957, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 599, + 1296, 602, 597, 1296, 600, 605, 604, 601, 603, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 88, 1296, 1296, + 1296, 1296, 1269, 1296, 1296, 1266, 1296, 1296, 1296, 1296, + 1296, 933, 1296, 1296, 889, 1296, 1296, 1296, 1296, 1296, + 1296, 0, 1045, 27, 1045, 0, 172, 1045, 173, 170, + 176, 175, 850, 1045, 225, 227, 223, 1045, 222, 230, + 229, 226, 228, 0, 1045, 1045, 1038, 1037, 1031, 0, + + 0, 0, 0, 0, 0, 18, 7, 8, 18, 14, + 12, 10, 9, 11, 18, 0, 18, 0, 0, 0, + 0, 149, 0, 0, 1023, 0, 1015, 0, 958, 0, + 146, 527, 115, 113, 523, 0, 0, 527, 0, 0, + 875, 0, 846, 0, 1296, 0, 687, 0, 0, 0, + 0, 146, 700, 115, 700, 700, 700, 700, 146, 683, + 115, 683, 683, 146, 188, 115, 188, 188, 188, 1296, + 0, 0, 0, 111, 1228, 814, 1228, 270, 1228, 269, + 712, 272, 711, 1228, 1228, 1228, 1228, 1228, 279, 0, + 1228, 275, 271, 1228, 1228, 1228, 92, 0, 1228, 1228, + + 1228, 281, 239, 291, 1228, 386, 438, 439, 440, 433, + 1228, 1228, 476, 1233, 1233, 1228, 1228, 0, 1228, 885, + 1228, 1228, 1228, 1228, 358, 359, 1228, 1228, 1228, 360, + 1228, 1228, 1228, 1228, 340, 1228, 430, 1228, 1228, 1067, + 209, 1228, 0, 1228, 1228, 1228, 1228, 28, 435, 1228, + 431, 242, 1228, 0, 0, 1228, 1228, 1228, 426, 427, + 428, 1228, 889, 1228, 1228, 1228, 1228, 0, 0, 0, + 0, 1228, 1228, 1228, 1228, 1228, 497, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 385, 1228, 316, 1228, 1228, 1228, + 1228, 1228, 315, 1228, 241, 0, 0, 379, 505, 1228, + + 1228, 1228, 1228, 0, 1228, 1228, 1228, 1228, 0, 1228, + 1228, 932, 1228, 1228, 147, 1228, 1228, 1228, 116, 114, + 1228, 1228, 282, 1228, 1224, 1228, 0, 0, 290, 0, + 1228, 1228, 283, 1228, 250, 251, 310, 710, 304, 302, + 308, 429, 1228, 1228, 1228, 1228, 1228, 1228, 378, 309, + 0, 0, 467, 367, 468, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 407, 172, 1228, 173, 1228, + 170, 176, 175, 1228, 0, 0, 1228, 1228, 1228, 1228, + 0, 0, 1228, 1228, 295, 1228, 1228, 1228, 1228, 1228, + 0, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + + 1228, 396, 0, 397, 853, 1228, 1228, 0, 268, 962, + 350, 352, 351, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1156, 293, 1228, 0, 402, 1228, + 1228, 1228, 1228, 311, 305, 303, 306, 1228, 1228, 931, + 307, 504, 504, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 957, 1228, 1228, 1228, 1228, 1228, 260, 400, 1228, 708, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 391, 1228, + 0, 0, 0, 393, 1228, 1228, 1228, 225, 1228, 227, + 223, 1228, 222, 230, 229, 226, 1228, 228, 1228, 247, + 493, 493, 480, 377, 1228, 1228, 1228, 0, 0, 191, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 88, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 0, 1228, 265, 257, 259, 1228, 1228, 1228, 432, 1228, + 1228, 933, 349, 1228, 1228, 211, 0, 0, 0, 0, + 780, 1296, 1296, 1296, 0, 0, 785, 0, 0, 785, + 0, 785, 0, 0, 1296, 0, 1296, 1296, 1296, 1296, + 0, 0, 0, 824, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 977, 146, 977, 115, 977, 973, 977, 977, 77, 77, + 65, 65, 65, 65, 1296, 0, 1296, 1296, 1296, 0, + 1296, 1296, 1296, 1296, 1296, 1296, 51, 1296, 1296, 75, + 76, 74, 1296, 1296, 72, 0, 540, 534, 538, 541, + 535, 539, 0, 0, 0, 947, 942, 0, 942, 0, + 0, 27, 1047, 172, 1047, 173, 170, 176, 175, 1047, + 87, 1047, 1047, 1062, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1296, 1296, 832, 90, 1139, 0, 1296, + 1296, 838, 1296, 1226, 1296, 1296, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1231, 1296, 1296, 1296, 1296, 1296, 772, + 1296, 1248, 1296, 1296, 1296, 1296, 1067, 1067, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 36, 1296, 1296, + 1296, 1296, 827, 827, 827, 827, 827, 1296, 1296, 1296, + 1296, 0, 1296, 0, 0, 1296, 799, 1296, 1296, 945, + 1223, 1296, 928, 0, 924, 1296, 932, 1296, 1296, 122, + 124, 120, 116, 116, 123, 1296, 815, 1296, 1296, 903, + 1201, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 955, + + 1296, 1296, 1296, 1296, 774, 1296, 1296, 1296, 1296, 1296, + 1296, 0, 1211, 1296, 1265, 1296, 1296, 1296, 1296, 1296, + 853, 1296, 1296, 1296, 1296, 1296, 1226, 1156, 1296, 1270, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 0, 1296, 914, + 1296, 1296, 956, 1296, 1296, 1296, 1296, 904, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 902, 1289, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 84, 1296, 1296, 1296, 1296, 568, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1264, + 911, 1296, 0, 0, 808, 0, 849, 940, 1296, 1296, + 1296, 933, 0, 90, 1296, 1296, 838, 1296, 1226, 1296, + 1296, 0, 1296, 1296, 1296, 1296, 1296, 753, 1296, 1248, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 36, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1223, 1296, 928, 924, + 1296, 1296, 1296, 122, 124, 120, 123, 1296, 815, 1296, + 1296, 903, 1201, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 955, 1296, 1296, 1296, 1296, 753, 1296, 1296, 1296, + + 1296, 1296, 1296, 1211, 1296, 1265, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1226, 1296, 1270, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 914, 1296, 1296, + 1296, 1296, 1296, 904, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 84, 1296, 1296, 1296, 1296, 568, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 911, 1296, 1296, 1296, 1296, 1296, 772, 1296, + 1296, 1296, 774, 1296, 1296, 0, 1045, 1045, 235, 174, + + 850, 1045, 1045, 0, 1045, 1045, 1037, 0, 0, 0, + 0, 0, 0, 18, 18, 16, 0, 18, 0, 0, + 0, 0, 149, 0, 848, 1023, 0, 1015, 0, 0, + 121, 115, 0, 0, 527, 0, 875, 846, 0, 1296, + 0, 0, 0, 121, 700, 700, 696, 700, 121, 683, + 683, 121, 188, 188, 188, 1296, 0, 0, 0, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 90, 0, 1228, 424, + 1228, 276, 1228, 1228, 838, 1228, 386, 438, 439, 440, + 433, 1228, 1226, 0, 1228, 1228, 0, 0, 1228, 1228, + 1228, 1228, 1228, 358, 0, 359, 0, 1228, 1228, 772, + + 360, 0, 1228, 1228, 1228, 1228, 340, 1228, 1228, 1228, + 1228, 1228, 1067, 1228, 1228, 1228, 1228, 1228, 437, 1228, + 0, 339, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 0, + 0, 0, 0, 0, 1228, 36, 1228, 243, 1228, 1228, + 1228, 1228, 939, 1228, 1228, 1228, 1228, 316, 1228, 1228, + 1228, 1228, 1228, 315, 1228, 0, 1228, 0, 1228, 1228, + 1228, 235, 1223, 1228, 928, 1228, 924, 1228, 1228, 1228, + 122, 118, 118, 124, 120, 116, 123, 1228, 815, 1228, + 0, 0, 1228, 903, 1201, 251, 252, 310, 304, 302, + 1228, 1228, 1228, 163, 1228, 1228, 309, 0, 467, 0, + + 367, 468, 0, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 955, 1228, 1228, 174, 0, 0, 470, 0, 0, + 216, 0, 1228, 1228, 774, 1228, 0, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1211, 1228, 189, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 396, 0, 853, 1228, 1228, 0, + 352, 351, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 289, 1226, 219, 1156, 1228, 0, 402, 1228, 1228, 1228, + 1228, 311, 305, 303, 1228, 1228, 1228, 307, 1228, 1228, + 1228, 914, 1228, 1228, 956, 1228, 1228, 1228, 1228, 1228, + 904, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 391, + + 1228, 1228, 0, 0, 393, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 84, 1228, 1228, 1228, 1228, 568, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1264, 411, 1228, 911, 263, 1228, + 0, 1228, 265, 259, 1228, 1228, 1228, 1228, 1228, 211, + 0, 0, 0, 0, 0, 0, 0, 781, 0, 779, + 782, 1296, 0, 0, 0, 0, 0, 785, 0, 0, + + 563, 0, 1296, 786, 1296, 1296, 0, 0, 0, 823, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 977, 121, 977, 973, + 977, 977, 0, 77, 65, 65, 1296, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1231, 1296, 1296, 53, 0, 0, + 1296, 58, 64, 1296, 1296, 57, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 0, 0, 0, 0, 0, 0, 0, + 1047, 174, 1047, 1047, 1047, 0, 0, 0, 0, 0, + 0, 1307, 1058, 0, 1296, 1296, 1192, 1296, 1296, 566, + + 1226, 1226, 1296, 1296, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 900, 1283, 1296, + 1296, 771, 916, 1296, 1296, 1296, 569, 1067, 1296, 729, + 1296, 1296, 1296, 888, 1290, 1296, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 1296, + 1296, 827, 827, 827, 827, 827, 827, 827, 1296, 1293, + 792, 0, 0, 1296, 0, 1296, 1296, 1296, 45, 0, + 1296, 1296, 1296, 122, 122, 124, 124, 120, 120, 123, + 123, 1296, 1296, 1296, 789, 903, 1296, 1296, 764, 1296, + + 1296, 1296, 1296, 1254, 1296, 1296, 1296, 910, 773, 1296, + 918, 1277, 1296, 835, 1296, 0, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 909, 0, 955, 1296, 576, + 1296, 1296, 1296, 0, 0, 0, 0, 915, 904, 1296, + 1296, 1296, 0, 0, 0, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 907, 0, 0, 0, + 944, 0, 0, 0, 0, 0, 0, 0, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 0, 1287, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 766, 1296, 911, 1296, 0, 0, 1296, 1296, + 1296, 0, 1296, 1296, 566, 1296, 1296, 0, 900, 1296, + 1296, 753, 916, 1296, 1296, 1296, 1296, 729, 1296, 1296, + 1296, 756, 1290, 1296, 35, 1296, 1296, 1296, 1293, 792, + 1296, 1296, 1296, 1296, 45, 1296, 1296, 1296, 1296, 1296, + 1296, 751, 1296, 1296, 764, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 910, 753, 1296, 918, 1277, 1296, 835, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 909, + + 1296, 1296, 1296, 915, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 907, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 766, 1296, 1296, 1296, 1296, 1296, 771, 888, 789, + 773, 1296, 1296, 1306, 1045, 1045, 1045, 1045, 232, 765, + 1045, 1037, 0, 0, 0, 0, 0, 17, 18, 0, + 18, 0, 0, 0, 0, 1023, 0, 1015, 0, 0, + 121, 0, 0, 527, 846, 0, 1296, 0, 0, 0, + + 700, 700, 0, 974, 683, 683, 188, 188, 188, 1296, + 0, 0, 207, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 0, 1228, 1228, 276, 1228, 1228, 566, 1228, 1226, 1226, + 0, 1228, 1228, 0, 0, 900, 1228, 1228, 771, 0, + 0, 363, 1228, 0, 361, 916, 1228, 1228, 1228, 1228, + 1228, 1228, 318, 729, 1228, 1228, 0, 339, 1228, 1228, + 1228, 1228, 294, 888, 1228, 1228, 0, 0, 0, 0, + 0, 1228, 35, 243, 0, 0, 1228, 215, 1228, 1228, + 1228, 931, 1228, 1228, 1228, 1228, 1228, 792, 0, 1228, + 1228, 1228, 1228, 45, 1228, 1228, 1228, 1228, 122, 118, + + 118, 1228, 120, 178, 120, 118, 118, 1228, 1228, 1228, + 0, 0, 789, 903, 252, 1228, 1228, 1228, 764, 1228, + 0, 0, 0, 0, 0, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1254, 1228, 1228, 1228, 0, 910, 773, 1228, + 0, 1228, 1228, 918, 1228, 1228, 835, 1228, 1228, 1228, + 1228, 1228, 169, 1228, 1228, 1228, 0, 1228, 1228, 0, + 1228, 1228, 1228, 496, 1228, 1228, 299, 1228, 289, 1228, + 0, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 909, 1228, + 1228, 1228, 1228, 1228, 314, 0, 0, 915, 904, 1228, + 1228, 1228, 1228, 0, 164, 1228, 1228, 392, 1228, 0, + + 0, 394, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 907, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 231, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 0, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 766, 1228, 1228, 911, 263, 1228, + 1228, 261, 248, 1228, 1228, 1228, 0, 779, 0, 0, + 0, 0, 0, 0, 1296, 0, 0, 786, 0, 0, + 0, 0, 0, 1296, 1296, 1296, 0, 0, 0, 1305, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 587, 0, 0, 0, 0, 0, 981, 977, 977, 977, + 77, 77, 65, 65, 1296, 0, 60, 60, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1296, 1296, 53, 0, 1296, 44, 1296, 57, 0, 1296, + 1296, 50, 1296, 1296, 68, 0, 0, 0, 0, 942, + 0, 0, 1047, 1047, 765, 1047, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1296, 1296, 1296, 1247, + 1296, 1296, 0, 0, 0, 0, 0, 611, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 900, 1296, 1284, 916, + 1296, 714, 1296, 1282, 1296, 1125, 1296, 1296, 791, 0, + 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, + 0, 1296, 730, 0, 0, 827, 827, 827, 827, 827, + 827, 827, 827, 1296, 1293, 1293, 792, 0, 1296, 0, + 0, 776, 0, 0, 0, 921, 1296, 45, 0, 769, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1250, 1296, 1296, + 1296, 1296, 551, 1278, 910, 790, 1296, 1296, 1296, 110, + 1296, 1296, 0, 1296, 1296, 1296, 1296, 898, 1296, 731, + + 922, 1296, 1296, 1296, 0, 1296, 1296, 1296, 909, 0, + 1296, 1296, 1296, 1296, 0, 0, 0, 915, 1296, 777, + 1296, 0, 0, 0, 0, 1296, 1296, 1296, 1296, 720, + 1296, 727, 1296, 928, 926, 907, 0, 0, 675, 1014, + 0, 0, 105, 0, 0, 0, 1296, 1296, 1296, 1296, + 1296, 1296, 0, 0, 0, 1296, 86, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 768, 1296, 0, 1296, 1296, 1281, 751, 1296, 1247, 1296, + 1296, 0, 1296, 1296, 714, 1296, 1296, 1125, 1296, 1296, + + 791, 1296, 730, 1296, 1296, 776, 921, 1296, 769, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1250, 1296, 1296, 1296, + 1296, 551, 1278, 790, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 898, 1296, 731, 922, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 753, 1296, 1296, + 1296, 1296, 1296, 720, 1296, 727, 1296, 928, 926, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 86, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 768, 1296, 1296, 1296, 1296, 777, 1045, 1045, 0, 1045, + + 767, 1037, 1009, 0, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, 1013, 0, 0, 0, 0, + 0, 353, 0, 0, 0, 1296, 0, 0, 0, 700, + 698, 683, 682, 188, 184, 188, 1296, 519, 1228, 1228, + 425, 417, 1228, 1228, 1228, 1228, 460, 1228, 1228, 1228, + 1228, 313, 0, 1228, 1228, 0, 0, 900, 1228, 0, + 0, 363, 0, 362, 0, 361, 0, 916, 1228, 1228, + 1228, 714, 1228, 318, 1228, 1125, 0, 1228, 1228, 1228, + 1228, 412, 294, 791, 0, 0, 0, 0, 237, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 730, 1228, 1293, 1292, + + 792, 1228, 0, 776, 0, 921, 1228, 45, 320, 769, + 1228, 1228, 124, 123, 1228, 1228, 1228, 0, 0, 1228, + 1228, 404, 1228, 0, 0, 0, 0, 0, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 551, 1228, 0, + 910, 790, 0, 1228, 184, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 0, 898, 0, 1228, 1228, 1228, + 496, 496, 484, 1228, 731, 299, 922, 1228, 0, 1228, + 1228, 0, 1228, 1228, 1228, 1228, 909, 1228, 1228, 1228, + 1228, 1228, 314, 0, 915, 1228, 777, 1228, 321, 1228, + 1228, 392, 1228, 0, 0, 394, 1228, 720, 1228, 727, + + 1228, 507, 928, 926, 907, 0, 0, 0, 0, 0, + 520, 0, 0, 0, 0, 0, 0, 0, 501, 502, + 234, 1228, 1228, 1228, 1228, 1228, 1228, 0, 1228, 1228, + 86, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 354, 1228, 1228, 1228, 1228, 1228, 768, 1228, 1228, 1228, + 248, 1228, 1228, 0, 0, 0, 779, 1296, 0, 0, + 0, 0, 786, 0, 0, 1296, 1296, 1296, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 977, 0, 0, 65, 65, + + 1296, 0, 0, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1296, 1296, 0, 0, 0, 44, 78, 0, + 0, 1296, 1296, 50, 52, 69, 68, 543, 0, 0, + 31, 0, 0, 0, 1047, 85, 767, 0, 0, 0, + 629, 0, 0, 0, 0, 0, 0, 1296, 1296, 1296, + 1247, 884, 1296, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1296, 1296, 763, + 1296, 1296, 1296, 0, 0, 0, 0, 0, 0, 0, + + 634, 0, 0, 0, 0, 1296, 0, 0, 0, 0, + 827, 827, 827, 827, 827, 827, 827, 927, 0, 792, + 1296, 863, 0, 0, 0, 920, 0, 79, 1296, 1296, + 1296, 778, 1245, 1244, 1250, 0, 1296, 1296, 1296, 1296, + 736, 1296, 1296, 1296, 1296, 1198, 1197, 1196, 1195, 1296, + 1296, 912, 709, 1296, 554, 1296, 715, 0, 1274, 1296, + 1296, 0, 0, 0, 955, 706, 1296, 1296, 0, 0, + 775, 1296, 0, 0, 1296, 1296, 1296, 1296, 1296, 598, + 0, 0, 0, 0, 0, 0, 0, 1296, 1296, 585, + 1296, 570, 1296, 929, 37, 1296, 1296, 571, 552, 941, + + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 577, 1296, 1296, + 1296, 1296, 1296, 1296, 1246, 1296, 949, 917, 1296, 0, + 940, 1296, 1296, 884, 1296, 0, 1296, 1296, 763, 1296, + 1296, 1296, 1296, 927, 1296, 920, 79, 1296, 1296, 1296, + 778, 1245, 1244, 1296, 1296, 1296, 1296, 736, 1296, 1296, + 1296, 1296, 1296, 1296, 912, 709, 1296, 554, 1296, 715, + 1296, 1296, 706, 1296, 753, 1296, 1296, 1296, 1296, 1296, + 1296, 598, 1296, 1296, 585, 1296, 570, 1296, 37, 1296, + 1296, 571, 552, 941, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 577, 1296, 1296, 1296, 1296, 1296, 1296, 1246, 1296, + + 949, 917, 1296, 940, 1296, 775, 171, 1045, 0, 220, + 224, 1030, 0, 0, 0, 0, 13, 0, 980, 0, + 0, 136, 140, 1016, 0, 0, 353, 842, 0, 0, + 1296, 0, 693, 0, 0, 700, 683, 188, 188, 1296, + 1228, 1228, 1228, 1228, 1228, 1228, 460, 419, 1228, 1228, + 1247, 313, 0, 884, 1228, 0, 0, 1228, 0, 0, + 0, 362, 0, 0, 0, 171, 1228, 763, 1228, 463, + 1228, 1228, 1228, 1228, 167, 0, 0, 0, 473, 1228, + 1228, 1228, 1228, 1228, 927, 1228, 462, 920, 320, 79, + 1228, 1228, 1228, 778, 461, 366, 1228, 1228, 1228, 469, + + 0, 0, 1250, 1228, 1228, 1228, 1228, 406, 1228, 1228, + 1228, 464, 465, 1228, 736, 1228, 1228, 1228, 1228, 1228, + 1228, 912, 709, 390, 0, 0, 0, 471, 1228, 1228, + 1228, 554, 0, 1228, 715, 0, 220, 1228, 1228, 0, + 409, 706, 1228, 1228, 1228, 775, 1228, 321, 1228, 1228, + 1228, 0, 466, 1228, 1228, 224, 0, 0, 0, 0, + 0, 0, 0, 521, 0, 0, 0, 0, 0, 1228, + 1228, 585, 1228, 570, 1228, 1228, 37, 1228, 1228, 571, + 552, 941, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 577, + 1228, 1228, 486, 1228, 1228, 1228, 354, 1228, 1228, 1228, + + 949, 917, 1228, 1228, 244, 940, 1228, 1050, 0, 783, + 0, 0, 0, 0, 0, 0, 626, 787, 1296, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 979, 77, 65, + 65, 1296, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1296, 49, 0, 0, 0, + 55, 1296, 69, 0, 0, 0, 0, 1047, 0, 0, + 0, 0, 0, 778, 0, 1059, 0, 0, 1296, 0, + 558, 558, 1296, 1296, 1296, 82, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 624, 1054, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1296, 1296, 1296, 1296, 1296, 0, 0, 0, 0, 633, + 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 827, 827, 827, 827, 827, 827, 1296, 864, + 0, 704, 1296, 1296, 1296, 0, 0, 1296, 1296, 1296, + 1255, 733, 0, 0, 0, 1296, 0, 1296, 0, 1085, + 1123, 0, 1251, 1296, 912, 709, 1296, 1296, 0, 0, + 1296, 1296, 0, 706, 1296, 0, 0, 0, 0, 0, + 1296, 0, 0, 1296, 579, 1296, 1296, 1296, 0, 0, + + 0, 0, 0, 0, 0, 0, 2, 1296, 1296, 574, + 573, 948, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 572, + 1296, 1296, 1296, 1296, 1005, 917, 0, 0, 596, 0, + 1296, 1296, 1296, 0, 1296, 1296, 1296, 1296, 1296, 25, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1255, 1296, 1296, + 1251, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 2, 1296, 1296, 574, 573, 948, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 572, 1296, 1296, 1296, 1296, 1005, + 1296, 24, 220, 0, 0, 0, 0, 0, 1052, 0, + 0, 0, 0, 0, 24, 686, 690, 680, 185, 188, + + 1296, 1228, 1228, 1228, 1228, 1228, 1228, 414, 1228, 0, + 1228, 0, 237, 1228, 0, 0, 0, 0, 0, 0, + 1228, 1228, 463, 319, 1228, 1228, 1228, 0, 0, 0, + 1226, 1228, 1226, 1228, 25, 1228, 462, 1228, 1228, 1228, + 461, 366, 1228, 469, 0, 0, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 464, 465, 185, 0, 1228, 1228, 1228, + 1228, 912, 709, 390, 356, 1228, 1228, 1228, 0, 1228, + 220, 0, 1228, 1228, 706, 509, 1228, 0, 1228, 1228, + 1228, 0, 466, 1228, 1228, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 181, 0, 0, 2, 1228, 1228, + + 1228, 574, 573, 948, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 572, 1228, 1228, 1228, 1228, 1005, 917, 413, 0, + 244, 1228, 0, 0, 626, 787, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 586, 0, 0, 0, 0, 65, + 65, 1296, 39, 0, 0, 0, 0, 0, 0, 0, + 60, 60, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1296, 0, 0, 55, 1296, 0, + 0, 0, 655, 24, 0, 0, 0, 0, 0, 0, + 778, 0, 0, 831, 762, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 617, + 0, 632, 0, 0, 0, 0, 0, 615, 1296, 80, + 1296, 1296, 1296, 0, 0, 0, 621, 0, 0, 0, + 701, 0, 0, 0, 0, 827, 0, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 707, 0, + 1288, 1279, 1296, 1250, 1296, 556, 1296, 0, 828, 1296, + 0, 0, 1070, 0, 0, 1251, 0, 1296, 923, 1296, + 0, 1274, 735, 1296, 0, 1296, 0, 0, 0, 0, + 0, 0, 1249, 1249, 0, 0, 0, 0, 0, 1296, + 1296, 1296, 0, 793, 0, 0, 0, 0, 0, 0, + + 722, 1296, 593, 1296, 1296, 583, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 0, 0, 0, 0, 1296, 831, + 762, 0, 1296, 80, 1296, 1296, 1296, 707, 1279, 1296, + 1296, 556, 1296, 1296, 1070, 1296, 923, 1296, 735, 1296, + 1296, 1296, 1296, 1296, 593, 1296, 1296, 583, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 220, 0, 220, + 0, 0, 0, 0, 0, 642, 0, 0, 188, 1296, + 1228, 1228, 1228, 1228, 831, 0, 762, 214, 1228, 0, + 0, 0, 0, 0, 0, 80, 1228, 319, 508, 1228, + 1228, 0, 0, 0, 1226, 1226, 1228, 707, 1228, 1228, + + 1228, 0, 0, 1228, 556, 1228, 1228, 1228, 1228, 1228, + 1070, 1251, 1228, 356, 923, 1228, 1228, 0, 1228, 0, + 220, 735, 1228, 1228, 0, 1249, 0, 1228, 374, 1228, + 1228, 233, 193, 0, 0, 0, 0, 0, 489, 0, + 203, 0, 1228, 593, 1228, 1228, 1228, 583, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 778, 0, 778, + 787, 0, 0, 564, 813, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 60, 0, 60, 0, 0, 0, + + 0, 0, 60, 61, 0, 0, 1296, 0, 638, 0, + 0, 0, 621, 0, 0, 0, 0, 0, 613, 0, + 0, 0, 0, 0, 0, 0, 631, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 0, 0, 1296, + 0, 0, 0, 1296, 1296, 0, 1230, 0, 718, 0, + 630, 0, 0, 827, 827, 0, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 707, 0, 1296, + 557, 1253, 1296, 0, 1070, 1194, 0, 0, 1272, 1296, + 0, 0, 732, 1296, 0, 0, 1296, 0, 0, 0, + 0, 0, 81, 0, 833, 1296, 1296, 312, 0, 0, + + 0, 899, 794, 23, 1296, 1296, 0, 1296, 528, 1296, + 1296, 1296, 580, 1296, 0, 0, 0, 22, 0, 1296, + 1296, 1296, 1296, 557, 1253, 1296, 1272, 1296, 1296, 1296, + 1296, 312, 1296, 1296, 1296, 528, 1296, 1296, 1296, 580, + 1296, 22, 220, 0, 1004, 0, 0, 1004, 0, 0, + 0, 188, 672, 1228, 418, 1228, 1228, 214, 0, 1228, + 0, 0, 0, 0, 0, 0, 0, 1228, 1228, 0, + 0, 168, 0, 200, 707, 1228, 1228, 467, 468, 557, + 405, 1228, 1228, 1228, 1228, 1070, 1228, 475, 1228, 375, + 1228, 220, 0, 1228, 1228, 1228, 374, 1228, 312, 0, + + 0, 199, 0, 472, 0, 488, 1228, 1228, 1228, 1228, + 528, 1228, 1228, 1228, 580, 1228, 22, 0, 627, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, + 0, 60, 0, 0, 0, 21, 0, 0, 0, 0, + 0, 0, 0, 0, 41, 56, 0, 659, 0, 0, + 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 620, 0, 636, 0, 0, 632, 0, + 0, 645, 0, 0, 0, 0, 1296, 0, 565, 0, + 0, 0, 0, 0, 623, 0, 0, 827, 0, 827, + + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 0, 1296, 1253, 0, 1253, 1253, 1253, 1296, 0, + 0, 1251, 737, 0, 1274, 1296, 0, 1296, 0, 0, + 0, 0, 0, 0, 0, 581, 1296, 312, 0, 826, + 0, 0, 899, 1296, 1296, 0, 721, 886, 1296, 1296, + 1296, 1296, 0, 724, 0, 0, 1296, 1296, 1296, 737, + 1296, 1296, 1296, 1296, 886, 1296, 1296, 1296, 1296, 0, + 220, 0, 0, 825, 641, 0, 196, 0, 423, 1228, + 420, 0, 1228, 0, 0, 0, 0, 0, 0, 0, + 1228, 416, 467, 468, 1228, 410, 1253, 1253, 1253, 1228, + + 474, 375, 737, 0, 220, 1228, 1228, 1228, 312, 0, + 0, 0, 0, 1228, 0, 1228, 886, 1228, 1228, 1228, + 1228, 627, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 60, 0, 60, 0, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 56, 637, 0, + 623, 0, 1058, 0, 834, 0, 0, 550, 0, 0, + 549, 0, 546, 0, 631, 0, 717, 0, 644, 0, + 625, 0, 0, 612, 1296, 559, 0, 0, 0, 594, + 0, 0, 827, 0, 827, 827, 827, 827, 827, 827, + + 827, 827, 827, 827, 0, 798, 33, 1253, 0, 0, + 0, 734, 1296, 1273, 1296, 830, 0, 0, 0, 0, + 0, 726, 555, 0, 0, 575, 1296, 578, 1296, 584, + 1296, 0, 716, 1296, 33, 1296, 555, 575, 1296, 578, + 1296, 584, 1296, 0, 210, 0, 1228, 214, 1228, 368, + 369, 0, 0, 370, 0, 0, 33, 1228, 1228, 1228, + 555, 204, 205, 206, 217, 575, 0, 1228, 578, 1228, + 584, 1228, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 589, 0, + 0, 60, 0, 60, 0, 60, 0, 60, 0, 60, + + 0, 0, 60, 0, 58, 0, 0, 0, 0, 0, + 622, 0, 616, 0, 0, 1296, 0, 0, 619, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 33, 0, 0, 739, 0, 740, 0, 0, + 1286, 0, 0, 896, 0, 0, 0, 0, 1, 0, + 582, 0, 1296, 1, 582, 1008, 186, 1228, 1228, 368, + 369, 0, 0, 370, 0, 201, 1228, 187, 1, 582, + 812, 0, 0, 0, 0, 0, 0, 829, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 60, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 614, 0, 0, + + 1296, 0, 0, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 0, 33, 0, 738, 0, 0, 0, + 0, 0, 0, 0, 723, 0, 1296, 1228, 1228, 373, + 0, 371, 1228, 0, 0, 0, 0, 0, 0, 0, + 487, 0, 0, 0, 0, 0, 0, 60, 0, 0, + 0, 0, 0, 628, 547, 0, 618, 1285, 0, 0, + 827, 827, 827, 827, 827, 827, 0, 0, 0, 725, + 0, 1064, 0, 595, 422, 373, 372, 371, 415, 0, + 0, 0, 0, 0, 652, 654, 0, 0, 0, 0, + 0, 38, 0, 60, 0, 0, 0, 0, 0, 827, + + 827, 827, 0, 33, 0, 0, 0, 562, 372, 0, + 0, 0, 0, 0, 0, 0, 0, 588, 1213, 0, + 40, 0, 0, 827, 0, 0, 0, 0, 0, 0, + 0, 657, 646, 0, 0, 0, 0, 0, 0, 0, + 662, 0, 0, 0, 0, 0, 0, 561, 0, 0, + 0, 0, 0, 699, 0, 0, 60, 0, 0, 0, + 691, 692, 26, 0, 0, 635, 0, 0, 1006, 0, + 0, 0, 0, 559, 0 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, + 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 26, 27, 27, 27, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 40, 40, 44, 45, 46, 47, 48, + 40, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int32_t yy_meta[94] = + { 0, + 1, 1, 2, 3, 4, 5, 1, 1, 6, 7, + 8, 9, 1, 1, 1, 10, 1, 1, 1, 11, + 1, 12, 12, 12, 12, 12, 12, 1, 1, 1, + 13, 1, 1, 14, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 16, 17, 18, + 19, 20, 19, 21, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, + 1, 24, 1 + + } ; + +static yyconst flex_int32_t yy_base[12007] = + { 0, + 0, 91, 16, 19, 23, 30, 39, 61, 50, 111, + 22, 47, 121, 130, 69, 72, 141, 162, 10, 12, + 183, 186, 127, 138, 25, 28, 151, 153, 174, 198, + 203, 218, 227, 230, 37, 43,36609,36607,36604,36603, + 287, 344, 401, 458, 229, 241, 515, 0, 221, 266, + 239, 269, 278, 298, 319, 330, 349, 379, 27, 56, + 437, 446, 339, 409,36657,36656, 303, 432, 49, 85, + 36594,36593, 3, 54, 596, 684, 101, 140, 527, 608, + 489, 498, 772, 863, 565, 600, 637, 641, 659, 668, + 9, 20, 59, 320, 956, 0, 237, 268, 1048, 1140, + + 672, 709, 729, 741, 750, 759, 305, 306, 1232, 0, + 1324, 0, 737, 762, 503, 520, 748, 778, 467, 789, + 811, 838, 449, 712, 297, 329, 226, 340, 560, 719, + 1415, 1506,36595,36594,36648,36647,36646,36641, 807, 820, + 852, 1087, 1102, 1105, 375, 385, 200, 335, 1100, 1101, + 638, 787, 0, 0, 0, 0, 1065, 1078, 1097, 1124, + 0, 0, 1201, 1454, 0, 0, 884, 901, 1205, 1215, + 819, 1179, 310, 398, 0, 0, 0, 0, 1059, 1219, + 36644,45164, 1426, 1435, 1445, 1587,36560,36632, 33,45164, + 36628,36617,45164,45164, 1675,36572,45164,45164,45164,45164, + + 1462, 1478, 1487, 1765,45164, 1536, 1545,45164, 845,45164, + 45164,45164,36551, 172,36622,45164,45164, 1496, 271, 1178, + 0,45164,36567,45164,45164,45164,45164,36600, 290, 1858, + 45164,45164,45164,36551, 792,45164,45164,45164,45164,45164, + 45164, 237,45164,36550,45164, 1546, 73, 368, 500,45164, + 45164,45164,45164, 822,45164,45164,45164,36549, 104,45164, + 36548, 412, 873, 426, 434,45164,36547,36463, 461, 1216, + 45164,36462,45164, 0,45164, 0,45164,45164,45164, 909, + 45164, 1487,45164, 453,45164,36540,36460, 1554, 924,45164, + 36459, 1565, 1618, 0, 1949, 1967, 1985, 1936, 1954,36454, + + 36457, 76,36468, 400,36462,36456,36452, 275,36448,36445, + 0, 491,45164,36521,45164,36520, 511, 517,45164,45164, + 45164,45164,45164,36517, 490,45164, 1069, 1082, 1091, 1538, + 36430,36429,45164,45164, 582,45164,36514, 573,36506,45164, + 45164,45164,36507, 1989, 1997, 2004, 1942, 1193, 1535, 2067, + 45164,45164,45164,45164,36511, 2152,45164,45164,45164,45164, + 36510, 601,45164,45164,45164,36452,45164,45164,36423,45164, + 0,45164, 1247, 1449, 2148, 2156,36424,36418,36413,45164, + 662,45164, 620, 2167, 2175, 623, 0,45164,45164,45164, + 45164, 632,45164, 1974, 0, 2223,45164,45164,45164,36500, + + 664, 2137,45164,45164, 650,45164,36499, 676, 1454,45164, + 45164, 680, 1403,45164, 523,45164, 477,45164, 2314, 2318, + 2327, 2331,45164, 2378,36415, 1643, 690,45164, 473,45164, + 36478, 2328,36466, 1458,36463, 0, 2466,36435,45164,36426, + 1657,45164,45164,45164,36478,36419,45164,36418, 2360, 2364, + 0,36402,45164, 732,45164,36467,36460,45164,45164, 1552, + 36415,45164,45164,45164,45164, 2376, 2389, 2393,36467, 815, + 826, 2423, 2557, 2561, 835, 1207, 2608, 0, 2370, 0, + 45164,45164,45164, 722, 0, 887, 2315,45164,36393, 935, + 2567,45164,45164,45164, 2564,45164,45164,45164,45164,36403, + + 45164, 696,45164,36466, 1072,36396,45164,45164,45164,45164, + 36464, 2561, 1112,45164,36384, 2523,45164,45164, 1094, 2570, + 45164,45164,45164,36462,45164,36432, 2599, 2608, 2694, 391, + 36427,36430, 517, 826,36429,36428, 2785, 234, 699,36423, + 36422, 2667,45164,45164,45164,45164, 2698,36355,36351,45164, + 2876,36357,36355,36348,45164,45164,45164,45164,45164,45164, + 2633,45164,45164,45164,36408, 785,45164,45164,36414,36349, + 45164,45164,45164,45164,36326,45164,45164, 1110,45164, 1120, + 45164,45164,45164,45164,36350, 2658,36346, 2716,45164,45164, + 45164,45164,36406,45164,45164,36326,45164,45164,45164,45164, + + 45164, 2213,45164,36403,45164, 1173, 2565,45164, 1180, 2330, + 45164,45164, 1196,45164,45164,36337,36336,45164,36335, 228, + 2880, 2889, 1208, 1173, 2893,45164,45164,45164,45164,45164, + 45164,45164,45164,45164,45164,45164,45164,45164,45164,45164, + 45164,45164,36310,36382,36332, 1224, 2902, 2906,45164,36371, + 45164, 766,45164, 2960,45164,45164,45164,45164, 3045,45164, + 45164,36383,45164, 1387,45164, 2909, 2932,36382,45164, 1184, + 3130, 3208, 2672, 2389, 2692, 2550, 2907, 2393, 2693, 2844, + 2846, 2898, 2938, 2955,45164, 1578, 3132,45164, 3217, 2988, + 3224, 3172, 3254, 3267, 3108, 2902, 3312, 3281, 2962, 2971, + + 3293, 3263, 3015, 3065, 3342, 3183, 3343, 3391, 3408, 3360, + 3486, 3043, 3053,45164,45164, 3447,45164, 2983, 3308, 1209, + 3564, 3642, 3115, 2998, 3327, 3406, 3442, 3386, 3149, 3326, + 3444, 3425, 3455, 3466, 3538, 3581, 3611, 3558, 3656, 3638, + 3464, 3701, 3679, 3485, 3504, 3729, 3738, 3756, 3771, 3783, + 3675, 3798, 3846, 3826, 3859, 3936, 3720, 3805, 3940, 3884, + 709,36236, 3906, 3828, 3948,36236,36228, 1253,45164,36306, + 45164, 0, 3214, 0, 1261,45164,36305, 0, 0,36230, + 36221, 480,36237,36236, 1222,36216,36235, 1460,36193,36177, + 36198,45164,45164, 0, 365,36192,45164,45164,36189,36184, + + 36177,45164, 0,36190, 1359,36175,36181, 850, 1541, 769, + 45164,45164,45164, 810,45164,45164,45164,36188,36175,45164, + 36176,36178,36180, 1438,45164,36244,36160,36167,36169,36171, + 36158,36154, 0, 0, 2729, 0,36170,36155,36148,36160, + 36166,36161, 912,45164, 1091, 2903, 0,36115, 3944, 0, + 3982, 4028,36110, 1013,36121, 979,36113,36107,36107, 854, + 36097, 4062, 3970, 0,36084,45164,36091,36079, 0, 1130, + 45164,45164,45164,45164,45164,36084,36096,36050, 1404, 2218, + 2593, 0,36057,36059,36061,36057,36041,45164,45164, 1233, + 45164,45164, 1163,36114, 3421, 3733, 4032, 4066, 4054, 3671, + + 4079, 4108, 40, 2963,36113, 876, 4128, 317,36112, 4166, + 45164,45164, 0,45164,45164,45164,45164,36060,45164,45164, + 0, 3369, 1276, 4096, 0,36035,36025, 4257, 0,36052, + 36037,36046, 1562, 1577, 1614, 4136, 0,36107, 0,45164, + 36031, 1533,36030, 4342, 4424,45164, 0,36032, 1420,36034, + 36030,36035,36019,35996,35997,35988, 1521,45164, 0,35995, + 35996,35998,35982,35989, 0,35989,35991,35991,35973,35973, + 35974, 1534, 4200, 4202, 4283, 4287, 3881, 1602, 4296, 4300, + 4039,35971, 4142,45164, 4316,36047, 4310,45164, 4320,45164, + 0, 1626,45164,45164,45164,45164,45164,45164, 4357, 4410, + + 45164, 1933, 4502, 4580, 3505, 3566, 3549, 4314, 3737, 3612, + 4388, 3599, 3757, 3981, 4319, 3782, 4030, 3931, 4031, 4327, + 3883, 4328, 2396,45164,45164, 4621, 4470, 4549, 4504, 4662, + 4576, 4601, 4707, 4399, 4422, 4488, 4688, 4649, 4554, 4790, + 4737, 4437, 4756, 4834, 4773, 4725, 4913, 4521, 4395, 4487, + 45164, 4817,35972,45164,35980, 4879,45164, 4858, 4879, 4926, + 4960, 1672, 1958, 4964, 0, 1686, 4994, 4998, 4810, 4994, + 5021, 5025, 1776, 2936, 5034, 2007, 5038, 5083, 5031, 5079, + 5046,35965, 5054,45164,45164,45164,45164,45164,45164,45164, + 45164, 5161, 5246, 5133, 5134, 5189, 5302, 0, 5275, 0, + + 45164, 1411, 1973, 1946, 2317, 1645, 2942,35973, 1792,45164, + 2019,45164,36043, 0,35968,45164,45164,45164,35872,45164, + 35913, 1973,35838, 0,35848,35844,35846,35831,35843, 1574, + 35828, 2037,45164,35906,45164,45164,35903,35902, 5372,35898, + 35897,35896,35895,35894,35889,35888,35887,35886,35885,35883, + 35880,35879,35878,35877,35876,35875, 2277,35867,45164,35870, + 2206, 0, 0, 2179, 0, 5426, 0, 0, 0, 0, + 5511, 0, 0,35869, 0, 2257, 0, 5365, 5375,35868, + 0, 2697, 0, 2400, 5378, 0, 5408, 5596, 5674, 5694, + 5718, 5426, 5451, 5743, 5456, 5565, 0, 0, 5376,35867, + + 1209, 1955, 5638, 5577, 5767,35787, 5786, 5804, 5822, 5840, + 35794, 4335,35796,35792,35789,35781, 4949,35796,35795,35784, + 35776,35782,35786,35788, 2715, 2956,35779,45164,45164,35763, + 35777,35767,45164,35766,35746,45164, 0,35767, 4631,35765, + 35765, 4703, 2347,45164,35751, 4346,45164,35825, 0, 0, + 35746, 2090,35762,35762,35742,35743,45164,35815,45164,45164, + 35759, 1115, 1940, 2234, 5404, 5538,35740,35739,35738,35741, + 45164, 2194, 2317, 5603,35737, 5678, 5721, 5922, 2339, 2352, + 45164, 2353,45164, 2355,45164,45164,45164,45164,45164,35736, + 45164,45164,45164,45164,45164,45164,35748, 273,45164,35714, + + 45164,45164,35713,45164,35685,45164,45164,35684,35703,45164, + 35682,45164,45164,35681,45164,35629,45164,45164,35604, 5218, + 35689,35602,35601, 2139, 2409, 2577, 2699, 2584, 2611,35686, + 0,35621,35610,35605, 5000, 5209, 5650, 5506, 5864, 5867, + 5872, 5894, 5904, 5929, 5938, 5948, 5959, 5972, 5980, 5985, + 6014, 5995,35593, 6019, 6006, 6036, 6061, 6062, 2397, 2438, + 35624,45164,45164,45164,45164,45164,35611,45164,45164,45164, + 45164,45164,45164,45164,45164,45164,45164,35610,45164,45164, + 45164,45164,45164, 6069, 6084, 6091, 6099, 6108, 6116, 6138, + 6146, 6133, 6165, 6155, 6176, 6198, 6209, 6220, 6241, 6246, + + 6256, 6275, 6265, 6280, 6297, 6304, 6328, 6345, 6352, 6360, + 6381, 6428, 6391, 6398, 6436, 6443, 6451, 6462, 5668, 4988, + 6472, 6475, 6494, 6499, 6520, 6525, 6549, 6556, 6564, 6583, + 6588, 6605, 6614, 6633, 6638, 6648, 6669, 6670, 6691, 6698, + 6719, 6783, 6732, 6856, 6747, 6755, 6788, 6758, 6779, 3039, + 6809, 6824, 6832, 6871, 6879,35586, 6892, 6914, 6922, 6941, + 6948, 6949, 6970, 6978, 6999, 2639, 7004, 7025, 7030, 7035, + 7054, 7059, 7076, 7067, 7093, 7101, 7112, 7125, 7144, 7153, + 7136, 7175, 7178, 1518, 7201, 7206, 7216, 7227, 7238, 7246, + 7261, 7269, 7293, 7298, 7308, 7323, 7331, 7332, 7353, 7358, + + 7379, 7380, 7401, 7422, 7423, 6462, 7430, 7445, 3041, 7464, + 7469, 7477, 7500, 7490, 6084, 7515, 7540, 7555, 6684, 6856, + 45164,45164,45164,45164,45164,45164, 1779, 7635, 7713,35613, + 35608,35596,35606, 2375,35574, 1584, 574,35564,35575,35585, + 35577,35574,35594,35561,35571,35569,35559,35562,35558,35626, + 35543, 2835, 0,35547,35558, 2539,35560,35556,35548, 1981, + 35536, 2994,35552, 2082,35547,35531,35494,35497,35477,35487, + 2494, 877, 3134,35488, 1702, 2561, 2644, 7564,35489,35471, + 35483,35468, 2633,35482, 1976,35480,35464,35467, 2373,35463, + 2571, 2591,35476,35471,35413,35384,35397, 2813, 2873,35392, + + 35395, 2644,35383,35381,35383, 1412, 3200, 7604,35372, 7526, + 35373, 3081, 3100,35384,35367,35363, 1079, 3201, 2867,35357, + 2890, 3011, 3030,35375,35374,35359,35349, 5497, 2915, 3013, + 3074,35366, 0,35365, 2987,35355,35347, 1988, 3427,35346, + 35362, 3044, 3433, 1595,35349,35349,35338, 3081, 3081, 3162, + 35353,35328,35344, 3023,35351, 3102, 3540, 2928,35346,35343, + 35319,35337, 2657, 3102,35320, 5113, 3693, 3180,35328, 3354, + 35285, 3193,35203, 3104,35191, 2556,35171, 4385,35176, 7620, + 35185,35182, 3508,35170,35128, 2675, 3529,35119, 3168,35121, + 35111, 0,35106,35103,35073,35072,35070,35061,35054,35060, + + 35062,35038,35055,35051,35024,45164,35006, 0,35015,35003, + 35000,35003,35001,34996, 0,34986,34997, 0, 0, 0, + 34995,34850,34869,34859,34858,34860,34843, 3195, 0,34847, + 34835,45164, 0,45164,34845,34821,34830,34824,34830,34822, + 34832,34805,34797,34797,34777,34792,34784,34779, 3314, 4466, + 34757,34758, 3005,45164, 3036, 2966, 3176,45164, 3696, 7667, + 34755, 4480, 7672,34736,34746,34729,45164,34694,34683,34680, + 34673, 3228,34678,34667,34652, 3360,34639, 5286,34634,34638, + 34628, 3232,34611, 3385, 5358,34616,34618,34607, 3386, 5836, + 34571,34565,45164,34560,34543, 2918, 5138, 3348,34552,34514, + + 4855,34504, 6592,34468, 3118,45164, 3317, 3482, 3811, 3709, + 3512, 0,34473,34462,34456, 7791, 7869,34471,32704,32688, + 32697, 3845,32681, 2331, 3515, 2375,32671,32679,32686,32672, + 32658,32665,32666,32662,32723,32679, 3490,32652,32637,32642, + 32625,32620,32685, 2647, 3953, 0, 3373,32610,32601,32493, + 32485, 4075,32448,32443,32495,32412, 3188, 3201,32420, 51, + 3352, 122, 3593, 0, 3743, 3342, 3799, 3642, 4371, 3147, + 3778, 3279, 3553, 320, 3753, 3554, 3852, 379, 417, 4233, + 3247, 436, 3827, 3371, 3490, 4595, 6311, 5479, 493, 526, + 4201, 4760, 4437, 3974, 7681, 598, 645, 766, 3670, 3496, + + 3018, 3590, 4233, 3697, 1255, 3758, 1358, 3710, 1456, 3617, + 4418, 1503, 1561, 1605, 1640, 4640, 1729, 1747, 1897, 1932, + 3649, 4345, 3775, 2120, 2143, 3512, 2181, 2268, 3847, 3437, + 5066, 7728, 2269, 7690, 2422, 2537, 5096, 2526, 4633, 2582, + 2601, 2634, 2820, 3896, 3459, 2878, 3879, 6184, 2987, 3088, + 4010, 3133, 3272, 4834, 5199, 4062, 4067, 3249, 4437, 3740, + 3857, 3917, 5012, 3341, 7726, 4574, 4322, 4245, 4097, 3320, + 3368, 3971, 0, 4980, 3935, 3394, 3394, 3798, 4279, 3432, + 3547, 4602, 3516, 3950, 4915, 3544, 3557, 3588, 4674, 3899, + 3602, 4692, 3616, 3633, 3698, 4261, 3751, 3806, 4323, 4265, + + 4195, 5337, 3839, 5394, 3878, 4290, 3991, 4493, 4008, 5512, + 4523, 4705, 4733, 4004, 4030, 5528, 4515, 4031, 5413, 4782, + 5198, 4050, 4623, 4808, 4406, 4280, 4547, 4644, 4329, 4067, + 4306, 4172, 5772, 4217, 7759, 4278, 4294, 4404, 4317, 4384, + 4310, 4484, 4363, 4389, 4531, 6180, 4506, 6964, 7468, 4598, + 4506, 7717, 4451, 7825, 7829, 7838, 4656, 5116, 4939, 4485, + 4714, 7842, 7856, 4481, 4653, 4489, 7860, 4571, 7874, 7901, + 7905, 4788, 5219, 4981, 4508, 4907, 5336, 4533, 6222,45164, + 45164,45164,45164,45164,45164,45164,45164, 4518,45164,45164, + 4520,45164, 4536,45164,45164, 4564,45164,45164,45164,45164, + + 45164,45164,45164,45164,45164,45164, 6330,45164,45164,45164, + 6505,45164, 5268, 4672, 5357,45164, 5023, 4612, 4661, 4677, + 6633, 4887, 4688, 4678, 4701, 4953, 4715, 6345, 4726, 4735, + 4873, 4820, 4864,45164, 4832, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4750, 0, + 0, 4758, 0, 4797, 0, 0, 4805, 0, 4809, 0, + 0, 4813, 0, 4829, 0, 0, 4833, 4842, 4856, 7915, + 7943, 7953, 4938, 5037, 5013, 5027, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 8029, 8107, 5053, 5029, + + 5056, 5410, 5106, 6540, 5227, 5515, 5110, 5076, 5222, 5261, + 5663, 5549, 0, 0, 0, 0, 0, 0, 4907, 4910, + 4933, 5133, 5122, 5113, 5878, 6920, 5177, 5683, 5667, 5295, + 4949, 4968, 4981, 5021, 5028, 5084, 5074, 5078, 5127, 5144, + 5145, 5175, 5191, 5188, 5206, 5223, 5270, 5284, 5295, 5273, + 45164, 5286, 5357, 5304, 5326, 5312, 5324, 0, 5328, 5349, + 5350, 5355, 5369, 5386, 5392, 5422, 7924, 5408, 5410, 5412, + 5433, 5496, 5659, 7950, 5555,45164, 5435, 5502, 5429, 5453, + 45164,45164,45164,45164, 5524,45164,45164,45164,45164, 5443, + 5444, 5448, 5460, 5463, 5472, 5474, 5490,45164,45164, 5772, + + 5604, 5529, 5534, 5543, 5548, 5539, 5727, 5574, 5610, 5573, + 5697, 5635, 5557, 5593, 5577, 5691, 5717, 5736, 5634,45164, + 5755, 5784, 5728, 5714, 5782, 5597,45164, 5670, 5680, 5810, + 5783, 6111, 5756, 5806, 5813, 5870, 5656, 5873, 5816, 5957, + 5932, 5899, 6664, 5915, 5881, 5829, 7963, 5910, 6047, 5907, + 5951, 6703, 5630, 6000, 5966, 5930, 5753, 5977, 5992, 5677, + 6046, 6005, 6085, 6054, 6420, 7975, 6220, 6041, 5814, 6514, + 6010, 6131, 7989, 6773, 5776, 6403, 5890, 5934, 5918, 5914, + 6129, 6011, 6019, 6115, 6304, 6080, 6053, 6100, 6144, 6097, + 6203, 6182, 5788, 6205, 6132, 6165, 6161, 5859, 6366, 6235, + + 6278, 6152, 6405, 6617, 7990, 6313, 6606, 6397, 6442, 6242, + 6291, 6307, 6225, 6555, 6414, 5954, 6456, 6317, 6532, 6691, + 6318, 6472, 7613, 6435, 5981, 5980, 6000, 6168, 6183, 6468, + 6280, 6486, 6588, 6490, 6619, 6780, 6653,45164, 6261, 6701, + 6538, 6842, 7026, 6914, 6488, 7954, 6752, 6670, 6201, 6535, + 6807, 6550, 6363, 6697, 6715, 6818, 6251, 6750, 6863, 6835, + 6725, 6298, 6321, 6639, 6718, 6829, 6884, 6570, 6663, 6865, + 6895, 6970, 6657, 6947, 6919, 6917, 6326, 6329, 6932, 6971, + 6940, 7846, 6897, 6984, 6999, 7278, 7059, 7002, 6415, 7056, + 7956, 7072, 6955, 7011, 7099, 7048, 7131, 7123, 7079, 7090, + + 7024, 7149, 7108, 7446, 7169, 7157, 7172, 8129, 7164, 7200, + 7197, 7223, 7970, 8214, 7253,45164, 7337, 7185, 7244, 7245, + 7275, 7270, 7009, 7386, 7292, 8058, 7372, 6407, 8302, 8380, + 7190, 6797, 7335, 7356, 7131, 7208, 7457, 7506, 7313, 7324, + 7582, 7470, 7362, 7410, 7502, 7580, 7581, 7596, 7641, 7677, + 0, 7492, 7530, 7645, 7547, 7567, 7752, 7597, 8039, 7786, + 7659, 7703, 8047, 7694, 7879, 7815, 7731, 7940, 7606, 7701, + 7819, 6464, 7740, 7977, 7968, 7661, 7854, 7675, 7692, 7994, + 8019, 8024, 8048, 7784, 8068, 6443, 8345, 8075, 8077, 7371, + 8020, 8082, 7801, 8052, 8054, 8084, 8088, 8097, 8099, 8090, + + 8056, 8109, 8242, 8114, 8110, 8244, 8134, 8246, 8248, 8263, + 8270, 8274, 8284, 8250, 7405, 8286, 8293, 6522, 8139, 8302, + 8303, 8304, 8324, 8320, 8341, 8322, 8276, 8285, 8326, 8294, + 7480, 8350, 8357, 8359, 8366, 8370, 8371, 8381, 8382, 8389, + 8328, 8400, 8387, 8393, 8405, 8409, 8410, 8420, 8418, 8424, + 8432, 8442, 8440, 8441, 8448, 7413, 8446, 8453, 8461, 8462, + 8463, 8467, 8468, 8469, 8475, 8484, 8483, 8485, 8493, 8495, + 8501, 8503, 8509, 8513, 8518, 8517, 8519, 8528, 8530, 8529, + 8534, 8535, 8536, 8541, 8543, 8548, 6548, 8552, 8557, 8561, + 8563, 8565, 8570, 8578, 8582, 8572, 8590, 8592, 8594, 8618, + + 8600, 8598, 8607, 7381, 8611, 8616, 8628, 8633, 8638, 8637, + 8653, 8654, 8728, 8757, 8755, 8761, 8766, 8652, 8774, 8772, + 8778, 7428, 8783, 8784, 8793, 8798, 8799, 8868, 8807, 8808, + 8818, 8819, 8817, 6579, 6676, 6709, 6717, 6754, 6732, 6748, + 6778, 6822, 6822, 6825, 6924, 6883, 6881, 6940, 6947, 6961, + 6972, 6964, 7023, 7055, 7057, 7055, 7098, 7100, 7117, 7470, + 7147, 7149, 7179, 8827, 0, 0, 7177, 7222, 0, 7218, + 0, 7232, 7259, 7335, 7265, 7287, 7303, 7726, 8900, 7388, + 7338, 7336, 7351, 8838, 7367, 7403, 7432, 7453, 7706, 0, + 7480, 7554,45164, 8904, 8907, 7791, 8910, 7650, 8917, 8872, + + 45164, 7486, 7705, 8921, 8929, 7483, 0, 7493, 7512, 7531, + 45164, 7535, 7622, 8859, 7540, 7633, 7625, 7656, 7670, 7755, + 7753, 7771, 7890, 0, 7756, 7807, 7806, 7832, 7845, 7862, + 7867, 7848, 7876, 7922, 0, 7861, 7875, 7894, 7899, 7908, + 7898, 7924, 7942, 0, 7927, 7975, 7974,45164, 8847, 8960, + 7972, 7980, 7989, 8000, 8010, 7991, 8862, 8919, 8019, 8025, + 8033, 9040, 9118, 8902, 8116, 8780, 8300, 8142, 8368, 9005, + 8097, 8041, 8075, 8423, 8306, 8254, 8417, 8095, 8411, 8507, + 8928, 8616, 8492, 8594, 8598, 8615, 8579, 8748, 8888, 8929, + 8955, 8820, 8895, 8957, 8909, 8112, 8356, 8228, 8841, 8911, + + 8913, 8930, 8907, 8929, 8968, 8466, 8260,45164, 8987, 8939, + 8937, 8964, 8972, 8940, 8982, 8965, 8639, 8992, 8958, 9006, + 9011, 9032, 8976, 9022, 8822, 9001, 9096, 8857, 9015, 9053, + 9041, 8978, 9054, 9199, 9000, 9028, 9030, 9036, 9055, 9131, + 9050, 8656, 9119, 9105, 9091, 9061, 9009, 9052, 9085, 9114, + 9056, 8334, 9106, 8919, 9095, 9070, 9123, 9101, 9144, 9169, + 9218, 9222, 9111, 9122,45164, 9132, 9112, 9173, 9141, 9143, + 9153, 8270, 9172, 9154, 9163, 9174, 8301, 9190, 9183, 9226, + 9158, 9267, 9167, 9270, 8377, 9178, 9192, 9229, 9214, 9232, + 9232, 9313, 9215, 9252, 9185, 9228, 9075, 9261, 9202, 9231, + + 9292, 9247, 9235, 9255, 9330, 9249, 9251, 9271, 8380, 8393, + 9303, 8456, 9332, 9306, 9272, 9276, 9333, 9277, 9274, 9289, + 9290, 9138, 9297, 9372, 9317, 9283, 9310, 9321, 9315, 9316, + 9320, 9318, 9330, 9345, 9331, 9333, 9338, 9347, 9344, 9407, + 9349, 9351, 9364, 9371, 8483, 8497, 9360, 9350, 9373, 8534, + 8607, 9361, 9369, 9349, 9366, 9385, 9437, 9387, 9440, 9394, + 9451, 8759, 9405, 9383, 9410, 9399, 9454, 9404, 9418, 9413, + 9426, 9392, 9408, 9486, 9419, 9417, 9459, 9429, 9430, 9431, + 9492, 9504, 9446, 9453, 9506, 9509, 9513, 9456, 9518, 9465, + 9462, 9466, 9475, 9474, 9522, 9471, 9488, 9501, 9540, 9542, + + 9543, 9547, 9548, 9485, 9495, 9491, 9559, 9567, 9568, 9527, + 9569, 9509, 9533, 9520, 9511, 9539, 9529, 9556, 8781, 9598, + 9600, 9547, 9552, 9549, 9558, 9559, 9557, 9562, 9565, 9572, + 8881, 9569, 9570, 9579, 9589, 9587, 9580, 9624, 9648, 9652, + 9584, 9515, 9592, 9601, 9606, 9590, 9658, 9611, 9608, 9604, + 9618, 9614, 9623, 9628, 9625, 9631, 9634, 9637, 9630, 9675, + 9641, 9697, 9650, 9651, 9648, 9642, 9653, 9643, 9659, 9665, + 9714, 9670, 9672, 9677, 9680, 8904, 9716, 9717, 9681, 9682, + 9719, 9691, 9693, 9704, 9700, 9696, 9758, 9715, 9706, 9719, + 9739, 9748, 9711, 9730, 9767, 9768, 9726, 9780, 9732, 9735, + + 9724, 9742, 9745, 9798, 9746, 9804, 9755, 9813, 9756, 9761, + 9758, 9776, 9752, 9777, 9786, 9898, 9771, 9789, 9920, 9772, + 9788, 9989, 9991, 9811, 9792, 9826, 9810, 9928, 9941, 9931, + 10002, 9943, 9801, 9992, 8932,10006, 9954, 8965, 8980, 9963, + 9952,10035, 9048,10048,10031, 9987, 9998,10070, 9179, 9302, + 9333, 9762, 9938,10079,10038,10040,10024,10097, 9778,10041, + 10054, 9992, 9954,10009,10036,10038,10045,10067, 9761, 9774, + 9805,10077, 9824, 9825, 9833, 9959, 9997,10000, 9984,10005, + 10006, 0,10006,10032,10049,10031,10107,10113,10151,10166, + 10086,10100,10089,10245,10323,10061,10144,10060,10068,10079, + + 10083,10102,10088,10048,10117,10120,10050,10121,10118,10127, + 45164,10130,10122,10136,10201,10202,10139,10132,10205,10157, + 10142,10059,45164,10093,10110,10147,10149,10158,10165,10158, + 10153,10167,10174,10167,10163,10159,10172,10172,10155,10180, + 10169,10177,10170,10175,10169,10183,10194,10193,10187,10195, + 10173,10190,10194,10195,10205,45164,10175,10198,10192,45164, + 10264,10276,10269,45164,10276,10277,45164,45164,45164,45164, + 45164,45164,45164,45164,10278,10284,10202,10202,10204,10205, + 10206,10228,10217,10210,10218,10211,10221,10289,10268,10235, + 10225,10236,10238,10242,10299,10316,10258,10252,10249,10257, + + 10261,10291,10288,10276,10283,10286,10297,10295,10311,10312, + 10329,10304,10328,10392,10259,10306,10342,10290,10423,10254, + 10427,10339,10353,10373,10435,10294,10308,10359,10316,10356, + 10387,10397,10330,10360,10317,10418,10326,10449,10469,10357, + 10399,10452,10412,10384,10406,10419,10381,10416,10472,10455, + 10420,10415,10439,10428,10422,10451,10425,10503,10429,10474, + 10454,10457,10468,10475,10470,10482,10479,10484,10488,10442, + 10493,10486,10489,10492,10495,10498,10512,10499,10513,10507, + 10511,10504,10521,10431,10494,10529,10535,10458,45164,45164, + 45164,45164,10532,10533,10527,10538,10528,10526,10541,10551, + + 10555,10531,10547,10558,10561,10554,10562,10568,10564,10569, + 10567,10576,10578,10585,10575,10588,10580,10590,10598,10534, + 10601,10589,10602,10603,10597,10611,10605,10659,10614,10612, + 10595,10622,10619,10623,10625,10628,10630,10635,10627,10618, + 10632,10636,10639,10616,45164,45164,10652,10637,10645,10661, + 10651,10660,10667,10655,10664,10675,10665,10647,10672,10671, + 10688,10681,10668,10695,10698,10684,10720,10759,10762,10701, + 10692,10710,10693,10704,10739,10730,10747,10744,10750,10705, + 10716,10761,10751,10767,10775,10768,10779,10737,10769,10778, + 10734,10787,10793,10786,10755,45164,10834,45164, 0,10696, + + 10784,10798,10794,10805,10806,10801,10818,10819,10815,10807, + 10880,10963,10816,10817,10824,10814,10829,11051,10713,11129, + 11214,10839,10840,10841,10842,10850,11052,10876,10852,10854, + 10860,10864,10861,10879,10872,10885,10882,10889,10866,10892, + 10995,10996,10997,10999,11007,11014,10836,11021,11023,11034, + 11035,11027,11044,11056,11123,11054,11137,11005,11093,11097, + 11145,11042,11067,11109,11095,11112,11113,11149,11115,11119, + 11133,11201,11136,11161,11180,11182,11146,11186,11192,11160, + 11189,11225,11231,11204,11205,11222,11207,11241,11213,11243, + 11253,11249,11252,11250,11260,11262,11269,11271,11272,11275, + + 11278,11282,11281,11290,11291,11292,11299,11300,11306,11312, + 11302,11319,11320,11323,11327,11330,11336,11344,11345,11346, + 11354,11356,11358,11364,11365,11367,11368,11371,11382,11383, + 11389,11393,11063,11395,11404,11406,11223,11407,11413,11414, + 11422,11424,11428,11434,11437,11441,11445,11443,11447,11046, + 11453,11455,11456,11457,11466,11467,11473,11470,11479,11483, + 11485,11486,11492,11500,11504,11506,11512,11496,11513,11521, + 11524,11525,11523,11532,11534,11540,11542,11543,11554,11121, + 11544,11561,11562,11563,11564,11572,11573,11581,11590,11574, + 11596,11599,11606,11647,11608,11612,11597,11587,11618,11621, + + 11619,11622,11630,11653,11632,11641,11662,11670,11673,11680, + 11687,11681,11699,11702,11705,11708,11709,11165,11711,11712, + 11715,10857,11723,11729,11731,11732,11296,11738,11744,11747, + 11754,11836,11753,11755,11757,11866,11765,11925,11869,10853, + 11868,11870,11879,11771,11740,11418,11883,11889,10863,10870, + 10879, 0,10985,11703,11962,11897,11002,11012,11905,11078, + 11017,11026,11033,11053,11054,11229,11181,11106,11333, 0, + 11073,11108,11918,11148,11907,11161,11211,11220,45164,11220, + 45164,11234,11257,11294,11366,11317,11321,11332,11340,11935, + 11349,11435,11953,11968,11999,12000,12005,12006,12007,11378, + + 11689,12016,11963,12004,12033,11400,11389,45164,11415,11409, + 0,11425,11440,11927,11465,11641,11495,11473,11475,11496, + 11503,11524,11511,11873,11533,11544, 0,11533,11824,12038, + 12042,12043,12044,12048,12053,12049,12054,12055,12059,12060, + 12066,12067,12065,12075,12073,12077,11559,11928,12022,11550, + 11578,11591,11598,11643,11653,12068,12079,11653,11654,11664, + 12148,12233,12089,12109,12122,12152,12033,12034,12067,12036, + 12074,12075,12095,12099,12116,12098,11947,12097,12114,12124, + 12125,12132,11967,11681,11683,12009,12140,12142,12143,12156, + 12160,12164,12173,12171,12183,12199,12201,12207,12209,12210, + + 12217,12220,12153,12235,12232,12241,12015,12242,12253,12260, + 12102,12276,12327,12270,12226,12273,12340,12344, 0,12249, + 12287,12288,12289,12296,12299,12310,11707,12297,12319,12335, + 12308,12321,12323,12348,12342,12351,12349,12407,12371,12357, + 12408,12336,12358,12138,12417,12373,12372,12380,12392,12395, + 12462,12422,12408,12437,12410,12477,12407,11751,12427,12440, + 12443,12491,12463,12441,12489,12493,12524,12428,12513,12469, + 12516,12468,12470,12545,12537,12492,12490,12546,11957,12500, + 12552,12511,12559,12518,12592,12597,12565,45164,12512,12520, + 12535,12542,12560,12604,12544,12548,12638,12551,12576,12622, + + 12582,12583,12585,12592,12728,12593,12644,12602,12613,12661, + 12624,12635,12819,12601,12820,12642,12646,12654,12631,12821, + 12041,12696,12764,12767,12765,12778,12780,12768,12786,12856, + 12860,45164,12787,12864,12807,12828,12817,12818,12837,12809, + 12840,12838,12888,12847,12849,12858,12865,12861,12871,12872, + 12874,12878,12881,12882,12893,12884,12900,12901,12903,12911, + 12917,12919,12946,12133,12921,12928,12960,11719,12938,12944, + 12929,12946,12954,12957,12981,12958,12177,12967,12964,12973, + 12974,12980,12981,12983,13061,12998,12984,13006,12993,13048, + 12425,13008,13018,13029,13031,13050,13035,13052,13020,13048, + + 13050,13062,13079,13091,13068,13090,12547,13161,13106,12145, + 13112,13097,13077,13146,12649,13107,13119,13125,13126,13162, + 13165,12115,13134,13137,13138,13144,13146,13154,13163,13164, + 13170,13171,13177,13180,13178,13205,11944,12481,13187,13188, + 12185,13190,13194,13213,13191,13205,13206,13212,13215,13292, + 13239,13221,13235,13209,13245,13237,13261,13274,13255,13252, + 13268,13258,13270,13286,13279,13296,13277,13299,13309,13308, + 45164,13302,13312,13314,13315,13323,13327,13329,13331,13330, + 13337,13379,13339,13345,13343,13349,45164,13359,13361,13362, + 13363,13398,13370,13369,11955,13376,13388,13386,13395,13396, + + 13380,13405,13397,13431,13399,13405,13406,13407,13415,13424, + 13426,13427,13497,13440,13441,13447,13453,13447,11884,13492, + 12797,13460,13474,13462,13502,13475,13514,13539,13529,13472, + 13484,13485,13501,13494,13500,13540,13504,13508,13510,13558, + 13513,13516,13580,13520,13526,13549,13581,13524,13568,13589, + 13602,13608,13610,13618,13537,13619,13627,12091,13587,13612, + 13626,13543,13635,13661,45164, 0,13636,11916,13645,13647, + 13653,13654,12167,13662,13637,13665,13671,13673,13682,13688, + 13690,13760,13703,13770,13774,45164,13752,13842,13722,13674, + 13718,13720,13728,13730,13749,13734,13740,13763,12012,12006, + + 13764,13871,12054,13154,13551,13940,13737,13893,12110,12150, + 12156,12803,12198,13587,13933,13743,13757,13948,13883,14040, + 13899,13907,13915,14069,14074,14138,14144,14157,13977,12277, + 12208,12233,14097,12836,12612,12906,13932,12946,12247,13751, + 12851,12267,12254,12287,12294,12330,12324,13743,12375,12405, + 0,12501,12419,12517,12824,14159,14169,12625,12490,12880, + 14244,14322,13922,13274,13479,13950,13767,13961,12978,12644, + 13958,14129,14152,12952,14130,13929,14164,13037,13114,13131, + 14094,14134,14147,45164,12459,12510,12543,12592,12597,12602, + 12650,12829,12837,12843,45164,12896,12923,12924,12950,12950, + + 12986,45164,12984,13005,13008,13082,13030, 0,13031,13117, + 14174,13053,13063,13097,13766,14176,13092,13122,14204,13945, + 13730,14221,13806,13142,13139,13161,14257, 0,13250,13880, + 13924,14068,13963,14220,14225,14194,14109,14218,14284,14219, + 14186,14234,14251,14239,14238,14328,14223,14262,14282,14110, + 13263,14131,14283,14246,14290,14289,14302,14295,13170,14389, + 14416,14401,13212,13906,14378,14445,13240,13210,14366,14310, + 14331,14439,14399,14391,14406,14404,14407,13270,13440,14333, + 45164,14405,14411,13266,14155,14413,14245,14294,14363,14361, + 14415,14438,45164,14428,14426,14440,14432,14445,14447,14429, + + 14528,14433,14448,14449,14472,14474,14479,14468,14476,14487, + 14493,14491,13291,14494,14495,14451,14470,14500,14576,14515, + 14507,14516,14518,14520,14522,14523,14534,14536,14539,14537, + 14540,14541,14617,14554,14556,14558,14559,14561,13329,14562, + 14570,14579,14605,14582,14584,14597,14601,14563,14590,13399, + 14613,14612,13921,14614,14596,14616,14619,14625,14628,14631, + 14632,14645,14644,14630,14650,14652,14651,14656,14657,14658, + 14659,14670,14676,14671,14663,14677,14684,45164,14678,14685, + 13966,14691,14703,14690,14696,14705,14710,14698,14714,14709, + 14718,14727,13405,14716,14725,14729,14730,14732,14733,14738, + + 14744,14746,14752,14773,14755,14757,14764,14759,14768,14775, + 14761,14776,14781,14780,14784,14793,14788,14796,14807,13592, + 14812,13980,14800,14819,14818,14820,13436,13440,13894,14829, + 13436,13560,14087,13472,14832,14823,14834,14839,14836,14840, + 14847,14851,14856,14863,14864,14871,14872,14876,14877,14878, + 14883,14897,14894,14902,14879,14900,14909,14905,14914,14920, + 14921,14922,14925,14928,14939,14934,15015,14985,14954,45164, + 14268, 0,14640,45164, 0,14945,14957,14963,14961,14966, + 14968,14975,13491,14970,14974,14977,14982,14983,13506,15100, + 15178, 0, 0,13594,13603,13547, 0,13561,14920,14597, + + 14990,13618,13726,13631,13616,15067,13647,13641,13656,13693, + 14978,13742,13766, 0,13777, 0,13779,13870,14997,14325, + 14129,13908,13918,13936,13951,13963,14030,14069,14126,14127, + 14256,14307,14149,15006,14178,14174,14192,14224,14236,14264, + 14294,14790,14721,14312,14340,14361,14360,14999,14380,15013, + 0, 0, 0,15085,15024,14388,14390,14412,14427,14468, + 15027,14469,14497,14510, 0,14545,14560,14699,14566,14598, + 14665,14677,14739,14785,14787,14798,14813,14899,15015,14834, + 14933,14852, 0,14840,15016,15033,14866,14880,14899,14926, + 14937,14948,14951,14976,15026,14974,15057,14999,15011,15018, + + 15039,15036,15040,15041,15037,15032,15042,15050,15036,15034, + 15041,15053,15038,15060,15057,15064,15065, 0,15065,15069, + 15073, 0,15075,15072,15073,15082,15079,15069,15072,15068, + 15066,15070,15078,15091,15086,15080,15155, 0,15094,15100, + 15088,15102,15104,15092,15093,15108,15095,15091,15108,15098, + 15102,15119,15112,15108, 0,15122,15108,15120,15159,15125, + 15119,15135,15122,15131,15132,15142,15145,15139,15150,15157, + 15134,15148,15142,15157,15145,15162,15161,15165,15144,15158, + 15158,15153,15168,15174,15153,15163,15165,15159,15181,15171, + 15247,15190, 0,15187,15191,15188,15191,15199,15185, 0, + + 15182, 0,15198,15200,15271,15204,15206,15200,15202,15212, + 15199,15215,15212,15280,15207,15199,15220,15222,15287,15291, + 15229,15235,15217,15225,15233,15220,15223,15240,15237,15224, + 15241,15231,15234,15245,15229,15248,15250,15237,15247,15239, + 15316,15238,15259,15232,15258,45164,15250,15256,15261,15266, + 15262,15249,15255,15258,15269,15253,15257,15262,15266,15253, + 15274,15282,15283,15268,15351,15275,15270,15282,15280,15282, + 15287,15296,15283, 0, 0,15298,15364,15286,15298,15294, + 15363,15372,15376,45164,15307,15309, 0,45164,15319,15381, + 15307,15325,15387,15388,15390,15389,15391,15392,15396,15401, + + 15394,15397,15333,15322, 0, 0,15337,15403,15342,15342, + 15329, 0, 0,15344,15410,15348,15331,15345,15350,45164, + 15337,15350,15340,15420,15416,15347,15344,15360,15486,15428, + 15432,15567,15439,15490,15494,15498,15518,15522,15423,15526, + 15531,15535,15539,15543,15551,15555,15571,15577,15363,15365, + 15581,15599,15603,15607,15618,15625,15443,15632,15636,15652, + 15657,15661,15665,15669,15673,15677,15683,15687,15693,15701, + 15705,15709,15714,15720,15725,15737,15754,15758,15356,15765, + 15444,15769,15773,15778,15789,15796,15800,15804,15812,15827, + 15833,15840,15845,15853,15859,15459,15866,15872,15876,15882, + + 15893,45164,45164,15360,15363,15903,15911,15483,15918,15922, + 15928,15958,15943,15933,15557,15950,15994,16005,16009,16013, + 15594,16026,16014,16043,15612,15620,16050,16054,16058,16062, + 16066,16070,15385,15380,16082,16086,16093,16101,16105,16116, + 16134,16140,16148,15782,16152,16163,16167,15808,16107,16097, + 15887,16177,16187,16191,16197,16203,15449,16118,15451,16275, + 15458,16368,16461,15405,15402,15408,15678,15407,16207,16552, + 16556,16560,16564,16217,16568,15888,16572,16576,16580,16584, + 16588,16224,15433,15428,16232,16593,16597,16601,16605,16610, + 16625,16641,16651,16659,16670,16680,16249,16253,16263,16684, + + 16689,16695,16700,16704,16708,16712,16722,16717,16730,16742, + 16746,16750,16774,16778,16782,16797,16801,16807,16811,16816, + 15435,15437,16820,16824,15444,15759,16828,16833,16840,16847, + 16851,16856,15790,16863,16867,16872,16876,16880,16884,16900, + 16904,16910,16922,16933,16938,16953,16957,16961,15446,15441, + 16967,16971,16975,16979,16983,16989,16995,17003,17008,17012, + 17016,17029,17034,17041,17058,17062,17066,17073,17082,17086, + 17095,17099,17111,15461,15472,17117,17129,17134,17138,15480, + 15484,17142,17146,17154,17167,17175,17180,17187,17196,17206, + 17210,17222,17226,17230,17238,17244,17249,17257,15558,15489, + + 15483,17263,17272,17278,17296,16020,15503,17307,17315,17319, + 17324,17330,17335,17339,17343,17352,15887,17356,17361,17365, + 17369,17373,15898,17377,17397,17401,17414,16157,15519,17422, + 17435,17439,17447,17454,17458,17463,17467,17471,17477,17484, + 17490,17499,17504,17508,17512,17526,17543,17548,17556,17560, + 17565,17570,17574,17588,17592,17596,17602,17609,15904,17613, + 17617,17625,17632,17636,17641,17655,17666,17670,15942,17674, + 17680,17684,15519,15542,15538,17690,15996,17703,16094,17710, + 17716,17720,17724,17728,17732,17736,17750,17761,17771,17786, + 17796,17823,16096,17800,17832,17842,17846,15624,15674,15865, + + 15549,15630,15549,15566,15649,15795,17850,17854,17858,17863, + 17870,17874,17879,17895,17899,17903,17907,17916,17925,17911, + 17929,17935,17939,17943,17953,17958,17990,17995,17999,18007, + 18024,18011,18031,18035,18039,18043,18047,18051,18058,18062, + 18069,18079,18074,18084,18090,18098,18102,18108,18112,18126, + 18130,18138,18159,16110,16156,45164, 0,18143,18149,18172, + 18184,18192,18199,18163,16208,18215,18219,18234,18239,18243, + 16764,18250,18258,18271,16211,15579,15572,16997,16153,18275, + 16613,16038,18279,18283,45164,15751,15670,15587,17220,15566, + 15678,15651,15669,15690,16628,16128,17046,15926,18143,15707, + + 45164,16219,16241,45164, 0, 0,15733,15743,15729,15752, + 15919,15749,15955,15769,15777,15776,15957,16853,45164,15814, + 15814,15818,15860,15866,15890,15891,15908,15931,16015,16167, + 16092,16012,16120,16628,16661,15966,15966, 0, 0,16012, + 16030, 0, 0,16049,16237,16067,16066, 0,16072,16084, + 16158,16192,18293,18303,16561,16588,16601,18359,18447,16193, + 16183,17042,16540,16599,16659,16555,16694,16560,18229,16105, + 17031,16585,16636,16759,16760,16852,16660,16819,17123,16158, + 16176,16724,45164,16181,16555,16825,45164,16569,45164,16562, + 16667,16682,16688,16694,16692,16697,16723,16716,16739,16767, + + 16781,16913,16794,16828,16812,16820,16828,16818,16851,16843, + 16857,16891,16853,16853,16851,16875,16878,16869,16874,17117, + 17022,17024,16909, 0,16928,18329,16912,17077,17188,17215, + 16942,17378,16952, 0,17087,17367,17014,17452,17581,18287, + 18341,16960,17469,18522,17029,17085,17227,17126,17142,17157, + 17158,17175,17189,17712,16975,18344,18372,45164, 0,17226, + 17014,17034,17062,45164,17320,45164,17586,17233,17316,17074, + 17271,17141,17204,17442,17676,17630,17729,17731,17541,17511, + 17321,17878,17694,17518,17797,17687,17327,17403,17681,17904, + 17250,18401,18412,18416,18431,18453,18496,17349,17459,17307, + + 17753,17438,17417,18482,17895,17701,17096,17094,17811,17508, + 18371,18487,17124,17942,17902,17528,17365,17457,17715,18111, + 17884,17885,18118,17887,18178,18092,17373,18112,17909,18471, + 18191,18147,18189,17258,17733,17739,18042,18232,18385,18330, + 17751,17501,17941,17759,18240,17636,18187,18451,18255,17600, + 18153,18261,18119,18000,17131,18311,18130,17669,18310,18333, + 17567,18363,18319,18224,18398,18365,18380,17697,18016,18428, + 18427,18505,18429,18213,18452,18466,18476,18443,18467,18267, + 18231,18344,17179,17239,18477,18485,18490,18534,18558,18493, + 17800,18528,18364,18488,17416,18396,18532,18544,18422,18535, + + 18468,18547,17855,18542,18184,18540,18545,18546,18562,17410, + 17418,17474,18553,17543,18554,18090,18556,17988,18561,17650, + 17622,17686,17730,17766,17793,17853,17887,17918,17940,18003, + 18030,18039,18560,18565,18576,18566,18571,18581,18572,18586, + 18592,18582,18584,18589,18259,18058,18598,18600,18607,18278, + 18591,18603,18308,18613,18602,18601,18057,18621,18625,18627, + 18450,18687,18619,18635,18069,18408,18693,18714,18718,18166, + 18261,18647,18653,18648,18342,18290,18803,18881,18335,18668, + 18387,18665,18670,18386,18667,18949,18436,18474,18497,18506, + 18512,18531,18517,18606,18637,18675,18646,18652,18676,18660, + + 18675, 0,18665,18674,18685,18671,18688,18689,18671,18684, + 18693,18698,18699,18693,18690,18686,18706,18712,18705,18772, + 18696,18713,18700,18708,18707,18708,18716,18773,18726,18728, + 18714,18726,18727,18728,18796,18729,18719,18735,18727,18738, + 18743,18739,18745,18738,18739,18739,18750,18750,18748,18743, + 18736,18757,18748,18764,18771,18757,18770,18771,18774,18765, + 18766,18773,18778,18769,18774,18772,18774,18787,18776,18787, + 18848,18780,18790,18791,18785,18786,18795,18786,18859,18789, + 18788,18804,18805,18811,18798,18800,18813,18804,18796,18806, + 18822,18814,18858,18871,18822,18830,18837,18827,18841,18847, + + 18842,18849,18842,18834,18837,18857,18853,18848,18858, 0, + 18851,18851,18862,18851, 0, 0, 0, 0,18856,18868, + 18860,18868,18865,18863,18867,18875,18865,18868,18879,18870, + 18882,18888,18885,18878,18882,18887,18892,18894,18898,18903, + 18896,18886,18904,18901,18910,18892,18899, 0,18912,18911, + 18914,18908,18974,18914,18915, 0,18910,19000,18926,18936, + 18907,18972,18926,18914,18941,18926,18944,18947,18934,18955, + 18959,18944,18959, 0,18973,18960, 0,18964, 0, 0, + 0, 0,19034,18964, 0, 0, 0,18962, 0, 0, + 0, 0, 0,18966,18981,18974,45164,18966, 0,18972, + + 18963,18969,18984,18977,18972,18979, 0, 0,18974, 0, + 0, 0, 0, 0,18966,18974,18990,18980,18994,18981, + 18982,19058,19062,18977,19002,18999,19004,18992,45164,19006, + 0,19007,19073,19074, 0,19000,19003,19000,19074,19082, + 19024,19089,19021,19012,19033,19092,45164,19018,19035,19099, + 19035, 0,19039,19105,19031,19031,19035,19034, 0,19046, + 19112,19038,19038, 0,19051,19117,19043,19043,19049,19042, + 19058,19045,19125,19126,19052, 0,19066,19130,19177,19131, + 19132,19255,19134,19058,19071,19073,19073,19081,19138,19074, + 19066,19142,19143,19064,19087,19076, 0,19150,19076,19102, + + 19087,19154,19161,19162,19103,19170,19171,19172,19174,19178, + 19122,19123,45164,19184,19209,19113,19148,19323,19128,19130, + 19143,19136,19135,19153,19217,19224,19134,19143,19145,19225, + 19157,19143,19152,19153,19226,19165,19231,19163,19155,19241, + 19245,19163,19240,19180,19191,19170,19184, 0, 0,19176, + 19264,19267,19192,19211,19213,19223,19203,19216,19288,19290, + 19294,19216,19233,19234,19219,19239,19237,19294,19296,19328, + 19301,19237,19227,19240,19239,19241,45164,19420,19259,19264, + 19261,19260,19275,19276,19323,19266,19339,19268,19281,19276, + 19273,19269,19347,19292,19351,19282,19284,19354,19302,19294, + + 19511,19280,19297,19288,19286,19291,19290,19450,19522,19293, + 19299,19357,19310,19313,19300,19342,19517,19312,19526,19527, + 19532,19299,19513,19315,19318,19468,19321,19326,19515,19333, + 19463,19349,19531,19350,19533,19537,19413,19539,19542,19543, + 19544,19545,19476,19478,19474,19479,19480,19489,19555,19554, + 19487,19490,19560,19561,19562,19501,19504,19502,19493,19504, + 19505,19499,19492,19513,19499,19508, 0,19509,19510,19586, + 0, 0,19515,19592,19523,19527,19535,19540,19526,19538, + 19531,19533,19531,19543,19607,19546,19550,19544,19546,19552, + 19619,19558,19549,19551,19557,19555,19560,19569,19575,19563, + + 19573,19635,19579,19639,19640,19570,19580,19577,19646,19583, + 19650,19647,19651,19594,19584,19591,19584,19592,19588,19596, + 19597,19591,19591,19580,19662,19665,19595,19595,19668,19592, + 19612,19615,19620,19679,19680,19681,19682,19611,19614,19627, + 19687,19696,19700,19613,19620,19610,19629,19640,19632,19676, + 19715,19635,19644,19631,19653,19641,19714,19715,19650,19716, + 19663,19681,19660,19684,19651,19660,19645,19649,19727,19684, + 19675,19675,19682,19753,19691,19686,19696, 0,19689,19687, + 19699,19688, 0, 0, 0, 0,19692,19693,19705,19767, + 19771,19778,45164,19772,19702,19715,19711,19700,19710,45164, + + 19722,19721,19722,19718,19729,19718,19719,19710,19722,19724, + 19729,19739,19727,19731,19742,19732,19737,19745,19751,19748, + 19741,19745,19751,19755,19757,19758,19764,19755,19746,19764, + 19761,19751,19772,19755,19755,19762, 0,19775,19774,19779, + 19772,19839,19780,19759,19782,19781,19775, 0,19779,19866, + 19870,19809,19849,19851,19850,19783,19784,19810,19873,19808, + 19806,19869,19881,19805,19814,19884,19828,19815,19826,19891, + 19894,19823,19827,19841,19835,19825,19902,19841,19845,19905, + 19910,19912,19915,19917,19848,19911,19857,19850,19866,19868, + 19861,19866,19923,19867,19858,19857,19877,19867,19857,19876, + + 19864,19881,19938,19940,19941,19942,19944,19945,19946,19878, + 19875, 0,19891,19958,19885,19957,19897,19887,19961,19962, + 19963,19937,19936,19938,20036,20119,20207,19902,20008,19897, + 19948,19909,19955,19921,19962,19964,19934,19976,19993,19993, + 19998,20025,19978,20000,20038,19918,45164,45164,45164,45164, + 45164,45164,19916,19934,19958,20211,20216,19972,45164,19976, + 19980, 0,19990, 0,19991, 0, 0, 0, 0,20009, + 0,20010,20004,20018,19996,19997,20014,20002,20017,20007, + 20070,20208,20219,20019,20016,45164,20041,45164,19997,20164, + 20171,20178,20184,20220,20186,20194,19998,20211,20212,20228, + + 20238,20231,20246,20236,20252,20261,20265,20264,20267,20268, + 20277,20283,20281,45164,20242,20290,20296,20310,20312,20320, + 20318,20326,20332,20334,20341,20347,20401,20281,20358,20365, + 20367,20372,20379,20384,20391,20393,20400,20282,20394,20339, + 20398,20356,20316,20401,20405,20430,20437,20412,20428,20436, + 20441,20453,20515,20529,20534,20614,20539,20476,20455,20481, + 20486,20032,20434,20559,20563,20500,45164,20509,20514,45164, + 20520,20533,20538,20027,20551,20572,45164,20583,20585,20629, + 20645,20656,20103,20319,20658,20595,20601,20611,20609,20618, + 20616,20627,20635,20643,20671,20666,20676,20684,20700,20691, + + 20689,20698,20706,20708,20718,20720,20725,20733,20738,20740, + 20745,20038,20747,20753,20758,20760,20772,20766,20774,20783, + 20296,20788,20790,20796,20798,20803,20833,20303,20810,20812, + 20820,20826,20828,20835,20841,20850,20848,20051,20859,20866, + 20873,20039,20929,20875,20890,20968,20892,20926,20900,20906, + 20933,21006,20942,20911,20950,20957,20955,20973,20978,20983, + 20989,20996,20966,20994,20111,45164,20157,20157,20179,20213, + 20216,20234,20261,20267,20268,20272,20278,21004,21012,21014, + 21022,21027,21029,21040,21042,21047,21057,21064,21071,21073, + 21079,21081,21088,21094,21099,21106,21108,21119,21117,21124, + + 21134,21140,21145,21147,21129,21156,21165,21171,21173,21233, + 21197,21190,21272,21276,45164,20253,45164,20352,21195,21212, + 21214,45164,20278,21361,21439,20310,20267,20390,21265,20286, + 20719,21231,20376,20401,20515,20492,20568,20506,20674,20531, + 20546,20635,20625,20404,20690,20652,20918,20470,21148,20431, + 20504,20544,21213,20295,20804,20825,20833,21083,20900,20856, + 21230,20700,20730,20764,21231,20947,20357,21053,21056,20996, + 20619,20875,20923,21298,21313,21314,21315,21256,21165,21238, + 20873,21267,20385,21025,21049,21242,21074,20681,21227,20950, + 21332,21254,21245,21268,20410,20855,21257,21266,20885,20989, + + 21091,20968,20895,20452,21129,21169,21264,21289,20471,21258, + 21291,21292,21285,21296,21290,21317,21373,21297,21294,21330, + 21334,21321,21331,21088,21345,21329,21353,21216,21394,21328, + 21336,21518,21346,21416,21363,21352,21366,21449,21250,21396, + 21367,21372,21364,21375,21391,21395,21399,21392,21388,21393, + 21410,21403,21412,21429,21405,21414,21486,21436,21423,21433, + 21441,21425,21427,20518,21442,21149,21435,21450,21452,21467, + 21481,21476,21431,21488,21489,21491,21471,21494,21499,21498, + 21500,21503,21526,21504,21482,21495,21520,21515,21517,21514, + 21521,21532,21523,21540,21528,21595,20600,20623,45164, 0, + + 20815,20831,20944,20983,21010,21039,21254,21358,21375,21544, + 21446,21506,21529,21521,21537,45164,21550,21538,21551,21542, + 21558,21561,21624,21539,45164,21555,21544,21557,21567,21560, + 21635,21636,21562,21561,21641,21645,45164,21568,21578,21583, + 21589,21571,21581,21654,21655,21656,21660,21662,21666,21667, + 21668,21672,21673,21674,21678,21604,21580,21687,21691,21615, + 21613,21778,21856,21627,21621,21629,21608,21604,21625,21624, + 21630,21703,21632,21646,21635,21636,21709,21712,21715,21716, + 21719,21649,21720,21653,21650,21675,21718,21721,21651,21666, + 21658,21677,21684,21758,21672,21759,21680,21681,21692,21698, + + 21765,21690,21700,21701,21704,21709,21780,21699,21729,21737, + 21702,21775,21789,21744,21745,21738,21748,21756,21728,21751, + 21736,21825,21754,21757,21741,21759,21768,21761,21770,21825, + 21834,21836,21838,21839,21794,21781,21795,21858,21863,21953, + 21797,21807,21808,21809,21820,21824,21826,21864,21827,21834, + 21836,21840,21841,21885,21833,21843,21865,22044,21844,21859, + 21864,45164,21846,21983,21984,21872,21847,21870,21986,21868, + 22051,45164,22049,22057,22062,22053,22068,22004,22003,22021, + 21861,21875,22010,22064,21871,22063,22071,22081,22084,22085, + 21874,21980,22014,22015,22027,22025,22091,22026,22095,22025, + + 22100,22101,22033,22040,22039,22045,22036,22069,22042,22077, + 22139,22070,22088,22046,22061,22164,22168,45164,22172,22177, + 45164,22073,22075,22110,22111,22112,22078,22117,22133,22122, + 22120,22138,22126,22134,22074,22140,22080,22141,22118,22149, + 22144,22136,22081,22160,22180,22105,22200,22158,22157,22129, + 22218,22233,22163,22162,22164,22175,22173,22167,22177,22183, + 22240,22242,22172,22250,22190,22188,22259,22188,22204,22201, + 22196,22265,22266,22269,22200,22199,22221,22280,22210,22214, + 22236,22216,22271,22214,22299,22220,22223,22231,22344,22229, + 22306,22259,22256,22263,22260,22339,22258,22238,22268,22325, + + 22273,22280,22223,22263,22341,22277,22296,22261,22299,22281, + 22300,22304,22297,22315,22313,22308,22294,22305,22320,22317, + 22318,22311,22327,22317,22323,22335,22318,22334,22326,22329, + 22327,22336,22343,22337,22346,22400,22347,22354,22349,22365, + 22366,22356,22357,22358,22360,22402,22367,22363,22370,22372, + 22386,22381,22377,22388,22393,22395,22409,22417,22384,22406, + 22407,22410,22408,22414,22476,22387,22415,22470,22488,22433, + 22509,22430,22498,22500,22445,22446,22448,22442,22452,22511, + 22438,22445,22446,22528,22531,22538,22547,22534,22541,22486, + 22471,22473,22491,22481,22485,22490,22559,22563,22567,22569, + + 22481,22559,22514,22492,22496,22500,22493,22499,22575, 0, + 22568,22502,22522,22505,22534,22537,22519,22529,22594,22595, + 22598,22599,22603,22606,22602,22620,22543,22614,22549,22612, + 22544,22616,22617,22631,22596,22602,22701,22540,22541,22784, + 22587,22571,22583,22593,22557,22565,22577,22597,22572,22594, + 22588,22609,22611,22608,22585,22872,22611,22662,22684,22876, + 22623,45164,45164,22616,22624,22677,22692,22631,22636,22648, + 22632,22637,22643,22630,22641,22634,22642,22651,22637,22644, + 22653, 0,22654,22653,22659,22671,22662,22663,22657,22676, + 22678,45164,22873,22881,22661,22669,45164,22678,22679,22681, + + 22744,45164,22685,22688,22871,22872,22875,22876,22877,22873, + 22886,22895,22892,22889,22885,22884,22893,22888,22897,22899, + 22917,22908,22902,22928,22922,22926,22911,22930,45164,22690, + 22683,22684,22878,22693,22694,22695,45164,45164,22691,22697, + 22851,22846,22933,22708,22842,22862,22915,22932,22937,22931, + 22934,22918,22940,22979,22997,23001,23000,23005,22709,22957, + 22954,23039,23119,23045,23199,23279,23359,23051,22959,23022, + 23028,22710,22712,22854,22812,23032,22965,22984,23000,22840, + 22990,22849,22991,23033,23073,23061,23075,23077,23081,23082, + 23099,23030,23027,23033,22853,23122,23007,23046,22867,23043, + + 23048,23064,23067,23131,23083,23072,22969,23113,22998,23081, + 23052,23082,23084,23087,23088, 0,23086,23095,23109,23089, + 23102,23103,23090,23104,23120,23092,23108,23107,23114,23128, + 23123,23125,23131,23126,23127,23191,23140,23150,23142,45164, + 23145,23149,23161,23227,23242,23250,23291,23228,23205,23173, + 23192,23145,23283,23288,23229,23172,23170,23255,23230,23239, + 23175,23244,23260,23258,23144,23262,23272,23154,23165,23164, + 45164,23193,23196,23208,23239,23250,23251,23261,23267,23269, + 23270,23274,23276,23281,23352,23340,45164,23323,23283,23298, + 23292,23309,23299,23307,23327,23328,23326,23329,23331,23332, + + 23334,23335,23304,23346,23338,23360,23340,23339,23341,23354, + 23365,23348,23306,23308,23419,23364,23374,23356,23372,23376, + 23377,23370,23462,23540,23379,23381,23383,23436,23447,23390, + 23387,23388,23454,23395,23394,23393,23401,23403,23404,23407, + 23426,23405,23427,23414,23406,23415,23412,23432,23475,23501, + 23442,23511,23433,23455,23480,23434,23444,23452,23469,23457, + 23468,23450,23482,23484,23458,23479,23472,23489,23492,23504, + 23505,23467,23552,23487,23493,23507,23509,23510,23512,23516, + 23514,23517,23529,23525,23527,23532,23536,23530,23538,23533, + 23547,23548,23531,23543,23549,23542,23559,23561,23562,23607, + + 23566,23568,23569,23632,23575,23573,23574,23576,23580,23585, + 23582,23586,23588,23593,23598,23600,23577,23595,23659,23601, + 23605,23608,23612,23613,23616,23692,23621,23614,23633,23619, + 23624,23625,23634,23640,23641,23639,23642,23644,23645,23646, + 23647,23654,23658,23651,23663,23669,23665,23652,23672,23680, + 23667,23653,23673,23677,23685,23684,23678,23686,23689,23691, + 23693,23698,23695,45164,23686,23682,23677,23705,45164, 0, + 23702,23687,23680,23709,23707,23710,23713,45164,23714,23709, + 23774,23715,23698,23719,23720,23779,23718,23781,23724,23783, + 23787,23709,23724,23713,23789,23706,23729,23710,23724,23728, + + 23718,23726,23798,45164,23721,23729,23723,23731,23737,23746, + 23732,23812,45164,23731,23744,23899,23980,23737,23763,23738, + 23743,23748,23749,23822,23759,23761,23745,23783,23831,45164, + 23751,23766,23760,23847,23823,23864,23792,23774,23772,23781, + 23783,23875,23785,23787,23860,23862,23808,23790,23810,23805, + 23803,23793,23876,23791,23825,23801,23802,23886,23883,23891, + 23832,23804,23897,23827,23823,23854,23892,23896,23928,23904, + 23900,23859,23816,23921,23994,24012,23882,45164,24102,23908, + 23904,23839,23927,23870,23904,23887,23988,23964,23846,23927, + 24006,23940,23947,23962,23942,23952,23963,23958,24026,24031, + + 24036,24193,24048,24065,24197,24052,24058,23992,23954,24007, + 23848,23852,23855,24066,24069,24009,24010,23924,23955,23996, + 23997,24011,24007,24014,24009,24123,24128,24139,24141,24138, + 24005,24143,24202,24149,24144,24148,24007,24209,24008,24015, + 24016,24152,24140,24125,24132,24146,24169,24162,24171,24177, + 24182,24174,24157,24168,24176,24178,24178,24183,24202,24180, + 24190,24192,24207,24286,24189,24201,24253,24211,24268,24212, + 24212,24218,24217,24215,24224,24230,24220,24231,24302,24225, + 24234,24249,24247,24248,24312,24318,24330,24315,24317,24265, + 24279,24244,24245,24363,24246,24276,24285,24340,24304,24271, + + 24277,24358,24295,24293,24296,24306,24311,24309,24322,24317, + 24319,24385,24324,24334,24324,24329,24323,24332,24334,24343, + 24331,24341,24335,24347,24344,24393,24351,45164,24342,24349, + 24344,24345,24356,24360,24444,24423,24365,24377,24371,24354, + 24384,24379,24388,24378,24380,24394,24383,24381,24401,24405, + 24397,24398,24408,24407,24391,24400,24416,24424,24411,24412, + 24347,24429,24436,24418,24350,24431,24425,24501,24502,24435, + 24438,24423,24512,24455,24448,24437,24454,45164,24524,24532, + 24541,24550,24554,24535,24494,24477,24462,45164,24448,24546, + 24559,24562,24552,24503,24502,24505,24469,24498,24571,45164, + + 24494,24491,24506,24501,24498,24505,24576,24503,24512,24579, + 24580,24583,24584,24586,24585,24513,45164,24519,24542,24596, + 24598,24599,24572,24576,24659,24515,45164,45164,24519,24742, + 24570,24539,24525,24534,24542,24550,24537,24546,24555,24542, + 24544,24551,24548,24566,24555,24550,24572,24570,24568,24559, + 24830,24579,45164,24563,24636,24614,24585,45164,24641,24593, + 24594,24644,24624,24595,24655,24591,24601,24584,24601,24611, + 24608,24602,24592,24608, 0,24611,24599,24619,24617,24599, + 24622,24620,24633,24827,24829,24837,24633,24634,24639,24832, + 24641,24645,24824,24827,24832,24828,24830,45164,24829,24842, + + 24844,24831,24835,24843,24849,24846,24855,24856,24847,24850, + 24854,24860,24865,24888,24866,24916,24698,24642,45164,24704, + 24649,24650,24663,45164,24661,24654,24803,24887,24805,24871, + 24876,24864,24934,24873,45164,24948,24874,24951,24938,24953, + 24955,24908,24651,24647,24668,25045,25053,25133,25018,25082, + 25099,25030,25120,24810,24844,45164,24969,24965,24910,24667, + 24669,24675,24973,24979,24669,24785,24820,45164,24796,24813, + 24930,24919,24929,24815,24909,24937,24945,25025,24932,24943, + 24980,24953,24821,24827,24998,24975,24988,25010,25020, 0, + 24978,25028,25048,24935,25034,25057,25052,25080,24982,24950, + + 25017,25042,25043,25064,24927,24996,25081,25102,25137,25030, + 25103,25045,25105,25085,25128,25075,25164,25167,25115,25108, + 25113,25084,25168,25100,25097,25126,25119,25135,25129,25121, + 25139,25136,25144,25137,25141,25203,25135,25139,45164,45164, + 25158,25156,45164,25147,25158,25148,25162,25163,25164,25166, + 25165,25167,25232,25244, 0,25168,25181,25169,25187,25189, + 25190,25195,25198,25188,25196,25197,25200,25201,25209,25216, + 25214,25217,25218,25222,25220,25223,25224,25228,25226,25233, + 25231,25244,25215,25243,25245,45164,45164,25317,25395,25293, + 25308,25299,25310,25311,25312,25313,25315,25314,25318,25330, + + 25319,25327,25320,25323,25340,25321,25322,25324,25325,25347, + 25331,25328,25326,25343,25348,25356,25352,25341,25363,25332, + 25355,25329,25339,25353,25367,25351,25358,25357,25373,25379, + 25371,25359,25377,25382,25360,25344,25361,25364,25370,25369, + 25397,25368,25441,25442,25447,25449,25451,25452,25457,25458, + 25453,25459,25460,25346,25466,25349,25469,25350,25354,25462, + 25470,25473,25475,25464,25476,25461,25477,25463,25465,25488, + 25481,25490,25482,25485,25484,25497,25495,25489,25494,25496, + 25491,25498,25508,25493,25510,25502,25501,25507,25499,25509, + 25362,25513,25515,25506,25516,25523,25398,25412,25392,25410, + + 0,25407,45164,25406,25411,25418,25423,25434,25443,25458, + 0,25435,25442,25450,25458,45164,25474, 0,25517,25520, + 25524,25590,25538, 0,25506,25593,25585,25536,25525,25527, + 0,25528, 0,25529, 0,25524,25601,45164,25540,25541, + 25672,25750,25546,25530,25540,25549,25608,25529,25538,25534, + 25612,25613,25539,25542,25550,25609,25610,25617,25550,25555, + 25556,25626,25556,25641,25559,25629,25559,25631,25563,25561, + 25573, 0,25573,25637,25572,25567,25564,25577,25575,25575, + 25584, 0,25648,25573,25639,25643,25648,25649,45164,25604, + 25713,25833,25598,25601,25605,25636, 0,25583,25680,45164, + + 25699,25652,25592, 0,25702, 0,25606,45164,25684, 0, + 25646,25613,25722,25739,25626,25629,25642,25630,25641,25664, + 25666, 0,25672,25656,25667,25669,25670,25672,25742,25665, + 25688,25677,25687,25682,25700,25682,25691, 0, 0,25685, + 25762,25691,25689,25703, 0,25713,25701,25706,25709,25723, + 25722,25723,25706,25724,25711,25727,25713,25924,25713,25717, + 25801,25928,45164,25738, 0,25929,25730,25733,25734,25735, + 25729,25721,25750,25737,25930,25733,25931,25753,25747,25746, + 25743,25735,25932,25933,25934,25752,25759,25750,25935,25874, + 25753,25937,25748,25872,25863,25940,25870, 0,25881, 0, + + 25873, 0, 0, 0,25944,25873,25873,25889,25882,25882, + 45164,25889,25887,25891,25883,25904,25893,25899,45164,45164, + 45164,25896,25901,25902,25904,25900,25905,25980,25905,25901, + 25912,25926,25904,25926,25919,25928,25934,25933,25924,25937, + 25935,25926,25931,25932,25935,25938,25937,25954,25936,25958, + 26015,25948,25947,25953,25939,25956, 0,25950,25961,25953, + 26026,25966,25958,25944,26033,26040,26037,26041,25971,25983, + 25982,26048,26050,26054,26040,26054,26055,26057,25983,26000, + 25993,25998,25995,25984,26060,26061,25988,26008,26009,26065, + 26066,26067,26069,26070,26009,26000, 0,26076,26050,26051, + + 26140,26223,26042,45164,26039,26044,26045,26043,26046,26048, + 26050,26047,26049,26052,26057,26056,26058,26069,26060,26103, + 26094,26104,26311,26038,26097,26145,26024,45164,26043,26108, + 26033,26075,26076,26147,26082,26314,26149,45164,26067,26073, + 45164,26086,26095,26088,26104, 0, 0,26101,26096,26092, + 45164,26117,26116,26116,26175,26308,26317,26104,26394,26121, + 26184,26124,26128,26472,26473,26474,26475,26476,26477,26478, + 26479,26480,26482,26484,26481,26483,26498,26487,26494,26490, + 26492,26488,26509,26506,26520,26523,26521,26126,26133,26129, + 26131,26146,26252,26512,26511,26528,26501,26526,26527,26110, + + 45164,26514,26524,26532,26513,26136,26622,26147,26324,26630, + 26604,26655,26626,26659,26666,26670,26689,26261,26331,45164, + 26274,45164,26145,26318,26134,26265,26152,26154,26285,26258, + 26292,26256,26293,26294,26660,26738,26298,26306,26435,26260, + 26621,26699,26299,26297,26318,26645,45164,45164,45164,26438, + 26451,26720,26325,26434,26301,26444,26454,26297,26673,26449, + 26456,26679, 0,26464,45164,26611,26461,26711,26474,26457, + 26471,26631,26471,26471,26655,26535,26661,26555,26547,26482, + 26543,26540,26572,26568,26595,26616,26605,26682,26658,26629, + 26700,26632,26657, 0,26654,26692,26701,26683,26665,26703, + + 26707,26708,26710,26714,26709,26728,26718,26716,26725,26719, + 26736,26738,26740,26742,26732,26746,26744,26809,26811,26750, + 26813,26754,26896,26974,26756,26807,26754,26758,26759,26760, + 26767,26761,26762,26764,26768,26770,26772,26773,26776,26777, + 26778,26779,26783,26784,26785,26786,26792,26846,26867,26798, + 26795,26809,26814,26815,26861,26878,26819,26800,26821,26822, + 26828,26825,26885,26903,26824,26836,26844,26882,26856,26848, + 26868,26842,26847,26858,26845,26865,26870,26873,26874,26875, + 26879,26880,26881,26886,26883,26887,26890,26898,26892,26913, + 26904,26884,26901,26918,26914,26934,26920,26936,26908,26939, + + 26921,26984,27003,27004,26943,26923, 0,26914,26921,27010, + 0, 0,26945,26953,26941,26948, 0,26941, 0,26939, + 26956,45164,45164, 0,26959,26945,27024, 0,26939,27026, + 26965,26942,45164,26954,26968,26961,26963,26966,26965,26977, + 26964,27118,27206,27284,26978,26969,27045,26973,26974,26995, + 27052,27056,27000,26997,26988,27203,27200,26999,27002,27003, + 26999,27207,27002,27009,27004,27003,27017,27007,27013,27083, + 27014,27021,27027,27022,45164,27205,27204,27202,27011,27367, + 27033,27167,27174,27018,27028,27023,27105,27036,27216,27032, + 27146,27176,27136,27133,27218,27219,27177,27178,27145,27228, + + 27164,27171,27244,27171,27193,27179,27195,27188,27181,27200, + 27198,27258,27264,27205,27261,27458,27222,27223,27218,27231, + 27252,27277,27459,27294,27219,27463,27467,45164,27242,27233, + 27238,27240,27250,27249,27246,27234,27468,27251,27253,27469, + 27254,27470,27269,27266,27474,27257,27264,27475,27259,27466, + 27275,27258,27337,27263,27420,27267,27270,27276,27293,27295, + 27288,27296,27279,45164,27286,27417,27404,27418,27420,27407, + 27408,27410,27413,27412,27423,27431,27415,27421,27426,27440, + 27430,27434,27433,27444,27441,27448,27436,27456,27452,27437, + 27457,27451,27473,27464,27471,27488,27536,27480,27454,27487, + + 27463,27540,27484,27544,27560,27565,27493,45164,27571,27505, + 27510,27510,27503,27576,27580,27567,27514,27518,27519,27520, + 27514,27513,27510,27515,27514,27517,27512,27513,27515,27518, + 27519,27592,27594,27595,27596,27587,27539, 0, 0,27573, + 27670,27758,27841,27540,27547,27535,27534,27537,27548,27551, + 27528,27530,27552,27558,27546,27701,27573,27553,27698,27574, + 27695,27575,27703,27706,27704,27929,27583,27765,27571,27578, + 27758,27590,27769,27571,27589,27581,27592,27583,27694,27712, + 27709,27703,27711,45164,27776,45164,27926,27934,27937,27797, + 45164,27784,28027,27723,27726,45164,27928,27921,27931,27932, + + 27929,27933,27934,28105,28106,27930,45164,45164,28107,28108, + 28110,28109,28111,28112,28113,28114,28115,28126,28127,28117, + 27729,27731,27737,27738,27740,28128,28129,28130,27717,45164, + 28122,28125,28136,28123,28137,28135,27742,27964,27736,28151, + 27730,27733,28161,28180,28232,28236,28242,28252,27748,45164, + 27746,45164,27889,27751,27760,27951,28252,27753,27890,27754, + 27761,45164,28246,28282,27738,27766,27743,27770,28253,45164, + 45164,28095,28226,27924,27976,28128,27891,27897,27904,27904, + 27936,28072,27874,28129,28265,28298,28317,27888,27915,27940, + 28334,27938,27942,28322,45164,28069,28090,28068,27936,28081, + + 28082,28091,28092,28088,28088,28082,28221,28113,28197,28107, + 28213,28108,28121,28224,28261,28229,28165,28240,28263,28110, + 28249,28267,28271,28265,28112,28332,28336,28134,28149,28167, + 28198,28421,28499,28328,28221,28288,28294,28270,28291,28183, + 28302,28296,28298,28306,28308,28305,28318,28184,28316,28321, + 28372,28320,28323,28339,28332,28328,28412,28418,28333,28373, + 28331,28385,28365,28342,28304,28337,28329,28379,28383,28390, + 28388,28386,28401,28393,28340,28391,28396,28413,28400,28351, + 28414, 0,28474,28423,28409,28412,28405,28417,45164,28413, + 28404,28422,28435,28500,28430,45164, 0, 0, 0,28445, + + 28440,28508,28598,28686,28764,28449,28437,28438,28450,28431, + 28457,28679,45164,28451,28460,28461,28463,28462,28465,28467, + 28467,28476,28540,28688,28479,28471,28477,28680,28685,28682, + 28847,28729,28488,28710,28472,28483,28552,28481,28485,28497, + 28563,28564,28496,28566,28490,28496,28512,28505,28506,28515, + 28507,28511,28513,28588,28589,28518,28718,28625,28629,28721, + 28621,28694,28698,28591,28699,28650,28628,28652,28631,28662, + 28725,28655,28665,28658,28713,28659,28742,28938,28939,28943, + 28660,28657,28736,28684,28672,28687,28671,28677,28678,28686, + 28696,28707,28697,28706,45164,28705,28724,28728,28737,28726, + + 28746,28715,28716,28735,28741,28739,28750,28744,28745,28762, + 28747,28749,28755,28757,28889,28760,28761,28944,28766,28945, + 28946,28902,28968,28777,45164,45164,28974,28949,28958,28865, + 28879,28896,28911,28917,28906,28920,28921,28904,28905,28906, + 28919,28982,28983,28984,28985,28972,28981,28917,28920,29006, + 29096,29184,45164,29267,28921,28932,28942,28948,28934,28937, + 45164,45164,28956,28949,28938,28941,28946,29345,28968,28976, + 28967,28962,28970,28966,29432,28967,28971,45164,28978,28971, + 28968,28980,45164, 0,28979,28980,28973,28994,28981,29182, + 29065,29359,28979,28996,28997,29350,29351,29352,29354,29353, + + 29355,29356,29358,29360,29359,29369,29361,29368,29390,45164, + 28982,29017,29383,29392,29373,29385,29397,45164,29000,29003, + 29397,29123,29012,29398,29379,29404,45164,29382,28991,29384, + 45164,29402,29389,29463,29017,29082,29005,29499,29514,29520, + 29525,29529,29539,29546,29561,29611,29626,29630,29410,29002, + 45164,29145,29122,45164,29120,29148,29151,29000,45164,29154, + 29002,29037,29417,29398,29101,29194,29220,29174,29157,29181, + 29152,29367,29493,29310,29405,29150,29131,29641,29157,29152, + 29657,29628,29642,29680,29167,29231,29710,29714,29168,29306, + 29316,29653,29196,45164,29181,29301,29312,29313,29305,29298, + + 45164,29326,29334,29352,29431,29348,29478,29504,29518,29472, + 29519,29532,29492,29597,29336,29319,29357,29355,29543,29799, + 29877,29640,29410, 0,29500,29654,29415,29479,29623,29438, + 29434,29665,29445,29460,29532,29457, 0,29464,29555,29478, + 29480,29481,29670,29508,29509,29508,29507, 0,29517,29538, + 29544,29543,29563,29561,29556,29550,29566,29652,29599,29665, + 29568,29595,29624,29606,29631,45164,29623,29664,29658,29663, + 29955,30033,29660,29669,29662,29657,29664,29693,29670,29681, + 29682,29685,29683,29687,29689,29676,29757,29758,29679,29698, + 29699,29752,29753,29757,29765,29764,30119,29770,29709,29706, + + 29701,29700,29704,29708,29725,29702,29715,29724,29726,29729, + 29785,29801,29727,29802,29728,29731,29741,29736,29743,29768, + 29828,29819,29768,29767,29890,29900,29857,29760,29832,29762, + 29805,45164,45164,29759,29769,29774,29769,29784,45164,29774, + 45164,29766,29789,29794,29781,29782,29784,29769,29806,29850, + 29851,29809,29864,29808,29846,29803,29847,29893,29782,29930, + 29934,29924,29849,45164,45164,29877,29936,29869,29880,29872, + 29870,29884,29882,29883,29888,29874,29875,29953,29880,29881, + 29894,29888,29891,30212,29904,29905,29892,29955,29901,29906, + 29913,29883,29908,29915,45164,29893,29930,29909,29916,29926, + + 29912,29920,45164,29930,29910,29974,29933,29935,45164,29945, + 29943,29949,45164,29941,29931,30014,29933,30023,45164,30014, + 30015,30016,30019,30026,30290,29944,29982,30025,30291,30292, + 45164,30293,30294,29983,30300,30296,30302,30298,30299,29994, + 29952,30305,29953,30011,30013,30315,45164,30304,45164,30306, + 45164,30305,29979,45164,30044,29981,30335,30341,30345,30349, + 30360,30429,30433,30440,30444,30524,30450,30045,29982,30012, + 30251,30539,30252,29992,30055,45164,30440,30460,30344,30029, + 29995,29994,45164,30253,30311, 0,29993,30533,30554,29993, + 29996,30068,45164,29988,45164,30297,30345,30396,30075,30018, + + 30020,30098,45164,45164,30376,30398,30017,30280,30261,30413, + 30424,30437,30281,30513,30232,30249,30260,30476,30442,30618, + 30696,30449,30524,30316,30781,30529,30383,30537,30558,30592, + 30579,30619,30657,30636,30599,30670,30683,30741,30753,30752, + 30772,30780,30352,30309,45164,30291,30371,45164,30288,30299, + 30335,30321,30789,30874,30955,30351,30336,30372, 0,30587, + 30357,30368,30392,30397,30395,30414,30615,30801,30443,30615, + 30399,45164,30403,45164,30500,30432,30421,30518,30519,30600, + 0,30489,30454,30887,30459,30562,30607, 0,30483,30566, + 30508,30578,30526,30522,30530,30586,30601,30527,30611,30554, + + 30544,45164,30560,45164,30547,45164,30550,30544,30634,30559, + 0,30556,30576,30577, 0,30639,30580,30571,45164,30601, + 30593,30616,30603,30679,30612,30615,30632,30636,30632,30633, + 30641,30736,30661,30662,30667,30656,45164,31038,30660,30669, + 30644,30679,30679,30667,30688,45164,30675,30691,30773,30693, + 30694,30699,30707,30671,30723,30800,30680,45164,30706,30693, + 30718,45164,30808,30788,30703,30848,30825,30780,30798,30829, + 30835,30737,30852,45164,30858,45164,30866,30742,45164,30730, + 30867,45164,30870,30871,30872,30876,30850,30731,45164,30736, + 30739,30773,30742,30878,45164,30903,30900,30929,30896,31129, + + 30968,31133,31137,31141,31145,31225,31151,31305,31385,31465, + 31157,31166,30848,30979,30989,31006,31153,31240,31105,30775, + 31231,45164,31137,30776,45164,30866,30745,30809,30878,31250, + 31268,30810,30820,30838,30873,45164,30943,30945,30916,45164, + 30842,30864,30940,31121,31177,30862,45164,31106,31236,30942, + 31266,31125,30874,45164,30902,31149,31543,31626,31223,31201, + 30908,30915,31144,31108,30926,31200,30954,31267,31116,30909, + 30981,30916,31001,45164,45164,30949,45164,31328,31704,31782, + 31071,31098,31218,31082,31084,31095,31115,31132,31147,31208, + 31199,31142,31219,31232,31162,31174,31339,31351,31375,31336, + + 31180,31279,31299,31226,31281,31235,31229,31262,31292,31214, + 31226,31252,31252,31347,31396,31291,31258,31356,31252,31359, + 31305,45164,31262,31263,31272,31370,31301,31376,31303,31322, + 31323,31335,31358,31360,31423,31366,31368,31355,31415,31865, + 31425,31426,31375,45164,31371,45164,31377,31355,31380,45164, + 31382,31383,31388,31439,31474,31423,31414,45164,45164,31380, + 45164,31377,31449,31369,45164,31448,31450,45164,31446,31381, + 45164,31382,45164,31421,45164,31467,45164,31466,45164,31483, + 45164,31468,31394,45164,31425,31436,31438,31412,31411,45164, + 31488,31489,31517,31503,31956,31580,32013,32093,32173,31595, + + 31508,31612,31658,31624,31551,45164,31521,31726,31418,31600, + 31423,45164,31606,45164,31519,45164,31452,31444,31445,31436, + 31588,45164,31566,31458,31468,31460,31531,31470,31543,31497, + 31598,31463,45164,32251,32329,31686,31578,31698,31707,31726, + 31743,31752,31764,31460,45164,31942,32407,45164,32485,31539, + 31555,31479,31491,31565,31505,31576,31776,31539,31622,31631, + 31753,45164,45164,45164,45164,31521,31962,31583,31536,31611, + 31570,31636,31564,31585,31599,31590,31598,31602,31606,31621, + 31625,31625,31640,31648,31967,31635,31637,31641,45164,32568, + 31628,45164,31632,45164,31642,45164,31641,45164,31671,45164, + + 31670,31645,45164,31992,45164,31704,31683,31697,31762,31766, + 45164,31751,45164,31761,31961,31931,31696,31984,45164,31998, + 32042,32067,32101,32659,32075,32105,32126,32142,32158,32199, + 32208,32230,31716,31725,31698,45164,31699,45164,31701,31965, + 45164,31720,31728,45164,31720,31737,31719,31723,32068,31711, + 31742,31749,32098,31947,32157,45164,45164,31777,31938,31824, + 31825,31753,31757,31839,31764,45164,31781,45164,31952,31782, + 45164,31793,31853,31887,31901,31891,31916,45164,31930,31931, + 31987,31933,31940,31939,31945,31947,31949,45164,31937,45164, + 31950,31960,31990,31966,31972,32059,32067,45164,32152,32151, + + 32169,31972,32176,32295,32300,32305,32317,32334,32362,32386, + 32412,32454,32663,31998,32002,31982,45164,32001,32011,32008, + 32030,32025,32032,32020,45164,32041,32212,32068,32063,32129, + 32055,32133,32096,32060,32072,32087,32098,32103,32157,32158, + 45164,32105,32108,32118,32112,32115,32184,45164,32154,32128, + 32177,32152,32167,45164,45164,32235,45164,45164,32166,32237, + 32366,32443,32458,32667,32684,32692,32188,32181,32184,45164, + 32254,45164,32174,45164,32189,32259,32260,32263,32196,32201, + 32200,32220,32207,32224,45164,45164,32214,32216,32229,32284, + 32290,45164,32236,45164,32278,32251,32236,32315,32267,32478, + + 32492,32696,32276,45164,32251,32259,32251,45164,32338,32268, + 32277,32268,32272,32276,32334,32335,32280,45164,45164,32313, + 45164,32364,32294,32702,32281,32304,32354,32314,32304,32306, + 32317,45164,45164,32321,32312,32407,32325,32317,32408,32318, + 45164,32338,32341,32399,32345,32348,32336,45164,32360,32431, + 32346,32361,32416,45164,32418,32420,45164,32379,32361,32375, + 45164,45164,45164,32378,32374,45164,32444,32401,45164,32467, + 32385,32385,32386,45164,45164,32781,32805,32829,32853,32877, + 32901,32925,32949,32973,32997,33021,33045,33069,33093,33117, + 33141,33165,33189,33213,33237,33261,33285,33309,33333,33357, + + 33381,33405,33429,33453,33477,33501,33525,33549,33573,33597, + 33621,33645,33669,33693,33717,33741,33765,33789,33813,33837, + 33861,33885,33909,33933,33957,33981,34005,34029,34053,34077, + 34101,34125,34149,34173,34197,34221,34245,34269,34293,34317, + 34341,34365,34389,34413,34437,34461,34485,34509,34526,34548, + 34572,34596,34616,34638,34662,34673,34682,34691,32499,32509, + 34700,34722,34733,34748,34770,34794,34813,34835,32511,32513, + 34845,32523,32526,34869,34880,34889,34898,34919,34941,32534, + 34965,34989,32471,32482,35013,35037,35054,35071,35095,35106, + 35123,35132,35154,35178,35200,35224,35235,35257,35281,35305, + + 35329,35353,35377,35397,35406,35424,35442,35464,32544,35488, + 35512,35523,35532,35541,35563,35587,35598,35607,35616,32689, + 32694,35625,35647,35658,35676,35698,35722,35746,35757,35779, + 32698,32715,35789,32718,32731,35809,35818,35827,35836,35857, + 32742,35875,35884,35902,35924,35948,35972,35996,36020,32484, + 32518,36037,36054,36076,36087,36104,36113,36135,36159,36181, + 36203,32747,36223,36232,36250,36272,36283,36292,36314,36338, + 36362,36382,36391,36409,36418,36440,36460,36469,36478,36487, + 36508,32540,32521,36517,32755,36526,36535,36557,36581,36605, + 32758,34521,36616,36625,36634,36652,36661,36679,36701,36721, + + 36744,36768,36792,36809,36826,36835,36852,36861,36883,36905, + 34523,36923,36932,36950,36972,36983,36992,37014,37038,37062, + 37082,37091,37113,37133,37142,37151,37160,37169,32703,32536, + 37178,34613,37187,37196,37218,37242,37266,37290,37314,34677, + 34686,37325,37334,37343,37361,37370,37388,37410,37434,37458, + 37475,37492,37501,37518,37527,37549,37571,37589,37598,37616, + 37625,37634,37656,37680,37704,37724,37733,37746,37766,37776, + 37785,37793,37804,37813,34695,37822,37843,37865,37889,37913, + 34703,34705,37924,37945,37966,37984,37993,38011,38034,38049, + 38073,38097,38120,38143,38152,38169,38178,38187,38209,38231, + + 38249,38258,38276,38285,38294,38316,38340,38364,38384,38393, + 34736,38415,38439,38463,38478,38502,38526,38550,38570,38579, + 38588,38596,38607,38616,34738,38625,38634,38656,38680,34746, + 34810,38700,38710,38719,38737,38746,38764,38777,38801,38825, + 38849,38873,38893,38902,38917,38928,38945,38954,38963,38985, + 39007,39025,39034,39055,39065,39074,39096,39120,39144,39154, + 39178,39193,39217,39241,39265,39280,39304,39328,39352,39362, + 39382,39391,39400,39408,39419,39437,39445,34884,39456,39465, + 39487,39511,39535,34893,39546,39555,39564,39585,39603,39612, + 39630,39643,39658,39682,39706,39723,39734,39751,39760,39782, + + 39804,39822,39831,39849,39870,39879,39901,39925,39949,39960, + 39973,39993,40015,40039,40063,40073,40093,40102,40111,40119, + 40130,40139,34914,40150,40171,40193,34917,40216,40237,40258, + 40279,40288,40306,40324,40337,40361,40385,40402,40413,40430, + 40439,40461,40483,40492,40510,40532,40543,40565,40589,40600, + 40613,40637,40661,40681,40690,40712,40732,40741,40750,40758, + 40769,40787,40805,40814,40832,40841,40850,40859,40868,40886, + 40899,40919,40941,40965,40985,41004,41013,41035,41057,41066, + 41084,41106,41117,41139,41163,41174,41187,41211,41235,41246, + 41268,41292,41303,41321,41330,41352,41363,41371,41382,35051, + + 35059,41403,35068,41411,41422,41431,41440,41449,41467,41480, + 41504,41528,41552,41571,41580,35109,41602,41611,41629,41638, + 41660,41684,41708,41719,41732,41756,41780,41804,41828,41851, + 41862,41880,41889,41911,41922,41930,41941,35111,35120,35128, + 41949,41960,41969,41978,41987,42005,42018,42042,42066,42090, + 42109,35392,42131,42140,42158,42167,42189,42213,42237,42260, + 42283,42298,42322,42346,42370,42381,42405,42429,42439,42463, + 42487,42507,42516,42538,42548,42559,42568,42577,42598,42617, + 42630,42654,42678,42702,42726,42745,42766,42785,42794,42816, + 42840,42850,42874,42898,42922,42946,42957,42981,43005,43016, + + 43024,43044,43052,43076,43100,43120,43142,43152,43163,43181, + 43194,43218,43242,43253,43271,43293,43317,43341,43360,43382, + 43406,43416,43431,43455,43479,32654,43503,43527,43551,43575, + 43599,43623,43647,43657,43665,43689,43713,43737,43757,43779, + 43803,43814,43833,43855,43870,43894,43905,43922,43944,43968, + 43991,44001,44025,44049,44073,34605,44097,44121,44145,44169, + 44193,44217,44237,44259,44283,44294,44316,44340,44364,44388, + 44408,44430,44454,44474,44492,44514,44525,44542,44564,44588, + 44611,44621,44645,44669,44693,44717,44741,44765,44789,44813, + 44837,44857,44880,44900,44918,44936,44946,44970,44985,45009, + + 45033,45057,45081,45091,45115,45139 + } ; + +static yyconst flex_int16_t yy_def[12007] = + { 0, + 11276,11276, 2, 2, 2, 2,11277,11277,11278,11278, + 11279,11279,11280,11280,11281,11281,11281,11281,11282,11282, + 11281,11281,11283,11283,11284,11284,11285,11285,11286,11286, + 11286,11286,11287,11287,11288,11288,11289,11289,11290,11290, + 11291,11291,11292,11292,11293,11293,11292, 47,11294,11294, + 11295,11295,11296,11296,11297,11297,11298,11298,11299,11299, + 11300,11300,11301,11301,11302,11302,11303,11303,11304,11304, + 11305,11305,11306,11306,11307,11307,11308,11308,11309,11309, + 11310,11310,11311,11311,11312,11312,11313,11313,11314,11314, + 11315,11315, 84, 84,11275, 95, 84, 84,11316,11316, + + 84, 84, 84, 84, 84, 84, 84, 84, 100, 109, + 11275, 111,11303,11303,11317,11317,11317,11317,11318,11318, + 11319,11319,11320,11320,11321,11321,11322,11322,11323,11323, + 11324,11324, 132, 132,11325,11325,11326,11326,11327,11327, + 11328,11328,11329,11329,11330,11330,11331,11331,11332,11332, + 11333,11333,11334,11334,11335,11335,11336,11336,11336,11336, + 11337,11337,11338,11338,11339,11339,11340,11340,11341,11341, + 11342,11342,11342,11342,11343,11343,11344,11344,11345,11345, + 11275,11275,11275,11275,11275,11275,11275,11346,11347,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275, 204,11275, + 11275,11275,11275,11348,11349,11275,11275,11275,11350,11351, + 11352,11275,11275,11275,11275,11275,11275,11275,11348,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11353,11354,11348,11354,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11348,11275,11355,11275,11275,11275,11275,11355,11275, + 11275,11275,11275,11356,11275,11357,11275,11275,11275,11275, + 11275,11358,11275,11275,11275,11275,11275,11275,11275,11275, + 11359,11275,11275,11360,11275,11275,11275,11275,11275,11361, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11362,11275,11275,11275,11275,11275,11350,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11363, + 11275,11275,11275,11275,11275,11275,11275,11350,11364,11275, + 11275,11275,11365,11365,11365,11365,11275,11366,11365,11275, + 11275,11275,11275,11275,11275,11367,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11368,11275,11275,11275,11275, + 11369,11275,11275,11275,11275,11275,11370,11275,11371,11275, + 11372,11275,11275,11275,11275,11275,11373,11275,11275,11275, + 11275,11355,11275,11275,11374,11275,11275,11275,11275,11275, + + 11355,11375,11275,11275,11275,11275,11275,11355,11376,11275, + 11275,11355,11377,11275,11275,11275, 396,11275,11275,11275, + 11275,11275,11275,11275,11275,11378,11379,11275,11275,11275, + 11275,11275,11275,11275,11275,11380,11275,11275,11275,11275, + 11378,11275,11275,11275,11275, 396,11275,11275,11275,11275, + 424,11275,11275,11379,11275,11275,11275,11275,11275, 396, + 11275,11275,11275,11275,11275,11275,11275,11275,11374,11381, + 396,11275,11275,11275,11382, 396,11275,11374, 396,11383, + 11275,11275,11275, 396,11384,11385,11275,11275,11275,11386, + 11387,11275,11275,11275,11388,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11389,11390,11275,11275,11275,11275, + 11275,11275,11391,11275,11275,11392,11275,11275,11393,11275, + 11275,11275,11275,11275,11275,11394,11275,11275,11394,11394, + 11395,11394,11394,11394,11394,11394,11275,11394,11275,11394, + 11394, 537,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11396,11275,11275, + 11275,11275,11275,11275,11397,11275,11397,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11386,11398,11275,11275,11275, + 11275,11275,11275,11275,11275,11399,11399,11275,11399,11399, + 11275,11275,11400,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11401,11402,11403,11275,11400,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11404,11404,11275,11275,11405, + 11406,11406, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672,11275,11275,11275,11275,11275, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672,11275,11275,11275,11275,11275,11275,11275, + 11407,11407, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722,11275, 722, + 739, 742, 722, 722, 722, 753,11275,11408,11275,11275, + 11275,11409,11275,11410,11411,11275,11275,11412,11412,11412, + 11412,11412,11412,11412,11412,11412,11412,11412,11412,11275, + 11275,11275,11275,11413,11413,11413,11275,11275,11275,11275, + + 11275,11275,11414,11414,11414,11414,11414,11414,11414,11415, + 11275,11275,11275,11415,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11416,11275,11275,11275,11275,11275,11275, + 11275,11275,11417,11418,11275,11419,11419,11419,11419,11419, + 11419,11419,11275,11275,11275,11275,11420,11420,11275,11421, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11422,11422,11275,11275,11275,11423,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11424,11424,11424,11424,11424,11424,11275,11275,11275, + 11275,11275,11425,11426,11275,11426,11426,11426,11275,11426, + + 11426,11426,11427,11428,11426,11426,11411,11426,11426,11275, + 11275,11275,11429,11275,11275,11275,11275,11430,11275,11275, + 11431,11275,11275,11275,11432,11432,11433,11275,11434,11434, + 11434,11434,11275,11275,11275,11275,11435,11275,11435,11275, + 11275,11275,11275,11436,11436,11275,11437,11437,11437,11437, + 11437,11437,11437,11437,11437,11437,11275,11275,11438,11438, + 11438,11438,11438,11438,11439,11439,11439,11439,11439,11439, + 11275,11275, 945, 945,11275,11275,11275,11275,11275,11275, + 11275,11275,11440,11275,11275,11275,11275,11275,11275,11275, + 11441,11275,11275,11275,11275,11275,11275,11275,11442,11442, + + 11275,11443,11444,11444, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004,11275,11275,11275, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1026, 1004, 1004, 1004, + 11275,11275,11275,11275,11275,11275,11275, 945, 945,11275, + 11275,11445,11275,11275,11446,11447,11275,11445, 945, 945, + 11275,11275,11448,11275,11275,11449,11275,11448, 945, 945, + 945, 1070, 945,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275, 1092, 1094, 945, 1094,11450, 945,11451, + + 11275,11452,11452,11452,11452,11453,11453,11275,11275,11275, + 11454,11275,11275,11455,11455,11275,11275,11275,11275,11275, + 11456,11456,11275,11457,11457,11457,11457,11457,11457,11457, + 11457,11458,11275,11275,11275,11275,11459,11460,11275,11459, + 11459,11459,11459,11459,11459,11459,11459,11459,11459,11459, + 11459,11459,11459,11459,11459,11459,11459,11461,11275,11459, + 11459,11462,11462,11462,11462,11462,11462,11462,11462,11462, + 11462,11462,11462,11462,11462,11462,11462,11463,11463,11462, + 11462,11464,11462,11462,11462,11462, 1185,11465,11465, 1189, + 1189, 1190, 1189, 1189, 1189, 1189,11462,11462,11462,11459, + + 11275,11275, 1189, 1189, 1189, 1191, 1205, 1189, 1190, 1189, + 1194,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11466,11275,11467,11467,11275,11275, + 11467,11275,11275,11275,11275,11275,11275,11275,11468,11468, + 11468,11468,11468,11468,11468,11468,11275,11275,11275,11275, + 11469,11469,11469,11470,11275,11470,11275,11275,11275,11275, + 11275,11471,11471,11275,11275,11470,11275,11470,11470,11470, + 11275,11275,11275,11472,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11473,11472,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11473, + 11275,11275,11275,11275,11275,11474,11474,11474,11275,11275, + 11475,11475,11475,11475, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209,11275, 1209, 1209, 1209, 1209, 1209,11275,11275, + 11476,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1412, 1412, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1412, 1209, 1209, 1209, 1209, 1209, 1209, 1209,11275, + 1209, 1209, 1209, 1209, 1209,11275, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209,11275, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209,11275, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + + 1209, 1209, 1209, 1209, 1209, 1412, 1209, 1209,11275, 1209, + 1209, 1209, 1209, 1209, 1412, 1209, 1209, 1209, 1412, 1412, + 11275,11275,11275,11275,11275,11275,11275,11477,11477, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 11275,11478,11478,11478,11478,11478,11478,11478,11478,11478, + + 11478,11478,11478,11478,11478,11275,11275,11479,11479,11479, + 11479,11275,11275,11275,11480,11480,11480,11480,11480,11480, + 11480,11480,11480,11480,11275,11275,11275,11481,11482,11275, + 11275,11275,11483,11275,11275,11484,11484,11484,11484,11484, + 11484,11485,11486,11275,11275,11275,11275,11487,11487,11487, + 11487,11487,11275,11275,11488,11489,11488,11275,11490,11489, + 11491,11275,11275,11492,11492,11492,11275,11275,11275,11275, + 1529, 1529,11493,11493,11493,11493,11493,11493,11493,11493, + 11493,11493,11494,11494,11494,11494,11494,11495,11495,11495, + 11495,11495,11275,11275,11275, 1529, 1529,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11496,11496,11496, + 11275,11497,11497,11497,11497,11498,11498, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817,11275,11275,11499, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817,11275, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817,11275, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817,11500,11275,11275, 1529, 1529,11501,11275,11501,11275, + 11502,11275,11275,11501,11275,11501,11501,11501, 1529, 1529, + 11503,11275,11503,11275,11275,11275,11275,11275,11503,11275, + 11503,11503,11503, 1529, 1529, 1529, 1529, 1529, 1529,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275, 1529,11275,11275,11275, + 1529,11275,11504,11504,11504,11275,11505,11275,11506,11275, + 11275,11507,11275,11508,11508,11508,11508,11508,11508,11508, + 11508,11509,11510,11275,11510,11511,11511,11511,11511,11511, + 11511,11511,11511,11511,11511,11511,11511,11511,11511,11511, + 11511,11511,11511,11511,11511,11511,11511,11511,11511,11511, + 11511,11511,11511,11511,11511,11511,11511,11511,11511,11512, + 11512,11512,11513,11513,11513,11513,11511,11511,11511,11511, + 11511,11511,11511,11511,11511,11511,11511,11511,11511,11511, + 11511,11511,11511,11511,11511,11511,11514,11514, 2198, 2198, + + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198,11511,11511,11511,11511,11511,11511,11275,11275, + 11275, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11515, + 11275,11516,11275,11516,11275,11275,11275,11517,11517,11517, + 11517,11517,11517,11517,11517,11518,11275,11275,11275,11275, + 11275,11502,11519,11275,11520,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11521, + + 11521,11522,11522,11522, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,11275, + 2198, 2198, 2198, 2198, 2198,11523,11275,11275,11275,11275, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,11275, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198,11521, 2198, 2198, 2198, 2198, + 11275, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,11275, + 11275, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + + 2198, 2198, 2198, 2198,11521, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 11275, 2198, 2198, 2198, 2198,11275,11275,11275,11275, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198,11275, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198,11275, 2198, 2198, 2198,11275,11275, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,11275, + 2198, 2198, 2198, 2198,11275, 2198, 2198, 2198, 2198, 2198, + + 2198, 2198, 2198, 2198, 2198,11275, 2198, 2198, 2198, 2198, + 2198, 2198, 2198,11275, 2198,11275, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198,11521, 2198,11275,11524,11524, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530,11275, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, + 2530, 2530, 2530,11275,11525,11525,11525,11525,11525,11525, + 11525,11525,11525,11525,11525,11525,11525,11275,11526,11526, + 11526,11275,11275,11275,11527,11527,11527,11527,11527,11527, + 11275,11275,11275,11275,11528,11529,11275,11275,11530,11275, + 11531,11531,11531,11531,11531,11531,11532,11533,11275,11275, + 11275,11275,11534,11275,11534,11534,11534,11534,11534,11534, + 11534,11534,11275,11535,11536,11537,11537,11538,11535,11539, + + 11275,11540,11275,11275,11275,11275,11541,11541,11541,11275, + 11275,11275, 2530, 2530,11542,11542,11542,11542,11542,11542, + 11542,11542,11542,11542,11542,11542,11542,11542,11543,11543, + 11543,11543,11543,11543,11543,11543,11543,11544,11544,11544, + 11544,11544,11544,11544,11544,11544,11275,11275, 2530, 2530, + 11275,11275,11275,11275,11275,11275,11545,11545,11546,11546, + 11546,11547,11547, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 11275, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863,11275, + 11275,11275, 2863,11275, 2863, 2863, 2863, 2863, 2863, 2863, + + 2863, 2863, 2863, 2863,11275, 2863,11548,11275,11275, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863,11275, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 11275,11275, 2863, 2863,11275, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863,11545, 2863, 2863, 2863, 2863, 2863,11275, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + + 2863, 2863, 2863, 2863,11275, 2863, 2863, 2863, 2863, 2863, + 2863, 2863,11275, 2863, 2863, 2863,11275, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863,11545, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863,11275, 2863, 2863, 2863, 2863, 2863, 2863, + 11275, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863,11275, 2863, 2863, 2863, 2863, 2863, 2863, + 11275, 2863, 2863, 2863,11275,11275, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + + 2863,11275,11275, 2863, 2863, 2863,11275, 2863, 2863, 2863, + 11275, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 11275, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863,11275,11275, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863,11275, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 11275, 2863, 2863, 2863, 2863, 2863,11275, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + + 2863, 2863, 2863, 2863, 2863,11275, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863,11275, 2863, 2863, 2863, 2863, + 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, + 11545, 2863, 2863,11275, 2863,11275, 2863,11275,11275, 2530, + 2850,11275,11275,11275,11549, 2530, 2530,11275,11275,11275, + 11275,11275,11275,11275,11550,11550, 2530, 2530, 2530, 2530, + 2530, 2850, 2850, 2850,11551,11551,11551,11552,11275,11553, + 11275,11554,11275,11555,11555,11555,11555,11555,11555,11555, + 11555,11555,11555,11555,11555,11555,11556,11557,11558,11558, + 11559,11559,11559,11560,11560, 3295, 3295, 3295, 3295, 3295, + + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 11275, 3295, 3295, 3295,11275,11275, 3295, 3295,11275, 3295, + 3295,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11561,11275,11275,11561,11275,11275,11275,11562,11562,11562, + 11562,11562,11562,11562,11563,11275,11275,11275,11275,11275, + 11564,11565,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11566,11566,11567,11567,11567, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295,11275,11275, 3295, 3295, 3295, 3295, + + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295,11566, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295,11275,11275, 3295, + 3295,11568, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295,11275,11275, + 11275,11275, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295,11275,11275, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295,11275, 3295, 3295, + 3295, 3295, 3295, 3295,11275, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295,11275,11566,11275,11567, 3295, + + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295,11275, 3295, 3295, 3295, 3295, 3295, 3295,11275,11569, + 11569, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621,11275, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621,11275,11570, + 11570,11570,11570,11570,11570,11570,11570,11570,11570,11275, + 11275,11570,11275,11571,11571,11571,11275,11572,11275,11573, + 11275,11573,11573,11573,11275,11573,11275,11275,11275,11275, + 11275,11275,11574,11574,11275,11574,11575,11275,11576,11275, + 11275,11577,11577,11577,11577,11577,11577,11577,11577,11275, + + 11577,11578,11579,11580,11578,11580,11581,11275,11275,11582, + 11582,11275,11275, 3621,11583,11583,11275,11583,11583,11583, + 11583,11583,11583,11583,11583,11583,11583,11583,11584,11584, + 11584,11584,11584,11584,11584,11584,11584,11585,11585,11585, + 11585,11585,11585,11585,11585,11585,11275, 3621, 3621,11275, + 11275,11275,11275,11275,11275,11586,11586,11587,11587,11587, + 11588,11588,11275,11275, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962,11275,11275,11275,11275, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 11275,11275, 3962, 3962, 3962, 3962,11275,11275,11589, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962,11275,11586, 3962, 3962, + 11275, 3962, 3962,11275,11275, 3962, 3962, 3962, 3962, 3962, + 3962,11275, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962,11275, 3962,11275, 3962, 3962, 3962,11275, 3962, + 11275, 3962, 3962, 3962,11275, 3962, 3962,11275,11275, 3962, + 11275, 3962,11275, 3962,11275,11275, 3962,11275, 3962, 3962, + 3962, 3962,11275, 3962, 3962, 3962,11275, 3962, 3962,11590, + + 3962, 3962, 3962, 3962,11275, 3962,11275, 3962, 3962,11275, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962,11275, + 11275,11275, 3962, 3962, 3962, 3962, 3962, 3962, 3962,11275, + 11275,11275, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962,11275, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962,11275,11275, 3962, 3962,11275,11275, 3962, 3962, + 3962, 3962, 3962, 3962,11275, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962,11275, 3962, 3962, 3962,11275, + 11275, 3962, 3962, 3962, 3962,11275, 3962,11275, 3962, 3962, + + 3962, 3962, 3962, 3962, 3962,11275,11275, 3962, 3962, 3962, + 3962,11275, 3962,11275,11275,11275, 3962, 3962, 3962,11275, + 11275, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962,11275,11275,11275, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962,11275, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962,11275, 3962, + 11275, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962,11275, 3962, 3962, 3962, 3962,11275, 3962, 3962, 3962, + 3962,11275, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + + 3962,11275, 3962,11275, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962,11275,11275,11275, + 11275, 3962, 3962, 3962,11275, 3962,11275, 3962,11275, 3962, + 3962, 3962, 3962, 3962, 3962,11275, 3962, 3962, 3962,11275, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962,11586,11275,11587, 3962, 3962, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3962, 3962,11275,11275,11275,11275,11275, 3962, 3962, + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962,11275,11275, + + 3621,11275,11275,11591,11591, 3621, 3621, 3621,11275,11275, + 11275,11275,11275,11592,11592,11592, 3621,11590, 3621,11275, + 3621, 3621, 3621,11275,11275,11593,11593,11593,11594,11275, + 11595,11275,11275,11596,11596,11596,11596,11596,11275,11597, + 11597,11597,11597,11597,11597,11597,11597,11597,11597,11597, + 11598,11597,11597,11599,11600,11601,11601,11602,11602,11602, + 11603,11603, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11604, + + 11275,11275,11604,11275,11275,11275,11605,11605,11605,11605, + 11605,11605,11605,11605,11606,11275,11275,11275,11607,11608, + 11275,11609,11609,11610,11610,11610, 4462,11611, 4462, 4462, + 4462, 4462,11275, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462,11275, + 11275,11609,11612, 4462,11275,11275,11613,11614, 4462, 4462, + 4462,11609, 4462, 4462, 4462, 4462, 4462, 4462,11275,11275, + 11275, 4462, 4462,11275,11615,11615,11615,11615,11615,11615, + 11615,11615,11275, 4462, 4462, 4462, 4462, 4462, 4462,11275, + + 11616, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462,11275, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462,11275, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462,11617, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462,11275, 4462, 4462, 4462, 4462,11275,11275,11275,11275, + 11275,11275,11275,11275, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462,11275, 4462,11275, + 11275,11618,11609,11275,11610, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462,11275,11619, + 11619, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + + 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791,11275,11620,11620,11620,11275,11275, + 11620,11620,11620,11620,11620,11620,11620,11620,11620,11620, + 11620,11620,11620,11620,11620,11275,11620,11275,11621,11621, + 11275,11275,11275,11622,11622,11275,11275,11275,11275,11623, + 11623,11623,11623,11623,11623,11623,11623,11275,11623,11275, + 11275,11275,11275,11624,11624,11625,11275,11626,11275,11275, + 11275,11627,11627,11627,11627,11627,11627,11627,11275,11627, + 11628,11275,11629,11275,11630,11275,11631,11275, 4791,11632, + 11275,11275,11632,11632,11632,11632,11632,11632,11632,11632, + + 11632,11632,11633,11633,11633,11633,11633,11633,11633,11634, + 11634,11634,11634,11634,11634,11634,11634, 4791,11275,11275, + 11275,11275,11275,11635,11635,11636,11636,11636,11637,11275, + 11275,11637, 5132, 5132, 5132, 5132, 5132, 5132,11275, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132,11275,11275, + 5132, 5132, 5132, 5132, 5132, 5132,11275, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132,11275,11275, 5132, 5132, 5132,11275, 5132, + 11275, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132,11275, 5132, 5132, 5132, 5132, + + 5132,11275,11275,11275,11275, 5132, 5132,11275, 5132, 5132, + 5132,11275,11635, 5132,11275, 5132,11275, 5132, 5132, 5132, + 11275, 5132,11635, 5132,11275,11275, 5132, 5132, 5132, 5132, + 5132, 5132,11275,11275, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132,11275, 5132, 5132, 5132,11638,11638,11638, + 11638, 5132, 5132, 5132, 5132, 5132,11639,11639,11275,11275, + 11639,11275,11275, 5263, 5263, 5263, 5263, 5263, 5132, 5132, + 5132, 5132, 5132,11275, 5132,11275, 5132, 5132, 5132, 5132, + 5132, 5132,11275,11275, 5132, 5132, 5132, 5132, 5132, 5132, + 5132,11275, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 11275,11275, 5132, 5132,11275,11275, 5132, 5132, 5132, 5132, + 5132, 5132,11275, 5132, 5132, 5132, 5132, 5132, 5132,11275, + 11275, 5132, 5132, 5132, 5132, 5132, 5132, 5132,11275,11275, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132,11275,11275, 5132, 5132, 5132, 5132,11275, + 11275, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132,11275,11275, + + 11275, 5132, 5132, 5132, 5132,11275,11275, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132,11275, 5132, 5132, 5132, + 5132, 5132,11275, 5132, 5132, 5132, 5132,11275,11275, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132,11275, 5132, + 5132, 5132, 5132, 5132, 5132,11275,11275, 5132,11275, 5132, + 5132, 5132,11275,11275,11275, 5132,11275, 5132,11275, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132,11275, 5132, 5132, 5132, 5132,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, 5132, + 11275, 5132, 5132,11275,11635,11275,11636, 5132, 5132, 5132, + 5132, 5132, 5132, 5132,11275, 5132, 5132, 5132, 5132, 5132, + 11275, 5132, 5132, 5132,11275,11275,11275,11275,11275,11275, + 11640,11640,11275,11275,11275, 4791, 4791, 4791,11275,11275, + 11641,11275,11275,11275,11642,11642,11642, 4791,11638, 4791, + + 11275,11275,11643,11275,11644, 4791, 4791, 4791, 4791, 4791, + 4791, 4791, 4791, 4791, 4791,11275,11275,11645,11275,11646, + 11275,11275,11275,11275,11275,11275,11275,11275,11647,11647, + 11647,11647,11647,11647,11647,11275,11648,11648,11648,11648, + 11648,11648,11648,11648,11648,11648,11648,11649,11648,11648, + 11650,11651,11652,11652,11653,11653,11653,11654,11654, 5659, + 5659,11275, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659,11275, 5659, 5659, 5659, 5659, 5659, 5659,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11655,11275,11655,11275,11275,11275,11275,11656, + + 11656,11275,11656,11656,11656,11656,11656,11656,11656,11656, + 11656,11657,11275,11275,11275,11275,11275,11275,11275,11658, + 11659,11643,11644,11644,11644,11643,11660,11275,11275, 5659, + 5659,11275,11275,11661, 5659, 5659, 5659, 5659, 5659,11275, + 11275, 5659, 5659,11662, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659,11275,11643,11275,11663, 5659, + 11664,11275,11665,11275,11275,11275, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659,11666,11666,11666,11666, + 11666,11666,11666,11666,11666,11666, 5659, 5659, 5659, 5659, + 5659,11667,11668,11667,11668,11667,11667, 5659, 5659, 5659, + + 5659, 5659, 5659, 5659, 5659, 5659,11275, 5659, 5659, 5659, + 11275,11275,11275, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659,11275,11275, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659,11275, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659,11275,11275, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659,11669,11275, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659,11275, 5659, 5659, 5659, 5659, 5659, + + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659,11275,11275,11670, + 11275, 5659, 5659, 5659, 5659,11275,11671,11671, 5978, 5978, + 5978, 5978, 5978, 5978, 5978,11662, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978,11275,11672,11672,11672,11275,11672,11672,11672,11672, + 11672,11672,11672,11672,11672,11672,11672,11672,11672,11672, + 11672,11672,11672,11275,11672,11672,11275,11673,11673,11275, + + 11275,11674,11275,11275,11275,11675,11675,11675,11675,11675, + 11675,11675,11675,11675,11675,11275,11675,11275,11275,11275, + 11275,11676,11275,11677,11678,11275,11679,11275,11275,11275, + 11680,11680,11680,11275,11680,11275,11275,11680,11681,11682, + 11683,11275,11684,11275, 5978,11275,11275,11275,11275,11275, + 11275,11685,11685,11685,11685,11685,11685,11685,11686,11686, + 11686,11686,11686,11687,11687,11687,11687,11687,11687, 5978, + 11275,11275,11688,11689,11690,11690,11690,11275,11691,11275, + 11275,11691,11275, 6282, 6282, 6282, 6282, 6282,11275,11275, + 6282,11275,11275, 6282, 6282, 6282, 6282,11275, 6282, 6282, + + 6282,11275,11275,11275, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282,11275,11275,11275, 6282, 6282,11692, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282,11275, 6282, 6282,11689, + 6282, 6282,11275, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 11275,11275, 6282,11275,11275, 6282, 6282, 6282,11275,11275, + 11275, 6282, 6282, 6282, 6282, 6282, 6282,11693,11693,11693, + 11693, 6282, 6282, 6282, 6282, 6282,11275,11275, 6378, 6378, + 6378, 6378, 6378, 6378,11275, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282,11275,11275,11275,11275, 6282, 6282, + + 6282, 6282, 6282,11275, 6282, 6282, 6282, 6282,11275, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282,11275, + 6282, 6282,11275, 6282, 6282, 6282,11275,11275,11275,11275, + 6282, 6282,11275, 6282,11275, 6282, 6282,11275, 6282, 6282, + 11275,11275, 6282, 6282, 6282, 6282, 6282, 6282,11275, 6282, + 11275,11275, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282,11275,11275, 6282, 6282, 6282, 6282, + 11275,11275, 6282, 6282,11275, 6282, 6282, 6282, 6282, 6282, + 11275, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + + 6282,11275,11275,11275, 6282, 6282, 6282,11275,11275, 6282, + 11275, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282,11275, 6282,11275, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282,11275, 6282, 6282, 6282, + 6282,11275,11275, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282,11275,11275, 6282,11275, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 11275,11275,11275, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282,11275, + 11275,11275,11275,11275, 6282, 6282, 6282,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 11275, 6282, 6282,11275, 6282, 6282, 6282, 6282,11275, 6282, + 6282, 6282,11275, 6282, 6282,11275,11275,11275,11275,11694, + 11694, 5978, 5978, 5978,11275,11275,11275,11275,11275,11275, + 11695,11695,11695,11695, 5978,11693, 5978, 5978, 5978, 5978, + 11275,11275,11696,11697,11275,11275,11275,11275,11275,11275, + + 11275,11275,11698,11698,11698,11698,11698,11698,11698,11275, + 11699,11699,11699,11699,11699,11699,11699,11699,11700,11701, + 11702,11703,11703,11703,11704,11275,11704, 6727, 6727,11275, + 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727,11275, + 11275,11275, 6727, 6727,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11705,11705,11275,11275,11275, + 11275,11706,11706,11706,11706,11706,11706,11706,11706,11706, + 11706,11706,11706,11707,11275,11275,11275,11275,11275,11275, + 11275,11708,11709,11710,11710,11275, 6727,11275,11275, 6727, + 6727, 6727, 6727, 6727, 6727, 6727,11275,11711,11711,11711, + + 11711,11711,11711,11711,11711,11711,11711,11711,11711,11711, + 11711,11711,11711,11275, 6727, 6727, 6727, 6727, 6727, 6727, + 6727, 6727, 6727, 6727, 6727, 6727,11275,11712, 6727, 6727, + 6727, 6727, 6727, 6727, 6727, 6727, 6727,11693,11693,11693, + 11693,11693,11693,11693,11693,11693,11693, 6727, 6727, 6727, + 6727, 6727,11713,11713,11713,11714,11714, 6727, 6727, 6727, + 6727,11275, 6727,11275,11275, 6727,11275, 6727, 6727,11275, + 6727, 6727, 6727,11275, 6727, 6727,11275, 6727, 6727, 6727, + 6727, 6727,11275,11275, 6727, 6727, 6727, 6727, 6727, 6727, + 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, + + 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, + 6727,11275, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, + 11275, 6727, 6727, 6727, 6727, 6727, 6727,11275, 6727, 6727, + 6727, 6727, 6727, 6727, 6727, 6727, 6727,11715, 6727, 6727, + 6727,11710,11712, 6727, 6727, 6727, 6727, 6727, 6727, 6727, + 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, + 6727, 6727, 6727, 6727,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275, 6727, 6727, 6727, + 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, + 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, + + 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727, 6727,11712, + 6727, 6727,11275,11275,11275,11716,11275,11275, 6727, 6727, + 6727,11275,11275,11717,11717, 7025, 7025, 7025, 7025, 7025, + 7025,11711, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025,11275,11718,11718,11275,11718, + + 11275,11718,11718,11275,11718,11718,11719,11275,11275,11720, + 11275,11275,11275,11721,11721,11275,11275,11721,11275,11275, + 11275,11275,11275,11722,11275,11723,11275,11724,11275,11275, + 11725,11275,11275,11275,11725,11726,11275,11727,11275, 7025, + 11275,11275,11275,11728,11728,11728,11728,11728,11729,11729, + 11729,11730,11730,11730,11730, 7025,11275,11731,11275,11732, + 11732,11733,11733, 7263, 7263, 7263, 7263,11275, 7263, 7263, + 7263, 7263, 7263, 7263, 7263, 7263,11275,11275,11275,11275, + 11275, 7263, 7263,11275, 7263, 7263,11711,11711, 7263, 7263, + 7263, 7263, 7263,11275,11275,11275,11275, 7263, 7263, 7263, + + 11275,11275, 7263, 7263, 7263, 7263,11275, 7263, 7263, 7263, + 7263, 7263,11734, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 11275, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263,11735, + 11735,11735,11735,11735, 7263, 7263, 7263, 7263, 7263,11275, + 7340, 7340, 7340, 7340, 7340, 7340, 7263,11275, 7263, 7263, + 7263, 7263, 7263,11275, 7263,11275, 7263,11275, 7263, 7263, + 7263,11275, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 7263,11275,11275, 7263, 7263,11275, 7263, 7263, 7263, 7263, + 11275,11275, 7263, 7263, 7263,11275, 7263,11275,11275,11275, + 7263, 7263, 7263, 7263, 7263, 7263,11275,11275,11275,11275, + + 11275,11275,11275, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263, 7263, 7263,11275,11275,11275,11275,11275, + 11275,11275, 7263, 7263, 7263, 7263,11275, 7263, 7263, 7263, + 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263, 7263,11275,11275,11275, 7263, 7263,11275, + 11275,11275, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263,11275, 7263,11275,11275, 7263, 7263, 7263, + 7263,11275,11275,11275, 7263, 7263, 7263,11275, 7263, 7263, + 7263, 7263, 7263,11732,11734, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263,11275, + + 7263, 7263,11275,11275,11275, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263, 7263, 7263, 7263,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275, 7263, + 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, 7263, + 7263, 7263, 7263, 7263,11734, 7263, 7263, 7263, 7263, 7263, + 11275, 7263,11275,11275, 7263, 7263, 7263, 7263, 7263,11275, + 11275,11275,11275,11736,11736,11275,11736,11736,11736, 7025, + 7025, 7025,11275,11275,11275,11275,11737,11737,11737,11737, + + 7025,11735, 7025, 7025, 7025, 7025,11275,11275,11738,11739, + 11275,11275,11275,11275,11275,11275,11275,11275,11740,11740, + 11740,11740,11740,11740,11275,11275,11741,11741,11741,11275, + 11741,11741,11742,11743,11744,11744,11745,11746,11746,11275, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640,11746,11745, 7656, 7656,11275,11275, + 7656,11275,11275, 7656, 7656, 7656, 7656, 7656, 7656, 7656, + 7656, 7656, 7656,11275,11275,11275,11275,11275,11275,11275, + 11747,11747,11747,11747,11747,11275,11275,11275,11275,11275, + 11275,11275,11748,11749,11750,11750,11275, 7656, 7656, 7656, + + 11275,11275, 7656, 7656,11751,11751,11751,11751,11751,11751, + 11751,11751,11751,11751,11751,11751,11751,11751,11751,11751, + 11751,11751,11751,11751,11751,11751,11751, 7656,11275, 7656, + 7656, 7656, 7656, 7656, 7656, 7656,11275,11275, 7656, 7656, + 7656, 7656, 7656, 7656, 7656, 7656,11735,11735,11735,11735, + 11735,11735,11735,11735,11735,11735,11735,11735, 7656, 7656, + 7656,11275,11752,11752,11752,11753,11753,11753, 7656, 7656, + 7656,11275,11275, 7656,11275, 7656, 7656, 7656, 7656,11275, + 7656, 7656, 7656,11275,11275,11275,11275,11275,11275,11275, + 11275, 7656, 7656, 7656, 7656,11275, 7656, 7656, 7656, 7656, + + 7656, 7656, 7656,11754, 7656, 7656, 7656, 7656, 7656, 7656, + 7656, 7656, 7656, 7656, 7656,11755, 7656, 7656, 7656, 7656, + 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, + 7656, 7656, 7656, 7656, 7656, 7656,11756,11275, 7656,11275, + 11750, 7656, 7656,11275,11275,11275,11754, 7656,11275, 7656, + 7656, 7656,11275,11275,11275, 7656, 7656, 7656, 7656, 7656, + 7656, 7656, 7656, 7656, 7656, 7656, 7656,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275, 7656, 7656, + 7656, 7656, 7656, 7656, 7656,11275,11275, 7656, 7656, 7656, + 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, + + 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, 7656, + 7656, 7656, 7656, 7656,11275, 7656,11275,11275, 7656, 7656, + 7656,11275,11757,11757, 7924, 7924, 7924,11751, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, 7924, + 7924, 7924, 7924,11275,11758,11758,11758,11758,11275,11758, + 11758,11759,11275,11760,11275,11275,11275,11275,11761,11275, + 11761,11275,11275,11275,11275,11762,11275,11763,11275,11275, + 11275,11275,11275,11764,11765,11275, 7924,11275,11275,11275, + + 11766,11766,11275,11275,11767,11767,11768,11768,11768, 7924, + 11275,11275,11275,11769,11769,11770,11770, 8117, 8117, 8117, + 11275, 8117, 8117,11275, 8117, 8117, 8117, 8117,11275,11275, + 11275, 8117, 8117,11751,11751, 8117, 8117, 8117, 8117,11275, + 11275, 8117, 8117,11275, 8117, 8117, 8117, 8117, 8117, 8117, + 8117, 8117, 8117, 8117, 8117, 8117,11275,11275, 8117, 8117, + 8117, 8117, 8117, 8117, 8117, 8117,11771,11771,11771,11771, + 11771, 8117, 8117,11275,11275,11275, 8117,11275,11275, 8179, + 8179, 8179, 8179, 8117, 8117, 8117, 8117, 8117,11275, 8117, + 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117,11275,11275, + + 11275, 8117,11275,11275,11275,11275,11275, 8117, 8117, 8117, + 11275,11275, 8117,11275,11275, 8117, 8117, 8117, 8117, 8117, + 11275,11275,11275,11275,11275, 8117, 8117, 8117, 8117, 8117, + 8117, 8117,11772, 8117, 8117, 8117,11275, 8117, 8117, 8117, + 11275, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, + 8117, 8117, 8117, 8117, 8117, 8117,11275, 8117, 8117,11275, + 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117,11275, 8117, + 11275, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, + 8117,11769, 8117, 8117, 8117,11275,11772, 8117,11275, 8117, + 8117, 8117, 8117,11275, 8117, 8117, 8117, 8117, 8117,11275, + + 11275, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, + 8117, 8117,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275, 8117, 8117, + 8117, 8117, 8117, 8117, 8117,11275, 8117, 8117, 8117, 8117, + 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, + 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, 8117, + 8117, 8117, 8117, 8117, 8117, 8117, 8117,11275,11275, 8117, + 8117, 8117, 8117, 8117, 8117, 8117,11275,11275,11773,11275, + 11773,11275,11773,11773, 7924,11275,11275,11275,11275,11774, + 11774,11774,11771, 7924, 7924, 7924,11275,11275,11775,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11776, + 11776,11776,11776,11776,11776,11275,11275,11777,11777,11777, + 11778,11779,11780,11780,11781,11782,11275,11275,11782,11275, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 11781, 8451,11275,11275, 8451, 8451, 8451,11275,11275, 8451, + 8451, 8451, 8451, 8451, 8451,11275,11275,11275,11275,11275, + 11275,11275,11783,11783,11783,11783,11275,11275,11275,11275, + 11275,11275,11275,11784,11784,11785,11786,11786, 8451, 8451, + 8451, 8451,11787,11787,11787,11787,11787,11275,11787,11787, + + 11787,11787,11787,11787,11787,11787,11787,11787,11787,11787, + 11787,11787,11787,11787,11787,11787,11275, 8451,11275,11275, + 8451, 8451, 8451,11275, 8451, 8451, 8451, 8451, 8451,11771, + 11771,11771,11771,11771,11275,11771,11771,11771,11771,11771, + 11771, 8451, 8451,11275,11275,11275,11788,11788,11788,11788, + 11789,11789,11789, 8451,11275,11275,11275,11275, 8451,11275, + 11275, 8451,11275,11275,11275, 8451, 8451,11275,11275, 8451, + 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, + 8451, 8451, 8451, 8451,11275, 8451, 8451, 8451, 8451,11790, + 8451, 8451,11275, 8451, 8451, 8451, 8451, 8451, 8451, 8451, + + 8451, 8451, 8451, 8451,11791, 8451, 8451, 8451,11275,11792, + 8451,11786, 8451, 8451,11275,11275,11275,11275, 8451, 8451, + 8451,11275,11275,11275,11275, 8451, 8451, 8451, 8451, 8451, + 8451, 8451, 8451, 8451, 8451,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275, 8451, 8451, 8451, 8451, + 8451, 8451,11275,11275,11793, 8451, 8451, 8451, 8451, 8451, + 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, + 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, 8451, + 8451, 8451,11275, 8451, 8451,11275,11275,11794,11794, 8689, + 8689,11787, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, 8689, + 8689, 8689, 8689, 8689, 8689, 8689,11795,11795,11796,11795, + + 11795,11797,11275,11798,11275,11275,11275,11799,11275,11275, + 11800,11275,11275,11275,11275,11275,11275,11801,11275,11275, + 11275,11802,11275,11803,11804, 8689,11275,11275,11275,11805, + 11805,11806,11806,11807,11807,11807, 8689,11275,11808,11808, + 11809,11809, 8842, 8842, 8842, 8842,11275, 8842, 8842, 8842, + 8842, 8842,11275, 8842, 8842,11787,11787,11275, 8842,11275, + 11275,11275,11275, 8842,11275,11275,11275,11275, 8842, 8842, + 8842, 8842, 8842,11275, 8842, 8842,11275, 8842, 8842, 8842, + 8842, 8842,11275, 8842,11810,11810,11810,11810,11275, 8842, + 8842,11275, 8892, 8892, 8892, 8842, 8842, 8842,11275,11275, + + 11275, 8842,11275, 8842,11275, 8842, 8842,11275, 8842, 8842, + 8842, 8842,11275,11275, 8842, 8842, 8842,11275,11275, 8842, + 8842, 8842, 8842,11275,11275,11275,11275,11275, 8842, 8842, + 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842,11275, + 11275, 8842,11275, 8842, 8842, 8842, 8842, 8842, 8842, 8842, + 8842, 8842, 8842, 8842,11275, 8842,11275, 8842, 8842, 8842, + 11275,11275,11275, 8842, 8842,11275, 8842, 8842,11275, 8842, + 8842,11811, 8842, 8842, 8842, 8842,11275, 8842, 8842,11808, + 8842, 8842,11275,11275,11275, 8842, 8842, 8842, 8842, 8842, + 8842,11275, 8842,11275,11275,11275, 8842, 8842, 8842, 8842, + + 8842, 8842, 8842, 8842,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275, 8842, 8842, 8842, 8842, 8842, 8842,11275, 8842, 8842, + 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, + 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, + 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, 8842, + 11275, 8842, 8842,11275,11812,11275,11812, 8689,11275,11275, + 11275,11813,11813,11813,11810, 8689, 8689, 8689,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11814, + 11814,11814,11814,11814,11275,11815,11816,11817,11818,11818, + + 11819,11275, 9102,11275, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102,11819, 9123,11275,11275,11275,11275, 9123,11275, + 11275, 9123, 9123,11275, 9123, 9123,11275,11275,11275,11275, + 11275,11275,11275,11275,11820,11820,11820,11275,11275,11275, + 11275,11275,11275,11275,11821,11822,11823,11824,11275, 9123, + 11275, 9123, 9123,11825,11825,11825,11825,11825,11825,11825, + 11825,11825,11825,11825,11825,11825,11825,11825,11825,11825, + 11825,11825,11825,11825,11825,11825,11825, 9123, 9123, 9123, + 9123, 9123, 9123,11810,11810,11810,11810,11810,11810,11275, + + 11275,11810,11810,11810,11810, 9123,11275,11275,11275,11275, + 11275,11826,11826,11826,11827,11827,11827, 9123,11275,11275, + 9123,11275,11275,11275,11275, 9123,11275, 9123, 9123, 9123, + 9123, 9123, 9123, 9123,11275,11275, 9123, 9123, 9123, 9123, + 9123, 9123, 9123, 9123, 9123,11275,11275,11275,11275, 9123, + 9123, 9123, 9123, 9123, 9123, 9123, 9123,11828,11275, 9123, + 9123,11275,11829,11830,11275, 9123,11824, 9123,11275,11275, + 9123, 9123,11275,11275, 9123, 9123, 9123, 9123, 9123, 9123, + 11275,11275,11275,11275,11275,11275,11275, 9123, 9123, 9123, + 9123, 9123, 9123,11831, 9123, 9123, 9123, 9123, 9123, 9123, + + 9123, 9123, 9123, 9123, 9123, 9123, 9123, 9123, 9123, 9123, + 9123, 9123, 9123, 9123, 9123, 9123, 9123, 9123, 9123,11275, + 9123, 9123,11832,11832, 9324,11825, 9324, 9324, 9324, 9324, + 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, + 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, + 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, + 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, + 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, + 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, + 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, 9324, + + 9324, 9324, 9324, 9324, 9324, 9324,11833,11833,11834,11275, + 11833,11835,11836,11275,11275,11275,11837,11275,11838,11275, + 11275,11275,11275,11839,11275,11275,11275,11840,11841,11275, + 9324,11275,11275,11275,11275,11842,11843,11844,11844, 9324, + 11845,11275,11846,11846, 9444, 9444,11275, 9444, 9444, 9444, + 11275,11275,11275, 9444, 9444,11825,11825, 9444,11275,11275, + 11275,11275,11275,11275,11275, 9444, 9444, 9444, 9444,11275, + 9444, 9444, 9444, 9444,11275,11847,11847,11847, 9444,11275, + 9480, 9480, 9480, 9444, 9444, 9444,11275, 9444,11275, 9444, + 9444, 9444, 9444, 9444,11275,11275, 9444, 9444, 9444,11275, + + 11275,11275,11275, 9444, 9444, 9444, 9444, 9444, 9444, 9444, + 9444,11275,11275, 9444, 9444, 9444, 9444, 9444, 9444, 9444, + 9444, 9444, 9444,11275,11275,11275,11275,11275, 9444, 9444, + 9444, 9444,11275, 9444, 9444,11848,11275, 9444, 9444,11275, + 9444, 9444, 9444,11845, 9444, 9444, 9444,11275, 9444, 9444, + 9444,11275,11275, 9444, 9444, 9444,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275, 9444, + 9444, 9444, 9444, 9444, 9444, 9444, 9444, 9444, 9444, 9444, + 9444, 9444, 9444, 9444, 9444, 9444, 9444, 9444, 9444, 9444, + 9444, 9444, 9444, 9444, 9444, 9444,11275, 9444, 9444, 9444, + + 9444, 9444, 9444, 9444, 9444, 9444, 9444,11275,11849, 9324, + 11275,11275,11275,11850,11850,11847, 9324, 9324, 9324,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11851,11851,11851,11851,11275,11275,11852,11853,11854, + 11275,11855,11275, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643,11855, 9666,11275,11275,11275, + 9666, 9666,11275,11275,11275,11275,11275,11856,11275,11275, + 11275,11275,11275,11275,11857,11275,11858,11859,11860,11861, + 11275,11275,11275, 9666, 9666,11275,11862,11862,11862,11862, + + 11862,11862,11862,11862,11862,11862,11275,11275,11862,11862, + 11862,11862,11862,11862,11862,11862,11862,11862,11862,11862, + 9666, 9666, 9666, 9666, 9666,11847,11847,11847,11275,11275, + 11847,11847,11847,11847,11847,11847, 9666,11275,11275,11275, + 11275,11275,11863,11863,11863,11863,11864,11865, 9666,11275, + 11275,11275, 9666, 9666, 9666,11275,11275, 9666, 9666, 9666, + 9666,11275,11275,11275,11866, 9666,11867, 9666,11275,11275, + 11275,11275, 9666, 9666,11275,11275, 9666, 9666,11275,11868, + 9666, 9666,11275,11275,11860,11275,11275,11869,11275,11275, + 9666,11275,11275, 9666,11275, 9666, 9666, 9666,11275,11275, + + 11275,11275,11275,11275,11275,11870, 9666, 9666, 9666, 9666, + 9666, 9666, 9666, 9666, 9666, 9666, 9666, 9666, 9666, 9666, + 9666, 9666, 9666, 9666, 9666,11275,11275,11871,11275,11275, + 9666,11872,11872,11862, 9833, 9833, 9833, 9833, 9833, 9833, + 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, + 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, + 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, + 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9833, + 9833,11873,11275,11874,11875,11275,11275,11275,11275,11275, + 11275,11275,11275,11275, 9833,11275,11876,11877,11878,11878, + + 9833,11879,11275,11880,11880, 9905, 9905, 9905, 9905,11275, + 9905,11862,11275, 9905,11275,11275,11275,11275,11275,11275, + 9905, 9905,11275, 9905, 9905, 9905, 9905,11881,11881,11881, + 11275, 9931, 9931, 9931, 9905, 9905,11275, 9905, 9905, 9905, + 11275,11275, 9905,11275,11275,11275, 9905, 9905, 9905, 9905, + 9905, 9905, 9905,11275,11275, 9905,11275, 9905, 9905, 9905, + 9905,11275,11275,11275,11275, 9905, 9905, 9905,11275, 9905, + 11275,11882, 9905, 9905,11275, 9905,11879,11275, 9905, 9905, + 9905,11275,11275, 9905, 9905,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275, 9905, 9905, 9905, + + 9905, 9905, 9905, 9905, 9905, 9905, 9905, 9905, 9905, 9905, + 9905, 9905, 9905, 9905, 9905, 9905, 9905,11275, 9905,11275, + 11275, 9905,11883,11275,11275,11275,11884,11884,11881,11885, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11886,11886,11275,11275,11275,11275,11887, + 11275,11888,11275,11275,10054,10054,10054,10054,10054,10054, + 11275,11275,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,11888,11275,11275,11275,10075,11275, + 11275,11275,11275,11889,11275,11275,11275,11275,11275,11890, + 11891,11275,11892,10075,10075,11862,11862,11862,11862,11862, + + 11862,11862,11862,11862,11862,11862,11862,11862,11862,11275, + 11275,11275,11862,11862,11862,11862,11862,11275,10075,10075, + 10075,10075,10075,11881,11881,11881,11275,11881,11275,11881, + 11275,11881,11881,11881,11275,11275,11275,11275,11893,11894, + 11895,11896,11894,11894,11894,11896,11896,11896,10075,11275, + 11275,10075,10075,11275,10075,10075,10075,11897,11275,10075, + 11898,11275,10075,11275,11275,11275,11275,10075,10075,10075, + 11899,11275,10075,10075,11275,11900,11901,11275,11275,11275, + 11275,11275,11275,11902,11275,11275,11275,11275,11903,10075, + 10075,10075,11275,11275,11275,11275,11275,11275,11275,11904, + + 11275,10075,10075,10075,10075,10075,10075,10075,10075,10075, + 10075,10075,10075,10075,11905,11275,11275,11275,10075,11906, + 11906,11862,10221,10221,10221,10221,10221,10221,10221,10221, + 10221,10221,10221,10221,10221,10221,10221,10221,10221,10221, + 10221,10221,10221,10221,10221,10221,10221,10221,10221,10221, + 10221,10221,10221,10221,10221,10221,10221,11275,11907,11275, + 11908,11275,11275,11275,11275,11275,11275,11275,11909,10221, + 11910,11910,10272,10272,10272,11275,10272,11275,10272,11275, + 11275,11275,11275,11275,11275,10272,10272,11275,10272,10272, + 10272,11911,11911,11911,11912,11912,11275,10272,10272,10272, + + 10272,11275,11275,10272,10272,10272,10272,10272,10272,10272, + 10272,11275,10272,11275,10272,10272,10272,11275,10272,11913, + 11275,10272,10272,11914,11275,11915,11275,10272,11275,10272, + 10272,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,10272,10272,10272,10272,10272,10272,10272,10272, + 10272,10272,10272,10272,10272,10272,10272,11916,11275,11917, + 11917,11911,11918,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11919,11275,11275, + 11275,11275,10075,11275,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,11275,11920,11275,10384,10384,10384, + + 10384,10384,11275,10075,11275,11275,10075,11275,11275,11275, + 11275,11275,11275,11275,11275,11921,11922,11275,11275,11923, + 11923,11923,11923,11923,11923,11275,11275,11923,11923,11923, + 11275,11923,11923,11924,11923,11923,11923,11923,11923,10075, + 11925,11275,11926,10075,10075,11911,11275,11911,11275,11911, + 11275,11911,11275,11275,11275,11275,11927,11928,11929,11929, + 11928,11928,11928,11927,11928,11930,11930,11275,11275,10075, + 10075,10075,10075,11931,11275,11275,11275,11275,10075,10075, + 11275,11932,11275,10075,11275,11933,11934,11275,11275,11275, + 11275,11275,11275,11935,11275,10075,10075,10075,11936,11275, + + 11275,11275,11275,11275,10075,10075,11937,10075,10075,10075, + 10075,10075,10075,10075,11938,11275,11275,10075,11923,11939, + 11939,10521,10521,10521,10521,10521,10521,10521,10521,10521, + 10521,10521,10521,10521,10521,10521,10521,10521,10521,10521, + 10521,10521,11275,11940,11275,11275,11941,11275,11275,11275, + 11275,11942,10521,11943,11943,10555,10555,11275,11944,10555, + 11275,11275,11275,11275,11275,11275,11275,10555,10555,11945, + 11275,11275,11275,11275,11275,10555,10555,11275,11275,10555, + 10555,10555,10555,10555,10555,11275,10555,10555,10555,11275, + 10555,11275,11946,10555,11947,10555,11275,10555,10555,11275, + + 11275,11275,11275,11275,11275,11275,10555,10555,10555,10555, + 10555,10555,10555,10555,10555,10555,10555,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11948,11275,11275,11275,11275,11275,11275,10638,10638, + 11949,11275,10638,10638,10638,11275,10638,10638,10638,10638, + 10638,10638,10638,11275,11950,10075,11275,11275,11275,11275, + 11275,11275,11951,11275,11952,11923,11923,11923,11923,11923, + 11923,11953,11923,11275,11923,11275,11923,11954,11275,11275, + 11923,11275,11923,11923,11923,11923,10075,11955,11275,11956, + 11275,11957,11958,11945,11275,11945,11945,11959,11275,11275, + + 11959,11959,11959,11959,11959,11960,11960,11961,11962,11962, + 11962,11275,10075,11275,11275,11275,11963,11275,10075,11964, + 11275,11275,10075,11965,11275,10075,11275,11966,11275,11275, + 11275,11275,11275,11275,11967,11275,10075,11275,11968,11275, + 11275,11275,11275,10075,10075,11969,11275,10075,10075,10075, + 10075,10075,11970,11275,11275,11923,11971,11971,10758,10758, + 10758,10758,10758,10758,10758,10758,10758,10758,10758,11972, + 11275,11275,11973,11275,11275,11275,11275,11275,11974,11974, + 10780,11275,10780,11275,11275,11275,11275,11275,11275,11945, + 10780,10780,11275,11275,10780,10780,11275,11975,11275,10780, + + 10780,11275,10780,11976,11275,10780,11977,10780,11275,11275, + 11275,11275,11275,10780,11275,10780,10780,10780,10780,10780, + 10780,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11978,11275,11275,11275,11275,11275, + 10840,10840,10840,11275,10840,11275,10840,11979,10840,11275, + 10840,10840,10840,10840,11275,11980,11275,11275,11275,11275, + 11275,11275,11981,11982,11275,11923,11923,11275,11923,11275, + 11275,11275,11275,11983,11275,11923,11275,11923,11275,11923, + 11275,11923,11275,11275,10075,11275,11984,11275,11985,11275, + 11945,11945,11986,11275,11986,11986,11275,11987,11987,11987, + + 11988,11989,11989,11989,11275,11275,10075,11275,11990,11275, + 11991,11275,10075,11275,11992,11275,11275,11275,11275,11993, + 11993,11275,10075,11275,11275,10075,10075,10075,10075,10075, + 10075,11275,11275,11994,11994,10935,10935,10935,10935,10935, + 10935,10935,10935,11275,11275,11275,11995,11275,11995,11275, + 11275,11275,11275,11275,11275,11945,10949,10949,10949,11996, + 10949,11275,11275,11275,11275,10949,11275,10949,10949,10949, + 10949,10949,11275,11275,11275,11275,11275,11275,11997,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11998,11275,11998,11275,10990,11275,10990,11275,10990,11275, + + 10990,11998,11275,11275,11275,11275,11275,11275,11999,11999, + 11275,11999,11275,11999,11999,10075,11275,11945,11275,11986, + 11275,11275,11986,11986,11986,11275,11987,11987,11987,11989, + 11989,11989,11275,12000,11990,11275,11991,11275,12001,11275, + 11275,11275,11275,11275,11993,11993,11275,11275,10075,12002, + 10075,11275,10935,10935,10935,11275,11275,10949,10949,11275, + 11275,11275,11275,11275,11275,11275,10949,11275,10949,10949, + 11275,11275,11275,11275,11275,11275,11997,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,10990,11275, + 10990,10990,11275,11275,11275,11999,11999,11275,11999,11999, + + 10075,11275,11945,11275,11275,11986,11986,11986,11987,11987, + 11987,11989,11989,12000,11275,12001,11275,11275,11275,11993, + 11993,11275,11275,12002,11275,11275,10935,10949,10949,11275, + 11275,11275,10949,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,10990,10990, + 11275,11275,11275,11275,11275,11999,11275,11275,11275,11945, + 11986,11986,11986,11987,11987,11989,12003,11275,11275,11275, + 11993,11275,11275,11275,10949,11275,11275,11275,10949,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,10990,11275,11275,11275,11275,11999,11275,11986, + + 11986,11987,12003,11275,11275,11275,11993,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,10990, + 11275,11999,11275,11986,12004,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,10990,11999,11275,12004,11275,11275, + 11275,11275,11275,11275,11275,11275,10990,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,12005,11275, + 11275,11275,11275,11275,12005,11275,11275,11275,11275,11275, + 11275,12006,12006,11275, 0,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275 + } ; + +static yyconst flex_int16_t yy_nxt[45258] = + { 0, + 11275,11275, 183, 184, 185, 183, 212, 186, 187, 188, + 189, 190, 191, 233, 244, 233, 244, 414, 192, 201, + 202, 203, 201, 202, 203, 212, 206, 207, 414, 193, + 212, 194, 208, 206, 207, 248, 647, 648, 248, 208, + 212, 211, 212, 211, 211, 272, 212, 213, 899, 214, + 212, 272, 218, 218, 218, 218, 2909, 212, 195, 212, + 219, 371, 196, 211, 212, 211, 211, 415, 208, 213, + 416, 214, 233, 234, 204, 233, 234, 204, 415,11275, + 223, 209, 253, 254, 255, 253, 254, 255, 209, 197, + 198, 199, 200, 183, 184, 185, 183, 215, 186, 187, + + 188, 189, 190, 191, 212, 223, 366, 205, 220, 192, + 205, 224, 371, 218, 218, 218, 218, 417, 342, 215, + 193, 219, 194, 226, 227, 228, 226, 235, 216, 1758, + 235, 229, 226, 227, 228, 226, 224, 248, 367, 221, + 229, 866, 366, 212, 233, 234, 238, 342, 248, 195, + 216, 866, 239, 196, 257, 258, 257, 258, 236, 381, + 237, 236, 811, 237, 812, 233, 234, 238, 818, 220, + 240, 819, 241, 239, 367, 769, 770, 257, 261, 230, + 197, 198, 199, 200, 262, 249, 233, 234, 230, 233, + 234, 240, 245, 241, 239, 245, 249, 239, 381, 242, + + 221, 257, 261, 568, 569, 2911, 257, 261, 262, 259, + 231, 259, 240, 264, 241, 240, 250, 241, 251, 231, + 242, 257, 261, 312, 313, 314, 312, 250, 264, 251, + 257, 267, 263, 257, 267, 268, 519, 269, 268, 1138, + 269, 246, 257, 316, 246, 292, 445, 292, 293, 317, + 293, 293, 293, 293, 293, 293, 263, 292, 570, 292, + 293, 265, 293, 293, 293, 293, 293, 293, 312, 313, + 314, 312, 257, 316, 776, 777, 265, 445, 1298, 317, + 322, 323, 324, 322, 520, 270, 1262, 294, 270, 278, + 279, 278, 278, 769, 770, 446, 1200, 318, 1263, 294, + + 322, 323, 324, 322, 800, 515, 360, 361, 280, 280, + 280, 280, 280, 280, 208, 208, 281, 281, 281, 801, + 613, 327, 328, 329, 327, 895, 446, 318, 319, 208, + 320, 416, 327, 328, 329, 327, 325, 515, 568, 569, + 866, 353, 354, 355, 353, 282, 278, 279, 278, 278, + 519, 335, 336, 337, 335, 516, 325, 866, 319, 338, + 320, 362, 1297, 446, 446, 280, 280, 280, 280, 280, + 280, 769, 770, 281, 281, 281, 1760, 330, 417, 331, + 332, 335, 336, 337, 335, 565, 517, 516, 330, 338, + 331, 332, 363, 570, 364, 565, 1138, 356, 520, 611, + + 2932, 612, 282, 284, 285, 286, 284, 339, 613, 287, + 333, 353, 354, 355, 353, 769, 770, 288, 517, 288, + 289, 333, 289, 289, 289, 289, 289, 289, 357, 825, + 826, 290, 1709, 566, 1710, 360, 361, 339, 340, 344, + 345, 346, 344, 566, 820, 347, 2941, 348, 344, 345, + 346, 344, 510, 511, 347, 843, 348, 512, 843, 291, + 284, 285, 286, 284, 825, 826, 287, 356, 340, 498, + 498, 498, 498, 1157, 288, 866, 288, 289, 986, 289, + 289, 289, 289, 289, 289, 649, 866, 611, 290, 612, + 362, 2942, 390, 870, 349, 350, 870, 391, 357, 392, + + 393, 390, 822, 349, 350, 823, 391, 513, 392, 393, + 813, 489, 2948, 490, 776, 777, 291, 295, 296, 297, + 295, 363, 1138, 364, 499, 500, 351, 872, 489, 1160, + 490, 298, 383, 298, 299, 351, 299, 299, 299, 299, + 299, 299, 973, 384, 761, 384, 385, 394, 385, 385, + 385, 385, 385, 385, 876, 1695, 394, 386, 814, 974, + 877, 491, 522, 523, 524, 525, 1696, 398, 399, 400, + 398, 2968, 878, 300, 879, 401, 776, 777, 491, 301, + 302, 303, 304, 305, 890, 387, 306, 890, 971, 815, + 307, 816, 492, 308, 493, 2969, 309, 310, 373, 374, + + 373, 373, 398, 399, 400, 398, 873, 972, 874, 492, + 401, 493, 375, 383, 375, 376, 388, 376, 376, 376, + 376, 376, 376, 402, 384, 933, 384, 385, 938, 385, + 385, 385, 385, 385, 385, 825, 826, 2534, 386, 405, + 406, 407, 405, 405, 406, 407, 405, 408, 578, 579, + 934, 408, 957, 934, 377, 957, 403, 2535, 402, 915, + 378, 411, 411, 411, 411, 2985, 387, 825, 826, 412, + 411, 411, 411, 411, 466, 467, 468, 466, 412, 825, + 826, 469, 470, 825, 826, 379, 373, 374, 373, 373, + 916, 403, 917, 647, 648, 409, 580, 388, 1109, 409, + + 375, 1109, 375, 376, 1201, 376, 376, 376, 376, 376, + 376, 466, 467, 468, 466, 510, 511, 413, 469, 470, + 512, 522, 523, 524, 525, 2986, 413, 581, 930, 581, + 471, 466, 467, 468, 466, 647, 648, 931, 469, 470, + 360, 361, 377, 466, 467, 468, 466, 486, 378, 932, + 469, 470, 472, 473, 474, 472, 489, 1202, 490, 469, + 475, 472, 473, 474, 472, 360, 361, 471, 469, 475, + 513, 1282, 486, 379, 183, 184, 185, 183, 1684, 186, + 187, 395, 189, 190, 191, 1685, 489, 471, 490, 761, + 192, 498, 498, 498, 498, 487, 1283, 578, 579, 471, + + 798, 193, 798, 194, 1099, 494, 495, 496, 476, 547, + 547, 547, 547, 502, 503, 504, 502, 476, 1067, 1068, + 487, 505, 547, 547, 547, 547, 363, 608, 488, 609, + 396, 1138, 813, 2987, 196, 494, 495, 496, 1077, 1078, + 502, 503, 504, 502, 1161, 580, 499, 500, 505, 1231, + 798, 363, 1232, 488, 551, 551, 551, 551, 811, 799, + 812, 197, 198, 199, 200, 183, 184, 185, 183, 506, + 186, 187, 395, 189, 190, 191, 581, 610, 581, 905, + 813, 192, 548, 820, 895, 549, 602, 603, 604, 602, + 769, 770, 193, 761, 194, 548, 506, 1069, 549, 811, + + 507, 812, 508, 602, 603, 604, 602, 1070, 611, 760, + 612, 813, 761, 813, 843, 762, 763, 843, 552, 866, + 764, 396, 553, 765, 1720, 196, 766, 507, 1721, 508, + 835, 835, 835, 835, 835, 835, 866, 554, 776, 777, + 821, 822, 2573, 846, 823, 846, 846, 846, 846, 846, + 846, 2574, 197, 198, 199, 200, 418, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 430, 423, 423, 423, 431, 423, 423, 432, 432, 432, + 432, 432, 432, 423, 423, 433, 434, 435, 423, 418, + 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, + + 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, + 436, 436, 436, 430, 437, 430, 438, 439, 440, 436, + 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, + 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, + 436, 436, 436, 436, 436, 441, 442, 443, 444, 448, + 449, 184, 450, 449, 866, 451, 452, 453, 454, 455, + 456, 617, 618, 617, 619, 866, 457, 212, 212, 212, + 212, 880, 880, 880, 880, 1112, 1113, 458, 866, 459, + 212, 212, 212, 212, 880, 880, 880, 880, 866, 551, + 551, 551, 551, 880, 881, 880, 880, 1133, 1134, 212, + + 212, 212, 212, 212, 212, 212, 460, 845, 212, 845, + 461, 572, 572, 825, 826, 556, 557, 620, 556, 557, + 1120, 558, 559, 585, 558, 559, 212, 212, 212, 212, + 1236, 1236, 870, 573, 573, 870, 585, 462, 463, 464, + 465, 448, 449, 184, 450, 449, 2529, 451, 452, 453, + 454, 455, 456, 552, 586, 587, 2637, 553, 457, 560, + 561, 562, 560, 561, 562, 574, 574, 586, 1753, 458, + 1120, 459, 554, 1262, 574, 574, 776, 777, 575, 575, + 574, 574, 587, 1257, 1258, 1263, 588, 608, 779, 609, + 576, 576, 563, 1754, 1122, 563, 905, 906, 460, 1257, + + 1258, 907, 461, 591, 592, 593, 591, 212, 212, 212, + 212, 1265, 1266, 588, 1201, 606, 594, 212, 212, 212, + 212, 617, 618, 617, 619, 606, 820, 647, 648, 462, + 463, 464, 465, 447, 595, 890, 1267, 610, 890, 477, + 1268, 478, 780, 781, 1269, 782, 783, 1332, 784, 922, + 922, 922, 922, 785, 786, 1333, 769, 770, 787, 596, + 788, 789, 783, 607, 776, 777, 597, 1202, 611, 1334, + 612, 1079, 1267, 607, 1080, 597, 1268, 620, 1081, 598, + 1527, 597, 775, 828, 829, 1699, 1697, 830, 1082, 1083, + 479, 599, 923, 831, 923, 480, 480, 480, 480, 480, + + 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, + 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, + 480, 481, 2999, 482, 447, 447, 449, 184, 450, 449, + 447, 451, 452, 478, 454, 455, 456, 447, 447, 447, + 447, 447, 457, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 458, 447, 459, 447, 447, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, + 483, 447, 484, 447, 447, 447, 461, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, + + 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 481, 463, 482, 465, 183, 527, 528, + 183, 2112, 529, 530, 531, 189, 532, 533, 621, 622, + 622, 621, 3002, 534, 1716, 1717, 623, 622, 622, 622, + 622, 825, 826, 1322, 535, 623, 536, 622, 625, 622, + 622, 922, 922, 922, 922, 623, 591, 592, 593, 591, + 989, 989, 989, 989, 622, 622, 622, 622, 876, 594, + 966, 967, 623, 537, 968, 1323, 1324, 538, 969, 2612, + 622, 718, 622, 622, 624, 970, 1747, 595, 623, 621, + 622, 622, 719, 624, 1774, 2613, 1775, 623, 773, 773, + + 773, 773, 2112, 624, 539, 540, 199, 541, 183, 527, + 528, 183, 596, 529, 530, 531, 189, 532, 533, 597, + 624, 960, 961, 957, 534, 962, 957, 1702, 597, 963, + 1703, 964, 598, 3004, 597, 535, 624, 536, 622, 622, + 622, 622, 1704, 895, 599, 720, 623, 622, 759, 622, + 622, 802, 2477, 837, 802, 623, 802, 908, 908, 908, + 908, 908, 838, 839, 537, 1057, 3009, 933, 538, 840, + 845, 841, 845, 846, 842, 846, 846, 846, 846, 846, + 846, 2478, 938, 1359, 849, 774, 849, 849, 849, 849, + 849, 849, 934, 1360, 624, 539, 540, 199, 541, 626, + + 2473, 1768, 1794, 624, 802, 883, 884, 934, 1722, 885, + 804, 1723, 886, 805, 1769, 1795, 627, 806, 628, 761, + 887, 629, 1058, 1724, 2533, 630, 807, 808, 809, 631, + 935, 1805, 935, 632, 1059, 1361, 3010, 849, 633, 849, + 849, 849, 849, 849, 849, 983, 983, 983, 983, 634, + 635, 2129, 984, 2533, 636, 2116, 1806, 2130, 637, 983, + 983, 983, 983, 2678, 638, 1798,11275, 1799, 639, 1268, + 640, 3011, 937, 1269, 641, 2048, 2049, 642, 651, 1800, + 652, 653, 654, 655, 656, 657, 658, 659, 660, 1067, + 1068, 661, 662, 663, 664, 665, 666, 666, 666, 667, + + 666, 666, 662, 668, 2116, 669, 662, 3012, 670, 671, + 672, 673, 674, 674, 674, 675, 676, 674, 677, 678, + 674, 679, 680, 681, 682, 674, 674, 674, 683, 674, + 684, 674, 685, 686, 3017, 687, 688, 689, 690, 691, + 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, + 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, + 712, 713, 674, 674, 714, 2577, 715, 716, 651, 2529, + 652, 653, 654, 655, 656, 657, 658, 659, 660, 2062, + 2063, 661, 662, 663, 664, 665, 666, 666, 666, 667, + 666, 666, 662, 668, 1109, 669, 662, 1109, 670, 721, + + 722, 723, 724, 724, 724, 725, 726, 724, 727, 728, + 724, 729, 730, 731, 732, 724, 724, 724, 733, 724, + 734, 724, 685, 686, 3018, 687, 688, 689, 735, 736, + 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, + 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, + 757, 758, 724, 724, 714, 2270, 715, 716, 793, 793, + 793, 2528, 793, 793, 793, 793, 793, 793, 793, 793, + 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, + 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, + 793, 794, 794, 794, 794, 794, 794, 794, 794, 794, + + 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, + 794, 794, 794, 794, 794, 793, 793, 793, 793, 793, + 793, 794, 795, 794, 794, 796, 794, 794, 794, 794, + 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, + 794, 794, 794, 794, 794, 794, 794, 793, 793, 793, + 793, 851, 852, 852, 851, 863, 2112, 863, 863, 863, + 863, 863, 863, 903, 903, 903, 903, 903, 903, 852, + 852, 852, 852, 863, 3019, 863, 863, 863, 863, 863, + 863, 2121, 940, 2112, 940, 940, 2340, 852, 862, 852, + 852, 896, 897, 898, 896, 3020, 1813, 899, 1262, 901, + + 902, 902, 901, 2266, 1814, 899, 901, 897, 902, 901, + 1077, 1078, 899, 853, 854, 855, 856, 857, 1815, 2219, + 858, 1267, 1112, 1113, 859, 1268, 2220, 860, 2114, 2050, + 861, 853, 854, 855, 856, 857, 2221, 2112, 858, 941, + 1133, 1134, 859, 1636, 942, 860, 900, 2113, 861, 853, + 854, 855, 856, 857, 900, 2122, 858, 2588, 943, 2668, + 859, 900, 2557, 860, 2112, 2669, 861, 894, 894, 894, + 894, 894, 894, 894, 894, 895, 894, 909, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + + 894, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 894, 894, 894, 894, 894, 894, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 2562, 894, 894, 894, + 912, 912, 912, 912, 923, 2260, 923, 924, 2563, 924, + 924, 924, 924, 924, 924, 924, 2261, 924, 924, 924, + 924, 924, 924, 935, 1282, 935, 936, 3027, 936, 936, + 936, 936, 936, 936, 936, 1322, 936, 936, 936, 936, + + 936, 936, 948, 2272, 949, 950, 3028, 951, 952, 1283, + 912, 1138, 953, 954, 955, 1246, 1247, 1248, 1246, 956, + 880, 880, 880, 880, 2135, 937, 651, 1323, 652, 653, + 654, 655, 656, 657, 658, 659, 660, 1265, 1266, 661, + 662, 663, 664, 665, 666, 666, 666, 667, 666, 666, + 662, 668, 1273, 669, 662, 3031, 670, 721, 722, 723, + 724, 724, 724, 725, 726, 724, 727, 728, 724, 729, + 730, 731, 732, 724, 724, 724, 733, 724, 734, 724, + 685, 686, 1138, 687, 688, 689, 735, 760, 737, 738, + 944, 740, 741, 762, 763, 744, 745, 746, 764, 748, + + 749, 945, 751, 752, 766, 754, 755, 756, 757, 758, + 724, 724, 714, 2168, 715, 716, 975, 976, 976, 975, + 976, 976, 976, 976, 623, 1101, 2272, 2112, 623, 976, + 979, 976, 976, 975, 976, 976, 980, 623, 1259, 3032, + 1260, 623, 1265, 1266, 977, 2169, 1324, 3042, 977, 987, + 987, 987, 987, 987, 987, 1265, 1266, 977, 1282, 2133, + 1284, 981, 1056, 622, 622, 1056, 622, 625, 622, 622, + 623, 2869, 978, 915, 623, 1273, 978, 1092, 1060, 1061, + 1061, 1060, 1093, 1283, 2115, 978, 1062, 2273, 813, 978, + 626, 1061, 1061, 1061, 1061, 1061, 1064, 1061, 1061, 1062, + + 2869, 1857, 1359, 1062, 916, 1359, 917, 627, 2112, 628, + 2255, 1858, 629, 2277, 1325, 1360, 630, 2256, 624, 813, + 631, 813, 624, 2275, 632, 1071, 1072, 1072, 1071, 633, + 1094, 674, 1095, 1073, 1063, 674, 1558, 761, 2871, 1283, + 634, 635, 2531, 1359, 1297, 636, 1652, 1063, 1653, 637, + 2592, 1063, 1096, 1859, 1361, 638, 1354, 1361, 2872, 639, + 674, 640, 1097, 674, 674, 641, 674, 674, 642, 651, + 674, 992, 653, 654, 993, 994, 995, 996, 659, 997, + 998, 1074, 661, 662, 663, 664, 665, 999, 999, 999, + 1000, 999, 999, 662, 668, 1361, 1001, 662, 3052, 1002, + + 1003, 1004, 1005, 1006, 1007, 1007, 1008, 1009, 1010, 1011, + 1012, 1007, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, + 1021, 1022, 1007, 685, 1023, 1024, 687, 1025, 689, 1026, + 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, + 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, + 1047, 1048, 1049, 1007, 1050, 714, 1051, 715, 1052, 1072, + 1072, 1072, 1072, 1072, 1075, 1072, 1072, 1073, 2570, 1117, + 2571, 1073, 2572, 2380, 813, 1250, 2381, 813, 1135, 1135, + 1135, 1135, 1325, 1118, 1118, 1118, 1118, 1118, 1125, 1325, + 1126, 1127, 674, 1128, 1129, 880, 880, 880, 880, 1130, + + 3053, 622, 622, 622, 622, 1131, 1636, 1283, 3060, 623, + 622, 1139, 622, 622, 1283, 1074, 1329, 2553, 623, 1074, + 626, 674, 813, 1636, 674, 813, 2719, 674, 1135, 2578, + 1251, 1107, 1252, 1350, 1103, 1253, 2579, 627, 2371, 628, + 1254, 1283, 629, 1119, 1466, 3064, 630, 1255, 1256, 1104, + 631, 1105, 2891, 813, 632, 813, 813, 624, 813, 633, + 1239, 1239, 1239, 1239, 2301, 3065, 624, 2594, 2595, 1283, + 634, 1084, 1085, 1085, 1085, 1086, 1085, 1085, 1085, 1087, + 1085, 1085, 1085, 1085, 1085, 1088, 1085, 1085, 1085, 1089, + 1085, 1090, 1085, 1085, 1085, 1091, 1085, 1224, 642, 1138, + + 1212, 1212, 1212, 1212, 1325, 2892, 1140, 1225, 1203, 2580, + 1204, 2586, 3066, 1226, 674, 2607, 1240, 1227, 1242, 1242, + 1242, 1242, 1228, 1141, 1229, 1142, 2581, 2608, 1143, 1283, + 1331, 1205, 1144, 2701, 674, 674, 1145, 1206, 1207, 2702, + 1146, 1208, 2612, 674, 1209, 1147, 674, 1210, 1211, 1347, + 835, 835, 835, 835, 835, 835, 1148, 1149, 2729, 1348, + 2174, 1150, 2300, 674, 674, 1151, 674, 674, 2175, 674, + 674, 1152, 1349, 1213, 1243, 1153, 1214, 1154, 2237, 2238, + 2239, 1155, 2176, 2240, 1156, 1162, 1162, 1162, 1163, 1162, + 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1162, + + 1162, 1173, 1174, 1175, 1176, 1177, 1178, 1178, 1178, 1179, + 1178, 1178, 1174, 1180, 1162, 1181, 1174, 1162, 1182, 671, + 672, 673, 674, 674, 674, 675, 676, 674, 677, 678, + 674, 679, 680, 681, 682, 674, 674, 674, 683, 674, + 684, 674, 1183, 1184, 1162, 1185, 1186, 1187, 690, 1188, + 1189, 693, 1190, 695, 696, 1191, 1192, 699, 700, 701, + 702, 703, 704, 1193, 706, 707, 1194, 1195, 1196, 711, + 712, 713, 674, 674, 1197, 1162, 1198, 1199, 1217, 1217, + 1217, 1217, 621, 622, 622, 621, 674, 2601, 674, 2602, + 623, 622, 622, 622, 622, 622, 622, 622, 622, 623, + + 3067, 2549, 2529, 623, 1274, 1274, 1274, 1274, 1276, 1277, + 1278, 1276, 623, 1355, 1325, 674, 1279, 674, 674, 2550, + 674, 674, 846, 1356, 846, 846, 846, 846, 846, 846, + 666, 666, 666, 666, 666, 666, 2603, 1329, 624, 1283, + 674, 1351, 1218, 2641, 674, 3072, 1219, 624, 2642, 674, + 2604, 624, 2116, 666, 666, 666, 666, 666, 666, 2644, + 1275, 1220, 1283, 2645, 1280, 1284, 905, 906, 1428, 674, + 1352, 907, 674, 674, 895, 674, 1429, 1327, 674, 1430, + 674, 674, 1431, 2849, 674, 622, 622, 622, 622, 2658, + 2659, 1328, 2574, 623, 1285, 2696, 1353, 674, 1286, 1267, + + 1327, 2116, 1287, 2064, 674, 2532, 1288, 2065, 1357, 674, + 1753, 1289, 674, 674, 1328, 674, 2117, 2066, 1290, 2241, + 2242, 2243, 1358, 1291, 2244, 2794, 674, 1292, 2490, 674, + 674, 1293, 674, 674, 2533, 1754, 674, 1294, 1449, 1448, + 724, 624, 674, 1295, 895, 674, 1325, 1296, 674, 1297, + 1298, 1384, 775, 1385, 1386, 1387, 2664, 674, 2559, 674, + 1450, 3080, 1388, 2560, 1389, 674, 1390, 2665, 1391, 724, + 1466, 1283, 724, 2426, 1558, 724, 1558, 2427, 1462, 1299, + 2660, 1300, 1463, 1301, 2992, 674, 674, 1302, 2646, 674, + 1303, 1304, 1464, 3081, 1305, 674, 1306, 2529, 1465, 2993, + + 1307, 1308, 2428, 1309, 2692, 2421, 2429, 674, 1310, 1519, + 1311, 2647, 1312, 2673, 674, 2674, 1313, 674, 2516, 1520, + 674, 1314, 1315, 1805, 674, 2793, 1316, 674, 1317, 1467, + 674, 1468, 1318, 1319, 1320, 1325, 674, 1298, 3085, 674, + 2661, 2529, 674, 1469, 1558, 1470, 2629, 2630, 1806, 1471, + 674, 1326, 1326, 1326, 1326, 1326, 1326, 724, 2682, 2631, + 1283, 2683, 2684, 1331, 1335, 2694, 1362, 2632, 1336, 2695, + 1363, 1422, 1423, 1424, 1364, 2718, 2703, 2532, 1365, 1425, + 2704, 2633, 674, 1366, 895, 1426, 724, 2608, 1427, 724, + 1367, 724, 1539, 1857, 1337, 1368, 1338, 2764, 1339, 1369, + + 2764, 2531, 1540, 1370, 1340, 1652, 1857, 1653, 1341, 1371, + 2575, 1342, 1343, 1325, 674, 1372, 773, 773, 773, 773, + 724, 1297, 1298, 724, 2923, 674, 724, 2685, 2924, 1326, + 1326, 1326, 1326, 1326, 1326, 1400, 2686, 2664, 1283, 1401, + 2687, 1331, 1402, 1403, 2688, 1859, 1404, 1636, 2732, 1405, + 1344, 1373, 1406, 1407, 674, 1374, 1558, 674, 1859, 1375, + 674, 2712, 1477, 1376, 2638, 2793, 1478, 2531, 1377, 2639, + 2716, 1652, 1337, 2614, 1338, 1378, 1339, 3086, 2615, 1344, + 1379, 2616, 1345, 2640, 1380, 1346, 1341, 1392, 1381, 1342, + 1343, 1393, 1394, 1395, 1382, 1396, 674, 2664, 674, 1397, + + 1383, 1398, 2828, 774, 1399, 674, 1297, 2828, 2814, 674, + 621, 622, 622, 719, 2863, 3098, 2784, 1408, 623, 2784, + 1409, 1410, 1807, 674, 2947, 674, 1457, 1458, 674, 1459, + 1460, 1411, 1412, 1413, 1461, 674, 1414, 674, 674, 1415, + 674, 1416, 1417, 1418, 674, 1419, 3111, 1806, 2928, 1444, + 1445, 1420, 674, 1421, 674, 674, 1451, 1446, 674, 1452, + 1453, 2929, 2784, 1447, 1454, 2784, 720, 674, 724, 724, + 1455, 922, 922, 922, 922, 1432, 1433, 1434, 2894, 1435, + 1436, 1437, 1456, 674, 674, 674, 1438, 2784, 2784, 1439, + 2784, 2784, 1440, 1441, 1442, 1350, 3126, 724, 724, 1443, + + 724, 724, 674, 724, 724, 1472, 1479, 1541, 2916, 1473, + 1480, 2917, 2851, 674, 674, 2862, 674, 674, 1481, 1474, + 1482, 2714, 1475, 1476, 2268, 1652, 1483, 1653, 724, 2910, + 2852, 674, 1484, 674, 674, 3127, 1505, 674, 1506, 2895, + 1507, 1508, 1755, 1755, 1755, 1755, 1755, 1755, 724, 1545, + 674, 2952, 1298, 2953, 1485, 1486, 1487, 724, 1488, 1489, + 724, 3132, 1490, 724, 1491, 1492, 1493, 724, 674, 1494, + 3133, 1498, 1495, 1496, 1497, 1499, 1543, 724, 1500, 1501, + 724, 1521, 674, 724, 724, 1502, 724, 1807, 1503, 1542, + 1504, 1509, 1522, 1523, 2531, 2670, 724, 724, 1652, 724, + + 1653, 2990, 724, 3138, 3035, 1544, 724, 2675, 724, 2676, + 1524, 1546, 1806, 724, 2677, 724, 724, 1811, 724, 724, + 3036, 1547, 2862, 1525, 1526, 1548, 724, 724, 674, 724, + 1594, 1353, 724, 1549, 2421, 724, 1297, 724, 1595, 3071, + 724, 1596, 1806, 724, 1597, 2495, 724, 1007, 2533, 1510, + 1511, 1434, 3139, 1512, 1513, 2869, 724, 674, 2930, 724, + 674, 2954, 1614, 1514, 1515, 2883, 1516, 1517, 1518, 1325, + 2884, 1615, 2559, 2955, 2991, 724, 1007, 2726, 724, 1007, + 724, 724, 1828, 3029, 2870, 1326, 1326, 1326, 1326, 1326, + 1326, 1007, 1829, 1450, 1283, 3030, 2730, 1331, 1528, 3143, + + 724, 1550, 1529, 1551, 1552, 1553, 2532, 2531, 1007, 724, + 2633, 1652, 1554, 1653, 1555, 724, 1556, 2935, 1557, 2380, + 1007, 1574, 3005, 1007, 1575, 1576, 1007, 3148, 1530, 724, + 1531, 2936, 724, 1830, 2931, 1577, 1578, 1007, 1532, 3149, + 1007, 1007, 1533, 1831, 1558, 1534, 1535, 1325, 1559, 1560, + 1561, 3150, 1562, 724, 1007, 724, 1563, 2865, 1564, 2912, + 2863, 1565, 1840, 1326, 1326, 1326, 1326, 1326, 1326, 3155, + 1007, 2994, 1283, 1007, 1566, 1331, 1007, 2913, 1567, 895, + 724, 1568, 1569, 1007, 1536, 1570, 1007, 1835, 1571, 1007, + 3159, 1572, 1573, 1756, 1756, 1756, 1756, 1756, 724, 2796, + + 2797, 1588, 1589, 1590, 907, 2919, 1530, 2920, 1531, 1591, + 3160, 2921, 724, 1536, 1807, 1592, 1537, 724, 1593, 1538, + 1533, 724, 1579, 1534, 1535, 1580, 2868, 724, 1581, 3021, + 1582, 1583, 1584, 724, 1585, 896, 897, 898, 896, 1806, + 1586, 899, 1587, 724, 2988, 3102, 724, 1610, 1611, 724, + 724, 2989, 724, 724, 1640, 1612, 724, 2709, 1641, 2710, + 2998, 1613, 724, 2711, 1598, 1599, 1600, 3161, 1601, 1602, + 1603, 724, 724, 2862, 2868, 1604, 1466, 2711, 1605, 1007, + 724, 1606, 1607, 1608, 1542, 2798, 1680, 3003, 1609, 2858, + 900, 724, 1616, 2869, 724, 1617, 1618, 724, 724, 1007, + + 1619, 1621, 1622, 724, 1623, 1624, 1620, 2865, 1007, 1625, + 2914, 1007, 724, 724, 1007, 724, 1807, 2933, 1456, 1626, + 1834, 2915, 2934, 1627, 1007, 724, 3164, 724, 1007, 3000, + 724, 1007, 1841, 1628, 1007, 1630, 3001, 1631, 3025, 1629, + 724, 1806, 724, 2925, 2926, 724, 1635, 724, 724, 1632, + 1636, 1633, 3026, 1850, 724, 1634, 1007, 724, 2927, 1007, + 1637, 1642, 3103, 1638, 1639, 1643, 2865, 3134, 724, 724, + 724, 1681, 724, 1644, 2857, 1645, 724, 2918, 3135, 724, + 3165, 1646, 724, 989, 989, 989, 989, 1484, 724, 1660, + 2949, 1621, 1622, 1661, 1623, 1688, 1662, 1663, 2950, 1625, + + 724, 724, 724, 1664, 2951, 724, 1665, 3175, 1666, 1647, + 1648, 1649, 2866, 1650, 1651, 3033, 2867, 1652, 2005, 1653, + 1654, 1655, 3034, 724, 1656, 1007, 2937, 1657, 1658, 1659, + 724, 3104, 2938, 724, 2939, 1667, 724, 1668, 2940, 1669, + 1670, 1509, 622, 622, 622, 622, 2863, 1558, 724, 3180, + 623, 1682, 1560, 1561, 1855, 1683, 3073, 1007, 724, 1563, + 1007, 1564, 2862, 849, 1565, 849, 849, 849, 849, 849, + 849, 3068, 3069, 1007, 1610, 1611, 3070, 724, 724, 3154, + 724, 3105, 1612, 724, 851, 852, 852, 851, 1687, 863, + 724, 863, 863, 863, 863, 863, 863, 3106, 624, 1671, + + 1672, 1600, 1007, 1673, 1674, 1007, 3131, 724, 1007, 1852, + 724, 1689, 2868, 1675, 1676, 1636, 1677, 1678, 1679, 724, + 2866, 3144, 724, 1007, 2893, 1637, 2005, 3145, 1638, 1639, + 852, 852, 852, 852, 901, 902, 902, 901, 3128, 2981, + 899, 989, 989, 989, 1801, 3129, 853, 854, 855, 856, + 857, 1842, 1843, 858, 3183, 1007, 2982, 859, 1007, 2983, + 860, 1844, 1845, 861, 852, 852, 852, 852, 901, 897, + 902, 901, 1007, 1007, 899, 903, 903, 903, 903, 903, + 903, 901, 902, 902, 901, 3082, 3083, 899, 3186, 900, + 3197, 3084, 853, 854, 855, 856, 857, 3198, 1853, 858, + + 1851, 1007, 1007, 859, 1007, 1007, 860, 1007, 1007, 861, + 902, 902, 902, 902, 3205, 924, 895, 924, 924, 924, + 924, 924, 924, 900, 3216, 2862, 853, 854, 855, 856, + 857, 776, 777, 858, 2863, 3033, 900, 859, 2900, 3096, + 860, 2901, 2865, 861, 983, 983, 983, 983, 3097, 1759, + 1759, 1759, 1759, 1759, 1759, 936, 2902, 936, 936, 936, + 936, 936, 936, 3125, 2863, 900, 894, 894, 894, 894, + 894, 894, 894, 894, 895, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 894, 894, 894, 894, 894, 894, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 3227, 894, 894, 894, 1762, + 1762, 1762, 1762, 1566, 2970, 1660, 3162, 1567, 2863, 1661, + 1568, 1569, 1662, 1663, 1570, 3169, 3170, 1571, 2971, 1664, + 1796, 1573, 1665, 1534, 1797, 975, 976, 976, 975, 976, + 976, 976, 976, 623, 3230, 3181, 2995, 623, 976, 976, + + 976, 976, 975, 976, 976, 980, 623, 2943, 2862, 2996, + 623, 2944, 3124, 977, 2945, 2946, 2997, 977, 1803, 1803, + 1803, 1803, 989, 989, 989, 989, 977, 1967, 2862, 3163, + 977, 987, 987, 987, 987, 987, 987, 1212, 1212, 1212, + 1212, 978, 3168, 2862, 3232, 978, 1763, 1325, 1246, 1247, + 1248, 1246, 1806, 1846, 978, 3136, 1007, 3220, 978, 3137, + 3233, 1007, 1807, 1326, 1326, 1326, 1326, 1326, 1326, 1007, + 1007, 3182, 1283, 2865, 1804, 1331, 3226, 1832, 999, 999, + 999, 999, 999, 999, 3235, 1007, 1847, 1806, 1007, 3236, + 1848, 1007, 3237, 1007, 1833, 1856, 1849, 1854, 1007, 1007, + + 3225, 1007, 1007, 3166, 1007, 1007, 1530, 3167, 1579, 3234, + 1213, 1684, 3030, 1214, 1581, 1811, 1582, 1583, 1685, 3022, + 1585, 3023, 1836, 1534, 1535, 1809, 1586, 3024, 1771, 1325, + 1007, 999, 999, 999, 999, 999, 999, 1007, 2866, 1810, + 1806, 1007, 2867, 3238, 2005, 1326, 1326, 1326, 1326, 1326, + 1326, 1837, 2531, 2922, 1283, 1838, 1652, 1331, 2721, 1007, + 3239, 2039, 1007, 2722, 1007, 1839, 2040, 1934, 1935, 1007, + 1007, 2865, 1007, 1007, 1936, 1937, 1938, 1353, 1809, 1007, + 3218, 1939, 1762, 1762, 1762, 1762, 3219, 1772, 1530, 2042, + 1531, 1636, 1810, 1007, 3006, 3007, 1007, 1940, 3008, 1941, + + 2977, 1637, 1533, 3099, 1638, 1639, 1535, 1807, 1007, 2048, + 2049, 1007, 2978, 3100, 1007, 2272, 1986, 1987, 2979, 3101, + 1988, 2980, 2050, 1808, 1808, 1808, 1808, 1808, 1808, 1007, + 1007, 2785, 1806, 1871, 2786, 1812, 1816, 1872, 1873, 1874, + 1817, 1875, 2787, 2788, 1007, 1876, 1007, 1877, 2789, 3247, + 1878, 1942, 2790, 1879, 2041, 1943, 3184, 3249, 1007, 1007, + 3185, 1007, 1007, 1007, 1007, 1007, 1818, 1890, 1819, 1763, + 1891, 1892, 3252, 1297, 3258, 1893, 1820, 1450, 1007, 3121, + 1821, 1894, 1895, 1822, 1823, 1807, 3188, 2035, 2036, 3203, + 3189, 1007, 2037, 3204, 2603, 1007, 1007, 3261, 1007, 2038, + + 2868, 1808, 1808, 1808, 1808, 1808, 1808, 3140, 3240, 2286, + 1806, 2287, 1880, 1812, 2863, 1881, 1882, 1962, 1007, 1883, + 1884, 1963, 1824, 1885, 3221, 1964, 1886, 2288, 1007, 1887, + 1888, 1965, 1889, 1239, 1239, 1239, 1239, 1966, 3061, 1907, + 1908, 1909, 3253, 1007, 1818, 3013, 1819, 1910, 3122, 3123, + 1007, 1825, 2066, 1911, 1826, 2289, 1912, 1827, 1821, 2048, + 2049, 1822, 1823, 1007, 1913, 3141, 1914, 1915, 1916, 2956, + 1917, 2957, 1007, 2958, 2270, 1918, 2959, 2960, 1919, 3142, + 3243, 1920, 2112, 1921, 1860, 1861, 1862, 1863, 1864, 1240, + 3217, 1007, 1007, 3269, 2867, 1865, 2005, 1866, 1007, 1867, + + 3062, 1868, 1869, 1870, 1007, 1242, 1242, 1242, 1242, 3222, + 2868, 3223, 1955, 1956, 3063, 1957, 1958, 2062, 2063, 3014, + 1959, 3015, 3016, 1007, 3224, 3270, 1007, 1960, 1896, 3250, + 1007, 1897, 1961, 1007, 1898, 3251, 1899, 1900, 1901, 1007, + 1902, 1903, 3266, 3151, 1904, 3152, 1905, 3271, 1906, 1007, + 3153, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 3273, 1951, + 3274, 1243, 1952, 2112, 1953, 1954, 3156, 1007, 3157, 3190, + 1922, 1923, 1924, 3158, 1925, 1926, 1927, 1456, 1007, 1007, + 3191, 1928, 3275, 3192, 1929, 3193, 3276, 1930, 1931, 1932, + 1834, 2062, 2063, 3283, 1933, 1967, 1007, 3194, 1007, 1007, + + 1978, 2020, 1007, 2021, 1979, 2022, 2023, 1980, 1981, 3195, + 3284, 1007, 1982, 1807, 1983, 1007, 3196, 1984, 1985, 1989, + 1990, 1991, 2042, 1992, 1993, 3287, 1994, 1995, 2972, 2973, + 1007, 1996, 1007, 1997, 2974, 2975, 2013, 1138, 1806, 1998, + 2014, 2281, 2976, 2015, 2016, 1484, 3210, 1007, 3211, 2282, + 2017, 1521, 3212, 2018, 1968, 2019, 1969, 989, 989, 989, + 989, 1970, 1522, 1523, 1007, 1971, 3212, 1007, 1972, 1138, + 1973, 1974, 1975, 724, 1976, 1977, 1007, 724, 1610, 1611, + 1524, 1056, 622, 622, 1056, 2516, 1612, 724, 2283, 623, + 724, 1534, 2059, 1525, 1526, 2121, 2284, 1999, 2000, 2001, + + 2286, 2002, 2003, 3087, 2287, 2004, 1297, 2005, 2006, 2007, + 3088, 1007, 2008, 2009, 3089, 2010, 2011, 2012, 2024, 3090, + 2288, 1598, 2045, 1600, 2289, 1601, 1602, 1603, 1060, 1061, + 1061, 1060, 1604, 2298, 3288, 1605, 1062, 624, 1686, 1607, + 1608, 1542, 1660, 3285, 2421, 1609, 1661, 2299, 3286, 1662, + 1663, 1217, 1217, 1217, 1217, 2784, 1664, 3272, 2784, 1665, + 1534, 2046, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1062, 1331, 2629, 3259, 1062, 3311, 2025, 2026, 1924, 2027, + 2028, 2029, 2866, 3146, 1063, 2631, 3147, 1007, 2005, 1007, + 2030, 2031, 3311, 2032, 2033, 2034, 2052, 2052, 2052, 2052, + + 2054, 2055, 2056, 2054, 1062, 1325, 3246, 3311, 2057, 1326, + 1326, 1326, 1326, 1326, 1326, 1218, 2532, 3107, 1063, 1219, + 2633, 2533, 1063, 1071, 1072, 1072, 1071, 1072, 1072, 1072, + 1072, 1073, 3322, 2116, 1220, 1073, 1072, 1072, 1072, 1072, + 2067, 2067, 2067, 2067, 1073, 3257, 1331, 2866, 1073, 3323, + 2726, 2867, 2053, 2005, 3130, 2375, 2058, 1647, 1648, 1649, + 1331, 1650, 1651, 3324, 1337, 1652, 1338, 1653, 1654, 1690, + 1331, 724, 1656, 1536, 724, 1657, 1658, 2060, 1341, 1074, + 674, 3108, 2116, 1074, 674, 2069, 2070, 2071, 2069, 3292, + 3325, 3109, 1074, 2072, 1558, 3297, 2068, 3110, 1682, 1560, + + 1561, 3054, 2074, 3291, 3268, 674, 1563, 3293, 1564, 724, + 3326, 1565, 1534, 724, 1610, 1611, 3296, 1660, 2506, 2048, + 2049, 1661, 2076, 724, 1662, 1663, 724, 1534, 2077, 674, + 3298, 1664, 2390, 2866, 1665, 1534, 2079, 2867, 1298, 3037, + 3306, 2073, 724, 2506, 3038, 1579, 724, 3039, 1684, 3327, + 3328, 1581, 674, 1582, 1583, 2075, 724, 1585, 3329, 724, + 1534, 3055, 3056, 1586, 3057, 1587, 1284, 1362, 1373, 3300, + 3313, 1363, 1374, 2493, 3058, 1364, 1375, 3305, 3059, 1365, + 1376, 2706, 674, 2707, 1366, 1377, 674, 3245, 2708, 674, + 2532, 1367, 1378, 3314, 3330, 1285, 2097, 2102, 674, 1286, + + 2098, 2103, 3312, 1287, 2099, 2104, 2706, 1288, 2850, 674, + 2100, 2105, 1289, 2708, 1325, 2532, 2101, 2106, 3331, 1290, + 2081, 3332, 2062, 2063, 2080, 2081, 2081, 2081, 2082, 2081, + 2081, 2081, 2083, 2081, 2081, 2081, 2081, 2081, 2084, 2081, + 2081, 2081, 2081, 2081, 2085, 2081, 2081, 2081, 2086, 2081, + 1297, 1298, 1660, 674, 2290, 3333, 1661, 3317, 3334, 1662, + 1663, 3213, 3335, 2291, 3214, 2865, 1664, 2292, 3091, 1665, + 1534, 2107, 3092, 1337, 2293, 1338, 2280, 3093, 2112, 3215, + 1299, 3094, 1300, 2294, 1301, 3095, 3336, 1341, 1302, 674, + 3255, 1303, 1304, 674, 2295, 1305, 3302, 1306, 674, 2296, + + 3256, 1307, 1308, 674, 1309, 3337, 2297, 3303, 3307, 2087, + 2081, 2088, 2081, 2089, 2081, 2081, 2081, 2090, 2081, 2081, + 2081, 2081, 2091, 2092, 2081, 2081, 2081, 2093, 2081, 2094, + 2081, 2081, 2081, 2095, 2096, 1320, 1521, 2501, 1660, 3338, + 11275, 2421, 1661, 3308,11275, 1662, 1663, 1522, 1523, 3265, + 3339, 2819, 1664,11275, 2820, 1665, 1534, 2111, 3321, 2112, + 11275, 3340, 2821, 2822, 2251, 2108, 3341, 2112, 2823, 2081, + 1325, 674, 2824, 2081, 622, 622, 622, 622, 2109, 2110, + 1329, 1298, 623, 1298, 3344, 2081, 666, 666, 666, 666, + 666, 666, 3345, 3346, 3347, 1283, 666, 666, 666, 666, + + 666, 666, 3171, 3260, 3348, 1283, 1274, 1274, 1274, 1274, + 2213, 3172, 2177, 2532, 623, 3173, 2178, 2633, 3206, 3174, + 2179, 2214, 2215, 2830, 2180, 3342, 2831, 3349, 3350, 2181, + 624, 1284, 3351, 2171, 2832, 2833, 1367, 3267, 3343, 2216, + 2834, 2182, 2187, 2171, 2835, 2183, 2188, 2172, 2112, 2184, + 2189, 3352, 2217, 2218, 2190, 2185, 3353, 2172, 3354, 2191, + 2137, 2186, 1275, 3176, 2138, 1297, 1378, 1297, 2139, 3177, + 3178, 2192, 2140, 2391, 3356, 2193, 3357, 2141, 3358, 2194, + 1262, 3207, 3179, 3208, 1290, 2195, 674, 3299, 3209, 2142, + 2868, 2196, 1338, 2143, 1444, 1445, 3355, 2144, 674, 3359, + + 674, 674, 1446, 2145, 1341, 3360, 2278, 3363, 2204, 2146, + 674, 1325, 674, 2147, 2205, 1297, 1298, 3187, 1473, 1498, + 3364, 674, 674, 2209, 3365, 674, 1500, 2210, 1474, 3366, + 674, 1475, 1476, 1502, 3367, 3368, 1503, 1342, 1504, 3369, + 1276, 2267, 1278, 1276, 2966, 2148, 2866, 2149, 1279, 2150, + 2867, 3370, 2005, 2151, 3371, 2967, 2152, 2153, 1265, 1266, + 2154, 2652, 2155, 3372, 2653, 3373, 2156, 2157, 2654, 1309, + 1337, 2655, 1338, 2305, 2158, 2656, 2159, 2657, 2160, 2866, + 3304, 3374, 2161, 2867, 1341, 2005, 674, 2162, 2163, 2484, + 674, 674, 2164, 2485, 2165, 3377, 1280, 2486, 2166, 2167, + + 1320, 1325, 3199, 3200, 3201, 1274, 1274, 1274, 1274, 1325, + 3202, 2223, 3378, 623, 3379, 3380, 1473, 1326, 1326, 1326, + 1326, 1326, 1326, 2363, 674, 674, 1283, 3310, 674, 1331, + 2513, 3362, 674, 674, 1283, 674, 674, 3382, 1344, 674, + 2224, 2211, 674, 2212, 674, 1507, 1508, 674, 674, 674, + 674, 674, 2485, 3386, 674, 1325, 2327, 674, 1342, 1392, + 1337, 1275, 1338, 2197, 1394, 1395, 1353, 1396, 2272, 674, + 3385, 1397, 3319, 1398, 1341, 3395, 1399, 1342, 1343, 1325, + 1276, 2274, 1278, 1276, 2503, 3396, 674, 3376, 1279, 1326, + 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, + + 1326, 674, 3384, 3390, 1283, 674, 3422, 1331, 674, 674, + 674, 674, 674, 1392, 1337, 674, 1338, 1273, 674, 1342, + 3402, 2222, 3361, 1274, 1274, 1274, 1274, 2510, 1341, 3309, + 674, 623, 674, 2512, 674, 3320, 1280, 1400, 1337, 674, + 1338, 2198, 1339, 674, 2199, 1403, 1392, 2512, 1404, 2374, + 3318, 1405, 1341, 674, 1406, 1407, 1343, 674, 3387, 674, + 1413, 674, 3383, 1414, 674, 674, 1415, 674, 1416, 1417, + 2200, 674, 1419, 674, 674, 1342, 3389, 1325, 1420, 1275, + 1421, 2201, 2202, 1434, 3388, 2203, 1436, 1437, 674, 674, + 674, 3392, 1438, 674, 1473, 1439, 3393, 3381, 1440, 1441, + + 1442, 1350, 1283, 674, 674, 1443, 1485, 1486, 1487, 1344, + 2206, 1489, 674, 674, 1490, 2330, 1491, 1492, 1493, 3400, + 674, 2207, 3391, 674, 1495, 1496, 2208, 1466, 674, 674, + 1392, 674, 674, 3426, 2197, 2225, 1395, 674, 1396, 2866, + 1283, 674, 1397, 2867, 1398, 3228, 3375, 1399, 1342, 674, + 3229, 2305, 3444, 674, 1444, 1445, 3394, 674, 674, 674, + 674, 674, 1446, 674, 3459, 3397, 674, 2227, 2226, 1325, + 1452, 1453, 1325, 1473, 674, 1454, 3381, 1325, 674, 3435, + 2305, 1455, 674, 3315, 674, 1342, 2228, 3404, 1468, 674, + 674, 674, 674, 1456, 674, 3413, 674, 674, 674, 1325, + + 1469, 2839, 1470, 1479, 2840, 674, 1471, 1480, 674, 1325, + 674, 674, 2841, 2842, 674, 2229, 2380, 1482, 2843, 2380, + 674, 1342, 2844, 1483, 1276, 2267, 1278, 1276, 1337, 1484, + 1338, 1337, 1279, 1338, 1325, 3464, 1337, 3401, 1338, 1473, + 2305, 2306, 1341, 1325, 674, 2307, 674, 674, 674, 3403, + 1341, 674, 674, 1325, 674, 2306, 674, 674, 1337, 2341, + 1338, 2308, 2340, 3412, 1325, 1490, 674, 1491, 1337, 2310, + 1338, 3446, 1341, 3415, 674, 674, 3406, 1325, 674, 3410, + 1280, 2309, 1341, 674, 674, 1325, 674, 1283, 674, 3417, + 1325, 674, 3448, 1337, 674, 1338, 3411, 1473, 2310, 3405, + + 1325, 2311, 1337, 1490, 1338, 1491, 674, 1341, 674, 674, + 674, 1325, 1337, 674, 1338, 2371, 1341, 3425, 674, 1325, + 3447, 2312, 674, 1337, 1325, 1338, 1341, 674, 674, 3418, + 674, 3419, 674, 2314, 2313, 2315, 1337, 1341, 1338, 674, + 1283, 1325, 674, 674, 1337, 3427, 1338, 2316, 3424, 1337, + 1341, 1338, 674, 674, 2317, 3428, 674, 3488, 1341, 1337, + 674, 1338, 2318, 1341, 674, 674, 1325, 1325, 674, 674, + 1337, 3489, 2322, 1341, 2330, 2319, 674, 3423, 1337, 674, + 1338, 674, 2306, 1337, 1341, 1338, 674, 674, 2321, 1325, + 674, 3490, 1341, 3449, 674, 674, 1325, 1341, 674, 674, + + 1337, 3450, 1338, 674, 1325, 1326, 1326, 1326, 1326, 1326, + 1326, 2323, 3416, 1325, 1341, 3429, 674, 674, 3434, 3453, + 674, 1325, 674, 674, 2309, 1337, 1337, 1338, 1338, 674, + 674, 2380, 2324, 1337, 2381, 1338, 2325, 3431, 1325, 1341, + 1341, 674, 674, 1325, 3452, 674, 674, 1341, 1337, 674, + 1338, 1325, 3430, 674, 2521, 1337, 674, 2332, 2305, 1283, + 2340, 674, 1341, 1337, 674, 1338, 3456, 2331, 674, 1341, + 1325, 674, 1337, 674, 1338, 2333, 674, 1341, 2305, 674, + 1337, 1325, 2335, 674, 3454, 2506, 2334, 674, 674, 3074, + 3451, 674, 674, 3398, 1341, 3399, 674, 1337, 1473, 2338, + + 674, 3437, 1337, 1325, 1338, 1473, 3461, 674, 674, 2337, + 1337, 1341, 1338, 674, 1325, 3455, 2336, 674, 674, 1337, + 674, 1338, 674, 3468, 1341, 1325, 674, 2506, 674, 1337, + 674, 1338, 2306, 1341, 2339, 674, 2341, 674, 2310, 674, + 1337, 674, 1338, 1341, 3463, 674, 1325, 3075, 2706, 674, + 3241, 1325, 3076, 3462, 1341, 2708, 2342, 2532, 674, 3491, + 674, 1325, 2343, 3077, 1338, 3078, 3079, 2344, 3458, 2338, + 1325, 3460, 2345, 1337, 3492, 1338, 1341, 3516, 674, 674, + 1325, 674, 674, 3457, 1337, 1325, 1338, 1341, 3433, 674, + 2706, 3477, 3262, 674, 2346, 2363, 674, 2708, 1341, 2532, + + 674, 3380, 1325, 3466, 674, 1337, 2347, 1338, 2348, 1325, + 1337, 674, 1338, 2961, 2961, 2961, 2962, 3474, 674, 1341, + 1337, 674, 1338, 2421, 1341, 674, 674, 3524, 2349, 1337, + 674, 1338, 2350, 1325, 1341, 2506, 674, 3499, 2351, 1337, + 674, 1338, 3500, 1341, 1337, 674, 1338, 2352, 1283, 674, + 1325, 2353, 3467, 1341, 674, 674, 674, 1325, 1341, 674, + 674, 1337, 2365, 1338, 674, 1325, 3475, 674, 1337, 2357, + 1338, 2354, 2362, 2355, 3530, 2356, 2963, 674, 2358, 2363, + 674, 674, 1341, 674, 674, 2964, 1325, 3470, 674, 674, + 3476, 3482, 1337, 674, 1338, 2308, 1325, 3531, 2706, 1490, + + 3263, 1491, 2965, 1325, 2359, 2708, 1341, 2532, 674, 1337, + 3277, 1338, 674, 3278, 2360, 2361, 1337, 3545, 1338, 2305, + 3546, 3279, 3280, 1341, 1337, 674, 1338, 3281, 2362, 674, + 1341, 3282, 674, 1325, 3465, 2363, 674, 3520, 1341, 674, + 674, 1325, 674, 2306, 674, 1337, 2364, 1338, 1325, 2366, + 2366, 2366, 2366, 2366, 2366, 1337, 2371, 1338, 2367, 1341, + 3472, 674, 1337, 2365, 1338, 674, 3445, 1325, 3469, 1341, + 1473, 674, 1473, 674, 3619, 674, 1341, 1325, 2368, 674, + 1325, 674, 674, 1326, 1326, 1326, 1326, 1326, 1326, 3480, + 674, 674, 1337, 2485, 1338, 1473, 674, 2309, 1392, 1325, + + 1337, 3432, 1338, 2369, 1325, 3473, 1341, 1337, 674, 1338, + 2506, 3487, 674, 3673, 1341, 1337, 674, 1338, 674, 2306, + 674, 1341, 2380, 674, 2370, 2381, 1337, 674, 2373, 2372, + 1325, 674, 674, 3481, 724, 674, 1337, 3493, 1338, 1337, + 1341, 1338, 674, 2513, 674, 2421, 674, 3485, 674, 2377, + 2376, 3661, 674, 1341, 1325, 674, 674, 1392, 1337, 674, + 1338, 1325, 674, 1337, 674, 1338, 674, 2309, 3507, 1325, + 3494, 2378, 1341, 2706, 674, 3264, 2379, 1341, 674, 674, + 2708, 3436, 2532, 674, 1337, 1490, 1338, 1491, 1325, 1337, + 674, 1338, 3704, 1325, 1803, 1803, 1803, 1803, 1341, 3483, + + 674, 2382, 2383, 1341, 674, 674, 3517, 3301, 674, 674, + 1325, 674, 2384, 1337, 674, 1338, 674, 2309, 724, 1325, + 1337, 2423, 1338, 2385, 3502, 3519, 674, 1341, 1337, 674, + 1338, 674, 2309, 674, 1341, 3478, 674, 3479, 1325, 3537, + 674, 2386, 1341, 1325, 674, 3849, 674, 1337, 674, 1338, + 1804, 2388, 1337, 1325, 1338, 1118, 1118, 1118, 1118, 1118, + 2387, 1341, 2473, 674, 674, 2306, 1341, 674, 674, 1337, + 3495, 1338, 674, 1473, 1325, 1325, 3471, 2391, 1337, 2389, + 1338, 2390, 674, 1341, 2308, 674, 3496, 1283, 1490, 674, + 1491, 2392, 1341, 674, 674, 674, 1325, 1337, 674, 1338, + + 2393, 2394, 1337, 1325, 1338, 2526, 2526, 2526, 2526, 2526, + 2526, 1341, 1337, 674, 1338, 674, 1341, 674, 674, 2395, + 3498, 3532, 674, 3533, 1325, 2306, 1341, 1392, 674, 674, + 3407, 2396, 674, 1337, 1337, 1338, 1338, 1325, 3408, 674, + 674, 2398, 3850, 2397, 3538, 3409, 674, 1341, 1341, 674, + 674, 2305, 1325, 674, 674, 1337, 3515, 1338, 1473, 2399, + 1325, 3521, 1337, 1325, 1338, 2400, 3420, 674, 3501, 1341, + 3421, 674, 3851, 674, 3484, 674, 1341, 674, 674, 674, + 2309, 2401, 674, 1337, 1325, 1338, 2308, 3852, 3529, 3534, + 1490, 674, 2402, 2421, 674, 2306, 1337, 2403, 1338, 674, + + 2404, 674, 3522, 674, 2405, 2405, 2405, 2405, 2405, 2405, + 2407, 1337, 674, 1338, 1325, 1392, 674, 3853, 3854, 1337, + 2418, 2419, 2424, 2417, 1338, 1341, 674, 674, 674, 1325, + 3525, 674, 3514, 2420, 3855, 674, 1341, 1325, 674, 674, + 2308, 3443, 674, 1337, 1490, 1338, 1491, 2308, 3856, 674, + 674, 1490, 1337, 1491, 1338, 2422, 674, 1341, 2406, 2425, + 2309, 1325, 3497, 674, 724, 2309, 1341, 724, 674, 2423, + 3518, 2703, 674, 1337, 1473, 1338, 1325, 1326, 1326, 1326, + 1326, 1326, 1326, 674, 1325, 2305, 3857, 1341, 1337, 2430, + 1338, 2305, 3535, 674, 674, 2432, 1337, 1325, 1338, 3523, + + 2433, 2431, 1341, 3858, 674, 674, 3527, 3859, 674, 3503, + 1341, 674, 674, 1490, 2434, 1491, 674, 3528, 674, 1325, + 1337, 2408, 1338, 2527, 2409, 3316, 2410, 1325, 3539, 3860, + 3526, 2411, 2412, 2413, 1341, 1337, 674, 1338, 2414, 674, + 2415, 674, 2416, 1337, 3861, 1338, 1325, 2435, 3862, 1341, + 3536, 674, 2436, 1325, 1325, 674, 1337, 1341, 1338, 674, + 674, 2439, 3540, 674, 2437, 2440, 2052, 2052, 2052, 2052, + 1341, 674, 674, 674, 1062, 1325, 674, 1392, 1337, 3551, + 1338, 2305, 3543, 1325, 3544, 3506, 1337, 3301, 1338, 2305, + 674, 2441, 1341, 674, 674, 674, 674, 2309, 674, 3547, + + 1341, 2423, 674, 2442, 1325, 1337, 674, 2443, 674, 1325, + 3542, 3549, 1337, 1337, 2444, 1338, 674, 3863, 3864, 1341, + 3562, 674, 2053, 674, 2306, 674, 1341, 1341, 674, 2445, + 1325, 674, 674, 674, 1337, 1325, 1338, 2308, 3865, 3866, + 1325, 3541, 2447, 1491, 1338, 2448, 674, 674, 1341, 2449, + 674, 3552, 2450, 3867, 674, 2446, 2451, 3548, 2452, 1325, + 674, 2490, 674, 1337, 1325, 1338, 1473, 1392, 1337, 3558, + 1338, 2455, 1325, 2453, 2454, 674, 3563, 1341, 674, 674, + 3616, 1325, 1341, 674, 674, 674, 1283, 2461, 674, 1337, + 3504, 2456, 2305, 2305, 1337, 3568, 1338, 2457, 1325, 1337, + + 674, 1338, 674, 1341, 2495, 674, 1325, 3505, 1341, 674, + 674, 3569, 3868, 1341, 674, 674, 3869, 1325, 1337, 674, + 1338, 2458, 3557, 1337, 674, 1338, 3564, 3870, 2459, 1283, + 1325, 1337, 1341, 1338, 674, 674, 2306, 1341, 674, 2460, + 1337, 2473, 1338, 674, 3871, 1341, 3560, 674, 674, 1325, + 2462, 674, 2461, 3561, 1341, 674, 674, 1337, 1325, 1338, + 674, 3567, 2506, 3872, 2463, 1337, 674, 1338, 2308, 2465, + 2464, 1341, 1490, 674, 1491, 3571, 1337, 674, 1338, 1341, + 1325, 674, 3873, 1325, 674, 674, 1392, 1283, 2467, 1337, + 1341, 1338, 674, 3874, 1392, 2466, 674, 3566, 3623, 674, + + 1337, 724, 1338, 1341, 2474, 674, 1325, 674, 1337, 674, + 1338, 1325, 3565, 2468, 1341, 2469, 674, 1337, 3877, 1338, + 674, 1325, 1341, 3570, 674, 674, 2309, 2470, 674, 2471, + 3589, 1341, 1325, 674, 2472, 3574, 3573, 674, 3878, 1337, + 674, 1338, 1337, 1325, 1338, 674, 3879, 3590, 674, 2306, + 2475, 1325, 2476, 1341, 3880, 674, 1341, 724, 674, 674, + 724, 674, 674, 1392, 3592, 1337, 1325, 1338, 2687, 1392, + 1337, 3611, 1338, 674, 2490, 724, 674, 3591, 724, 1341, + 1337, 674, 1338, 2480, 1341, 2479, 674, 3593, 3594, 3881, + 674, 1337, 2483, 1338, 1341, 3882, 2481, 2482, 1325, 674, + + 674, 2484, 1337, 1325, 1338, 2485, 2487, 674, 3612, 2486, + 1337, 674, 1338, 2495, 3883, 2306, 1341, 3607, 674, 3613, + 674, 674, 674, 3884, 1341, 1337, 674, 1338, 1325, 674, + 674, 3608, 2489, 1337, 2488, 1338, 1325, 1325, 3614, 1341, + 3885, 674, 3553, 3554, 3615, 674, 674, 1341, 3886, 674, + 2491, 674, 3555, 674, 674, 2309, 2492, 1337, 1325, 1338, + 3556, 2493, 1337, 1325, 1338, 2494, 2503, 2771, 674, 3887, + 3618, 1341, 1337, 674, 1338, 2308, 1341, 674, 674, 1490, + 3626, 1491, 674, 724, 1325, 1325, 1341, 1337, 674, 1338, + 2496, 3627, 674, 3890, 724, 2497, 2498, 1338, 1338, 3621, + + 2309, 1341, 724, 674, 3891, 724, 1325, 674, 3609, 1341, + 1341, 674, 674, 674, 2780, 674, 674, 1337, 3892, 1338, + 3610, 3622, 1337, 724, 1338, 2500, 724, 2506, 1325, 3630, + 3893, 1341, 724, 674, 3678, 1325, 1341, 674, 674, 2499, + 3433, 724, 674, 1337, 1337, 1338, 1338, 2363, 674, 3617, + 1325, 724, 3735, 1473, 2503, 2501, 3798, 1341, 2504, 674, + 674, 2502, 674, 674, 674, 1337, 3894, 1338, 3702, 1325, + 2054, 3242, 2056, 2054, 1325, 724, 3747, 2529, 2057, 1341, + 724, 674, 1325, 724, 2505, 674, 1337, 2510, 1338, 2511, + 2507, 3837, 2508, 2512, 1337, 1325, 1338, 2509, 724, 2309, + + 1341, 1341, 674, 674, 2514, 1325, 674, 2512, 1341, 1337, + 674, 1338, 2515, 1473, 674, 3895, 1490, 3506, 1491, 3896, + 1325, 3572, 674, 1341, 724, 674, 2058, 724, 1337, 674, + 1338, 3875, 1392, 1337, 3624, 1338, 3876, 724, 2517, 3629, + 724, 1337, 1341, 1338, 674, 1325, 2518, 1341, 674, 674, + 724, 3899, 3907, 674, 1337, 1341, 1338, 2519, 2399, 2529, + 1325, 674, 724, 3717, 1337, 3631, 1338, 3909, 1341, 724, + 674, 2520, 724, 724, 674, 3910, 724, 2306, 1341, 1337, + 674, 1338, 3625, 2396, 674, 2366, 2366, 2366, 2366, 2366, + 2366, 2619, 3911, 1341, 2620, 674, 2621, 3638, 2522, 674, + + 724, 2622, 2623, 2624, 1337, 3912, 1338, 2308, 2625, 3913, + 2626, 1490, 2627, 2523, 2529, 3900, 3915, 724, 2524, 1337, + 674, 1338, 3628, 3640, 674, 2405, 2405, 2405, 2405, 2405, + 2405, 1636, 2525, 1341, 724, 674, 3901, 724, 3641, 674, + 1325, 2526, 2526, 2526, 2526, 2526, 2526, 724, 724, 724, + 724, 724, 724, 776, 777, 3633, 1326, 1326, 1326, 1326, + 1326, 1326, 3632, 724, 724, 1283, 724, 724, 1331, 2799, + 2799, 2799, 2799, 724, 3643, 895, 724, 2803, 3634, 2617, + 2308, 2532, 3658, 3486, 1490, 3914, 1491, 2529, 2804, 674, + 2804, 2805, 724, 2805, 2805, 2805, 2805, 2805, 2805, 1530, + + 3916, 1531, 2984, 2984, 2984, 2984, 2984, 2984, 2529, 3639, + 2803, 724, 724, 1533, 3917, 724, 1534, 1535, 1325, 2052, + 2052, 2052, 2052, 3635, 2800, 3636, 724, 1062, 724, 724, + 2806, 724, 3918, 3919, 1326, 1326, 1326, 1326, 1326, 1326, + 3637, 3649, 724, 1283, 724, 724, 1331, 724, 2865, 3040, + 3040, 3040, 3040, 3040, 3040, 3043, 2801, 3651, 3044, 3666, + 3045, 724, 724, 2806, 724, 3046, 3047, 3048, 724, 3650, + 724, 724, 3049, 724, 3050, 2053, 3051, 1530, 3659, 1531, + 3231, 3231, 3231, 3231, 3231, 3231, 3897, 3888, 3898, 3112, + 3113, 1533, 3889, 3114, 1534, 1535, 1807, 3115, 724, 895, + + 3116, 724, 3117, 3041, 3118, 2868, 3119, 724, 3120, 3654, + 724, 3655, 1808, 1808, 1808, 1808, 1808, 1808, 3920, 3642, + 3662, 1806, 724, 1652, 1812, 1653, 2863, 2054, 3244, 2056, + 2054, 2052, 2052, 2052, 2052, 2057, 3921, 3922, 3925, 1062, + 2054, 3242, 2056, 2054, 2067, 2067, 2067, 2067, 2057, 3671, + 3647, 724, 1073, 724, 724, 1818, 724, 1819, 2069, 3248, + 2071, 2069, 2067, 2067, 2067, 2067, 2072, 3648, 724, 1821, + 1073, 724, 1822, 1823, 1807, 3681, 2069, 3254, 2071, 2069, + 2793, 3926, 724, 2058, 2072, 724, 724, 2053, 3927, 724, + 1808, 1808, 1808, 1808, 1808, 1808, 2058, 3653, 3928, 1806, + + 2068, 3660, 1812, 2067, 2067, 2067, 2067, 2069, 3248, 2071, + 2069, 1073, 3929, 2308, 2073, 2072, 3550, 1490, 2068, 1491, + 1325, 724, 674, 3665, 724, 3930, 1274, 1274, 1274, 1274, + 3931, 3932, 2073, 1818, 623, 1819, 1326, 1326, 1326, 1326, + 1326, 1326, 3933, 3936, 3652, 1283, 724, 1821, 1325, 724, + 1822, 1823, 1274, 1274, 1274, 1274, 2532, 3937, 1325, 2068, + 623, 3938, 3939, 2073, 1326, 1326, 1326, 1326, 1326, 1326, + 3923, 3940, 3924, 1283, 1326, 1326, 1326, 1326, 1326, 1326, + 1325, 3941, 1275, 1283, 3414, 3414, 3414, 3414, 3414, 3414, + 3942, 3438, 3438, 3438, 3439, 1325, 2366, 2366, 2366, 2366, + + 2366, 2366, 3934, 3656, 3935, 1283, 3289, 3657, 1275, 3945, + 724, 2405, 2405, 2405, 2405, 2405, 2405, 2532, 3508, 3509, + 1283, 3510, 3943, 2308, 3944, 3511, 3559, 1490, 3512, 1491, + 674, 3664, 674, 3290, 1325, 724, 3513, 2308, 724, 674, + 3595, 1490, 3946, 1491, 724, 3663, 674, 724, 3947, 3950, + 1326, 1326, 1326, 1326, 1326, 1326, 2305, 3951, 3440, 1283, + 3441, 724, 1331, 1325, 724, 674, 3952, 3953, 3414, 3414, + 3414, 3414, 3414, 3414, 3954, 3955, 3359, 3667, 3442, 2526, + 2526, 2526, 2526, 2526, 2526, 3958, 724, 724, 1283, 724, + 724, 724, 3669, 1337, 724, 1338, 2532, 1339, 3294, 2579, + + 3668, 3679, 1558, 3959, 3960, 3644, 724, 1341, 3968, 724, + 1342, 1343, 1325, 3645, 724, 724, 1007, 724, 724, 724, + 3646, 724, 724, 724, 724, 3670, 724, 3688, 1326, 1326, + 1326, 1326, 1326, 1326, 3682, 3672, 3683, 1283, 724, 1652, + 1331, 1653, 2531, 3676, 724, 724, 1652, 724, 1653, 724, + 1007, 724, 724, 3677, 724, 724, 2578, 724, 724, 3684, + 724, 3685, 3967, 2579, 724, 3686, 724, 724, 3680, 724, + 3973, 1337, 1007, 1338, 3687, 1339, 724, 724, 3689, 724, + 724, 724, 3987, 3295, 724, 1341, 3692, 1007, 1342, 1343, + 3575, 1007, 3136, 3576, 3577, 3578, 3579, 3580, 3581, 3582, + + 3691, 724, 3705, 3583, 724, 674, 724, 3584, 3694, 724, + 3585, 3586, 3587, 3588, 3596, 3596, 3203, 1007, 3596, 1325, + 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, + 3596, 3596, 3596, 3596, 3596, 3597, 3597, 3597, 3597, 3597, + 3597, 3596, 3596, 3596, 3598, 3596, 3596, 3599, 3600, 3600, + 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, + 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, + 3600, 3596, 3596, 3596, 3596, 3596, 3596, 3600, 3601, 3600, + 3602, 3600, 3603, 3600, 3600, 3600, 3600, 3600, 3600, 3600, + 3600, 3600, 3604, 3600, 3600, 3605, 3606, 3600, 3600, 3600, + + 3600, 3600, 3600, 3989, 3596, 3596, 3596, 1325, 2555, 724, + 3693, 724, 724, 724, 724, 724, 724, 724, 724, 2908, + 724, 3701, 3690, 1326, 1326, 1326, 1326, 1326, 1326, 1007, + 724, 3696, 1283, 724, 3695, 1331, 3971, 724, 3698, 3697, + 724, 724, 3699, 724, 724, 1007, 724, 3438, 3438, 3438, + 3439, 724, 724, 2531, 724, 724, 724, 1652, 3700, 1653, + 724, 3716, 3714, 724, 724, 3706, 1530, 3703, 1531, 724, + 724, 724, 724, 724, 724, 1007, 4080, 2579, 3707, 3708, + 1533, 1007, 3970, 1534, 1535, 1325, 3710, 724, 3179, 724, + 724, 724, 724, 724, 724, 3725, 724, 3713, 724, 4054, + + 3715, 1326, 1326, 1326, 1326, 1326, 1326, 3709, 724, 1007, + 1283, 724, 2529, 1331, 3674, 724, 3675, 724, 2532, 3988, + 724, 3711, 1558, 3712, 2531, 3718, 724, 3719, 1652, 724, + 1653, 1007, 3962, 724, 3442, 3720, 724, 724, 724, 3722, + 724, 724, 3721, 1007, 1530, 4090, 1531, 1636, 724, 724, + 3620, 724, 724, 2581, 3727, 4118, 724, 724, 1533, 724, + 724, 1534, 1535, 724, 3724, 3723, 2532, 2531, 4119, 3728, + 724, 1652, 3730, 1653, 3729, 724, 724, 3732, 3974, 724, + 724, 1652, 3726, 1653, 3733, 2529, 1007, 2529, 724, 3735, + 724, 724, 1007, 3972, 724, 3731, 3737, 3738, 1007, 3739, + + 3969, 3734, 724, 3740, 3736, 1558, 3741, 724, 724, 724, + 724, 724, 724, 724, 3742, 724, 724, 3745, 724, 3746, + 724, 3748, 3743, 724, 2972, 3750, 3744, 3749, 724, 724, + 2529, 724, 724, 724, 724, 724, 3755, 724, 724, 724, + 3996, 1007, 724, 3753, 3752, 724, 3756, 3758, 3754, 3751, + 724, 724, 724, 724, 724, 724, 3977, 3757, 4152, 3759, + 724, 3760, 724, 724, 3764, 724, 3763, 1007, 724, 3765, + 724, 724, 4153, 724, 3975, 3761, 724, 3762, 3766, 724, + 724, 3768, 1007, 724, 3769, 724, 2531, 724, 724, 724, + 3770, 3771, 1653, 3772, 3767, 724, 3773, 724, 724, 724, + + 724, 3774, 724, 724, 724, 724, 724, 3776, 2531, 4158, + 724, 3777, 1652, 724, 1653, 3779, 3780, 3781, 724, 724, + 3784, 3775, 724, 3568, 724, 3778, 3782, 724, 3785, 2532, + 724, 724, 2531, 724, 3783, 3786, 1652, 724, 1653, 724, + 724, 2687, 724, 3789, 3787, 724, 3981, 3790, 724, 724, + 3791, 3788, 724, 1558, 1007, 1558, 3976, 724, 2666, 724, + 724, 724, 724, 3978, 724, 724, 3793, 724, 724, 1007, + 724, 3792, 3796, 1007, 3797, 2532, 3794, 724, 3799, 3800, + 3979, 724, 1007, 724, 3980, 724, 724, 3795, 724, 3575, + 1007, 1007, 3801, 3802, 3803, 3804, 3805, 3806, 3807, 3814, + + 724, 1558, 3808, 724, 3817, 724, 3809, 724, 724, 3810, + 3811, 3812, 3813, 4004, 1007, 3816, 3815, 3818, 3819, 724, + 724, 2531, 724, 724, 3820, 1652, 3833, 1653, 3596, 3596, + 4040, 1007, 3596, 1325, 3596, 3596, 3596, 3596, 3596, 3596, + 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3597, + 3597, 3597, 3597, 3597, 3597, 3596, 3596, 3596, 3598, 3596, + 3596, 3599, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, + 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, + 3821, 3821, 3821, 3821, 3821, 3596, 3596, 3596, 3596, 3596, + 3596, 3821, 3822, 3821, 3823, 3821, 3821, 3821, 3821, 3821, + + 3821, 3821, 3821, 3821, 3821, 3821, 3824, 3821, 3821, 3825, + 3826, 3821, 3821, 3821, 3821, 3821, 3821, 3982, 3596, 3596, + 3596, 3827, 724, 1007, 724, 724, 3829, 724, 724, 2764, + 3832, 724, 2764, 724, 4170, 3828, 724, 3834, 3830, 724, + 2784, 724, 724, 2784, 724, 724, 3835, 3831, 724, 3836, + 724, 724, 3669, 724, 724, 1007, 4235, 2703, 3173, 2579, + 724, 3838, 3840, 724, 3839, 724, 724, 1807, 724, 724, + 3438, 3438, 3438, 3439, 724, 724, 3842, 724, 724, 3841, + 3904, 3844, 3846, 3845, 724, 2529, 724, 724, 724, 724, + 3756, 3848, 1806, 3983, 3984, 4015, 3985, 1007, 3788, 3847, + + 3986, 3757, 852, 852, 852, 852, 3902, 3902, 3902, 3902, + 2796, 2797, 895, 2796, 724, 907, 1007, 724, 895, 2799, + 2799, 2799, 2799, 3990, 1807, 895, 724, 3948, 4020, 724, + 3756, 3905, 1007, 2881, 2890, 2529, 3956, 3843, 724, 3675, + 2805, 3757, 2805, 2805, 2805, 2805, 2805, 2805, 2805, 1806, + 2805, 2805, 2805, 2805, 2805, 2805, 4249, 3442, 1806, 1806, + 2891, 3906, 2894, 1007, 853, 854, 855, 856, 857, 2865, + 1007, 858, 3961, 2905, 2800, 859, 2863, 1007, 860, 4301, + 2863, 861, 1007, 3179, 1007, 1806, 1007, 1806, 1007, 3994, + 3992, 3991, 2909, 2801, 1007, 4057, 2798, 2866, 1806, 2793, + + 4090, 3993, 3957, 2005, 1007, 1007, 2801, 3963, 3963, 3963, + 3964, 3995, 1007, 2892, 1007, 1007, 4011, 1806, 4002, 3998, + 3908, 3575, 4007, 3997, 3801, 3802, 3803, 3949, 3805, 3806, + 3807, 2863, 2863, 1007, 3808, 4001, 4399, 4012, 3809, 1007, + 1007, 3810, 3811, 3812, 3813, 1807, 3999, 1007, 4000, 2865, + 3203, 1007, 4003, 1007, 4013, 4023, 4400, 1007, 2930, 4005, + 4037, 1808, 1808, 1808, 1808, 1808, 1808, 1007, 2863, 3962, + 1806, 4008, 4006, 1812, 3965, 1007, 1007, 4016, 4021, 3966, + 3966, 1007, 4033, 1806, 1007, 3966, 1007, 4009, 4010, 2866, + 1007, 4048, 2868, 4014, 4034, 2005, 4035, 1007, 4017, 4017, + + 4017, 4018, 4036, 1007, 1818, 1007, 2926, 1007, 4022, 2868, + 4045, 1007, 2867, 4039, 2005, 4403, 1007, 2862, 1821, 4052, + 4024, 1822, 1823, 1807, 4041, 1007, 4047, 1007, 4025, 1007, + 1007, 1007, 2868, 4053, 4049, 4026, 1007, 4069, 2868, 1808, + 1808, 1808, 1808, 1808, 1808, 1007, 4106, 4059, 1806, 4063, + 1007, 1812, 4038, 4038, 4038, 4038, 4038, 4038, 4046, 4058, + 1007, 4042, 2867, 4050, 2005, 4051, 1007, 4043, 2865, 4055, + 1007, 1007, 2865, 4056, 4065, 4070, 1007, 4075, 4071, 4078, + 1007, 1007, 1818, 2868, 1819, 4019, 1007, 1007, 4062, 1007, + 4068, 4067, 4060, 2975, 1007, 4081, 1821, 1007, 1007, 1822, + + 1823, 3963, 3963, 3963, 3964, 4061, 1007, 1007, 4044, 4128, + 4072, 2866, 4073, 1007, 4064, 2867, 1007, 2005, 1007, 1007, + 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2962, 1007, 1007, + 4077, 4083, 4079, 1007, 4093, 4074, 4076, 2990, 1007, 4066, + 2865, 4084, 1007, 4089, 1007, 4409, 2868, 1007, 1007, 1007, + 2866, 2868, 1806, 1007, 2867, 4091, 2005, 4092, 1007, 4104, + 1007, 4082, 1806, 4027, 4028, 1007, 4107, 1007, 3965, 4085, + 4085, 4085, 4086, 3966, 3966, 1807, 4029, 1007, 4108, 3966, + 4030, 4094, 2866, 4031, 4032, 2867, 2867, 2005, 2005, 1007, + 1007, 2984, 2984, 2984, 2984, 2984, 2984, 4110, 4101, 2865, + + 1806, 1007, 4095, 1007, 1007, 4105, 1007, 1007, 4120, 2965, + 1007, 4122, 4109, 2965, 4096, 3438, 3438, 3438, 4097, 2866, + 4102, 4113, 1007, 4103, 1007, 2005, 1007, 1007, 4112, 4114, + 1007, 4115, 2380, 4116, 4117, 3005, 1007, 3013, 3017, 2866, + 4126, 4125, 1007, 4123, 2868, 2005, 1007, 1007, 4087, 1007, + 4143, 1007, 1007, 2868, 3054, 4111, 4088, 4124, 1007, 2865, + 1806, 4121, 1806, 1806, 1007, 1007, 4129, 1007, 4410, 4134, + 2863, 3015, 1007, 4127, 4130, 4130, 4130, 4131, 1007, 1806, + 2863, 1007, 4098, 2926, 4099, 1007, 4135, 4136, 1007, 4138, + 1007, 1007, 1007, 1007, 4141, 1007, 1007, 4133, 4142, 4144, + + 4411, 4137, 4100, 4140, 4139, 1007, 1007, 4145, 1007, 4146, + 4147, 2866, 1807, 1007, 2865, 2867, 4155, 2005, 2865, 1007, + 1007, 4149, 1007, 4148, 1007, 1007, 1007, 4150, 3040, 3040, + 3040, 3040, 3040, 3040, 4151, 1007, 1007, 1806, 4159, 1007, + 4161, 1007, 4163, 4154, 1007, 4167, 1007, 1007, 1007, 2868, + 2868, 4160, 4162, 4156, 2865, 4157, 3061, 4169, 1007, 4175, + 1007, 4132, 1007, 4182, 4186, 4172, 2865, 1007, 4177, 1007, + 4166, 2868, 2866, 2862, 1007, 4171, 2867, 4174, 2005, 1007, + 1007, 1806, 4180, 1007, 4178, 1007, 4173, 4179, 1007, 4181, + 4183, 3074, 1007, 1007, 1007, 4164, 2866, 3081, 4168, 4185, + + 4187, 1007, 2005, 4184, 1007, 1007, 1007, 2868, 4189, 4190, + 4188, 3085, 1007, 4194, 3086, 1007, 1806, 2868, 4196, 4165, + 2866, 1007, 1806, 4198, 2867, 4197, 2005, 4206, 1007, 1007, + 4176, 1007, 4199, 4202, 1007, 4195, 1806, 1007, 4200, 1806, + 1007, 1007, 2865, 4201, 4204, 4212, 1007, 4214, 4216, 1007, + 1007, 2868, 3102, 3103, 4205, 4209, 4203, 4208, 2862, 2867, + 1007, 2005, 4191, 1007, 3107, 4210, 1007, 4217, 2863, 4218, + 1007, 4219, 4220, 4221, 3111, 4192, 1007, 1806, 1806, 1007, + 4207, 4260, 4211, 4228, 1007, 4193, 1007, 4231, 1007, 1806, + 1007, 4222, 4223, 1007, 4224, 1007, 2862, 1007, 4225, 1806, + + 4215, 4226, 1007, 4236, 1007, 3121, 4230, 2863, 1007, 4227, + 4232, 4213, 4233, 4229, 1007, 1007, 4241, 1007, 1007, 4234, + 2868, 4240, 1007, 2865, 1007, 2863, 4245, 1007, 4237, 4258, + 1806, 1007, 1007, 1007, 1007, 4248, 4242, 1007, 4246, 4243, + 1007, 4244, 1007, 1007, 1007, 1007, 4252, 1007, 4247, 4250, + 4256, 4251, 4253, 3139, 1007, 1007, 4238, 3140, 4257, 1007, + 4254, 4268, 1007, 4269, 1007, 1007, 4259, 1007, 4261, 4239, + 4272, 4255, 4264, 1007, 4270, 2868, 4262, 4263, 1806, 1007, + 4282, 1007, 1806, 1007, 4265, 2868, 1007, 4273, 4266, 1007, + 4267, 4276, 4275, 1007, 4278, 4274, 4277, 4271, 1007, 1007, + + 1007, 4279, 3162, 1007, 2866, 1007, 1007, 4281, 4280, 1007, + 2005, 4283, 1007, 4284, 4285, 4286, 1007, 1007, 1007, 4292, + 4288, 4302, 4304, 1007, 3181, 1007, 1007, 1806, 1007, 4289, + 4290, 4287, 2866, 1007, 1007, 4291, 2867, 4294, 2005, 2865, + 1007, 4295, 4296, 4300, 4318, 1007, 3179, 1007, 4306, 1806, + 1007, 4297, 4298, 4320, 2868, 1007, 1007, 1007, 2866, 4299, + 3173, 4307, 2867, 3187, 2005, 4312, 1007, 4308, 1007, 4310, + 4311, 1007, 4325, 4327, 4309, 1007, 3136, 4323, 4313, 1007, + 4314, 1007, 2862, 4303, 4316, 4329, 1007, 4305, 1806, 1007, + 1007, 1007, 1007, 2862, 1007, 4315, 4293, 4319, 4331, 1007, + + 4317, 1007, 4332, 4336, 4324, 1007, 4321, 1007, 4328, 3206, + 1007, 4333, 4335, 4338, 1007, 2865, 4334, 1007, 4339, 2868, + 1007, 1007, 4354, 1007, 2862, 4357, 4412, 1007, 4430, 4322, + 1007, 1007, 4360, 1007, 1806, 4373, 1007, 4326, 4356, 4355, + 4358, 4359, 1007, 1007, 2863, 4419, 1007, 1007, 724, 4374, + 4431, 1007, 1007, 2866, 4361, 1007, 4362, 4363, 4382, 2005, + 4375, 1007, 4330, 1007, 1007, 2865, 4390, 1007, 4397, 4213, + 4383, 4432, 4376, 4337, 4340, 4388, 1007, 4341, 4342, 4343, + 4344, 4345, 4346, 4347, 4392, 1007, 1007, 4348, 1007, 4391, + 4439, 4349, 4440, 4389, 4350, 4351, 4352, 4353, 3596, 3596, + + 4441, 1007, 3596, 1807, 3596, 3596, 3596, 3596, 3596, 3596, + 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 4364, + 4364, 4364, 4364, 4364, 4364, 3596, 3596, 3596, 4365, 3596, + 3596, 4366, 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, + 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, + 4367, 4367, 4367, 4367, 4367, 3596, 3596, 3596, 3596, 3596, + 3596, 4367, 4368, 4367, 4369, 4367, 4367, 4367, 4367, 4367, + 4367, 4367, 4367, 4367, 4367, 4367, 4370, 4367, 4367, 4371, + 4372, 4367, 4367, 4367, 4367, 4367, 4367, 4377, 3596, 3596, + 3596, 4384, 4384, 4384, 4385, 1007, 4387, 3234, 4378, 4393, + + 4379, 4380, 4381, 1007, 4394, 3203, 1007, 1807, 2865, 4395, + 2863, 3236, 4396, 4402, 2270, 4424, 1007, 4398, 1007, 3804, + 4413, 3804, 1806, 3231, 3231, 3231, 3231, 3231, 3231, 1007, + 724, 2868, 1806, 724, 2048, 2049, 1806, 2052, 2052, 2052, + 2052, 2062, 2063, 2062, 2063, 1062, 2112, 4442, 2112, 4401, + 2052, 2052, 2052, 2052, 724, 2112, 4423, 724, 1062, 3804, + 4443, 1558, 4406, 4444, 1007, 724, 1007, 4445, 724, 4407, + 4425, 4446, 2067, 2067, 2067, 2067, 3804, 2116, 4386, 4408, + 1073, 2067, 2067, 2067, 2067, 2121, 4447, 1558, 4448, 1073, + 3644, 724, 4449, 2053, 724, 4417, 4450, 4453, 3645, 3438, + + 3438, 3438, 3439, 4426, 4427, 3646, 2053, 4404, 724, 4428, + 4451, 724, 3287, 4405, 4414, 4452, 4420, 1558, 1138, 1331, + 4415, 724, 1331, 4416, 724, 4421, 2116, 2112, 2068, 2112, + 4470, 4464, 4473, 1331, 4429, 4422, 2112, 2068, 4433, 4463, + 3323, 3419, 1343, 1343, 4434, 4466, 3438, 3438, 3438, 3439, + 1343, 4435, 4458, 4436, 4465, 4437, 1325, 4438, 4467, 3527, + 4460, 1343, 4478, 4484, 2529, 1343, 3843, 724, 3675, 4468, + 4469, 1325, 1326, 1326, 1326, 1326, 1326, 1326, 4459, 4455, + 4485, 1283, 4471, 1392, 1343, 4475, 4418, 1326, 1326, 1326, + 1326, 1326, 1326, 2461, 4476, 4474, 1283, 4477, 2309, 1343, + + 1343, 4472, 1343, 1343, 1343, 4479, 3315, 3316, 4480, 1343, + 3319, 2305, 1343, 3440, 1343, 3441, 4483, 4484, 1343, 4481, + 4482, 1343, 4486, 3561, 1343, 4456, 1343, 4487, 4488, 4489, + 4490, 1283, 1283, 3442, 2306, 1283, 4491, 4492, 4493, 1343, + 4494, 4495, 4496, 4497, 4498, 4499, 4500, 4496, 4501, 4457, + 1325, 4502, 4503, 4504, 4505, 4506, 4507, 4508, 4509, 4510, + 4511, 4512, 4514, 1262, 4516, 4517, 1326, 1326, 1326, 1326, + 1326, 1326, 4518, 2272, 3363, 1283, 4515, 4513, 1331, 1265, + 1266, 4521, 3366, 1325, 4524, 4525, 4526, 4527, 1343, 1325, + 4530, 1392, 1343, 1343, 4533, 4528, 4529, 4532, 4531, 1343, + + 1343, 4536, 4535, 1343, 3395, 4537, 4534, 1343, 1283, 1337, + 1343, 1338, 3381, 1339, 1283, 2309, 4461, 1343, 1343, 4538, + 1343, 3396, 1273, 1341, 1343, 4539, 1342, 1343, 1325, 4540, + 4541, 1343, 4556, 4542, 1343, 2309, 4564, 4543, 4519, 1343, + 1343, 1343, 4520, 1343, 1326, 1326, 1326, 1326, 1326, 1326, + 1343, 4523, 4546, 1283, 1392, 4545, 1331, 1473, 1343, 4522, + 4549, 2485, 4544, 4547, 2305, 1343, 4550, 3364, 1343, 4548, + 1343, 1343, 4559, 1343, 4554, 1392, 1343, 1343, 2308, 1343, + 4529, 2309, 1490, 4557, 1491, 2306, 1343, 1337, 1343, 1338, + 1343, 1339, 4552, 4551, 1343, 2305, 2308, 1325, 1343, 4578, + + 1490, 1341, 4553, 4555, 1342, 4462, 4569, 2306, 1343, 4558, + 1343, 1343, 1343, 3414, 3414, 3414, 3414, 3414, 3414, 2309, + 4579, 1343, 1283, 4580, 1343, 4560, 4560, 4560, 4561, 4565, + 4565, 4565, 4566, 4570, 4574, 1343, 4575, 4582, 1343, 1343, + 4571, 1343, 1343, 4577, 4562, 4562, 4562, 4562, 4562, 4562, + 2309, 3438, 3438, 3438, 3438, 1343, 4572, 4572, 4572, 4572, + 4572, 4572, 4576, 1343, 2308, 4596, 1343, 4584, 1490, 1343, + 1491, 3438, 3438, 3438, 3439, 4583, 4594, 4600, 4606, 1343, + 4595, 1343, 4597, 3534, 4567, 4563, 4598, 4605, 1343, 2306, + 1490, 4609, 1491, 4599, 1343, 4608, 2485, 1343, 1343, 1283, + + 1343, 1343, 1343, 4607, 1343, 1343, 2305, 1343, 4612, 1343, + 1343, 4613, 4624, 4639, 4610, 4573, 4568, 1343, 4586, 4587, + 4588, 1343, 4611, 4589, 1343, 4602, 4590, 4591, 4616, 4603, + 4601, 4604, 2309, 1343, 4592, 4618, 1343, 1343, 4581, 1343, + 1343, 2305, 4619, 4593, 4602, 4617, 4621, 2306, 4614, 2309, + 1343, 4620, 1343, 4623, 1343, 4615, 1343, 1343, 4581, 2306, + 4625, 1343, 4622, 4627, 1343, 4640, 1343, 4626, 1343, 4628, + 1343, 1343, 4629, 4630, 1343, 1343, 1343, 1343, 4631, 2305, + 1343, 1343, 4632, 4633, 4634, 1343, 1343, 4636, 4633, 1343, + 2309, 4635, 4641, 1343, 1343, 1343, 2363, 4637, 4642, 4643, + + 4644, 4645, 4646, 1343, 2309, 4647, 4648, 4638, 1343, 1343, + 1343, 1343, 4649, 1343, 1343, 1343, 1343, 1343, 2308, 4651, + 1343, 1392, 1490, 1343, 1491, 2485, 4652, 4654, 2308, 1343, + 4657, 1392, 1490, 4650, 4656, 4662, 1343, 4653, 4655, 4658, + 1343, 4660, 4659, 1343, 1343, 4661, 1343, 4663, 4664, 1343, + 1343, 1343, 4665, 4666, 4667, 2309, 4668, 1343, 1343, 4669, + 1343, 4670, 1343, 4672, 1392, 4675, 3529, 1343, 4671, 2308, + 1343, 1343, 1343, 4673, 4678, 1491, 4676, 4681, 4680, 1343, + 1343, 4677, 3506, 1343, 1343, 1343, 4674, 1343, 4679, 4682, + 4683, 4685, 4684, 1343, 1343, 2305, 1343, 4686, 1343, 2309, + + 1343, 1343, 4687, 4689, 1343, 1343, 1490, 1343, 1491, 1343, + 1343, 4691, 1343, 4688, 1343, 3381, 4692, 1343, 1343, 1343, + 4690, 1343, 4696, 4694, 4695, 4697, 4693, 1343, 2309, 1343, + 1392, 4700, 4699, 1343, 1343, 4703, 2309, 1343, 4701, 4707, + 4702, 1343, 1343, 1343, 4698, 4704, 1343, 1343, 4706, 1343, + 1343, 4711, 2309, 1343, 1343, 2308, 4712, 1343, 4705, 1490, + 4708, 1491, 1473, 1343, 3568, 4709, 1343, 4722, 4723, 1490, + 1343, 1491, 4724, 4725, 1343, 1343, 4744, 1343, 1343, 4726, + 1343, 4710, 2306, 1343, 4713, 4714, 1343, 1343, 4789, 1283, + 4602, 4715, 1343, 1392, 4745, 4716, 4717, 2309, 1343, 4735, + + 4718, 4719, 4720, 4727, 4758, 4721, 4728, 4729, 4759, 4730, + 4737, 2305, 1343, 4736, 4749, 4740, 1343, 4738, 4763, 1343, + 4731, 4732, 4733, 4734, 4739, 4746, 1343, 4741, 4742, 1343, + 4750, 4743, 1343, 1343, 1473, 4755, 2305, 1343, 4747, 1325, + 4751, 4748, 4752, 1343, 1343, 2309, 1490, 1392, 1491, 1343, + 1343, 1343, 4741, 4753, 4756, 4756, 1392, 1343, 4754, 4757, + 1343, 1343, 2363, 4762, 1283, 2305, 1343, 4760, 1343, 1343, + 4761, 2306, 1473, 2308, 4767, 1343, 1343, 1490, 2309, 1491, + 1343, 1392, 4765, 1343, 4766, 4768, 1473, 1343, 1343, 1343, + 4784, 4786, 4787, 4785, 4788, 4764, 1343, 1343, 1343, 1343, + + 1343, 1343, 724, 724, 724, 724, 1343, 724, 724, 724, + 724, 1343, 4791, 724, 4794, 724, 4812, 724, 724, 4795, + 724, 4792, 724, 724, 724, 724, 4793, 724, 724, 724, + 4796, 4797, 724, 5006, 724, 724, 3620, 4804, 4798, 724, + 724, 2532, 724, 5015, 724, 724, 4799, 724, 724, 4800, + 724, 5016, 724, 724, 5017, 724, 2532, 724, 4802, 4805, + 724, 4769, 1343, 4770, 4770, 4803, 4801, 4770, 4771, 4770, + 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4772, 4770, + 4770, 4770, 4770, 4770, 4773, 4773, 4773, 4773, 4773, 4773, + 4770, 4770, 4770, 4774, 4770, 4770, 4775, 4776, 4776, 4776, + + 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, + 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, + 4770, 4770, 4770, 4770, 4770, 4770, 4777, 4778, 4776, 4779, + 4776, 4780, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, + 4776, 4781, 4776, 4776, 4782, 4783, 4776, 4776, 4776, 4776, + 4776, 4776, 4770, 4770, 4770, 4770, 4768, 4533, 724, 724, + 724, 5018, 4809, 724, 724, 724, 2529, 724, 724, 5027, + 724, 4806, 4821, 724, 2687, 724, 4807, 724, 4810, 5028, + 4808, 2531, 724, 3860, 724, 1652, 724, 1653, 2531, 724, + 724, 724, 1652, 4814, 4813, 724, 4811, 724, 724, 5036, + + 2532, 2529, 724, 724, 4817, 724, 5037, 724, 4816, 4815, + 724, 4818, 724, 4906, 724, 724, 5038, 724, 1473, 724, + 724, 2532, 724, 1636, 724, 4560, 4560, 4560, 4561, 5039, + 724, 724, 4769, 1343, 1325, 724, 4820, 5040, 4819, 4565, + 4565, 4565, 4566, 4890, 4562, 4562, 4562, 4562, 4562, 4562, + 1326, 1326, 1326, 1326, 1326, 1326, 724, 5049, 724, 1283, + 724, 724, 1331, 724, 4823, 724, 4572, 4572, 4572, 4572, + 4572, 4572, 724, 4822, 2532, 724, 724, 724, 724, 5050, + 724, 724, 724, 724, 4825, 4563, 724, 724, 4827, 724, + 5045, 724, 4826, 1530, 4567, 1531, 724, 5046, 4931, 724, + + 724, 724, 4828, 4579, 724, 724, 4580, 1533, 724, 724, + 1534, 1535, 724, 724, 724, 4829, 2531, 724, 4528, 1325, + 1652, 5057, 1653, 724, 724, 4824, 4568, 4834, 724, 724, + 4600, 5041, 5059, 724, 5041, 1326, 1326, 1326, 1326, 1326, + 1326, 4830, 4985, 724, 1283, 724, 4832, 1331, 724, 724, + 4833, 5042, 724, 3763, 724, 724, 4831, 724, 4612, 4836, + 724, 5043, 4835, 1652, 724, 1653, 4837, 724, 4842, 724, + 724, 4841, 724, 724, 4844, 724, 4846, 1558, 1530, 2687, + 1531, 724, 4790, 4601, 4847, 724, 4843, 5060, 724, 2529, + 724, 724, 1533, 724, 724, 1534, 1535, 4894, 5061, 724, + + 5062, 4838, 2532,11275, 724, 4839, 724, 4840, 2532, 724, + 4845, 724, 724, 724, 5063, 724, 724, 724, 724, 2529, + 724, 724, 4838, 724, 4851, 724, 4849, 2771, 724, 4853, + 724, 4848, 724, 4850, 724, 724, 4854, 724, 724, 724, + 724, 724, 4856, 724, 724, 724, 724, 4858, 4852, 724, + 724, 4859, 4855, 724, 724, 724, 4857, 4860, 724, 724, + 724, 5064, 724, 724, 724, 724, 4862, 724, 724, 724, + 724, 3885, 4861, 4988, 724, 724, 4863, 4864, 4866, 2529, + 724, 4865, 724, 724, 5065, 4867, 724, 724, 724, 4868, + 724, 724, 5066, 724, 4868, 724, 2532, 4869, 724, 724, + + 5047, 5048, 5067, 4870, 724, 2579, 4872, 724, 4876, 4877, + 4871, 5068, 724, 724, 724, 4875, 4873, 724, 4874, 724, + 5071, 724, 724, 4878, 724, 4879, 724, 724, 724, 4881, + 724, 724, 724, 724, 724, 724, 724, 5041, 4880, 724, + 5041, 2532, 4884, 5079, 4882, 724, 724, 4886, 4883, 2531, + 724, 724, 724, 1652, 4887, 1653, 724, 724, 724, 5082, + 5085, 724, 2531, 724, 4885, 4888, 1652, 724, 4891, 724, + 724, 2687, 724, 4889, 724, 724, 724, 724, 5086, 5087, + 4892, 724, 4897, 4893, 4895, 724, 724, 724, 4678, 4896, + 724, 724, 724, 4898, 4899, 4900, 724, 724, 5012, 2811, + + 724, 2532, 724, 4902, 724, 724, 4905, 5088, 724, 724, + 724, 724, 4901, 724, 4904, 724, 724, 4903, 724, 3758, + 724, 724, 2531, 724, 724, 4910, 4908, 4907, 1653, 724, + 724, 4911, 5090, 724, 724, 724, 724, 3735, 724, 4909, + 5093, 724, 724, 4912, 4913, 4914, 724, 724, 724, 724, + 2532, 724, 4916, 724, 724, 724, 5094, 4917, 5091, 724, + 724, 4918, 2532, 724, 724, 4915, 4919, 724, 724, 724, + 5095, 2529, 724, 4920, 724, 724, 724, 5092, 5096, 4921, + 724, 724, 4922, 1652, 724, 1653, 724, 724, 724, 724, + 5097, 724, 724, 724, 5098, 724, 4926, 724, 4923, 4925, + + 724, 3620, 724, 724, 5100, 4928, 724, 724, 724, 4924, + 724, 724, 724, 4722, 4929, 5101, 5102, 724, 4927, 4930, + 2532, 4932, 724, 4693, 724, 4934, 724, 724, 4933, 724, + 724, 724, 724, 2848, 5119, 4936, 724, 724, 4935, 2532, + 724, 724, 724, 5041, 724, 4940, 5041, 4937, 2531, 724, + 4957, 4938, 1652, 724, 1653, 724, 5120, 4939, 724, 724, + 724, 4941, 724, 1636, 724, 724, 4942, 724, 5121, 724, + 1652, 724, 1653, 4944, 724, 724, 724, 4956, 5120, 4955, + 724, 724, 4943, 4945, 724, 4961, 724, 724, 4959, 724, + 724,11275, 4962, 724,11275, 724, 4958, 2529, 724, 4963, + + 724, 4964, 4960, 4968, 724, 5019, 5019, 5019, 5019, 724, + 724, 4946, 4947, 4965, 5122, 724, 724, 4838, 4948, 4969, + 5123, 724, 4949, 4950, 2532, 724, 4970, 4951, 4952, 4953, + 724, 4966, 4954, 4973, 4967, 5126, 4974, 5127, 724, 4971, + 1636, 724, 4972, 724, 724, 4975, 5128, 4976, 724, 724, + 724, 1652, 5149, 1653, 4979, 724, 5080, 4980, 4977, 4768, + 5150, 4981, 724, 4978, 2532, 724, 4982, 724, 724, 2529, + 724, 724, 724, 724, 724, 4987, 724, 724, 724, 724, + 724, 4980, 4983, 724, 2579, 4965, 724, 5187, 4986, 4984, + 2529, 724, 724, 5325, 724, 724, 1636, 724, 2531, 724, + + 724, 4989, 1652, 724, 1653, 1636, 724, 724, 724, 2532, + 724, 5011, 724, 4990, 4991, 724, 724, 724, 724, 1007, + 724, 724, 724, 724, 5002, 724, 5041, 5000, 724, 5041, + 5004, 5001, 5219, 724, 724, 4992, 4770, 4770, 5010, 724, + 4770, 4771, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, + 4770, 4772, 4770, 4770, 4770, 4770, 4770, 4773, 4773, 4773, + 4773, 4773, 4773, 4770, 4770, 4770, 4774, 4770, 4770, 4775, + 4993, 4993, 4993, 4993, 4993, 4993, 4993, 4993, 4993, 4993, + 4993, 4993, 4993, 4993, 4993, 4993, 4993, 4993, 4993, 4993, + 4993, 4993, 4993, 4770, 4770, 4770, 4770, 4770, 4770, 4994, + + 4995, 4993, 4996, 4993, 4993, 4993, 4993, 4993, 4993, 4993, + 4993, 4993, 4993, 4993, 4997, 4993, 4993, 4998, 4999, 4993, + 4993, 4993, 4993, 4993, 4993, 4770, 4770, 4770, 4770, 724, + 4768, 724, 724, 724, 724, 2531, 724, 724, 724, 1652, + 3890, 5007, 724, 5099, 5003, 5005, 724, 724, 5099, 5399, + 2531, 724, 724, 5008, 1652,11275, 5013, 724,11275, 5009, + 5473, 5021, 5022, 5014, 5019, 5019, 5019, 5020, 5023, 5029, + 11275, 3904, 3983,11275, 5047, 5048, 5030, 5024, 5025, 5026, + 5031, 5032, 5051, 5058, 1007, 5033, 5034, 5035, 724, 5052, + 724, 724, 1636, 724, 5053, 724, 724, 1806, 5054, 5055, + + 5056,11275,11275, 5089,11275,11275, 4992,11275,11275,11275, + 11275,11275,11275, 5141, 3986, 1007, 5069, 5070, 3902, 3902, + 3902, 3902, 3905, 1007, 895, 5081, 5081, 5081, 5081, 5081, + 5081, 5233, 5451, 5234, 5072, 5083, 5083, 5083, 5083, 1806, + 11275, 895, 5073,11275,11275,11275,11275,11275,11275,11275, + 11275,11275, 3906,11275,11275,11275,11275, 5041,11275,11275, + 5041,11275,11275, 5082,11275,11275, 5075,11275,11275,11275, + 11275,11275,11275, 1807, 5074,11275, 5077,11275,11275,11275, + 11275, 5077,11275, 1007, 1807, 724, 5170, 5576, 5076, 5078, + 724, 3963, 3963, 3963, 3963, 5577, 1007, 1007, 1806, 1007, + + 4966, 1007, 1007, 4967, 1007, 2801, 5133, 4011, 5118, 1806, + 5106, 3963, 3963, 3963, 3964, 5283, 5104, 5284, 5105, 5103, + 5109, 5139, 5084, 5108, 5130, 5130, 5130, 5131, 5108, 5580, + 1007, 5107, 1806, 5113, 5111, 1007, 5140, 5135, 5136, 1806, + 5110, 5112, 1007, 1007, 5116, 5115, 5125, 5134, 5114, 5124, + 5115, 2868, 5117, 1807, 3963, 3963, 3963, 3964, 5137, 1007, + 1007, 1007, 1007, 1007, 5142, 1007, 1007, 1007, 5535, 1808, + 1808, 1808, 1808, 1808, 1808, 5138, 5157, 5143, 1806, 1007, + 5204, 1812, 1007, 1007, 1007, 1007, 5205, 1007, 1007, 5385, + 1007, 2868, 1007, 1007, 5144, 5148, 5132, 5132, 5145, 5589, + + 1007, 5147, 5132, 1007, 5146, 1007, 5152, 5321, 1007, 5322, + 1007, 1007, 1818, 1007, 1819, 1007, 5166, 5590, 3961, 5153, + 1007, 1007, 5151, 1007, 1007, 5377, 1821, 1007, 1007, 1822, + 1823, 5591, 1007, 2868, 1007, 1007, 1007, 4528, 1807, 1007, + 5154, 1007, 4528, 5332, 5541, 1007, 1007, 5156, 2868, 5155, + 5158, 1007, 5403, 1007, 1808, 1808, 1808, 1808, 1808, 1808, + 2868, 3179, 1007, 1806, 1007, 5594, 1812, 1007, 5160, 1007, + 1007, 5620, 1007, 1007, 5161, 1007, 5159, 1007, 1007, 5041, + 1007, 4012, 5041, 1007, 2868, 1007, 5162, 2865, 1007, 1007, + 5165, 5163, 5181, 5164, 1007, 1007, 2862, 1818, 1007, 1819, + + 1007, 5129, 5167, 1007, 1007, 1007, 1806, 5177, 5168, 1007, + 1007, 1821, 1007, 5621, 1822, 1823, 1007, 1007, 5169, 5171, + 2866, 1007,11275, 5173, 5172, 5180, 2005, 5636, 1007, 5174, + 5174, 5174, 5175, 1007, 5639, 5640, 1007, 2868, 1007, 5176, + 5178, 1007, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4018, + 1007, 1007, 1007, 5196, 4037, 1007, 1007, 1007, 3179, 5184, + 5188, 5641, 1007, 2863, 1007, 1007, 3173, 1007, 5182, 5642, + 5185, 1007, 5183, 1007, 1806, 5193, 1007, 2866, 1007, 1806, + 5189, 2867, 1007, 2005, 1007, 5208, 1007, 1007, 5194, 1007, + 1007, 1007, 5186, 5195, 2865, 1007, 5643, 5190, 1007, 1007, + + 2868, 5191, 2866, 1007, 1007, 1007, 2867, 5644, 5192, 2863, + 1007, 1007, 1807, 4041, 1007, 2863, 1007, 5197, 5199, 1007, + 1007, 1007, 4045, 5198, 5201, 1007, 1007, 4052, 4038, 4038, + 4038, 4038, 4038, 4038, 1007, 1007, 1007, 1806, 1806, 1007, + 1007, 1007, 5215, 1007, 5200, 5221, 5225, 1806, 1007, 5207, + 5202, 3173, 1806, 5646, 5206, 1007, 5203, 2868, 1007, 5210, + 1007, 5209, 2865, 1007, 4560, 4560, 4560, 5212, 4063, 2868, + 1007, 1007, 5647, 1007, 5218, 1007, 1007, 5211, 1007, 4565, + 4565, 4565, 5217, 5213, 5213, 5213, 5213, 5213, 5213, 5214, + 1007, 1007, 5216, 1806, 4065, 1007, 1007, 4044, 5226, 5349, + + 1007, 5350, 5650, 1007, 1007, 1007, 1007, 5220, 1007, 1007, + 5222, 1007, 5223, 5223, 5223, 5223, 5223, 5223, 4069, 1806, + 2868, 4071, 5651, 1331, 4563, 1007, 2961, 2961, 2961, 2962, + 1007, 1007, 1007, 1007, 4567, 5228, 1007, 1007, 1007, 5229, + 1007, 4484, 4075, 1806, 5227, 1007, 1806, 4085, 4085, 4085, + 4086, 4078, 5400, 1007, 1007, 5231, 1007, 4081, 1007, 1007, + 1007, 1007, 5401, 1007, 4083, 4093, 4568, 1806, 1007, 2868, + 5232, 5224, 5649, 5656, 1007, 5241, 1806, 5235, 2865, 1007, + 1007, 1007, 1806, 1007, 5650, 5236, 1007, 1007, 1007, 1806, + 1806, 5680, 1007, 5237, 4085, 4085, 4085, 4085, 1007, 4085, + + 4085, 4085, 4086, 1007, 4079, 1007, 4579, 1007, 1007, 5244, + 1007, 1007, 1007, 1007, 1007, 2965, 1007, 5681, 5242, 1007, + 2121, 5374, 2868, 5375, 5243, 2868, 5230, 1806, 1007, 5238, + 5239, 5246, 2866, 1007, 4088, 5245, 5240, 4584, 2005, 1007, + 3438, 3438, 3438, 4097, 1007, 1007, 1007, 5253, 1007, 4107, + 1007, 5254, 5247, 1007, 4268, 1007, 1007, 5682, 1331, 5255, + 1007, 1007, 5252, 5256, 1007, 1007, 4110, 1007, 1806, 1007, + 1007, 5683, 1007, 3179, 1806, 5630, 1007, 5269, 5275, 5684, + 2866, 1007, 3173, 5270, 2867, 5248, 2005, 1007, 5249, 5250, + 4588, 1806, 1007, 4589, 5282, 5271, 4590, 5251, 1007, 1007, + + 5272, 4122, 5273, 1007, 4592, 1007, 2867, 5655, 2005, 1007, + 1007, 674, 5277, 4593, 1007, 5665, 5278, 1007, 5279, 2868, + 5280, 5281, 1007, 5380, 5685, 5381, 1806, 4581, 5257, 5257, + 5257, 5257, 5257, 5258, 5257, 5257, 5257, 5259, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5260, + 5260, 5260, 5260, 5260, 5260, 5257, 5257, 5257, 5261, 5257, + 5257, 5262, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5257, 5257, 5257, 5257, 5257, + 5257, 5263, 5264, 5263, 5265, 5263, 5263, 5263, 5263, 5263, + + 5263, 5263, 5263, 5263, 5263, 5263, 5266, 5263, 5263, 5267, + 5268, 5263, 5263, 5263, 5263, 5263, 5263, 5257, 5257, 5257, + 5257, 5019, 5019, 5019, 5274, 5276, 4120, 1007, 5286, 1138, + 1007, 1007, 1007, 1007, 2866, 1007, 1007, 5289, 2867, 5285, + 2005, 1007, 5287, 1007, 2121, 2863, 1007, 5288, 1007, 5290, + 1007, 1806, 3179, 5041, 1007, 1007, 5041, 5291, 4130, 4130, + 4130, 4130, 4130, 4130, 4130, 4131, 5019, 5019, 5019, 5292, + 1007, 5474, 1007, 5475, 5592, 1007, 5299, 1007, 4601, 4121, + 1007, 1007, 1007, 1007, 5593, 1007, 1007, 1007, 1007, 5293, + 1806, 1007, 5297, 4143, 5686, 2863, 1007, 2868, 5277, 5296, + + 1007, 1007, 5294, 1007, 5652, 1007, 1007, 5300, 1007, 5295, + 1007, 5687, 1007, 1331, 2121, 1007, 5302, 1007, 1806, 5301, + 5688, 1007, 5629, 5689, 1007, 5298, 1007, 1007, 1007, 1007, + 5304, 5305, 1007, 1007, 1007, 1007, 5303, 1007, 5306, 1007, + 1007, 1007, 1007, 5326, 1007, 1007, 1007, 1007, 5308, 1007, + 1007, 4163, 1007, 5307, 2121, 5309, 1007, 5311, 5310, 5312, + 2863, 1007, 5657, 1007, 1007, 4167, 1007, 5313, 1007, 1007, + 5314, 1007, 5333, 5631, 1007, 5314, 1806, 2868, 5315, 1007, + 1007, 5317, 1007, 5316, 1007, 1007, 4175, 1007, 2868, 1007, + 1806, 1007, 5328, 4678, 2975, 5319, 1007, 1007, 2868, 5690, + + 5318, 1007, 5691, 4186, 4164, 5320, 1007, 1007, 5323, 1007, + 5324, 1806, 1007, 5635, 1007, 5327, 5329, 5330, 4168, 5670, + 5331, 1007, 1007, 2868, 2865, 1007, 1007, 1007, 1806, 674, + 1007, 5692, 1007, 5693, 2863, 1007, 1007, 1007, 5334, 5336, + 5335, 1007, 1007, 1007, 1007, 674, 1007, 1007, 1007, 1007, + 5339, 1007, 1007, 4190, 5337, 4196, 1007, 4198, 2868, 5346, + 5694, 1007, 5338, 5340, 5340, 5340, 5341, 5695, 5696, 1007, + 5348, 1007, 3179, 2866, 1007, 5674, 1007, 2867, 1806, 2005, + 1806, 1007, 1806, 1007, 5351, 2866, 1007, 5347, 1007, 2867, + 5352, 2005, 1007, 5354, 1007, 4206, 5697, 1007, 1007, 1007, + + 5359, 5353, 4212, 1007, 674, 5700, 4191, 5701, 5355, 5356, + 5357, 1007, 4216, 1007, 674, 5358, 1007, 2866, 1007, 5360, + 1806, 2867, 5702, 2005, 5342, 1007, 5362, 1806, 5343, 1007, + 1007, 1007, 5361, 5363, 5709, 5344, 1007, 1806, 2868, 5373, + 1007, 5345, 1007, 5710, 5364, 1007, 2866, 1007, 4207, 5698, + 2867, 4214, 2005, 5379, 1007, 5366, 5367, 2048, 2049, 1007, + 5699, 5365, 5368, 5019, 5019, 5019, 5274, 4220, 5369, 1007, + 4221, 5370, 5371, 5372, 1007, 1007, 1806, 5711, 5718, 2866, + 1007, 5675, 1007, 2867, 3173, 5378, 5376, 1007, 5383, 1007, + 5382, 674, 1806, 1007, 1007, 1806, 2868, 1007, 5676, 5719, + + 1007, 1007, 1007, 5384, 4215, 1007, 5388, 1007, 674, 1007, + 4236, 5386, 1007, 5387, 1007, 5389, 5390, 1007, 5406, 5723, + 5581, 5724, 1007, 2868, 1007, 5391, 1007, 1007, 5725, 1007, + 5392, 1007, 1007, 1007, 1007, 4237, 5394, 5755, 1007, 1007, + 1007, 5398, 5393, 1007, 5417, 1007, 1007, 5395, 1007, 5397, + 1007, 1007, 5396, 1007, 5408, 1007, 1007, 1007, 1007, 1007, + 4678, 2866, 1007, 5402, 5404, 5405, 5423, 2005, 4256, 1007, + 5759, 5407, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 4258, + 1007, 1007, 5412, 1007, 1007, 5420, 5418, 5410, 5409, 1007, + 2868, 5428, 4213, 5411, 5174, 5174, 5174, 5175, 1007, 5762, + + 1007, 5764, 1007, 1007, 1806, 1007, 2866, 1007, 1007, 5419, + 2867, 5422, 2005, 1007, 4269, 1007, 5421, 674, 1007, 2863, + 1007, 1007, 2868, 1007, 1007, 5426, 1007, 2306, 2865, 1007, + 674, 1007, 2868, 1007, 5425, 5424, 1007, 674, 1007, 1806, + 1007, 674, 1007, 5661, 5429, 1007, 2865, 1007, 5432, 1007, + 5749, 674, 5427, 2863, 1007, 1007, 5413, 4593, 5808, 1007, + 5414, 5430, 1007, 5431, 1007, 1007, 5415, 1007, 5433, 2863, + 1007, 1007, 5416, 2868, 5434, 1007, 1007, 1007, 1007, 5435, + 1007, 5436, 1007, 1007, 4282, 2867, 1007, 2005, 5438, 5437, + 1007, 1007, 1007, 1007, 1007, 1007, 674, 1007, 1007, 1007, + + 1007, 5439, 1007, 4292, 5459, 1007, 1007, 1007, 1007, 1806, + 4302, 1007, 1007, 1007, 5443, 5440, 5441, 1007, 5442, 3961, + 5445, 5444, 1007, 5446, 1007, 1007, 5448, 1007, 1806, 1007, + 1007, 1007, 1007, 1007, 5450, 1806, 4304, 1007, 1007, 1007, + 5447, 5449, 4579, 5457, 1007, 4579, 5469, 2868, 1007, 1007, + 4693, 1007, 4318, 5452, 1007, 5453, 1007, 5454, 5455, 1007, + 1007, 1806, 1007, 1007, 1007, 1007, 5841, 1007, 1007, 5460, + 1007, 5456, 2868, 1007, 1007, 1007, 5458, 1806, 1007, 5477, + 5479, 5461, 2866, 1007, 5662, 5462, 2867, 1007, 2005, 1007, + 1007, 5463, 1007, 5464, 1007, 1007, 5884, 4320, 5465, 5466, + + 5466, 5466, 5467, 1007, 1007, 4319, 5493, 4325, 1007, 1007, + 1007, 5920, 5470, 5468, 2865, 1007, 1007, 5921, 5927, 4327, + 5471, 1007, 1806, 1007, 2867, 1007, 2005, 5476, 1007, 5478, + 1007, 2867, 1806, 2005, 4329, 5490, 5472, 1007, 1007, 5932, + 1007, 2863, 1007, 1007, 1806, 4336, 674, 1007, 1007, 2868, + 4321, 5491, 1007, 1007, 2048, 2049, 674, 1007, 674, 1806, + 1007, 5494, 1007, 1007, 1007, 1007, 5492, 5496, 1007, 1007, + 1806, 1007, 1007, 1007, 2868, 5480, 1007, 5976, 1007, 5509, + 5495, 1007, 5507, 1007, 1007, 5497, 5510, 5522, 1007, 1007, + 2062, 2063, 1007, 5511, 1007, 5514, 5508, 5517, 5515, 5728, + + 1007, 5516, 1007, 5481, 5482, 1007, 5539, 1007, 5729, 5277, + 5483, 1007, 1007, 5530, 5484, 5485, 2868, 1007, 5582, 5486, + 5487, 5488, 5498, 5499, 5489, 5500, 4729, 5518, 4730, 5977, + 5928, 5523, 5501, 5502, 5503, 2865, 1007, 5929, 5504, 5505, + 5506, 4733, 4734, 1007, 1007, 5519, 5978, 2863, 1007, 1007, + 1007, 5512, 1007, 5595, 5524, 1007, 5525, 1007, 5520, 674, + 2867, 5521, 2005, 5513, 5536, 1007, 1807, 5526, 5527, 5529, + 1007, 1007, 5528, 1007, 5915, 1007, 1007, 5532, 1007, 2868, + 1007, 1007, 1007, 5981, 5530, 2863, 1007, 1007, 5531, 1007, + 1007, 1806, 5537, 5533, 1007, 1007, 3620, 5983, 1007, 1007, + + 1007, 5513, 2975, 1007, 1007, 1007, 5543, 5534, 1007, 5540, + 1007, 5538, 2863, 1007, 2865, 1007, 1007, 1007, 5987, 5988, + 2866, 1007, 1007, 3179, 2867, 5542, 2005, 5565, 1007, 2865, + 1007, 2868, 5544, 1007, 1007, 4521, 1007, 1007, 5989, 1007, + 2865, 1007, 1007, 5546, 5547, 1007, 2062, 2063, 5566, 5545, + 1007, 1007, 5548, 1007, 5571, 2866, 1007, 4387, 1007, 5549, + 5550, 2005, 5019, 5019, 5019, 5551, 1007, 2868, 5575, 5578, + 5990, 1007, 4384, 4384, 4384, 4384, 4384, 4384, 4384, 4385, + 2868, 1007, 1806, 1007, 5553, 1007, 1007, 5568, 1007, 3758, + 1007, 1007, 5982, 1007, 5567, 5570, 1007, 1007, 1007, 2868, + + 724, 5572, 1007, 1007, 1806, 724, 5569, 5597, 1007, 5992, + 5573, 1325, 1007, 5645, 5637, 2975, 2865, 1007, 5645, 5587, + 724, 3364, 5574, 1007, 1262, 724, 1007, 724, 1007, 5638, + 5552, 1007, 724, 5638, 674, 5712, 1283, 5993, 4640, 5598, + 5994, 5552, 4770, 4770, 674, 5995, 4770, 5554, 4770, 4770, + 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4772, 4770, 4770, + 4770, 4770, 4770, 5555, 5555, 5555, 5555, 5555, 5555, 4770, + 4770, 4770, 5556, 4770, 4770, 5557, 5558, 5558, 5558, 5558, + 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, + 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, 4770, + + 4770, 4770, 4770, 4770, 4770, 5559, 5560, 5558, 5561, 5558, + 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, + 5562, 5558, 5558, 5563, 5564, 5558, 5558, 5558, 5558, 5558, + 5558, 4770, 4770, 4770, 4770, 5498, 2062, 2063, 4728, 4729, + 2121, 4730, 5583, 5583, 5583, 5584, 724, 674, 1265, 1266, + 5996, 724, 4731, 5579, 4733, 4734, 724, 674, 2579, 4872, + 4942, 724, 724, 4584, 1652, 5922, 1653, 724, 4533, 5600, + 724, 5923, 5999, 674, 4942, 724, 5588, 5760, 1652, 5041, + 1653, 5613, 5041, 724, 4959, 4722, 5615, 2116, 674, 1473, + 5614, 674, 5844, 1283, 6000, 5632, 674, 5585, 4960, 674, + + 5596, 674, 5633, 724, 5660, 2461, 674, 6001, 724, 5672, + 1283, 5011, 5721, 5634, 4586, 4587, 4588, 2305, 6002, 4589, + 4602, 5586, 4590, 4591, 5663, 674, 5664, 674, 674, 5666, + 5599, 4615, 3506, 674, 6003, 674, 2116, 5873, 674, 4593, + 5601, 5601, 5601, 5601, 5601, 5602, 5601, 5601, 5601, 5601, + 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, + 5601, 5603, 5603, 5603, 5603, 5603, 5603, 5601, 5601, 5601, + 5604, 5601, 5601, 5605, 5606, 5606, 5606, 5606, 5606, 5606, + 5606, 5606, 5606, 5606, 5606, 5606, 5606, 5606, 5606, 5606, + 5606, 5606, 5606, 5606, 5606, 5606, 5606, 6004, 5601, 5601, + + 5601, 5601, 5601, 5606, 5607, 5606, 5608, 5606, 5606, 5606, + 5606, 5609, 5606, 5606, 5606, 5606, 5606, 5606, 5610, 5606, + 5606, 5611, 5612, 5606, 5606, 5606, 5606, 5606, 5606, 5601, + 5601, 5601, 5601, 4727, 5765, 674, 5616, 4729, 4727, 4730, + 5041, 5617, 4729, 5041, 4730, 674,11275, 6005, 2112,11275, + 4731, 4732, 4733, 4734, 2112, 4731, 4732, 4733, 4734,11275, + 5622, 674,11275, 5930, 1325, 5931, 5623, 2112, 5677, 5673, + 4584, 674, 5624, 5625, 1325, 5626, 674, 674, 5627, 5628, + 1326, 1326, 1326, 1326, 1326, 1326, 674, 5748, 4712, 1283, + 1326, 1326, 1326, 1326, 1326, 1326, 5667, 674, 5750, 1283, + + 1490, 674, 1491, 2532, 6006, 2363, 674, 674, 674, 5678, + 5671, 674, 5668, 2272, 674, 5618, 4713, 4714, 5766, 674, + 6010, 5679, 4602, 4715, 674, 5728, 1325, 4716, 4717, 2112, + 5729, 674, 4718, 5669, 4720, 2112, 5654, 4721, 5703, 5704, + 5653, 674, 5713, 5714, 6012, 5705, 4593, 5715, 5619, 1325, + 5716, 1283, 2687, 2308, 5706, 5707, 5708, 1490, 5717, 1491, + 4584, 674, 1273, 674, 5736, 1326, 1326, 1326, 1326, 1326, + 1326, 674, 6013, 1325, 1283, 5720, 5730, 1331, 5726, 5726, + 5726, 5726, 5726, 5726, 5735, 674, 674, 674, 5722, 5732, + 674, 6014, 674, 2503, 5745, 674, 674, 674, 1283, 5737, + + 674, 674, 674, 5731, 3381, 674, 674, 6015, 1337, 4584, + 1338, 674, 1339, 674, 3529, 674, 674, 5738, 674, 5739, + 5658, 5779, 1341, 674, 674, 1342, 1343, 1325, 674, 674, + 5740, 5740, 5740, 5741, 6007, 4579, 4593, 6008, 4580, 674, + 5746, 6016, 5733, 1326, 1326, 1326, 1326, 1326, 1326, 674, + 674, 674, 1283, 5752, 5751, 1331, 674, 674, 6017, 674, + 674, 674, 674, 1283, 5747, 5780, 674, 674, 5753, 674, + 1558, 5765, 674, 5734, 5767, 5754, 4584, 674, 4584, 674, + 4565, 4565, 4565, 4565, 6009, 4593, 1337, 674, 1338, 5659, + 1339, 4560, 4560, 4560, 4560, 674, 5998, 5742, 674, 2309, + + 1341, 5734, 2532, 1342, 1343, 674, 1325, 5768, 674, 5743, + 5756, 5756, 5756, 5756, 5756, 5756, 6020, 5744, 4560, 4560, + 4560, 4561, 5757, 5757, 5757, 5757, 5757, 5757, 4584, 6021, + 4584, 1283, 5782, 674, 4600, 4567, 6022, 5756, 5756, 5756, + 5756, 5756, 5756, 674, 1325, 5781, 1283, 4565, 4565, 4565, + 4566, 6024, 4593, 4584, 4593, 5766, 6027, 1636, 5770, 1283, + 4572, 4572, 4572, 4572, 4572, 4572, 674, 4568, 674, 1283, + 5769, 5772, 674, 674, 674, 1283, 674, 5771, 674, 6028, + 5777, 674, 5774, 674, 674, 5773, 5783, 4601, 674, 5775, + 5778, 1392, 5776, 674, 6029, 674, 4612, 5788, 5790, 674, + + 5798, 5784, 4567, 2306, 4593, 5787, 4593, 2308, 5785, 674, + 674, 5789, 674, 1491, 674, 674, 674, 674, 674, 5799, + 5786, 1283, 674, 2485, 674, 674, 5800, 5791, 674, 4593, + 5793, 5793, 5793, 5793, 4568, 674, 5801, 674, 5794, 674, + 2338, 674, 1392, 674, 6030, 674, 674, 674, 5802, 674, + 6032, 674, 5804, 674, 674, 5805, 674, 5734, 5795, 5803, + 674, 674, 5810, 6033, 674, 5809, 1490, 674, 1491, 5806, + 674, 674, 674, 5807, 674, 5815, 6034, 674, 5811, 5811, + 5811, 5812, 5814, 1473, 674, 5816, 1490, 5817, 1491, 674, + 5819, 5796, 674, 674, 1490, 674, 1491, 674, 5818, 674, + + 674, 674, 5821, 674, 674, 5822, 674, 2305, 5823, 5797, + 5834, 674, 2529, 674, 674, 5820, 674, 674, 674, 5824, + 5826, 674, 5825, 5827, 5828, 674, 674, 6035, 674, 674, + 674, 674, 6036, 674, 5813, 674, 674, 674, 674, 674, + 674, 5829, 5830, 674, 5831, 1325, 674, 674, 5832, 674, + 5854, 674, 5835, 674, 5833, 5837, 674, 674, 5840, 674, + 1392, 674, 5979, 5846, 674, 6037, 5836, 674, 674, 5839, + 1283, 2703, 674, 674, 674, 2503, 1392, 5838, 674, 674, + 674, 674, 674, 674, 674, 5845, 674, 5847, 5843, 674, + 5842, 674, 674, 674, 674, 674, 674, 5857, 674, 674, + + 5848, 5824, 674, 5855, 5825, 5850, 5851, 674, 674, 674, + 5849, 674, 674, 5858, 5852, 5859, 5853, 674, 5860, 1473, + 5856, 674, 2306, 5861, 5862, 674, 674, 674, 674, 674, + 674, 6038, 5863, 674, 674, 674, 674, 674, 674, 5864, + 2306, 5865, 5866, 674, 674, 674, 5868, 674, 674, 5867, + 5870, 674, 2305, 674, 5869, 674, 5874, 674, 674, 6039, + 5871, 674, 674, 2305, 2488, 674, 5872, 674, 674, 5875, + 674, 5876, 674, 674, 5877, 674, 5880, 674, 5895, 5878, + 674, 5879, 674, 1473, 1558, 674, 674, 674, 2485, 5881, + 1392, 674, 674, 674, 674, 674, 674, 674, 5885, 674, + + 674, 6019, 674, 5886, 5882, 674, 5887, 674, 5892, 674, + 674, 674, 5888, 674, 5891, 674, 5890, 5893, 5889, 674, + 6040, 674, 674, 674, 674, 5898, 674, 5899, 674, 674, + 5894, 674, 674, 5901, 674, 674, 5900, 5896, 5903, 5902, + 674, 674, 674, 674, 5905, 674, 2485, 674, 674, 5906, + 674, 674, 674, 5904, 5897, 674, 2555, 5907, 674, 5909, + 674, 674, 2532, 674, 6018, 5910, 5908, 674, 5933, 6041, + 674, 5911, 5912, 674, 2308, 5913, 6042, 674, 1490, 674, + 1491, 5914, 5917, 5916, 674, 674, 674, 674, 6043, 674, + 674, 5919, 5924, 5925, 5934, 674, 674, 674, 5918, 674, + + 674, 674, 5936, 674, 5834, 6046, 674, 674, 6049, 674, + 5926, 674, 5935, 674, 674, 5938, 674, 674, 1473, 5937, + 6048, 5941, 5939, 2308, 674, 5732, 2703, 1490, 674, 1491, + 674, 1473, 5940, 674, 1392, 5943, 5944, 5942, 674, 674, + 674, 674, 6052, 5946, 674, 674, 674, 5948, 674, 674, + 674, 6053, 5945, 674, 674, 674, 674, 2532, 5949, 5947, + 674, 5952, 5951, 5950, 674, 5955, 5954, 674, 5953, 674, + 6054, 674, 674, 5956, 674, 2485, 674, 674, 5733, 674, + 5959, 674, 674, 5957, 5960, 5958, 674, 674, 674, 674, + 4768, 674, 674, 6055, 5961, 674, 1558, 674, 674, 674, + + 5963, 674, 674, 5964, 5966, 674, 674, 5962, 6056, 5734, + 5967, 674, 674, 6047, 5965, 1283, 674, 5968, 5968, 5968, + 5969, 2308, 674, 2338, 674, 1490, 1392, 1491, 2305, 6057, + 674, 674, 5972, 674, 674, 1473, 6058, 674, 674, 5973, + 674, 674, 2308, 2306, 674, 674, 1490, 674, 1491, 1473, + 5975, 674, 674, 6059, 674, 2532, 5974, 2531, 6062, 674, + 674, 1652, 5854, 1653, 5997, 5991, 6023, 5971, 5980, 5740, + 5740, 5740, 5741, 2531, 2532, 6063, 2532, 6011, 6064, 1653, + 6025, 6065, 674, 6050, 1652, 6044, 1653, 5811, 5811, 5811, + 5812, 6026, 674, 2532, 6031, 1652, 1558, 1653, 1652, 6045, + + 1653, 6060, 6066, 6067, 5970, 1325, 1636, 6068, 6069, 6061, + 6051, 6070, 6071, 6072, 6074, 5855, 6073, 6075, 6076, 6077, + 6078, 1326, 1326, 1326, 1326, 1326, 1326, 2529, 6080, 6081, + 1283, 6082, 2529, 1331, 2532, 6083, 5984, 6084, 2690, 6087, + 6085, 6079, 6086, 5813, 6088, 1558, 1636, 6091, 5985, 6092, + 6093, 2687, 6094, 6095, 6096, 6097, 5986, 6098, 6099, 6089, + 5895, 6090, 6102, 6103, 1530, 6104, 1531, 6105, 6106, 6107, + 6108, 6109, 6111, 6112, 6113, 6114, 6110, 6115, 1533, 6120, + 2687, 1534, 1535, 1325, 6116, 6121, 2531, 6117, 6122, 2532, + 1652, 6123, 1653, 6118, 6119, 6124, 6125, 6126, 6127, 1326, + + 1326, 1326, 1326, 1326, 1326, 6128, 6129, 6130, 1283, 1636, + 6132, 1331, 2531, 6133, 6136, 6137, 1652, 1636, 1653, 6100, + 1558, 6134, 6135, 6131, 6138, 6141, 6139, 6142, 6143, 6145, + 6146, 6147, 6148, 6149, 6150, 6144, 6101, 6140, 6151, 6153, + 2687, 6154, 1530, 6155, 1531, 6156, 6157, 6158, 6152, 5968, + 5968, 5968, 5969, 2555, 1558, 2529, 1533, 2531, 1636, 1534, + 1535, 1652, 2532, 1653, 6161, 1636, 2531, 6162, 6159, 6160, + 1652, 6163, 1653, 5740, 5740, 5740, 5741, 6164, 6165, 6166, + 6027, 6167, 6168, 6169, 6172, 5895, 6173, 6174, 6175, 5019, + 5019, 5019, 5019, 5019, 5019, 5019, 5020, 6177, 6178, 6179, + + 6180, 6181, 6182, 6183, 6184, 6185, 6186, 6187, 6188, 6189, + 6190, 6193, 6194, 6191, 6195, 6197, 6198, 6199, 5041, 6192, + 6200, 5041, 6201, 5046, 6196, 6202, 6203, 6204, 6205, 6206, + 6207, 6208, 6209, 6210, 6211, 6214, 5970, 6212, 6215, 6216, + 5984, 6217, 6218, 6213, 6170, 6219, 6220, 6221, 6222, 5046, + 6225, 6226, 5985, 6223, 6223, 6223, 6223, 6227, 6228, 6229, + 5744, 6171, 6230, 6231, 6232, 6233, 6234, 6235, 6236, 6234, + 6238, 3904, 6237, 6176, 6242, 6242, 6242, 6242, 5083, 5083, + 5083, 5083, 6243, 6244, 895, 6245, 6246, 6248, 6249, 6250, + 6250, 6250, 6250,11275,11275,11275,11275,11275, 6234,11275, + + 6259, 6234,11275, 6260, 6261, 6234,11275, 6262, 6234, 6264, + 6265, 6266, 6234, 6267, 6269, 6234, 6270, 5120, 6271, 6272, + 6273, 1807, 6240, 6263, 6275, 1807, 6276, 6277, 5139, 6268, + 5130, 5130, 5130, 5130, 5130, 5130, 5130, 5131, 6290, 3984, + 6224,11275,11275,11275, 1807, 6251, 1806, 6313, 5157, 5181, + 1806, 5202, 6241, 1806, 5203, 6252, 6354, 6355, 5259, 6254, + 6377, 5084, 1806, 6257, 5196, 5084, 6255, 5259, 6378, 6379, + 6247, 6253, 6258, 1806, 1806, 6380,11275,11275,11275,11275, + 11275,11275, 6256,11275, 6384,11275,11275, 6274, 5208, 1806, + 11275, 1807,11275,11275,11275, 1807,11275,11275,11275, 6278, + + 11275,11275,11275, 1807, 6396, 6397, 6427, 1808, 1808, 1808, + 1808, 1808, 1808, 1806, 6428, 6430, 1806, 6451, 6452, 1812, + 11275,11275,11275, 6280,11275,11275,11275, 1807,11275,11275, + 11275, 6281, 6475,11275,11275,11275, 1807,11275,11275,11275, + 6283,11275,11275,11275, 1807,11275,11275,11275, 1807, 6476, + 1818, 6481, 1819,11275,11275,11275, 1807,11275,11275,11275, + 1807, 6482, 5215, 5399, 1821, 6502, 6503, 1822, 1823, 5130, + 5130, 5130, 5131,11275,11275,11275, 1807, 6508, 6279,11275, + 11275,11275, 6289,11275,11275,11275, 1807, 1806, 1808, 1808, + 1808, 1808, 1808, 1808, 6282, 6528, 6571, 1806, 2863, 5221, + + 1812,11275,11275,11275, 6292,11275,11275,11275, 6293,11275, + 11275,11275, 1807, 6572, 6285, 6573, 6603, 5225, 6286, 6284, + 11275,11275,11275, 1807, 1806, 5226, 6287,11275,11275,11275, + 1807, 1818, 6606, 1819,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 1806, 6607, 6291, 1821, 6666, 6667, 1822, 1823, + 1806, 6674, 6676, 6288, 5174, 5174, 5174, 5175, 2868,11275, + 11275,11275, 6298,11275,11275,11275, 1807,11275,11275,11275, + 1807,11275,11275,11275, 1807,11275,11275,11275, 6302,11275, + 11275,11275, 6303, 6677, 6294,11275,11275,11275, 6304,11275, + 11275,11275, 1807, 6604, 6295,11275,11275,11275, 1807, 5920, + + 6605, 6598, 6296,11275,11275,11275, 1807,11275,11275,11275, + 1807,11275,11275,11275, 1807, 5733,11275,11275,11275, 1807, + 6608, 6297, 5174, 5174, 5174, 5174, 6299, 5174, 5174, 5174, + 5175, 5927, 2866, 6678, 6301, 3203, 2867, 6673, 2005,11275, + 11275,11275, 1807, 6300, 6236, 6381, 5734, 2532, 6599, 6382, + 4256, 6383, 6679, 6305, 6600, 1806,11275,11275,11275, 1807, + 11275,11275,11275, 1807, 5326, 6680, 3961, 6314, 6314, 6314, + 6315,11275,11275,11275, 1807,11275,11275,11275, 1807, 6306, + 11275,11275,11275, 1807, 4579, 6308, 6307, 5244, 6687, 1806, + 6309,11275,11275,11275, 1807, 5333, 1558, 3179,11275,11275, + + 11275, 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, + 2529, 6167, 1806, 6310,11275,11275,11275, 1807, 6672, 1636, + 1806, 2866, 1652, 4584, 1653, 2867, 2532, 2005, 6311,11275, + 11275,11275, 1807, 6689, 6316,11275,11275,11275, 1807, 6312, + 6319, 6690,11275,11275,11275, 1807, 6317,11275,11275,11275, + 1807, 6320, 6691, 5921, 6318,11275,11275,11275, 1807, 6609, + 6321,11275,11275,11275, 1807, 5928, 6322, 6324,11275,11275, + 11275, 1807, 5929, 2868,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 6325, 6323,11275,11275,11275, 1807, 6368, 6694, + 6326, 6695, 5417, 5276, 2865,11275,11275,11275, 1807, 4593, + + 6696, 6327, 4584, 5423, 6328,11275,11275,11275, 1807, 5459, + 2868, 6329, 6330,11275,11275,11275, 1807, 1806, 1806, 6331, + 11275,11275,11275, 6337,11275,11275,11275, 1807, 1806, 6332, + 11275,11275,11275, 1807, 1806,11275,11275,11275, 1807, 2866, + 6697, 6601, 5921, 2867, 6602, 2005, 4601, 5469, 1807, 6698, + 6371, 2975,11275,11275,11275, 1807, 6334, 6699, 5783, 6333, + 4560, 4560, 4560, 5212, 6340, 6340, 6340, 6340, 6340, 6340, + 2866, 6700, 1806, 1806, 2867, 6335, 2005, 6336, 4593, 5756, + 5756, 5756, 5756, 5756, 5756, 2866, 2531, 6701, 1806, 2867, + 1652, 2005, 1653, 6685, 6702, 6339, 4565, 4565, 4565, 5217, + + 6341, 5477, 6338, 2532, 2867, 2868, 2005,11275,11275,11275, + 6343,11275,11275,11275, 1807,11275,11275,11275, 1807, 1807, + 2121, 6342, 6688, 2121, 1806, 5406, 1806, 2868,11275,11275, + 11275, 1807, 2532, 6692, 5921, 5223, 5223, 5223, 5223, 5223, + 5223, 2048, 2049, 6710, 1806,11275,11275,11275, 1807, 6711, + 1806, 4567,11275,11275,11275, 1807,11275,11275,11275, 1807, + 11275,11275,11275, 1807,11275,11275,11275, 6351,11275,11275, + 11275, 6352,11275,11275,11275, 1807, 2866, 6345, 5407, 6712, + 2867, 6706, 2005, 4568,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 6344, 6703, 5766,11275,11275,11275, 1807, 5479, + + 2121, 5493, 6346,11275,11275,11275, 6359,11275,11275,11275, + 6360, 6713, 4584, 6671, 6347, 1807, 6714, 6348,11275,11275, + 11275, 6361, 4584, 5258, 1806, 6350, 1806, 5259, 2121, 2866, + 6715, 2062, 2063, 2867, 6349, 2005,11275,11275,11275, 1807, + 1806, 6353,11275,11275,11275, 1807, 6716, 6717, 5261, 6357, + 11275,11275,11275, 1807,11275,11275,11275, 1807, 6356, 6718, + 6358, 1807, 5428, 5651, 2862,11275,11275,11275, 1807,11275, + 11275,11275, 1807, 5779, 5777, 2121, 6370, 6705, 6369,11275, + 11275,11275, 1807, 6707, 5778, 674, 1806, 1806, 4593,11275, + 11275,11275, 1807,11275,11275,11275, 1807, 1138, 4593,11275, + + 11275,11275, 1807, 6682, 3179,11275,11275,11275, 1807,11275, + 11275,11275, 6385, 5565, 6362, 5429, 5575, 6668, 6363, 5019, + 5019, 5019, 5274, 5928, 5602, 2868,11275,11275,11275, 6395, + 5929, 6704, 6746, 6364,11275,11275,11275, 6398, 1806, 6234, + 6365, 1806, 6234, 6747, 6372, 6366, 1325, 1806, 6367, 1283, + 2862,11275,11275,11275, 1807,11275,11275,11275, 1807, 6729, + 6728, 6749, 6374, 674, 6373,11275,11275,11275, 1807, 6720, + 2309, 1283, 6376, 674, 6375, 5257, 5257, 5257, 5257, 5257, + 5258, 5257, 5257, 5257, 5259, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5260, 5260, 5260, 5260, + + 5260, 5260, 5257, 5257, 5257, 5261, 5257, 5257, 5257, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5257, 5257, 5257, 5257, 5257, 5257, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5259, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + + 5257, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5257, 5257, 5257, 5257, 5257, + 5257, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5258, 5257, 5257, 5257, + 5259, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5260, 5260, 5260, 5260, 5260, 5260, 5257, 5257, + 5257, 5261, 5257, 5257, 5262, 5263, 5263, 5263, 5263, 5263, + + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5257, 5257, + 5257, 5257, 5257, 5257, 5263, 5264, 5263, 5265, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5266, + 5263, 5263, 5267, 5268, 5263, 5263, 5263, 5263, 5263, 5263, + 5257, 5257, 5257, 5257,11275,11275,11275, 1807,11275,11275, + 11275, 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, + 11275,11275,11275, 1807,11275,11275,11275, 1807,11275,11275, + 11275, 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, + 11275,11275,11275, 1807, 1331,11275,11275,11275, 1807,11275, + + 11275,11275, 1807,11275,11275,11275, 1807,11275,11275,11275, + 1807, 6731,11275,11275,11275, 1807, 2048, 2049, 6734, 2866, + 674, 1331, 6750, 6386, 6736, 2005, 6388,11275,11275,11275, + 1807, 2062, 2063, 2868, 1331, 674, 2121, 6387, 6722, 6390, + 674, 5673, 3173, 5019, 5019, 5019, 5292, 6391, 6389, 6752, + 6739, 6753, 6394,11275,11275,11275, 1807, 6392, 6393, 2926, + 2862,11275,11275,11275, 1807, 674, 1283, 6399, 6724, 2121, + 6723, 1806,11275,11275,11275, 1807, 6732, 6400, 6402, 674, + 6670, 6401,11275,11275,11275, 1807, 5811, 5811, 5811, 6409, + 5734,11275,11275,11275, 1807, 6681, 6708,11275,11275,11275, + + 1807, 6403,11275,11275,11275, 1807,11275,11275,11275, 1807, + 11275,11275,11275, 1807,11275,11275,11275, 1807, 6405,11275, + 11275,11275, 1807, 6404,11275,11275,11275, 1807, 2868, 6709, + 6406, 6743,11275,11275,11275, 1807, 6733, 6407, 6754, 674, + 674, 2867, 5813, 2005,11275,11275,11275, 1807,11275,11275, + 11275, 1807,11275,11275,11275, 1807, 6410, 2868, 6755, 6735, + 2867, 6408, 2005, 6411, 6740, 6741, 6756, 2865, 4502, 5571, + 6757, 6412, 2485, 6758, 674, 6413,11275,11275,11275, 1807, + 5824,11275,11275, 6420,11275,11275,11275, 1807, 6414, 6415, + 6759, 1228, 6760, 2867, 1806, 2005, 6417, 6748, 6416,11275, + + 11275,11275, 1807,11275,11275,11275, 6423, 6761, 6418,11275, + 11275,11275, 1807,11275,11275,11275, 1807, 2863,11275,11275, + 11275, 1807,11275,11275,11275, 6429,11275,11275,11275, 1807, + 11275,11275,11275, 1807, 6762,11275,11275,11275, 1807, 674, + 674, 6419,11275,11275,11275, 6433, 5971, 6763, 6421,11275, + 11275,11275, 1807,11275,11275,11275, 6435, 6742,11275,11275, + 11275, 1807, 6764, 2112, 6422,11275,11275,11275, 1807,11275, + 11275,11275, 6438, 6424,11275,11275,11275, 1807,11275,11275, + 11275, 6441,11275,11275,11275, 6442,11275,11275,11275, 1807, + 6744, 6765, 1229, 6425, 6766, 6767, 6768, 6426, 6751, 674, + + 6769, 2868, 5340, 5340, 5340, 5340, 5340, 5340, 5340, 5341, + 6431, 6432,11275,11275,11275, 1807, 6770, 6771, 5702, 6436, + 6775, 6772, 6434, 2863,11275,11275,11275, 1807, 6693, 6776, + 6437, 6773, 674, 6777, 1806,11275,11275,11275, 1807, 6439, + 11275,11275,11275, 1807, 2112, 6440, 6778, 2866, 6779, 1262, + 6780, 2867, 6781, 2005, 6443,11275,11275,11275, 6449,11275, + 11275,11275, 1807,11275,11275,11275, 1807, 6774, 6444,11275, + 11275,11275, 1807,11275,11275,11275, 1807,11275,11275,11275, + 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, 6784, + 6445,11275,11275,11275, 1807, 6176, 6785,11275,11275,11275, + + 1807, 6446, 5578, 6786, 6447,11275,11275,11275, 1807, 6448, + 11275,11275,11275, 1807,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 674, 6788, 2866, 1265, 1266, 1283, 4187, 1325, + 2005,11275,11275,11275, 1807, 6453,11275,11275,11275, 1807, + 6795, 6450, 2862,11275,11275,11275, 1807, 5662, 2868, 2062, + 2063, 6457, 6454, 6455, 1283, 6826, 6458, 3203, 6459, 6456, + 11275,11275,11275, 1807,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 1283, 5762, 6460,11275,11275,11275, 1807, 6404, + 6461, 6792, 5728, 6462,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 2862, 2868, 674, 6738, 6815,11275,11275,11275, + + 1807,11275,11275,11275, 1807, 5961, 6463, 1283, 6783, 674, + 6464, 674, 6465,11275,11275,11275, 1807, 6683, 2868,11275, + 11275,11275, 1807, 4568, 6730, 2862, 2272, 6684, 6745, 6468, + 6467,11275,11275,11275, 1807, 6466,11275,11275,11275, 1807, + 11275,11275,11275, 1807,11275,11275,11275, 1807,11275,11275, + 11275, 6485, 1473, 5764, 674, 6469,11275,11275,11275, 1807, + 6470, 6471, 2866, 6472, 6790, 674, 2867, 674, 2005,11275, + 11275,11275, 1807, 6870, 6871, 1273, 2868,11275,11275,11275, + 1807, 6473,11275,11275,11275, 1807, 6782, 5896, 6477,11275, + 11275,11275, 6491, 5729, 6874, 6817, 6478, 6474,11275,11275, + + 11275, 1807, 6912, 674, 5897, 6479, 674, 6483,11275,11275, + 11275, 1807,11275,11275,11275, 1807, 6818, 6834, 1283, 6480, + 6819, 674, 674, 6484,11275,11275,11275, 1807,11275,11275, + 11275, 1807,11275,11275,11275, 1807, 6820, 674, 674, 6486, + 11275,11275,11275, 1807, 6487, 5855,11275,11275,11275, 1807, + 6488,11275,11275,11275, 1807, 674, 6822, 6821, 6489,11275, + 11275,11275, 1807, 5834, 6490,11275,11275,11275, 6504, 674, + 5884, 1473, 6492, 6493,11275,11275,11275, 1807, 6787, 6494, + 11275,11275,11275, 1807, 674, 6495, 5713, 5714, 1283, 6496, + 6816, 5715, 2309, 2865, 5716, 674, 6938, 6497,11275,11275, + + 11275, 1807, 6675, 6829, 2309, 6498, 674, 674, 6499,11275, + 11275,11275, 6509, 674, 6852, 6831, 6500,11275,11275,11275, + 1807,11275,11275,11275, 6511, 5765,11275,11275,11275, 1807, + 674, 6501,11275,11275,11275, 1807, 4584,11275,11275,11275, + 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, 6506, + 1283, 674, 6505, 6833,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 6507,11275,11275,11275, 1807,11275,11275,11275, + 1807,11275,11275,11275, 1807,11275,11275,11275, 1807,11275, + 11275,11275, 1807, 5732, 3179, 6832, 2866, 674, 6842, 6860, + 2867, 2866, 2005, 6510, 6512, 2867, 674, 2005, 2862,11275, + + 11275,11275, 1807,11275,11275,11275, 6526, 674, 1283, 5766, + 6516, 6513, 4593, 6848, 6517, 6514,11275,11275,11275, 1807, + 6858, 5895, 6515, 6518,11275,11275,11275, 1807, 6878, 674, + 6791, 6521, 6522, 6519, 1473, 6520, 5733,11275,11275,11275, + 1807,11275,11275,11275, 1807, 674, 1283, 674, 6524,11275, + 11275,11275, 1807, 674, 6886, 6523,11275,11275,11275, 1807, + 11275,11275,11275, 1807, 2863,11275,11275,11275, 1807,11275, + 11275,11275, 1807,11275,11275,11275, 1807, 6849, 6525,11275, + 11275,11275, 6537, 674, 6863, 6527,11275,11275,11275, 1807, + 6960, 2868,11275,11275,11275, 1807, 6862, 674, 674, 6529, + + 6530,11275,11275,11275, 1807, 6531,11275,11275,11275, 1807, + 6542, 6542, 6542, 6543,11275,11275,11275, 1807, 674, 2305, + 6879, 2863, 674, 6793, 6532, 6835, 4584, 6533,11275,11275, + 11275, 1807, 674, 4584, 6534, 6859, 6796, 674, 6535, 674, + 1490, 3173, 1491, 6877, 6536,11275,11275,11275, 1807, 674, + 11275,11275,11275, 1807, 674, 6538, 4584, 6539,11275,11275, + 11275, 1807,11275,11275,11275, 1807, 6540,11275,11275,11275, + 1807, 6544,11275,11275,11275, 1807,11275,11275,11275, 1807, + 6841, 674, 6845, 6545, 6541, 2868, 6873, 6900, 674, 2862, + 11275,11275,11275, 1807,11275,11275,11275, 1807,11275,11275, + + 11275, 1807, 4593, 6546,11275,11275,11275, 6557, 674, 4593, + 2865,11275,11275,11275, 6558,11275,11275,11275, 1807,11275, + 11275,11275, 6560, 674, 6840, 6547, 6548,11275,11275,11275, + 1807, 6917, 4593, 6549,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 6550,11275,11275,11275, 1807, 674, 2308, 1392, + 6553, 6551, 1490, 6552, 1491, 6965, 6555, 5466, 5466, 5466, + 5466, 674, 6794, 6830, 6554, 6908, 674, 6556, 5466, 5466, + 5466, 5467,11275,11275,11275, 1807,11275,11275,11275, 1807, + 674, 6561,11275,11275,11275, 1807,11275,11275,11275, 1807, + 6966, 6559,11275,11275,11275, 1807, 1806, 6837, 6562, 6904, + + 6563, 1490, 4584, 1491, 6565,11275,11275,11275, 1807, 4584, + 674, 2975,11275,11275,11275, 1807, 674, 6564,11275,11275, + 11275, 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, + 11275,11275,11275, 1807,11275,11275,11275, 1807,11275,11275, + 11275, 1807, 6915, 1473, 4584, 6568, 4584, 6850, 6570, 674, + 6566, 6567,11275,11275,11275, 1807, 674, 6847, 3173, 6836, + 6967, 674, 6569,11275,11275,11275, 1807, 6869, 3173, 2488, + 6844, 6924, 6574,11275,11275,11275, 1807, 674, 4593, 6577, + 6575, 674, 6823, 6824, 6578, 4593, 6825, 6576,11275,11275, + 11275, 6590, 674, 2485, 6581, 674, 6839, 6579, 6591, 6591, + + 6591, 6592,11275,11275,11275, 1807, 6580, 6968, 6892, 6582, + 6838, 6583, 4584, 674, 6893, 6584, 1392, 2866, 6585, 674, + 4593, 2867, 4593, 2005, 6586,11275,11275,11275, 6594, 6899, + 6861, 674, 6587, 674,11275,11275,11275, 1807, 2868, 674, + 6969, 6902, 6589, 6588,11275,11275,11275, 1807,11275,11275, + 11275, 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, + 11275,11275,11275, 1807, 6846,11275,11275,11275, 1807, 6945, + 6970, 2975,11275,11275,11275, 1807,11275,11275,11275, 1807, + 674,11275,11275,11275, 1807, 6593, 6610, 6872, 4593, 5824, + 2866, 674, 5824, 4584, 2867, 6595, 2005,11275,11275,11275, + + 1807,11275,11275,11275, 1807,11275,11275,11275, 1807,11275, + 11275,11275, 1807,11275,11275,11275, 1807, 6597,11275,11275, + 11275, 1807, 6596, 6956, 6971, 6611, 6613,11275,11275,11275, + 1807,11275,11275,11275, 1807, 674, 6612,11275,11275,11275, + 1807,11275,11275,11275, 1807,11275,11275,11275, 1807, 6615, + 6972, 6881, 6882, 6614, 6616,11275,11275,11275, 1807, 6843, + 11275,11275,11275, 1807, 674, 674, 2865, 6851, 6619, 4593, + 2866, 2305, 2306, 6876, 2867, 674, 2005, 6868, 6617, 2306, + 6618, 6620, 674, 2865, 674, 6973, 2309, 6621, 2862, 674, + 6622, 6623,11275,11275,11275, 1807, 6624,11275,11275,11275, + + 1807,11275,11275,11275, 1807, 5854, 6974, 6901, 6626,11275, + 11275,11275, 1807,11275,11275,11275, 1807, 6625, 6629, 6627, + 2485, 674, 674, 6628, 6875, 6630,11275,11275,11275, 1807, + 1283, 3173, 6631,11275,11275,11275, 1807,11275,11275,11275, + 1807,11275,11275,11275, 1807,11275,11275,11275, 1807,11275, + 11275,11275, 1807,11275,11275,11275, 1807, 6963, 5855, 6633, + 11275,11275,11275, 1807,11275,11275,11275, 1807, 674, 6975, + 6632,11275,11275,11275, 1807, 6634,11275,11275,11275, 1807, + 6636,11275,11275,11275, 1807, 6635, 5968, 5968, 5968, 6651, + 6925, 6638,11275,11275,11275, 1807, 674, 6639, 6637, 6640, + + 11275,11275,11275, 1807,11275,11275,11275, 6654, 6976, 6641, + 11275,11275,11275, 1807,11275,11275,11275, 1807, 6894, 6977, + 6883, 6643, 674, 6884, 6644, 6642, 6991, 6645,11275,11275, + 11275, 1807, 5019, 5019, 5019, 5551, 6646, 674, 674, 6647, + 11275,11275,11275, 1807, 6649,11275,11275,11275, 1807, 674, + 6650,11275,11275,11275, 1807, 6648, 6961, 2865, 4584, 6885, + 1806,11275,11275,11275, 6659,11275,11275,11275, 1807, 6653, + 674, 6652, 674, 5970,11275,11275,11275, 1807, 6880, 6887, + 5824, 6656, 1490, 5825, 1491, 6655,11275,11275,11275, 1807, + 6911, 674, 674, 6657,11275,11275,11275, 1807, 674, 674, + + 3179,11275,11275,11275, 1807, 2866, 5784, 6914, 1283, 2867, + 674, 2005, 5971, 6686, 6890, 2926, 6658,11275,11275,11275, + 1807,11275,11275,11275, 1807, 5786, 2866, 674, 6909, 6921, + 2867, 6660, 2005, 674, 4593, 2862,11275,11275,11275, 1807, + 2868,11275,11275,11275, 1807,11275,11275,11275, 1807, 6958, + 2338, 2863,11275,11275,11275, 6663, 6891, 7017, 6889, 2865, + 11275,11275,11275, 1807, 674, 6905, 2866, 674, 2309, 674, + 2867, 674, 2005,11275,11275,11275, 1807, 5583, 5583, 5583, + 5583, 5583, 5583, 5583, 5583, 5583, 5583, 5583, 5584, 5740, + 5740, 5740, 5740, 674, 6737, 6930, 2308, 5913, 1325, 6895, + + 1490, 6661, 1491, 5914, 674, 6937, 2865, 6903, 1325, 674, + 6662, 674, 674, 1283, 1326, 1326, 1326, 1326, 1326, 1326, + 674, 6664, 6907, 1283, 1326, 1326, 1326, 1326, 1326, 1326, + 6990, 6936, 5585, 1283, 1325, 674, 5585, 6910, 7018, 674, + 5585, 674, 6665, 5740, 5740, 5740, 5741, 674, 2868, 6997, + 5726, 5726, 5726, 5726, 5726, 5726, 6669, 7022, 674, 1283, + 6721, 5740, 5740, 5740, 5741, 6827, 6827, 6827, 6827, 6827, + 6827, 1283, 7023, 5811, 5811, 5811, 5811, 1325, 6913, 7000, + 1326, 1326, 1326, 1326, 1326, 1326, 6916, 6919, 674, 1283, + 674, 674, 1331, 6828, 6828, 6828, 6828, 6828, 6828, 674, + + 6920, 6898, 1283, 5793, 5793, 5793, 5793, 2306, 2363, 4637, + 674, 5794, 7025, 674, 5793, 5793, 5793, 5793, 5793, 5793, + 5793, 5793, 674, 1337, 674, 1338, 5794, 1339, 5742, 5813, + 3548, 5795, 6923, 5793, 5793, 5793, 5793, 1341, 6947, 6918, + 6725, 1343, 5795, 674, 674, 674, 5795, 1473, 6726,11275, + 11275,11275, 1325, 6896, 7027, 5793, 5793, 5793, 5793, 1392, + 674, 5795, 2306, 5794, 5796, 674, 7030, 6897, 1326, 1326, + 1326, 1326, 1326, 1326, 6922, 6854, 6949, 1283, 674, 5796, + 1331, 7012, 5797, 5795, 6864, 6864, 6864, 6865, 674, 5811, + 5811, 5811, 5812, 6855, 6854, 6926, 6952, 5797, 5793, 5793, + + 5793, 5793, 674, 7033, 2309, 6929, 5794, 674, 674, 674, + 6928, 1337, 6855, 1338, 6927, 1339, 5796, 1283, 6906, 6931, + 6934, 7009, 1490, 674, 1491, 1341, 5795, 6727, 1342, 1343, + 674, 674, 674, 2305, 5797, 6856,11275, 6797, 2308, 1392, + 6932, 1636, 1490, 6935, 1491, 5813, 674, 674, 674, 6888, + 6954, 674, 6940, 6933, 2309, 6948, 674, 674, 6939, 5796, + 7034, 6857, 674, 6799, 6866, 674, 6941, 6942, 674, 6944, + 674, 6867, 2308, 674, 2532, 7035, 1490, 5797, 1491, 6943, + 6943, 6943, 6943, 6943, 6943, 674, 7036, 6800, 6801, 6802, + 6803, 1392, 6804, 6805, 7037, 7038, 6806, 6807, 6808, 2308, + + 6809, 6810, 6811, 1490, 6812, 6950, 6813, 6951, 674, 6946, + 1392, 2309, 674, 6814, 674, 674, 6957, 2306, 6953, 6959, + 674, 2306, 674, 2309, 674, 674, 674, 674, 6955, 2305, + 2306, 2309, 6962, 674, 674, 6964, 674, 6978, 674, 6979, + 674, 674, 674, 1473, 6981, 674, 674, 6982, 6983, 6987, + 6984, 674, 674, 2308, 6985, 6986, 674, 1490, 6980, 1491, + 6988, 674, 674, 6989, 674, 6992, 674, 6993, 6999, 674, + 6994, 674, 674, 6998, 6995, 2309, 1392, 7004, 674, 2461, + 674, 674, 674, 674, 7003, 7005, 1473, 674, 7039, 6996, + 7008, 7001, 2305, 674, 7002, 7013, 7013, 7013, 7014, 674, + + 7007, 674, 7011, 7006, 7040, 674, 5962, 674, 7010, 7010, + 7010, 7010, 7010, 7010, 1473, 674, 5968, 5968, 5968, 5968, + 5968, 5968, 5968, 5969, 7020, 7021, 7044, 7019, 674, 7045, + 2309, 7026, 2529, 674, 7031, 1636, 7028, 2531, 1652, 1558, + 1653, 1652, 7047, 1653, 7048, 7041, 7042, 7049, 1283, 7043, + 7050, 7029, 1636, 7046, 7051, 1636, 7053, 7054, 7055, 7056, + 1652, 7057, 1653, 7058, 7059, 2529, 7060, 674, 7061, 1558, + 6862, 7052, 7063, 674, 6864, 6864, 6864, 6865, 7065, 7066, + 7067, 2690, 7015, 7062, 7068, 7069, 2687, 7071, 6877, 7072, + 7070, 7073, 2687, 7074, 7075, 7076, 7077, 1652, 6883, 1653, + + 7078, 6884, 7079, 5970, 2532, 2531, 7082, 5970, 1325, 1652, + 7081, 1653, 7083, 7084, 7085, 7086, 7080, 7087, 7088, 7090, + 2532, 7091, 7092, 7093, 1326, 1326, 1326, 1326, 1326, 1326, + 7094, 7095, 7089, 1283, 7096, 7097, 1331, 7098, 7099, 7100, + 7101, 1652, 7102, 1653, 7103, 7104, 7105, 7106, 7107, 2579, + 4872, 7108, 7109, 6921, 7064, 7110, 7112, 7113, 1636, 7114, + 7115, 6867, 7116, 2532, 6928, 7118, 7024, 1530, 7111, 1531, + 7119, 7120, 2529, 7117, 1558, 7123, 7124, 7125, 7126, 7121, + 2532, 1533, 3775, 2532, 1534, 1535, 1325, 7127, 7122, 7128, + 7129, 6942, 6943, 6943, 6943, 6943, 6943, 6943, 7130, 7131, + + 1558, 7133, 1326, 1326, 1326, 1326, 1326, 1326, 7134, 2531, + 1558, 1283, 7137, 1652, 1331, 7136, 7138, 7139, 7132, 7140, + 1558, 7142, 7143, 7144, 2555, 7145, 2531, 7135, 2532, 2529, + 1652, 7146, 1653, 2532, 7147, 2532, 7148, 7149, 7141, 7150, + 7151, 7152, 1636, 7154, 7155, 1530, 7156, 1531, 7157, 2531, + 7158, 7159, 7160, 1652, 7161, 1653, 7162, 7153, 7163, 1533, + 7164, 7165, 1534, 1535, 6797, 7166, 7167, 7170, 7171, 7172, + 7168, 2532, 7173, 1558, 7176, 7177, 7178, 7181, 2529, 7182, + 2666, 1636, 7183, 7184, 7187, 7169, 7180, 7022, 7174, 7188, + 6799, 7175, 7189, 1636, 7179, 7010, 7010, 7010, 7010, 7010, + + 7010, 6153, 7013, 7013, 7013, 7014, 7185, 7186, 1636, 7190, + 7192, 7191, 7193, 2532, 6800, 6801, 6802, 6803, 1558, 6804, + 6805, 2532, 7196, 6806, 7032, 6808, 2531, 6809, 6810, 6811, + 1652, 6812, 7195, 6813, 7197, 7194, 7198, 7199, 7200, 7201, + 6814, 7202, 7203, 7204, 7205, 7206, 7207, 7208, 7209, 7210, + 7211, 7212, 7213, 7214, 7215, 7216, 7217, 7218, 7219, 7220, + 5046, 7221, 7222, 7223, 6223, 6223, 6223, 6223, 7225, 7226, + 7227, 7228, 7229, 7230, 7231, 7232, 6234, 7233, 7232, 6234, + 7234, 7235, 3904, 5082, 7236, 7236, 7236, 7236, 7238, 7015, + 895, 6242, 6242, 6242, 6242, 7239, 7240, 6246, 7241, 7242, + + 2529, 6250, 6250, 6250, 6250, 7243, 7244, 7232, 7245, 7246, + 7232, 7247, 7248, 7249, 7232, 7250, 7251, 7232, 7252, 7232, + 7253, 7254, 7232, 7255, 7256, 5120, 7257, 7258, 7258, 7258, + 7258, 1807, 7260, 6240, 7261, 6278, 6280, 6281, 7263, 6283, + 7264, 7265, 7266, 6289, 7267, 7268, 7269, 6292, 6293, 7270, + 7271, 6224, 7272, 7273, 7275, 6298, 1806, 6251, 2868, 6302, + 1806, 1806, 1806, 6241, 1806, 7274, 6303, 6304, 1806, 2865, + 2863, 7237, 1806, 1806, 7276, 7277, 7278, 7279, 5084, 7280, + 1806, 6247, 1807, 7281, 1806, 7282, 6314, 6314, 6314, 6314, + 2866, 1806, 1806, 7285, 2867, 7289, 2005, 2865, 1808, 1808, + + 1808, 1808, 1808, 1808, 7283, 7291, 7290, 1806, 5733, 7292, + 1812, 6314, 6314, 6314, 6315, 7286, 7293, 7298, 7299, 2867, + 2868, 2005, 7294, 7300, 2863, 7304, 7303, 7305, 7306, 7296, + 7301, 7307, 7308, 7309, 7310, 7312, 6337, 7311, 2866, 1806, + 7314, 1818, 2867, 1819, 2005, 6343, 1807, 5174, 5174, 5174, + 5175, 7315, 7317, 7318, 2862, 1821, 7319, 7262, 1822, 1823, + 1807, 1806, 7313, 7313, 7313, 7313, 7313, 7313, 7316, 6351, + 1806, 1806, 6352, 7284, 7320, 7295, 1808, 1808, 1808, 1808, + 1808, 1808, 7297, 7302, 2865, 1806, 7321, 5233, 1812, 7322, + 7323, 2865, 7324, 6359, 1806, 6360, 7325, 1806, 7284, 6361, + + 2865, 7326, 7327, 2868, 7329, 2867, 2865, 2005, 2867, 4584, + 2005, 4584, 7335, 7336, 7337, 7338, 4584, 7339, 1806, 1818, + 1806, 1819, 7328, 3173, 1806, 5265, 5265, 5265, 6385, 5766, + 5265, 7349, 7347, 1821, 7341, 2863, 1822, 1823, 6797, 7343, + 7342, 5265, 5265, 4584, 7348, 7350, 7345, 7351, 7344, 7352, + 7346, 7353, 7354, 1806, 3179, 2862, 6395, 7356, 5283, 6398, + 6862, 7357, 7360, 7361, 6799, 7362, 7363, 7364, 7365, 7355, + 7368, 3173, 6877, 7369, 7330, 7367, 7370, 7331, 3173, 7375, + 7378, 1806, 7379, 7334, 1806, 4593, 7287, 4593, 6800, 6801, + 6802, 6803, 4593, 6804, 6805, 2868, 7381, 6806, 7288, 6808, + + 5321, 6809, 6810, 6811, 7332, 6812, 2866, 6813, 7382, 7371, + 2867, 7333, 2005, 2867, 6814, 2005, 7384, 7385, 7388, 4593, + 5257, 5257, 5257, 5257, 5257, 5258, 5257, 5257, 5257, 5259, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5260, 5260, 5260, 5260, 5260, 5260, 5257, 5257, 5257, + 5261, 5257, 5257, 5262, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5257, 5257, 5257, + 5257, 5257, 5257, 5263, 5264, 5263, 7340, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5266, 5263, + + 5263, 5267, 5268, 5263, 5263, 5263, 5263, 5263, 5263, 5257, + 5257, 5257, 5257, 6864, 6864, 6864, 7358, 2866, 6423, 7372, + 6429, 2867, 7373, 2005, 5811, 5811, 5811, 6409, 6883, 5824, + 7383, 7376, 6420, 7366, 7372, 2866, 6433, 7373, 6435, 2867, + 2868, 2005, 7386, 1806, 6438, 1806, 7380, 7389, 7390, 6441, + 6442, 7391, 1806, 7392, 7393, 7394, 7395, 1806, 7396, 7397, + 6449, 1806, 7398, 1806, 5349, 7399, 7401, 7402, 7404, 1806, + 7407, 7408, 7405, 7409, 1806, 1806, 7410, 7411, 7412, 7413, + 5813, 7414, 3203, 7415, 7374, 1806, 7406, 2868, 7416, 7416, + 7416, 7417, 2868, 7359, 7419, 7419, 7419, 7420, 7422, 7377, + + 6867, 5374, 7423, 7424, 7425, 7426, 7427, 5380, 7428, 2867, + 2866, 2005, 6485, 7430, 2867, 7431, 2005, 7387, 7400, 7432, + 7403, 7429, 7433, 7434, 6491, 7435, 7436, 7437, 2866, 2865, + 7438, 7439, 2867, 7440, 2005, 2975, 5319, 1806, 2862, 7442, + 7445, 7443, 7441, 7446, 6504, 7447, 7448, 7449, 7450, 1806, + 2865, 6509, 7451, 2865, 7444, 6511, 7452, 7453, 7454, 7455, + 7456, 7457, 7458, 7459, 7460, 7461, 7463, 7464, 2868, 1806, + 6526, 7465, 7466, 7467, 7468, 7418, 1806, 5855, 7462, 7469, + 1806, 7421, 2863, 2862, 7472, 7473, 7474, 6537, 7475, 7470, + 7476, 7477, 7478, 7479, 7480, 1806, 4289, 7471, 6542, 6542, + + 6542, 6542, 6542, 6542, 6542, 6543, 2868, 7482, 7483, 7484, + 7481, 7486, 1806, 7487, 7488, 7490, 2862, 7491, 2866, 6557, + 6558, 6560, 2867, 7494, 2005, 7496, 2862, 7497, 7498, 2866, + 1806, 7499, 7500, 2867, 7489, 2005, 7485, 7485, 7485, 7485, + 7485, 7485, 3203, 7492, 1806, 1806, 1806, 2862, 2866, 7503, + 7504, 2866, 2867, 2868, 7493, 2867, 5474, 2005, 7505, 7507, + 7508, 7509, 2926, 7510, 2868, 7502, 2863, 7495, 7511, 2868, + 2868, 7513, 6590, 6591, 6591, 6591, 6591, 6594, 7514, 7512, + 6591, 6591, 6591, 6592, 7515, 7516, 7517, 7518, 7519, 7520, + 7522, 7523, 7525, 7526, 7501, 7521, 7527, 1806, 7528, 7529, + + 7524, 7530, 1806, 7531, 2868, 7533, 2865, 7534, 1806, 7535, + 7536, 7537, 2866, 7538, 7539, 7540, 2867, 7541, 2005, 7542, + 7506, 7532, 7543, 7544, 7545, 7546, 7550, 7547, 7551, 7552, + 2868, 7548, 7553, 7554, 2868, 2862, 7557, 7558, 7559, 7560, + 3136, 2863, 7563, 7564, 7566, 7567, 7549, 2865, 7568, 7562, + 7555, 7569, 7570, 7556, 7573, 7574, 6654, 7561, 7575, 6514, + 7565, 7565, 7565, 7565, 7565, 7565, 7576, 6642, 7013, 7013, + 7013, 7571, 5968, 5968, 5968, 6651, 2866, 2865, 6659, 7578, + 7572, 1806, 2005, 7579, 7022, 2868, 6663, 3024, 3199, 7580, + 7577, 7581, 7582, 7583, 2048, 2049, 7585, 7586, 7587, 7585, + + 1806, 7590, 7591, 1806, 1558, 7593, 7594, 6677, 7595, 7596, + 6677, 1806, 7592, 2062, 2063, 2062, 2063, 7598, 2062, 2063, + 2062, 2063, 7141, 7601, 2531, 7604, 4584, 7607, 1652, 1558, + 1653, 1558, 7608, 2112, 7610, 7603, 7611, 7605, 7612, 7606, + 7613, 7614, 7615, 7616, 7617, 7618, 2121, 7141, 2121, 2121, + 2121, 7588, 2121, 2121, 7625, 7015, 7626, 7627, 7628, 5970, + 7232, 7629, 7630, 7232, 7631, 7632, 7633, 1138, 1325, 1331, + 1331, 1331, 674, 674, 7663, 7589, 674, 7584, 7602, 674, + 674, 7674, 7658, 7665, 1326, 1326, 1326, 1326, 1326, 1326, + 7609, 674, 674, 1283, 7675, 7667, 7597, 7599, 6740, 7676, + + 7600, 7619, 4593, 6741, 674, 674, 7636, 7620, 674, 7622, + 7659, 7659, 7659, 7660, 2112, 7621, 7624, 7635, 674, 674, + 7623, 7677, 674, 1283, 7664, 674, 674, 1392, 1283, 674, + 6742, 7666, 674, 674, 674, 674, 674, 7678, 674, 7670, + 7634, 1325, 7679, 6745, 7668, 7669, 674, 674, 674, 674, + 674, 7680, 674, 7681, 7672, 1283, 7671, 1326, 1326, 1326, + 1326, 1326, 1326, 674, 674, 7682, 1283, 674, 1283, 1331, + 674, 674, 7683, 7684, 7673, 7685, 1262, 7686, 674, 674, + 7687, 7688, 674, 7689, 7690, 7691, 7695, 7696, 7697, 6814, + 7661, 7692, 7692, 7692, 7692, 7692, 7692, 7662, 7772, 7773, + + 1337, 7780, 1338, 7637, 1339, 6883, 7816, 1490, 6883, 1491, + 7838, 674, 674, 7841, 1341, 674, 6965, 1342, 1343, 7638, + 7638, 7638, 7638, 7638, 7638, 7638, 7638, 7638, 7638, 7638, + 7638, 7638, 7638, 7638, 7639, 7638, 7638, 7638, 7638, 7638, + 7638, 7638, 7638, 7638, 7638, 7638, 7638, 7638, 7638, 7638, + 7638, 7638, 7638, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7641, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7638, 7638, 7638, 7638, + 7638, 7638, 7640, 7640, 7642, 6801, 7643, 7644, 7640, 7645, + 7646, 7640, 7640, 7647, 7648, 7649, 7640, 7650, 7651, 7652, + + 7640, 7653, 7640, 7654, 7640, 7640, 7640, 7640, 7638, 7638, + 7655, 7638, 1325, 1239, 1239, 1239, 1239, 2272, 1242, 1242, + 1242, 1242, 1265, 1266, 7868, 7701, 6797, 6797, 1326, 1326, + 1326, 1326, 1326, 1326, 674, 674, 7699, 1283, 674, 7869, + 1331, 674, 674, 6797, 7870, 674, 6797, 7698, 674, 674, + 7702, 6797, 674, 6797, 674, 674, 674, 674, 674, 7704, + 674, 6797, 7705, 7703, 674, 674, 1273, 6797, 674, 1240, + 7700, 1337, 2485, 1338, 1243, 1339, 6797, 7656, 6824, 6797, + 6797, 7657, 6797, 6797, 7693, 1341, 1325, 2308, 1342, 1343, + 674, 1490, 6797, 1491, 674, 7706, 6797, 4584, 6797, 7871, + + 7694, 6921, 6814, 6814, 7872, 7707, 7710, 7711, 6928, 7708, + 7712, 1283, 674, 674, 7873, 7709, 674, 7713, 7715, 6814, + 7714, 6883, 6814, 7728, 6884, 7874, 1283, 6814, 7718, 6814, + 7875, 4584, 7717, 1283, 7716, 7876, 7719, 6814, 7721, 7877, + 7723, 7720, 7878, 6814, 7017, 7922, 7724, 7747, 7727, 1283, + 724, 7722, 6814, 7725, 4584, 6814, 6814, 7917, 6814, 6814, + 674, 674, 7737, 7926, 674, 7726, 674, 674, 6814, 724, + 674, 4584, 6814, 4593, 6814, 7924, 7730, 7731, 724, 7729, + 674, 674, 674, 674, 674, 7732, 674, 1473, 7733, 674, + 674, 674, 674, 724, 674, 2309, 674, 674, 7752, 7734, + + 674, 2363, 674, 674, 674, 674, 674, 4593, 674, 4584, + 7735, 674, 7736, 4584, 7749, 674, 4584, 674, 674, 7737, + 4584, 674, 7738, 7738, 7738, 7738, 7738, 7738, 674, 674, + 4593, 7751, 674, 7918, 7739, 674, 674, 674, 674, 674, + 724, 674, 7742, 674, 2309, 4584, 674, 4593, 7741, 674, + 674, 7740, 4584, 674, 674, 674, 2309, 7929, 674, 724, + 6794, 674, 674, 674, 674, 674, 7743, 674, 724, 7744, + 674, 674, 7753, 724, 674, 7745, 7925, 7748, 2485, 7754, + 7746, 7750, 674, 674, 724, 4593, 674, 724, 7755, 4593, + 7729, 7973, 4593, 724, 7756, 7759, 4593, 7774, 674, 674, + + 7758, 7757, 674, 6923, 674, 674, 674, 674, 674, 7760, + 674, 674, 674, 7941, 724, 674, 1392, 7762, 7762, 7762, + 7762, 4593, 7770, 674, 674, 674, 674, 674, 4593, 674, + 7761, 7762, 7762, 7762, 7762, 724, 7762, 7762, 7762, 7762, + 7940, 5793, 5793, 5793, 5793, 7769, 674, 674, 7771, 5794, + 674, 674, 674, 724, 7985, 674, 674, 674, 2309, 7931, + 674, 6864, 6864, 6864, 6864, 6864, 6864, 6864, 6865, 5795, + 674, 674, 6900, 1636, 674, 724, 7777, 7776, 6854, 674, + 674, 7778, 7942, 674, 674, 674, 2309, 724, 674, 724, + 674, 674, 6854, 1283, 674, 7930, 6855, 6854, 724, 7764, + + 7779, 724, 7768, 674, 674, 1473, 2579, 674, 674, 674, + 6855, 7763, 674, 7934, 724, 6855, 7765, 7765, 7765, 7765, + 5797, 674, 674, 7796, 5794, 674, 7943, 724, 2309, 724, + 7766, 7784, 7766, 7767, 7785, 7767, 7767, 7767, 7767, 7767, + 7767, 7932, 674, 674, 5795, 7775, 7781, 7786, 6867, 7782, + 7787, 724, 6867, 674, 674, 674, 674, 674, 7788, 674, + 7790, 7789, 2308, 7791, 8065, 674, 1490, 7783, 1491, 674, + 7793, 674, 674, 7792, 7794, 674, 2363, 5796, 1473, 674, + 674, 674, 674, 674, 7795, 674, 674, 674, 674, 674, + 674, 8066, 674, 7956, 2461, 5797, 7936, 674, 674, 674, + + 674, 674, 724, 674, 7797, 674, 674, 2485, 724, 674, + 7799, 7935, 7798, 674, 674, 674, 674, 674, 724, 674, + 2363, 7804, 7804, 7804, 7804, 7804, 674, 674, 674, 674, + 674, 2363, 674, 2363, 7800, 724, 674, 7801, 7938, 7802, + 674, 674, 674, 2306, 7933, 674, 674, 674, 6938, 7803, + 674, 2532, 7967, 2309, 674, 674, 7806, 724, 674, 674, + 674, 674, 674, 674, 724, 674, 7937, 1473, 674, 674, + 7805, 674, 7807, 724, 674, 2309, 674, 674, 674, 674, + 674, 7809, 674, 724, 7927, 1473, 7092, 7808, 674, 674, + 674, 674, 674, 7951, 674, 674, 674, 2687, 2485, 674, + + 7810, 7813, 724, 674, 674, 7811, 7812, 674, 674, 674, + 674, 674, 674, 724, 674, 674, 674, 674, 674, 674, + 7201, 674, 7814, 674, 674, 7815, 7819, 674, 674, 674, + 674, 674, 674, 7817, 674, 1392, 674, 674, 7701, 7818, + 674, 7952, 674, 674, 674, 674, 674, 724, 674, 7821, + 2308, 7822, 7820, 674, 7823, 7824, 1491, 674, 674, 674, + 674, 674, 674, 7702, 674, 7825, 674, 674, 674, 674, + 7826, 7945, 674, 674, 674, 7827, 7829, 674, 2363, 7828, + 674, 674, 674, 674, 674, 7830, 674, 724, 7840, 2309, + 674, 674, 7113, 7831, 674, 2363, 674, 674, 674, 674, + + 674, 7946, 674, 674, 674, 674, 674, 674, 724, 674, + 7833, 674, 674, 1392, 7832, 674, 724, 8067, 674, 674, + 674, 674, 674, 7949, 674, 7834, 2308, 7835, 7974, 674, + 7839, 7849, 1491, 674, 1325, 7836, 674, 674, 724, 724, + 674, 7957, 2461, 674, 674, 674, 674, 674, 7962, 674, + 6943, 6943, 6943, 6943, 6943, 6943, 724, 7842, 724, 1283, + 674, 674, 674, 674, 674, 7976, 674, 7850, 724, 7948, + 674, 674, 7843, 7844, 674, 7980, 674, 7851, 724, 7848, + 674, 674, 7857, 724, 7845, 674, 7845, 7846, 2309, 7847, + 7847, 7847, 7847, 7847, 7847, 2532, 674, 674, 7852, 7939, + + 674, 724, 2461, 674, 674, 7958, 724, 674, 7853, 7853, + 7853, 7854, 674, 674, 7954, 7969, 674, 7858, 7856, 8068, + 674, 1490, 7859, 1491, 674, 674, 674, 674, 674, 674, + 724, 674, 7860, 724, 2306, 2308, 674, 7866, 674, 1490, + 674, 1491, 674, 674, 674, 7886, 7861, 674, 674, 674, + 7979, 724, 674, 674, 674, 7862, 2305, 674, 7863, 674, + 674, 7865, 7977, 674, 674, 674, 674, 674, 674, 8069, + 674, 7864, 724, 2532, 674, 674, 674, 674, 7879, 724, + 674, 7867, 674, 674, 674, 7881, 674, 7882, 674, 1473, + 8070, 2309, 674, 674, 7880, 7855, 674, 674, 674, 674, + + 674, 674, 7963, 674, 7883, 7885, 7888, 1473, 724, 7884, + 674, 674, 674, 674, 674, 8071, 674, 674, 674, 2306, + 7955, 674, 7890, 1636, 7897, 7889, 7964, 674, 674, 7887, + 7893, 674, 724, 7891, 674, 674, 724, 7966, 674, 724, + 7892, 674, 674, 674, 674, 674, 1558, 674, 7894, 674, + 674, 674, 674, 674, 7978, 674, 2306, 724, 674, 674, + 7947, 7895, 674, 7898, 674, 674, 724, 7896, 674, 674, + 674, 724, 7998, 674, 724, 7899, 674, 674, 674, 674, + 674, 7908, 674, 2309, 7901, 8036, 7900, 674, 7903, 674, + 7902, 674, 7910, 674, 674, 674, 2309, 7905, 674, 674, + + 674, 1473, 7915, 674, 674, 674, 7904, 7906, 674, 7981, + 674, 1490, 724, 1491, 674, 674, 674, 674, 674, 674, + 7911, 674, 2309, 7907, 7909, 2532, 674, 674, 7912, 7029, + 674, 724, 724, 2309, 7960, 674, 674, 2338, 1325, 674, + 2579, 674, 674, 674, 674, 674, 6797, 674, 724, 7914, + 7982, 7913, 724, 7916, 7010, 7010, 7010, 7010, 7010, 7010, + 674, 674, 7919, 1283, 674, 674, 674, 674, 674, 674, + 7701, 674, 7796, 2461, 7013, 7013, 7013, 7013, 7013, 7013, + 7013, 7014, 674, 674, 674, 674, 674, 7920, 2503, 7921, + 7968, 2687, 2666, 7944, 7718, 7702, 724, 7950, 7953, 724, + + 7784, 7961, 7928, 7785, 2532, 1636, 1283, 2532, 2532, 7965, + 724, 6938, 7971, 724, 724, 7786, 7788, 7790, 7787, 7789, + 7791, 724, 6814, 2531, 1636, 724, 8008, 1652, 724, 1653, + 7983, 8072, 2531, 724, 7959, 7986, 1652, 724, 1653, 724, + 724, 724, 7972, 2666, 2687, 2532, 7975, 724, 724, 724, + 724, 724, 1558, 7804, 7804, 7804, 7804, 7804, 2531, 7988, + 7989, 7015, 7987, 7993, 1653, 7015, 1325, 7991, 724, 7984, + 7990, 2532, 724, 724, 724, 724, 2687, 724, 7701, 724, + 724, 724, 1326, 1326, 1326, 1326, 1326, 1326, 2579, 2579, + 2579, 1283, 2579, 7992, 1331, 7994, 724, 724, 724, 1636, + + 724, 7995, 7970, 7702, 724, 2579, 7997, 7996, 1558, 7840, + 8002, 724, 724, 724, 724, 724, 8000, 724, 8003, 724, + 2531, 7849, 7999, 8006, 8001, 1530, 1653, 1531, 724, 724, + 8005, 8007, 8073, 8004, 8010, 724, 724, 8011, 1652, 1533, + 1653, 8012, 1534, 1535, 1325, 5042, 724, 724, 8013, 724, + 724, 7853, 7853, 7853, 7854, 724, 724, 8017, 724, 8018, + 1326, 1326, 1326, 1326, 1326, 1326, 2529, 8009, 8014, 1283, + 8015, 724, 1331, 2532, 724, 724, 724, 724, 724, 724, + 8019, 8016, 724, 8022, 8020, 8021, 724, 8025, 724, 2532, + 8026, 7886, 2666, 724, 8023, 724, 1636, 724, 8029, 724, + + 8027, 8028, 8033, 1530, 8037, 1531, 724, 8032, 724, 8030, + 724, 8024, 724, 8043, 724, 8034, 8031, 1533, 724, 724, + 1534, 1535, 7923, 7844, 724, 724, 8038, 8047, 8035, 2532, + 8075, 7915, 724, 724, 7845, 724, 7845, 7846, 7855, 7847, + 7847, 7847, 7847, 7847, 7847, 8039, 8040, 8042, 8048, 8055, + 724, 8044, 8041, 1636, 724, 1636, 8045, 8049, 2532, 724, + 1652, 8051, 1653, 8050, 724, 724, 2555, 8054, 2532, 724, + 8056, 724, 8046, 8076, 724, 7887, 2532, 724, 724, 8053, + 8052, 724, 724, 724, 1636, 2531, 724, 724, 8058, 1652, + 1636, 1653, 8059, 8077, 2703, 8057, 8060, 724, 724, 8063, + + 724, 724, 2666, 724, 724, 8061, 724, 8062, 8074, 724, + 8078, 724, 8079, 8080, 8081, 724, 8064, 8064, 8064, 8064, + 8064, 8064, 8082, 724, 8083, 8084,11275,11275, 8085, 7223, + 7225, 8086, 8087, 8088, 8089, 5046, 8090, 8091, 7232, 8092, + 8091, 7232, 8093,11275, 8095, 8096,11275, 7236, 7236, 7236, + 7236, 8097, 8098, 895, 8099, 8100, 8091,11275,11275, 8091, + 11275,11275,11275, 8111,11275,11275, 724, 8103, 8091,11275, + 11275, 8091,11275,11275, 8091,11275,11275, 8091,11275,11275, + 11275, 2532, 8114,11275, 8115, 1007, 8121, 724, 8110, 7258, + 7258, 7258, 7258, 8112, 8112, 8112, 8112, 8118, 1007, 8120, + + 8113, 1007, 1007, 8119, 1007, 8122, 1007, 1007, 8124, 1007, + 8123, 8126, 1007, 1007, 7277, 8125, 8131, 7278, 8094, 8102, + 7279, 7280, 8127, 1007, 7281, 8129, 1007, 8132, 1007, 8101, + 8128, 8106, 8136, 6797, 7237, 1007, 6797, 8108, 8137, 1806, + 8133, 8105, 1806, 1007, 8138, 1806, 1806, 8107, 8140, 1806, + 8130, 8104, 1007, 3173, 1007, 7729, 8141, 8139, 1007, 8143, + 8109, 1007, 8142, 7294, 7296, 2865, 8144, 8145, 8147, 1007, + 7301, 8146, 8148, 8151, 2975, 1007, 1007, 1007, 2868, 1007, + 1007, 1007, 8113, 1807, 8135, 7307, 1007, 2866, 1806, 1806, + 7737, 2867, 7719, 2005, 1807, 1806, 8149, 1007, 8134, 1808, + + 1808, 1808, 1808, 1808, 1808, 1007, 1007, 8157, 1806, 6814, + 1806, 1812, 6814, 8150, 1007, 1007, 7295, 7297, 8162, 1806, + 8152, 1007, 1007, 7302, 8154, 2868, 8156, 8153, 2868, 8155, + 8158, 1007, 7283, 1007, 1007, 8160, 1007, 3173, 1007, 8161, + 4584, 8163, 1818, 8165, 1819, 1007, 8164, 1007, 3173, 4584, + 8166, 4584, 1007, 4584, 4584, 8116, 1821, 8172, 1007, 1822, + 1823, 1807, 8173, 8174, 8180, 8175, 8175, 8175, 8176, 7348, + 8181, 1007, 1007, 5263, 5263, 6380, 8182, 1808, 1808, 1808, + 1808, 1808, 1808, 5263, 5263, 5263, 1806, 5263, 8167, 1812, + 7354, 8183, 2863, 7449, 1806, 8184, 5263, 2862, 7343, 8169, + + 5263, 8170, 1007, 1007, 1007, 8186, 8159, 8187, 8188, 8171, + 1007, 8185, 8168, 1007, 8189, 1806, 4593, 1007, 2868, 7412, + 1818, 8191, 1819, 1007, 2868, 4593, 8192, 4593, 8190, 4593, + 4593, 8193, 8211, 8117, 1821, 1007, 2868, 1822, 1823, 8177, + 1007, 1007, 1007, 8195, 8196, 1007, 8212, 1007, 1007, 1007, + 8198, 8216, 8178, 5257, 5257, 5257, 5257, 5257, 5258, 5257, + 5257, 5257, 5259, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5260, 5260, 5260, 5260, 5260, 5260, + 5257, 5257, 5257, 5261, 5257, 5257, 5262, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5257, 5257, 5257, 5257, 5257, 5257, 5263, 5264, 5263, 5265, + 6379, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 8179, + 5263, 5266, 5263, 5263, 5267, 5268, 5263, 5263, 5263, 5263, + 5263, 5263, 5257, 5257, 5257, 5257, 6864, 6864, 6864, 7358, + 8194, 2865, 8197, 7784, 1807, 6883, 8199, 8217, 7376, 8200, + 1007, 1007, 8201, 1007, 8203, 8204, 8204, 8205, 7386, 8214, + 8206, 2866, 8209, 8207, 1806, 2867, 8215, 2005, 2975, 1806, + 1007, 1007, 8208, 1806, 8210, 8213, 7388, 1007, 2865, 7389, + 7390, 8218, 1007, 1806, 8219, 8220, 7397, 8221, 1007, 8222, + + 7399, 8223, 1007, 8226, 1007, 7401, 7402, 8224, 8228, 8225, + 8227, 1806, 8231, 1007, 1806, 1806, 1007, 1007, 8229, 1007, + 8236, 1806, 2868, 2868, 8202, 1806, 7775, 6938, 1007, 3173, + 1806, 1806, 2975, 6867, 1007, 8202, 2865, 2975, 1007, 1007, + 3136, 1007, 8232, 2975, 8237, 1007, 1007, 1007, 1007, 8241, + 8230, 1007, 1007, 7400, 1007, 8235, 8238, 1007, 8255, 7403, + 8233, 8233, 8233, 8233, 8233, 1007, 7416, 7416, 7416, 7416, + 7416, 7416, 7416, 7417, 7419, 7419, 7419, 7419, 2865, 7419, + 7419, 7419, 7420, 8239, 8251, 7445, 8257, 1007, 1007, 1007, + 3173, 8242, 8240, 8245, 1007, 1007, 8243, 1007, 1806, 1007, + + 2865, 8246, 8244, 1007, 8260, 7447, 2865, 1806, 8247, 8234, + 1007, 1007, 2862, 1007, 8248, 1007, 1007, 1007, 1007, 8254, + 8249, 1007, 8250, 7451, 8253, 8258, 1007, 2866, 8261, 8252, + 1806, 8256, 8259, 2005, 1007, 1007, 8262, 1007, 7452, 1007, + 1007, 1007, 8264, 8265, 8266, 8269, 8263, 8129, 1806, 1007, + 1007, 8267, 1007, 7418, 1007, 7464, 8270, 7418, 2975, 8268, + 1007, 7421, 8271, 1806, 7467, 2868, 7421, 1007, 8273, 8272, + 7472, 7473, 8130, 1007, 7474, 8275, 1007, 1007, 1007, 2975, + 1806, 1007, 8274, 8276, 2862, 7478, 7840, 1007, 8282, 1806, + 8278, 1007, 3136, 1007, 8300, 1806, 1806, 1007, 8277, 1806, + + 1007, 8279, 8283, 2866, 1807, 8284, 1007, 8280, 1007, 2005, + 1806, 8289, 8285, 1007, 8296, 1007, 8288, 1007, 8281, 1007, + 7485, 7485, 7485, 7485, 7485, 7485, 8290, 8291, 8292, 1806, + 7500, 8293, 8295, 1007, 8301, 1007, 1007, 1007, 8304, 8297, + 1007, 7853, 7853, 7853, 8294, 2868, 7505, 8299, 1007, 8286, + 1007, 2867, 8298, 2005, 1007, 1806, 8302, 1007, 8306, 8313, + 7845, 8303, 7845, 7846, 2863, 8287, 8287, 8287, 8287, 8287, + 8287, 1806, 8305, 1007, 1007, 8307, 1007, 1007, 8308, 8309, + 8310, 1007, 3136, 1007, 8311, 1007, 8314, 8315, 8318, 8319, + 1007, 8316, 1007, 8320, 8321, 8312, 8317, 8322, 8323, 8324, + + 8325, 8326, 8327, 8329, 1007, 8336, 1007, 8331, 8332, 8330, + 2865, 2866, 8328, 2868, 1007, 2867, 1007, 2005, 8338, 8334, + 1007, 1007, 8335, 1007, 1007, 8333, 1007, 8339, 7855, 8337, + 8340, 1007, 8343, 8344, 1007, 1007, 8348, 1007, 8347, 8349, + 1007, 8341, 1007, 1007, 1007, 8345, 8346, 2868, 8342, 1007, + 8350, 8351, 8353, 8360, 1007, 8355, 8356, 8352, 1007, 8354, + 2865, 8361, 8357, 2868, 1007, 2868, 2867, 2865, 2005, 8362, + 1007, 8363, 1007, 8364, 2926, 8368, 2866, 1007, 8358, 1007, + 2867, 1807, 2005, 1007, 2868, 1007, 8359, 1007, 8365, 7887, + 8366, 1007, 1007, 8369, 2868, 8367, 8370, 7565, 7565, 7565, + + 7565, 7565, 7565, 7573, 8371, 7574, 1806, 1007, 8372, 8373, + 1007, 7013, 7013, 7013, 7571, 8374, 7580, 8375, 3179, 1007, + 8377, 8327, 1007, 2868, 8378, 1007, 3203, 8376, 1806, 1007, + 1806, 2048, 2049, 7585, 7586, 7587, 7585, 2048, 2049, 1806, + 8380, 8380, 8380, 8380, 2048, 2049, 3136, 1007, 1062, 8381, + 8382, 8383, 8381, 1636, 724, 8385, 724, 2057, 8386, 8387, + 8388, 8389, 2062, 2063, 724, 1007, 2062, 2063, 7598, 724, + 2062, 2063, 2062, 2063, 4584, 724, 8397, 8394, 8395, 724, + 8398, 1636, 8396, 724, 8401, 2112, 8402, 8403, 7588, 8400, + 8400, 8400, 8400, 8400, 8400, 5585, 2053, 724, 7015, 8404, + + 8405, 8407, 2121, 2121, 7588, 2058, 2121, 2121, 8384, 8379, + 8408, 2121, 8409, 8418, 2121, 8419, 8091, 7630, 8406, 8091, + 8420, 8103, 7633, 7756, 1118, 1118, 1118, 1118, 1118, 1331, + 8393, 8427, 8428, 8392, 8391, 1331, 1138, 8431, 8432, 8438, + 8390, 8417, 8417, 8417, 8417, 8417, 8417, 8439, 8440, 8443, + 4593, 8399, 8422, 8422, 8422, 8422, 8422, 8422, 8433, 8434, + 8441, 8412, 8435, 8423, 8436, 8444, 2112, 8437, 8442, 8411, + 8410, 8445, 8446, 8424, 8447, 8450, 8427, 8453, 674, 8413, + 8415, 8448, 8452, 8456, 8416, 8414, 7659, 7659, 7659, 7659, + 674, 674, 8458, 8449, 7853, 7853, 7853, 7854, 674, 674, + + 8455, 8457, 8460, 8461, 8464, 8104, 1325, 1490, 2309, 1491, + 674, 8466, 8467, 8463, 2338, 674, 8468, 8469, 8470, 8471, + 8472, 8473, 1326, 1326, 1326, 1326, 1326, 1326, 8462, 674, + 8465, 1283, 8474, 8475, 1331, 8476, 8477, 8478, 8479, 8480, + 8481, 8483, 8487, 8488, 674, 674, 8490, 8482, 674, 7701, + 674, 674, 674, 8518, 8489, 674, 8521, 674, 674, 674, + 674, 674, 674, 8522, 674, 1337, 8425, 1338, 8491, 1339, + 8492, 8523, 8519, 7662, 7702, 1473, 674, 8560, 8561, 2485, + 8524, 8459, 1342, 1343, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8429, + + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8426, 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8426, 8426, 8428, 8426, 1325, 7659, 7659, + 7659, 7660, 2272, 8520, 1265, 1266, 6797, 6797, 6797, 8563, + 6797, 6797, 6797, 1326, 1326, 1326, 1326, 1326, 1326, 6797, + + 6797, 6797, 1283, 6797, 6797, 1331, 1283, 6797, 6797, 674, + 6797, 8569, 6797, 674, 6797, 8493, 8571, 6797, 2308, 2309, + 674, 674, 1490, 6797, 1491, 8525, 6797, 8562, 8526, 674, + 4584, 8485, 6797, 4584, 674, 8517, 1337, 6797, 1338, 8451, + 1339, 6797, 8497, 6797, 8529, 674, 4584, 4584, 8494, 4584, + 1341, 8505, 4584, 1342, 1343, 4584, 8495, 8496, 8454, 8486, + 8504, 8502, 6814, 6814, 8498, 7662, 6814, 6814, 6814, 8499, + 8507, 8500, 8503, 8508, 8506, 6814, 6814, 6814, 8501, 6814, + 6814, 8509, 8510, 6814, 6814, 8511, 6814, 8512, 6814, 8514, + 6814, 8516, 8513, 6814, 4584, 8530, 8515, 2308, 8527, 6814, + + 674, 1490, 6814, 1491, 8532, 8534, 4593, 8531, 6814, 8535, + 2309, 8533, 4584, 6814, 8528, 4584, 4584, 6814, 8536, 6814, + 4584, 674, 4593, 4593, 674, 4593, 674, 8555, 4593, 8554, + 8568, 4593, 674, 8557, 2306, 7784, 8584, 8564, 7784, 8542, + 8543, 7762, 7762, 7762, 7762, 8566, 8537, 7762, 7762, 7762, + 7762, 674, 8556, 5793, 5793, 5793, 5793, 674, 674, 2363, + 8567, 5794, 8572, 7786, 8570, 674, 7786, 674, 2309, 8541, + 4593, 8538, 8539, 8576, 674, 7784, 8540, 7786, 7785, 7788, + 7787, 5795, 7788, 7788, 7790, 8558, 7789, 7790, 4593, 674, + 8565, 4593, 4593, 8573, 674, 674, 4593, 1473, 8575, 674, + + 674, 7790, 8544, 1283, 7791, 1283, 2503, 8574, 8549, 8559, + 674, 1283, 8577, 674, 5796, 674, 8578, 8579, 8585, 674, + 8545, 8546, 8546, 8546, 8546, 8553, 6855, 7796, 8580, 1283, + 8581, 674, 5797, 6856, 674, 8547, 1325, 8547, 8548, 674, + 8548, 8548, 8548, 8548, 8548, 8548, 8582, 2363, 674, 674, + 674, 674, 1283, 8591, 8588, 674, 8594, 674, 8583, 674, + 8587, 1283, 2308, 8586, 2309, 8589, 1490, 8593, 1491, 674, + 674, 674, 8599, 8592, 674, 674, 2305, 8595, 8597, 8596, + 2308, 8602, 6854, 4725, 1490, 8598, 1491, 3430, 8600, 8601, + 674, 8604, 674, 674, 674, 674, 8609, 8607, 674, 7838, + + 6855, 7765, 7765, 7765, 7765, 8603, 8606, 8610, 8612, 674, + 7849, 6927, 674, 8608, 8605, 8547, 8613, 8547, 8548, 8637, + 8548, 8548, 8548, 8548, 8548, 8548, 2309, 8621, 674, 5795, + 8611, 8614, 7844, 8618, 8623, 1283, 8619, 674, 2309, 674, + 674, 8638, 674, 7845, 8639, 7845, 7846, 8627, 7846, 7846, + 7846, 7846, 7846, 7846, 8626, 8615, 8631, 1283, 674, 674, + 8640, 7846, 6854, 7846, 7846, 7846, 7846, 7846, 7846, 7846, + 8620, 7846, 7846, 7846, 7846, 7846, 7846, 8636, 8641, 8642, + 6855, 5793, 5793, 5793, 5793, 7853, 7853, 7853, 7853, 5794, + 7853, 7853, 7853, 7854, 8624, 674, 8617, 674, 7767, 8625, + + 7767, 7767, 7767, 7767, 7767, 7767, 674, 8629, 8616, 5795, + 7846, 674, 7847, 7847, 7847, 7847, 7847, 7847, 1283, 8630, + 8628, 1283, 674, 8633, 8632, 674, 8643, 674, 8634, 674, + 8644, 8645, 8646, 2485, 674, 2309, 674, 674, 8635, 674, + 8648, 674, 5796, 8651, 8647, 7886, 2309, 8649, 674, 8616, + 8657, 8650, 8652, 2309, 8653, 8653, 8653, 8654, 2309, 8659, + 5797, 8550, 8550, 8550, 8550, 674, 8661, 8671, 8658, 5794, + 1283, 674, 8622, 674, 674, 8681, 674, 8622, 7767, 7917, + 7767, 7767, 7767, 7767, 7767, 7767, 1392, 8660, 8662, 5795, + 674, 8663, 8664, 674, 674, 674, 674, 8667, 674, 1473, + + 8656, 674, 674, 8665, 8675, 674, 674, 674, 674, 8666, + 8655, 8669, 8670, 674, 8668, 674, 8676, 8672, 8673, 674, + 2338, 674, 5796, 2309, 7915, 8674, 8677, 674, 1392, 7887, + 8680, 674, 674, 8682, 8683, 8684, 8678, 8551, 2485, 674, + 5797, 8552, 8679, 674, 674, 8687, 724, 8685, 724, 1283, + 724, 6797, 8517, 8693, 724, 724, 5971, 724, 8694, 8520, + 724, 724, 724, 8695, 8690, 8691, 8686, 1325, 724, 8696, + 724, 2531, 1636, 724, 724, 1652, 8519, 1653, 8697, 724, + 8555, 724, 724, 1326, 1326, 1326, 1326, 1326, 1326, 8698, + 8524, 8699, 1283, 724, 724, 1331, 8701, 8702, 8703, 724, + + 724, 724, 8704, 2532, 2532, 8556, 8557, 8700, 8709, 724, + 8568, 8710, 8692, 8707, 2531, 8706, 8564, 724, 1652, 724, + 1653, 724, 724, 8711, 724, 724, 1530, 6814, 1531, 2532, + 2579, 8708, 8712, 8714, 8723, 724, 1636, 8713, 8688, 724, + 1533, 8718, 724, 1534, 1535, 1325, 724, 724, 8715, 724, + 8716, 724, 8717, 8719, 724, 8720, 724, 8585, 8558, 724, + 724, 1326, 1326, 1326, 1326, 1326, 1326, 8721, 724, 8565, + 1283, 724, 724, 1331, 724, 8724, 724, 724, 724, 8726, + 2579, 8728, 8705, 724, 2531, 2703, 8725, 8593, 1652, 2532, + 1653, 8722, 8730, 8727, 724, 8729, 2529, 724, 8738, 724, + + 724, 4957, 8731, 724, 1530, 3666, 1531, 8689, 8732, 724, + 724, 8734, 8609, 8735, 724, 724, 724, 8740, 1533, 2531, + 8739, 1534, 1535, 1652, 8733, 1653, 724, 8736, 724, 724, + 8737, 8605, 8742, 724, 8741, 8745, 724, 8618, 8747, 8746, + 724, 724, 724, 724, 7117, 2532, 2532, 724, 8743, 724, + 8752, 8748, 724, 724, 8744, 724, 8749, 8751, 8750, 8753, + 724, 8757, 724, 2687, 8636, 724, 8754, 724, 724, 8755, + 8758, 8759, 724, 8756, 724, 724, 8761, 2532, 8760, 724, + 8764, 8767, 2532, 724, 1558, 8762, 8769, 8765, 724, 8763, + 2532, 724, 8771, 2532, 8653, 8653, 8653, 8654, 8766, 724, + + 724, 724, 8770, 8768, 8773, 8774, 724, 724, 724, 724, + 8777, 724, 1636, 724, 724, 8772, 8775, 8781, 724, 724, + 724, 724, 8776, 8779, 8780, 724, 724, 8778, 8784, 8782, + 724, 8783, 724, 8785, 724, 2532, 724, 8787, 2555, 724, + 8791, 2687, 8786, 1558, 724, 724, 8792, 724, 8793, 8790, + 8655, 724, 724, 724, 8788, 8794, 1636, 8789, 724, 724, + 724, 8795, 724, 8797, 8798, 724, 8799, 8686, 8800, 8801, + 8802, 8803, 8804, 8796, 8805, 8806, 8807, 8808, 8809, 8810, + 8812, 8813, 8814, 8815, 8810, 8816, 8817, 8819, 8810, 8091, + 8820, 8821, 8091, 8822, 8823, 8825, 724, 8827, 8828, 8829, + + 5046, 8830, 8831, 8103, 8832, 8833, 8834, 8835, 8836, 8837, + 8838, 8826, 8839, 724, 8112, 8112, 8112, 8112, 8840, 8843, + 8846, 8113, 1007, 1007, 8847, 8848, 8844, 8124, 8851, 8849, + 1007, 8853, 8811, 1007, 1007, 8850, 8129, 8811, 6797, 8818, + 2868, 8811, 8855, 8845, 1007, 1007, 1007, 8824, 1007, 8854, + 2866, 1007, 1806, 8852, 2867, 8859, 2005, 1007, 8860, 1007, + 8861, 8130, 6797, 8519, 8865, 8866, 8864, 8868, 1007, 8858, + 1007, 2862, 8870, 8871, 8872, 1007, 1007, 1007, 1007, 8873, + 8862, 8874, 8524, 8876, 8877, 8869, 1007, 8104, 1007, 8882, + 1007, 8158, 2866, 1007, 2865, 1007, 2867, 8880, 2005, 8875, + + 2868, 1007, 8883, 8113, 1807, 8857, 5263, 4584, 1007, 2868, + 1007, 4584, 1007, 8881, 6814, 4584, 1806, 1007, 8867, 4584, + 1808, 1808, 1808, 1808, 1808, 1808, 8174, 8856, 8903, 1806, + 8918, 2866, 1812, 8863, 8919, 2867, 8884, 2005, 6814, 1007, + 1007, 8890, 2866, 4584, 1007, 1007, 2867, 1007, 2005, 1007, + 2866, 1806, 8896, 2868, 2867, 1007, 2005, 8898, 2866, 8891, + 1007, 1007, 2867, 1818, 2005, 1819, 8878, 1007, 1007, 8901, + 8886, 5263, 1007, 8879, 2868, 5263, 1007, 1821, 8894, 8885, + 1822, 1823, 1007, 4593, 8841, 1807, 8888, 4593, 8893, 1007, + 8897, 8889, 8908, 8899, 5263, 4593, 8175, 8175, 8175, 8175, + + 8904, 1808, 1808, 1808, 1808, 1808, 1808, 8895, 8887, 8922, + 1806, 8905, 1007, 1812, 8175, 8175, 8175, 8176, 8900, 4593, + 8906, 8558, 2975, 8907, 8909, 1007, 8910, 1007, 7784, 8912, + 8911, 8199, 1007, 7786, 8916, 2868, 7786, 1007, 7786, 1007, + 1007, 8913, 1806, 1007, 1818, 8902, 1819, 1007, 1007, 1007, + 8203, 8204, 8204, 8203, 7790, 8915, 1806, 7790, 1821, 2865, + 7790, 1822, 1823, 8914, 8565, 8842, 1806, 8204, 8204, 8204, + 8204, 8214, 8917, 1007, 8215, 8920, 8921, 1007, 8923, 8924, + 3203, 1007, 8925, 8178, 8926, 8927, 8928, 8935, 1806, 8940, + 1007, 1007, 1007, 1007, 1007, 1007, 1806, 8942, 8943, 1806, + + 1007, 8178, 5257, 5257, 5257, 5257, 5257, 5258, 5257, 5257, + 5257, 5259, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5260, 5260, 5260, 5260, 5260, 5260, 5257, + 5257, 5257, 5261, 5257, 5257, 5262, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5257, + 5257, 5257, 5257, 5257, 5257, 5263, 5264, 5263, 5265, 8892, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5266, 5263, 5263, 5267, 5268, 5263, 5263, 5263, 5263, 5263, + 5263, 5257, 5257, 5257, 5257, 7372, 8929, 8930, 7373, 8203, + + 8204, 8204, 8205, 8931, 8932, 2866, 8936, 1807, 1007, 2867, + 1007, 2005, 8937, 1007, 8941, 8939, 8945, 1007, 2868, 2975, + 8934, 8933, 8946, 1007, 1007, 1007, 1007, 1806, 1007, 1007, + 8938, 1007, 1806, 1007, 1007, 8944, 8947, 1007, 8949, 8948, + 8593, 8951, 1007, 8952, 2866, 8955, 2868, 1007, 2867, 2863, + 2005, 8957, 8953, 1007, 1007, 8950, 1007, 8958, 8966, 1007, + 8202, 1007, 1007, 1007, 8956, 5496, 8954, 1007, 1007, 4077, + 8960, 8964, 8959, 8269, 1007, 1007, 2866, 1007, 1007, 8968, + 2867, 8965, 2005, 8969, 2868, 8971, 1007, 1007, 8961, 8961, + 8961, 8962, 1007, 8967, 1007, 8970, 1007, 1007, 1806, 8973, + + 1007, 8974, 1007, 1007, 8972, 1007, 8975, 8977, 8976, 1007, + 1007, 2868, 8980, 8978, 8981, 1007, 1007, 8983, 8982, 1007, + 8985, 8979, 8289, 8286, 2868, 2868, 8988, 8989, 8986, 1007, + 1007, 1007, 1007, 1007, 7845, 8984, 7845, 7846, 1007, 7846, + 7846, 7846, 7846, 7846, 7846, 8992, 8994, 1806, 1806, 7846, + 1007, 8287, 8287, 8287, 8287, 8287, 8287, 8987, 8990, 8995, + 1806, 1007, 8991, 8996, 1007, 7853, 7853, 7853, 8294, 8993, + 1007, 1007, 8997, 8998, 9001, 8963, 9002, 8999, 1007, 2866, + 1007, 1007, 3173, 2867, 7462, 2005, 9000, 1007, 8616, 1007, + 9005, 1007, 9003, 1806, 1007, 9004, 1007, 1007, 9006, 2868, + + 1007, 9007, 1007, 9008, 1007, 9009, 9010, 1007, 9011, 9012, + 9013, 9014, 9015, 9016, 9017, 9018, 9019, 9020, 9021, 9022, + 9023, 9024, 9025, 9026, 9032, 1007, 2868, 1007, 8336, 1007, + 1007, 9027, 9053, 2868, 1007, 1007, 9029, 2868, 9031, 1007, + 2862, 1007, 2868, 1007, 9037, 1007, 8653, 8653, 8653, 9028, + 1007, 9033, 8622, 1806, 9030, 9035, 1007, 9034, 9038, 9036, + 9039, 9040, 1007, 1007, 1007, 1007, 1007, 9041, 1007, 1007, + 1007, 9045, 2865, 1007, 9043, 9044, 1007, 9047, 9046, 1007, + 9048, 9049, 1007, 1007, 2868, 1007, 1007, 9042, 9050, 9052, + 1007, 9051, 1007, 1007, 3173, 2926, 1007, 1007, 9057, 2862, + + 9056, 1007, 8655, 1007, 9059, 9058, 8368, 8369, 1007, 1007, + 1007, 9054, 7887, 9055, 1007, 9060, 1007, 9061, 9062, 9063, + 1007, 1007, 1007, 1007, 9064, 9070, 8686, 2048, 2049, 1007, + 9071, 1806, 1806, 1007, 8380, 8380, 8380, 8380, 2048, 2049, + 1007, 8481, 1062, 8381, 9066, 8383, 8381, 9079, 9069, 2062, + 2063, 2057, 8380, 8380, 8380, 8380, 8381, 8382, 8383, 8381, + 1062, 9068, 2062, 2063, 2057, 2062, 2063, 4584, 9076, 9077, + 724, 2532, 9078, 9080, 9081, 9082, 8810, 9083, 9084, 2532, + 9085, 2112, 2532, 9086, 9087, 9088, 9089, 2121, 2121, 5585, + 2053, 2121, 2121, 2121, 2121, 9095, 9096, 1007, 7588, 2058, + + 9097, 8810, 9065, 9098, 1138, 1331, 8427, 5585, 2053, 1331, + 8428, 7588, 2058, 9067, 9102, 9103, 9104, 9105, 9106, 9108, + 9109, 9110, 9111, 9112, 9072, 9107, 9113, 9114, 9075, 8811, + 9115, 9116, 9117, 9074, 9073, 9118, 9119, 9120, 9121, 9122, + 9125, 9126, 674, 4593, 9128, 9090, 9130, 9091, 674, 9134, + 9100, 9092, 9094, 9099, 8811, 9124, 674, 674, 674, 9133, + 9137, 9138, 2112, 9093, 1325, 9129, 9139, 9140, 9141, 9142, + 9132, 9143, 2485, 9144, 9145, 9146, 9136, 674, 9147, 9148, + 1326, 1326, 1326, 1326, 1326, 1326, 9149, 674, 9150, 1283, + 9151, 9135, 1331, 9152, 9127, 1490, 9153, 1491, 9154, 674, + + 9158, 9159, 674, 8517, 674, 674, 8624, 674, 674, 8520, + 2503, 9131, 674, 674, 674, 9189, 9163, 674, 674, 9162, + 9188, 9160, 2309, 1337, 674, 1338, 674, 1339, 1283, 9207, + 9190, 2309, 9191, 9208, 1283, 9222, 9223, 1341, 674, 9225, + 1342, 9101, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8429, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8426, + + 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8426, 8426, 8428, 8426, 1325, 9155, 9161, 9155, 6797, + 1265, 1266, 6797, 6797, 6797, 6797, 6797, 6797, 674, 8555, + 6797, 1326, 1326, 1326, 1326, 1326, 1326, 6797, 6797, 6797, + 1283, 6797, 6797, 1331, 6797, 6797, 674, 9164, 674, 6797, + 6797, 6797, 9227, 674, 8556, 6797, 674, 9192, 9231, 4584, + 6797, 6797, 2309, 674, 674, 8485, 4584, 8485, 4584, 9200, + 674, 4584, 9218, 9123, 1337, 674, 1338, 9166, 1339, 9156, + + 9157, 6799, 9226, 6797, 9169, 9170, 9167, 9171, 1341, 9165, + 9178, 1342, 1343, 9168, 9172, 6814, 9173, 9164, 6814, 6814, + 6814, 6814, 6814, 6814, 9174, 9176, 6814, 9177, 9175, 9185, + 6804, 6797, 9179, 6814, 6814, 6814, 9180, 6814, 6814, 9181, + 6814, 6814, 9194, 9195, 9196, 6814, 6814, 6814, 9182, 4584, + 674, 6814, 9183, 4584, 2308, 4593, 6814, 6814, 1490, 9184, + 1491, 9198, 4593, 4584, 4593, 9201, 4584, 4593, 4584, 9193, + 4584, 674, 674, 674, 8557, 9206, 9232, 2308, 9224, 6814, + 9186, 9221, 674, 1491, 8564, 2309, 9219, 9219, 9219, 9219, + 9219, 9219, 674, 674, 9230, 674, 9229, 9187, 9250, 1283, + + 674, 9197, 9203, 8585, 9233, 2363, 1392, 6814, 674, 1283, + 9228, 9199, 9234, 674, 9202, 9237, 674, 9238, 9259, 9204, + 7762, 7762, 7762, 7762, 9220, 4593, 8558, 9240, 1283, 4593, + 9235, 8565, 5793, 5793, 5793, 5793, 9205, 8565, 674, 4593, + 5794, 674, 4593, 674, 4593, 674, 4593, 8546, 8546, 8546, + 8546, 674, 2309, 9244, 9241, 7762, 7762, 7762, 7762, 9260, + 5795, 9209, 9239, 9209, 9210, 9254, 9210, 9210, 9210, 9210, + 9210, 9210, 8548, 674, 8548, 8548, 8548, 8548, 8548, 8548, + 674, 6854, 9236, 674, 8550, 8550, 8550, 8550, 674, 9265, + 9242, 9245, 9214, 5796, 2309, 1473, 9243, 674, 9251, 6855, + + 7763, 5793, 5793, 5793, 5793, 674, 674, 9262, 8544, 5794, + 9216, 5797, 5795, 9246, 9247, 674, 6854, 2363, 9256, 9253, + 674, 9267, 5793, 5793, 5793, 5793, 8545, 674, 9255, 5795, + 5794, 9248, 9249, 8615, 6855, 9211, 9211, 9211, 9211, 9252, + 9270, 2306, 8609, 674, 674, 6854, 9257, 2308, 674, 8624, + 5795, 1490, 8548, 1491, 8548, 8548, 8548, 8548, 8548, 8548, + 9212, 9261, 5796, 6855, 9213, 674, 674, 1283, 674, 8617, + 9266, 674, 8618, 8623, 9269, 1473, 674, 9273, 674, 9274, + 5797, 9215, 674, 5796, 674, 9268, 8616, 9217, 9271, 674, + 9272, 9263, 674, 9275, 1283, 9276, 6854, 1283, 674, 674, + + 674, 5797, 674, 2309, 674, 9278, 2308, 674, 8636, 9281, + 1490, 9212, 1491, 9279, 6855, 9213, 9282, 9277, 9280, 9283, + 9284, 9285, 8616, 9286, 9287, 674, 674, 674, 674, 674, + 674, 674, 9296, 1283, 8653, 8653, 8653, 8653, 8625, 9289, + 9290, 9291, 9288, 9293, 674, 9292, 8653, 8653, 8653, 8654, + 674, 1392, 674, 674, 9295, 9298, 1473, 2461, 674, 674, + 9304, 1392, 9300, 674, 674, 2363, 1490, 2305, 1491, 9305, + 9303, 9302, 674, 9297, 1283, 9301, 9299, 674, 2309, 674, + 674, 9311, 9306, 1392, 9307, 674, 674, 674, 9309, 674, + 8655, 674, 9308, 9310, 674, 9320, 674, 9314, 1325, 9316, + + 9315, 9313, 8655, 9318, 9312, 2309, 674, 674, 674, 9321, + 2309, 9319, 9317, 1325, 6797, 1325, 1325, 1325, 1325, 1325, + 1325, 9322, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, + 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1326, 1326, + 1326, 1326, 1326, 1326, 1325, 1325, 1325, 1283, 1325, 1325, + 1331, 1325, 1325, 1325, 1325, 1325, 1325, 9235, 1325, 1325, + 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, + 9326, 9324, 1325, 1325, 1325, 1325, 1325, 9328, 1325, 9325, + 9329, 1530, 1325, 1531, 1325, 2532, 9330, 1325, 9327, 9340, + 6814, 2532, 9331, 9339, 9333, 1533, 2532, 2531, 1534, 9323, + + 9161, 1652, 1325, 1653, 2532, 9334, 9336, 2531, 9338, 9236, + 9341, 9335, 9332, 1653, 9346, 9342, 1326, 1326, 1326, 1326, + 1326, 1326, 2579, 9343, 9344, 1283, 1558, 9337, 1331, 9347, + 2532, 9349, 9351, 9348, 9350, 9354, 9352, 9345, 2532, 2579, + 1636, 9355, 9353, 9357, 9356, 9359, 9262, 1325, 9362, 2531, + 9358, 9360, 1325, 1652, 1325, 1653, 1325, 1325, 1325, 1530, + 9361, 1531, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, + 1325, 1325, 9407, 1533, 1325, 1325, 1534, 1535, 1325, 9408, + 1325, 1325, 1325, 9410, 9411, 9412, 1325, 1325, 9413, 1325, + 1325, 9414, 9415, 1325, 1325, 1325, 1325, 5046, 1325, 1325, + + 1325, 1325, 1325, 1325, 1325, 9416, 1325, 1325, 9417, 9363, + 9418, 1325, 1325, 1325, 1325, 1325, 8811, 9420, 1325, 1636, + 1325, 1325, 9421, 9422, 9365, 9367, 9380, 9364, 1325, 9368, + 9263, 9423, 8818, 2531, 9366, 2532, 9370, 1652, 9269, 1653, + 9371, 9369, 9373, 9372, 9377, 1558, 9374, 9379, 1558, 9375, + 9376, 9381, 9378, 2666, 9382, 1636, 2579, 9384, 9387, 9385, + 9388, 1652, 2529, 1653, 9389, 9393, 2532, 9383, 9386, 9391, + 9390, 9395, 9392, 1558, 9394, 9396, 9398, 9399, 9400, 9402, + 9403, 9404, 9405, 6229, 2532, 9401, 2532, 9425, 9426, 9406, + 1636, 9397, 9427, 9427, 9427, 9427, 8824, 9430, 1325, 9434, + + 9432, 9435, 9436, 9437, 9438, 9439, 1325, 9441, 9442, 9443, + 9444, 9445, 9446, 9447, 9448, 9449, 9450, 9451, 9452, 9453, + 9454, 9455, 8858, 2868, 6797, 6797, 2868, 2868, 9458, 9459, + 9460, 8862, 9461, 9464, 8866, 9465, 8868, 9466, 2868, 9467, + 9468, 4205, 8874, 9469, 2868, 9470, 9462, 1806, 9471, 9473, + 2868, 2866, 2868, 8883, 4584, 2867, 1806, 2005, 4584, 1806, + 9431, 1806, 9472, 4584, 4584, 9485, 9474, 1806, 9483, 9481, + 2532, 9432, 9456, 9487, 9479, 9440, 9433, 1807, 1806, 5267, + 9457, 2868, 5267, 9482, 8863, 8899, 5267, 8867, 9488, 9489, + 9491, 9492, 9493, 1808, 1808, 1808, 1808, 1808, 1808, 9463, + + 6814, 6814, 1806, 9484, 8901, 1812, 9476, 8905, 2866, 9494, + 8900, 9495, 2867, 2868, 2005, 8175, 8175, 8175, 8176, 2866, + 9478, 2975, 9496, 9486, 7786, 2005, 9490, 8913, 9477, 1806, + 9475, 9497, 1806, 9498, 4593, 9499, 1818, 9500, 1819, 4593, + 4593, 7790, 9501, 8222, 8914, 9502, 8224, 9503, 9504, 2868, + 1821, 2862, 1806, 1822, 1823, 1807, 8558, 9506, 9507, 9508, + 8565, 2868, 9505, 9509, 9510, 9511, 9512, 8941, 2868, 1806, + 9513, 1808, 1808, 1808, 1808, 1808, 1808, 2868, 9514, 9515, + 1806, 9516, 9517, 1812, 9518, 9520, 9519, 9521, 9522, 8177, + 2865, 9523, 1806, 9524, 2866, 9525, 9529, 9530, 2867, 9236, + + 2005, 9531, 8178, 8961, 8961, 8961, 8961, 2868, 2975, 9533, + 9534, 9535, 9537, 9538, 1818, 2868, 1819, 9539, 9541, 9532, + 9542, 9543, 9544, 9545, 9269, 9546, 2865, 9547, 1821, 9550, + 9551, 1822, 1823, 5257, 5257, 5257, 5257, 5257, 5258, 5257, + 5257, 5257, 5259, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5260, 5260, 5260, 5260, 5260, 5260, + 5257, 5257, 5257, 5261, 5257, 5257, 5262, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5257, 5257, 5257, 5257, 5257, 5257, 5263, 5264, 5263, 5265, + + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5266, 5263, 5263, 9480, 5268, 5263, 5263, 5263, 5263, + 5263, 5263, 5257, 5257, 5257, 5257, 9526, 9526, 9526, 9527, + 8961, 8961, 8961, 8962, 8966, 9540, 8977, 8983, 8984, 8985, + 9548, 9549, 8992, 9552, 9553, 8996, 9554, 9556, 2866, 9005, + 9557, 2868, 2867, 9558, 2005, 9555, 9561, 9562, 1806, 1806, + 9563, 1806, 1806, 1806, 1806, 9559, 9564, 1806, 9565, 9566, + 1806, 9567, 9560, 9568, 1806, 9569, 9570, 9571, 9572, 9573, + 9574, 9575, 8653, 8653, 8653, 9028, 9576, 9577, 3136, 9578, + 9579, 8616, 9580, 2865, 2975, 9582, 2862, 2862, 9585, 2867, + + 9586, 2005, 2863, 2868, 9587, 9581, 9589, 9588, 9590, 9591, + 1806, 9583, 2868, 9528, 9592, 9593, 9584, 9594, 9595, 9263, + 9597, 2862, 9598, 9599, 9600, 9601, 9602, 9603, 9604, 9605, + 2868, 9061, 9606, 2868, 9607, 9608, 2048, 2049, 8655, 9596, + 2048, 2049, 8380, 8380, 8380, 8380, 1325, 9611, 9612, 9613, + 1062, 2062, 2063, 2062, 2063, 4584, 1806, 2062, 2063, 1325, + 1325, 9620, 1325, 9621, 9622, 9623, 9624, 9626, 9627, 9628, + 9629, 9630, 9631, 2121, 2121, 2121, 9625, 2121, 9636, 9637, + 5638, 9098, 8430, 1331, 1331, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 9669, 8430, 9609, 5585, 2053, 8430, + + 8430, 8430, 9668, 8430, 1338, 9667, 9616, 9646, 9647, 1338, + 9657, 9614, 8430, 9130, 9645, 9670, 9610, 9640, 9641, 9652, + 9654, 9617, 9643, 9653, 9644, 9650, 9648, 9649, 9632, 9651, + 9618, 4593, 9619, 9633, 9659, 9634, 9615, 8430, 9655, 9658, + 9656, 1338, 1338, 9660, 9635, 1325, 8430, 8430, 1338, 9674, + 9126, 9671, 9134, 9675, 9137, 9127, 2256, 9663, 9672, 9676, + 2485, 1326, 1326, 1326, 1326, 1326, 1326, 9661, 9664, 9677, + 1283, 9678, 9679, 1331, 9662, 1283, 9680, 1283, 9131, 1283, + 9681, 9682, 9683, 9684, 9686, 9665, 9689, 1338, 9694, 9161, + 1338, 1473, 1338, 1473, 1338, 1338, 9721, 1338, 2309, 1338, + + 9722, 9201, 1338, 9127, 1337, 9695, 1338, 9723, 1339, 9724, + 9739, 9642, 1338, 9750, 1283, 9751, 9737, 2309, 1341, 9752, + 1338, 1342, 1343, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8429, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 9643, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8426, 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8426, 8426, 8428, 8426, 1325, 9155, 1338, 9673, + 1265, 1266, 1338, 9224, 1338, 9754, 1338, 1338, 9761, 2309, + 9776, 1338, 1326, 1326, 1326, 1326, 1326, 1326, 2309, 9725, + 1338, 1283, 2309, 9210, 1331, 9210, 9210, 9210, 9210, 9210, + 9210, 1338, 9219, 9219, 9219, 9219, 9219, 9219, 1338, 1338, + 1338, 9753, 9749, 1338, 1338, 1338, 8485, 1338, 2363, 2363, + 9755, 9687, 1338, 9759, 9766, 1337, 8565, 9666, 9758, 1339, + 1338, 2308, 9688, 9768, 1338, 1490, 9767, 1491, 9259, 1341, + 9220, 1338, 1342, 1343, 9690, 9690, 9690, 9691, 9692, 9690, + + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9690, 9690, 9690, 9690, 9690, 9690, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9690, 9690, 9690, 9690, 6797, 6797, 6797, + 6797, 6797, 6797, 6797, 6797, 6797, 6797, 6797, 6797, 6797, + + 1338, 1338, 6797, 6797, 1338, 6797, 9760, 6797, 9777, 6797, + 1338, 9773, 2309, 6797, 1392, 1338, 9729, 1338, 9774, 9778, + 1338, 6797, 1338, 9265, 6797, 9781, 4584, 4584, 4584, 4584, + 9785, 2309, 9789, 9782, 9790, 6797, 6797, 1338, 6797, 4584, + 9697, 4584, 4584, 4584, 9701, 9792, 9793, 4584, 1338, 9699, + 9795, 9700, 9705, 9712, 9698, 9706, 9710, 9713, 9702, 9714, + 9704, 9703, 9715, 9696, 6814, 6814, 6814, 6814, 6814, 6814, + 6814, 6814, 9707, 6814, 9708, 6814, 9709, 9711, 6814, 6814, + 9716, 6814, 9717, 6814, 9718, 6814, 9719, 9727, 9720, 6814, + 9726, 9728, 9730, 9731, 9733, 9736, 9732, 6814, 9734, 9735, + + 6814, 1338, 4593, 4593, 4593, 4593, 9211, 9211, 9211, 9211, + 9798, 6814, 6814, 1338, 6814, 4593, 9784, 4593, 4593, 4593, + 9799, 1338, 9800, 4593, 9738, 9738, 9738, 9738, 7762, 7762, + 7762, 7762, 9740, 9740, 9740, 9740, 9762, 9797, 9209, 9801, + 9209, 9210, 9802, 9210, 9210, 9210, 9210, 9210, 9210, 9210, + 9769, 9210, 9210, 9210, 9210, 9210, 9210, 7762, 7762, 7762, + 7762, 7762, 7762, 7762, 7762, 9235, 9803, 8544, 5793, 5793, + 9746, 5793, 5793, 5793, 5793, 5793, 5794, 1338, 9779, 9804, + 5794, 9770, 9741, 9805, 9262, 8545, 9742, 1338, 2305, 6854, + 1283, 5793, 5793, 5793, 5793, 1338, 5795, 1338, 1338, 5794, + + 5795, 9763, 9763, 9763, 9764, 2503, 9744, 6855, 9741, 1283, + 9771, 9791, 9742, 9786, 9786, 9786, 9787, 9236, 6854, 5795, + 1338, 1338, 6854, 1338, 1338, 9775, 9745, 1338, 9809, 5796, + 9780, 1338, 9796, 5796, 9772, 9794, 6855, 9743, 2309, 9807, + 6855, 5726, 5726, 5726, 5726, 5726, 5726, 5797, 1338, 1338, + 2305, 5797, 5796, 9747, 9756, 9748, 9756, 9757, 1338, 9757, + 9757, 9757, 9757, 9757, 9757, 1338, 1338, 1338, 9263, 1338, + 5797, 9806, 9810, 1338, 1338, 1338, 1338, 1338, 9808, 9813, + 1338, 2485, 1338, 9811, 1338, 1338, 1338, 9814, 9765, 9816, + 9819, 1338, 9815, 9812, 1338, 2308, 9818, 2309, 1338, 9817, + + 9788, 1491, 1338, 9820, 1338, 9821, 1338, 9823, 1338, 9822, + 1338, 1490, 1338, 1491, 9826, 2309, 9827, 9830, 4768, 9824, + 1338, 9825, 6797, 724, 9835, 9836, 724, 724, 724, 724, + 9838, 724, 9831, 9833, 724, 724, 9837, 724, 2532, 724, + 724, 2532, 9840, 9843, 724, 724, 724, 2532, 9839, 9842, + 724, 724, 9846, 724, 2579, 9844, 9841, 9847, 2579, 724, + 9848, 9762, 724, 2532, 9845, 724, 9775, 724, 9828, 9763, + 9763, 9763, 9764, 9849, 9850, 1338, 724, 1338, 1558, 1338, + 2305, 724, 9852, 9776, 9767, 9834, 724, 9851, 724, 724, + 9784, 724, 724, 9853, 4769, 724, 9854, 9795, 6814, 2532, + + 9829, 1325, 9856, 724, 9855, 9786, 9786, 9786, 9787, 724, + 2703, 724, 724, 2529, 724, 724, 9857, 1326, 1326, 1326, + 1326, 1326, 1326, 724, 9858, 724, 1283, 9859, 724, 1331, + 9860, 9861, 724, 2532, 724, 724, 9806, 724, 2532, 9862, + 724, 724, 724, 9863, 9864, 724, 724, 2529, 724, 724, + 724, 724, 724, 724, 724, 9865, 9765, 724, 9868, 724, + 1530, 9866, 1531, 9832, 2687, 724, 9874, 9869, 724, 9867, + 724, 724, 9871, 2532, 1533, 724, 9870, 1534, 1535, 1325, + 2531, 724, 9873, 9876, 9872, 724, 1653, 9878, 724, 9826, + 724, 1652, 9788, 1653, 9882, 1326, 1326, 1326, 1326, 1326, + + 1326, 724, 9875, 724, 1283, 9877, 724, 1331, 9827, 4768, + 724, 2532, 9410, 9879, 9880, 9883, 9885, 9886, 9887, 9888, + 9889, 9881, 9890, 9891, 9892, 9893, 9427, 9427, 9427, 9427, + 9430, 9894, 724, 9433, 8827, 9896, 5046, 9897, 1530, 9898, + 1531, 1636, 9899, 9900, 724, 9895, 9902, 9906, 9901, 9907, + 9447, 724, 1533, 1007, 1007, 1534, 1535, 9451, 1007, 9908, + 9828, 9452, 9909, 9910, 2865, 9911, 2865, 9884, 1007, 9914, + 724, 2529, 2868, 9915, 9916, 1007, 9917, 1007, 9918, 1007, + 9919, 9920, 1806, 1007, 9921, 4992, 1806, 1007, 9923, 9922, + 9926, 1007, 9829, 1007, 1007, 9925, 9924, 1007, 9935, 2868, + + 5263, 1007, 1007, 1007, 5263, 2868, 5263, 1007, 1007, 9927, + 9937, 9936, 1007, 2868, 5267, 9932, 1007, 3908, 9690, 9690, + 9690, 9691, 9692, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9690, 9690, 9690, 9690, 9690, + 9690, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9690, 9690, 9690, + 9690, 1807, 9462, 1007, 9940, 6797, 1007, 4584, 6797, 4584, + 4584, 9489, 9938, 9941, 9942, 9943, 1007, 1808, 1808, 1808, + 1808, 1808, 1808, 9944, 5263, 9945, 1806, 1806, 5263, 1812, + 5263, 5263, 9946, 9939, 6384, 5263, 1806, 5263, 5267, 9503, + 9934, 9947, 2975, 2975, 9933, 5267, 1007, 1007, 1007, 9949, + 9948, 9951, 3203, 9954, 9950, 9463, 9953, 9929, 1007, 9955, + 1818, 9952, 1819, 1007, 1806, 1007, 9762, 2868, 1007, 9930, + 1007, 9956, 9962, 9959, 1821, 1007, 9904, 1822, 1823, 1807, + 9912, 9913, 9928, 4593, 6814, 4593, 4593, 9958, 1007, 9964, + + 9965, 9236, 1007, 1007, 9960, 1808, 1808, 1808, 1808, 1808, + 1808, 1007, 9767, 9967, 1806, 2862, 9966, 1812, 9968, 9961, + 1007, 9969, 1007, 2868, 9970, 9537, 1007, 9973, 2863, 1007, + 9974, 1007, 1007, 1007, 1007, 9977, 9976, 1007, 3203, 9980, + 9982, 1007, 9983, 1007, 9979, 9984, 9981, 1007, 1818, 1007, + 1819, 9986, 2868, 9987, 2868, 1007, 9988, 1007, 9989, 9990, + 9991, 9992, 1821, 9993, 9905, 1822, 1823, 5257, 5257, 5257, + 5257, 5257, 5258, 5257, 5257, 5257, 5259, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5260, 5260, + 5260, 5260, 5260, 5260, 5257, 5257, 5257, 5261, 5257, 5257, + + 5262, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5257, 5257, 5257, 5257, 5257, 5257, + 5263, 5264, 5263, 5265, 6381, 5263, 5263, 5263, 6382, 5263, + 6383, 5263, 5263, 5263, 5263, 5266, 5263, 5263, 9931, 5268, + 5263, 5263, 5263, 5263, 5263, 5263, 5257, 5257, 5257, 5257, + 9763, 9763, 9763, 9957, 9963, 9526, 9526, 9526, 9526, 9526, + 9526, 9526, 9527, 9971, 9540, 9975, 9786, 9786, 9786, 9978, + 9548, 9795, 9994, 9985, 9995, 9996, 9997, 1007, 1007, 9998, + 1007, 9999, 1007, 1007,10000, 1007, 9806, 1806, 2866, 1806, + + 1007,10002, 2867, 1007, 2005, 1806, 1007, 2863,10003,10001, + 1007, 1007, 3173, 1007, 1007,10005,10008, 1007,10006,10004, + 1007, 1007,10011, 2866, 1007, 9972,10007,10009, 1007, 2005, + 10010, 1007, 1007,10013, 1007,10012, 1007, 1007, 1007, 1007, + 2865, 9597,10014, 1007, 1007,10018, 1007, 9765, 2868,10020, + 1007, 1007, 9528, 1007, 1007,10015, 9528,10016, 9263, 2867, + 1007, 2005,10017, 9788, 1007,10021, 1806, 1007, 1007,10019, + 5571,10022, 724, 1007, 2048, 2049,10024,10025,10026, 2062, + 2063, 724, 4584, 2062, 2063, 724, 724,10031,10032,10033, + 10034,10035,10036,10038,10039,10040,10037,10041,10042,10043, + + 2121, 9828, 2121,10046,10047,10049, 1331,10054,10030, 1118, + 1118, 1118, 1118, 1118,10055,10056,10057,10058,10059,10061, + 1007,10062,10060, 8431, 1007, 8428, 8428,10064, 8428,10065, + 10063, 8428, 2863, 9829,10029, 8438,10023, 8428, 8428, 8428, + 1007,10027, 8428, 8428, 8428, 1007, 5552,10028,10069, 8428, + 674,10071,10076,10077,10080,10050,10081, 674, 4593,10082, + 10044,10079,10083,10084, 8428, 8428, 8428, 2309,10045,10048, + 9690, 9690, 9690, 9691, 9692, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + + 9690, 9690, 9690, 9693,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051, 9690, 9690, 9690, + 9690, 9690, 9690,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051, 9690, + 9690, 9690, 9690, 1325,10066,10068,10070,10072,10067,10073, + 9668,10074,10085,10078, 9673,10086,10087,10088,10089, 1326, + 1326, 1326, 1326, 1326, 1326, 9155, 8428, 9691, 1283, 8428, + 674, 1331, 8428, 674, 8428, 8428, 674, 8428, 674, 1283, + + 9691, 9692,10095,10094,10121, 674, 2363, 674, 9730, 674, + 10135,10120,10136,10137,10123,10149,10119,10150, 674,10122, + 10155, 674, 1337, 9127, 1338, 674, 1339, 1473, 674,10159, + 10153,10157,10152,10160,10162,10052, 1341,10163, 2306, 1342, + 1343, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8429, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8426, 8426, + + 8426, 8426, 8426, 8426, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8426, 8426,10053, 8426, 1325, 9155, 6797, 1265, 1266,10092, + 10092,10092,10092, 6797, 6797, 6797, 6797, 6797, 6797, 6797, + 1326, 1326, 1326, 1326, 1326, 1326, 674, 674,10169, 1283, + 10170, 9780, 1331,10172, 674,10175, 9738, 9738, 9738, 9738, + 9757,10156, 9757, 9757, 9757, 9757, 9757, 9757,10151,10178, + 9209, 9775, 9209, 9210, 8485, 9210, 9210, 9210, 9210, 9210, + 9210, 674,10097, 1337,10098, 1338,10075, 1339,10179,10099, + + 10090,10091,10173, 674,10168,10102, 1283, 1341,10096,10100, + 1342, 1343, 6814,10101,10180,10185,10186,10193,10105, 6814, + 6814, 6814, 6814, 6814, 6814, 6814,10093, 9690, 9690, 9690, + 9691, 9692, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9690, 9690, 9690, 9690, 9690, 9690, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9690, 9690, 9690, 9690, + 6797, 6797, 6797, 6797, 6797, 6797, 6797,10111, 6797, 6797, + 6797,10165, 6797, 9776, 9784, 674, 674, 4584, 4584, 674, + 4584, 6797, 6797, 4584, 4584, 4584,10190,10174,10194,10192, + 4584,10129, 4584, 9740, 9740, 9740, 9740,10191, 1283, 1283, + 10165,10195,10196, 7762, 7762,10138, 7762, 2309,10197,10198, + 10106,10199,10103,10201, 674, 674,10113, 674,10114, 674, + 1473,10115, 7762, 7762, 7762, 7762,10104,10202, 674,10107, + 10108,10109,10128,10216,10132,10204, 6814, 6814, 6814, 6814, + + 6814, 6814,10110,10112, 6814, 6814, 6814,10116,10118,10117, + 10124,10125,10126,10127, 4593,10134, 4593, 6814, 6814, 4593, + 4593, 4593,10130,10133, 6854,10217, 4593,10131, 4593, 9741, + 10218,10166, 674, 9742, 7762, 7762, 7762, 7762, 5793, 5793, + 5793, 5793, 6855, 6854, 5793, 5793, 5793, 5793, 9763, 9763, + 9763, 9763, 5794,10208,10143,10143,10144,10143,10164, 724, + 724, 6855, 5794,10139, 674, 1473, 5795,11275,11275,11275, + 11275, 9757, 5795, 9757, 9757, 9757, 9757, 9757, 9757,10203, + 674,10219,10145,10167, 9763, 9763, 9763, 9764, 2308, 9770, + 2309, 674, 1490, 674, 1491, 6854, 674, 724,10140, 6854, + + 9786, 9786, 9786, 9786,10205, 5796,10207, 1473,10223,10141, + 10146,10154, 1283, 6855,10209,10147, 674, 6855, 9771, 9786, + 9786, 9786, 9787, 5797,10187,10187,10187,10188, 1473,10211, + 674,10206, 674,10148, 674, 9765,10213, 9826, 674,10181, + 10210, 9827, 9772, 6797,10212,10214, 724, 1283,10176, 2485, + 10182,10226,10182,10183,11275,10184,10184,10184,10184,10184, + 10184,10225, 1283, 2579, 724,10227, 1283, 724,10224,10228, + 724, 9765, 724, 1636, 724,10231,10230,10166, 724,10229, + 724, 724, 724,10234, 724,10151,10232, 9788,10235, 674, + 10237,10222, 724, 9828, 724,10233, 724, 724,10239, 724, + + 10236, 674,10238,10240, 724, 724, 9788, 724, 724, 724, + 10241,10189,10243, 724, 2532, 724, 724,10181, 724, 6814, + 10187,10187,10187,10188,10245, 9829, 1325, 724,10182,10167, + 10182,10183, 1636,10184,10184,10184,10184,10184,10184,10244, + 10242, 724, 1326, 1326, 1326, 1326, 1326, 1326, 724, 724, + 2532, 1283, 2531,10246, 1331, 724, 1652, 1636, 1653, 724, + 10248, 724, 724,10247, 724,10249, 724, 724, 1636, 724, + 10252,10253, 724,10254,10250,10251, 724, 724,10255,10258, + 10256, 1636,10260,10262,10261, 1530,10263, 1531, 724, 724, + 724, 2687,10264,10265, 724,10266,10267,10257,10268, 1533, + + 5046,10220, 1534, 1535, 1325, 9894, 724,10189,10269,10270, + 10092,10092,10092,10092, 1007, 1007, 724,10274,10276,10273, + 1326, 1326, 1326, 1326, 1326, 1326, 1007, 1007, 1007, 1283, + 10275, 9884, 1331,10277, 1007,10280,10281,10282,10279,10283, + 10284,10285, 2975,10287, 1007, 9923,10289,10286, 1007, 1007, + 10298,10291,10290, 1007, 1007, 5263, 1007, 9937, 1007, 5263, + 1007, 5263, 1007, 1530, 2865, 1531,10299,10300, 9941, 9942, + 10151, 9944,10302, 1007, 1007,10221,10301, 1533,10303,10304, + 1534, 1535, 1007,10306, 1007,10307,10305,10308,10309, 1007, + 1007, 3908, 1007, 9954, 9955, 1007, 9964,10093, 9690, 9690, + + 9690, 9691, 9692, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9690, 9690, 9690, 9690, 9690, + 9690, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9690, 9690, 9690, + 9690, 1807,10310,10288, 6797, 4584,10311, 4584, 1007, 9962, + + 4584,10313, 1007, 9963,10314,10316, 1007, 1808, 1808, 1808, + 1808, 1808, 1808,10318,10321, 5258, 1806,10315, 9975, 1812, + 9763, 9763, 9763, 9957, 1806,10319,10312, 1007, 1806, 1007, + 10258,10322,10317,10323, 5258, 1007, 1007,10328,10329, 1007, + 5261, 9983, 1007, 1806,11275,11275,11275,11275, 1806, 1007, + 1818,10330, 1819,10331,10332,10292,10333,10334,10294, 5261, + 10335, 2868,10336,10337, 1821, 2868,10271, 1822, 1823, 1807, + 10278, 4593,10293, 4593,10338,10297, 4593, 5263,10167,10339, + 10340, 5263, 9972, 5263,10341, 1808, 1808, 1808, 1808, 1808, + 1808,10342, 1007, 2868, 1806, 2866, 5263, 1812, 1007, 2867, + + 5263, 2005, 5263, 1007, 2865, 1007, 6384, 9765,10344,10345, + 9931,10343, 1007, 2865, 1007,10346, 1007, 2865, 1007,10347, + 10348,10349, 1007, 1007,10352,10324, 1007, 1007, 1818, 2865, + 1819,11275, 1007,10350,10354,10353,10351, 1007, 1007, 1007, + 10356,10272, 1821, 1007,10359, 1822, 1823, 5257, 5257, 5257, + 5257, 5257,10295, 5257, 5257, 5257, 5259, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5260, 5260, + 5260, 5260, 5260, 5260, 5257, 5257, 5257,10296, 5257, 5257, + 5262, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + + 5263, 5263, 5263, 5263, 5257, 5257, 5257, 5257, 5257, 5257, + 5263, 5264, 5263, 5265, 6381, 5263, 5263, 5263, 6382, 5263, + 6383, 5263, 5263, 5263, 5263, 5266, 5263, 5263, 5267, 5268, + 5263, 5263, 5263, 5263, 5263, 5263, 5257, 5257, 5257, 5257, + 9786, 9786, 9786, 9978,10325,10187,10187,10187,10327,10018, + 10020,10021, 2062, 2063,10355,10182,10364,10182,10183,10365, + 10326,10326,10326,10326,10326,10326, 1007, 3173, 1806, 2865, + 10366, 2048, 2049, 4584, 1806, 1806, 1806, 2062, 2063, 1007, + 10367,10368,10369,10370,10371,10357,10372,10373,10374,10375, + 10376,10377, 2121, 2121, 1118, 1118, 1118, 1118, 1118,10381, + + 10382,10385, 9828, 1118, 1118, 1118, 1118, 1118,10092,10092, + 10092,10092,10386,10387,10389,10388, 1007, 8430,10393,10391, + 1007, 8430, 8430,10394,10361,10390, 8430, 9788, 8430, 8430, + 10392,10398,10189,10400, 9829,10358, 8430,10395,10405, 1331, + 10399,10360, 8430,10401,10362,10406, 8430, 8430, 8430, 4593, + 8430,10408,10402, 674,10379,10407, 8430,10403, 674,10409, + 10410,10411,10412,10380,10413,10414,10378,10415, 1265, 1266, + 10418, 674, 674,10112,10434, 674, 674, 674, 674,10445, + 674,10440,10131, 674,10453,10454,10455, 674,10456,10441, + 10469,10159, 674,10162,10474,10093, 9690, 9690, 9690, 9691, + + 9692, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9693, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051, 9690, 9690, 9690, 9690, 9690, 9690,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051, 9690, 9690, 9690, 9690, 1325, + 2308, 9155,10476,10470, 1490, 674, 1491, 674, 674,10166, + + 674,10471, 674, 674,10444, 1326, 1326, 1326, 1326, 1326, + 1326,10172, 2308,10487, 1283, 2308, 1490, 1331, 1491, 1490, + 674, 1491,10178, 674, 1283, 674, 674,10472, 674, 674, + 10473, 674, 674,10490, 674,10491,10477, 674,10477,10478, + 8485,10478,10478,10478,10478,10478,10478,10492, 1337, 674, + 1338,10167, 1339,10416, 674,10479, 674,10480,10493,10495, + 10383, 674, 1341,10499,10500, 1342, 1343, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8429, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + + 8426, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8426, 8426, 8426, 8426, 8426, 8426, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430,10384, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8426, 8426, 8428, 8426, + 10396,10092,10092,10092,10092, 6797, 6797, 6797, 6797, 6797, + 6797, 6797,10481,10426, 6797, 6797, 6797,10484,10501,10502, + 10503, 674,10496, 6797, 6797, 674, 674,10504, 6797,10201, + 674, 674,10497,10505, 4584,10216, 674, 4584, 6797, 4584, + + 6797, 674,10442,10164, 4584, 6797, 674, 6797,10516, 674, + 10485, 2309, 6797, 4584, 674,10468,10423, 4584,10424, 4584, + 10517, 7018,10475, 674,10482, 8430,10429, 674, 674,10420, + 10422,10428, 674,10425,10506,10432,10397, 1325,10430,10421, + 10437,10419, 6814, 6814, 6814, 6814, 6814, 6814,10093,10427, + 6814, 6814,10431, 1326, 1326, 1326, 1326, 1326, 1326, 6814, + 6814,10433, 1283,10435, 6814, 1331,10436,10438,10439,10446, + 10447,10448, 674,10449, 6814,10131, 6814, 674, 4584,10450, + 10451, 6814,10522, 6814,10468, 674,10443, 9772, 6814, 4593, + 674,10520, 674, 4593,10486, 4593, 1337, 674, 1338,10441, + + 1339, 7762, 7762, 7762, 7762,10442, 674, 2363,10483,10523, + 1341, 674,10404, 1342, 1343,10524, 7762, 7762, 7762, 7762, + 10507,10525,10459,10459,10460,10459,10452, 5793, 5793, 5793, + 10464, 5793, 5793, 9746, 5793, 5794,10526,10475,10527, 5794, + 10528,10143,10143,10144,10143,10529,10511, 674,10143,10465, + 10144,10143, 674, 674, 4593, 5795,10530,10531, 674,10145, + 2305,10508, 8544, 5793, 5793, 9746, 5793, 674, 674,10145, + 10483,10509, 674, 674,10514,10533,10145, 6854,10461, 674, + 8545,10457,10512,10462, 674,10510, 2532, 5792, 5796,10443, + 10534,10145,10147, 674, 674, 6855,10507,10461, 674, 674, + + 10535,10463,10462, 8551,10461,10536, 5797, 674,10513,10462, + 10148,10537, 674,10143,10143,10144,10143,10538, 674, 6853, + 10463, 5794, 2529, 674,10462,10518,10539,10463, 5793, 5793, + 9746, 5793, 5793, 5793, 9746, 5793, 5794,10540,10541,10515, + 5794,10145,10463,10488,10488,10488,10488,10183,10542,10183, + 10183,10183,10183,10183,10183, 6797,10145,10258,10260,10545, + 10145,10183,10181,10183,10183,10183,10183,10183,10183,10146, + 10543,10546, 674,10182,10147,10182,10183, 674,10183,10183, + 10183,10183,10183,10183, 5792, 1325,10515, 1283, 5792,10147, + 2531,10547,10148,10147, 1652,10467, 1653,10548,10549,10183, + + 10550,10184,10184,10184,10184,10184,10184,10148,10466,10519, + 1283,10148,10187,10187,10187,10187,10187,10187,10187,10188, + 2308, 2531,10544,10498, 1490, 1652, 1491, 1653, 674,10551, + 10489, 6814, 2531, 674,10552,10521, 1652, 2531, 1653,10553, + 10532, 1652,10556, 1653, 1283, 1007,10557, 1007,10558, 1007, + 10559,10560,10561,10562, 1007, 1007,10563,10564,10565,10441, + 10566, 1007,10567,10288, 1007, 2866,10569, 4584,10571, 2867, + 10295, 2005,10573, 5259, 5259,10575, 2866,10576,10577,10568, + 2867,10578, 2005, 1007, 1007,10579, 1007,10581, 1806,10580, + 10586, 1007, 2866, 1007, 1007,10296, 2867,10582, 2005,10189, + + 1007,10583,10584,10189, 1325,10585,10312,10314,10587, 1007, + 1007, 1007, 1007, 1007, 1007,10570,10588,10590,10589,10591, + 1326, 1326, 1326, 1326, 1326, 1326, 1007,10321, 1007, 1283, + 10595, 1806, 1331,10592,10483,10594,10596,10597,10598,10600, + 10601,10602, 1007, 4593,10572, 1007,10443, 1007,10574,10603, + 10604,10605,10606, 1007, 1007, 1007,10607,10608,10167,10187, + 10187,10187,10327, 1530,10609, 1531, 1007, 1007,10618, 1007, + 1007, 2868, 2866,10507, 1007,10599, 2867, 1533, 2005, 1007, + 1534, 1535, 1325,10613,10615,10593, 2863, 1806, 1007,10610, + 1007, 1007,10515, 1007, 1007,10325, 2048, 2049, 1326, 1326, + + 1326, 1326, 1326, 1326, 1007, 1807,10182, 1283,10182,10183, + 1331,10183,10183,10183,10183,10183,10183,10611,10612,10183, + 1806,10326,10326,10326,10326,10326,10326,10614,10616,10617, + 1806, 1007, 1007, 2062, 2063, 1007, 1007, 2062, 2063, 4584, + 10364, 1530,10620, 1531,10621,10622,10189,10623,10624, 1007, + 10625,10626,10627,10628,10629, 1533,10630,10631, 1534, 1535, + 1807, 2121,10633,10634,10635,10636, 674,10638,10639,10640, + 10641, 674,10643,10644,10646,10647, 1808, 1808, 1808, 1808, + 1808, 1808,10645, 8428,10397, 1806,10648,10434, 1812,10649, + 10650,10653, 8428,10651,10652, 8428, 8428, 8428,10654, 8428, + + 8428,10655,10657, 8428, 8428, 674, 8428, 8428, 674,10656, + 674, 8428,10658, 674,10659,10619,10660, 8428,10661, 1818, + 10632, 1819,10662, 9155,10418,10664,10664,10664,10664, 6797, + 6797, 6797,10554, 1821, 6797,10427, 1822, 1823, 1807,10672, + 6797, 6797,10679,10689,10691,10698,10642,10454,10699,10712, + 10468,10721,10482,10725, 1808, 1808, 1808, 1808, 1808, 1808, + 10475, 2308,10728, 1806,10733, 1490, 1812, 1491,10692, 674, + 10692,10734, 8485,10735, 674, 1283,10687,10713, 2308,10495, + 10740,10741, 1490,10663, 1491, 1283, 674, 674, 674,10742, + 10667, 674, 674, 674,10673,10723,10666, 1818,10668, 1819, + + 10693,10669,10693,10743, 674, 6814, 6814, 6814,10747, 674, + 6814, 1821,10665,10670, 1822, 1823, 6814, 6814,10555, 5257, + 5257, 5257, 5257, 5257, 5258, 5257, 5257, 5257, 5259, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5260, 5260, 5260, 5260, 5260, 5260, 5257, 5257, 5257, 5261, + 5257, 5257, 5262, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5257, 5257, 5257, 5257, + 5257, 5257, 5263, 5264, 5263, 5265, 9933, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5266, 5263, 5263, + + 5267, 5268, 5263, 5263, 5263, 5263, 5263, 5263, 5257, 5257, + 5257, 5257, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8429, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8426, + 8426, 8426, 8426, 8426, 8426, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + + 8430, 8426, 8426,10637, 8426, 6797, 6797, 6797, 6797, 6797, + 10442, 6797,10736, 6797, 6797,10680,10485, 6797, 2308, 4584, + 4584, 4584, 1490,10754, 1491,10217, 674, 674, 674,10726, + 4584, 674, 674, 674,10719, 1283, 674, 7762, 7762, 7762, + 10700, 674,10755, 7762, 7762,10138, 7762,10459,10459,10460, + 10459,10459,10705,10460,10459, 674, 674,10258,10748,10675, + 674, 674,10459,10459,10460,10459,10671,10683,10771,10772, + 10697,10677, 674,11275,10686,10696,10774, 674,10685,10775, + 10776, 6814,10674, 6814,10676, 6814,10681, 6814,10684, 6814, + 6814,10682,10694, 6814,10443,10695, 4593, 4593, 6854, 6853, + + 10486,10738,10777,10702,10462,11275, 4593,10702,10703,10544, + 10778, 2308,10703, 9212,10780, 1490, 6855, 1491,10461, 674, + 674,10781,10463,10462, 674, 674,10704,10737, 2868,10559, + 10704, 7762, 7762,10138, 7762, 7762, 7762,10138, 7762,10784, + 11275,10463, 5793, 5793, 5793,10464,10143,10143,10144,10143, + 10785, 674, 5793, 5793, 9746, 5793, 674, 6797,10744,10478, + 5794,10478,10478,10478,10478,10478,10478,10786,10787,10745, + 5795, 674,11275, 674,10145, 2309, 674,10788, 674,10478, + 10145,10478,10478,10478,10478,10478,10478, 6853, 674,10789, + 10572, 6853,10462, 674,10574,10749,10462,10791,10707, 674, + + 10692,10750,10461, 6854, 674,10575,10792,10462, 5792,10756, + 10463,10706, 674,10711,10463,10751, 724, 674, 9212,10722, + 724, 6855, 724,10793,10794,10463, 7765, 7765,10708, 7765, + 1806,10148,10693, 6814, 5794,10488,10488,10488,10488,10796, + 10709,10800,10709,10710,10714,10710,10710,10710,10710,10710, + 10710, 674,10795, 2309,10145,10715, 674,10715,10716,10729, + 10717,10717,10717,10717,10717,10717, 2868,10586,10801,10718, + 10730,10802,10730,10731,10803,10731,10731,10731,10731,10731, + 10731,11275, 5792,10258,10752,10805,11275,10147, 674,10758, + 2309, 724, 1806, 674,11275, 724, 724, 724,10806,10807, + + 724,10736, 724,10760, 724,10148,10597,10736, 724,10808, + 724,10759,10732,11275, 674,11275,10809,10810,11275, 674, + 10567,10811,10489, 1325,10738, 724,11275,10812,10813, 724, + 4584, 724,10814,10815,10761,10593,11275,10817,10818, 1326, + 1326, 1326, 1326, 1326, 1326, 1806, 724,11275, 1283,11275, + 724, 1331, 724,10819, 2866,10820,11275, 2868, 2867, 724, + 2005,10762,10822, 724,10823, 724, 724, 2866,11275,10783, + 724, 2867, 724, 2005, 2866,10824,11275,10765, 2867,10825, + 2005,11275, 1530,10826, 1531, 2531, 724,10827,11275, 1652, + 724, 1653, 724,11275,10828,10829, 1533,10790,10830, 1534, + + 10757, 1325,10831, 724,10443,10816, 4593,10764,11275, 724, + 10821, 2868,10832, 2532,11275,10833, 2868, 1326, 1326, 1326, + 1326, 1326, 1326,10834, 724,11275, 1283,11275, 724, 1331, + 724,10836,10837,10838,10839,10642,10672, 724,10855,10763, + 11275, 724, 8430, 724, 2121,10842,11275,10841,10843, 8430, + 724, 8430,10857,10692, 724,10845, 724, 8430,10844,11275, + 1530, 8430, 1531, 2531,10851,10766,10846, 1652,10847, 1653, + 8430,10859,11275, 8430, 1533, 8430, 8430, 1534, 1535,10853, + 10852, 8430,10854,10860,10861,10693,10714,10862,10848, 8430, + 10664,10664,10664,10664,10865, 6797,10875,10715,11275,10715, + + 10716,10679,10717,10717,10717,10717,10717,10717, 724,11275, + 11275,10718, 724, 6797, 724,10858,10835, 9155,10767, 724, + 724,10879,10689, 724, 724, 724, 724,10691,10886,11275, + 11275,10768,10888,10890,10721,10725,10914,11275,11275, 724, + 6797,11275,11275,10769,10870, 724,11275, 724, 724, 2532, + 10872, 724, 724, 724, 724, 8430, 724, 2532,10692,10849, + 724,11275, 724, 6797,10850,10869, 8485, 6797, 2866,11275, + 11275,10868, 2867, 6797, 2005, 674,10915,10665,11275, 1807, + 674, 6797, 6797,10729,10863, 6797, 6797, 6797,10867, 6814, + 10693,10883,10797, 4584,10917, 1808, 1808, 1808, 1808, 1808, + + 1808,10894,10918,10715, 1806,10715,10716, 1812,10798,10798, + 10798,10798,10798,10798,10919, 4584, 6814,10799, 4584,10866, + 10871,10740,10876, 674,10924, 674,10873, 2309, 674,10907, + 674,10702,10702,10893,10702,10882,10732,10885, 1818, 6814, + 1819, 674,10878, 6814,10925,10743, 674,10880,10913,10877, + 10738,10921, 1821,10747,10133, 1822, 1823, 6814,10879,10779, + 1807, 6814,10881, 6814,10922,10754,10932,10884,10771, 4593, + 11275,10454,10455,11275, 9741, 1283, 1808, 1808, 1808, 1808, + 1808, 1808,10892,10891,10714, 1806,10258,10702, 1812, 1534, + 10936, 4593, 2532, 1636, 4593,10715,10937,10715,10716,10944, + + 10716,10716,10716,10716,10716,10716,10774, 1534,10716,10718, + 10716,10716,10716,10716,10716,10716,10945, 674, 674, 1818, + 2309, 1819,10929, 674,10923,10716,11275,10716,10716,10716, + 10716,10716,10716, 1821,10941, 1534, 1822, 1823, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8429, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8426, 8426, 8426, 8426, 8426, + + 8426, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 10840, 8430, 8430, 8430, 8430, 8430, 8430, 8426, 8426, 8428, + 8426, 7762, 7762, 7762,10700,10702,10702,10893,10702,11275, + 10454,10455,11275,11275,10454,10455,11275,10459,10459,10460, + 10459, 1007,10912, 7762, 7762,10138, 7762,10948, 1325, 5793, + 5793, 9746, 5793,10950, 6797,10951,10952, 5794,10905,10905, + 10905,10905,10716, 1473,10717,10717,10717,10717,10717,10717, + 674, 674, 2309, 1283,10939, 674, 674,10145,10926, 1534, + 10953,10702, 8544,10943,10909,11275, 674, 1534, 2309,11275, + + 674, 674,10931,10702, 2305, 674,10896, 9741,10703, 6853, + 8545,10938, 674,10954,10900, 5792,10912, 674,10955,10895, + 10147, 2532, 1007, 4584,10793, 1534,10704, 8546, 8546,10897, + 8546,10904,10463,10910,10910,10910,10910,10794,10148,10466, + 10933,10898,10958,10898,10899,10908,10899,10899,10899,10899, + 10899,10899, 674,10927, 1007,10906,10715, 674,10715,10716, + 1007,10716,10716,10716,10716,10716,10716,10940, 2529,10731, + 10908,10731,10731,10731,10731,10731,10731, 2532,10956, 1007, + 10957, 1534, 1534, 6853,10802,10805,10258,10731,10462,10731, + 10731,10731,10731,10731,10731, 2868,10960,10809, 1007, 4593, + + 2532,10962,10963,10928, 1534,10949,10463, 7765, 7765, 7765, + 7765, 674,10909, 2309,10912, 1007, 674,10959,10964,10965, + 10911, 8547, 1806, 8547, 8548, 2865, 8548, 8548, 8548, 8548, + 8548, 8548,10970, 1473, 1636, 5795,10930,10942, 1007, 2868, + 10973, 674, 1007,10961,10797,10974, 674,10975, 1534,10946, + 10946,10946,10946,10946,10946,10715, 1807,10715,10716,10916, + 10716,10716,10716,10716,10716,10716, 2863,10968, 6854,10799, + 10716, 1007,10798,10798,10798,10798,10798,10798,10976, 1007, + 10908, 1806,10972,10977,10978, 1007, 6855, 5793, 5793, 9746, + 5793,10715,10979,10715,10716, 5794,10716,10716,10716,10716, + + 10716,10716,10980,10981,10710,10908,10710,10710,10710,10710, + 10710,10710,10982, 2868,10966,10145, 1007,10967,10967,10967, + 10967,10967,10967,10969, 2868,10909, 2865, 1007,10983,10971, + 10984,10985,10986, 2868,10987,10988, 1007,10989, 8430, 1007, + 10991,10993, 8430, 5792, 8430,10995,10998, 8430,10147, 8430, + 8430,11001,10857,10997,11002, 8430,10415,11008, 9155,10999, + 10865, 6797,10996, 6797,11006, 6797,10148, 8550, 8550,10901, + 8550,10998,10871,10873,11000, 5794,11004,11004,11004,11004, + 10875, 6797, 6797, 6797,10710,10884,10710,10710,10710,10710, + 10710,10710, 8430, 8430,11017,10145,11007,10888, 6797,11016, + + 674,10693,10890, 4584, 4584, 674, 8430, 8485,10894,11036, + 8550, 8550, 8550, 8550,11038,11042,10992,10994,11043,10702, + 11020,10893,10702, 5792,11040,11009,11044,10922,10147,11047, + 11003,11048,11010,11015,11052, 674,11033,11011, 5795, 6814, + 674, 6814,11056,10902,11060, 674,10148,10903, 1325,11012, + 674,11018,11014,10905,10905,10905,10905,11013, 6814, 6814, + 11061,11062,11063,11005, 1326, 1326, 1326, 1326, 1326, 1326, + 11064, 6854, 674, 1283, 6814,10702, 1331, 674,11034, 4593, + 11019, 9741,11275,10454,10455,11275, 9212,11065, 2308, 6855, + 9213, 4584, 1490,11275, 1491, 1007, 674, 7762, 7762,10138, + + 7762, 674,10910,10910,10910,10910, 674, 1530,11041, 1531, + 1007, 674,11049, 1007, 5793, 5793, 9746, 5793, 674,11067, + 2532, 1533, 5794, 674, 1534, 1535, 5793, 5793, 9746, 5793, + 10934, 1325,11050, 2308, 5794,11275,11040, 1490,11275, 1491, + 10906, 674,10145,11025, 1007,11071, 674, 1326, 1326, 1326, + 1326, 1326, 1326, 6853,10145,11072, 1283, 1007,10462, 1331, + 5793, 5793, 9746, 5793,11069,11045,11073,11066, 5794,11029, + 5792,11046,11074, 674,11051,10147,10463,10706, 674,10922, + 11075, 674, 5792, 2309,11076, 1007, 674,10147,10145,10911, + 1530,11032, 1531,10148,11030,11039, 1007,11078,11079, 2868, + + 11050,11275,11080,11081, 1533,10148,11082,10935, 1535, 1807, + 1007,11039,11070,11275,11083,11085, 5792,11086,11087,10992, + 11041,10147,11275,10994,11089, 1808, 1808, 1808, 1808, 1808, + 1808,10908,11090, 8428, 1806,11092,11003, 1812,11031,10148, + 11091,11275,10715,11275,10715,10716,11093,10716,10716,10716, + 10716,10716,10716, 724,11094,11275,10908, 724,11275, 724, + 11095, 8428, 8428, 2532,11275, 724, 6797,11275, 1818, 724, + 1819, 724,11102,11034, 724,11039, 6797, 6797, 724,11275, + 724, 6797, 1821,11275,11115, 1822, 1823, 1807,11054,11036, + 11038,11033,11117, 724,11118,11119,11122, 724,11120, 724, + + 11275,11123,11125, 1808, 1808, 1808, 1808, 1808, 1808,11275, + 724,10922, 1806,11126, 724, 1812, 724, 674,11121, 724, + 2866,11275, 674, 724, 2867, 724, 2005, 1007,10922,11060, + 11061, 724,11050,11034,11130, 724,11097, 724,11096,11131, + 11055,11099,11098, 2866,11064,11132, 1818, 2867, 1819, 2005, + 1007, 1007, 6814, 6814,11128, 1007, 1007, 6814,11133,11134, + 1821,11135,10947, 1822, 1823, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8429, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8430, + + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8426, 8426, 8426, 8426, 8426, 8426, 8430, 8430, + 8430, 8430,10990, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8426, 8426, 8428, 8426, 9738,11021, + 11022, 9738,11275,10946,10946,10946,10946,10946,10946,11136, + 11040,11137,11023,11138,11023,11024, 6797,11024,11024,11024, + 11024,11024,11024,10967,10967,10967,10967,10967,10967, 1118, + 1118, 1118, 1118, 1118,11004,11004,11004,11004,11101, 4584, + + 10702,10702,10893,10702,11275,11129, 674,11078,11139,11140, + 11141, 674, 1007,11142,11275, 8546, 8546, 8546, 8546, 2866, + 11143,11144,11145, 2867,11146, 2005, 1007,11147,11148, 9209, + 11149, 9209, 9210,11057, 9210, 9210, 9210, 9210, 9210, 9210, + 11151, 8428,11150,11100, 9738, 9738, 9738, 9738,11152,11084, + 11153, 8428, 6814,11068,11041,11159,10702,11115, 9209,11167, + 9209, 9210,11103, 9210, 9210, 9210, 9210, 9210, 9210, 9738, + 11021, 9738, 9738,11117, 6797, 4593, 8544,11275,10454,10455, + 11275,11005, 6797, 9209,11168, 9209, 9210,11169, 9210, 9210, + 9210, 9210, 9210, 9210, 8545, 7762, 7762,10138, 7762,11170, + + 11171,11172,11173,11275,10454,10455,11275, 9211, 9211, 9211, + 9211,11125,10899,11275,10899,10899,10899,10899,10899,10899, + 11024,10922,11024,11024,11024,11024,11024,11024, 7762, 7762, + 10138, 7762,11174,11275,11176, 2308,11177, 1007,11178, 1490, + 11180, 1491, 1007, 674, 7762, 7762,10138, 7762, 674,11108, + 11154, 6853,11158,11175,11181,11275,10462,11182,11155,11275, + 7762, 7762,10138, 7762,11183,11127, 6797, 6797, 8544, 724, + 1007, 724,11275,11184,10463, 9211, 9211,11026, 9211,11185, + 11186,11179,11187, 9741, 6853,11188, 8545, 9742,11189,10462, + 11190, 4584,10899,11191,10899,10899,10899,10899,10899,10899, + + 6853, 5793, 5793, 9746, 5793,10462,11192,10463,11109, 5794, + 5793, 5793, 9746, 5793,11275,11156, 6853,11193, 5794,11194, + 11195,10462,11110,10463, 724,11111,11196,11275, 724,10145, + 724, 6853, 5793, 5793, 9746, 5793,10462,11197,10145,10463, + 5794,11199,11157, 6814, 674, 8428,11160,11204,11205, 674, + 6797,11027, 4584,11206,10463,11028, 1325, 5792,11158,11207, + 10145,11208,10147, 1007,11176,11209, 5792, 4593,11178,11275, + 1007,10147, 1326, 1326, 1326, 1326, 1326, 1326,11210, 724, + 10148, 1283,11211, 724, 1331, 724,11212,11213, 5792,10148, + 11214,11112,11215,10147,11216,11217,11113, 9740, 9740, 9740, + + 9740,11158, 9740,11104, 9740, 9740,11218,11275,10454,10455, + 11275,10148,11219,11198,11220, 1530,11221, 1531,11221,11275, + 10454,10455,11275,10415,10133,11053, 6814, 8428, 4593, 1533, + 6797,11223, 1534, 1535, 1325,11204,11275,10454,10455,11275, + 11225,11226,10922,11209,11033,10922,11227,11228,11229,11230, + 1326, 1326, 1326, 1326, 1326, 1326,11231,11232,11233, 1283, + 11234,11237, 1331,11275, 7762, 7762,10138, 7762,11275,10454, + 10455,11275,11239, 9741,11240,11275,11241, 9742, 9741, 6797, + 11242,11243, 9742,11235,11244,11222,11034,11161, 7762, 7762, + 10138, 7762,11275, 1530,11245, 1531, 2531,11162,11246,11247, + + 1652,11163, 1653, 8428, 8428,11249, 6814, 1533,11239,11251, + 1534, 1535, 1807,11250, 7762, 7762,10138, 7762,11252,11253, + 6853,11254, 6797,11255,11275,10462,11256,11257, 1808, 1808, + 1808, 1808, 1808, 1808,11258,11259,11250, 1806,11260,11261, + 1812,11262,11263,10463, 6853,11275,10454,10455,11275,10462, + 11264,11236,11266,11267,11268, 6814, 5793, 5793, 9746, 5793, + 11275,10454,10455,11275, 5794,11266,11269,10463,11270,11164, + 6853, 1818,11271, 1819,11272,10462,11274,11274,11165, 2908, + 11275,10454,10455,11275,10145, 1821, 2906,11058, 1822, 1823, + 1807, 1098, 1098,10463,10702,10702,10893,10702,11248,10916, + + 2905,11275, 1100, 1100, 1098, 1098, 1808, 1808, 1808, 1808, + 1808, 1808, 5792, 847, 2904, 1806,11275,10147, 1812, 847, + 847,11166,10916, 850,11201, 921,11200, 925, 2903, 850, + 850, 921, 921, 925, 925,10148,11275, 929, 1100, 1100, + 939, 2769, 2769, 929, 929,11224, 939, 939, 991, 1818, + 10702, 1819, 2899, 2766, 991, 991, 2769, 2769, 772,11059, + 2766, 2766, 2898, 1821, 772, 772, 1822, 1823, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8429, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + + 8426, 8426, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8426, 8426, 8426, 8426, 8426, + 8426, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8426, 8426,11088, + 8426, 9740,11104,11105, 9740,10143,10143,10144,10143, 7762, + 7762,10138, 7762, 5794,10690,10690, 2897,10690,11024, 2896, + 11024,11024,11024,11024,11024,11024,10459,10459,10460,10459, + 2890, 2889, 2888,10145, 5793, 5793, 9746,10464, 7762, 7762, + + 10138,10700, 5794, 847,11275,10454,10455,10894, 850, 847, + 847, 2887, 921, 2886, 850, 850, 2766,11275, 921, 921, + 2885,10146,10145, 2766, 2766, 6853,10147, 2882, 2881, 925, + 10462, 2880, 929, 2879,11202, 925, 925,11106, 929, 929, + 2878,11107,10461, 2877,10148, 939, 2876,10462,10463, 2875, + 5792, 939, 939, 2874, 6853,10147, 991, 2873, 2868,10462, + 11275, 2136, 991, 991, 2865,10463, 2864, 2136, 2136, 847, + 10902, 2863, 925,10148,11027, 847, 847,10463, 925, 925, + 11106, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 217, + 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, + 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, + 217, 217, 217, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 225, 225, 225, + 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, + 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, + + 225, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 243, 243, 243, 243, 243, + 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, + 243, 243, 243, 243, 243, 243, 243, 243, 243, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 256, 256, 256, + + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 273, 273, 273, 273, 273, 273, 273, + + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 277, 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + + 326, 326, 326, 326, 326, 326, 326, 326, 326, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + + 352, 352, 352, 352, 352, 358, 358, 358, 358, 358, + 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, + 358, 358, 358, 358, 358, 358, 358, 358, 358, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 365, 365, 365, 365, 365, 365, 365, + 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, + 365, 365, 365, 365, 365, 365, 365, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + + 368, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 380, + 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, + 380, 380, 380, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 397, 397, 397, 397, 397, + 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, + 397, 397, 397, 397, 397, 397, 397, 397, 397, 404, + 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, + 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, + 404, 404, 404, 410, 410, 410, 410, 410, 410, 410, + + 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, + 410, 410, 410, 410, 410, 410, 410, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 212, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 497, + 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, + + 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 509, 509, 509, + 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, + 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, + 509, 514, 514, 514, 514, 514, 514, 514, 514, 514, + 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, + 514, 514, 514, 514, 514, 518, 518, 518, 518, 518, + 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, + + 518, 518, 518, 518, 518, 518, 518, 518, 518, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 543, 543, 543, + 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, + 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, + 543, 545, 545, 545, 545, 545, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, + + 545, 545, 545, 545, 545, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 555, 555, 555, 555, 555, 555, 555, + 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, + 555, 555, 555, 555, 555, 555, 555, 564, 564, 564, + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + + 564, 567, 567, 567, 567, 567, 567, 567, 567, 567, + 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, + 567, 567, 567, 567, 567, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 582, 582, 582, 582, 582, 582, 582, + 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, + 582, 582, 582, 582, 582, 582, 582, 583, 583, 583, + + 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, + 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, + 583, 584, 584, 584, 584, 584, 584, 584, 584, 584, + 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, + 584, 584, 584, 584, 584, 589, 589, 589, 589, 589, + 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, + 589, 589, 589, 589, 589, 589, 589, 589, 589, 590, + 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, + 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, + 590, 590, 590, 600, 600, 600, 600, 600, 600, 600, + + 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, + 600, 600, 600, 600, 600, 600, 600, 601, 601, 601, + 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, + 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, + 601, 605, 605, 605, 605, 605, 605, 605, 605, 605, + 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, + 605, 605, 605, 605, 605, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 614, + 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, + + 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, + 614, 614, 614, 615, 615, 615, 615, 615, 615, 615, + 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, + 615, 615, 615, 615, 615, 615, 615, 616, 616, 616, + 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, + 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, + 616, 644, 644, 644, 644, 644, 644, 644, 644, 644, + 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, + 644, 644, 644, 644, 644, 646, 646, 646, 646, 646, + 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, + + 646, 646, 646, 646, 646, 646, 646, 646, 646, 768, + 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, + 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, + 768, 768, 768, 772, 2862, 929, 2861, 2136, 2860, 2859, + 772, 929, 929, 2136, 2136, 2856, 772, 772, 775, 775, + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 778, 778, 2855, 778, 778, 778, 778, 778, + 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, + 778, 778, 778, 778, 778, 778, 790, 790, 2854, 790, + + 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, + 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, + 803, 803, 2853, 803, 2848,10690,10690, 847,10690, 803, + 803, 2847, 803, 847, 847, 2846, 803, 803, 810, 810, + 810, 810, 810, 810, 810, 2845, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 824, 824, 824, 824, 824, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 833, 833, 2838, 2837, + 2836, 925, 2829, 833, 833, 834, 834, 925, 925, 2827, + + 929, 2826, 834, 834, 836, 836, 929, 929, 2825, 847, + 2818, 836, 836, 864, 864, 847, 847, 925, 2817, 929, + 864, 864, 869, 925, 925, 929, 929, 869, 869, 869, + 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, + 869, 869, 869, 869, 869, 869, 882, 882, 2816, 2815, + 5727, 2813, 847, 882, 882, 893, 5727, 5727, 847, 847, + 925, 893, 893, 2812, 2811, 2810, 925, 925, 893, 893, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 2809, 894, 904, 904, 904, 904, 904, 904, + + 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 904, 904, 904, 913, 913, + 913, 913, 2808, 2807, 929, 2802, 913, 913, 2792, 913, + 929, 929, 2791, 913, 913, 918, 918, 918, 918, 918, + 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, + 918, 918, 918, 918, 918, 918, 918, 918, 918, 927, + 2783, 2782, 2781, 2780, 2779, 927, 927, 2778, 927, 644, + 644, 644, 644, 644, 644, 2777, 644, 644, 644, 644, + 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, + 644, 644, 644, 947, 947, 2776, 2775, 2774, 847, 2773, + + 947, 947, 959, 959, 847, 847, 2772, 925, 2771, 959, + 959, 965, 965, 925, 925, 2770, 2768, 2767, 965, 965, + 985, 985, 985, 985, 2763, 985, 2762, 2761, 847, 2760, + 985, 925, 2759, 985, 847, 847, 2758, 925, 925, 985, + 985, 646, 646, 646, 646, 646, 646, 646, 646, 646, + 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, + 646, 646, 646, 646, 646, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1076, + 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, + + 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, + 1076, 1076, 1076, 768, 768, 768, 768, 768, 768, 768, + 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, + 768, 768, 768, 768, 768, 768, 768, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 1102, 2757, 2756, 2755, 9419, 2754, 2753, 1102, 2752, + 1102, 9419, 9419, 9424, 1102, 1102, 1102, 1102, 1106, 9424, + 9424, 2751, 9428, 2750, 2749, 1106, 2748, 1106, 9428, 9428, + 2747, 1106, 1106, 1106, 1106, 1111, 1111, 1111, 1111, 1111, + + 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, + 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1114, + 1114, 2746, 2745, 9638, 2744, 9419, 1114, 1114, 1121, 9638, + 9638, 9419, 9419, 2743, 9424, 2742, 2741, 1121, 2740, 1121, + 9424, 9424, 9428, 1121, 1121, 1124, 1124, 2739, 9428, 9428, + 2738, 2737, 1124, 1124, 1132, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1137, 2736, + 2735, 2734, 1137, 1137, 2733, 2731, 1137, 1137, 1137, 1137, + 1137, 1137, 1137, 1137, 2728, 1137, 1137, 1137, 1137, 1137, + + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 824, 824, 824, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 824, 824, 1237, 1237, + 2727, 2725, 2724, 2723, 2720, 1237, 1237, 1249, 1249, 2611, + 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, + 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, + 1249, 1261, 1261, 2717, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + + 1261, 1261, 1261, 1261, 1261, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 644, + 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, + 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, + 644, 644, 644, 1272, 1272, 1272, 1272, 1272, 1272, 2715, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 646, 646, 646, + 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, + 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, + + 646, 1326, 2713, 2705, 2700, 2699, 9638, 2698, 1326, 1326, + 2697, 1326, 9638, 9638, 2693, 2691, 2690, 1326, 1326, 1331, + 1331, 2689, 2681, 2680, 2679, 2672, 1331, 1331, 674, 2671, + 2667, 2666, 2663, 2662, 2651, 674, 674, 674, 674, 2650, + 2649, 2648, 2643, 2636, 674, 674, 724, 2635, 2634, 2628, + 2618, 2611, 2610, 724, 724, 724, 724, 2609, 2606, 2605, + 2600, 2599, 724, 724, 768, 768, 768, 768, 768, 768, + 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, + 768, 768, 768, 768, 768, 768, 768, 768, 790, 790, + 2598, 790, 790, 790, 790, 790, 790, 790, 790, 790, + + 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, + 790, 790, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 1692, 1692, 2597, 2596, + 2593, 2591, 2590, 1692, 1692, 1708, 1708, 2589, 2587, 2585, + 2584, 2583, 1708, 1708, 803, 803, 2582, 2576, 2569, 2568, + 2567, 803, 803, 810, 810, 810, 810, 810, 810, 810, + 2566, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, + + 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, + 824, 833, 833, 2565, 2564, 2561, 2558, 2556, 833, 833, + 834, 834, 2555, 2554, 2552, 2551, 2548, 834, 834, 836, + 836, 2330, 2547, 2546, 2545, 2544, 836, 836, 864, 864, + 2543, 2542, 2541, 2540, 2539, 864, 864, 869, 2538, 2537, + 2536, 2532, 869, 869, 869, 869, 869, 869, 869, 869, + 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, + 869, 882, 882, 1636, 2530, 2529, 1558, 2438, 882, 882, + 893, 2329, 2328, 2327, 2320, 2304, 2303, 2302, 893, 893, + 893, 1330, 2299, 2298, 1321, 2289, 893, 893, 894, 894, + + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 2288, 894, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, + 913, 913, 2287, 2286, 2285, 2284, 2283, 913, 913, 918, + 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, + 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, + + 918, 918, 918, 927, 2282, 2281, 2280, 2278, 1269, 927, + 927, 2271, 927, 724, 2270, 2269, 2268, 1262, 1257, 2265, + 724, 724, 724, 724, 2264, 2263, 2262, 2259, 1247, 724, + 724, 947, 947, 2257, 2254, 2253, 2252, 2251, 947, 947, + 959, 959, 2249, 2248, 2247, 2246, 2245, 959, 959, 965, + 965, 2236, 2235, 2234, 2233, 1223, 965, 965, 985, 985, + 985, 985, 1222, 1221, 2232, 2231, 1216, 1215, 985, 2230, + 2222, 985, 1138, 1330, 1321, 1138, 2134, 985, 985, 1808, + 1138, 1138, 1138, 1138, 1138, 1138, 1808, 1808, 1138, 1808, + 1138, 1138, 1138, 1138, 1138, 1808, 1808, 1812, 1812, 1138, + + 1138, 1138, 1138, 1138, 1812, 1812, 1007, 1138, 1138, 1133, + 2131, 2128, 2127, 1007, 1007, 1007, 1007, 2126, 2125, 2124, + 2123, 2121, 1007, 1007, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2051, 2051, + 2051, 2051, 2051, 2051, 2120, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 1066, 1066, 1066, 1066, 2061, 2061, 2061, 2061, + + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, + 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, + 1076, 1076, 1076, 1076, 1102, 2119, 1112, 2118, 2078, 2044, + 2043, 1102, 986, 1802, 1793, 1792, 1791, 1102, 1102, 1790, + 1102, 1106, 1789, 1788, 1787, 1786, 1785, 1784, 1106, 1783, + 1782, 1106, 1781, 1780, 1106, 1106, 1111, 1111, 1111, 1111, + 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, + 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, + + 1114, 1114, 1779, 1778, 1777, 1776, 1773, 1114, 1114, 1121, + 1770, 1767, 938, 1766, 1765, 1764, 928, 1761, 1121, 919, + 895, 895, 895, 1752, 1121, 1121, 1124, 1124, 1751, 1750, + 1749, 1748, 1746, 1124, 1124, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1137, + 876, 1745, 1744, 1137, 1137, 866, 1743, 1137, 1137, 1137, + 1137, 1137, 1137, 1137, 1137, 866, 1137, 1137, 1137, 1137, + 1137, 2132, 866, 866, 867, 2132, 2132, 866, 866, 2132, + 2132, 2132, 2132, 2132, 2132, 2132, 2132, 1742, 2132, 2132, + + 2132, 2132, 2132, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 2170, 1741, 1740, + 1739, 1738, 1737, 1736, 2170, 2170, 1735, 2170, 1734, 1733, + 1732, 1731, 1730, 2170, 2170, 2173, 2173, 825, 1729, 1728, + 1727, 1726, 2173, 2173, 674, 1725, 1719, 1718, 1715, 1714, + 1713, 674, 674, 674, 674, 1712, 1711, 1707, 1706, 1705, + 674, 674, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, + 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, + 2250, 2250, 2250, 2250, 2250, 2250, 1237, 1237, 1701, 1700, + + 1698, 1697, 1694, 1237, 1237, 2258, 2258, 1693, 776, 769, + 1691, 1690, 2258, 2258, 1261, 1261, 1686, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 2276, 1330, 1321, 1281, + 1273, 1271, 1270, 1262, 1262, 1262, 2276, 2276, 2276, 2276, + + 2276, 2276, 2276, 2276, 2276, 2279, 1247, 2279, 1245, 1244, + 1241, 2279, 2279, 1326, 1238, 1235, 1234, 1233, 1230, 1223, + 1326, 1326, 1222, 1326, 1221, 1216, 1215, 1138, 1138, 1326, + 1326, 1331, 1331, 1138, 1138, 1138, 1159, 1138, 1331, 1331, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 724, 1136, 1123, 1116, 1115, 1110, + 1108, 724, 724, 724, 724, 767, 1065, 717, 650, 649, + 724, 724, 1692, 1692, 643, 1055, 761, 1054, 717, 1692, + 1692, 1708, 1708, 1053, 990, 988, 650, 982, 1708, 1708, + + 803, 803, 958, 946, 928, 920, 926, 803, 803, 2765, + 920, 919, 2765, 914, 911, 895, 892, 891, 889, 888, + 875, 2765, 2765, 817, 871, 868, 866, 866, 2765, 2765, + 836, 836, 866, 867, 866, 866, 865, 836, 836, 864, + 864, 848, 767, 844, 832, 827, 864, 864, 882, 882, + 817, 817, 817, 797, 797, 882, 882, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + + 894, 894, 894, 792, 894, 2795, 2795, 2795, 2795, 2795, + 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, + 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 947, + 947, 791, 771, 767, 717, 650, 947, 947, 959, 959, + 649, 645, 643,11275, 544, 959, 959, 965, 965, 544, + 544, 544, 542, 542, 965, 965, 1808, 369, 369, 212, + 212, 276, 276, 1808, 1808, 274, 1808, 274,11275,11275, + 11275,11275, 1808, 1808, 1812, 1812,11275,11275,11275,11275, + 11275, 1812, 1812, 1007,11275,11275,11275,11275,11275,11275, + 1007, 1007, 1007, 1007,11275,11275,11275,11275,11275, 1007, + + 1007, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, + 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, + 2907, 2907, 2907, 2907, 2907, 2276,11275,11275,11275,11275, + 11275,11275,11275,11275,11275, 2276, 2276, 2276, 2276, 2276, + 2276, 2276, 2276, 2276, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 1102,11275,11275,11275, + 11275,11275,11275, 1102,11275,11275,11275,11275,11275, 1102, + 1102,11275, 1102, 1106,11275,11275,11275,11275,11275,11275, + 1106,11275,11275, 1106,11275,11275, 1106, 1106, 1114, 1114, + 11275,11275,11275,11275,11275, 1114, 1114, 1121,11275,11275, + 11275,11275,11275,11275,11275,11275, 1121,11275,11275,11275, + 11275,11275, 1121, 1121, 1124, 1124,11275,11275,11275,11275, + 11275, 1124, 1124, 2132,11275,11275,11275, 2132, 2132,11275, + 11275, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,11275, + + 2132, 2132, 2132, 2132, 2132, 1137,11275,11275,11275, 1137, + 1137,11275,11275, 1137, 1137, 1137, 1137, 1137, 1137, 1137, + 1137,11275, 1137, 1137, 1137, 1137, 1137, 2170,11275,11275, + 11275,11275,11275,11275, 2170, 2170,11275, 2170,11275,11275, + 11275,11275,11275, 2170, 2170, 2173, 2173,11275,11275,11275, + 11275,11275, 2173, 2173, 674,11275,11275,11275,11275,11275, + 11275, 674, 674, 674, 674,11275,11275,11275,11275,11275, + 674, 674, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, + 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, + 2250, 2250, 2250, 2250, 2250, 2250, 1237, 1237,11275,11275, + + 11275,11275,11275, 1237, 1237, 2258, 2258,11275,11275,11275, + 11275,11275, 2258, 2258, 1261, 1261,11275, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1326,11275,11275,11275, + 11275,11275,11275, 1326, 1326,11275, 1326,11275,11275,11275, + + 11275,11275, 1326, 1326, 1331, 1331,11275,11275,11275,11275, + 11275, 1331, 1331, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 724,11275,11275, + 11275,11275,11275,11275, 724, 724, 724, 724,11275,11275, + 11275,11275,11275, 724, 724, 1692, 1692,11275,11275,11275, + 11275,11275, 1692, 1692, 1708, 1708,11275,11275,11275,11275, + 11275, 1708, 1708, 803, 803,11275,11275,11275,11275,11275, + 803, 803, 2765, 2765,11275,11275,11275,11275,11275, 2765, + 2765, 836, 836,11275,11275,11275,11275,11275, 836, 836, + + 864, 864,11275,11275,11275,11275, 864, 864, 864, 882, + 882,11275,11275,11275,11275,11275, 882, 882, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, + 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, + 2795, 2795, 2795, 2795, 2795, 2795, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 3903, 3903, 3903, 3903, 3903, 3903, + 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, + 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 947, 947, + 11275,11275,11275,11275,11275, 947, 947, 959, 959,11275, + 11275,11275,11275,11275, 959, 959, 965, 965,11275,11275, + 11275,11275,11275, 965, 965, 1808,11275,11275,11275,11275, + 11275,11275, 1808, 1808,11275, 1808,11275,11275,11275,11275, + 11275, 1808, 1808, 1812, 1812,11275,11275,11275,11275,11275, + 1812, 1812, 1007,11275,11275,11275,11275,11275,11275, 1007, + + 1007, 1007, 1007,11275,11275,11275,11275,11275, 1007, 1007, + 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, + 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, + 2907, 2907, 2907, 2907, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 1102,11275,11275,11275,11275,11275,11275, 1102, + 11275,11275,11275,11275,11275, 1102, 1102,11275, 1102, 1106, + + 11275,11275,11275,11275,11275,11275, 1106,11275,11275, 1106, + 11275,11275, 1106, 1106, 1114, 1114,11275,11275,11275,11275, + 11275, 1114, 1114, 1121,11275,11275,11275,11275,11275,11275, + 11275,11275, 1121,11275,11275,11275,11275, 1121, 1121, 1121, + 1124, 1124,11275,11275,11275,11275,11275, 1124, 1124, 4454, + 11275,11275,11275, 4454, 4454,11275,11275, 4454, 4454, 4454, + 4454, 4454, 4454, 4454, 4454,11275, 4454, 4454, 4454, 4454, + 4454, 1137,11275,11275,11275, 1137, 1137,11275,11275, 1137, + 1137, 1137, 1137, 1137, 1137, 1137, 1137,11275, 1137, 1137, + 1137, 1137, 1137, 2170,11275,11275,11275,11275,11275,11275, + + 2170, 2170,11275, 2170,11275,11275,11275,11275,11275, 2170, + 2170, 2173, 2173,11275,11275,11275,11275,11275, 2173, 2173, + 674,11275,11275,11275,11275,11275,11275, 674, 674, 674, + 674,11275,11275,11275,11275,11275, 674, 674, 1237, 1237, + 11275,11275,11275,11275,11275, 1237, 1237, 2258, 2258,11275, + 11275,11275,11275,11275, 2258, 2258, 1261, 1261,11275, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + + 1272, 1272, 1272, 1272, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1326,11275, + 11275,11275,11275,11275,11275, 1326, 1326,11275, 1326,11275, + 11275,11275,11275,11275, 1326, 1326, 1331, 1331,11275,11275, + 11275,11275,11275, 1331, 1331, 4585,11275,11275,11275,11275, + 4585,11275,11275,11275,11275,11275, 4585, 4585,11275, 4585, + 724,11275,11275,11275,11275,11275,11275, 724, 724, 724, + 724,11275,11275,11275,11275,11275, 724, 724, 724, 1692, + 1692,11275,11275,11275,11275,11275, 1692, 1692, 1708, 1708, + + 11275,11275,11275,11275,11275, 1708, 1708, 5044,11275,11275, + 11275,11275,11275, 5044, 5044,11275, 5044, 803, 803,11275, + 11275,11275,11275,11275, 803, 803, 836, 836,11275,11275, + 11275,11275,11275, 836, 836, 864, 864,11275,11275,11275, + 11275,11275, 864, 864, 882,11275,11275, 882,11275,11275, + 11275,11275,11275,11275,11275,11275, 882, 882,11275,11275, + 11275,11275,11275, 882, 882, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 3903, + 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, + + 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, + 3903, 3903, 3903, 3906, 3906, 3906, 3906, 3906, 3906, 3906, + 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, + 3906, 3906, 3906, 3906, 3906, 3906, 3906, 947, 947,11275, + 11275,11275,11275,11275, 947, 947, 959,11275,11275, 959, + 11275,11275,11275,11275,11275,11275,11275,11275, 959, 959, + 11275,11275,11275,11275,11275, 959, 959, 965,11275,11275, + 965,11275,11275,11275,11275,11275,11275,11275,11275, 965, + 965,11275,11275,11275,11275,11275, 965, 965, 1808,11275, + 11275,11275,11275,11275,11275, 1808, 1808,11275, 1808,11275, + + 11275,11275,11275,11275, 1808, 1808, 1812, 1812,11275,11275, + 11275,11275,11275, 1812, 1812, 1007,11275,11275,11275,11275, + 11275,11275, 1007, 1007, 1007, 1007,11275,11275,11275,11275, + 11275, 1007, 1007, 1007, 5179, 5179,11275, 5179, 5179, 5179, + 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, + 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 4585,11275, + 11275,11275,11275, 4585,11275,11275,11275,11275,11275, 4585, + 4585,11275, 4585, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2061, 2061, 2061, + + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 1102,11275,11275, 1102,11275,11275, 1102,11275,11275, + 11275,11275,11275,11275, 1102,11275,11275,11275,11275,11275, + 1102, 1102,11275, 1102, 1106,11275,11275, 1106,11275,11275, + 1106,11275,11275,11275,11275,11275,11275, 1106,11275,11275, + 1106,11275,11275, 1106, 1106, 1114, 1114,11275,11275,11275, + 11275,11275, 1114, 1114, 1121,11275,11275,11275,11275,11275, + 11275,11275,11275, 1121,11275,11275,11275,11275,11275, 1121, + 1121, 1124, 1124,11275,11275,11275,11275,11275, 1124, 1124, + + 5648, 5648,11275,11275,11275,11275,11275, 5648, 5648, 4454, + 11275,11275,11275, 4454, 4454,11275,11275, 4454, 4454, 4454, + 4454, 4454, 4454, 4454, 4454,11275, 4454, 4454, 4454, 4454, + 4454, 1137,11275,11275,11275, 1137, 1137,11275,11275, 1137, + 1137, 1137, 1137, 1137, 1137, 1137, 1137,11275, 1137, 1137, + 1137, 1137, 1137, 2170,11275,11275,11275,11275,11275,11275, + 2170, 2170,11275, 2170,11275,11275,11275,11275,11275, 2170, + 2170, 2173, 2173,11275,11275,11275,11275,11275, 2173, 2173, + 674,11275,11275,11275,11275,11275,11275, 674, 674, 674, + 674,11275,11275,11275,11275,11275, 674, 674, 1237, 1237, + + 11275,11275,11275,11275,11275, 1237, 1237, 2258, 2258,11275, + 11275,11275,11275,11275, 2258, 2258, 1261, 1261,11275, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1326,11275, + 11275,11275,11275,11275,11275, 1326, 1326,11275, 1326,11275, + + 11275,11275,11275,11275, 1326, 1326, 1331, 1331,11275,11275, + 11275,11275,11275, 1331, 1331, 5758, 5758,11275, 5758, 5758, + 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, + 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5761, + 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, + 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, + 5761,11275, 5761, 5763, 5763, 5763, 5763, 5763, 5763, 5763, + 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, + 5763, 5763, 5763, 5763, 5763, 5763, 5763, 4585,11275,11275, + 11275,11275, 4585,11275,11275,11275,11275,11275, 4585, 4585, + + 11275, 4585, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5883, 5883, 5883, 5883, + 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, + 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, + 4770,11275,11275, 4770, 4770, 4770, 4770, 4770, 4770, 4770, + 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, + 11275, 4770, 4770, 4770, 724,11275,11275,11275,11275,11275, + 11275, 724, 724, 724, 724,11275,11275,11275,11275,11275, + 724, 724, 1692, 1692,11275,11275,11275,11275,11275, 1692, + + 1692, 1708, 1708,11275,11275,11275,11275,11275, 1708, 1708, + 5044,11275,11275,11275,11275,11275, 5044, 5044,11275, 5044, + 803, 803,11275,11275,11275,11275,11275, 803, 803, 836, + 836,11275,11275,11275,11275,11275, 836, 836, 864, 864, + 11275,11275,11275,11275,11275, 864, 864, 882, 882,11275, + 11275,11275,11275,11275, 882, 882, 6239, 6239, 6239, 6239, + 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, + 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, + + 894, 894, 894, 894, 947,11275,11275,11275,11275,11275, + 11275,11275,11275, 947, 947,11275,11275,11275,11275,11275, + 947, 947, 947, 959, 959,11275,11275,11275,11275,11275, + 959, 959, 965, 965,11275,11275,11275,11275,11275, 965, + 965, 1808,11275,11275,11275,11275,11275,11275, 1808, 1808, + 11275, 1808,11275,11275,11275,11275,11275, 1808, 1808, 1812, + 1812,11275,11275,11275,11275,11275, 1812, 1812, 1007,11275, + 11275,11275,11275,11275,11275, 1007, 1007, 1007, 1007,11275, + 11275,11275,11275,11275, 1007, 1007, 4585,11275,11275,11275, + 11275, 4585,11275,11275,11275,11275,11275, 4585, 4585,11275, + + 4585, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 5601, + 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, + 5601, 5601, 5601, 5601,11275, 5601, 5601, 5601, 5601, 5601, + 5601, 5601, 5601, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 1326,11275,11275, + + 11275,11275,11275,11275, 1326, 1326,11275, 1326,11275,11275, + 11275,11275,11275, 1326, 1326, 1331, 1331,11275,11275,11275, + 11275,11275, 1331, 1331, 1102,11275,11275,11275,11275,11275, + 11275, 1102,11275,11275,11275,11275,11275, 1102, 1102,11275, + 1102, 1114, 1114,11275,11275,11275,11275,11275, 1114, 1114, + 1121,11275,11275,11275,11275,11275,11275,11275,11275, 1121, + 11275,11275,11275,11275,11275, 1121, 1121, 1124, 1124,11275, + 11275,11275,11275,11275, 1124, 1124, 5648, 5648,11275,11275, + 11275,11275,11275, 5648, 5648, 6719,11275,11275,11275, 6719, + 6719,11275,11275, 6719, 6719, 6719, 6719, 6719, 6719, 6719, + + 6719,11275, 6719, 6719, 6719, 6719, 6719, 1137,11275,11275, + 11275, 1137, 1137,11275,11275, 1137, 1137, 1137, 1137, 1137, + 1137, 1137, 1137,11275, 1137, 1137, 1137, 1137, 1137, 2170, + 11275,11275,11275,11275,11275,11275, 2170, 2170,11275, 2170, + 11275,11275,11275,11275,11275, 2170, 2170, 2173, 2173,11275, + 11275,11275,11275,11275, 2173, 2173, 674, 674, 674, 674, + 11275,11275,11275,11275,11275,11275, 674, 674, 674, 674, + 11275,11275,11275,11275,11275, 674, 674, 674, 1237, 1237, + 11275,11275,11275,11275,11275, 1237, 1237, 2258, 2258,11275, + 11275,11275,11275,11275, 2258, 2258, 1261, 1261,11275, 1261, + + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 5727,11275, + 11275,11275,11275,11275, 5727, 5727,11275, 5727, 6789, 6789, + 11275, 6789, 6789, 6789, 6789, 6789, 6789, 6789, 6789, 6789, + 6789, 6789, 6789, 6789, 6789, 6789, 6789, 6789, 6789, 6789, + + 6789, 6789, 6798,11275,11275,11275,11275, 6798,11275,11275, + 11275,11275,11275, 6798, 6798,11275, 6798, 5758, 5758,11275, + 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, + 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, + 5758, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, + 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, + 5761, 5761, 5761,11275, 5761, 5763, 5763, 5763, 5763, 5763, + 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, + 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, 4585, + 11275,11275,11275,11275, 4585,11275,11275,11275,11275,11275, + + 4585, 4585,11275, 4585, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 6853, 6853, + 6853, 6853, 6853, 6853, 6853,11275, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, + 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, + 5883, 5883, 5883, 5883, 5883, 5883, 7016,11275,11275,11275, + 11275,11275, 7016, 7016,11275, 7016, 724,11275,11275,11275, + 11275,11275,11275, 724, 724, 724, 724,11275,11275,11275, + + 11275,11275, 724, 724, 1692, 1692,11275,11275,11275,11275, + 11275, 1692, 1692, 1708, 1708,11275,11275,11275,11275,11275, + 1708, 1708, 5044,11275,11275,11275,11275,11275, 5044, 5044, + 11275, 5044, 803, 803,11275,11275,11275,11275,11275, 803, + 803, 836,11275,11275,11275,11275,11275,11275,11275,11275, + 836, 836,11275,11275,11275,11275,11275, 836, 836, 7224, + 11275,11275,11275,11275,11275, 7224, 7224,11275, 7224, 864, + 864,11275,11275,11275,11275,11275, 864, 864, 882, 882, + 11275,11275,11275,11275,11275, 882, 882, 6239, 6239, 6239, + 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, + + 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, + 6239, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 3906, 3906, 3906, 3906, 3906, + 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, + 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 947, + 947,11275,11275,11275,11275,11275, 947, 947, 959, 959, + 11275,11275,11275,11275,11275, 959, 959, 965, 965,11275, + 11275,11275,11275,11275, 965, 965, 7259, 7259, 7259, 7259, + 11275,11275,11275,11275,11275,11275, 7259,11275,11275, 7259, + + 11275,11275,11275,11275,11275, 7259, 7259, 1808,11275,11275, + 11275,11275,11275,11275, 1808, 1808,11275, 1808,11275,11275, + 11275,11275,11275, 1808, 1808, 1812, 1812,11275,11275,11275, + 11275,11275, 1812, 1812, 1007,11275,11275,11275,11275,11275, + 11275, 1007, 1007, 1007, 1007,11275,11275,11275,11275,11275, + 1007, 1007, 6798,11275,11275,11275,11275, 6798,11275,11275, + 11275,11275,11275, 6798, 6798,11275, 6798, 4585,11275,11275, + 11275,11275, 4585,11275,11275,11275,11275,11275, 4585, 4585, + 11275, 4585, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + + 2047, 2047, 2047, 2047, 2047, 2047, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 1102,11275,11275,11275,11275,11275,11275, 1102,11275,11275, + 11275,11275,11275, 1102, 1102,11275, 1102, 1114, 1114,11275, + 11275,11275,11275,11275, 1114, 1114, 1121,11275,11275,11275, + 11275,11275,11275,11275,11275, 1121,11275,11275,11275,11275, + 11275, 1121, 1121, 1124, 1124,11275,11275,11275,11275,11275, + 1124, 1124, 6719,11275,11275,11275, 6719, 6719,11275,11275, + 6719, 6719, 6719, 6719, 6719, 6719, 6719, 6719,11275, 6719, + + 6719, 6719, 6719, 6719, 1137,11275,11275,11275, 1137, 1137, + 11275,11275, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, + 11275, 1137, 1137, 1137, 1137, 1137, 2170,11275,11275,11275, + 11275,11275,11275, 2170, 2170,11275, 2170,11275,11275,11275, + 11275,11275, 2170, 2170, 2173, 2173,11275,11275,11275,11275, + 11275, 2173, 2173, 674,11275,11275,11275,11275,11275,11275, + 674, 674, 674, 674,11275,11275,11275,11275,11275, 674, + 674, 1237, 1237, 1237, 1237,11275,11275,11275,11275,11275, + 11275,11275,11275, 1237, 1237,11275, 1237,11275,11275,11275, + 1237, 1237, 2258, 2258,11275,11275,11275,11275,11275, 2258, + + 2258, 1261, 1261,11275, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, + 1261, 1261, 1261, 1261, 1261, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1331, 1331,11275,11275,11275,11275,11275, + 1331, 1331, 6798,11275,11275,11275,11275, 6798,11275,11275, + 11275,11275,11275, 6798, 6798,11275, 6798, 1326,11275,11275, + + 11275,11275,11275,11275, 1326, 1326,11275, 1326,11275,11275, + 11275,11275,11275, 1326, 1326, 6853, 6853, 6853, 6853, 6853, + 6853, 6853,11275, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 7837, 7837, 7837, 7837, 7837, 7837, 7837, + 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7837, + 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7016,11275,11275, + 11275,11275,11275, 7016, 7016,11275, 7016, 724,11275,11275, + + 11275,11275,11275,11275, 724, 724, 724, 724,11275,11275, + 11275,11275,11275, 724, 724, 1692, 1692,11275,11275,11275, + 11275,11275, 1692, 1692, 1708, 1708,11275,11275,11275,11275, + 11275, 1708, 1708, 5044,11275,11275,11275,11275,11275, 5044, + 5044,11275, 5044, 803, 803,11275,11275,11275,11275,11275, + 803, 803, 803, 7224,11275,11275,11275,11275,11275, 7224, + 7224,11275, 7224, 864, 864,11275,11275,11275,11275,11275, + 864, 864, 882,11275,11275, 882,11275,11275,11275,11275, + 11275,11275,11275,11275, 882, 882,11275,11275,11275,11275, + 11275, 882, 882, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 947,11275,11275, + 947,11275,11275,11275,11275,11275,11275,11275,11275, 947, + 947,11275,11275,11275,11275,11275, 947, 947, 959,11275, + 11275, 959,11275,11275,11275,11275,11275,11275,11275,11275, + 959, 959,11275,11275,11275,11275,11275, 959, 959, 965, + 11275,11275, 965,11275,11275,11275,11275,11275,11275,11275, + 11275, 965, 965,11275,11275,11275,11275,11275, 965, 965, + 7259, 7259, 7259, 7259,11275,11275,11275,11275,11275,11275, + 7259,11275,11275, 7259,11275,11275,11275,11275,11275, 7259, + + 7259, 1812, 1812,11275,11275,11275,11275,11275, 1812, 1812, + 1007,11275,11275,11275,11275,11275,11275, 1007, 1007, 1007, + 1007,11275,11275,11275,11275,11275, 1007, 1007, 1808,11275, + 11275,11275,11275,11275,11275, 1808, 1808,11275, 1808,11275, + 11275,11275,11275,11275, 1808, 1808, 4585,11275,11275,11275, + 11275, 4585,11275,11275,11275,11275,11275, 4585, 4585,11275, + 4585, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 1102, + 11275,11275,11275,11275,11275,11275, 1102,11275,11275,11275, + 11275,11275, 1102, 1102,11275, 1102, 1114, 1114,11275,11275, + 11275,11275,11275, 1114, 1114, 1121,11275,11275,11275,11275, + 11275,11275,11275,11275, 1121,11275,11275,11275,11275,11275, + 1121, 1121, 1124, 1124,11275,11275,11275,11275,11275, 1124, + 1124, 8421,11275,11275,11275, 8421, 8421,11275,11275, 8421, + 8421, 8421, 8421, 8421, 8421, 8421, 8421,11275, 8421, 8421, + 8421, 8421, 8421, 1137,11275,11275,11275, 1137, 1137,11275, + 11275, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137,11275, + + 1137, 1137, 1137, 1137, 1137, 2173, 2173,11275,11275,11275, + 11275,11275, 2173, 2173, 674,11275,11275,11275,11275,11275, + 11275, 674, 674, 674, 674,11275,11275,11275,11275,11275, + 674, 674, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 2258, 2258,11275,11275, + 11275,11275,11275, 2258, 2258, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1331, 1331,11275,11275,11275,11275,11275, + 1331, 1331, 6798,11275,11275,11275,11275, 6798,11275,11275, + 11275,11275,11275, 6798, 6798,11275, 6798, 6853, 6853, 6853, + 6853, 6853, 6853, 6853,11275, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 1326,11275,11275,11275,11275, + 11275,11275, 1326, 1326,11275, 1326,11275,11275,11275,11275, + + 11275, 1326, 1326, 8590, 8590,11275,11275,11275,11275,11275, + 8590, 8590, 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7837, + 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7837, 7837, + 7837, 7837, 7837, 7837, 7837, 7837, 724,11275,11275,11275, + 11275,11275,11275, 724, 724, 724, 724,11275,11275,11275, + 11275,11275, 724, 724, 1692, 1692,11275,11275,11275,11275, + 11275, 1692, 1692, 1708, 1708,11275,11275,11275,11275,11275, + 1708, 1708, 5044,11275,11275,11275,11275,11275, 5044, 5044, + 11275, 5044, 803, 803,11275,11275,11275,11275,11275, 803, + 803, 847,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275, 847,11275, 847,11275,11275,11275, 847, 847, 864, + 11275,11275,11275,11275,11275,11275,11275,11275, 864, 864, + 11275, 864,11275,11275,11275, 864, 864, 882, 882,11275, + 11275,11275,11275,11275, 882, 882, 925,11275,11275,11275, + 11275,11275,11275,11275,11275,11275, 925,11275, 925,11275, + 11275,11275, 925, 925, 947, 947,11275,11275,11275,11275, + 11275, 947, 947, 959, 959,11275,11275,11275,11275,11275, + 959, 959, 965, 965,11275,11275,11275,11275,11275, 965, + 965, 1812, 1812,11275,11275,11275,11275,11275, 1812, 1812, + 1007,11275,11275,11275,11275,11275,11275, 1007, 1007, 1007, + + 1007,11275,11275,11275,11275,11275, 1007, 1007, 4585,11275, + 11275,11275,11275, 4585,11275,11275,11275,11275,11275, 4585, + 4585,11275, 4585, 1808,11275,11275,11275,11275,11275,11275, + 1808, 1808,11275, 1808,11275,11275,11275,11275,11275, 1808, + 1808, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 1102, + 11275,11275, 1102,11275,11275,11275,11275,11275,11275, 1102, + + 11275, 1102,11275,11275,11275, 1102, 1102,11275, 1102, 1121, + 11275,11275,11275,11275,11275,11275,11275,11275, 1121,11275, + 11275,11275,11275,11275, 1121, 1121, 1124, 1124,11275,11275, + 11275,11275,11275, 1124, 1124, 8421,11275,11275,11275, 8421, + 8421,11275,11275, 8421, 8421, 8421, 8421, 8421, 8421, 8421, + 8421,11275, 8421, 8421, 8421, 8421, 8421, 1137,11275,11275, + 11275, 1137, 1137,11275,11275, 1137, 1137, 1137, 1137, 1137, + 1137, 1137, 1137,11275, 1137, 1137, 1137, 1137, 1137, 2173, + 2173,11275,11275,11275,11275,11275, 2173, 2173, 674,11275, + 11275,11275,11275,11275,11275, 674, 674, 674, 674,11275, + + 11275,11275,11275,11275, 674, 674, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 2258, 2258,11275,11275,11275,11275,11275, 2258, 2258, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1331, 1331,11275, + 11275,11275,11275,11275, 1331, 1331, 6798,11275,11275,11275, + + 11275, 6798,11275,11275,11275,11275,11275, 6798, 6798,11275, + 6798, 6853, 6853, 6853, 6853, 6853, 6853, 6853,11275, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 8590, + 8590,11275,11275,11275,11275,11275, 8590, 8590, 9258, 9258, + 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, + 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, + 9258, 9258, 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, + + 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, + 9264, 9264, 9264, 9264, 9264, 9264, 9294, 9294,11275,11275, + 11275,11275,11275, 9294, 9294, 724,11275,11275,11275,11275, + 11275,11275, 724, 724, 724, 724,11275,11275,11275,11275, + 11275, 724, 724, 1692, 1692,11275,11275,11275,11275,11275, + 1692, 1692, 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, + 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, + 9409, 9409, 9409, 9409, 9409, 9409, 1708, 1708,11275,11275, + 11275,11275,11275, 1708, 1708, 5044,11275,11275,11275,11275, + 11275, 5044, 5044,11275, 5044, 803, 803,11275,11275,11275, + + 11275,11275, 803, 803, 882, 882, 882, 882,11275,11275, + 11275,11275,11275,11275,11275,11275, 882, 882,11275,11275, + 11275,11275,11275, 882, 882, 9429,11275,11275,11275,11275, + 11275, 9429, 9429,11275, 9429, 947, 947,11275,11275,11275, + 11275,11275, 947, 947, 959, 959,11275,11275,11275,11275, + 11275, 959, 959, 965, 965,11275,11275,11275,11275,11275, + 965, 965, 1812, 1812,11275,11275,11275,11275,11275, 1812, + 1812, 1007,11275,11275,11275,11275,11275,11275, 1007, 1007, + 1007, 1007,11275,11275,11275,11275,11275, 1007, 1007, 4585, + 11275,11275,11275,11275, 4585,11275,11275,11275,11275,11275, + + 4585, 4585,11275, 4585, 9536, 9536, 9536, 9536, 9536, 9536, + 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, + 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 1121,11275,11275,11275, + 11275,11275,11275,11275,11275, 1121,11275,11275,11275,11275, + 11275, 1121, 1121, 1124, 1124,11275,11275,11275,11275,11275, + + 1124, 1124, 9639,11275,11275,11275, 9639, 9639,11275,11275, + 9639, 9639, 9639, 9639, 9639, 9639, 9639, 9639,11275, 9639, + 9639, 9639, 9639, 9639, 2173, 2173,11275,11275,11275,11275, + 11275, 2173, 2173, 674,11275,11275,11275,11275,11275,11275, + 674, 674, 674, 674,11275,11275,11275,11275,11275, 674, + 674, 2258, 2258,11275,11275,11275,11275,11275, 2258, 2258, + 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, + 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, + 9685, 9685, 9685, 9685, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1331, 1331,11275,11275,11275,11275,11275, 1331, + 1331, 6798,11275,11275,11275,11275, 6798,11275,11275,11275, + 11275,11275, 6798, 6798,11275, 6798, 6853, 6853, 6853, 6853, + 6853, 6853, 6853,11275, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + + 5792, 5792, 5792, 5792, 9258, 9258, 9258, 9258, 9258, 9258, + 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, + 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9258, 9783, 9783, + 9783, 9783, 9783, 9783, 9783, 9783, 9783, 9783, 9783, 9783, + 9783, 9783, 9783, 9783, 9783, 9783, 9783, 9783, 9783, 9783, + 9783, 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, + 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, 9264, + 9264, 9264, 9264, 9264, 9264, 9294, 9294,11275,11275,11275, + 11275,11275, 9294, 9294, 724,11275,11275,11275,11275,11275, + 11275, 724, 724, 724, 724,11275,11275,11275,11275,11275, + + 724, 724, 1692, 1692,11275,11275,11275,11275,11275, 1692, + 1692, 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, + 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, 9409, + 9409, 9409, 9409, 9409, 9409, 1708, 1708,11275,11275,11275, + 11275,11275, 1708, 1708, 5044,11275,11275,11275,11275,11275, + 5044, 5044,11275, 5044, 803, 803,11275,11275,11275,11275, + 11275, 803, 803, 9429,11275,11275,11275,11275,11275, 9429, + 9429,11275, 9429, 947, 947,11275,11275,11275,11275,11275, + 947, 947, 959, 959,11275,11275,11275,11275,11275, 959, + 959, 965, 965,11275,11275,11275,11275,11275, 965, 965, + + 1812, 1812,11275,11275,11275,11275,11275, 1812, 1812, 1007, + 11275,11275,11275,11275,11275,11275, 1007, 1007, 1007, 1007, + 11275,11275,11275,11275,11275, 1007, 1007, 4585,11275,11275, + 11275,11275, 4585,11275,11275,11275,11275,11275, 4585, 4585, + 11275, 4585, 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, + 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, 9536, + 9536, 9536, 9536, 9536, 9536, 9536, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 1121,11275,11275,11275,11275,11275, + 11275,11275,11275, 1121,11275,11275,11275,11275,11275, 1121, + 1121, 9639,11275,11275,11275,11275, 9639,11275,11275, 9639, + 9639, 9639, 9639, 9639, 9639, 9639, 9639,11275, 9639, 9639, + 9639, 9639, 9639, 2173, 2173,11275,11275,11275,11275,11275, + 2173, 2173, 674,11275,11275,11275,11275,11275,11275, 674, + 674, 674, 674,11275,11275,11275,11275,11275, 674, 674, + 2258, 2258,11275,11275,11275,11275,11275, 2258, 2258, 9685, + 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, + + 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, 9685, + 9685, 9685, 9685, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1331, 1331, 1331, 1331,11275,11275,11275,11275,11275, + 11275,11275,11275, 1331, 1331,11275,11275,11275,11275,11275, + 1331, 1331, 1331, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, 9690, + + 9690, 9690, 9690, 9690, 9690, 9690, 9690, 6798,11275,11275, + 11275,11275, 6798,11275,11275,11275,11275,11275, 6798, 6798, + 11275, 6798, 6853, 6853, 6853, 6853, 6853, 6853, 6853,11275, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10142,10142,10142,10142,10158,10158,11275,11275,11275,11275, + + 11275,10158,10158,11275,10158,10161,10161,10161,10161,10161, + 10161,10161,10161,10161,10161,10161,10161,10161,10161,10161, + 10161,10161,10161,10161,10161,10161,10161,10161,10161,10171, + 10171,10171,10171,10171,10171,10171,10171,10171,10171,10171, + 10171,10171,10171,10171,10171,10171,10171,10171,10171,10171, + 10171,10171,10171,10177,11275,11275,11275,11275,11275,10177, + 10177,11275,10177,10200,10200,10200,10200,10200,10200,10200, + 10200,10200,10200,10200,10200,10200,10200,10200,10200,10200, + 10200,10200,10200,10200,10200,10200,10200,10215,10215,10215, + 10215,10215,10215,10215,10215,10215,10215,10215,10215,10215, + + 10215,10215,10215,10215,10215,10215,10215,10215,10215,11275, + 10215, 724,11275,11275,11275,11275,11275,11275, 724, 724, + 724, 724,11275,11275,11275,11275,11275, 724, 724, 1692, + 1692,11275,11275,11275,11275,11275, 1692, 1692,10259,10259, + 10259,10259,10259,10259,10259,10259,10259,10259,10259,10259, + 10259,10259,10259,10259,10259,10259,10259,10259,10259,10259, + 10259,10259, 5044,11275,11275,11275,11275,11275, 5044, 5044, + 11275, 5044, 947, 947,11275,11275,11275,11275,11275, 947, + 947, 959, 959,11275,11275,11275,11275,11275, 959, 959, + 965, 965,11275,11275,11275,11275,11275, 965, 965, 1812, + + 1812, 1812, 1812,11275,11275,11275,11275,11275,11275,11275, + 11275, 1812, 1812,11275,11275,11275,11275,11275, 1812, 1812, + 1812, 1007,11275,11275,11275,11275,11275,11275, 1007, 1007, + 1007, 1007,11275,11275,11275,11275,11275, 1007, 1007, 4585, + 11275,11275,11275,11275, 4585,11275,11275,11275,11275,11275, + 4585, 4585,11275, 4585,10320,10320,10320,10320,10320,10320, + 10320,10320,10320,10320,10320,10320,10320,10320,10320,10320, + 10320,10320,10320,10320,10320,10320,10320,10320, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + + 2047, 2047, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061,10363,10363,10363,10363, + 10363,10363,10363,10363,10363,10363,10363,10363,10363,10363, + 10363,10363,10363,10363,10363,10363,10363,10363,10363,10363, + 1121,11275,11275,11275,11275,11275,11275,11275,11275, 1121, + 11275,11275,11275,11275,11275, 1121, 1121, 2173, 2173, 2173, + 2173,11275,11275,11275,11275,11275,11275,11275,11275, 2173, + 2173,11275,11275,11275,11275,11275, 2173, 2173, 2173, 674, + 11275,11275,11275,11275,11275,11275, 674, 674, 674, 674, + + 11275,11275,11275,11275,11275, 674, 674, 2258, 2258,11275, + 11275,11275,11275,11275, 2258, 2258, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264,10417,11275,11275,11275,11275,11275, + 10417,10417,11275,10417, 6853, 6853, 6853, 6853, 6853, 6853, + 6853,11275, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853,10458,10458, + + 10458,10458,10458,10458,10458,11275,10458,10458,10458,10458, + 10458,10458,10458,10458,10458,10458,10458,10458,10458,10458, + 10458,10458, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792,10142,10142,10142,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10158,10158,11275,11275,11275,11275,11275,10158,10158,11275, + 10158,10161,10161,10161,10161,10161,10161,10161,10161,10161, + 10161,10161,10161,10161,10161,10161,10161,10161,10161,10161, + + 10161,10161,10161,10161,10161,10171,10171,10171,10171,10171, + 10171,10171,10171,10171,10171,10171,10171,10171,10171,10171, + 10171,10171,10171,10171,10171,10171,10171,10171,10171, 1331, + 1331,11275,11275,11275,11275,11275, 1331, 1331,10177,11275, + 11275,11275,11275,11275,10177,10177,11275,10177, 1326,11275, + 11275,11275,11275,11275, 1326, 1326, 1326,11275, 1326,11275, + 11275,11275,11275,11275, 1326, 1326,10494,11275,11275,11275, + 11275,11275,10494,10494,11275,10494,10200,10200,10200,10200, + 10200,10200,10200,10200,10200,10200,10200,10200,10200,10200, + 10200,10200,10200,10200,10200,10200,10200,10200,10200,10200, + + 10215,10215,10215,10215,10215,10215,10215,10215,10215,10215, + 10215,10215,10215,10215,10215,10215,10215,10215,10215,10215, + 10215,10215,11275,10215, 724,11275,11275,11275,11275,11275, + 11275, 724, 724, 724, 724,11275,11275,11275,11275,11275, + 724, 724,10259,10259,10259,10259,10259,10259,10259,10259, + 10259,10259,10259,10259,10259,10259,10259,10259,10259,10259, + 10259,10259,10259,10259,10259,10259, 5044,11275,11275,11275, + 11275,11275, 5044, 5044,11275, 5044, 965, 965,11275,11275, + 11275,11275,11275, 965, 965, 1007,11275,11275,11275,11275, + 11275,11275, 1007, 1007, 1007, 1007,11275,11275,11275,11275, + + 11275, 1007, 1007, 4585,11275,11275,11275,11275, 4585,11275, + 11275,11275,11275,11275, 4585, 4585,11275, 4585, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257,10320,10320,10320,10320,10320,10320,10320,10320, + 10320,10320,10320,10320,10320,10320,10320,10320,10320,10320, + 10320,10320,10320,10320,10320,10320, 1812, 1812,11275,11275, + 11275,11275,11275, 1812, 1812, 1808,11275,11275,11275,11275, + 11275, 1808, 1808, 1808,11275, 1808,11275,11275,11275,11275, + 11275, 1808, 1808, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061,10363,10363,10363,10363,10363,10363,10363,10363,10363, + 10363,10363,10363,10363,10363,10363,10363,10363,10363,10363, + 10363,10363,10363,10363,10363, 1121,11275,11275,11275,11275, + 11275,11275,11275,11275, 1121,11275,11275,11275,11275,11275, + 1121, 1121, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + + 8426, 8426, 8426, 8426, 8426, 8426, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 10417,11275,11275,11275,11275,11275,10417,10417,11275,10417, + 6798,11275,11275,11275,11275, 6798,11275,11275,11275,11275, + 11275, 6798, 6798,11275, 6798,10678,10678,10678,10678,10678, + 10678,10678,10678,10678,10678,10678,10678,10678,10678,10678, + 10678,10678,10678,10678,10678,10678,10678,10678,10678,10688, + 10688,10688,10688,10688,10688,10688,10688,10688,10688,10688, + 10688,10688,10688,10688,10688,10688,10688,10688,10688,10688, + + 10688,10688,10688, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 11275, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853,10458,10458,10458, + 10458,10458,10458,10458,11275,10458,10458,10458,10458,10458, + 10458,10458,10458,10458,10458,10458,10458,10458,10458,10458, + 10458,10701,10701,10701,10701,10701,10701,10701,11275,10701, + 10701,10701,10701,10701,10701,10701,10701,10701,10701,10701, + 10701,10701,10701,10701,10701,10142,10142,10142,10142,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10720, + + 10720,10720,10720,10720,10720,10720,10720,10720,10720,10720, + 10720,10720,10720,10720,10720,10720,10720,10720,10720,10720, + 10720,10720,10720,10724,10724,10724,10724,10724,10724,10724, + 10724,10724,10724,10724,10724,10724,10724,10724,10724,10724, + 10724,10724,10724,10724,10724,10724,10724,10727,10727,10727, + 10727,10727,10727,10727,10727,10727,10727,10727,10727,10727, + 10727,10727,10727,10727,10727,10727,10727,10727,10727,10727, + 1331, 1331,11275,11275,11275,11275,11275, 1331, 1331,10494, + 11275,11275,11275,11275,11275,10494,10494,11275,10494,10739, + 10739,10739,10739,10739,10739,10739,10739,10739,10739,10739, + + 10739,10739,10739,10739,10739,10739,10739,10739,10739,10739, + 10739,10739,10739,10746,10746,10746,10746,10746,10746,10746, + 10746,10746,10746,10746,10746,10746,10746,10746,10746,10746, + 10746,10746,10746,10746,10746,10746,10746,10753,10753,10753, + 10753,10753,10753,10753,10753,10753,10753,10753,10753,10753, + 10753,10753,10753,10753,10753,10753,10753,10753,10753,10753, + 10753, 724,11275,11275,11275,11275,11275,11275, 724, 724, + 724, 724,11275,11275,11275,11275,11275, 724, 724,10770, + 10770,10770,10770,10770,10770,10770,10770,10770,10770,10770, + 10770,10770,10770,10770,10770,10770,10770,10770,10770,10770, + + 10770,10770,10770,10773,10773,10773,10773,10773,10773,10773, + 10773,10773,10773,10773,10773,10773,10773,10773,10773,10773, + 10773,10773,10773,10773,10773,10773,10773, 965, 965,11275, + 11275,11275,11275,11275, 965, 965, 965, 1007,11275,11275, + 11275,11275,11275,11275, 1007, 1007, 1007, 1007,11275,11275, + 11275,11275,11275, 1007, 1007,10782,10782,11275,10782,10782, + 10782,10782,10782,10782,10782,10782,10782,10782,10782,10782, + 10782,10782,10782,10782,10782,10782,10782,10782,10782, 4585, + 11275,11275,11275,11275, 4585,11275,11275,11275,11275,11275, + 4585, 4585,11275, 4585,10804,10804,10804,10804,10804,10804, + + 10804,10804,10804,10804,10804,10804,10804,10804,10804,10804, + 10804,10804,10804,10804,10804,10804,10804,10804, 1812, 1812, + 11275,11275,11275,11275,11275, 1812, 1812, 1121,11275,11275, + 11275,11275,11275,11275,11275,11275, 1121,11275,11275,11275, + 11275,11275, 1121, 1121, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426,10856,10856, + 10856,10856,10856,10856,10856,10856,10856,10856,10856,10856, + 10856,10856,10856,10856,10856,10856,10856,10856,10856,10856, + 10856, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484,10864,11275,11275,11275,11275, + 11275,10864,10864,11275,10864,10874,10874,10874,10874,10874, + 10874,10874,10874,10874,10874,10874,10874,10874,10874,10874, + 10874,10874,10874,10874,10874,10874,10874,10874,10874,10678, + 10678,10678,10678,10678,10678,10678,10678,10678,10678,10678, + 10678,10678,10678,10678,10678,10678,10678,10678,10678,10678, + 10678,10678,10678,10688,10688,10688,10688,10688,10688,10688, + 10688,10688,10688,10688,10688,10688,10688,10688,10688,10688, + 10688,10688,10688,10688,10688,10688,10688,10887,10887,10887, + + 10887,10887,10887,10887,10887,10887,10887,10887,10887,10887, + 10887,10887,10887,10887,10887,10887,10887,10887,10887,10887, + 10887,10889,10889,10889,10889,10889,10889,10889,10889,10889, + 10889,10889,10889,10889,10889,10889,10889,10889,10889,10889, + 10889,10889,10889,10889,10889,10701,10701,10701,10701,10701, + 10701,10701,11275,10701,10701,10701,10701,10701,10701,10701, + 10701,10701,10701,10701,10701,10701,10701,10701,10701,10458, + 10458,10458,10458,10458,10458,10458,11275,10458,10458,10458, + 10458,10458,10458,10458,10458,10458,10458,10458,10458,10458, + 10458,10458,10458, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + + 11275, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853,10142,10142,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10142, 1326,11275,11275,11275,11275,11275, 1326, 1326, 1326, + 11275, 1326,11275,11275,11275,11275,11275, 1326, 1326,10720, + 10720,10720,10720,10720,10720,10720,10720,10720,10720,10720, + 10720,10720,10720,10720,10720,10720,10720,10720,10720,10720, + 10720,10720,10720,10724,10724,10724,10724,10724,10724,10724, + 10724,10724,10724,10724,10724,10724,10724,10724,10724,10724, + + 10724,10724,10724,10724,10724,10724,10724, 1331, 1331,11275, + 11275,11275,11275,11275, 1331, 1331,10920,10920,10920,10920, + 10920,10920,10920,10920,10920,10920,10920,10920,10920,10920, + 10920,10920,10920,10920,10920,10920,10920,10920,10920,10920, + 10739,10739,10739,10739,10739,10739,10739,10739,10739,10739, + 10739,10739,10739,10739,10739,10739,10739,10739,10739,10739, + 10739,10739,10739,10739,10746,10746,10746,10746,10746,10746, + 10746,10746,10746,10746,10746,10746,10746,10746,10746,10746, + 10746,10746,10746,10746,10746,10746,10746,10746,10753,10753, + 10753,10753,10753,10753,10753,10753,10753,10753,10753,10753, + + 10753,10753,10753,10753,10753,10753,10753,10753,10753,10753, + 10753,10753, 724,11275,11275,11275,11275,11275,11275, 724, + 724, 724, 724,11275,11275,11275,11275,11275, 724, 724, + 10770,10770,10770,10770,10770,10770,10770,10770,10770,10770, + 10770,10770,10770,10770,10770,10770,10770,10770,10770,10770, + 10770,10770,10770,10770,10773,10773,10773,10773,10773,10773, + 10773,10773,10773,10773,10773,10773,10773,10773,10773,10773, + 10773,10773,10773,10773,10773,10773,10773,10773, 1007,11275, + 11275,11275,11275,11275,11275, 1007, 1007, 1007, 1007,11275, + 11275,11275,11275,11275, 1007, 1007, 1808,11275,11275,11275, + + 11275,11275, 1808, 1808, 1808,11275, 1808,11275,11275,11275, + 11275,11275, 1808, 1808,10804,10804,10804,10804,10804,10804, + 10804,10804,10804,10804,10804,10804,10804,10804,10804,10804, + 10804,10804,10804,10804,10804,10804,10804,10804, 1812, 1812, + 11275,11275,11275,11275,11275, 1812, 1812, 1121,11275,11275, + 11275,11275,11275,11275,11275,11275, 1121,11275,11275,11275, + 11275,11275, 1121, 1121, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426,10856,10856, + 10856,10856,10856,10856,10856,10856,10856,10856,10856,10856, + + 10856,10856,10856,10856,10856,10856,10856,10856,10856,10856, + 10856, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, + 8484, 8484, 8484, 8484, 8484,10864,11275,11275,11275,11275, + 11275,10864,10864,11275,10864,10874,10874,10874,10874,10874, + 10874,10874,10874,10874,10874,10874,10874,10874,10874,10874, + 10874,10874,10874,10874,10874,10874,10874,10874,10874,10887, + 10887,10887,10887,10887,10887,10887,10887,10887,10887,10887, + 10887,10887,10887,10887,10887,10887,10887,10887,10887,10887, + 10887,10887,10887,10889,10889,10889,10889,10889,10889,10889, + + 10889,10889,10889,10889,10889,10889,10889,10889,10889,10889, + 10889,10889,10889,10889,10889,10889,10889,10701,10701,10701, + 10701,10701,10701,10701,11275,10701,10701,10701,10701,10701, + 10701,10701,10701,10701,10701,10701,10701,10701,10701,10701, + 10701,10458,10458,10458,10458,10458,10458,10458,11275,10458, + 10458,10458,10458,10458,10458,10458,10458,10458,10458,10458, + 10458,10458,10458,10458,10458, 6853, 6853, 6853, 6853, 6853, + 6853, 6853,11275, 6853, 6853, 6853, 6853, 6853, 6853, 6853, + 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853, 6853,10142, + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + + 10142,10142,10142,10142,10142,10142,10142,10142,10142,10142, + 10142,10142,10142,11035,11035,11035,11035,11035,11035,11035, + 11035,11035,11035,11035,11035,11035,11035,11035,11035,11035, + 11035,11035,11035,11035,11035,11035,11035,11037,11037,11037, + 11037,11037,11037,11037,11037,11037,11037,11037,11037,11037, + 11037,11037,11037,11037,11037,11037,11037,11037,11037,11037, + 11037, 1331,11275,11275,11275,11275,11275,11275,11275,11275, + 1331, 1331,11275,11275,11275,11275,11275, 1331, 1331, 1331, + 10920,10920,10920,10920,10920,10920,10920,10920,10920,10920, + 10920,10920,10920,10920,10920,10920,10920,10920,10920,10920, + + 10920,10920,10920,10920, 724,11275,11275,11275,11275,11275, + 11275, 724, 724, 724, 724,11275,11275,11275,11275,11275, + 724, 724, 1007,11275,11275,11275,11275,11275,11275, 1007, + 1007, 1007, 1007,11275,11275,11275,11275,11275, 1007, 1007, + 1812,11275,11275,11275,11275,11275,11275,11275,11275, 1812, + 1812,11275,11275,11275,11275,11275, 1812, 1812, 1812,11077, + 11077,11275,11275,11275,11275,11275,11077,11077,11275,11077, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, 8426, + 8426, 8426, 8426, 8426, 6798,11275,11275,11275,11275, 6798, + + 11275,11275,11275,11275,11275, 6798, 6798,11275, 6798,11114, + 11114,11114,11114,11114,11114,11114,11114,11114,11114,11114, + 11114,11114,11114,11114,11114,11114,11114,11114,11114,11114, + 11114,11114,11114,11116,11116,11116,11116,11116,11116,11116, + 11116,11116,11116,11116,11116,11116,11116,11116,11116,11116, + 11116,11116,11116,11116,11116,11116,11116,11124,11124,11124, + 11124,11124,11124,11124,11124,11124,11124,11124,11124,11124, + 11124,11124,11124,11124,11124,11124,11124,11124,11124,11124, + 11124,11203,11203,11203,11203,11203,11203,11203,11203,11203, + 11203,11203,11203,11203,11203,11203,11203,11203,11203,11203, + + 11203,11203,11203,11203,11203,11238,11275,11275,11275,11275, + 11275,11238,11238,11275,11238,11265,11265,11265,11265,11265, + 11265,11265,11265,11265,11265,11265,11265,11265,11265,11265, + 11265,11265,11265,11265,11265,11265,11265,11265,11265,11273, + 11273,11273,11273,11273,11273,11273,11273,11273,11273,11273, + 11273,11273,11273,11273,11273,11273,11273,11273,11273,11273, + 11273,11273,11273, 181,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275 + } ; + +static yyconst flex_int16_t yy_chk[45258] = + { 0, + 0, 0, 1, 1, 1, 1, 73, 1, 1, 1, + 1, 1, 1, 19, 19, 20, 20, 91, 1, 3, + 3, 3, 4, 4, 4, 11, 5, 5, 92, 1, + 59, 1, 5, 6, 6, 25, 189, 189, 26, 6, + 35, 7, 7, 7, 7, 35, 36, 7, 903, 7, + 12, 36, 9, 9, 9, 9, 1860, 74, 1, 60, + 9, 73, 1, 8, 8, 8, 8, 91, 93, 8, + 93, 8, 15, 15, 3, 16, 16, 4, 92, 0, + 11, 5, 25, 25, 25, 26, 26, 26, 6, 1, + 1, 1, 1, 2, 2, 2, 2, 7, 2, 2, + + 2, 2, 2, 2, 77, 12, 69, 3, 9, 2, + 4, 11, 74, 10, 10, 10, 10, 93, 59, 8, + 2, 10, 2, 13, 13, 13, 13, 15, 7, 903, + 16, 13, 14, 14, 14, 14, 12, 23, 69, 9, + 14, 302, 70, 78, 17, 17, 17, 60, 24, 2, + 8, 302, 17, 2, 27, 27, 28, 28, 15, 77, + 15, 16, 247, 16, 247, 18, 18, 18, 259, 10, + 17, 259, 17, 18, 70, 214, 214, 29, 29, 13, + 2, 2, 2, 2, 29, 23, 21, 21, 14, 22, + 22, 18, 21, 18, 21, 22, 24, 22, 78, 17, + + 10, 30, 30, 147, 147, 1862, 31, 31, 30, 27, + 13, 28, 21, 31, 21, 22, 23, 22, 23, 14, + 18, 32, 32, 49, 49, 49, 49, 24, 32, 24, + 33, 33, 29, 34, 34, 33, 127, 33, 34, 538, + 34, 21, 51, 51, 22, 45, 97, 45, 45, 51, + 45, 45, 45, 45, 45, 45, 30, 46, 147, 46, + 46, 31, 46, 46, 46, 46, 46, 46, 50, 50, + 50, 50, 52, 52, 219, 219, 32, 98, 1298, 52, + 53, 53, 53, 53, 127, 33, 620, 45, 34, 41, + 41, 41, 41, 229, 229, 97, 538, 51, 620, 46, + + 54, 54, 54, 54, 242, 125, 67, 67, 41, 41, + 41, 41, 41, 41, 107, 108, 41, 41, 41, 242, + 173, 55, 55, 55, 55, 908, 98, 52, 51, 94, + 51, 94, 56, 56, 56, 56, 53, 126, 148, 148, + 308, 63, 63, 63, 63, 41, 42, 42, 42, 42, + 128, 57, 57, 57, 57, 125, 54, 308, 52, 57, + 52, 67, 1298, 107, 108, 42, 42, 42, 42, 42, + 42, 248, 248, 42, 42, 42, 908, 55, 94, 55, + 55, 58, 58, 58, 58, 145, 125, 126, 56, 58, + 56, 56, 67, 148, 67, 146, 530, 63, 128, 173, + + 1874, 173, 42, 43, 43, 43, 43, 57, 174, 43, + 55, 64, 64, 64, 64, 262, 262, 43, 126, 43, + 43, 56, 43, 43, 43, 43, 43, 43, 63, 264, + 264, 43, 795, 145, 795, 68, 68, 58, 57, 61, + 61, 61, 61, 146, 265, 61, 1878, 61, 62, 62, + 62, 62, 123, 123, 62, 284, 62, 123, 284, 43, + 44, 44, 44, 44, 269, 269, 44, 64, 58, 119, + 119, 119, 119, 530, 44, 304, 44, 44, 429, 44, + 44, 44, 44, 44, 44, 429, 304, 174, 44, 174, + 68, 1879, 81, 312, 61, 61, 312, 81, 64, 81, + + 81, 82, 265, 62, 62, 265, 82, 123, 82, 82, + 249, 115, 1882, 115, 317, 317, 44, 47, 47, 47, + 47, 68, 533, 68, 119, 119, 61, 318, 116, 533, + 116, 47, 79, 47, 47, 62, 47, 47, 47, 47, + 47, 47, 417, 79, 417, 79, 79, 81, 79, 79, + 79, 79, 79, 79, 325, 782, 82, 79, 249, 417, + 325, 115, 129, 129, 129, 129, 782, 85, 85, 85, + 85, 1889, 325, 47, 325, 85, 338, 338, 116, 47, + 47, 47, 47, 47, 335, 79, 47, 335, 415, 249, + 47, 249, 115, 47, 115, 1890, 47, 47, 75, 75, + + 75, 75, 86, 86, 86, 86, 318, 415, 318, 116, + 86, 116, 75, 80, 75, 75, 79, 75, 75, 75, + 75, 75, 75, 85, 80, 383, 80, 80, 386, 80, + 80, 80, 80, 80, 80, 392, 392, 1537, 80, 87, + 87, 87, 87, 88, 88, 88, 88, 87, 151, 151, + 383, 88, 405, 386, 75, 405, 85, 1537, 86, 362, + 75, 89, 89, 89, 89, 1896, 80, 401, 401, 89, + 90, 90, 90, 90, 101, 101, 101, 101, 90, 408, + 408, 101, 101, 412, 412, 75, 76, 76, 76, 76, + 362, 86, 362, 427, 427, 87, 151, 80, 502, 88, + + 76, 502, 76, 76, 539, 76, 76, 76, 76, 76, + 76, 102, 102, 102, 102, 124, 124, 89, 102, 102, + 124, 130, 130, 130, 130, 1897, 90, 151, 381, 151, + 101, 103, 103, 103, 103, 454, 454, 381, 103, 103, + 113, 113, 76, 104, 104, 104, 104, 113, 76, 381, + 104, 104, 105, 105, 105, 105, 117, 539, 117, 105, + 105, 106, 106, 106, 106, 114, 114, 102, 106, 106, + 124, 652, 114, 76, 83, 83, 83, 83, 761, 83, + 83, 83, 83, 83, 83, 761, 118, 103, 118, 484, + 83, 120, 120, 120, 120, 113, 652, 152, 152, 104, + + 235, 83, 235, 83, 484, 117, 117, 117, 105, 139, + 139, 139, 139, 121, 121, 121, 121, 106, 470, 470, + 114, 121, 140, 140, 140, 140, 113, 171, 113, 171, + 83, 534, 254, 1898, 83, 118, 118, 118, 475, 475, + 122, 122, 122, 122, 534, 152, 120, 120, 122, 566, + 235, 114, 566, 114, 141, 141, 141, 141, 810, 235, + 810, 83, 83, 83, 83, 84, 84, 84, 84, 121, + 84, 84, 84, 84, 84, 84, 152, 171, 152, 906, + 254, 84, 139, 263, 906, 139, 167, 167, 167, 167, + 486, 486, 84, 471, 84, 140, 122, 471, 140, 814, + + 121, 814, 121, 168, 168, 168, 168, 471, 171, 209, + 171, 254, 209, 254, 843, 209, 209, 843, 141, 860, + 209, 84, 141, 209, 808, 84, 209, 122, 808, 122, + 280, 280, 280, 280, 280, 280, 860, 141, 490, 490, + 263, 263, 1572, 289, 263, 289, 289, 289, 289, 289, + 289, 1572, 84, 84, 84, 84, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 99, + 99, 99, 99, 99, 856, 99, 99, 99, 99, 99, + 99, 179, 179, 179, 179, 856, 99, 157, 157, 157, + 157, 327, 327, 327, 327, 505, 505, 99, 854, 99, + 158, 158, 158, 158, 328, 328, 328, 328, 854, 142, + 142, 142, 142, 329, 329, 329, 329, 519, 519, 159, + + 159, 159, 159, 149, 150, 143, 99, 845, 144, 845, + 99, 149, 150, 578, 578, 143, 143, 179, 144, 144, + 513, 143, 143, 157, 144, 144, 160, 160, 160, 160, + 580, 580, 870, 149, 150, 870, 158, 99, 99, 99, + 99, 100, 100, 100, 100, 100, 1617, 100, 100, 100, + 100, 100, 100, 142, 157, 159, 1617, 142, 100, 143, + 143, 143, 144, 144, 144, 149, 150, 158, 893, 100, + 513, 100, 142, 1262, 149, 150, 606, 606, 149, 150, + 149, 150, 160, 609, 609, 1262, 159, 172, 220, 172, + 149, 150, 143, 893, 513, 144, 348, 348, 100, 613, + + 613, 348, 100, 163, 163, 163, 163, 169, 169, 169, + 169, 623, 623, 160, 1201, 169, 163, 170, 170, 170, + 170, 180, 180, 180, 180, 170, 270, 646, 646, 100, + 100, 100, 100, 109, 163, 890, 624, 172, 890, 109, + 624, 109, 220, 220, 624, 220, 220, 670, 220, 373, + 373, 373, 373, 220, 220, 670, 768, 768, 220, 163, + 220, 220, 220, 169, 775, 775, 163, 1201, 172, 670, + 172, 476, 720, 170, 476, 163, 720, 180, 476, 163, + 720, 163, 348, 270, 270, 785, 785, 270, 476, 476, + 109, 163, 923, 270, 923, 109, 109, 109, 109, 109, + + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 1905, 109, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 131, 131, 131, + 131, 1102, 131, 131, 131, 131, 131, 131, 183, 183, + 183, 183, 1907, 131, 805, 805, 183, 184, 184, 184, + 184, 824, 824, 664, 131, 184, 131, 185, 185, 185, + 185, 374, 374, 374, 374, 185, 164, 164, 164, 164, + 434, 434, 434, 434, 201, 201, 201, 201, 879, 164, + 413, 413, 201, 131, 413, 664, 664, 131, 413, 1606, + 202, 202, 202, 202, 183, 413, 879, 164, 202, 203, + 203, 203, 203, 184, 949, 1606, 949, 203, 218, 218, + + 218, 218, 1102, 185, 131, 131, 131, 131, 132, 132, + 132, 132, 164, 132, 132, 132, 132, 132, 132, 164, + 201, 409, 409, 957, 132, 409, 957, 788, 164, 409, + 788, 409, 164, 1909, 164, 132, 202, 132, 206, 206, + 206, 206, 788, 349, 164, 203, 206, 207, 207, 207, + 207, 246, 1484, 282, 246, 207, 246, 349, 349, 349, + 349, 349, 282, 282, 132, 460, 1912, 933, 132, 282, + 288, 282, 288, 288, 282, 288, 288, 288, 288, 288, + 288, 1484, 934, 686, 292, 218, 292, 292, 292, 292, + 292, 292, 933, 686, 206, 132, 132, 132, 132, 186, + + 1644, 942, 972, 207, 246, 330, 330, 934, 809, 330, + 246, 809, 330, 246, 942, 972, 186, 246, 186, 460, + 330, 186, 460, 809, 1536, 186, 246, 246, 246, 186, + 935, 992, 935, 186, 460, 686, 1913, 293, 186, 293, + 293, 293, 293, 293, 293, 426, 426, 426, 426, 186, + 186, 1130, 426, 1536, 186, 1106, 992, 1130, 186, 441, + 441, 441, 441, 1644, 186, 978, 441, 978, 186, 978, + 186, 1914, 935, 978, 186, 1062, 1062, 186, 195, 978, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 1066, + 1066, 195, 195, 195, 195, 195, 195, 195, 195, 195, + + 195, 195, 195, 195, 1106, 195, 195, 1915, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 1917, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 1575, 195, 195, 204, 1575, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 1073, + 1073, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 1109, 204, 204, 1109, 204, 204, + + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 1918, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 1527, 204, 204, 230, 230, + 230, 1527, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 295, 295, 295, 295, 298, 1104, 298, 298, 298, + 298, 298, 298, 347, 347, 347, 347, 347, 347, 296, + 296, 296, 296, 299, 1919, 299, 299, 299, 299, 299, + 299, 1122, 394, 1103, 394, 394, 1560, 297, 297, 297, + 297, 344, 344, 344, 344, 1920, 1002, 344, 1263, 345, + + 345, 345, 345, 1263, 1002, 345, 346, 346, 346, 346, + 1076, 1076, 346, 295, 295, 295, 295, 295, 1002, 1202, + 295, 1063, 1111, 1111, 295, 1063, 1202, 295, 1104, 1063, + 295, 296, 296, 296, 296, 296, 1202, 1104, 296, 394, + 1132, 1132, 296, 1585, 394, 296, 344, 1103, 296, 297, + 297, 297, 297, 297, 345, 1122, 297, 1585, 394, 1638, + 297, 346, 1560, 297, 1103, 1638, 297, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 1564, 350, 350, 350, + 356, 356, 356, 356, 375, 1252, 375, 375, 1564, 375, + 375, 375, 375, 375, 375, 376, 1252, 376, 376, 376, + 376, 376, 376, 384, 1164, 384, 384, 1924, 384, 384, + 384, 384, 384, 384, 385, 1324, 385, 385, 385, 385, + + 385, 385, 402, 1272, 402, 402, 1925, 402, 402, 1164, + 356, 1161, 402, 402, 402, 602, 602, 602, 602, 402, + 880, 880, 880, 880, 1161, 384, 396, 1324, 396, 396, + 396, 396, 396, 396, 396, 396, 396, 1264, 1264, 396, + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 1272, 396, 396, 1927, 396, 396, 396, 396, + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 1157, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, + + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 396, 1176, 396, 396, 419, 419, 419, 419, + 420, 420, 420, 420, 419, 487, 1273, 1105, 420, 421, + 421, 421, 421, 422, 422, 422, 422, 421, 610, 1928, + 610, 422, 1279, 1279, 419, 1176, 1176, 1933, 420, 432, + 432, 432, 432, 432, 432, 1280, 1280, 421, 1282, 1157, + 1284, 422, 449, 449, 449, 449, 450, 450, 450, 450, + 449, 1824, 419, 487, 450, 1273, 420, 479, 466, 466, + 466, 466, 479, 1282, 1105, 421, 466, 1273, 610, 422, + 424, 467, 467, 467, 467, 468, 468, 468, 468, 467, + + 1824, 1023, 1359, 468, 487, 1184, 487, 424, 1105, 424, + 1243, 1023, 424, 1284, 1325, 1184, 424, 1243, 449, 610, + 424, 610, 450, 1280, 424, 472, 472, 472, 472, 424, + 479, 674, 479, 472, 466, 678, 1589, 479, 1826, 1325, + 424, 424, 1534, 1360, 1284, 424, 1534, 467, 1534, 424, + 1589, 468, 479, 1023, 1359, 424, 678, 1184, 1826, 424, + 674, 424, 479, 674, 678, 424, 674, 678, 424, 437, + 678, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 472, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 1360, 437, 437, 1935, 437, + + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 473, + 473, 473, 473, 474, 474, 474, 474, 473, 1571, 512, + 1571, 474, 1571, 1591, 495, 607, 1591, 491, 520, 520, + 520, 520, 1326, 512, 512, 512, 512, 512, 516, 1328, + 516, 516, 676, 516, 516, 881, 881, 881, 881, 516, + + 1936, 527, 527, 527, 527, 516, 1556, 1326, 1938, 527, + 528, 528, 528, 528, 1328, 473, 1329, 1556, 528, 474, + 477, 676, 495, 1676, 676, 491, 1676, 676, 520, 1576, + 607, 495, 607, 676, 491, 607, 1576, 477, 1583, 477, + 607, 1329, 477, 512, 1466, 1940, 477, 607, 607, 491, + 477, 491, 1844, 495, 477, 495, 491, 527, 491, 477, + 586, 586, 586, 586, 1328, 1941, 528, 1592, 1592, 1466, + 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, + 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, + 477, 477, 477, 477, 477, 477, 477, 561, 477, 529, + + 547, 547, 547, 547, 1327, 1844, 529, 561, 542, 1577, + 542, 1583, 1942, 561, 673, 1602, 586, 561, 588, 588, + 588, 588, 561, 529, 561, 529, 1577, 1602, 529, 1327, + 1182, 542, 529, 1663, 675, 679, 529, 542, 542, 1663, + 529, 542, 1686, 673, 542, 529, 673, 542, 542, 673, + 835, 835, 835, 835, 835, 835, 529, 529, 1686, 673, + 1182, 529, 1327, 675, 679, 529, 675, 679, 1182, 675, + 679, 529, 675, 547, 588, 529, 547, 529, 1225, 1225, + 1225, 529, 1182, 1225, 529, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 551, 551, + 551, 551, 621, 621, 621, 621, 680, 1598, 681, 1598, + 621, 622, 622, 622, 622, 625, 625, 625, 625, 622, + + 1943, 1552, 1552, 625, 647, 647, 647, 647, 648, 648, + 648, 648, 647, 681, 666, 680, 648, 681, 680, 1552, + 681, 680, 846, 681, 846, 846, 846, 846, 846, 846, + 666, 666, 666, 666, 666, 666, 1599, 667, 621, 666, + 682, 677, 551, 1619, 696, 1946, 551, 622, 1619, 677, + 1599, 625, 1107, 667, 667, 667, 667, 667, 667, 1621, + 647, 551, 667, 1621, 648, 654, 904, 904, 696, 682, + 677, 904, 682, 696, 1756, 682, 696, 666, 677, 696, + 683, 677, 696, 1796, 677, 718, 718, 718, 718, 1629, + 1629, 666, 1796, 718, 654, 1658, 677, 684, 654, 1074, + + 667, 1107, 654, 1074, 699, 1658, 654, 1074, 683, 683, + 1753, 654, 683, 700, 667, 683, 1107, 1074, 654, 1226, + 1226, 1226, 684, 654, 1226, 1756, 684, 654, 1654, 684, + 690, 654, 684, 699, 1562, 1753, 699, 654, 700, 699, + 724, 718, 700, 654, 1755, 700, 1509, 654, 700, 654, + 659, 690, 904, 690, 690, 690, 1635, 703, 1562, 690, + 700, 1949, 690, 1562, 690, 690, 690, 1635, 690, 724, + 704, 1509, 724, 1450, 1622, 724, 1630, 1450, 703, 659, + 1630, 659, 703, 659, 1901, 712, 703, 659, 1622, 703, + 659, 659, 703, 1950, 659, 713, 659, 1623, 703, 1901, + + 659, 659, 1450, 659, 1654, 1613, 1450, 704, 659, 712, + 659, 1623, 659, 1642, 712, 1642, 659, 712, 1509, 713, + 712, 659, 659, 1805, 713, 1755, 659, 713, 659, 704, + 713, 704, 659, 659, 659, 671, 704, 687, 1952, 704, + 1631, 1631, 704, 704, 1648, 704, 1612, 1612, 1805, 704, + 695, 671, 671, 671, 671, 671, 671, 723, 1648, 1612, + 671, 1649, 1649, 671, 671, 1656, 687, 1613, 671, 1656, + 687, 695, 695, 695, 687, 1674, 1664, 1613, 687, 695, + 1664, 1613, 695, 687, 1757, 695, 723, 1674, 695, 723, + 687, 729, 723, 1857, 671, 687, 671, 1728, 671, 687, + + 1728, 1573, 723, 687, 671, 1573, 1858, 1573, 671, 687, + 1573, 671, 671, 672, 692, 687, 773, 773, 773, 773, + 729, 687, 689, 729, 1870, 706, 729, 1650, 1870, 672, + 672, 672, 672, 672, 672, 692, 1650, 1689, 672, 692, + 1650, 672, 692, 692, 1650, 1857, 692, 1668, 1689, 692, + 672, 689, 692, 692, 706, 689, 1672, 706, 1858, 689, + 706, 1668, 706, 689, 1618, 1757, 706, 1607, 689, 1618, + 1672, 1607, 672, 1607, 672, 689, 672, 1953, 1607, 672, + 689, 1607, 672, 1618, 689, 672, 672, 691, 689, 672, + 672, 691, 691, 691, 689, 691, 693, 1772, 691, 691, + + 689, 691, 1782, 773, 691, 702, 689, 1782, 1772, 694, + 719, 719, 719, 719, 1881, 1958, 1749, 693, 719, 1749, + 693, 693, 1807, 698, 1881, 693, 702, 702, 693, 702, + 702, 693, 693, 694, 702, 701, 694, 702, 694, 694, + 702, 694, 694, 694, 694, 694, 1964, 1807, 1872, 698, + 698, 694, 698, 694, 697, 698, 701, 698, 698, 701, + 701, 1872, 1776, 698, 701, 1776, 719, 701, 730, 725, + 701, 922, 922, 922, 922, 697, 697, 697, 1847, 697, + 697, 697, 701, 697, 705, 707, 697, 1784, 1789, 697, + 1784, 1789, 697, 697, 697, 697, 1970, 730, 725, 697, + + 730, 725, 710, 730, 725, 705, 707, 725, 1866, 705, + 707, 1866, 1798, 705, 707, 1861, 705, 707, 707, 705, + 707, 1670, 705, 705, 1798, 1670, 707, 1670, 728, 1861, + 1798, 710, 707, 708, 710, 1971, 710, 710, 710, 1847, + 710, 710, 895, 895, 895, 895, 895, 895, 726, 728, + 709, 1884, 716, 1884, 708, 708, 708, 728, 708, 708, + 728, 1976, 708, 728, 708, 708, 708, 732, 708, 708, + 1977, 709, 708, 708, 708, 709, 727, 726, 709, 709, + 726, 716, 709, 726, 727, 709, 731, 1808, 709, 726, + 709, 711, 716, 716, 1639, 1639, 732, 733, 1639, 732, + + 1639, 1900, 732, 1980, 1930, 727, 741, 1643, 734, 1643, + 716, 731, 1808, 727, 1643, 731, 727, 1811, 731, 727, + 1930, 731, 1945, 716, 716, 733, 733, 744, 711, 733, + 741, 727, 733, 734, 1687, 741, 716, 734, 741, 1945, + 734, 741, 1811, 734, 741, 1657, 745, 1005, 1683, 711, + 711, 711, 1981, 711, 711, 1825, 744, 711, 1873, 744, + 711, 1885, 744, 711, 711, 1837, 711, 711, 711, 721, + 1837, 745, 1683, 1885, 1900, 745, 1005, 1683, 745, 1005, + 735, 745, 1005, 1926, 1825, 721, 721, 721, 721, 721, + 721, 1007, 1005, 745, 721, 1926, 1687, 721, 721, 1983, + + 738, 735, 721, 735, 735, 735, 1687, 1657, 1006, 735, + 1687, 1657, 735, 1657, 735, 735, 735, 1876, 735, 1910, + 1007, 738, 1910, 1007, 738, 738, 1007, 1986, 721, 738, + 721, 1876, 738, 1006, 1873, 738, 738, 1006, 721, 1987, + 1006, 1012, 721, 1006, 736, 721, 721, 722, 736, 736, + 736, 1988, 736, 737, 1010, 736, 736, 1902, 736, 1863, + 1863, 736, 1012, 722, 722, 722, 722, 722, 722, 1991, + 1012, 1902, 722, 1012, 737, 722, 1012, 1863, 737, 900, + 740, 737, 737, 1010, 722, 737, 1010, 1010, 737, 1010, + 1993, 737, 737, 900, 900, 900, 900, 900, 739, 1759, + + 1759, 740, 740, 740, 1759, 1868, 722, 1868, 722, 740, + 1994, 1868, 740, 722, 1810, 740, 722, 751, 740, 722, + 722, 743, 739, 722, 722, 739, 1921, 739, 739, 1921, + 739, 739, 739, 739, 739, 896, 896, 896, 896, 1810, + 739, 896, 739, 742, 1899, 1960, 751, 743, 743, 751, + 743, 1899, 751, 743, 751, 743, 743, 1667, 751, 1667, + 1904, 743, 757, 1667, 742, 742, 742, 1995, 742, 742, + 742, 746, 742, 1908, 1904, 742, 749, 1667, 742, 1009, + 747, 742, 742, 742, 742, 1759, 757, 1908, 742, 1810, + 896, 757, 746, 1875, 757, 746, 746, 757, 748, 1013, + + 746, 747, 747, 746, 747, 747, 746, 1960, 1009, 747, + 1865, 1009, 747, 749, 1009, 747, 1809, 1875, 746, 748, + 1009, 1865, 1875, 748, 1016, 750, 1997, 748, 1013, 1906, + 748, 1013, 1013, 748, 1013, 749, 1906, 749, 1923, 748, + 752, 1809, 749, 1871, 1871, 749, 750, 758, 749, 749, + 750, 749, 1923, 1016, 750, 749, 1016, 750, 1871, 1016, + 750, 752, 1961, 750, 750, 752, 1867, 1978, 754, 752, + 764, 758, 752, 752, 1809, 752, 758, 1867, 1978, 758, + 1998, 752, 758, 977, 977, 977, 977, 752, 753, 754, + 1883, 764, 764, 754, 764, 764, 754, 754, 1883, 764, + + 754, 755, 764, 754, 1883, 764, 754, 2003, 754, 753, + 753, 753, 1822, 753, 753, 1929, 1822, 753, 1822, 753, + 753, 753, 1929, 753, 753, 1021, 1877, 753, 753, 753, + 755, 1961, 1877, 755, 1877, 755, 755, 755, 1877, 755, + 755, 756, 759, 759, 759, 759, 1947, 760, 763, 2005, + 759, 760, 760, 760, 1021, 760, 1947, 1021, 760, 760, + 1021, 760, 1990, 849, 760, 849, 849, 849, 849, 849, + 849, 1944, 1944, 1018, 763, 763, 1944, 763, 756, 1990, + 763, 1962, 763, 763, 851, 851, 851, 851, 763, 863, + 765, 863, 863, 863, 863, 863, 863, 1962, 759, 756, + + 756, 756, 1018, 756, 756, 1018, 1975, 756, 1018, 1018, + 756, 765, 1975, 756, 756, 765, 756, 756, 756, 765, + 1845, 1984, 765, 1014, 1845, 765, 1845, 1984, 765, 765, + 852, 852, 852, 852, 897, 897, 897, 897, 1972, 1894, + 897, 981, 981, 981, 981, 1972, 851, 851, 851, 851, + 851, 1014, 1014, 851, 2007, 1014, 1894, 851, 1014, 1894, + 851, 1014, 1014, 851, 862, 862, 862, 862, 898, 898, + 898, 898, 1017, 1019, 898, 899, 899, 899, 899, 899, + 899, 901, 901, 901, 901, 1951, 1951, 901, 2009, 897, + 2014, 1951, 852, 852, 852, 852, 852, 2015, 1019, 852, + + 1017, 1017, 1019, 852, 1017, 1019, 852, 1017, 1019, 852, + 902, 902, 902, 902, 2018, 924, 902, 924, 924, 924, + 924, 924, 924, 898, 2022, 1956, 862, 862, 862, 862, + 862, 907, 907, 862, 1957, 2030, 901, 862, 1852, 1956, + 862, 1852, 1852, 862, 983, 983, 983, 983, 1957, 907, + 907, 907, 907, 907, 907, 936, 1852, 936, 936, 936, + 936, 936, 936, 1969, 1969, 902, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 2032, 910, 910, 910, 928, + 928, 928, 928, 973, 1891, 974, 1996, 973, 1891, 974, + 973, 973, 974, 974, 973, 2001, 2001, 973, 1891, 974, + 973, 973, 974, 974, 974, 975, 975, 975, 975, 976, + 976, 976, 976, 975, 2034, 2006, 1903, 976, 979, 979, + + 979, 979, 980, 980, 980, 980, 979, 1880, 1968, 1903, + 980, 1880, 1968, 975, 1880, 1880, 1903, 976, 985, 985, + 985, 985, 989, 989, 989, 989, 979, 1967, 2000, 1996, + 980, 987, 987, 987, 987, 987, 987, 1212, 1212, 1212, + 1212, 975, 2000, 2026, 2036, 976, 928, 944, 1246, 1246, + 1246, 1246, 1967, 1015, 979, 1979, 1008, 2026, 980, 1979, + 2037, 1015, 999, 944, 944, 944, 944, 944, 944, 1020, + 1022, 2006, 944, 2031, 985, 944, 2031, 1008, 999, 999, + 999, 999, 999, 999, 2039, 1008, 1015, 999, 1008, 2040, + 1015, 1008, 2041, 1015, 1008, 1022, 1015, 1020, 1020, 1022, + + 2029, 1020, 1022, 1999, 1020, 1022, 944, 1999, 944, 2038, + 1212, 944, 2029, 1212, 944, 1000, 944, 944, 944, 1922, + 944, 1922, 1011, 944, 944, 999, 944, 1922, 944, 945, + 1011, 1000, 1000, 1000, 1000, 1000, 1000, 1049, 1869, 999, + 1000, 1034, 1869, 2043, 1869, 945, 945, 945, 945, 945, + 945, 1011, 1678, 1869, 945, 1011, 1678, 945, 1678, 1011, + 2044, 1049, 1011, 1678, 1035, 1011, 1049, 1034, 1034, 1049, + 1034, 2038, 1049, 1034, 1034, 1034, 1034, 1011, 1000, 1042, + 2025, 1034, 1762, 1762, 1762, 1762, 2025, 945, 945, 2042, + 945, 945, 1000, 1035, 1911, 1911, 1035, 1035, 1911, 1035, + + 1893, 945, 945, 1959, 945, 945, 945, 1003, 1042, 2047, + 2047, 1042, 1893, 1959, 1042, 2051, 1042, 1042, 1893, 1959, + 1042, 1893, 2053, 1003, 1003, 1003, 1003, 1003, 1003, 1050, + 1036, 1750, 1003, 1027, 1750, 1003, 1003, 1027, 1027, 1027, + 1003, 1027, 1750, 1750, 1027, 1027, 1029, 1027, 1750, 2060, + 1027, 1036, 1750, 1027, 1050, 1036, 2008, 2064, 1050, 1036, + 2008, 1050, 1036, 1048, 1050, 1036, 1003, 1029, 1003, 1762, + 1029, 1029, 2066, 2042, 2075, 1029, 1003, 1036, 1029, 1966, + 1003, 1029, 1029, 1003, 1003, 1004, 2011, 1048, 1048, 2017, + 2011, 1028, 1048, 2017, 2045, 1048, 1039, 2078, 1048, 1048, + + 2011, 1004, 1004, 1004, 1004, 1004, 1004, 1982, 2045, 2088, + 1004, 2091, 1028, 1004, 2027, 1028, 1028, 1039, 1031, 1028, + 1028, 1039, 1004, 1028, 2027, 1039, 1028, 2093, 1039, 1028, + 1028, 1039, 1028, 1239, 1239, 1239, 1239, 1039, 1939, 1031, + 1031, 1031, 2068, 1032, 1004, 1916, 1004, 1031, 1966, 1966, + 1031, 1004, 2068, 1031, 1004, 2096, 1031, 1004, 1004, 2057, + 2057, 1004, 1004, 1026, 1032, 1982, 1032, 1032, 1032, 1886, + 1032, 1886, 1032, 1886, 2050, 1032, 1886, 1886, 1032, 1982, + 2050, 1032, 2114, 1032, 1026, 1026, 1026, 1026, 1026, 1239, + 2023, 1038, 1026, 2118, 2023, 1026, 2023, 1026, 1026, 1026, + + 1939, 1026, 1026, 1026, 1030, 1242, 1242, 1242, 1242, 2028, + 1939, 2028, 1038, 1038, 1939, 1038, 1038, 2061, 2061, 1916, + 1038, 1916, 1916, 1038, 2028, 2119, 1038, 1038, 1030, 2065, + 1037, 1030, 1038, 1030, 1030, 2065, 1030, 1030, 1030, 1030, + 1030, 1030, 2114, 1989, 1030, 1989, 1030, 2120, 1030, 1033, + 1989, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 2123, 1037, + 2124, 1242, 1037, 2114, 1037, 1037, 1992, 1046, 1992, 2012, + 1033, 1033, 1033, 1992, 1033, 1033, 1033, 1037, 1033, 1041, + 2012, 1033, 2125, 2012, 1033, 2012, 2127, 1033, 1033, 1033, + 1033, 2072, 2072, 2129, 1033, 1040, 1046, 2013, 1043, 1046, + + 1041, 1046, 1046, 1046, 1041, 1046, 1046, 1041, 1041, 2013, + 2130, 1041, 1041, 2024, 1041, 1045, 2013, 1041, 1041, 1043, + 1043, 1043, 1052, 1043, 1043, 2132, 1043, 1043, 1892, 1892, + 1043, 1043, 1040, 1043, 1892, 1892, 1045, 2135, 2024, 1043, + 1045, 2149, 1892, 1045, 1045, 1043, 2020, 1045, 2020, 2152, + 1045, 1052, 2020, 1045, 1040, 1045, 1040, 1801, 1801, 1801, + 1801, 1040, 1052, 1052, 1040, 1040, 2020, 1040, 1040, 2133, + 1040, 1040, 1040, 1069, 1040, 1040, 1044, 1069, 1069, 1069, + 1052, 1056, 1056, 1056, 1056, 2024, 1069, 1069, 2154, 1056, + 1069, 1069, 1069, 1052, 1052, 2122, 2157, 1044, 1044, 1044, + + 2159, 1044, 1044, 1954, 2162, 1044, 1052, 1044, 1044, 1044, + 1954, 1044, 1044, 1044, 1954, 1044, 1044, 1044, 1047, 1954, + 2164, 1058, 1058, 1058, 2167, 1058, 1058, 1058, 1060, 1060, + 1060, 1060, 1058, 2168, 2133, 1058, 1060, 1056, 1058, 1058, + 1058, 1058, 1059, 2131, 2059, 1058, 1059, 2169, 2131, 1059, + 1059, 1217, 1217, 1217, 1217, 2126, 1059, 2122, 2126, 1059, + 1059, 1059, 1061, 1061, 1061, 1061, 1064, 1064, 1064, 1064, + 1061, 2173, 2076, 2076, 1064, 2219, 1047, 1047, 1047, 1047, + 1047, 1047, 1985, 1985, 1060, 2076, 1985, 1047, 1985, 1047, + 1047, 1047, 2220, 1047, 1047, 1047, 1067, 1067, 1067, 1067, + + 1068, 1068, 1068, 1068, 1067, 1335, 2059, 2221, 1068, 1420, + 1420, 1420, 1420, 1420, 1420, 1217, 2059, 1963, 1061, 1217, + 2059, 2074, 1064, 1071, 1071, 1071, 1071, 1072, 1072, 1072, + 1072, 1071, 2231, 2117, 1217, 1072, 1075, 1075, 1075, 1075, + 1077, 1077, 1077, 1077, 1075, 2074, 2175, 1974, 1077, 2232, + 2074, 1974, 1067, 1974, 1974, 1420, 1068, 1070, 1070, 1070, + 2176, 1070, 1070, 2233, 1335, 1070, 1335, 1070, 1070, 1070, + 2174, 1070, 1070, 1079, 1070, 1070, 1070, 1070, 1335, 1071, + 1335, 1963, 2117, 1072, 1335, 1078, 1078, 1078, 1078, 2175, + 2234, 1963, 1075, 1078, 1079, 2200, 1077, 1963, 1079, 1079, + + 1079, 1937, 1079, 2174, 2117, 2200, 1079, 2176, 1079, 1081, + 2235, 1079, 1079, 1081, 1081, 1081, 2199, 1083, 1666, 2058, + 2058, 1083, 1081, 1081, 1083, 1083, 1081, 1081, 1081, 2199, + 2201, 1083, 2201, 1931, 1083, 1083, 1083, 1931, 1094, 1931, + 2208, 1078, 1080, 1797, 1931, 1080, 1080, 1931, 1080, 2236, + 2237, 1080, 2208, 1080, 1080, 1080, 1080, 1080, 2238, 1080, + 1080, 1937, 1937, 1080, 1937, 1080, 1092, 1094, 1095, 2203, + 2223, 1094, 1095, 2207, 1937, 1094, 1095, 2207, 1937, 1094, + 1095, 1666, 2203, 1666, 1094, 1095, 2207, 2058, 1666, 2224, + 1666, 1094, 1095, 2224, 2239, 1092, 1094, 1095, 2223, 1092, + + 1094, 1095, 2222, 1092, 1094, 1095, 1797, 1092, 1797, 2222, + 1094, 1095, 1092, 1797, 1336, 1797, 1094, 1095, 2240, 1092, + 1094, 2241, 2073, 2073, 1092, 1092, 1092, 1092, 1092, 1092, + 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, + 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, + 1092, 1093, 1096, 2227, 1320, 2242, 1096, 2227, 2243, 1096, + 1096, 2021, 2244, 1320, 2021, 2021, 1096, 1320, 1955, 1096, + 1096, 1096, 1955, 1336, 1320, 1336, 1320, 1955, 2113, 2021, + 1093, 1955, 1093, 1320, 1093, 1955, 2245, 1336, 1093, 1336, + 2073, 1093, 1093, 1336, 1320, 1093, 2205, 1093, 2209, 1320, + + 2073, 1093, 1093, 2205, 1093, 2246, 1320, 2205, 2209, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1097, 2210, 1099, 2247, + 1097, 2077, 1099, 2210, 1097, 1099, 1099, 1097, 1097, 2113, + 2248, 1778, 1099, 1097, 1778, 1099, 1099, 1099, 2230, 2113, + 1097, 2249, 1778, 1778, 2250, 1097, 2252, 2115, 1778, 1097, + 1178, 2230, 1778, 1097, 1139, 1139, 1139, 1139, 1097, 1097, + 1179, 1199, 1139, 1185, 2254, 1097, 1178, 1178, 1178, 1178, + 1178, 1178, 2255, 2256, 2257, 1178, 1179, 1179, 1179, 1179, + + 1179, 1179, 2002, 2077, 2259, 1179, 1265, 1265, 1265, 1265, + 1199, 2002, 1185, 2077, 1265, 2002, 1185, 2077, 2019, 2002, + 1185, 1199, 1199, 1785, 1185, 2253, 1785, 2260, 2261, 1185, + 1139, 1166, 2262, 1178, 1785, 1785, 1185, 2115, 2253, 1199, + 1785, 1185, 1187, 1179, 1785, 1185, 1187, 1178, 2115, 1185, + 1187, 2263, 1199, 1199, 1187, 1185, 2264, 1179, 2265, 1187, + 1166, 1185, 1265, 2004, 1166, 1199, 1187, 1185, 1166, 2004, + 2004, 1187, 1166, 2202, 2268, 1187, 2269, 1166, 2270, 1187, + 2266, 2019, 2004, 2019, 1166, 1187, 2202, 2202, 2019, 1166, + 2019, 1187, 1192, 1166, 1192, 1192, 2266, 1166, 1192, 2271, + + 1192, 1192, 1192, 1166, 1192, 2272, 2277, 2278, 1192, 1166, + 1192, 1338, 1192, 1166, 1193, 1166, 1171, 2010, 1193, 1195, + 2279, 1193, 1193, 1195, 2280, 1193, 1195, 1195, 1193, 2285, + 1195, 1193, 1193, 1195, 2290, 2291, 1195, 1195, 1195, 2292, + 1266, 1266, 1266, 1266, 1888, 1171, 1888, 1171, 1266, 1171, + 1888, 2293, 1888, 1171, 2294, 1888, 1171, 1171, 2275, 2275, + 1171, 1628, 1171, 2295, 1628, 2296, 1171, 1171, 1628, 1171, + 1338, 1628, 1338, 1338, 1171, 1628, 1171, 1628, 1171, 2010, + 2206, 2297, 1171, 2010, 1338, 2010, 1338, 1171, 1171, 2206, + 1338, 2206, 1171, 2206, 1171, 2302, 1266, 2206, 1171, 1171, + + 1171, 1188, 2016, 2016, 2016, 1274, 1274, 1274, 1274, 2301, + 2016, 1204, 2303, 1274, 2304, 2306, 2212, 1188, 1188, 1188, + 1188, 1188, 1188, 2305, 2305, 2212, 1188, 2212, 1196, 1188, + 2212, 2275, 1196, 2313, 2301, 1196, 1196, 2310, 1188, 1196, + 1204, 1196, 1196, 1196, 1204, 1196, 1196, 1204, 1204, 2310, + 2308, 1204, 2308, 2315, 1204, 1337, 2326, 1204, 1204, 1188, + 1188, 1274, 1188, 1188, 1188, 1188, 1204, 1188, 2273, 2314, + 2314, 1188, 2229, 1188, 1188, 2328, 1188, 1188, 1188, 1189, + 1276, 1276, 1276, 1276, 2309, 2329, 2309, 2301, 1276, 1419, + 1419, 1419, 1419, 1419, 1419, 1189, 1189, 1189, 1189, 1189, + + 1189, 1203, 2312, 2319, 1189, 1203, 2353, 1189, 1203, 1203, + 2319, 2312, 1203, 1337, 1337, 1203, 1337, 2273, 1203, 1203, + 2337, 1203, 2273, 1277, 1277, 1277, 1277, 2211, 1337, 2211, + 1337, 1277, 2337, 2211, 1337, 2229, 1276, 1189, 1189, 2211, + 1189, 1189, 1189, 2229, 1189, 1189, 2228, 2211, 1189, 1419, + 2228, 1189, 1189, 2360, 1189, 1189, 1189, 1190, 2316, 2228, + 1190, 1190, 2311, 1190, 1190, 1190, 1190, 2316, 1190, 1190, + 1190, 1190, 1190, 2311, 1190, 1190, 2318, 2300, 1190, 1277, + 1190, 1191, 1191, 1191, 2317, 1191, 1191, 1191, 1191, 1191, + 2324, 2323, 1191, 2317, 2307, 1191, 2324, 2307, 1191, 1191, + + 1191, 1191, 2300, 2307, 2323, 1191, 1194, 1194, 1194, 1205, + 1194, 1194, 2318, 1194, 1194, 2330, 1194, 1194, 1194, 2333, + 1194, 1194, 2321, 1194, 1194, 1194, 1194, 1209, 1207, 2357, + 1205, 2321, 2333, 2357, 1205, 1205, 1205, 1205, 1205, 2033, + 2330, 1205, 1205, 2033, 1205, 2033, 2300, 1205, 1205, 1207, + 2033, 2322, 2375, 1207, 1207, 1207, 2325, 1207, 2325, 2331, + 2322, 1207, 1207, 1207, 2393, 2331, 1207, 1208, 1207, 1339, + 1208, 1208, 1340, 2334, 1208, 1208, 2334, 1341, 1208, 2369, + 2335, 1208, 2334, 2225, 1208, 1208, 1209, 2339, 1209, 2335, + 2369, 1209, 2339, 1208, 1209, 2346, 1209, 1209, 1209, 1342, + + 1209, 1790, 1209, 1210, 1790, 2346, 1209, 1210, 1209, 1343, + 1210, 1210, 1790, 1790, 1210, 1210, 2380, 1210, 1790, 2380, + 1210, 1210, 1790, 1210, 1278, 1278, 1278, 1278, 1339, 1210, + 1339, 1340, 1278, 1340, 1344, 2398, 1341, 2336, 1341, 1341, + 2338, 1339, 1339, 1345, 1339, 1340, 2336, 1340, 1339, 2338, + 1341, 1340, 1341, 1346, 2225, 2225, 1341, 2345, 1342, 2225, + 1342, 1342, 2340, 2345, 1347, 1342, 2377, 1342, 1343, 1344, + 1343, 2377, 1342, 2348, 1342, 2342, 2342, 1348, 1342, 2344, + 1278, 1343, 1343, 2350, 1343, 1349, 2348, 2340, 1343, 2350, + 1350, 2344, 2379, 1344, 2379, 1344, 2344, 2356, 1344, 2341, + + 1352, 1345, 1345, 2341, 1345, 2341, 2356, 1344, 2341, 1344, + 2378, 1355, 1346, 1344, 1346, 2371, 1345, 2356, 1345, 1351, + 2378, 1345, 1345, 1347, 1354, 1347, 1346, 2351, 1346, 2351, + 2416, 2351, 1346, 1347, 1346, 1348, 1348, 1347, 1348, 1347, + 2371, 1356, 2355, 1347, 1349, 2358, 1349, 1349, 2355, 1350, + 1348, 1350, 1348, 2358, 1350, 2359, 1348, 2425, 1349, 1352, + 1349, 1352, 1351, 1350, 1349, 1350, 1357, 1358, 2359, 1350, + 1355, 2426, 1355, 1352, 1384, 1352, 2354, 2354, 1351, 1352, + 1351, 2362, 2362, 1354, 1355, 1354, 1355, 2382, 1354, 1385, + 1355, 2427, 1351, 2382, 1351, 2383, 1386, 1354, 1351, 1354, + + 1356, 2383, 1356, 1354, 1387, 1515, 1515, 1515, 1515, 1515, + 1515, 1356, 2349, 1388, 1356, 2361, 1356, 2368, 2368, 2387, + 1356, 1389, 2361, 2349, 2349, 1357, 1358, 1357, 1358, 2387, + 2364, 2381, 1357, 1384, 2381, 1384, 1358, 2364, 1392, 1357, + 1358, 1357, 1358, 1390, 2386, 1357, 1358, 1384, 1385, 1384, + 1385, 1391, 2363, 1384, 1515, 1386, 2386, 1386, 1386, 2381, + 1394, 2363, 1385, 1387, 1385, 1387, 2390, 1385, 1385, 1386, + 1393, 1386, 1388, 2390, 1388, 1386, 2388, 1387, 2332, 1387, + 1389, 1395, 1389, 1387, 2388, 2046, 1388, 2332, 1388, 1948, + 2384, 2384, 1388, 2332, 1389, 2332, 1389, 1392, 2372, 1392, + + 1389, 2372, 1390, 1396, 1390, 1390, 2395, 2372, 2395, 1391, + 1391, 1392, 1391, 1392, 1397, 2389, 1390, 1392, 1390, 1394, + 2389, 1394, 1390, 2402, 1391, 1398, 1391, 2079, 2402, 1393, + 1391, 1393, 1394, 1394, 1393, 1394, 1394, 2397, 1396, 1394, + 1395, 2396, 1395, 1393, 2397, 1393, 1399, 1948, 2046, 1393, + 2046, 1400, 1948, 2396, 1395, 2046, 1395, 2046, 2392, 2428, + 1395, 1401, 1396, 1948, 1396, 1948, 1948, 1396, 2392, 2391, + 1403, 2394, 1397, 1397, 2429, 1397, 1396, 2449, 1396, 2391, + 1402, 2394, 1396, 2391, 1398, 1404, 1398, 1397, 2367, 1397, + 2079, 2413, 2079, 1397, 1398, 2367, 2367, 2079, 1398, 2079, + + 1398, 2413, 1405, 2400, 1398, 1399, 1398, 1399, 1399, 1406, + 1400, 2400, 1400, 1887, 1887, 1887, 1887, 2410, 2410, 1399, + 1401, 1399, 1401, 2421, 1400, 1399, 1400, 2457, 1400, 1403, + 1400, 1403, 1401, 1407, 1401, 2107, 1401, 2439, 1402, 1402, + 1401, 1402, 2439, 1403, 1404, 1403, 1404, 1403, 2421, 1403, + 1408, 1404, 2401, 1402, 2401, 1402, 2431, 1409, 1404, 1402, + 1404, 1405, 2431, 1405, 1404, 1410, 2411, 2411, 1406, 1406, + 1406, 1405, 2385, 1405, 2462, 1405, 1887, 1405, 1406, 2385, + 2385, 1405, 1406, 2412, 1406, 1887, 1411, 2406, 1406, 2406, + 2412, 2418, 1407, 2418, 1407, 1407, 1413, 2463, 2107, 1407, + + 2107, 1407, 1887, 1414, 1407, 2107, 1407, 2107, 1407, 1408, + 2128, 1408, 1407, 2128, 1408, 1409, 1409, 2477, 1409, 1409, + 2478, 2128, 2128, 1408, 1410, 1408, 1410, 2128, 1410, 1408, + 1409, 2128, 1409, 1412, 2399, 1410, 1409, 2453, 1410, 2453, + 1410, 1415, 2399, 2399, 1410, 1411, 1411, 1411, 1416, 1412, + 1412, 1412, 1412, 1412, 1412, 1413, 1417, 1413, 1413, 1411, + 2408, 1411, 1414, 1411, 1414, 1411, 2376, 1418, 2403, 1413, + 2376, 1413, 2403, 2408, 2528, 1413, 1414, 1421, 1414, 2376, + 1422, 2403, 1414, 1506, 1506, 1506, 1506, 1506, 1506, 2415, + 2415, 2489, 1412, 2489, 1412, 1412, 2365, 2365, 2424, 1423, + + 1415, 2365, 1415, 1415, 1424, 2409, 1412, 1416, 1412, 1416, + 2111, 2424, 1412, 2586, 1415, 1417, 1415, 1417, 2409, 2409, + 1415, 1416, 1425, 1416, 1416, 1425, 1418, 1416, 1418, 1417, + 1426, 1417, 2417, 2417, 2572, 1417, 1421, 2430, 1421, 1422, + 1418, 1422, 1418, 1506, 2430, 2204, 1418, 2422, 2422, 1422, + 1421, 2572, 1421, 1422, 1427, 1422, 1421, 1423, 1423, 1422, + 1423, 1428, 2432, 1424, 2445, 1424, 2434, 2434, 2445, 1429, + 2432, 1423, 1423, 2111, 1423, 2111, 1424, 1424, 1423, 1424, + 2111, 2370, 2111, 1424, 1425, 2370, 1425, 2370, 1430, 1426, + 2370, 1426, 2618, 1431, 1803, 1803, 1803, 1803, 1425, 2419, + + 1425, 1426, 1426, 1426, 1425, 1426, 2450, 2204, 2419, 1426, + 1432, 2450, 1427, 1427, 2441, 1427, 2204, 2204, 2687, 1433, + 1428, 2204, 1428, 1428, 2441, 2452, 2452, 1427, 1429, 1427, + 1429, 2414, 2414, 1427, 1428, 2414, 1428, 2414, 1434, 2468, + 1428, 1429, 1429, 1435, 1429, 2734, 2468, 1430, 1429, 1430, + 1803, 1431, 1431, 1436, 1431, 2121, 2121, 2121, 2121, 2121, + 1430, 1430, 2473, 1430, 2433, 2433, 1431, 1430, 1431, 1432, + 2433, 1432, 1431, 2407, 1437, 1438, 2407, 1433, 1433, 1432, + 1433, 1432, 2407, 1432, 2404, 1432, 2435, 2473, 2404, 1432, + 2404, 1433, 1433, 2404, 1433, 2435, 1439, 1434, 1433, 1434, + + 1434, 1435, 1435, 1440, 1435, 1519, 1519, 1519, 1519, 1519, + 1519, 1434, 1436, 1434, 1436, 2464, 1435, 1434, 1435, 1436, + 2437, 2464, 1435, 2464, 1441, 1436, 1436, 2343, 1436, 2437, + 2343, 1436, 1436, 1437, 1438, 1437, 1438, 1443, 2343, 2469, + 2343, 1438, 2735, 1437, 2469, 2343, 2448, 1437, 1438, 1437, + 1438, 1519, 1445, 1437, 1438, 1439, 2448, 1439, 2420, 1439, + 1446, 2454, 1440, 1448, 1440, 1440, 2352, 2420, 2440, 1439, + 2352, 1439, 2736, 2454, 2420, 1439, 1440, 2440, 1440, 2352, + 2352, 1440, 1440, 1441, 1449, 1441, 1441, 2737, 2461, 2465, + 1441, 2455, 1441, 1447, 2465, 2465, 1443, 1441, 1443, 1441, + + 1441, 2461, 2455, 1441, 1442, 1442, 1442, 1442, 1442, 1442, + 1443, 1445, 1443, 1445, 1451, 2447, 1443, 2738, 2739, 1446, + 1446, 1446, 1448, 1445, 1448, 1445, 2458, 1445, 2447, 1452, + 2458, 1445, 2447, 1446, 2740, 1446, 1448, 1453, 1448, 1446, + 2374, 2374, 1448, 1449, 2374, 1449, 2374, 2436, 2741, 2374, + 1442, 2436, 1447, 2436, 1447, 1447, 2436, 1449, 1442, 1449, + 1442, 1444, 2436, 1449, 2532, 1447, 1447, 2532, 1447, 1447, + 2451, 2532, 1447, 1451, 2451, 1451, 1454, 1520, 1520, 1520, + 1520, 1520, 1520, 2451, 1455, 2456, 2742, 1451, 1452, 1451, + 1452, 1452, 2466, 1451, 2456, 1453, 1453, 1457, 1453, 2456, + + 1453, 1452, 1452, 2743, 1452, 2466, 2460, 2744, 1452, 2442, + 1453, 2460, 1453, 2442, 1453, 2442, 1453, 2460, 2442, 1458, + 1444, 1444, 1444, 1520, 1444, 2226, 1444, 1459, 2470, 2745, + 2459, 1444, 1444, 1444, 1444, 1454, 1444, 1454, 1444, 2459, + 1444, 2470, 1444, 1455, 2746, 1455, 1460, 1454, 2747, 1454, + 2467, 1454, 1454, 1461, 1462, 1454, 1457, 1455, 1457, 1455, + 2467, 1457, 2471, 1455, 1455, 1457, 2048, 2048, 2048, 2048, + 1457, 2471, 1457, 2483, 2048, 1463, 1457, 1458, 1458, 2483, + 1458, 2444, 2475, 1464, 2476, 2444, 1459, 2226, 1459, 1459, + 2444, 1458, 1458, 2476, 1458, 2475, 2226, 2226, 1458, 2479, + + 1459, 2226, 1459, 1459, 1465, 1460, 1459, 1460, 2479, 1467, + 2474, 2481, 1461, 1462, 1461, 1462, 2481, 2748, 2749, 1460, + 2493, 1460, 2048, 2474, 2474, 1460, 1461, 1462, 1461, 1462, + 1468, 2493, 1461, 1462, 1463, 1469, 1463, 2472, 2750, 2751, + 1470, 2472, 1464, 2472, 1464, 1464, 2472, 2480, 1463, 1464, + 1463, 2484, 1464, 2752, 1463, 1463, 1464, 2480, 1464, 1471, + 2484, 2490, 1464, 1465, 1472, 1465, 2485, 1467, 1467, 2488, + 1467, 1467, 1474, 1465, 1465, 2485, 2494, 1465, 2488, 1465, + 2523, 1473, 1467, 1465, 1467, 2523, 2490, 2494, 1467, 1468, + 2443, 1468, 1468, 2443, 1469, 2500, 1469, 1469, 1475, 1470, + + 2501, 1470, 2443, 1468, 2495, 1468, 1476, 2443, 1469, 1468, + 1469, 2501, 2753, 1470, 1469, 1470, 2754, 1477, 1471, 1470, + 1471, 1471, 2487, 1472, 2496, 1472, 2496, 2755, 1472, 2495, + 1478, 1474, 1471, 1474, 1471, 2487, 2487, 1472, 1471, 1472, + 1473, 1481, 1473, 1472, 2756, 1474, 2492, 1474, 2492, 1479, + 1474, 1474, 1473, 2492, 1473, 2499, 1473, 1475, 1480, 1475, + 1473, 2499, 2506, 2757, 1475, 1476, 2500, 1476, 1476, 1476, + 1475, 1475, 1476, 1475, 1476, 2503, 1477, 1475, 1477, 1476, + 1482, 1476, 2758, 1483, 2503, 1476, 2498, 2506, 1478, 1478, + 1477, 1478, 1477, 2759, 2497, 1477, 1477, 2498, 2535, 2498, + + 1481, 2535, 1481, 1478, 1481, 1478, 1485, 2497, 1479, 1478, + 1479, 1486, 2497, 1479, 1481, 1479, 1481, 1480, 2761, 1480, + 1481, 1487, 1479, 2502, 1479, 2502, 2502, 1480, 1479, 1480, + 2509, 1480, 1488, 1480, 1480, 2507, 2505, 1480, 2762, 1482, + 2509, 1482, 1483, 1489, 1483, 2505, 2763, 2509, 2507, 2507, + 1482, 1490, 1483, 1482, 2767, 1482, 1483, 2531, 1483, 1482, + 2531, 2518, 1483, 2510, 2511, 1485, 1491, 1485, 2531, 1486, + 1486, 2518, 1486, 2511, 1492, 2536, 2510, 2510, 2536, 1485, + 1487, 1485, 1487, 1486, 1486, 1485, 1486, 2512, 2512, 2768, + 1486, 1488, 1488, 1488, 1487, 2770, 1487, 1487, 1493, 2512, + + 1487, 1488, 1489, 1494, 1489, 1488, 1489, 1488, 2519, 1488, + 1490, 1488, 1490, 1495, 2772, 1489, 1489, 2515, 1489, 2520, + 2519, 2520, 1489, 2773, 1490, 1491, 1490, 1491, 1496, 2515, + 1490, 2515, 1491, 1492, 1490, 1492, 1497, 1498, 2521, 1491, + 2774, 1491, 2486, 2486, 2522, 1491, 2522, 1492, 2775, 1492, + 1492, 2521, 2486, 1492, 2486, 2486, 1493, 1493, 1499, 1493, + 2486, 1494, 1494, 1500, 1494, 1494, 2525, 2776, 2525, 2777, + 2525, 1493, 1495, 1493, 1495, 1495, 1494, 1493, 1494, 1495, + 2539, 1495, 1494, 2539, 1501, 1502, 1495, 1496, 1495, 1496, + 1496, 2540, 1495, 2780, 2540, 1497, 1498, 1497, 1498, 2533, + + 1496, 1496, 2533, 1496, 2781, 2533, 1503, 1496, 2517, 1497, + 1498, 1497, 1498, 2517, 2782, 1497, 1498, 1499, 2783, 1499, + 2517, 2534, 1500, 2534, 1500, 1500, 2534, 1504, 1505, 2543, + 2785, 1499, 2543, 1499, 2590, 1507, 1500, 1499, 1500, 1499, + 2527, 2590, 1500, 1501, 1502, 1501, 1502, 2527, 2527, 2524, + 1508, 2704, 2704, 2524, 1502, 1501, 2704, 1501, 1502, 1501, + 1502, 1501, 2524, 1501, 1502, 1503, 2786, 1503, 2615, 1510, + 2049, 2049, 2049, 2049, 1511, 2615, 2656, 2544, 2049, 1503, + 2544, 1503, 1512, 2656, 1503, 1503, 1504, 1505, 1504, 1505, + 1504, 2722, 1504, 1505, 1507, 1514, 1507, 1504, 2722, 1504, + + 1504, 1505, 1504, 1505, 1507, 1513, 1504, 1505, 1507, 1508, + 1507, 1508, 1508, 2504, 1507, 2787, 1508, 2504, 1508, 2788, + 1516, 2504, 2504, 1508, 2537, 1508, 2049, 2537, 1510, 1508, + 1510, 2760, 1511, 1511, 2537, 1511, 2760, 2542, 1510, 2542, + 2542, 1512, 1510, 1512, 1510, 1517, 1511, 1511, 1510, 1511, + 2631, 2791, 2802, 1511, 1514, 1512, 1514, 1512, 1514, 2552, + 1518, 1512, 2552, 2631, 1513, 2545, 1513, 2806, 1514, 2545, + 1514, 1513, 2545, 2538, 1514, 2808, 2538, 1513, 1513, 1516, + 1513, 1516, 2538, 1513, 1513, 1578, 1578, 1578, 1578, 1578, + 1578, 1610, 2809, 1516, 1610, 1516, 1610, 2553, 1516, 1516, + + 2553, 1610, 1610, 1610, 1517, 2810, 1517, 1517, 1610, 2812, + 1610, 1517, 1610, 1517, 2555, 2792, 2815, 2555, 1517, 1518, + 1517, 1518, 2541, 2555, 1517, 1608, 1608, 1608, 1608, 1608, + 1608, 1578, 1518, 1518, 2556, 1518, 2792, 2556, 2556, 1518, + 1528, 1680, 1680, 1680, 1680, 1680, 1680, 2546, 2547, 2541, + 2546, 2547, 2541, 2798, 2798, 2547, 1528, 1528, 1528, 1528, + 1528, 1528, 2546, 2548, 2558, 1528, 2548, 2558, 1528, 1760, + 1760, 1760, 1760, 2569, 2558, 1760, 2569, 1763, 2548, 1608, + 2423, 1608, 2569, 2423, 2423, 2813, 2423, 1680, 1763, 2423, + 1763, 1763, 2813, 1763, 1763, 1763, 1763, 1763, 1763, 1528, + + 2816, 1528, 1895, 1895, 1895, 1895, 1895, 1895, 2549, 2554, + 2803, 2549, 2554, 1528, 2817, 2554, 1528, 1528, 1529, 2052, + 2052, 2052, 2052, 2549, 1760, 2549, 2561, 2052, 2576, 2561, + 1763, 2576, 2818, 2819, 1529, 1529, 1529, 1529, 1529, 1529, + 2550, 2561, 2578, 1529, 2550, 2578, 1529, 2550, 1895, 1932, + 1932, 1932, 1932, 1932, 1932, 1934, 1760, 2564, 1934, 2579, + 1934, 2564, 2579, 2803, 2564, 1934, 1934, 1934, 2570, 2562, + 2562, 2570, 1934, 2562, 1934, 2052, 1934, 1529, 2570, 1529, + 2035, 2035, 2035, 2035, 2035, 2035, 2789, 2778, 2789, 1965, + 1965, 1529, 2778, 1965, 1529, 1529, 1816, 1965, 2567, 2796, + + 1965, 2567, 1965, 1932, 1965, 1932, 1965, 2573, 1965, 2567, + 2573, 2567, 1816, 1816, 1816, 1816, 1816, 1816, 2820, 2557, + 2573, 1816, 2557, 2557, 1816, 2557, 2035, 2054, 2054, 2054, + 2054, 2055, 2055, 2055, 2055, 2054, 2821, 2822, 2825, 2055, + 2056, 2056, 2056, 2056, 2062, 2062, 2062, 2062, 2056, 2584, + 2560, 2584, 2062, 2560, 2584, 1816, 2560, 1816, 2063, 2063, + 2063, 2063, 2067, 2067, 2067, 2067, 2063, 2560, 2593, 1816, + 2067, 2593, 1816, 1816, 1817, 2593, 2069, 2069, 2069, 2069, + 2796, 2826, 2566, 2054, 2069, 2566, 2571, 2055, 2827, 2571, + 1817, 1817, 1817, 1817, 1817, 1817, 2056, 2566, 2828, 1817, + + 2062, 2571, 1817, 2070, 2070, 2070, 2070, 2071, 2071, 2071, + 2071, 2070, 2829, 2482, 2063, 2071, 2482, 2482, 2067, 2482, + 2170, 2577, 2482, 2577, 2577, 2830, 2267, 2267, 2267, 2267, + 2831, 2832, 2069, 1817, 2267, 1817, 2170, 2170, 2170, 2170, + 2170, 2170, 2833, 2836, 2565, 2170, 2565, 1817, 2171, 2565, + 1817, 1817, 2274, 2274, 2274, 2274, 2565, 2837, 2172, 2070, + 2274, 2838, 2839, 2071, 2171, 2171, 2171, 2171, 2171, 2171, + 2823, 2840, 2823, 2171, 2172, 2172, 2172, 2172, 2172, 2172, + 2366, 2841, 2267, 2172, 2347, 2347, 2347, 2347, 2347, 2347, + 2842, 2373, 2373, 2373, 2373, 2405, 2366, 2366, 2366, 2366, + + 2366, 2366, 2834, 2568, 2834, 2366, 2171, 2568, 2274, 2845, + 2568, 2405, 2405, 2405, 2405, 2405, 2405, 2568, 2446, 2446, + 2405, 2446, 2843, 2491, 2843, 2446, 2491, 2491, 2446, 2491, + 2446, 2575, 2491, 2172, 2197, 2575, 2446, 2513, 2575, 2347, + 2513, 2513, 2846, 2513, 2574, 2574, 2513, 2574, 2847, 2851, + 2197, 2197, 2197, 2197, 2197, 2197, 2373, 2852, 2373, 2197, + 2373, 2580, 2197, 2526, 2580, 2373, 2853, 2854, 2563, 2563, + 2563, 2563, 2563, 2563, 2855, 2856, 2855, 2580, 2373, 2526, + 2526, 2526, 2526, 2526, 2526, 2859, 2581, 2591, 2526, 2581, + 2591, 2582, 2582, 2197, 2582, 2197, 2581, 2197, 2197, 2582, + + 2581, 2591, 2559, 2860, 2861, 2559, 2559, 2197, 2872, 2559, + 2197, 2197, 2198, 2559, 2563, 2583, 2872, 2563, 2583, 2594, + 2559, 2595, 2594, 2601, 2595, 2583, 2601, 2601, 2198, 2198, + 2198, 2198, 2198, 2198, 2594, 2585, 2595, 2198, 2585, 2585, + 2198, 2585, 2588, 2588, 2589, 2588, 2588, 2589, 2588, 2592, + 2873, 2596, 2592, 2589, 2596, 2597, 2597, 2600, 2597, 2596, + 2600, 2598, 2871, 2597, 2598, 2599, 2599, 2598, 2592, 2599, + 2878, 2198, 2871, 2198, 2600, 2198, 2602, 2605, 2602, 2602, + 2605, 2604, 2896, 2198, 2604, 2198, 2605, 2896, 2198, 2198, + 2508, 2865, 2865, 2508, 2508, 2508, 2508, 2508, 2508, 2508, + + 2604, 2607, 2619, 2508, 2607, 2508, 2619, 2508, 2607, 2619, + 2508, 2508, 2508, 2508, 2514, 2514, 2868, 2868, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, + + 2514, 2514, 2514, 2898, 2514, 2514, 2514, 2529, 2603, 2603, + 2606, 2606, 2603, 2608, 2606, 2609, 2608, 2614, 2609, 2907, + 2614, 2614, 2603, 2529, 2529, 2529, 2529, 2529, 2529, 2876, + 2610, 2609, 2529, 2610, 2608, 2529, 2876, 2611, 2611, 2610, + 2611, 2612, 2612, 2627, 2612, 2972, 2627, 2587, 2587, 2587, + 2587, 2613, 2628, 2616, 2613, 2628, 2616, 2616, 2613, 2616, + 2617, 2630, 2628, 2617, 2630, 2620, 2529, 2617, 2529, 2620, + 2621, 2622, 2620, 2621, 2622, 2867, 2977, 2529, 2621, 2622, + 2529, 2875, 2875, 2529, 2529, 2530, 2624, 2624, 2867, 2626, + 2624, 2623, 2626, 2629, 2623, 2641, 2629, 2626, 2641, 2952, + + 2629, 2530, 2530, 2530, 2530, 2530, 2530, 2623, 2625, 2952, + 2530, 2625, 2587, 2530, 2587, 2587, 2587, 2632, 2625, 2897, + 2632, 2625, 2634, 2625, 2633, 2632, 2634, 2633, 2633, 2634, + 2633, 2897, 2869, 2635, 2587, 2634, 2635, 2636, 2637, 2636, + 2636, 2637, 2635, 2869, 2530, 2985, 2530, 2530, 2638, 2639, + 2530, 2638, 2639, 2637, 2643, 3009, 2640, 2643, 2530, 2640, + 2644, 2530, 2530, 2644, 2639, 2638, 2640, 2642, 3010, 2644, + 2642, 2642, 2645, 2642, 2644, 2645, 2646, 2647, 2879, 2646, + 2647, 2647, 2642, 2647, 2648, 2649, 2879, 2648, 2649, 2649, + 2648, 2650, 2877, 2877, 2650, 2646, 2651, 2651, 2874, 2651, + + 2874, 2648, 2651, 2651, 2650, 2652, 2651, 2653, 2654, 2652, + 2653, 2654, 2652, 2657, 2651, 2655, 2657, 2654, 2655, 2655, + 2658, 2657, 2652, 2658, 3012, 2659, 2653, 2658, 2659, 2660, + 2661, 2659, 2660, 2661, 2662, 2663, 2664, 2662, 2663, 2664, + 2906, 2906, 2665, 2662, 2661, 2665, 2665, 2666, 2663, 2660, + 2667, 2666, 2668, 2667, 2666, 2668, 2883, 2665, 3045, 2667, + 2669, 2668, 2670, 2669, 2671, 2670, 2670, 2883, 2671, 2672, + 2672, 2671, 3046, 2672, 2880, 2669, 2673, 2669, 2673, 2673, + 2674, 2675, 2880, 2674, 2676, 2675, 2677, 2676, 2675, 2677, + 2677, 2678, 2677, 2679, 2674, 2678, 2680, 2679, 2678, 2680, + + 2679, 2681, 2682, 2683, 2681, 2682, 2683, 2683, 2684, 3050, + 2685, 2684, 2684, 2685, 2684, 2686, 2688, 2688, 2686, 2688, + 2689, 2682, 2688, 2700, 2689, 2685, 2688, 2689, 2690, 2688, + 2691, 2690, 2692, 2691, 2688, 2692, 2692, 2693, 2692, 2696, + 2693, 2691, 2696, 2694, 2693, 2694, 2887, 2695, 2694, 2695, + 2696, 2693, 2695, 2697, 2887, 2698, 2882, 2697, 2695, 2698, + 2697, 2699, 2698, 2884, 2699, 2702, 2698, 2701, 2702, 2884, + 2701, 2697, 2702, 2885, 2703, 2702, 2699, 2703, 2705, 2706, + 2885, 2705, 3051, 2706, 2886, 2700, 2706, 2701, 2700, 2707, + 2886, 2882, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2708, + + 2708, 2709, 2707, 2708, 2710, 2709, 2707, 2710, 2709, 2707, + 2707, 2707, 2707, 2917, 2917, 2709, 2708, 2711, 2711, 2718, + 2711, 2712, 2718, 2711, 2712, 2712, 2718, 2712, 2713, 2713, + 2942, 2942, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2888, 2713, 2713, + 2713, 2714, 2715, 2888, 2714, 2715, 2715, 2714, 2716, 2764, + 2717, 2716, 2764, 2717, 3062, 2714, 2717, 2719, 2715, 2720, + 2784, 2719, 2720, 2784, 2719, 2721, 2720, 2716, 2721, 2721, + 2723, 2724, 2724, 2723, 2724, 2866, 3119, 2723, 2866, 2724, + 2725, 2723, 2726, 2725, 2725, 2726, 2727, 2857, 2726, 2727, + 2728, 2728, 2728, 2728, 2729, 2730, 2727, 2729, 2730, 2726, + 2800, 2729, 2731, 2730, 2733, 2731, 2732, 2733, 2731, 2732, + 2732, 2733, 2857, 2889, 2892, 2925, 2892, 2925, 2733, 2731, + + 2893, 2732, 2779, 2779, 2779, 2779, 2794, 2794, 2794, 2794, + 2795, 2795, 2794, 2797, 2849, 2795, 2899, 2849, 2797, 2799, + 2799, 2799, 2799, 2899, 2858, 2799, 2814, 2849, 2928, 2814, + 2814, 2800, 2928, 2881, 2890, 2728, 2857, 2728, 2728, 2728, + 2804, 2814, 2804, 2804, 2804, 2804, 2804, 2804, 2805, 2858, + 2805, 2805, 2805, 2805, 2805, 2805, 3131, 2728, 2881, 2890, + 2891, 2800, 2894, 2889, 2779, 2779, 2779, 2779, 2779, 2864, + 2893, 2779, 2864, 2905, 2799, 2779, 2895, 2864, 2779, 3176, + 2901, 2779, 2903, 2893, 2895, 2891, 2900, 2894, 2901, 2903, + 2901, 2900, 2909, 2794, 2954, 2954, 2795, 2902, 2905, 2797, + + 3235, 2902, 2858, 2902, 2904, 2902, 2799, 2870, 2870, 2870, + 2870, 2904, 2911, 2891, 2910, 2914, 2921, 2909, 2914, 2911, + 2805, 2850, 2919, 2910, 2850, 2850, 2850, 2850, 2850, 2850, + 2850, 2912, 2916, 2919, 2850, 2913, 3238, 2922, 2850, 2912, + 2916, 2850, 2850, 2850, 2850, 2862, 2912, 2913, 2912, 2915, + 2923, 2923, 2915, 2932, 2923, 2932, 3239, 2915, 2930, 2918, + 2939, 2862, 2862, 2862, 2862, 2862, 2862, 2918, 2926, 2870, + 2862, 2920, 2918, 2862, 2870, 2935, 2926, 2926, 2929, 2870, + 2870, 2920, 2935, 2930, 2947, 2870, 2921, 2920, 2920, 2924, + 2929, 2947, 2929, 2924, 2936, 2924, 2937, 2924, 2927, 2927, + + 2927, 2927, 2938, 2936, 2862, 2937, 2862, 2922, 2931, 2922, + 2944, 2938, 2931, 2941, 2931, 3243, 2931, 2933, 2862, 2950, + 2933, 2862, 2862, 2863, 2943, 2941, 2946, 2948, 2933, 2933, + 2939, 2951, 2939, 2951, 2948, 2933, 2946, 2966, 2946, 2863, + 2863, 2863, 2863, 2863, 2863, 2956, 2997, 2956, 2863, 2959, + 2997, 2863, 2940, 2940, 2940, 2940, 2940, 2940, 2945, 2955, + 2949, 2943, 2945, 2949, 2945, 2949, 2945, 2943, 2958, 2953, + 2955, 2927, 2944, 2953, 2960, 2967, 2958, 2973, 2968, 2976, + 2944, 2953, 2863, 2953, 2863, 2927, 2963, 2967, 2958, 2950, + 2964, 2963, 2957, 2863, 2943, 2978, 2863, 2964, 2957, 2863, + + 2863, 2934, 2934, 2934, 2934, 2957, 2940, 2966, 2943, 3022, + 2969, 2959, 2970, 3022, 2959, 2959, 2969, 2959, 2970, 2959, + 2961, 2961, 2961, 2961, 2962, 2962, 2962, 2962, 2971, 2974, + 2975, 2980, 2976, 2981, 2988, 2971, 2974, 2990, 2975, 2960, + 2968, 2981, 2983, 2983, 2960, 3249, 2960, 2973, 2968, 2976, + 2979, 2976, 2962, 2986, 2979, 2986, 2979, 2987, 2979, 2995, + 2995, 2979, 2990, 2934, 2934, 2978, 2998, 2987, 2934, 2982, + 2982, 2982, 2982, 2934, 2934, 2984, 2934, 2999, 2999, 2934, + 2934, 2989, 2993, 2934, 2934, 2989, 2993, 2989, 2993, 2989, + 2993, 2984, 2984, 2984, 2984, 2984, 2984, 3001, 2993, 2991, + + 2984, 2980, 2991, 2996, 2988, 2996, 3000, 2991, 3011, 2961, + 3003, 3014, 3000, 2962, 2991, 2992, 2992, 2992, 2992, 2994, + 2994, 3003, 3002, 2994, 3006, 2994, 3007, 2994, 3002, 3004, + 3004, 3006, 3005, 3007, 3008, 3005, 2998, 3013, 3017, 3015, + 3019, 3018, 2982, 3015, 2982, 3015, 3008, 3015, 2982, 3019, + 3034, 3016, 3018, 3016, 3054, 3001, 2982, 3016, 3026, 3001, + 3005, 3011, 3013, 3017, 3020, 3021, 3023, 3001, 3250, 3026, + 3011, 3021, 3023, 3020, 3024, 3024, 3024, 3024, 3011, 3054, + 2992, 3014, 2992, 3025, 2992, 3027, 3027, 3028, 2992, 3029, + 3029, 3030, 3025, 3032, 3032, 3031, 3028, 3025, 3033, 3035, + + 3251, 3028, 2992, 3031, 3030, 3033, 3035, 3036, 3036, 3037, + 3038, 3039, 3040, 3037, 3038, 3039, 3048, 3039, 3042, 3039, + 3034, 3042, 3038, 3041, 3041, 3048, 3042, 3043, 3040, 3040, + 3040, 3040, 3040, 3040, 3044, 3047, 3052, 3040, 3052, 3043, + 3055, 3055, 3057, 3047, 3053, 3059, 3044, 3024, 3049, 3024, + 3049, 3053, 3056, 3049, 3058, 3049, 3061, 3060, 3064, 3067, + 3056, 3024, 3058, 3072, 3077, 3064, 3066, 3072, 3068, 3060, + 3058, 3060, 3063, 3065, 3066, 3063, 3063, 3066, 3063, 3068, + 3063, 3061, 3070, 3073, 3069, 3065, 3065, 3069, 3070, 3071, + 3073, 3074, 3076, 3069, 3075, 3057, 3078, 3081, 3059, 3076, + + 3078, 3071, 3078, 3075, 3078, 3079, 3080, 3079, 3080, 3082, + 3078, 3085, 3057, 3083, 3086, 3059, 3074, 3059, 3087, 3057, + 3084, 3083, 3081, 3089, 3084, 3088, 3084, 3095, 3084, 3067, + 3067, 3088, 3090, 3092, 3077, 3084, 3085, 3091, 3091, 3086, + 3090, 3092, 3093, 3091, 3094, 3099, 3096, 3100, 3101, 3094, + 3093, 3094, 3102, 3103, 3094, 3097, 3093, 3096, 3105, 3097, + 3104, 3097, 3082, 3097, 3107, 3098, 3106, 3104, 3098, 3105, + 3105, 3106, 3108, 3109, 3111, 3082, 3098, 3102, 3103, 3082, + 3095, 3142, 3098, 3112, 3112, 3082, 3115, 3115, 3087, 3107, + 3142, 3110, 3110, 3089, 3110, 3114, 3113, 3095, 3110, 3111, + + 3100, 3110, 3110, 3120, 3117, 3121, 3114, 3099, 3113, 3110, + 3116, 3099, 3117, 3113, 3116, 3099, 3123, 3100, 3101, 3118, + 3101, 3122, 3122, 3118, 3124, 3125, 3127, 3123, 3120, 3138, + 3121, 3118, 3127, 3125, 3126, 3130, 3124, 3128, 3128, 3125, + 3129, 3126, 3108, 3109, 3132, 3133, 3134, 3130, 3129, 3132, + 3136, 3133, 3135, 3139, 3134, 3137, 3120, 3140, 3137, 3141, + 3135, 3146, 3136, 3147, 3135, 3146, 3141, 3143, 3143, 3120, + 3150, 3135, 3145, 3120, 3148, 3120, 3144, 3144, 3139, 3150, + 3160, 3145, 3140, 3149, 3145, 3149, 3148, 3151, 3145, 3152, + 3145, 3154, 3153, 3151, 3156, 3152, 3155, 3149, 3153, 3138, + + 3155, 3157, 3162, 3154, 3158, 3159, 3156, 3159, 3158, 3157, + 3158, 3161, 3158, 3163, 3164, 3165, 3161, 3166, 3168, 3171, + 3167, 3177, 3178, 3165, 3181, 3163, 3164, 3162, 3167, 3168, + 3169, 3166, 3170, 3147, 3169, 3170, 3170, 3172, 3170, 3173, + 3170, 3174, 3174, 3175, 3191, 3172, 3147, 3173, 3179, 3181, + 3160, 3174, 3174, 3192, 3174, 3175, 3179, 3180, 3182, 3174, + 3180, 3182, 3182, 3187, 3182, 3185, 3182, 3183, 3183, 3184, + 3184, 3186, 3195, 3196, 3183, 3185, 3185, 3193, 3186, 3184, + 3188, 3189, 3190, 3177, 3189, 3198, 3193, 3178, 3187, 3171, + 3188, 3177, 3178, 3194, 3190, 3188, 3171, 3191, 3199, 3201, + + 3190, 3197, 3200, 3204, 3194, 3194, 3192, 3199, 3197, 3206, + 3200, 3201, 3203, 3205, 3191, 3192, 3202, 3202, 3207, 3202, + 3203, 3205, 3209, 3192, 3210, 3211, 3252, 3213, 3269, 3192, + 3207, 3209, 3213, 3211, 3206, 3217, 3210, 3195, 3210, 3209, + 3212, 3212, 3195, 3196, 3214, 3259, 3217, 3220, 3259, 3217, + 3270, 3212, 3214, 3215, 3214, 3198, 3215, 3215, 3220, 3215, + 3218, 3215, 3198, 3221, 3218, 3204, 3225, 3225, 3233, 3204, + 3221, 3271, 3218, 3204, 3208, 3224, 3233, 3208, 3208, 3208, + 3208, 3208, 3208, 3208, 3227, 3227, 3224, 3208, 3208, 3226, + 3273, 3208, 3274, 3224, 3208, 3208, 3208, 3208, 3216, 3216, + + 3275, 3226, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, + 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3219, 3216, 3216, + 3216, 3222, 3222, 3222, 3222, 3219, 3223, 3234, 3219, 3228, + + 3219, 3219, 3219, 3228, 3229, 3230, 3230, 3231, 3229, 3230, + 3232, 3236, 3232, 3241, 3253, 3263, 3229, 3237, 3232, 3241, + 3253, 3263, 3234, 3231, 3231, 3231, 3231, 3231, 3231, 3237, + 3240, 3237, 3231, 3240, 3245, 3245, 3236, 3242, 3242, 3242, + 3242, 3255, 3255, 3256, 3256, 3242, 3265, 3276, 3266, 3240, + 3244, 3244, 3244, 3244, 3246, 3267, 3262, 3246, 3244, 3262, + 3277, 3247, 3246, 3278, 3222, 3247, 3223, 3279, 3247, 3247, + 3264, 3280, 3248, 3248, 3248, 3248, 3264, 3268, 3222, 3247, + 3248, 3254, 3254, 3254, 3254, 3272, 3281, 3257, 3281, 3254, + 3257, 3257, 3283, 3242, 3257, 3257, 3284, 3286, 3257, 3258, + + 3258, 3258, 3258, 3265, 3266, 3257, 3244, 3245, 3260, 3267, + 3285, 3260, 3287, 3245, 3255, 3285, 3260, 3261, 3288, 3291, + 3255, 3261, 3293, 3256, 3261, 3261, 3268, 3265, 3248, 3266, + 3304, 3298, 3307, 3292, 3268, 3261, 3267, 3254, 3272, 3296, + 3322, 3296, 3298, 3296, 3272, 3300, 3297, 3297, 3297, 3297, + 3299, 3272, 3291, 3272, 3299, 3272, 3289, 3272, 3301, 3303, + 3293, 3300, 3313, 3324, 3258, 3301, 3258, 3258, 3258, 3302, + 3303, 3290, 3289, 3289, 3289, 3289, 3289, 3289, 3292, 3288, + 3325, 3289, 3305, 3306, 3302, 3309, 3258, 3290, 3290, 3290, + 3290, 3290, 3290, 3305, 3310, 3308, 3290, 3312, 3308, 3305, + + 3309, 3306, 3306, 3308, 3313, 3314, 3315, 3316, 3317, 3310, + 3319, 3297, 3312, 3297, 3318, 3297, 3321, 3326, 3314, 3318, + 3320, 3317, 3327, 3321, 3321, 3289, 3297, 3328, 3329, 3330, + 3331, 3315, 3316, 3297, 3320, 3319, 3332, 3333, 3334, 3320, + 3335, 3336, 3337, 3338, 3339, 3340, 3341, 3337, 3342, 3290, + 3294, 3343, 3344, 3345, 3346, 3347, 3348, 3349, 3350, 3351, + 3352, 3353, 3354, 3355, 3357, 3358, 3294, 3294, 3294, 3294, + 3294, 3294, 3359, 3361, 3363, 3294, 3355, 3353, 3294, 3362, + 3362, 3365, 3366, 3375, 3377, 3378, 3379, 3380, 3381, 3376, + 3383, 3382, 3384, 3386, 3388, 3381, 3382, 3387, 3385, 3383, + + 3385, 3391, 3390, 3387, 3395, 3393, 3389, 3391, 3375, 3294, + 3382, 3294, 3392, 3294, 3376, 3393, 3294, 3390, 3392, 3394, + 3393, 3396, 3361, 3294, 3394, 3397, 3294, 3294, 3295, 3398, + 3399, 3399, 3415, 3400, 3398, 3397, 3420, 3401, 3361, 3400, + 3397, 3415, 3362, 3401, 3295, 3295, 3295, 3295, 3295, 3295, + 3389, 3376, 3404, 3295, 3402, 3403, 3295, 3418, 3404, 3375, + 3407, 3405, 3402, 3405, 3407, 3405, 3408, 3365, 3406, 3406, + 3403, 3388, 3418, 3402, 3412, 3410, 3426, 3408, 3409, 3407, + 3410, 3412, 3409, 3416, 3409, 3427, 3412, 3295, 3416, 3295, + 3427, 3295, 3410, 3409, 3410, 3413, 3411, 3414, 3429, 3435, + + 3411, 3295, 3411, 3413, 3295, 3295, 3422, 3433, 3437, 3417, + 3413, 3411, 3433, 3414, 3414, 3414, 3414, 3414, 3414, 3417, + 3436, 3422, 3414, 3436, 3417, 3419, 3419, 3419, 3419, 3421, + 3421, 3421, 3421, 3423, 3428, 3423, 3430, 3440, 3430, 3440, + 3424, 3428, 3434, 3434, 3419, 3419, 3419, 3419, 3419, 3419, + 3424, 3438, 3438, 3438, 3438, 3424, 3425, 3425, 3425, 3425, + 3425, 3425, 3431, 3447, 3432, 3444, 3444, 3442, 3432, 3431, + 3432, 3439, 3439, 3439, 3439, 3441, 3443, 3449, 3452, 3432, + 3443, 3441, 3445, 3443, 3421, 3419, 3446, 3451, 3445, 3443, + 3446, 3455, 3446, 3448, 3443, 3454, 3436, 3452, 3448, 3439, + + 3436, 3446, 3451, 3453, 3455, 3419, 3453, 3457, 3458, 3421, + 3454, 3459, 3470, 3484, 3456, 3425, 3421, 3425, 3442, 3442, + 3442, 3453, 3456, 3442, 3470, 3450, 3442, 3442, 3461, 3450, + 3449, 3450, 3450, 3456, 3442, 3463, 3461, 3450, 3438, 3462, + 3488, 3460, 3464, 3442, 3460, 3462, 3467, 3465, 3460, 3449, + 3463, 3465, 3465, 3469, 3449, 3460, 3460, 3464, 3439, 3466, + 3471, 3467, 3468, 3473, 3466, 3485, 3468, 3472, 3472, 3474, + 3469, 3473, 3475, 3476, 3474, 3471, 3485, 3475, 3477, 3477, + 3476, 3478, 3478, 3479, 3480, 3458, 3482, 3482, 3479, 3480, + 3479, 3481, 3486, 3481, 3477, 3479, 3483, 3483, 3487, 3493, + + 3494, 3495, 3496, 3483, 3495, 3497, 3498, 3483, 3498, 3495, + 3497, 3486, 3499, 3502, 3493, 3494, 3520, 3487, 3500, 3501, + 3496, 3504, 3500, 3499, 3500, 3503, 3501, 3503, 3505, 3503, + 3506, 3508, 3505, 3500, 3505, 3511, 3506, 3501, 3504, 3507, + 3504, 3509, 3508, 3505, 3507, 3510, 3509, 3512, 3513, 3511, + 3508, 3510, 3514, 3515, 3516, 3513, 3517, 3515, 3512, 3518, + 3513, 3519, 3517, 3522, 3521, 3525, 3524, 3514, 3521, 3523, + 3516, 3522, 3518, 3523, 3528, 3523, 3526, 3531, 3530, 3525, + 3519, 3527, 3526, 3521, 3523, 3524, 3524, 3527, 3529, 3532, + 3533, 3535, 3534, 3526, 3530, 3536, 3529, 3537, 3544, 3532, + + 3540, 3533, 3538, 3540, 3532, 3534, 3538, 3535, 3538, 3539, + 3536, 3542, 3537, 3539, 3541, 3543, 3547, 3538, 3542, 3548, + 3541, 3543, 3551, 3549, 3550, 3552, 3548, 3549, 3551, 3558, + 3553, 3555, 3554, 3551, 3547, 3559, 3528, 3554, 3556, 3563, + 3557, 3528, 3552, 3550, 3553, 3560, 3555, 3557, 3562, 3553, + 3563, 3566, 3556, 3560, 3559, 3561, 3567, 3556, 3561, 3561, + 3564, 3561, 3564, 3562, 3568, 3565, 3566, 3569, 3570, 3565, + 3561, 3565, 3571, 3572, 3571, 3573, 3580, 3564, 3600, 3574, + 3565, 3565, 3580, 3570, 3567, 3567, 3574, 3580, 3619, 3568, + 3567, 3567, 3572, 3576, 3581, 3567, 3567, 3567, 3581, 3576, + + 3567, 3567, 3567, 3575, 3588, 3567, 3575, 3575, 3591, 3575, + 3577, 3578, 3576, 3576, 3583, 3578, 3591, 3577, 3595, 3588, + 3575, 3575, 3575, 3575, 3577, 3582, 3578, 3578, 3579, 3577, + 3584, 3579, 3579, 3583, 3584, 3586, 3589, 3595, 3582, 3597, + 3585, 3582, 3585, 3582, 3569, 3586, 3585, 3601, 3585, 3584, + 3586, 3589, 3589, 3585, 3590, 3587, 3593, 3585, 3585, 3587, + 3590, 3587, 3592, 3594, 3597, 3602, 3601, 3592, 3594, 3592, + 3593, 3603, 3604, 3605, 3610, 3593, 3603, 3605, 3606, 3605, + 3602, 3607, 3608, 3606, 3609, 3611, 3608, 3604, 3605, 3610, + 3613, 3615, 3616, 3614, 3617, 3607, 3616, 3609, 3613, 3614, + + 3607, 3608, 3622, 3623, 3624, 3625, 3615, 3622, 3623, 3624, + 3625, 3617, 3622, 3626, 3628, 3629, 3647, 3630, 3626, 3629, + 3629, 3624, 3630, 3631, 3633, 3822, 3626, 3632, 3631, 3633, + 3630, 3632, 3632, 3840, 3639, 3635, 3631, 3639, 3633, 3628, + 3635, 3632, 3634, 3849, 3628, 3637, 3634, 3634, 3636, 3635, + 3637, 3850, 3638, 3636, 3851, 3640, 3634, 3638, 3637, 3640, + 3640, 3611, 3611, 3612, 3612, 3638, 3636, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3618, 3627, 3641, 3642, + 3643, 3853, 3644, 3641, 3642, 3643, 3644, 3644, 3658, 3857, + 3645, 3641, 3658, 3658, 3642, 3645, 3642, 3646, 3645, 3858, + 3643, 3646, 3646, 3860, 3648, 3646, 3649, 3646, 3648, 3648, + 3652, 3649, 3648, 3649, 3648, 3652, 3646, 3650, 3651, 3861, + + 3649, 3650, 3650, 3651, 3652, 3662, 3862, 3653, 3651, 3650, + 3662, 3653, 3653, 3750, 3750, 3627, 3863, 3656, 3618, 3654, + 3627, 3653, 3656, 3654, 3654, 3655, 3655, 3655, 3655, 3864, + 3663, 3733, 3618, 3618, 3620, 3663, 3656, 3865, 3654, 3657, + 3657, 3657, 3657, 3733, 3655, 3655, 3655, 3655, 3655, 3655, + 3620, 3620, 3620, 3620, 3620, 3620, 3659, 3871, 3665, 3620, + 3660, 3659, 3620, 3665, 3660, 3660, 3661, 3661, 3661, 3661, + 3661, 3661, 3664, 3659, 3660, 3666, 3667, 3664, 3669, 3872, + 3666, 3667, 3670, 3669, 3664, 3655, 3655, 3670, 3667, 3780, + 3868, 3655, 3666, 3620, 3657, 3620, 3671, 3868, 3780, 3673, + + 3657, 3671, 3670, 3672, 3673, 3657, 3672, 3620, 3661, 3677, + 3620, 3620, 3668, 3661, 3677, 3671, 3668, 3668, 3620, 3621, + 3668, 3874, 3668, 3680, 3674, 3661, 3657, 3677, 3680, 3674, + 3682, 3866, 3876, 3818, 3866, 3621, 3621, 3621, 3621, 3621, + 3621, 3674, 3818, 3675, 3621, 3676, 3676, 3621, 3675, 3678, + 3676, 3867, 3681, 3676, 3678, 3679, 3675, 3681, 3691, 3679, + 3679, 3867, 3678, 3679, 3672, 3679, 3681, 3684, 3685, 3672, + 3687, 3684, 3684, 3685, 3687, 3687, 3689, 3621, 3621, 3672, + 3621, 3689, 3621, 3682, 3689, 3686, 3686, 3877, 3682, 3686, + 3686, 3737, 3621, 3682, 3683, 3621, 3621, 3737, 3878, 3683, + + 3880, 3683, 3682, 3621, 3688, 3683, 3690, 3683, 3683, 3688, + 3688, 3690, 3692, 3694, 3882, 3693, 3691, 3692, 3694, 3693, + 3693, 3691, 3693, 3695, 3694, 3696, 3693, 3883, 3695, 3696, + 3696, 3692, 3697, 3693, 3698, 3699, 3697, 3697, 3700, 3698, + 3699, 3701, 3700, 3700, 3703, 3702, 3701, 3702, 3695, 3703, + 3702, 3703, 3698, 3704, 3705, 3706, 3701, 3704, 3704, 3705, + 3706, 3884, 3707, 3708, 3827, 3711, 3706, 3707, 3708, 3709, + 3711, 3885, 3705, 3827, 3709, 3710, 3707, 3708, 3710, 3710, + 3710, 3709, 3712, 3713, 3886, 3711, 3714, 3712, 3713, 3712, + 3715, 3714, 3887, 3716, 3712, 3715, 3712, 3713, 3716, 3717, + + 3869, 3869, 3888, 3714, 3717, 3716, 3716, 3718, 3719, 3720, + 3715, 3889, 3718, 3719, 3720, 3718, 3716, 3721, 3717, 3722, + 3891, 3723, 3721, 3722, 3722, 3723, 3723, 3724, 3725, 3725, + 3726, 3727, 3724, 3725, 3728, 3726, 3727, 3892, 3724, 3728, + 3892, 3724, 3728, 3900, 3726, 3729, 3730, 3730, 3727, 3729, + 3729, 3730, 3731, 3729, 3730, 3729, 3732, 3731, 3734, 3906, + 3907, 3732, 3734, 3734, 3729, 3730, 3734, 3735, 3734, 3736, + 3738, 3732, 3735, 3732, 3736, 3738, 3739, 3740, 3909, 3910, + 3735, 3739, 3740, 3736, 3738, 3741, 3846, 3742, 3757, 3739, + 3741, 3743, 3742, 3741, 3742, 3743, 3743, 3744, 3846, 3912, + + 3745, 3742, 3744, 3745, 3746, 3745, 3748, 3913, 3747, 3746, + 3749, 3748, 3744, 3747, 3747, 3749, 3751, 3746, 3752, 3753, + 3754, 3751, 3752, 3752, 3753, 3754, 3752, 3751, 3752, 3755, + 3756, 3755, 3915, 3758, 3755, 3756, 3757, 3755, 3758, 3753, + 3918, 3757, 3759, 3756, 3758, 3759, 3760, 3759, 3761, 3762, + 3757, 3760, 3761, 3761, 3762, 3763, 3919, 3762, 3917, 3768, + 3763, 3763, 3761, 3764, 3768, 3760, 3764, 3765, 3764, 3766, + 3920, 3765, 3765, 3766, 3766, 3767, 3769, 3917, 3921, 3767, + 3767, 3769, 3768, 3767, 3770, 3767, 3773, 3771, 3772, 3770, + 3922, 3773, 3771, 3772, 3923, 3774, 3774, 3775, 3769, 3771, + + 3774, 3772, 3775, 3776, 3925, 3777, 3778, 3781, 3776, 3770, + 3777, 3778, 3781, 3795, 3778, 3926, 3928, 3779, 3776, 3779, + 3778, 3781, 3779, 3775, 3782, 3783, 3784, 3785, 3782, 3782, + 3783, 3784, 3785, 3947, 3950, 3786, 3787, 3790, 3784, 3783, + 3786, 3787, 3790, 3916, 3788, 3790, 3916, 3787, 3788, 3788, + 3798, 3788, 3788, 3789, 3788, 3798, 3951, 3789, 3789, 3791, + 3797, 3791, 3792, 3791, 3791, 3797, 3792, 3792, 3952, 3793, + 3792, 3795, 3792, 3793, 3793, 3796, 3795, 3797, 3953, 3796, + 3796, 3799, 3792, 3794, 3800, 3802, 3799, 3801, 3801, 3800, + 3802, 3901, 3802, 3803, 3901, 3805, 3800, 3803, 3803, 3802, + + 3805, 3803, 3801, 3805, 3806, 3854, 3854, 3854, 3854, 3806, + 3794, 3794, 3794, 3803, 3954, 3794, 3804, 3794, 3794, 3806, + 3955, 3804, 3794, 3794, 3794, 3807, 3807, 3794, 3794, 3794, + 3807, 3804, 3794, 3808, 3804, 3958, 3809, 3959, 3808, 3807, + 3809, 3809, 3807, 3810, 3812, 3810, 3960, 3810, 3810, 3812, + 3811, 3810, 3984, 3810, 3811, 3811, 3901, 3812, 3810, 3831, + 3985, 3812, 3813, 3810, 3811, 3814, 3813, 3813, 3815, 3814, + 3814, 3816, 3817, 3815, 3819, 3820, 3816, 3817, 3821, 3819, + 3820, 3815, 3816, 3821, 3817, 3814, 3823, 4027, 3819, 3817, + 3823, 3823, 3824, 4168, 3825, 3826, 3824, 3824, 3825, 3825, + + 3826, 3828, 3825, 3845, 3825, 3828, 3828, 3829, 3845, 3826, + 3830, 3845, 3829, 3829, 3830, 3830, 3833, 3831, 3834, 4058, + 3835, 3833, 3831, 3834, 3835, 3835, 3929, 3833, 3837, 3929, + 3837, 3834, 4058, 3837, 3844, 3831, 3832, 3832, 3844, 3844, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, + 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3836, + 3838, 3841, 3839, 3842, 3836, 3841, 3841, 3839, 3842, 3841, + 3890, 3841, 3843, 3924, 3836, 3839, 3847, 3843, 3924, 4237, + 3847, 3847, 3848, 3842, 3847, 3893, 3847, 3848, 3893, 3843, + 4319, 3856, 3856, 3848, 3855, 3855, 3855, 3855, 3856, 3859, + 3894, 3903, 3983, 3894, 3875, 3875, 3859, 3856, 3856, 3856, + 3859, 3859, 3873, 3875, 4368, 3859, 3859, 3859, 3838, 3873, + 3914, 3948, 3838, 3838, 3873, 3914, 3948, 3983, 3873, 3873, + + 3873, 3895, 3896, 3914, 3895, 3896, 3838, 3897, 3898, 3899, + 3897, 3898, 3899, 3977, 3986, 3977, 3890, 3890, 3902, 3902, + 3902, 3902, 3903, 4295, 3902, 3904, 3904, 3904, 3904, 3904, + 3904, 4079, 4295, 4079, 3893, 3905, 3905, 3905, 3905, 3986, + 3930, 3905, 3894, 3930, 3931, 3932, 3933, 3931, 3932, 3933, + 3934, 3936, 3903, 3934, 3936, 3935, 3937, 3938, 3935, 3937, + 3938, 3939, 3940, 3904, 3939, 3940, 3896, 3943, 3941, 3942, + 3943, 3941, 3942, 3956, 3895, 3945, 3898, 3944, 3945, 3946, + 3944, 3898, 3946, 4007, 3957, 3949, 4007, 4399, 3897, 3899, + 3949, 3963, 3963, 3963, 3963, 4400, 3967, 3968, 3956, 3970, + + 3949, 3967, 3968, 3949, 3970, 3902, 3967, 4011, 3949, 3957, + 3933, 3964, 3964, 3964, 3964, 4121, 3931, 4121, 3932, 3930, + 3936, 3975, 3905, 3935, 3965, 3965, 3965, 3965, 3935, 4403, + 3969, 3934, 4011, 3942, 3940, 3969, 3976, 3971, 3972, 3964, + 3939, 3941, 3971, 3972, 3945, 3944, 3957, 3969, 3943, 3956, + 3944, 3971, 3946, 3961, 3966, 3966, 3966, 3966, 3973, 4358, + 3978, 3976, 3974, 3973, 3978, 3978, 3976, 3974, 4358, 3961, + 3961, 3961, 3961, 3961, 3961, 3974, 3994, 3979, 3961, 3975, + 4044, 3961, 3979, 4222, 3975, 3965, 4044, 3980, 3981, 4222, + 3965, 3979, 3980, 3981, 3979, 3982, 3965, 3965, 3980, 4409, + + 3982, 3981, 3965, 3987, 3980, 3988, 3989, 4164, 3987, 4164, + 3988, 3989, 3961, 4210, 3961, 3966, 4003, 4410, 3988, 3990, + 3966, 4003, 3987, 3991, 3990, 4210, 3961, 3992, 3991, 3961, + 3961, 4411, 3992, 3990, 3994, 4373, 3993, 3961, 3962, 3994, + 3991, 3993, 4003, 4177, 4373, 4177, 3995, 3993, 3994, 3992, + 3995, 3995, 4241, 4241, 3962, 3962, 3962, 3962, 3962, 3962, + 3995, 3993, 3996, 3962, 3997, 4413, 3962, 3996, 3997, 3997, + 3998, 4431, 3999, 4000, 3998, 3998, 3996, 3999, 4000, 4430, + 4001, 4012, 4430, 4002, 3998, 4001, 3999, 4002, 4002, 4015, + 4002, 4000, 4021, 4001, 4015, 4005, 3962, 3962, 4004, 3962, + + 4005, 3962, 4004, 4004, 4006, 4008, 4012, 4015, 4005, 4006, + 4008, 3962, 4020, 4432, 3962, 3962, 4009, 4020, 4006, 4008, + 4009, 4009, 3962, 4010, 4009, 4020, 4009, 4439, 4010, 4013, + 4013, 4013, 4013, 4014, 4442, 4443, 4016, 4010, 4014, 4014, + 4016, 4016, 4017, 4017, 4017, 4017, 4018, 4018, 4018, 4018, + 4021, 4022, 4023, 4034, 4037, 4021, 4022, 4023, 4014, 4024, + 4028, 4444, 4025, 4024, 4024, 4028, 4022, 4025, 4022, 4445, + 4025, 4031, 4023, 4026, 4018, 4031, 4031, 4026, 4026, 4037, + 4028, 4026, 4029, 4026, 4032, 4048, 4033, 4029, 4032, 4032, + 4013, 4033, 4026, 4033, 4013, 4013, 4446, 4029, 4030, 4042, + + 4033, 4029, 4030, 4030, 4042, 4035, 4030, 4447, 4030, 4035, + 4035, 4034, 4038, 4041, 4036, 4034, 4034, 4035, 4036, 4036, + 4040, 4043, 4045, 4035, 4040, 4040, 4043, 4052, 4038, 4038, + 4038, 4038, 4038, 4038, 4039, 4047, 4046, 4038, 4041, 4039, + 4047, 4046, 4054, 4048, 4039, 4060, 4064, 4045, 4048, 4047, + 4041, 4046, 4052, 4449, 4046, 4049, 4041, 4048, 4050, 4049, + 4049, 4048, 4050, 4050, 4051, 4051, 4051, 4051, 4063, 4049, + 4057, 4053, 4450, 4055, 4057, 4057, 4053, 4050, 4055, 4056, + 4056, 4056, 4056, 4051, 4051, 4051, 4051, 4051, 4051, 4053, + 4059, 4068, 4055, 4063, 4065, 4059, 4068, 4041, 4066, 4191, + + 4054, 4191, 4453, 4060, 4064, 4054, 4061, 4059, 4060, 4064, + 4061, 4061, 4062, 4062, 4062, 4062, 4062, 4062, 4069, 4065, + 4061, 4071, 4454, 4459, 4051, 4051, 4067, 4067, 4067, 4067, + 4051, 4072, 4070, 4073, 4056, 4072, 4072, 4070, 4073, 4073, + 4056, 4485, 4075, 4069, 4070, 4056, 4071, 4074, 4074, 4074, + 4074, 4078, 4238, 4077, 4062, 4076, 4066, 4081, 4077, 4062, + 4076, 4066, 4238, 4080, 4083, 4093, 4056, 4075, 4080, 4076, + 4077, 4062, 4452, 4459, 4082, 4089, 4078, 4080, 4082, 4082, + 4089, 4084, 4081, 4090, 4452, 4082, 4084, 4067, 4090, 4083, + 4093, 4486, 4067, 4084, 4085, 4085, 4085, 4085, 4091, 4086, + + 4086, 4086, 4086, 4091, 4078, 4092, 4094, 4095, 4074, 4094, + 4092, 4096, 4095, 4074, 4098, 4067, 4096, 4487, 4091, 4098, + 4435, 4207, 4074, 4207, 4092, 4096, 4074, 4086, 4087, 4087, + 4087, 4098, 4087, 4087, 4074, 4096, 4087, 4100, 4087, 4099, + 4097, 4097, 4097, 4097, 4099, 4101, 4102, 4102, 4103, 4107, + 4101, 4102, 4099, 4103, 4102, 4104, 4106, 4488, 4458, 4103, + 4104, 4106, 4101, 4104, 4114, 4108, 4110, 4094, 4097, 4114, + 4108, 4489, 4094, 4103, 4107, 4435, 4109, 4106, 4114, 4490, + 4109, 4109, 4094, 4108, 4109, 4100, 4109, 4111, 4100, 4100, + 4100, 4110, 4111, 4100, 4119, 4109, 4100, 4100, 4112, 4119, + + 4111, 4122, 4112, 4112, 4100, 4116, 4112, 4458, 4112, 4117, + 4116, 4470, 4116, 4100, 4117, 4470, 4116, 4118, 4116, 4116, + 4117, 4118, 4118, 4215, 4491, 4215, 4122, 4097, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, 4105, + 4105, 4113, 4113, 4113, 4113, 4115, 4120, 4123, 4125, 4455, + 4124, 4128, 4123, 4125, 4124, 4124, 4128, 4128, 4124, 4123, + 4124, 4126, 4126, 4127, 4434, 4126, 4126, 4127, 4127, 4129, + 4133, 4120, 4123, 4441, 4129, 4133, 4441, 4129, 4130, 4130, + 4130, 4130, 4131, 4131, 4131, 4131, 4134, 4134, 4134, 4134, + 4135, 4321, 4140, 4321, 4412, 4135, 4140, 4140, 4115, 4120, + 4137, 4138, 4113, 4115, 4412, 4137, 4138, 4113, 4115, 4135, + 4131, 4136, 4138, 4143, 4492, 4136, 4136, 4115, 4136, 4137, + + 4139, 4142, 4136, 4141, 4455, 4139, 4142, 4141, 4141, 4136, + 4144, 4493, 4145, 4460, 4436, 4144, 4145, 4145, 4143, 4142, + 4494, 4146, 4434, 4496, 4148, 4139, 4146, 4134, 4147, 4148, + 4147, 4148, 4134, 4147, 4149, 4150, 4146, 4151, 4149, 4149, + 4150, 4152, 4151, 4169, 4153, 4154, 4152, 4156, 4151, 4153, + 4154, 4163, 4156, 4150, 4438, 4152, 4155, 4154, 4153, 4155, + 4155, 4155, 4460, 4157, 4158, 4167, 4159, 4156, 4157, 4158, + 4157, 4159, 4178, 4436, 4160, 4157, 4163, 4157, 4158, 4160, + 4161, 4160, 4162, 4159, 4165, 4161, 4175, 4162, 4160, 4165, + 4167, 4166, 4171, 4469, 4162, 4162, 4166, 4171, 4165, 4497, + + 4161, 4169, 4498, 4186, 4163, 4162, 4169, 4170, 4165, 4172, + 4166, 4175, 4170, 4438, 4172, 4170, 4172, 4173, 4167, 4474, + 4174, 4176, 4173, 4172, 4174, 4174, 4176, 4179, 4186, 4474, + 4178, 4499, 4179, 4500, 4178, 4178, 4180, 4181, 4179, 4181, + 4180, 4180, 4181, 4182, 4183, 4469, 4184, 4187, 4182, 4183, + 4184, 4184, 4187, 4190, 4182, 4196, 4189, 4198, 4183, 4187, + 4501, 4189, 4183, 4185, 4185, 4185, 4185, 4503, 4504, 4188, + 4189, 4192, 4187, 4188, 4188, 4478, 4192, 4188, 4190, 4188, + 4196, 4193, 4198, 4199, 4192, 4193, 4193, 4188, 4199, 4193, + 4192, 4193, 4194, 4194, 4195, 4206, 4505, 4194, 4197, 4195, + + 4199, 4193, 4212, 4197, 4478, 4507, 4190, 4509, 4195, 4197, + 4197, 4200, 4216, 4201, 4478, 4197, 4200, 4201, 4201, 4200, + 4206, 4201, 4510, 4201, 4185, 4202, 4202, 4212, 4185, 4185, + 4202, 4205, 4201, 4202, 4512, 4185, 4205, 4216, 4185, 4205, + 4213, 4185, 4203, 4513, 4202, 4213, 4203, 4203, 4206, 4506, + 4203, 4214, 4203, 4213, 4204, 4204, 4204, 4404, 4404, 4204, + 4506, 4203, 4204, 4208, 4208, 4208, 4208, 4220, 4204, 4209, + 4221, 4204, 4204, 4204, 4209, 4211, 4214, 4514, 4517, 4211, + 4211, 4479, 4217, 4211, 4209, 4211, 4209, 4217, 4218, 4219, + 4217, 4479, 4220, 4218, 4219, 4221, 4217, 4223, 4480, 4518, + + 4224, 4225, 4223, 4219, 4214, 4224, 4225, 4226, 4480, 4227, + 4236, 4223, 4226, 4224, 4227, 4226, 4227, 4228, 4244, 4524, + 4404, 4525, 4228, 4227, 4208, 4228, 4229, 4230, 4526, 4208, + 4229, 4229, 4230, 4231, 4232, 4236, 4231, 4559, 4231, 4232, + 4233, 4235, 4230, 4234, 4251, 4233, 4235, 4232, 4234, 4234, + 4239, 4240, 4233, 4242, 4245, 4239, 4240, 4243, 4242, 4245, + 4255, 4243, 4243, 4239, 4242, 4243, 4257, 4243, 4246, 4247, + 4563, 4244, 4254, 4246, 4247, 4248, 4244, 4254, 4249, 4258, + 4248, 4244, 4249, 4249, 4252, 4254, 4252, 4247, 4246, 4252, + 4244, 4264, 4252, 4248, 4250, 4250, 4250, 4250, 4253, 4567, + + 4256, 4568, 4251, 4253, 4258, 4256, 4251, 4251, 4255, 4253, + 4251, 4256, 4251, 4255, 4269, 4260, 4255, 4529, 4259, 4260, + 4260, 4262, 4255, 4259, 4257, 4262, 4262, 4529, 4257, 4257, + 4551, 4261, 4259, 4263, 4261, 4259, 4261, 4578, 4263, 4269, + 4267, 4464, 4265, 4464, 4264, 4267, 4265, 4265, 4267, 4264, + 4551, 4464, 4263, 4264, 4264, 4250, 4250, 4584, 4613, 4266, + 4250, 4265, 4268, 4266, 4266, 4272, 4250, 4268, 4268, 4272, + 4272, 4270, 4250, 4266, 4270, 4273, 4270, 4274, 4275, 4273, + 4273, 4274, 4274, 4275, 4282, 4274, 4276, 4274, 4276, 4275, + 4277, 4276, 4278, 4280, 4279, 4277, 4639, 4278, 4280, 4279, + + 4281, 4277, 4283, 4292, 4305, 4281, 4285, 4283, 4284, 4282, + 4302, 4285, 4286, 4284, 4281, 4278, 4279, 4286, 4280, 4285, + 4284, 4283, 4288, 4288, 4289, 4290, 4291, 4288, 4292, 4289, + 4290, 4291, 4294, 4293, 4294, 4302, 4304, 4294, 4293, 4296, + 4290, 4293, 4579, 4301, 4296, 4579, 4315, 4293, 4301, 4298, + 4289, 4297, 4318, 4296, 4298, 4297, 4297, 4298, 4299, 4300, + 4303, 4304, 4305, 4299, 4300, 4303, 4650, 4305, 4306, 4307, + 4308, 4300, 4299, 4306, 4307, 4308, 4303, 4318, 4309, 4323, + 4326, 4308, 4309, 4309, 4465, 4309, 4309, 4310, 4309, 4311, + 4312, 4310, 4310, 4311, 4311, 4312, 4693, 4320, 4312, 4313, + + 4313, 4313, 4313, 4314, 4315, 4318, 4333, 4325, 4314, 4315, + 4316, 4727, 4316, 4314, 4316, 4316, 4317, 4728, 4731, 4327, + 4317, 4317, 4320, 4322, 4317, 4324, 4317, 4322, 4322, 4324, + 4324, 4322, 4325, 4322, 4329, 4330, 4317, 4323, 4326, 4734, + 4330, 4323, 4323, 4326, 4327, 4336, 4465, 4331, 4332, 4330, + 4320, 4331, 4331, 4332, 4405, 4405, 4465, 4334, 4783, 4329, + 4313, 4334, 4334, 4335, 4333, 4313, 4332, 4337, 4335, 4333, + 4336, 4338, 4337, 4339, 4313, 4328, 4338, 4789, 4339, 4342, + 4335, 4341, 4341, 4344, 4342, 4339, 4342, 4348, 4344, 4345, + 4414, 4414, 4348, 4342, 4345, 4344, 4341, 4345, 4344, 4794, + + 4355, 4344, 4328, 4328, 4328, 4355, 4362, 4328, 4795, 4328, + 4328, 4362, 4346, 4355, 4328, 4328, 4328, 4346, 4405, 4328, + 4328, 4328, 4340, 4340, 4328, 4340, 4340, 4346, 4340, 4796, + 4732, 4349, 4340, 4340, 4340, 4349, 4349, 4732, 4340, 4340, + 4340, 4340, 4340, 4343, 4347, 4347, 4798, 4343, 4343, 4347, + 4359, 4343, 4350, 4414, 4350, 4359, 4350, 4350, 4347, 4720, + 4350, 4347, 4350, 4343, 4359, 4351, 4364, 4350, 4350, 4351, + 4351, 4352, 4350, 4353, 4720, 4360, 4352, 4353, 4353, 4351, + 4360, 4354, 4356, 4802, 4352, 4354, 4354, 4356, 4352, 4361, + 4357, 4364, 4360, 4356, 4361, 4357, 4804, 4805, 4363, 4367, + + 4375, 4354, 4357, 4363, 4367, 4375, 4375, 4357, 4369, 4363, + 4370, 4361, 4369, 4369, 4370, 4370, 4371, 4372, 4807, 4808, + 4371, 4371, 4372, 4363, 4371, 4374, 4371, 4389, 4376, 4374, + 4374, 4372, 4376, 4376, 4377, 4521, 4378, 4390, 4809, 4377, + 4378, 4378, 4390, 4378, 4378, 4379, 4416, 4416, 4390, 4377, + 4379, 4380, 4379, 4381, 4395, 4380, 4380, 4387, 4381, 4380, + 4381, 4380, 4382, 4382, 4382, 4382, 4383, 4381, 4398, 4401, + 4810, 4383, 4384, 4384, 4384, 4384, 4385, 4385, 4385, 4385, + 4383, 4391, 4387, 4392, 4383, 4389, 4391, 4392, 4392, 4803, + 4389, 4393, 4803, 4394, 4391, 4394, 4393, 4396, 4394, 4389, + + 4407, 4396, 4396, 4397, 4385, 4407, 4393, 4416, 4397, 4812, + 4397, 4523, 4395, 4448, 4440, 4397, 4395, 4395, 4448, 4407, + 4417, 4521, 4397, 4382, 4515, 4417, 4398, 4401, 4382, 4440, + 4395, 4398, 4401, 4440, 4467, 4515, 4523, 4813, 4467, 4417, + 4815, 4382, 4388, 4388, 4467, 4817, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, + 4388, 4388, 4388, 4388, 4388, 4402, 4415, 4415, 4402, 4402, + 4437, 4402, 4406, 4406, 4406, 4406, 4419, 4530, 4520, 4520, + 4818, 4419, 4402, 4402, 4402, 4402, 4408, 4530, 4419, 4419, + 4408, 4408, 4421, 4418, 4408, 4729, 4408, 4421, 4533, 4419, + 4422, 4729, 4822, 4564, 4422, 4422, 4408, 4564, 4422, 4429, + 4422, 4421, 4429, 4423, 4423, 4722, 4423, 4429, 4653, 4463, + 4422, 4531, 4653, 4533, 4823, 4437, 4476, 4406, 4423, 4463, + + 4415, 4531, 4437, 4406, 4463, 4476, 4476, 4824, 4406, 4476, + 4722, 4406, 4520, 4437, 4418, 4418, 4418, 4466, 4825, 4418, + 4466, 4406, 4418, 4418, 4466, 4471, 4468, 4466, 4468, 4471, + 4418, 4466, 4468, 4681, 4826, 4471, 4429, 4681, 4468, 4418, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4827, 4420, 4420, + + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, + 4420, 4420, 4420, 4424, 4821, 4532, 4424, 4424, 4425, 4424, + 4426, 4425, 4425, 4426, 4425, 4532, 4427, 4828, 4426, 4427, + 4424, 4424, 4424, 4424, 4427, 4425, 4425, 4425, 4425, 4428, + 4433, 4481, 4428, 4733, 4456, 4733, 4433, 4428, 4481, 4477, + 4585, 4481, 4433, 4433, 4457, 4433, 4537, 4550, 4433, 4433, + 4456, 4456, 4456, 4456, 4456, 4456, 4537, 4550, 4473, 4456, + 4457, 4457, 4457, 4457, 4457, 4457, 4472, 4475, 4552, 4457, + + 4472, 4482, 4472, 4829, 4830, 4475, 4472, 4475, 4552, 4482, + 4475, 4482, 4472, 4519, 4483, 4427, 4473, 4473, 4821, 4473, + 4833, 4483, 4473, 4473, 4483, 4534, 4522, 4473, 4473, 4426, + 4535, 4477, 4473, 4473, 4473, 4427, 4457, 4473, 4511, 4511, + 4456, 4477, 4516, 4516, 4835, 4511, 4585, 4516, 4428, 4461, + 4516, 4522, 4836, 4541, 4511, 4511, 4511, 4541, 4516, 4541, + 4587, 4536, 4519, 4541, 4541, 4461, 4461, 4461, 4461, 4461, + 4461, 4536, 4837, 4771, 4461, 4519, 4536, 4461, 4527, 4527, + 4527, 4527, 4527, 4527, 4540, 4538, 4540, 4534, 4522, 4539, + 4547, 4838, 4535, 4540, 4547, 4538, 4540, 4534, 4771, 4542, + + 4547, 4542, 4535, 4538, 4544, 4545, 4544, 4839, 4461, 4588, + 4461, 4542, 4461, 4554, 4543, 4545, 4544, 4543, 4543, 4545, + 4461, 4587, 4461, 4554, 4527, 4461, 4461, 4462, 4543, 4548, + 4546, 4546, 4546, 4546, 4831, 4580, 4587, 4831, 4580, 4548, + 4548, 4840, 4539, 4462, 4462, 4462, 4462, 4462, 4462, 4549, + 4553, 4539, 4462, 4555, 4553, 4462, 4556, 4555, 4841, 4549, + 4553, 4539, 4558, 4580, 4549, 4588, 4556, 4555, 4557, 4557, + 4832, 4569, 4558, 4539, 4570, 4558, 4590, 4570, 4589, 4557, + 4565, 4565, 4565, 4565, 4832, 4588, 4462, 4570, 4462, 4462, + 4462, 4560, 4560, 4560, 4560, 4546, 4820, 4546, 4571, 4462, + + 4462, 4844, 4820, 4462, 4462, 4546, 4562, 4571, 4571, 4546, + 4560, 4560, 4560, 4560, 4560, 4560, 4845, 4546, 4561, 4561, + 4561, 4561, 4562, 4562, 4562, 4562, 4562, 4562, 4586, 4846, + 4591, 4562, 4590, 4569, 4600, 4565, 4847, 4561, 4561, 4561, + 4561, 4561, 4561, 4569, 4572, 4589, 4561, 4566, 4566, 4566, + 4566, 4849, 4590, 4592, 4589, 4569, 4856, 4857, 4574, 4600, + 4572, 4572, 4572, 4572, 4572, 4572, 4573, 4565, 4574, 4572, + 4573, 4576, 4582, 4575, 4577, 4566, 4573, 4575, 4583, 4858, + 4586, 4576, 4582, 4575, 4577, 4577, 4591, 4600, 4583, 4583, + 4586, 4594, 4583, 4595, 4859, 4594, 4612, 4595, 4597, 4597, + + 4602, 4592, 4566, 4595, 4586, 4594, 4591, 4596, 4592, 4597, + 4602, 4596, 4598, 4596, 4599, 4603, 4604, 4596, 4616, 4603, + 4592, 4612, 4598, 4598, 4599, 4603, 4604, 4599, 4616, 4592, + 4601, 4601, 4601, 4601, 4566, 4608, 4605, 4617, 4601, 4605, + 4606, 4606, 4607, 4609, 4860, 4608, 4607, 4617, 4606, 4605, + 4862, 4606, 4609, 4609, 4610, 4610, 4607, 4608, 4601, 4607, + 4611, 4614, 4615, 4863, 4610, 4614, 4615, 4618, 4615, 4611, + 4611, 4614, 4615, 4612, 4621, 4621, 4864, 4618, 4619, 4619, + 4619, 4619, 4620, 4622, 4621, 4623, 4620, 4624, 4620, 4625, + 4626, 4601, 4620, 4622, 4626, 4623, 4626, 4624, 4625, 4625, + + 4626, 4627, 4628, 4628, 4630, 4629, 4629, 4631, 4632, 4601, + 4643, 4627, 4866, 4628, 4630, 4627, 4629, 4631, 4632, 4633, + 4634, 4634, 4633, 4635, 4636, 4636, 4637, 4867, 4638, 4640, + 4648, 4634, 4869, 4635, 4619, 4636, 4637, 4641, 4638, 4640, + 4648, 4637, 4638, 4619, 4640, 4773, 4642, 4641, 4641, 4644, + 4662, 4645, 4644, 4619, 4642, 4645, 4642, 4649, 4649, 4644, + 4646, 4645, 4800, 4655, 4646, 4870, 4644, 4649, 4647, 4647, + 4773, 4800, 4643, 4655, 4646, 4647, 4651, 4646, 4647, 4652, + 4651, 4654, 4643, 4656, 4633, 4654, 4657, 4656, 4652, 4652, + 4651, 4654, 4658, 4656, 4633, 4659, 4657, 4664, 4660, 4661, + + 4657, 4868, 4658, 4662, 4868, 4659, 4660, 4664, 4660, 4661, + 4658, 4663, 4662, 4665, 4660, 4666, 4661, 4665, 4667, 4666, + 4663, 4663, 4662, 4668, 4669, 4670, 4671, 4665, 4667, 4666, + 4675, 4871, 4670, 4668, 4669, 4670, 4671, 4672, 4674, 4671, + 4675, 4672, 4673, 4673, 4676, 4679, 4675, 4672, 4674, 4674, + 4677, 4677, 4680, 4673, 4676, 4679, 4682, 4684, 4682, 4872, + 4679, 4677, 4680, 4685, 4673, 4688, 4680, 4684, 4682, 4683, + 4683, 4686, 4686, 4685, 4687, 4688, 4690, 4687, 4704, 4689, + 4683, 4689, 4686, 4694, 4843, 4691, 4690, 4687, 4687, 4691, + 4692, 4689, 4695, 4694, 4692, 4691, 4696, 4697, 4694, 4698, + + 4699, 4843, 4695, 4695, 4692, 4700, 4696, 4697, 4701, 4698, + 4699, 4701, 4697, 4702, 4700, 4700, 4699, 4702, 4698, 4703, + 4873, 4701, 4705, 4702, 4706, 4706, 4708, 4707, 4711, 4703, + 4703, 4707, 4705, 4709, 4706, 4709, 4708, 4704, 4711, 4710, + 4704, 4707, 4710, 4712, 4713, 4709, 4709, 4714, 4713, 4713, + 4704, 4715, 4710, 4712, 4704, 4717, 4842, 4714, 4713, 4716, + 4716, 4715, 4874, 4718, 4842, 4717, 4715, 4723, 4735, 4875, + 4716, 4718, 4719, 4718, 4719, 4719, 4876, 4723, 4719, 4721, + 4719, 4719, 4724, 4721, 4719, 4725, 4724, 4726, 4877, 4721, + 4736, 4726, 4730, 4730, 4736, 4725, 4724, 4726, 4725, 4735, + + 4736, 4737, 4738, 4739, 4878, 4880, 4738, 4740, 4884, 4735, + 4730, 4737, 4737, 4739, 4741, 4740, 4738, 4740, 4742, 4739, + 4882, 4743, 4741, 4743, 4741, 4799, 4882, 4743, 4742, 4743, + 4744, 4745, 4742, 4743, 4746, 4745, 4746, 4744, 4746, 4747, + 4744, 4745, 4887, 4748, 4749, 4750, 4755, 4750, 4746, 4747, + 4751, 4888, 4747, 4748, 4749, 4750, 4755, 4888, 4750, 4749, + 4751, 4753, 4752, 4751, 4752, 4755, 4754, 4756, 4753, 4754, + 4889, 4753, 4758, 4756, 4752, 4752, 4757, 4756, 4799, 4754, + 4759, 4759, 4758, 4757, 4760, 4758, 4757, 4760, 4761, 4762, + 4768, 4759, 4763, 4890, 4760, 4764, 4881, 4760, 4761, 4762, + + 4762, 4766, 4763, 4763, 4765, 4764, 4765, 4761, 4891, 4799, + 4766, 4766, 4776, 4881, 4764, 4768, 4765, 4767, 4767, 4767, + 4767, 4769, 4776, 4777, 4777, 4769, 4778, 4769, 4779, 4892, + 4778, 4769, 4769, 4780, 4777, 4781, 4893, 4784, 4779, 4777, + 4778, 4785, 4782, 4780, 4786, 4781, 4782, 4784, 4782, 4787, + 4788, 4785, 4782, 4894, 4786, 4811, 4785, 4801, 4896, 4787, + 4788, 4801, 4897, 4801, 4819, 4811, 4848, 4768, 4801, 4806, + 4806, 4806, 4806, 4834, 4819, 4898, 4848, 4834, 4899, 4834, + 4850, 4900, 4767, 4885, 4850, 4879, 4850, 4854, 4854, 4854, + 4854, 4855, 4767, 4885, 4861, 4855, 4886, 4855, 4861, 4879, + + 4861, 4895, 4901, 4902, 4767, 4790, 4901, 4903, 4904, 4895, + 4886, 4905, 4906, 4907, 4909, 4897, 4908, 4910, 4911, 4912, + 4913, 4790, 4790, 4790, 4790, 4790, 4790, 4914, 4915, 4916, + 4790, 4917, 4919, 4790, 4915, 4920, 4806, 4921, 4908, 4924, + 4923, 4914, 4923, 4854, 4925, 4926, 4927, 4928, 4806, 4929, + 4930, 4921, 4931, 4932, 4933, 4934, 4806, 4935, 4936, 4926, + 4937, 4927, 4939, 4940, 4790, 4941, 4790, 4942, 4943, 4944, + 4945, 4946, 4947, 4948, 4949, 4950, 4946, 4951, 4790, 4954, + 4942, 4790, 4790, 4791, 4952, 4956, 4952, 4952, 4957, 4953, + 4952, 4958, 4952, 4952, 4953, 4959, 4960, 4961, 4962, 4791, + + 4791, 4791, 4791, 4791, 4791, 4963, 4964, 4965, 4791, 4966, + 4967, 4791, 4967, 4968, 4971, 4972, 4967, 4969, 4967, 4937, + 4970, 4969, 4970, 4966, 4973, 4975, 4974, 4976, 4977, 4978, + 4979, 4980, 4981, 4982, 4983, 4977, 4937, 4974, 4984, 4985, + 4976, 4986, 4791, 4987, 4791, 4988, 4989, 4990, 4984, 4991, + 4991, 4991, 4991, 4994, 4995, 4996, 4791, 4992, 4997, 4791, + 4791, 4992, 4999, 4992, 5001, 5003, 4998, 5004, 4992, 4994, + 4998, 5006, 4998, 5005, 5005, 5005, 5005, 5007, 5008, 5009, + 5010, 5011, 5012, 5013, 5015, 5014, 5016, 5017, 5018, 5019, + 5019, 5019, 5019, 5020, 5020, 5020, 5020, 5021, 5022, 5023, + + 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, + 5034, 5035, 5036, 5034, 5037, 5038, 5039, 5040, 5041, 5034, + 5042, 5041, 5043, 5044, 5037, 5045, 5047, 5048, 5049, 5050, + 5051, 5052, 5053, 5054, 5055, 5056, 4991, 5055, 5057, 5058, + 5005, 5059, 5060, 5055, 5014, 5061, 5062, 5063, 5064, 5045, + 5066, 5067, 5005, 5065, 5065, 5065, 5065, 5068, 5069, 5070, + 5005, 5014, 5071, 5072, 5073, 5076, 5077, 5078, 5079, 5077, + 5080, 5081, 5079, 5020, 5082, 5082, 5082, 5082, 5083, 5083, + 5083, 5083, 5085, 5086, 5083, 5089, 5090, 5091, 5092, 5093, + 5093, 5093, 5093, 5094, 5096, 5095, 5097, 5098, 5099, 5101, + + 5103, 5099, 5102, 5104, 5107, 5108, 5100, 5109, 5108, 5110, + 5111, 5114, 5115, 5116, 5117, 5115, 5118, 5119, 5121, 5122, + 5123, 5125, 5081, 5109, 5126, 5124, 5127, 5128, 5139, 5116, + 5130, 5130, 5130, 5130, 5131, 5131, 5131, 5131, 5149, 5150, + 5065, 5133, 5133, 5133, 5133, 5093, 5125, 5179, 5157, 5181, + 5124, 5204, 5081, 5139, 5205, 5094, 5233, 5234, 5257, 5098, + 5259, 5082, 5131, 5101, 5196, 5083, 5100, 5261, 5264, 5265, + 5090, 5095, 5102, 5157, 5181, 5266, 5093, 5094, 5096, 5095, + 5097, 5098, 5100, 5101, 5268, 5099, 5102, 5124, 5208, 5196, + 5100, 5129, 5134, 5134, 5134, 5134, 5135, 5135, 5135, 5135, + + 5136, 5136, 5136, 5136, 5283, 5284, 5321, 5129, 5129, 5129, + 5129, 5129, 5129, 5208, 5322, 5325, 5129, 5349, 5350, 5129, + 5137, 5137, 5137, 5137, 5138, 5138, 5138, 5138, 5140, 5140, + 5140, 5140, 5374, 5141, 5141, 5141, 5141, 5142, 5142, 5142, + 5142, 5143, 5143, 5143, 5143, 5144, 5144, 5144, 5144, 5375, + 5129, 5380, 5129, 5145, 5145, 5145, 5145, 5146, 5146, 5146, + 5146, 5381, 5215, 5399, 5129, 5400, 5401, 5129, 5129, 5132, + 5132, 5132, 5132, 5147, 5147, 5147, 5147, 5407, 5136, 5148, + 5148, 5148, 5148, 5151, 5151, 5151, 5151, 5215, 5132, 5132, + 5132, 5132, 5132, 5132, 5141, 5429, 5473, 5132, 5141, 5221, + + 5132, 5152, 5152, 5152, 5152, 5153, 5153, 5153, 5153, 5154, + 5154, 5154, 5154, 5474, 5144, 5475, 5501, 5225, 5145, 5143, + 5155, 5155, 5155, 5155, 5221, 5226, 5146, 5156, 5156, 5156, + 5156, 5132, 5503, 5132, 5158, 5158, 5158, 5158, 5159, 5159, + 5159, 5159, 5225, 5504, 5151, 5132, 5576, 5577, 5132, 5132, + 5226, 5588, 5590, 5147, 5160, 5160, 5160, 5160, 5151, 5161, + 5161, 5161, 5161, 5162, 5162, 5162, 5162, 5163, 5163, 5163, + 5163, 5164, 5164, 5164, 5164, 5165, 5165, 5165, 5165, 5166, + 5166, 5166, 5166, 5591, 5154, 5167, 5167, 5167, 5167, 5168, + 5168, 5168, 5168, 5502, 5155, 5169, 5169, 5169, 5169, 5498, + + 5502, 5498, 5156, 5170, 5170, 5170, 5170, 5171, 5171, 5171, + 5171, 5172, 5172, 5172, 5172, 5161, 5173, 5173, 5173, 5173, + 5505, 5159, 5174, 5174, 5174, 5174, 5162, 5175, 5175, 5175, + 5175, 5505, 5163, 5592, 5164, 5162, 5163, 5587, 5163, 5176, + 5176, 5176, 5176, 5163, 5499, 5267, 5161, 5587, 5499, 5267, + 5168, 5267, 5593, 5168, 5499, 5175, 5177, 5177, 5177, 5177, + 5178, 5178, 5178, 5178, 5326, 5594, 5170, 5180, 5180, 5180, + 5180, 5182, 5182, 5182, 5182, 5183, 5183, 5183, 5183, 5169, + 5184, 5184, 5184, 5184, 5244, 5172, 5171, 5244, 5600, 5326, + 5173, 5185, 5185, 5185, 5185, 5333, 5607, 5172, 5186, 5186, + + 5186, 5186, 5187, 5187, 5187, 5187, 5188, 5188, 5188, 5188, + 5608, 5609, 5244, 5176, 5189, 5189, 5189, 5189, 5586, 5610, + 5333, 5177, 5586, 5248, 5586, 5177, 5612, 5177, 5177, 5190, + 5190, 5190, 5190, 5614, 5180, 5191, 5191, 5191, 5191, 5178, + 5182, 5615, 5192, 5192, 5192, 5192, 5180, 5193, 5193, 5193, + 5193, 5183, 5616, 5616, 5180, 5194, 5194, 5194, 5194, 5506, + 5184, 5195, 5195, 5195, 5195, 5506, 5185, 5187, 5197, 5197, + 5197, 5197, 5506, 5186, 5198, 5198, 5198, 5198, 5199, 5199, + 5199, 5199, 5188, 5186, 5200, 5200, 5200, 5200, 5248, 5620, + 5189, 5621, 5417, 5276, 5190, 5201, 5201, 5201, 5201, 5248, + + 5622, 5190, 5251, 5423, 5191, 5206, 5206, 5206, 5206, 5459, + 5191, 5192, 5193, 5207, 5207, 5207, 5207, 5417, 5276, 5194, + 5209, 5209, 5209, 5209, 5210, 5210, 5210, 5210, 5423, 5197, + 5211, 5211, 5211, 5211, 5459, 5214, 5214, 5214, 5214, 5198, + 5623, 5500, 5500, 5198, 5500, 5198, 5276, 5469, 5213, 5624, + 5251, 5199, 5216, 5216, 5216, 5216, 5199, 5625, 5251, 5198, + 5212, 5212, 5212, 5212, 5213, 5213, 5213, 5213, 5213, 5213, + 5206, 5626, 5469, 5213, 5206, 5201, 5206, 5207, 5251, 5212, + 5212, 5212, 5212, 5212, 5212, 5209, 5611, 5627, 5212, 5209, + 5611, 5209, 5611, 5598, 5628, 5211, 5217, 5217, 5217, 5217, + + 5214, 5477, 5210, 5598, 5214, 5211, 5214, 5218, 5218, 5218, + 5218, 5219, 5219, 5219, 5219, 5220, 5220, 5220, 5220, 5223, + 5632, 5216, 5613, 5629, 5217, 5406, 5477, 5216, 5222, 5222, + 5222, 5222, 5613, 5617, 5617, 5223, 5223, 5223, 5223, 5223, + 5223, 5582, 5582, 5636, 5223, 5224, 5224, 5224, 5224, 5637, + 5406, 5217, 5227, 5227, 5227, 5227, 5228, 5228, 5228, 5228, + 5229, 5229, 5229, 5229, 5230, 5230, 5230, 5230, 5231, 5231, + 5231, 5231, 5232, 5232, 5232, 5232, 5219, 5220, 5406, 5640, + 5219, 5632, 5219, 5217, 5235, 5235, 5235, 5235, 5236, 5236, + 5236, 5236, 5219, 5629, 5218, 5237, 5237, 5237, 5237, 5479, + + 5631, 5493, 5222, 5238, 5238, 5238, 5238, 5239, 5239, 5239, + 5239, 5641, 5250, 5582, 5224, 5554, 5644, 5227, 5240, 5240, + 5240, 5240, 5249, 5258, 5479, 5229, 5493, 5258, 5633, 5230, + 5646, 5596, 5596, 5230, 5228, 5230, 5241, 5241, 5241, 5241, + 5554, 5232, 5242, 5242, 5242, 5242, 5647, 5649, 5258, 5236, + 5243, 5243, 5243, 5243, 5245, 5245, 5245, 5245, 5235, 5650, + 5237, 5555, 5428, 5651, 5238, 5246, 5246, 5246, 5246, 5247, + 5247, 5247, 5247, 5250, 5249, 5630, 5250, 5631, 5249, 5252, + 5252, 5252, 5252, 5633, 5249, 5670, 5555, 5428, 5250, 5253, + 5253, 5253, 5253, 5254, 5254, 5254, 5254, 5652, 5249, 5255, + + 5255, 5255, 5255, 5596, 5240, 5256, 5256, 5256, 5256, 5269, + 5269, 5269, 5269, 5565, 5241, 5428, 5575, 5579, 5242, 5274, + 5274, 5274, 5274, 5579, 5602, 5243, 5282, 5282, 5282, 5282, + 5579, 5630, 5680, 5245, 5285, 5285, 5285, 5285, 5565, 5645, + 5246, 5575, 5645, 5681, 5252, 5247, 5603, 5274, 5247, 5602, + 5253, 5297, 5297, 5297, 5297, 5298, 5298, 5298, 5298, 5661, + 5660, 5684, 5254, 5661, 5253, 5299, 5299, 5299, 5299, 5652, + 5660, 5603, 5256, 5660, 5255, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5270, 5270, 5270, 5270, 5271, 5271, + 5271, 5271, 5272, 5272, 5272, 5272, 5273, 5273, 5273, 5273, + 5275, 5275, 5275, 5275, 5277, 5277, 5277, 5277, 5278, 5278, + 5278, 5278, 5279, 5279, 5279, 5279, 5280, 5280, 5280, 5280, + 5281, 5281, 5281, 5281, 5655, 5286, 5286, 5286, 5286, 5287, + + 5287, 5287, 5287, 5288, 5288, 5288, 5288, 5289, 5289, 5289, + 5289, 5663, 5290, 5290, 5290, 5290, 5581, 5581, 5666, 5270, + 5663, 5656, 5685, 5270, 5668, 5270, 5272, 5291, 5291, 5291, + 5291, 5595, 5595, 5271, 5657, 5666, 5634, 5271, 5655, 5277, + 5668, 5673, 5273, 5292, 5292, 5292, 5292, 5278, 5275, 5688, + 5672, 5690, 5281, 5293, 5293, 5293, 5293, 5279, 5280, 5286, + 5287, 5294, 5294, 5294, 5294, 5672, 5673, 5286, 5657, 5635, + 5656, 5292, 5295, 5295, 5295, 5295, 5664, 5287, 5290, 5664, + 5581, 5289, 5296, 5296, 5296, 5296, 5300, 5300, 5300, 5300, + 5288, 5301, 5301, 5301, 5301, 5595, 5634, 5302, 5302, 5302, + + 5302, 5291, 5303, 5303, 5303, 5303, 5304, 5304, 5304, 5304, + 5305, 5305, 5305, 5305, 5306, 5306, 5306, 5306, 5293, 5308, + 5308, 5308, 5308, 5292, 5307, 5307, 5307, 5307, 5293, 5635, + 5294, 5677, 5309, 5309, 5309, 5309, 5665, 5295, 5691, 5665, + 5677, 5295, 5300, 5295, 5310, 5310, 5310, 5310, 5311, 5311, + 5311, 5311, 5312, 5312, 5312, 5312, 5301, 5296, 5692, 5667, + 5301, 5296, 5301, 5302, 5674, 5675, 5693, 5303, 5694, 5571, + 5695, 5304, 5667, 5696, 5667, 5305, 5313, 5313, 5313, 5313, + 5314, 5314, 5314, 5314, 5315, 5315, 5315, 5315, 5306, 5307, + 5697, 5682, 5698, 5307, 5571, 5307, 5309, 5682, 5308, 5316, + + 5316, 5316, 5316, 5317, 5317, 5317, 5317, 5699, 5310, 5318, + 5318, 5318, 5318, 5319, 5319, 5319, 5319, 5312, 5320, 5320, + 5320, 5320, 5323, 5323, 5323, 5323, 5324, 5324, 5324, 5324, + 5327, 5327, 5327, 5327, 5700, 5328, 5328, 5328, 5328, 5674, + 5675, 5313, 5329, 5329, 5329, 5329, 5571, 5701, 5315, 5330, + 5330, 5330, 5330, 5331, 5331, 5331, 5331, 5676, 5332, 5332, + 5332, 5332, 5703, 5618, 5316, 5334, 5334, 5334, 5334, 5335, + 5335, 5335, 5335, 5318, 5336, 5336, 5336, 5336, 5337, 5337, + 5337, 5337, 5338, 5338, 5338, 5338, 5339, 5339, 5339, 5339, + 5678, 5704, 5686, 5319, 5705, 5706, 5707, 5320, 5686, 5678, + + 5708, 5324, 5340, 5340, 5340, 5340, 5341, 5341, 5341, 5341, + 5327, 5328, 5342, 5342, 5342, 5342, 5709, 5710, 5702, 5332, + 5713, 5711, 5330, 5332, 5343, 5343, 5343, 5343, 5618, 5714, + 5334, 5711, 5676, 5715, 5341, 5344, 5344, 5344, 5344, 5336, + 5345, 5345, 5345, 5345, 5618, 5336, 5716, 5338, 5717, 5712, + 5718, 5338, 5719, 5338, 5339, 5346, 5346, 5346, 5346, 5347, + 5347, 5347, 5347, 5348, 5348, 5348, 5348, 5712, 5339, 5351, + 5351, 5351, 5351, 5352, 5352, 5352, 5352, 5353, 5353, 5353, + 5353, 5354, 5354, 5354, 5354, 5355, 5355, 5355, 5355, 5723, + 5342, 5356, 5356, 5356, 5356, 5702, 5725, 5357, 5357, 5357, + + 5357, 5343, 5578, 5727, 5344, 5358, 5358, 5358, 5358, 5345, + 5359, 5359, 5359, 5359, 5360, 5360, 5360, 5360, 5361, 5361, + 5361, 5361, 5731, 5733, 5347, 5721, 5721, 5578, 5347, 5722, + 5347, 5362, 5362, 5362, 5362, 5351, 5363, 5363, 5363, 5363, + 5742, 5348, 5354, 5364, 5364, 5364, 5364, 5662, 5352, 5597, + 5597, 5355, 5352, 5353, 5722, 5755, 5356, 5355, 5357, 5354, + 5365, 5365, 5365, 5365, 5366, 5366, 5366, 5366, 5367, 5367, + 5367, 5367, 5662, 5761, 5358, 5368, 5368, 5368, 5368, 5578, + 5360, 5737, 5728, 5361, 5369, 5369, 5369, 5369, 5370, 5370, + 5370, 5370, 5362, 5361, 5737, 5671, 5745, 5371, 5371, 5371, + + 5371, 5372, 5372, 5372, 5372, 5671, 5362, 5728, 5721, 5745, + 5363, 5671, 5364, 5373, 5373, 5373, 5373, 5597, 5364, 5376, + 5376, 5376, 5376, 5762, 5662, 5366, 5720, 5597, 5679, 5367, + 5366, 5377, 5377, 5377, 5377, 5365, 5378, 5378, 5378, 5378, + 5379, 5379, 5379, 5379, 5382, 5382, 5382, 5382, 5383, 5383, + 5383, 5383, 5746, 5763, 5770, 5368, 5384, 5384, 5384, 5384, + 5369, 5370, 5371, 5371, 5735, 5746, 5371, 5735, 5371, 5385, + 5385, 5385, 5385, 5807, 5808, 5720, 5372, 5386, 5386, 5386, + 5386, 5372, 5387, 5387, 5387, 5387, 5720, 5679, 5376, 5388, + 5388, 5388, 5388, 5729, 5813, 5748, 5377, 5373, 5389, 5389, + + 5389, 5389, 5855, 5679, 5679, 5378, 5748, 5382, 5390, 5390, + 5390, 5390, 5391, 5391, 5391, 5391, 5749, 5772, 5729, 5379, + 5750, 5772, 5749, 5382, 5392, 5392, 5392, 5392, 5393, 5393, + 5393, 5393, 5394, 5394, 5394, 5394, 5751, 5750, 5751, 5384, + 5395, 5395, 5395, 5395, 5385, 5388, 5396, 5396, 5396, 5396, + 5386, 5397, 5397, 5397, 5397, 5752, 5753, 5752, 5386, 5398, + 5398, 5398, 5398, 5834, 5387, 5402, 5402, 5402, 5402, 5753, + 5883, 5773, 5389, 5390, 5403, 5403, 5403, 5403, 5730, 5391, + 5404, 5404, 5404, 5404, 5773, 5392, 5589, 5589, 5834, 5393, + 5747, 5589, 5730, 5393, 5589, 5730, 5884, 5394, 5405, 5405, + + 5405, 5405, 5589, 5760, 5747, 5395, 5760, 5747, 5396, 5408, + 5408, 5408, 5408, 5768, 5791, 5768, 5397, 5409, 5409, 5409, + 5409, 5410, 5410, 5410, 5410, 5765, 5411, 5411, 5411, 5411, + 5791, 5398, 5412, 5412, 5412, 5412, 5781, 5413, 5413, 5413, + 5413, 5414, 5414, 5414, 5414, 5415, 5415, 5415, 5415, 5404, + 5765, 5771, 5403, 5771, 5416, 5416, 5416, 5416, 5418, 5418, + 5418, 5418, 5405, 5419, 5419, 5419, 5419, 5420, 5420, 5420, + 5420, 5421, 5421, 5421, 5421, 5422, 5422, 5422, 5422, 5424, + 5424, 5424, 5424, 5732, 5405, 5769, 5410, 5800, 5781, 5800, + 5410, 5411, 5410, 5409, 5411, 5411, 5769, 5411, 5413, 5425, + + 5425, 5425, 5425, 5426, 5426, 5426, 5426, 5787, 5732, 5765, + 5415, 5412, 5781, 5787, 5415, 5413, 5427, 5427, 5427, 5427, + 5798, 5895, 5414, 5416, 5430, 5430, 5430, 5430, 5817, 5798, + 5736, 5420, 5421, 5418, 5736, 5419, 5732, 5431, 5431, 5431, + 5431, 5432, 5432, 5432, 5432, 5817, 5895, 5736, 5424, 5433, + 5433, 5433, 5433, 5827, 5827, 5422, 5434, 5434, 5434, 5434, + 5435, 5435, 5435, 5435, 5425, 5436, 5436, 5436, 5436, 5437, + 5437, 5437, 5437, 5438, 5438, 5438, 5438, 5788, 5425, 5439, + 5439, 5439, 5439, 5788, 5803, 5427, 5440, 5440, 5440, 5440, + 5910, 5427, 5441, 5441, 5441, 5441, 5802, 5803, 5911, 5430, + + 5431, 5442, 5442, 5442, 5442, 5432, 5443, 5443, 5443, 5443, + 5444, 5444, 5444, 5444, 5445, 5445, 5445, 5445, 5802, 5738, + 5818, 5434, 5774, 5738, 5435, 5774, 5780, 5436, 5446, 5446, + 5446, 5446, 5738, 5784, 5437, 5799, 5743, 5818, 5438, 5799, + 5743, 5436, 5743, 5816, 5438, 5447, 5447, 5447, 5447, 5743, + 5448, 5448, 5448, 5448, 5912, 5441, 5779, 5441, 5449, 5449, + 5449, 5449, 5450, 5450, 5450, 5450, 5442, 5451, 5451, 5451, + 5451, 5444, 5452, 5452, 5452, 5452, 5453, 5453, 5453, 5453, + 5780, 5842, 5784, 5445, 5443, 5444, 5810, 5842, 5810, 5446, + 5454, 5454, 5454, 5454, 5455, 5455, 5455, 5455, 5456, 5456, + + 5456, 5456, 5780, 5446, 5457, 5457, 5457, 5457, 5816, 5784, + 5447, 5458, 5458, 5458, 5458, 5460, 5460, 5460, 5460, 5461, + 5461, 5461, 5461, 5914, 5779, 5447, 5448, 5462, 5462, 5462, + 5462, 5861, 5779, 5449, 5463, 5463, 5463, 5463, 5464, 5464, + 5464, 5464, 5450, 5465, 5465, 5465, 5465, 5861, 5739, 5767, + 5453, 5451, 5739, 5452, 5739, 5920, 5455, 5466, 5466, 5466, + 5466, 5739, 5739, 5767, 5454, 5850, 5767, 5456, 5467, 5467, + 5467, 5467, 5468, 5468, 5468, 5468, 5470, 5470, 5470, 5470, + 5850, 5461, 5471, 5471, 5471, 5471, 5472, 5472, 5472, 5472, + 5921, 5460, 5476, 5476, 5476, 5476, 5467, 5776, 5461, 5846, + + 5463, 5776, 5786, 5776, 5465, 5478, 5478, 5478, 5478, 5783, + 5776, 5464, 5480, 5480, 5480, 5480, 5846, 5464, 5481, 5481, + 5481, 5481, 5482, 5482, 5482, 5482, 5483, 5483, 5483, 5483, + 5484, 5484, 5484, 5484, 5485, 5485, 5485, 5485, 5486, 5486, + 5486, 5486, 5858, 5775, 5777, 5471, 5778, 5789, 5472, 5858, + 5468, 5470, 5487, 5487, 5487, 5487, 5775, 5786, 5471, 5775, + 5922, 5789, 5471, 5488, 5488, 5488, 5488, 5806, 5476, 5789, + 5783, 5868, 5476, 5489, 5489, 5489, 5489, 5868, 5786, 5481, + 5478, 5806, 5754, 5754, 5481, 5783, 5754, 5480, 5490, 5490, + 5490, 5490, 5754, 5819, 5484, 5819, 5778, 5482, 5491, 5491, + + 5491, 5491, 5494, 5494, 5494, 5494, 5483, 5923, 5835, 5485, + 5777, 5486, 5785, 5835, 5836, 5487, 5801, 5487, 5487, 5836, + 5777, 5487, 5778, 5487, 5487, 5492, 5492, 5492, 5492, 5841, + 5801, 5841, 5487, 5801, 5495, 5495, 5495, 5495, 5488, 5844, + 5924, 5844, 5489, 5488, 5496, 5496, 5496, 5496, 5497, 5497, + 5497, 5497, 5507, 5507, 5507, 5507, 5508, 5508, 5508, 5508, + 5509, 5509, 5509, 5509, 5785, 5510, 5510, 5510, 5510, 5891, + 5925, 5491, 5511, 5511, 5511, 5511, 5512, 5512, 5512, 5512, + 5891, 5513, 5513, 5513, 5513, 5491, 5507, 5809, 5785, 5824, + 5492, 5809, 5824, 5782, 5492, 5495, 5492, 5514, 5514, 5514, + + 5514, 5515, 5515, 5515, 5515, 5516, 5516, 5516, 5516, 5517, + 5517, 5517, 5517, 5520, 5520, 5520, 5520, 5497, 5518, 5518, + 5518, 5518, 5496, 5903, 5926, 5508, 5510, 5519, 5519, 5519, + 5519, 5521, 5521, 5521, 5521, 5903, 5509, 5522, 5522, 5522, + 5522, 5523, 5523, 5523, 5523, 5524, 5524, 5524, 5524, 5512, + 5927, 5821, 5822, 5511, 5513, 5525, 5525, 5525, 5525, 5782, + 5526, 5526, 5526, 5526, 5821, 5822, 5515, 5790, 5516, 5782, + 5516, 5790, 5805, 5815, 5516, 5805, 5516, 5805, 5514, 5815, + 5515, 5517, 5815, 5518, 5790, 5928, 5829, 5518, 5519, 5829, + 5519, 5520, 5527, 5527, 5527, 5527, 5521, 5528, 5528, 5528, + + 5528, 5529, 5529, 5529, 5529, 5854, 5929, 5843, 5523, 5530, + 5530, 5530, 5530, 5532, 5532, 5532, 5532, 5522, 5525, 5523, + 5814, 5843, 5814, 5524, 5814, 5526, 5531, 5531, 5531, 5531, + 5854, 5525, 5526, 5533, 5533, 5533, 5533, 5534, 5534, 5534, + 5534, 5535, 5535, 5535, 5535, 5536, 5536, 5536, 5536, 5537, + 5537, 5537, 5537, 5538, 5538, 5538, 5538, 5918, 5854, 5528, + 5539, 5539, 5539, 5539, 5540, 5540, 5540, 5540, 5918, 5930, + 5527, 5541, 5541, 5541, 5541, 5529, 5543, 5543, 5543, 5543, + 5530, 5542, 5542, 5542, 5542, 5529, 5544, 5544, 5544, 5544, + 5869, 5532, 5545, 5545, 5545, 5545, 5869, 5533, 5531, 5534, + + 5546, 5546, 5546, 5546, 5547, 5547, 5547, 5547, 5931, 5534, + 5548, 5548, 5548, 5548, 5549, 5549, 5549, 5549, 5837, 5932, + 5823, 5536, 5837, 5823, 5537, 5535, 5946, 5538, 5550, 5550, + 5550, 5550, 5551, 5551, 5551, 5551, 5539, 5957, 5946, 5540, + 5552, 5552, 5552, 5552, 5542, 5558, 5558, 5558, 5558, 5965, + 5543, 5559, 5559, 5559, 5559, 5541, 5916, 5545, 5599, 5826, + 5551, 5553, 5553, 5553, 5553, 5564, 5564, 5564, 5564, 5546, + 5916, 5545, 5826, 5544, 5560, 5560, 5560, 5560, 5820, 5828, + 5825, 5549, 5820, 5825, 5820, 5548, 5561, 5561, 5561, 5561, + 5853, 5820, 5828, 5550, 5562, 5562, 5562, 5562, 5823, 5853, + + 5549, 5563, 5563, 5563, 5563, 5552, 5599, 5857, 5825, 5552, + 5857, 5552, 5551, 5599, 5832, 5559, 5552, 5566, 5566, 5566, + 5566, 5567, 5567, 5567, 5567, 5599, 5553, 5832, 5851, 5864, + 5553, 5559, 5553, 5851, 5599, 5560, 5568, 5568, 5568, 5568, + 5564, 5569, 5569, 5569, 5569, 5570, 5570, 5570, 5570, 5905, + 5905, 5561, 5572, 5572, 5572, 5572, 5833, 5970, 5831, 5562, + 5573, 5573, 5573, 5573, 5905, 5847, 5563, 5847, 5831, 5833, + 5563, 5831, 5563, 5574, 5574, 5574, 5574, 5580, 5580, 5580, + 5580, 5583, 5583, 5583, 5583, 5584, 5584, 5584, 5584, 5740, + 5740, 5740, 5740, 5874, 5669, 5874, 5669, 5669, 5653, 5838, + + 5669, 5567, 5669, 5669, 5864, 5881, 5569, 5845, 5654, 5669, + 5570, 5881, 5838, 5584, 5653, 5653, 5653, 5653, 5653, 5653, + 5845, 5573, 5849, 5653, 5654, 5654, 5654, 5654, 5654, 5654, + 5945, 5880, 5580, 5654, 5726, 5849, 5583, 5852, 5971, 5945, + 5584, 5852, 5574, 5741, 5741, 5741, 5741, 5880, 5574, 5950, + 5726, 5726, 5726, 5726, 5726, 5726, 5580, 5975, 5950, 5726, + 5653, 5658, 5658, 5658, 5658, 5756, 5756, 5756, 5756, 5756, + 5756, 5741, 5976, 5811, 5811, 5811, 5811, 5757, 5856, 5953, + 5658, 5658, 5658, 5658, 5658, 5658, 5859, 5863, 5953, 5658, + 5859, 5856, 5658, 5757, 5757, 5757, 5757, 5757, 5757, 5863, + + 5863, 5840, 5757, 5792, 5792, 5792, 5792, 5840, 5860, 5860, + 5840, 5792, 5979, 5860, 5793, 5793, 5793, 5793, 5794, 5794, + 5794, 5794, 5975, 5658, 5882, 5658, 5794, 5658, 5658, 5811, + 5882, 5792, 5866, 5795, 5795, 5795, 5795, 5658, 5893, 5862, + 5658, 5658, 5793, 5862, 5893, 5866, 5794, 5867, 5658, 5659, + 5659, 5659, 5659, 5839, 5981, 5796, 5796, 5796, 5796, 5896, + 5867, 5795, 5839, 5796, 5792, 5839, 5984, 5839, 5659, 5659, + 5659, 5659, 5659, 5659, 5865, 5793, 5896, 5659, 5865, 5794, + 5659, 5966, 5792, 5796, 5804, 5804, 5804, 5804, 5966, 5812, + 5812, 5812, 5812, 5793, 5795, 5870, 5899, 5794, 5797, 5797, + + 5797, 5797, 5899, 5987, 5871, 5873, 5797, 5871, 5870, 5873, + 5872, 5659, 5795, 5659, 5871, 5659, 5796, 5812, 5848, 5875, + 5878, 5961, 5848, 5878, 5848, 5659, 5797, 5659, 5659, 5659, + 5961, 5848, 5875, 5876, 5796, 5796, 5659, 5744, 5830, 5877, + 5876, 5988, 5830, 5879, 5830, 5812, 5876, 5879, 5901, 5830, + 5901, 5830, 5886, 5877, 5885, 5894, 5877, 5885, 5885, 5797, + 5989, 5797, 5804, 5744, 5804, 5886, 5887, 5888, 5894, 5890, + 5887, 5804, 5872, 5890, 5989, 5990, 5872, 5797, 5872, 5889, + 5889, 5889, 5889, 5889, 5889, 5872, 5991, 5744, 5744, 5744, + 5744, 5892, 5744, 5744, 5992, 5993, 5744, 5744, 5744, 5897, + + 5744, 5744, 5744, 5897, 5744, 5897, 5744, 5898, 5892, 5892, + 5902, 5888, 5897, 5744, 5888, 5900, 5904, 5906, 5900, 5907, + 5906, 5898, 5904, 5908, 5898, 5907, 5908, 5902, 5902, 5909, + 5913, 5915, 5917, 5913, 5915, 5919, 5917, 5933, 5889, 5934, + 5933, 5919, 5909, 5935, 5936, 5934, 5936, 5937, 5938, 5942, + 5939, 5937, 5939, 5940, 5940, 5941, 5935, 5940, 5935, 5940, + 5943, 5938, 5942, 5944, 5943, 5947, 5940, 5948, 5952, 5944, + 5949, 5951, 5941, 5951, 5949, 5947, 5954, 5956, 5947, 5952, + 5948, 5956, 5955, 5952, 5955, 5958, 5963, 5949, 5994, 5949, + 5960, 5954, 5959, 5954, 5954, 5967, 5967, 5967, 5967, 5963, + + 5959, 5958, 5964, 5958, 5995, 5959, 5963, 5960, 5962, 5962, + 5962, 5962, 5962, 5962, 5972, 5964, 5968, 5968, 5968, 5968, + 5969, 5969, 5969, 5969, 5973, 5974, 5997, 5972, 5974, 5998, + 5973, 5980, 5982, 5973, 5985, 5980, 5982, 5983, 5985, 5999, + 5985, 5983, 6000, 5983, 6001, 5996, 5996, 6003, 5969, 5996, + 6004, 5983, 6005, 5999, 6006, 6007, 6008, 6009, 6010, 6011, + 6008, 6012, 6008, 6013, 6014, 6012, 6015, 5962, 6016, 6017, + 6018, 6007, 6019, 5967, 6020, 6020, 6020, 6020, 6021, 6022, + 6023, 6011, 5967, 6017, 6024, 6025, 6026, 6027, 6028, 6029, + 6026, 6030, 6031, 6032, 6033, 6034, 6036, 6032, 6035, 6032, + + 6037, 6035, 6038, 5968, 6039, 6040, 6042, 5969, 5977, 6040, + 6041, 6040, 6043, 6044, 6045, 6046, 6040, 6047, 6048, 6049, + 6041, 6050, 6051, 6052, 5977, 5977, 5977, 5977, 5977, 5977, + 6053, 6054, 6048, 5977, 6055, 6056, 5977, 6057, 6058, 6059, + 6060, 6057, 6061, 6057, 6062, 6063, 6064, 6065, 6066, 6067, + 6067, 6068, 6069, 6071, 6020, 6070, 6072, 6073, 6074, 6075, + 6076, 6020, 6077, 6078, 6079, 6080, 5977, 5977, 6070, 5977, + 6081, 6082, 6083, 6078, 6084, 6085, 6086, 6087, 6088, 6083, + 5977, 5977, 6089, 6090, 5977, 5977, 5978, 6090, 6084, 6091, + 6092, 6093, 6094, 6094, 6094, 6094, 6094, 6094, 6095, 6096, + + 6097, 6098, 5978, 5978, 5978, 5978, 5978, 5978, 6099, 6101, + 6100, 5978, 6102, 6101, 5978, 6101, 6103, 6104, 6097, 6105, + 6106, 6107, 6108, 6109, 6109, 6111, 6079, 6100, 6112, 6113, + 6079, 6114, 6079, 6119, 6120, 6093, 6121, 6122, 6106, 6123, + 6124, 6125, 6126, 6127, 6128, 5978, 6129, 5978, 6130, 6131, + 6131, 6132, 6133, 6131, 6134, 6131, 6135, 6126, 6136, 5978, + 6137, 6138, 5978, 5978, 5986, 6139, 6140, 6141, 6142, 6143, + 6140, 6138, 6144, 6145, 6146, 6147, 6149, 6151, 6150, 6152, + 6143, 6154, 6155, 6157, 6161, 6140, 6150, 6162, 6145, 6163, + 5986, 6145, 6164, 6159, 6149, 6153, 6153, 6153, 6153, 6153, + + 6153, 6154, 6158, 6158, 6158, 6158, 6159, 6160, 6165, 6166, + 6168, 6167, 6169, 6160, 5986, 5986, 5986, 5986, 6170, 5986, + 5986, 6167, 6172, 5986, 5986, 5986, 6171, 5986, 5986, 5986, + 6171, 5986, 6171, 5986, 6173, 6170, 6175, 6176, 6178, 6183, + 5986, 6184, 6188, 6194, 6195, 6196, 6198, 6200, 6201, 6202, + 6203, 6204, 6205, 6206, 6209, 6215, 6216, 6217, 6218, 6219, + 6202, 6220, 6221, 6222, 6223, 6223, 6223, 6223, 6224, 6225, + 6226, 6227, 6228, 6230, 6232, 6233, 6234, 6236, 6233, 6234, + 6237, 6238, 6239, 6241, 6240, 6240, 6240, 6240, 6243, 6158, + 6240, 6242, 6242, 6242, 6242, 6244, 6245, 6246, 6248, 6249, + + 6245, 6250, 6250, 6250, 6250, 6251, 6253, 6254, 6255, 6256, + 6254, 6257, 6258, 6260, 6261, 6262, 6263, 6261, 6265, 6266, + 6267, 6268, 6266, 6269, 6270, 6271, 6272, 6273, 6273, 6273, + 6273, 6274, 6275, 6239, 6277, 6278, 6280, 6281, 6284, 6283, + 6285, 6286, 6287, 6289, 6288, 6290, 6291, 6292, 6293, 6294, + 6295, 6223, 6296, 6299, 6301, 6298, 6274, 6250, 6288, 6302, + 6278, 6280, 6281, 6239, 6283, 6300, 6303, 6304, 6289, 6300, + 6305, 6240, 6292, 6293, 6305, 6306, 6307, 6308, 6242, 6309, + 6298, 6246, 6279, 6310, 6302, 6311, 6314, 6314, 6314, 6314, + 6312, 6303, 6304, 6316, 6312, 6319, 6312, 6320, 6279, 6279, + + 6279, 6279, 6279, 6279, 6312, 6322, 6321, 6279, 6298, 6323, + 6279, 6315, 6315, 6315, 6315, 6317, 6324, 6327, 6328, 6317, + 6321, 6317, 6325, 6329, 6331, 6332, 6331, 6333, 6334, 6326, + 6330, 6335, 6336, 6338, 6338, 6339, 6337, 6338, 6307, 6315, + 6342, 6279, 6307, 6279, 6307, 6343, 6340, 6341, 6341, 6341, + 6341, 6344, 6346, 6347, 6345, 6279, 6350, 6279, 6279, 6279, + 6282, 6337, 6340, 6340, 6340, 6340, 6340, 6340, 6345, 6351, + 6343, 6340, 6352, 6314, 6353, 6325, 6282, 6282, 6282, 6282, + 6282, 6282, 6326, 6330, 6325, 6282, 6354, 6355, 6282, 6356, + 6357, 6326, 6358, 6359, 6351, 6360, 6362, 6352, 6315, 6361, + + 6363, 6364, 6365, 6335, 6367, 6364, 6366, 6364, 6367, 6368, + 6367, 6369, 6372, 6373, 6374, 6375, 6371, 6376, 6359, 6282, + 6360, 6282, 6366, 6341, 6361, 6379, 6382, 6381, 6385, 6343, + 6380, 6388, 6386, 6282, 6379, 6388, 6282, 6282, 6318, 6381, + 6380, 6383, 6384, 6370, 6387, 6389, 6383, 6390, 6382, 6391, + 6384, 6392, 6393, 6385, 6386, 6394, 6395, 6396, 6397, 6398, + 6399, 6400, 6402, 6403, 6318, 6404, 6405, 6406, 6407, 6394, + 6411, 6410, 6412, 6413, 6368, 6410, 6414, 6369, 6415, 6418, + 6422, 6395, 6424, 6371, 6398, 6368, 6318, 6369, 6318, 6318, + 6318, 6318, 6371, 6318, 6318, 6425, 6427, 6318, 6318, 6318, + + 6428, 6318, 6318, 6318, 6370, 6318, 6387, 6318, 6430, 6416, + 6387, 6370, 6387, 6416, 6318, 6416, 6432, 6434, 6437, 6370, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6401, 6401, 6401, 6401, 6408, 6423, 6417, + 6429, 6408, 6417, 6408, 6409, 6409, 6409, 6409, 6419, 6420, + 6431, 6419, 6420, 6408, 6421, 6426, 6433, 6421, 6435, 6426, + 6431, 6426, 6436, 6423, 6438, 6429, 6426, 6439, 6440, 6441, + 6442, 6443, 6409, 6444, 6445, 6446, 6447, 6420, 6448, 6450, + 6449, 6433, 6451, 6435, 6452, 6453, 6454, 6455, 6456, 6438, + 6458, 6459, 6457, 6460, 6441, 6442, 6461, 6462, 6463, 6464, + 6409, 6465, 6466, 6468, 6417, 6449, 6457, 6469, 6470, 6470, + 6470, 6470, 6473, 6401, 6474, 6474, 6474, 6474, 6475, 6421, + + 6401, 6476, 6477, 6478, 6479, 6480, 6481, 6482, 6483, 6480, + 6484, 6480, 6485, 6486, 6484, 6487, 6484, 6436, 6453, 6488, + 6455, 6484, 6489, 6490, 6491, 6492, 6493, 6494, 6454, 6455, + 6495, 6496, 6454, 6498, 6454, 6497, 6497, 6485, 6499, 6500, + 6502, 6501, 6499, 6503, 6504, 6505, 6506, 6507, 6508, 6491, + 6510, 6509, 6512, 6470, 6501, 6511, 6513, 6514, 6515, 6516, + 6517, 6518, 6519, 6520, 6521, 6522, 6524, 6525, 6523, 6504, + 6526, 6527, 6528, 6529, 6530, 6470, 6509, 6491, 6523, 6531, + 6511, 6474, 6532, 6533, 6534, 6535, 6536, 6537, 6538, 6532, + 6539, 6540, 6541, 6544, 6545, 6526, 6546, 6533, 6542, 6542, + + 6542, 6542, 6543, 6543, 6543, 6543, 6547, 6548, 6549, 6550, + 6547, 6552, 6537, 6553, 6554, 6556, 6555, 6559, 6513, 6557, + 6558, 6560, 6513, 6563, 6513, 6565, 6561, 6566, 6567, 6525, + 6543, 6568, 6569, 6525, 6555, 6525, 6551, 6551, 6551, 6551, + 6551, 6551, 6529, 6561, 6557, 6558, 6560, 6570, 6562, 6571, + 6572, 6564, 6562, 6550, 6562, 6564, 6573, 6564, 6574, 6575, + 6576, 6577, 6577, 6579, 6580, 6570, 6581, 6564, 6582, 6587, + 6588, 6589, 6590, 6591, 6591, 6591, 6591, 6594, 6595, 6587, + 6592, 6592, 6592, 6592, 6596, 6597, 6598, 6599, 6601, 6602, + 6603, 6604, 6605, 6606, 6569, 6602, 6607, 6590, 6608, 6609, + + 6604, 6610, 6594, 6611, 6569, 6613, 6612, 6614, 6592, 6615, + 6616, 6617, 6618, 6618, 6619, 6620, 6618, 6621, 6618, 6622, + 6574, 6612, 6623, 6624, 6625, 6626, 6628, 6627, 6629, 6630, + 6574, 6627, 6631, 6632, 6625, 6633, 6634, 6635, 6636, 6638, + 6630, 6639, 6640, 6641, 6644, 6645, 6627, 6643, 6646, 6639, + 6633, 6647, 6649, 6633, 6653, 6655, 6654, 6638, 6656, 6640, + 6642, 6642, 6642, 6642, 6642, 6642, 6657, 6643, 6650, 6650, + 6650, 6650, 6651, 6651, 6651, 6651, 6652, 6658, 6659, 6660, + 6652, 6654, 6652, 6661, 6662, 6660, 6663, 6664, 6665, 6666, + 6658, 6667, 6668, 6669, 6670, 6670, 6671, 6671, 6671, 6671, + + 6651, 6672, 6673, 6659, 6674, 6675, 6676, 6677, 6678, 6679, + 6680, 6663, 6674, 6681, 6681, 6682, 6682, 6682, 6683, 6683, + 6684, 6684, 6674, 6685, 6687, 6688, 6686, 6691, 6687, 6689, + 6687, 6690, 6692, 6693, 6694, 6687, 6695, 6689, 6696, 6690, + 6697, 6698, 6699, 6700, 6701, 6702, 6703, 6689, 6704, 6705, + 6706, 6671, 6707, 6708, 6709, 6650, 6710, 6711, 6713, 6651, + 6714, 6715, 6716, 6714, 6717, 6718, 6719, 6720, 6721, 6723, + 6722, 6724, 6728, 6728, 6730, 6671, 6728, 6670, 6686, 6732, + 6732, 6746, 6728, 6732, 6721, 6721, 6721, 6721, 6721, 6721, + 6693, 6734, 6734, 6721, 6753, 6734, 6681, 6683, 6740, 6754, + + 6684, 6703, 6686, 6741, 6737, 6737, 6724, 6704, 6737, 6706, + 6729, 6729, 6729, 6729, 6693, 6705, 6708, 6722, 6731, 6731, + 6707, 6755, 6731, 6740, 6731, 6733, 6733, 6736, 6741, 6733, + 6742, 6733, 6735, 6735, 6736, 6736, 6735, 6758, 6736, 6738, + 6720, 6725, 6760, 6745, 6735, 6736, 6738, 6738, 6743, 6743, + 6738, 6761, 6743, 6763, 6743, 6742, 6739, 6725, 6725, 6725, + 6725, 6725, 6725, 6739, 6739, 6765, 6725, 6739, 6745, 6725, + 6744, 6744, 6770, 6772, 6744, 6773, 6774, 6775, 6729, 6729, + 6776, 6777, 6729, 6778, 6779, 6780, 6784, 6785, 6789, 6797, + 6729, 6781, 6781, 6781, 6781, 6781, 6781, 6729, 6862, 6862, + + 6725, 6874, 6725, 6725, 6725, 6883, 6912, 6725, 6883, 6725, + 6938, 6787, 6787, 6942, 6725, 6787, 6965, 6725, 6725, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + + 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, 6726, + 6726, 6726, 6727, 6756, 6756, 6756, 6756, 6782, 6757, 6757, + 6757, 6757, 6783, 6783, 6967, 6794, 6798, 6799, 6727, 6727, + 6727, 6727, 6727, 6727, 6790, 6790, 6791, 6727, 6790, 6968, + 6727, 6791, 6791, 6800, 6969, 6791, 6802, 6790, 6792, 6792, + 6794, 6804, 6792, 6801, 6793, 6793, 6795, 6795, 6793, 6796, + 6795, 6803, 6799, 6795, 6796, 6796, 6782, 6805, 6796, 6756, + 6793, 6727, 6796, 6727, 6757, 6727, 6806, 6727, 6727, 6808, + 6807, 6727, 6809, 6810, 6782, 6727, 6828, 6794, 6727, 6727, + 6794, 6794, 6811, 6794, 6794, 6800, 6813, 6838, 6812, 6970, + + 6783, 6921, 6798, 6799, 6971, 6801, 6802, 6802, 6928, 6801, + 6802, 6828, 6815, 6815, 6972, 6801, 6815, 6803, 6804, 6800, + 6803, 6884, 6802, 6815, 6884, 6973, 6921, 6804, 6807, 6801, + 6974, 6843, 6806, 6928, 6805, 6975, 6807, 6803, 6809, 6976, + 6811, 6808, 6977, 6805, 7016, 7023, 6812, 6838, 6813, 6884, + 7027, 6810, 6806, 6812, 6840, 6808, 6807, 7018, 6809, 6810, + 6816, 6816, 6826, 7030, 6816, 6812, 6817, 6817, 6811, 7030, + 6817, 6842, 6813, 6838, 6812, 7026, 6817, 6818, 7054, 6816, + 6818, 6818, 6819, 6819, 6818, 6819, 6819, 6820, 6821, 6821, + 6820, 6820, 6821, 7026, 6820, 6821, 6822, 6822, 6843, 6823, + + 6822, 6822, 6823, 6823, 6824, 6824, 6823, 6843, 6824, 6839, + 6824, 6825, 6825, 6841, 6840, 6825, 6844, 6826, 6826, 7044, + 6845, 6826, 6827, 6827, 6827, 6827, 6827, 6827, 6829, 6829, + 6840, 6842, 6829, 7018, 6829, 6830, 6830, 6831, 6831, 6830, + 7067, 6831, 6832, 6832, 6831, 6846, 6832, 6842, 6831, 6833, + 6833, 6830, 6847, 6833, 6834, 6834, 6833, 7033, 6834, 7033, + 6833, 6835, 6835, 6836, 6836, 6835, 6834, 6836, 7083, 6835, + 6837, 6837, 6844, 7028, 6837, 6836, 7028, 6839, 6837, 6845, + 6837, 6841, 6848, 6848, 7034, 6839, 6848, 7044, 6845, 6841, + 7034, 7095, 6844, 7095, 6846, 6849, 6845, 6863, 6849, 6849, + + 6847, 6846, 6849, 6850, 6863, 6863, 6850, 6850, 6863, 6851, + 6850, 6851, 6851, 7050, 7050, 6851, 6852, 6853, 6853, 6853, + 6853, 6846, 6859, 6852, 6852, 6859, 6859, 6852, 6847, 6859, + 6852, 6854, 6854, 6854, 6854, 7104, 6855, 6855, 6855, 6855, + 7048, 6857, 6857, 6857, 6857, 6858, 6858, 6858, 6860, 6857, + 6858, 6860, 6860, 7048, 7109, 6860, 6861, 6861, 6860, 7036, + 6861, 6864, 6864, 6864, 6864, 6865, 6865, 6865, 6865, 6857, + 6866, 6866, 6861, 7038, 6866, 7036, 6868, 6866, 6853, 6868, + 6868, 6869, 7051, 6868, 6869, 6869, 6868, 7051, 6869, 7038, + 6871, 6871, 6854, 6865, 6871, 7035, 6853, 6855, 7035, 6855, + + 6872, 7164, 6857, 6872, 6872, 6873, 7040, 6872, 6873, 6873, + 6854, 6854, 6873, 7041, 7040, 6855, 6856, 6856, 6856, 6856, + 6857, 6875, 6875, 6890, 6856, 6875, 7052, 7052, 6875, 7041, + 6856, 6880, 6856, 6856, 6880, 6856, 6856, 6856, 6856, 6856, + 6856, 7037, 6876, 6876, 6856, 6865, 6876, 6881, 6864, 6878, + 6881, 7037, 6865, 6878, 6878, 6879, 6879, 6878, 6882, 6879, + 6885, 6882, 6886, 6885, 7197, 6886, 6886, 6879, 6886, 6886, + 6887, 6887, 6887, 6886, 6888, 6887, 6887, 6856, 6888, 6889, + 6889, 6888, 6888, 6889, 6889, 6888, 6891, 6891, 6890, 6890, + 6891, 7198, 6890, 7071, 6890, 6856, 7043, 6892, 6892, 6880, + + 6880, 6892, 7071, 6880, 6892, 6893, 6893, 6880, 7043, 6893, + 6894, 7042, 6893, 6894, 6894, 6881, 6881, 6894, 7042, 6881, + 6881, 6899, 6899, 6899, 6899, 6899, 6882, 6882, 6885, 6885, + 6882, 6882, 6885, 6885, 6895, 7046, 6896, 6896, 7046, 6897, + 6896, 6895, 6895, 6896, 7039, 6895, 6897, 6897, 6900, 6898, + 6897, 7039, 7088, 6897, 6898, 6898, 6901, 7039, 6898, 6901, + 6901, 6900, 6900, 6901, 7088, 6900, 7045, 6899, 6902, 6902, + 6899, 6899, 6902, 7045, 6899, 6902, 6903, 6903, 6904, 6904, + 6903, 6904, 6904, 7062, 7031, 6905, 7062, 6903, 6905, 6905, + 6906, 6906, 6905, 7063, 6906, 6907, 6907, 7031, 6906, 6907, + + 6906, 6909, 7031, 6908, 6908, 6907, 6908, 6908, 6909, 6909, + 6910, 6910, 6909, 7063, 6910, 6911, 6911, 6913, 6913, 6911, + 7201, 6913, 6910, 6914, 6914, 6911, 6916, 6914, 6915, 6915, + 6916, 6916, 6915, 6914, 6916, 6917, 6918, 6918, 6927, 6915, + 6918, 7064, 6917, 6917, 6919, 6919, 6917, 7064, 6919, 6918, + 6920, 6919, 6917, 6920, 6920, 6922, 6920, 6920, 6922, 6922, + 6923, 6923, 6922, 6927, 6923, 6923, 6924, 6924, 6925, 6925, + 6924, 7055, 6925, 6926, 6926, 6925, 6929, 6926, 6926, 6926, + 6929, 6929, 6930, 6930, 6929, 6931, 6930, 7055, 6941, 6930, + 6931, 6931, 7056, 6932, 6931, 6931, 6932, 6932, 6933, 6933, + + 6932, 7057, 6933, 6927, 6927, 6934, 6934, 6927, 7056, 6934, + 6934, 6935, 6935, 6936, 6933, 6935, 7057, 7202, 6937, 6937, + 6936, 6936, 6937, 7060, 6936, 6935, 6939, 6936, 7096, 6939, + 6939, 6948, 6939, 6939, 6943, 6937, 6940, 6940, 7096, 7060, + 6940, 7072, 6940, 6941, 6941, 6944, 6944, 6941, 7081, 6944, + 6943, 6943, 6943, 6943, 6943, 6943, 7081, 6944, 7072, 6943, + 6945, 6945, 6947, 6947, 6945, 7099, 6947, 6949, 7099, 7059, + 6949, 6949, 6945, 6946, 6949, 7103, 6950, 6950, 7103, 6947, + 6950, 6954, 6954, 7059, 6946, 6954, 6946, 6946, 6954, 6946, + 6946, 6946, 6946, 6946, 6946, 7047, 6948, 6948, 6951, 7047, + + 6948, 7047, 6948, 6951, 6951, 7073, 7073, 6951, 6952, 6952, + 6952, 6952, 6953, 6953, 7066, 7090, 6953, 6955, 6953, 7203, + 6955, 6955, 6956, 6955, 6955, 6957, 6957, 6956, 6956, 6957, + 7066, 6956, 6957, 7090, 6956, 6946, 6963, 6963, 6946, 6946, + 6963, 6946, 6946, 6958, 6958, 6984, 6958, 6958, 6959, 6959, + 7102, 7102, 6959, 6960, 6960, 6959, 6961, 6960, 6960, 6961, + 6961, 6962, 7100, 6961, 6964, 6964, 6962, 6962, 6964, 7204, + 6962, 6961, 7100, 7070, 6978, 6978, 6952, 6952, 6978, 7070, + 6952, 6964, 6979, 6979, 6980, 6980, 6979, 6981, 6980, 6981, + 7205, 6980, 6981, 6981, 6979, 6952, 6981, 6982, 6982, 6983, + + 6983, 6982, 7084, 6983, 6981, 6983, 6985, 6984, 7084, 6982, + 6984, 6984, 6985, 6985, 6984, 7206, 6985, 6986, 6986, 6985, + 7068, 6986, 6987, 7069, 6993, 6986, 7085, 6987, 6987, 6984, + 6988, 6987, 7085, 6987, 6988, 6988, 7068, 7087, 6988, 7069, + 6987, 6989, 6989, 6990, 6990, 6989, 7058, 6990, 6989, 6991, + 6991, 6992, 6992, 6991, 7101, 6992, 6991, 7087, 6993, 6993, + 7058, 6990, 6993, 6994, 6994, 6994, 7058, 6992, 6994, 6995, + 6995, 7124, 7124, 6995, 7101, 6995, 6996, 6996, 6997, 6997, + 6996, 7003, 6997, 6996, 6998, 7166, 6997, 6999, 6999, 6998, + 6998, 6999, 7005, 6998, 7000, 7000, 6998, 7001, 7000, 7005, + + 7005, 7001, 7011, 7005, 7001, 7001, 7000, 7002, 7001, 7105, + 7002, 7002, 7105, 7002, 7002, 7003, 7003, 7004, 7004, 7003, + 7006, 7004, 7003, 7002, 7004, 7049, 7006, 7006, 7007, 7049, + 7006, 7049, 7166, 7006, 7079, 7007, 7007, 7008, 7010, 7007, + 7079, 7008, 7008, 7009, 7009, 7008, 7032, 7009, 7079, 7009, + 7106, 7008, 7106, 7012, 7010, 7010, 7010, 7010, 7010, 7010, + 7012, 7012, 7019, 7010, 7012, 7019, 7019, 7011, 7011, 7019, + 7029, 7011, 7082, 7011, 7013, 7013, 7013, 7013, 7014, 7014, + 7014, 7014, 7020, 7020, 7021, 7021, 7020, 7020, 7021, 7021, + 7089, 7053, 7128, 7053, 7032, 7029, 7053, 7061, 7065, 7128, + + 7074, 7080, 7032, 7074, 7089, 7080, 7014, 7061, 7065, 7086, + 7089, 7092, 7093, 7061, 7065, 7075, 7076, 7077, 7075, 7076, + 7077, 7080, 7032, 7078, 7097, 7086, 7139, 7078, 7093, 7078, + 7107, 7207, 7029, 7139, 7078, 7110, 7029, 7092, 7029, 7078, + 7097, 7110, 7094, 7082, 7098, 7094, 7098, 7107, 7029, 7098, + 7082, 7094, 7108, 7091, 7091, 7091, 7091, 7091, 7111, 7112, + 7113, 7013, 7111, 7118, 7111, 7014, 7024, 7115, 7113, 7108, + 7114, 7119, 7108, 7115, 7111, 7112, 7074, 7119, 7117, 7114, + 7118, 7074, 7024, 7024, 7024, 7024, 7024, 7024, 7075, 7076, + 7077, 7024, 7116, 7116, 7024, 7120, 7075, 7076, 7077, 7091, + + 7116, 7121, 7091, 7117, 7122, 7120, 7123, 7122, 7125, 7129, + 7130, 7130, 7126, 7120, 7123, 7091, 7126, 7121, 7131, 7131, + 7127, 7134, 7125, 7136, 7127, 7024, 7127, 7024, 7125, 7133, + 7135, 7137, 7208, 7133, 7141, 7136, 7127, 7142, 7141, 7024, + 7141, 7143, 7024, 7024, 7025, 7209, 7135, 7143, 7144, 7137, + 7141, 7138, 7138, 7138, 7138, 7142, 7117, 7148, 7144, 7149, + 7025, 7025, 7025, 7025, 7025, 7025, 7147, 7140, 7145, 7025, + 7146, 7149, 7025, 7140, 7145, 7148, 7150, 7129, 7146, 7140, + 7150, 7147, 7147, 7153, 7151, 7152, 7152, 7155, 7155, 7153, + 7156, 7157, 7134, 7151, 7154, 7153, 7154, 7156, 7160, 7134, + + 7158, 7159, 7162, 7025, 7167, 7025, 7159, 7161, 7162, 7160, + 7163, 7154, 7154, 7173, 7173, 7163, 7160, 7025, 7167, 7158, + 7025, 7025, 7025, 7132, 7161, 7165, 7168, 7176, 7165, 7169, + 7211, 7183, 7138, 7168, 7132, 7169, 7132, 7132, 7138, 7132, + 7132, 7132, 7132, 7132, 7132, 7170, 7171, 7172, 7177, 7185, + 7170, 7174, 7171, 7157, 7177, 7174, 7175, 7178, 7171, 7172, + 7175, 7180, 7175, 7179, 7171, 7185, 7181, 7184, 7176, 7157, + 7186, 7174, 7175, 7212, 7176, 7157, 7179, 7178, 7186, 7182, + 7181, 7180, 7179, 7181, 7189, 7132, 7182, 7184, 7188, 7132, + 7193, 7132, 7190, 7213, 7187, 7187, 7191, 7190, 7188, 7195, + + 7189, 7132, 7183, 7187, 7191, 7192, 7193, 7194, 7210, 7183, + 7214, 7195, 7215, 7217, 7218, 7192, 7196, 7196, 7196, 7196, + 7196, 7196, 7219, 7194, 7220, 7221, 7215, 7218, 7222, 7223, + 7224, 7226, 7227, 7228, 7229, 7210, 7230, 7231, 7232, 7233, + 7231, 7232, 7234, 7235, 7238, 7239, 7235, 7236, 7236, 7236, + 7236, 7240, 7241, 7236, 7242, 7243, 7244, 7245, 7246, 7244, + 7245, 7246, 7247, 7257, 7248, 7247, 7240, 7248, 7249, 7250, + 7251, 7249, 7250, 7251, 7252, 7253, 7254, 7252, 7253, 7254, + 7255, 7256, 7260, 7255, 7261, 7267, 7268, 7256, 7256, 7258, + 7258, 7258, 7258, 7259, 7259, 7259, 7259, 7264, 7265, 7266, + + 7259, 7270, 7269, 7265, 7264, 7269, 7266, 7271, 7272, 7273, + 7271, 7274, 7275, 7276, 7277, 7273, 7284, 7278, 7235, 7246, + 7279, 7280, 7276, 7274, 7281, 7283, 7282, 7285, 7289, 7245, + 7282, 7251, 7289, 7287, 7236, 7291, 7288, 7254, 7291, 7277, + 7286, 7250, 7278, 7290, 7292, 7279, 7280, 7253, 7295, 7281, + 7283, 7248, 7286, 7286, 7292, 7290, 7297, 7293, 7298, 7299, + 7255, 7293, 7298, 7294, 7296, 7300, 7302, 7303, 7305, 7299, + 7301, 7304, 7306, 7311, 7308, 7300, 7308, 7303, 7304, 7311, + 7272, 7305, 7259, 7262, 7288, 7307, 7306, 7283, 7294, 7296, + 7312, 7283, 7288, 7283, 7313, 7301, 7309, 7283, 7287, 7262, + + 7262, 7262, 7262, 7262, 7262, 7319, 7309, 7321, 7262, 7287, + 7307, 7262, 7288, 7310, 7310, 7316, 7294, 7296, 7325, 7313, + 7314, 7314, 7315, 7301, 7316, 7317, 7318, 7315, 7320, 7317, + 7322, 7323, 7320, 7318, 7324, 7323, 7326, 7326, 7328, 7324, + 7330, 7326, 7262, 7328, 7262, 7327, 7327, 7329, 7329, 7331, + 7329, 7332, 7312, 7333, 7334, 7262, 7262, 7335, 7336, 7262, + 7262, 7263, 7337, 7338, 7341, 7339, 7339, 7339, 7339, 7348, + 7342, 7335, 7337, 7341, 7342, 7343, 7344, 7263, 7263, 7263, + 7263, 7263, 7263, 7342, 7343, 7344, 7263, 7345, 7330, 7263, + 7354, 7346, 7322, 7347, 7348, 7349, 7345, 7350, 7345, 7332, + + 7346, 7333, 7322, 7347, 7349, 7351, 7322, 7352, 7353, 7334, + 7355, 7350, 7331, 7351, 7356, 7354, 7330, 7352, 7353, 7355, + 7263, 7359, 7263, 7363, 7367, 7331, 7360, 7332, 7357, 7333, + 7334, 7361, 7381, 7263, 7263, 7338, 7360, 7263, 7263, 7339, + 7339, 7361, 7357, 7366, 7368, 7370, 7382, 7368, 7385, 7366, + 7370, 7391, 7339, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7340, + 7340, 7340, 7340, 7340, 7340, 7340, 7358, 7358, 7358, 7358, + 7364, 7365, 7369, 7371, 7373, 7376, 7371, 7392, 7376, 7374, + 7364, 7365, 7374, 7369, 7375, 7375, 7375, 7375, 7386, 7384, + 7377, 7378, 7379, 7377, 7358, 7378, 7387, 7378, 7379, 7373, + 7379, 7378, 7378, 7376, 7380, 7383, 7388, 7383, 7380, 7389, + 7390, 7393, 7394, 7386, 7395, 7396, 7397, 7398, 7380, 7400, + + 7399, 7400, 7396, 7404, 7395, 7401, 7402, 7403, 7406, 7403, + 7405, 7388, 7409, 7407, 7389, 7390, 7405, 7404, 7407, 7409, + 7414, 7397, 7406, 7414, 7374, 7399, 7358, 7412, 7371, 7371, + 7401, 7402, 7374, 7358, 7374, 7377, 7408, 7375, 7415, 7375, + 7384, 7384, 7410, 7377, 7422, 7377, 7408, 7412, 7387, 7427, + 7408, 7435, 7423, 7399, 7410, 7413, 7423, 7437, 7443, 7402, + 7411, 7411, 7411, 7411, 7411, 7413, 7416, 7416, 7416, 7416, + 7417, 7417, 7417, 7417, 7419, 7419, 7419, 7419, 7425, 7420, + 7420, 7420, 7420, 7424, 7439, 7445, 7446, 7424, 7425, 7426, + 7426, 7428, 7426, 7431, 7428, 7439, 7429, 7431, 7417, 7430, + + 7429, 7432, 7430, 7433, 7450, 7447, 7411, 7420, 7433, 7411, + 7429, 7434, 7440, 7442, 7434, 7432, 7411, 7436, 7438, 7442, + 7436, 7441, 7438, 7451, 7441, 7448, 7440, 7444, 7453, 7440, + 7447, 7444, 7449, 7444, 7449, 7448, 7454, 7444, 7452, 7454, + 7453, 7455, 7456, 7457, 7458, 7461, 7455, 7462, 7451, 7463, + 7457, 7459, 7456, 7416, 7459, 7464, 7465, 7417, 7460, 7460, + 7460, 7419, 7466, 7452, 7467, 7468, 7420, 7465, 7470, 7469, + 7472, 7473, 7462, 7471, 7474, 7475, 7476, 7475, 7470, 7469, + 7464, 7469, 7471, 7476, 7477, 7478, 7483, 7479, 7484, 7467, + 7479, 7480, 7482, 7482, 7503, 7472, 7473, 7486, 7477, 7474, + + 7487, 7480, 7486, 7481, 7485, 7487, 7490, 7481, 7488, 7481, + 7478, 7491, 7488, 7481, 7498, 7498, 7490, 7461, 7481, 7462, + 7485, 7485, 7485, 7485, 7485, 7485, 7492, 7493, 7494, 7485, + 7500, 7495, 7497, 7493, 7504, 7497, 7492, 7495, 7508, 7499, + 7494, 7496, 7496, 7496, 7496, 7499, 7505, 7502, 7483, 7489, + 7501, 7502, 7501, 7502, 7506, 7500, 7506, 7502, 7510, 7517, + 7489, 7507, 7489, 7489, 7513, 7489, 7489, 7489, 7489, 7489, + 7489, 7505, 7509, 7507, 7513, 7511, 7509, 7511, 7512, 7513, + 7514, 7512, 7491, 7491, 7515, 7516, 7518, 7519, 7520, 7521, + 7515, 7519, 7514, 7522, 7523, 7516, 7519, 7524, 7525, 7526, + + 7527, 7528, 7529, 7530, 7531, 7536, 7530, 7532, 7533, 7531, + 7533, 7489, 7529, 7532, 7534, 7489, 7496, 7489, 7538, 7534, + 7533, 7489, 7535, 7535, 7537, 7533, 7539, 7539, 7496, 7537, + 7540, 7538, 7541, 7542, 7543, 7544, 7547, 7545, 7546, 7548, + 7548, 7540, 7540, 7541, 7547, 7543, 7545, 7549, 7540, 7550, + 7550, 7551, 7552, 7558, 7553, 7554, 7555, 7551, 7552, 7553, + 7555, 7559, 7556, 7551, 7566, 7554, 7556, 7536, 7556, 7560, + 7555, 7561, 7556, 7562, 7563, 7568, 7557, 7536, 7556, 7546, + 7557, 7565, 7557, 7560, 7561, 7563, 7557, 7562, 7563, 7536, + 7564, 7564, 7567, 7569, 7558, 7567, 7570, 7565, 7565, 7565, + + 7565, 7565, 7565, 7573, 7572, 7574, 7565, 7572, 7575, 7576, + 7570, 7571, 7571, 7571, 7571, 7577, 7580, 7578, 7572, 7578, + 7581, 7582, 7575, 7576, 7583, 7577, 7579, 7579, 7573, 7579, + 7574, 7584, 7584, 7585, 7585, 7585, 7585, 7588, 7588, 7571, + 7586, 7586, 7586, 7586, 7589, 7589, 7568, 7568, 7586, 7587, + 7587, 7587, 7587, 7590, 7591, 7592, 7592, 7587, 7593, 7594, + 7595, 7596, 7597, 7597, 7601, 7569, 7598, 7598, 7598, 7590, + 7599, 7599, 7600, 7600, 7602, 7604, 7607, 7603, 7605, 7605, + 7608, 7603, 7606, 7606, 7612, 7609, 7613, 7614, 7585, 7611, + 7611, 7611, 7611, 7611, 7611, 7586, 7586, 7603, 7571, 7615, + + 7616, 7617, 7619, 7620, 7587, 7587, 7621, 7622, 7589, 7584, + 7618, 7623, 7618, 7627, 7624, 7629, 7628, 7630, 7616, 7628, + 7631, 7632, 7633, 7602, 7625, 7625, 7625, 7625, 7625, 7635, + 7602, 7638, 7639, 7600, 7599, 7636, 7634, 7641, 7642, 7645, + 7597, 7626, 7626, 7626, 7626, 7626, 7626, 7646, 7647, 7649, + 7602, 7609, 7634, 7634, 7634, 7634, 7634, 7634, 7643, 7643, + 7648, 7621, 7643, 7635, 7644, 7650, 7609, 7644, 7648, 7620, + 7619, 7651, 7652, 7636, 7653, 7654, 7655, 7658, 7657, 7622, + 7624, 7653, 7657, 7664, 7625, 7623, 7659, 7659, 7659, 7659, + 7661, 7665, 7666, 7653, 7667, 7667, 7667, 7667, 7668, 7671, + + 7661, 7665, 7668, 7669, 7672, 7632, 7637, 7669, 7668, 7669, + 7673, 7674, 7675, 7671, 7670, 7670, 7676, 7677, 7678, 7679, + 7680, 7681, 7637, 7637, 7637, 7637, 7637, 7637, 7670, 7658, + 7673, 7637, 7683, 7684, 7637, 7685, 7686, 7687, 7688, 7689, + 7690, 7691, 7695, 7696, 7666, 7698, 7699, 7690, 7700, 7701, + 7731, 7732, 7703, 7730, 7698, 7704, 7734, 7730, 7739, 7667, + 7734, 7735, 7736, 7735, 7740, 7637, 7637, 7637, 7703, 7637, + 7704, 7736, 7731, 7659, 7701, 7744, 7759, 7772, 7773, 7637, + 7739, 7667, 7637, 7637, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7640, + 7640, 7640, 7640, 7640, 7640, 7640, 7640, 7656, 7660, 7660, + 7660, 7660, 7693, 7733, 7694, 7694, 7705, 7706, 7710, 7775, + 7707, 7708, 7709, 7656, 7656, 7656, 7656, 7656, 7656, 7716, + + 7715, 7711, 7656, 7718, 7714, 7656, 7660, 7713, 7717, 7745, + 7712, 7780, 7719, 7742, 7720, 7705, 7782, 7723, 7741, 7745, + 7795, 7774, 7741, 7722, 7741, 7741, 7727, 7774, 7742, 7746, + 7747, 7693, 7721, 7752, 7799, 7728, 7656, 7725, 7656, 7656, + 7656, 7726, 7709, 7724, 7746, 7733, 7750, 7748, 7706, 7751, + 7656, 7716, 7749, 7656, 7656, 7753, 7707, 7708, 7660, 7694, + 7715, 7713, 7705, 7706, 7710, 7660, 7707, 7708, 7709, 7711, + 7718, 7712, 7714, 7719, 7717, 7716, 7715, 7711, 7712, 7718, + 7714, 7720, 7721, 7713, 7717, 7722, 7712, 7723, 7719, 7725, + 7720, 7727, 7724, 7723, 7754, 7747, 7726, 7728, 7743, 7722, + + 7743, 7728, 7727, 7728, 7749, 7751, 7747, 7748, 7721, 7752, + 7743, 7750, 7755, 7725, 7743, 7757, 7756, 7726, 7753, 7724, + 7758, 7761, 7750, 7748, 7760, 7751, 7769, 7770, 7749, 7769, + 7779, 7753, 7777, 7771, 7760, 7784, 7807, 7776, 7784, 7760, + 7761, 7762, 7762, 7762, 7762, 7777, 7754, 7764, 7764, 7764, + 7764, 7778, 7770, 7768, 7768, 7768, 7768, 7781, 7783, 7778, + 7778, 7768, 7783, 7786, 7781, 7809, 7786, 7779, 7783, 7758, + 7754, 7755, 7756, 7797, 7797, 7785, 7757, 7787, 7785, 7788, + 7787, 7768, 7788, 7789, 7790, 7771, 7789, 7790, 7755, 7770, + 7776, 7757, 7756, 7792, 7793, 7771, 7758, 7792, 7794, 7776, + + 7794, 7791, 7762, 7785, 7791, 7787, 7776, 7793, 7764, 7771, + 7800, 7789, 7798, 7798, 7768, 7801, 7800, 7801, 7808, 7811, + 7762, 7763, 7763, 7763, 7763, 7768, 7764, 7796, 7802, 7791, + 7803, 7802, 7768, 7768, 7803, 7763, 7804, 7763, 7763, 7806, + 7763, 7763, 7763, 7763, 7763, 7763, 7805, 7806, 7810, 7812, + 7805, 7813, 7796, 7817, 7814, 7815, 7820, 7823, 7806, 7826, + 7813, 7804, 7818, 7810, 7814, 7815, 7818, 7819, 7818, 7821, + 7822, 7824, 7826, 7818, 7828, 7827, 7819, 7821, 7823, 7822, + 7808, 7829, 7763, 7825, 7808, 7824, 7808, 7825, 7827, 7828, + 7831, 7831, 7832, 7834, 7835, 7830, 7836, 7834, 7833, 7837, + + 7763, 7765, 7765, 7765, 7765, 7830, 7833, 7838, 7841, 7839, + 7849, 7865, 7852, 7835, 7832, 7765, 7842, 7765, 7765, 7868, + 7765, 7765, 7765, 7765, 7765, 7765, 7842, 7852, 7843, 7765, + 7839, 7843, 7844, 7848, 7855, 7849, 7850, 7857, 7843, 7856, + 7850, 7869, 7861, 7844, 7870, 7844, 7844, 7857, 7844, 7844, + 7844, 7844, 7844, 7844, 7856, 7846, 7861, 7844, 7836, 7851, + 7872, 7845, 7765, 7845, 7845, 7845, 7845, 7845, 7845, 7846, + 7851, 7846, 7846, 7846, 7846, 7846, 7846, 7867, 7873, 7874, + 7765, 7766, 7766, 7766, 7766, 7853, 7853, 7853, 7853, 7766, + 7854, 7854, 7854, 7854, 7855, 7848, 7847, 7859, 7766, 7855, + + 7766, 7766, 7766, 7766, 7766, 7766, 7860, 7859, 7846, 7766, + 7847, 7862, 7847, 7847, 7847, 7847, 7847, 7847, 7854, 7860, + 7858, 7847, 7858, 7863, 7862, 7864, 7875, 7863, 7864, 7866, + 7876, 7877, 7878, 7858, 7879, 7864, 7880, 7881, 7866, 7867, + 7880, 7882, 7766, 7883, 7879, 7886, 7880, 7881, 7884, 7847, + 7889, 7882, 7884, 7883, 7885, 7885, 7885, 7885, 7884, 7891, + 7766, 7767, 7767, 7767, 7767, 7890, 7893, 7903, 7890, 7767, + 7886, 7903, 7853, 7913, 7894, 7914, 7892, 7854, 7767, 7917, + 7767, 7767, 7767, 7767, 7767, 7767, 7888, 7892, 7894, 7767, + 7888, 7895, 7896, 7897, 7895, 7896, 7898, 7899, 7899, 7900, + + 7888, 7901, 7902, 7897, 7907, 7905, 7908, 7907, 7909, 7898, + 7885, 7901, 7902, 7904, 7900, 7912, 7908, 7904, 7905, 7885, + 7910, 7910, 7767, 7904, 7915, 7906, 7909, 7906, 7911, 7886, + 7912, 7916, 7911, 7916, 7918, 7919, 7910, 7767, 7906, 7919, + 7767, 7767, 7911, 7920, 7921, 7922, 7925, 7920, 7926, 7915, + 7927, 7928, 7929, 7930, 7931, 7932, 7917, 7930, 7934, 7933, + 7936, 7935, 7934, 7935, 7926, 7927, 7921, 7923, 7937, 7936, + 7938, 7939, 7942, 7945, 7940, 7939, 7931, 7939, 7939, 7947, + 7949, 7944, 7946, 7923, 7923, 7923, 7923, 7923, 7923, 7940, + 7937, 7941, 7923, 7941, 7943, 7923, 7944, 7946, 7947, 7948, + + 7953, 7956, 7948, 7941, 7943, 7949, 7950, 7941, 7956, 7951, + 7955, 7957, 7928, 7953, 7929, 7951, 7952, 7962, 7929, 7958, + 7929, 7933, 7954, 7958, 7960, 7965, 7923, 7928, 7923, 7958, + 7954, 7954, 7959, 7961, 7972, 7961, 7959, 7960, 7923, 7967, + 7923, 7967, 7949, 7923, 7923, 7924, 7966, 7955, 7963, 7963, + 7964, 7964, 7966, 7968, 7974, 7969, 7968, 7973, 7950, 7969, + 7975, 7924, 7924, 7924, 7924, 7924, 7924, 7970, 7950, 7952, + 7924, 7970, 7971, 7924, 7976, 7975, 7977, 7978, 7952, 7979, + 7971, 7981, 7950, 7980, 7982, 7952, 7978, 7983, 7982, 7979, + 7982, 7971, 7984, 7980, 7985, 7982, 7983, 7988, 7993, 7986, + + 7990, 7989, 7985, 7987, 7924, 7989, 7924, 7924, 7986, 7996, + 7994, 7988, 8000, 7990, 7991, 7992, 7995, 7995, 7924, 7973, + 7994, 7924, 7924, 7973, 7987, 7973, 7997, 7991, 7998, 7999, + 7992, 7996, 7998, 8001, 7997, 8002, 8003, 8004, 8005, 8003, + 8006, 8007, 8005, 8008, 8017, 8002, 8003, 8009, 7999, 8011, + 8010, 8006, 8010, 8012, 8001, 8013, 8007, 8009, 8008, 8011, + 8014, 8015, 8018, 8010, 8019, 8015, 8012, 8016, 8020, 8013, + 8016, 8018, 8021, 8014, 8000, 8022, 8021, 8016, 8020, 8023, + 8024, 8028, 8021, 8025, 8027, 8022, 8030, 8025, 8027, 8023, + 8024, 8031, 8032, 8025, 8026, 8026, 8026, 8026, 8027, 8004, + + 8029, 8033, 8031, 8029, 8034, 8035, 8036, 8034, 8035, 8037, + 8038, 8038, 8039, 8040, 8041, 8033, 8036, 8042, 8044, 8048, + 8052, 8042, 8037, 8040, 8041, 8043, 8019, 8039, 8045, 8043, + 8045, 8044, 8047, 8046, 8051, 8043, 8046, 8048, 8049, 8049, + 8053, 8045, 8047, 8050, 8054, 8057, 8054, 8050, 8055, 8051, + 8026, 8056, 8055, 8058, 8049, 8056, 8059, 8050, 8060, 8026, + 8061, 8062, 8063, 8065, 8066, 8062, 8067, 8057, 8068, 8071, + 8072, 8073, 8074, 8063, 8075, 8076, 8077, 8079, 8080, 8081, + 8082, 8083, 8084, 8085, 8086, 8087, 8088, 8089, 8090, 8091, + 8092, 8093, 8091, 8094, 8095, 8096, 8097, 8098, 8099, 8100, + + 8074, 8101, 8102, 8103, 8105, 8106, 8107, 8108, 8109, 8110, + 8111, 8097, 8114, 8110, 8112, 8112, 8112, 8112, 8115, 8118, + 8120, 8112, 8118, 8120, 8121, 8122, 8119, 8124, 8126, 8123, + 8127, 8131, 8081, 8122, 8123, 8125, 8129, 8086, 8135, 8088, + 8119, 8090, 8133, 8119, 8125, 8133, 8126, 8095, 8119, 8132, + 8128, 8132, 8124, 8128, 8128, 8137, 8128, 8139, 8140, 8138, + 8141, 8129, 8134, 8138, 8144, 8145, 8143, 8146, 8128, 8136, + 8143, 8147, 8148, 8149, 8150, 8148, 8154, 8137, 8152, 8151, + 8142, 8153, 8152, 8156, 8157, 8147, 8156, 8103, 8151, 8162, + 8150, 8158, 8155, 8147, 8164, 8149, 8155, 8161, 8155, 8155, + + 8165, 8173, 8163, 8112, 8116, 8135, 8182, 8167, 8165, 8161, + 8155, 8168, 8164, 8161, 8135, 8171, 8158, 8161, 8145, 8170, + 8116, 8116, 8116, 8116, 8116, 8116, 8174, 8134, 8189, 8116, + 8211, 8136, 8116, 8142, 8212, 8136, 8166, 8136, 8134, 8166, + 8213, 8172, 8142, 8169, 8172, 8145, 8142, 8146, 8142, 8136, + 8159, 8174, 8184, 8153, 8159, 8184, 8159, 8186, 8160, 8177, + 8142, 8153, 8160, 8116, 8160, 8116, 8159, 8177, 8159, 8188, + 8168, 8181, 8186, 8160, 8163, 8180, 8160, 8116, 8181, 8167, + 8116, 8116, 8163, 8167, 8116, 8117, 8170, 8168, 8180, 8185, + 8185, 8171, 8194, 8187, 8183, 8170, 8175, 8175, 8175, 8175, + + 8190, 8117, 8117, 8117, 8117, 8117, 8117, 8183, 8169, 8218, + 8117, 8191, 8190, 8117, 8176, 8176, 8176, 8176, 8187, 8169, + 8192, 8188, 8193, 8193, 8195, 8192, 8196, 8195, 8199, 8198, + 8197, 8199, 8193, 8200, 8209, 8198, 8200, 8196, 8201, 8209, + 8219, 8201, 8176, 8198, 8117, 8188, 8117, 8194, 8197, 8188, + 8203, 8203, 8203, 8203, 8206, 8208, 8199, 8206, 8117, 8208, + 8207, 8117, 8117, 8207, 8191, 8117, 8201, 8204, 8204, 8204, + 8204, 8214, 8210, 8187, 8215, 8216, 8217, 8208, 8220, 8221, + 8191, 8220, 8222, 8175, 8223, 8224, 8225, 8231, 8207, 8237, + 8231, 8191, 8210, 8239, 8216, 8217, 8214, 8240, 8241, 8215, + + 8240, 8176, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, 8179, + 8179, 8179, 8179, 8179, 8179, 8202, 8226, 8227, 8202, 8205, + + 8205, 8205, 8205, 8228, 8229, 8230, 8232, 8233, 8226, 8230, + 8244, 8230, 8234, 8227, 8238, 8236, 8243, 8245, 8229, 8235, + 8230, 8229, 8246, 8230, 8228, 8243, 8229, 8205, 8232, 8235, + 8235, 8246, 8233, 8236, 8234, 8242, 8247, 8242, 8249, 8248, + 8251, 8252, 8253, 8254, 8250, 8257, 8247, 8248, 8250, 8251, + 8250, 8260, 8255, 8254, 8247, 8250, 8249, 8261, 8267, 8252, + 8202, 8255, 8250, 8256, 8258, 8259, 8256, 8251, 8258, 8259, + 8263, 8265, 8262, 8269, 8265, 8261, 8238, 8262, 8202, 8270, + 8238, 8266, 8238, 8271, 8263, 8273, 8266, 8259, 8264, 8264, + 8264, 8264, 8263, 8268, 8238, 8272, 8268, 8270, 8269, 8275, + + 8274, 8276, 8273, 8272, 8274, 8277, 8277, 8279, 8278, 8275, + 8280, 8281, 8282, 8280, 8283, 8276, 8278, 8285, 8284, 8281, + 8288, 8281, 8289, 8286, 8283, 8284, 8292, 8293, 8290, 8292, + 8293, 8295, 8283, 8284, 8286, 8287, 8286, 8286, 8267, 8286, + 8286, 8286, 8286, 8286, 8286, 8298, 8300, 8289, 8286, 8287, + 8290, 8287, 8287, 8287, 8287, 8287, 8287, 8291, 8296, 8301, + 8287, 8296, 8297, 8302, 8291, 8294, 8294, 8294, 8294, 8299, + 8297, 8264, 8303, 8304, 8307, 8264, 8308, 8305, 8304, 8285, + 8303, 8305, 8299, 8285, 8310, 8285, 8306, 8279, 8287, 8299, + 8312, 8306, 8309, 8294, 8308, 8311, 8307, 8285, 8313, 8309, + + 8288, 8314, 8310, 8315, 8311, 8316, 8317, 8309, 8318, 8319, + 8320, 8321, 8322, 8323, 8324, 8325, 8326, 8326, 8327, 8329, + 8330, 8331, 8332, 8333, 8340, 8298, 8330, 8329, 8336, 8331, + 8332, 8334, 8361, 8333, 8330, 8365, 8337, 8334, 8339, 8340, + 8338, 8333, 8337, 8302, 8345, 8334, 8335, 8335, 8335, 8335, + 8337, 8341, 8294, 8336, 8338, 8343, 8339, 8342, 8346, 8344, + 8347, 8348, 8338, 8344, 8342, 8345, 8348, 8349, 8347, 8341, + 8312, 8353, 8350, 8343, 8351, 8352, 8355, 8355, 8354, 8346, + 8356, 8357, 8351, 8352, 8354, 8356, 8349, 8350, 8358, 8360, + 8350, 8359, 8354, 8353, 8357, 8362, 8359, 8360, 8366, 8363, + + 8364, 8357, 8335, 8364, 8370, 8367, 8368, 8369, 8372, 8358, + 8367, 8362, 8336, 8363, 8362, 8371, 8366, 8373, 8374, 8375, + 8370, 8363, 8376, 8371, 8377, 8387, 8376, 8379, 8379, 8335, + 8389, 8368, 8369, 8375, 8380, 8380, 8380, 8380, 8384, 8384, + 8374, 8386, 8380, 8381, 8381, 8381, 8381, 8397, 8386, 8390, + 8390, 8381, 8382, 8382, 8382, 8382, 8383, 8383, 8383, 8383, + 8382, 8385, 8391, 8391, 8383, 8392, 8392, 8393, 8394, 8395, + 8394, 8385, 8396, 8398, 8401, 8402, 8399, 8403, 8404, 8395, + 8405, 8399, 8396, 8406, 8407, 8408, 8409, 8410, 8411, 8380, + 8380, 8412, 8413, 8415, 8414, 8416, 8418, 8373, 8381, 8381, + + 8419, 8420, 8379, 8421, 8422, 8423, 8426, 8382, 8382, 8424, + 8429, 8383, 8383, 8384, 8431, 8432, 8433, 8434, 8435, 8436, + 8437, 8438, 8439, 8440, 8390, 8435, 8441, 8442, 8393, 8399, + 8443, 8444, 8445, 8392, 8391, 8446, 8447, 8448, 8449, 8450, + 8454, 8455, 8452, 8393, 8456, 8410, 8459, 8412, 8457, 8462, + 8424, 8413, 8415, 8423, 8420, 8452, 8460, 8461, 8464, 8461, + 8465, 8466, 8399, 8414, 8425, 8457, 8467, 8468, 8469, 8470, + 8460, 8471, 8461, 8472, 8473, 8474, 8464, 8456, 8476, 8477, + 8425, 8425, 8425, 8425, 8425, 8425, 8478, 8463, 8479, 8425, + 8480, 8463, 8425, 8481, 8455, 8463, 8482, 8463, 8483, 8455, + + 8487, 8488, 8489, 8517, 8491, 8518, 8459, 8462, 8492, 8520, + 8455, 8459, 8521, 8522, 8543, 8521, 8492, 8526, 8465, 8491, + 8518, 8489, 8492, 8425, 8525, 8425, 8523, 8425, 8517, 8544, + 8523, 8526, 8525, 8545, 8520, 8560, 8561, 8425, 8562, 8565, + 8425, 8425, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, 8430, + 8430, 8430, 8430, 8430, 8430, 8451, 8484, 8490, 8485, 8493, + 8486, 8486, 8494, 8496, 8499, 8497, 8502, 8495, 8566, 8555, + 8503, 8451, 8451, 8451, 8451, 8451, 8451, 8500, 8504, 8501, + 8451, 8506, 8509, 8451, 8505, 8510, 8527, 8493, 8529, 8511, + 8507, 8508, 8569, 8554, 8555, 8512, 8570, 8527, 8574, 8532, + 8513, 8515, 8529, 8567, 8583, 8484, 8530, 8485, 8534, 8537, + 8584, 8531, 8554, 8451, 8451, 8490, 8451, 8495, 8451, 8485, + + 8486, 8512, 8567, 8514, 8499, 8500, 8496, 8501, 8451, 8494, + 8509, 8451, 8451, 8497, 8502, 8493, 8503, 8504, 8494, 8496, + 8499, 8497, 8502, 8495, 8505, 8507, 8503, 8508, 8506, 8515, + 8512, 8516, 8510, 8500, 8504, 8501, 8511, 8506, 8509, 8513, + 8505, 8510, 8530, 8531, 8532, 8511, 8507, 8508, 8513, 8533, + 8528, 8512, 8514, 8539, 8528, 8532, 8513, 8515, 8528, 8514, + 8528, 8534, 8530, 8536, 8534, 8537, 8538, 8531, 8540, 8528, + 8541, 8542, 8575, 8559, 8557, 8542, 8575, 8559, 8563, 8514, + 8516, 8559, 8572, 8559, 8564, 8542, 8558, 8558, 8558, 8558, + 8558, 8558, 8573, 8571, 8573, 8579, 8572, 8516, 8594, 8557, + + 8576, 8533, 8539, 8585, 8576, 8571, 8580, 8516, 8577, 8564, + 8571, 8536, 8577, 8600, 8538, 8579, 8582, 8580, 8605, 8540, + 8549, 8549, 8549, 8549, 8558, 8533, 8557, 8582, 8585, 8539, + 8578, 8563, 8552, 8552, 8552, 8552, 8541, 8564, 8586, 8536, + 8552, 8591, 8538, 8581, 8540, 8599, 8541, 8546, 8546, 8546, + 8546, 8587, 8586, 8591, 8587, 8547, 8547, 8547, 8547, 8606, + 8552, 8546, 8581, 8546, 8546, 8599, 8546, 8546, 8546, 8546, + 8546, 8546, 8547, 8588, 8547, 8547, 8547, 8547, 8547, 8547, + 8601, 8549, 8578, 8589, 8550, 8550, 8550, 8550, 8578, 8610, + 8588, 8592, 8549, 8552, 8601, 8592, 8589, 8595, 8595, 8549, + + 8549, 8551, 8551, 8551, 8551, 8602, 8603, 8608, 8546, 8551, + 8552, 8552, 8550, 8593, 8593, 8597, 8547, 8602, 8603, 8597, + 8596, 8612, 8553, 8553, 8553, 8553, 8546, 8604, 8602, 8551, + 8553, 8593, 8593, 8615, 8547, 8548, 8548, 8548, 8548, 8596, + 8616, 8604, 8609, 8598, 8607, 8550, 8604, 8598, 8614, 8622, + 8553, 8598, 8548, 8598, 8548, 8548, 8548, 8548, 8548, 8548, + 8550, 8607, 8551, 8550, 8550, 8608, 8611, 8609, 8613, 8617, + 8611, 8620, 8618, 8623, 8614, 8620, 8621, 8624, 8619, 8625, + 8551, 8551, 8627, 8553, 8630, 8613, 8615, 8553, 8619, 8626, + 8621, 8608, 8629, 8626, 8617, 8627, 8548, 8618, 8628, 8632, + + 8634, 8553, 8631, 8626, 8635, 8629, 8631, 8633, 8636, 8637, + 8631, 8548, 8631, 8631, 8548, 8548, 8638, 8628, 8633, 8641, + 8642, 8644, 8617, 8645, 8646, 8647, 8648, 8649, 8651, 8650, + 8652, 8656, 8658, 8636, 8653, 8653, 8653, 8653, 8623, 8648, + 8649, 8650, 8647, 8652, 8657, 8651, 8654, 8654, 8654, 8654, + 8659, 8664, 8660, 8661, 8656, 8660, 8660, 8657, 8662, 8665, + 8666, 8663, 8662, 8667, 8668, 8661, 8662, 8667, 8662, 8667, + 8665, 8664, 8669, 8659, 8654, 8663, 8661, 8671, 8668, 8670, + 8672, 8673, 8668, 8675, 8669, 8674, 8676, 8677, 8671, 8679, + 8653, 8678, 8670, 8672, 8681, 8683, 8680, 8676, 8690, 8678, + + 8677, 8675, 8654, 8680, 8674, 8678, 8684, 8682, 8685, 8684, + 8680, 8682, 8679, 8691, 8692, 8693, 8694, 8695, 8696, 8698, + 8697, 8685, 8688, 8699, 8701, 8703, 8706, 8707, 8704, 8708, + 8709, 8713, 8702, 8712, 8722, 8700, 8711, 8720, 8688, 8688, + 8688, 8688, 8688, 8688, 8723, 8705, 8718, 8688, 8714, 8736, + 8688, 8754, 8710, 8715, 8756, 8758, 8726, 8717, 8724, 8759, + 8721, 8716, 8728, 8727, 8732, 8735, 8737, 8791, 8719, 8738, + 8692, 8690, 8725, 8742, 8740, 8739, 8731, 8694, 8729, 8691, + 8696, 8688, 8733, 8688, 8730, 8691, 8697, 8734, 8693, 8713, + 8692, 8698, 8699, 8712, 8702, 8688, 8701, 8700, 8688, 8688, + + 8689, 8700, 8741, 8700, 8702, 8704, 8708, 8705, 8711, 8717, + 8714, 8705, 8700, 8705, 8720, 8715, 8689, 8689, 8689, 8689, + 8689, 8689, 8710, 8716, 8718, 8689, 8719, 8710, 8689, 8721, + 8724, 8726, 8728, 8725, 8727, 8731, 8729, 8719, 8737, 8738, + 8729, 8732, 8730, 8735, 8733, 8739, 8743, 8744, 8742, 8734, + 8738, 8740, 8745, 8734, 8746, 8734, 8747, 8748, 8751, 8689, + 8741, 8689, 8749, 8750, 8752, 8753, 8766, 8760, 8768, 8764, + 8769, 8755, 8797, 8689, 8757, 8761, 8689, 8689, 8762, 8798, + 8763, 8765, 8767, 8799, 8800, 8802, 8771, 8773, 8804, 8775, + 8774, 8805, 8806, 8770, 8778, 8772, 8781, 8804, 8784, 8779, + + 8777, 8780, 8776, 8782, 8789, 8807, 8787, 8786, 8808, 8744, + 8809, 8794, 8788, 8783, 8790, 8785, 8810, 8812, 8792, 8748, + 8793, 8795, 8813, 8814, 8747, 8750, 8768, 8745, 8796, 8751, + 8743, 8815, 8817, 8755, 8749, 8750, 8753, 8755, 8746, 8755, + 8755, 8752, 8760, 8757, 8764, 8773, 8761, 8766, 8774, 8762, + 8763, 8769, 8765, 8767, 8770, 8770, 8771, 8772, 8775, 8773, + 8776, 8772, 8777, 8772, 8777, 8781, 8778, 8771, 8774, 8779, + 8778, 8783, 8780, 8785, 8782, 8784, 8786, 8787, 8788, 8790, + 8792, 8793, 8794, 8819, 8788, 8789, 8790, 8820, 8821, 8795, + 8796, 8785, 8822, 8822, 8822, 8822, 8823, 8825, 8826, 8828, + + 8827, 8829, 8830, 8832, 8834, 8836, 8837, 8839, 8840, 8843, + 8844, 8845, 8846, 8847, 8848, 8849, 8850, 8851, 8852, 8853, + 8854, 8855, 8858, 8843, 8856, 8857, 8846, 8855, 8859, 8860, + 8861, 8862, 8863, 8865, 8866, 8867, 8868, 8869, 8870, 8871, + 8873, 8870, 8874, 8875, 8876, 8877, 8864, 8858, 8878, 8880, + 8884, 8881, 8879, 8883, 8885, 8881, 8862, 8881, 8886, 8866, + 8826, 8868, 8879, 8887, 8888, 8898, 8881, 8874, 8895, 8893, + 8826, 8827, 8856, 8903, 8890, 8837, 8827, 8841, 8883, 8893, + 8857, 8890, 8894, 8894, 8862, 8899, 8895, 8866, 8907, 8909, + 8912, 8915, 8916, 8841, 8841, 8841, 8841, 8841, 8841, 8864, + + 8856, 8857, 8841, 8896, 8901, 8841, 8886, 8905, 8864, 8917, + 8899, 8918, 8864, 8896, 8864, 8891, 8891, 8891, 8891, 8902, + 8888, 8911, 8919, 8902, 8913, 8902, 8911, 8913, 8887, 8901, + 8885, 8920, 8905, 8921, 8886, 8923, 8841, 8924, 8841, 8887, + 8888, 8914, 8925, 8926, 8914, 8927, 8928, 8929, 8930, 8923, + 8841, 8931, 8913, 8841, 8841, 8842, 8901, 8932, 8933, 8934, + 8905, 8909, 8931, 8935, 8936, 8937, 8940, 8941, 8942, 8914, + 8943, 8842, 8842, 8842, 8842, 8842, 8842, 8935, 8944, 8946, + 8842, 8947, 8948, 8842, 8949, 8951, 8950, 8952, 8953, 8891, + 8950, 8954, 8941, 8955, 8956, 8957, 8959, 8960, 8956, 8929, + + 8956, 8964, 8891, 8961, 8961, 8961, 8961, 8967, 8968, 8969, + 8970, 8971, 8972, 8973, 8842, 8964, 8842, 8974, 8976, 8968, + 8978, 8979, 8980, 8981, 8982, 8986, 8987, 8988, 8842, 8991, + 8993, 8842, 8842, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, 8892, + 8892, 8892, 8892, 8892, 8892, 8892, 8958, 8958, 8958, 8958, + 8962, 8962, 8962, 8962, 8966, 8975, 8977, 8983, 8984, 8985, + 8989, 8990, 8992, 8994, 8995, 8996, 8997, 9001, 8999, 9005, + 9006, 8990, 8999, 9007, 8999, 8999, 9009, 9010, 8962, 8966, + 9012, 8977, 8983, 8984, 8985, 9008, 9013, 8992, 9014, 9015, + 8996, 9016, 9008, 9017, 9005, 9018, 9022, 9023, 9024, 9025, + 9026, 9027, 9028, 9028, 9028, 9028, 9029, 9030, 9031, 9032, + 9033, 8984, 9034, 9034, 9035, 9036, 9038, 9037, 9039, 9036, + + 9040, 9036, 9041, 9042, 9041, 9035, 9043, 9042, 9044, 9045, + 9028, 9037, 8989, 8958, 9046, 9047, 9038, 9048, 9049, 8975, + 9051, 9050, 9052, 9053, 9054, 9055, 9056, 9058, 9059, 9060, + 9054, 9061, 9062, 9056, 9063, 9064, 9065, 9065, 9028, 9050, + 9067, 9067, 9066, 9066, 9066, 9066, 9068, 9069, 9070, 9071, + 9066, 9072, 9072, 9073, 9073, 9075, 9061, 9074, 9074, 9076, + 9077, 9079, 9078, 9080, 9081, 9082, 9083, 9084, 9085, 9086, + 9087, 9088, 9089, 9090, 9091, 9092, 9083, 9093, 9094, 9095, + 9096, 9098, 9105, 9099, 9100, 9103, 9108, 9106, 9107, 9109, + 9112, 9110, 9113, 9111, 9127, 9114, 9065, 9066, 9066, 9116, + + 9115, 9117, 9125, 9119, 9124, 9124, 9075, 9106, 9107, 9129, + 9118, 9072, 9118, 9130, 9105, 9131, 9068, 9099, 9100, 9113, + 9115, 9076, 9110, 9114, 9103, 9111, 9108, 9109, 9090, 9112, + 9077, 9075, 9078, 9091, 9119, 9092, 9074, 9121, 9116, 9118, + 9117, 9132, 9133, 9119, 9093, 9101, 9120, 9122, 9135, 9139, + 9126, 9132, 9134, 9140, 9137, 9125, 9142, 9121, 9133, 9143, + 9135, 9101, 9101, 9101, 9101, 9101, 9101, 9120, 9122, 9144, + 9101, 9145, 9148, 9101, 9120, 9126, 9149, 9134, 9130, 9137, + 9150, 9152, 9153, 9154, 9155, 9122, 9158, 9160, 9160, 9161, + 9162, 9162, 9188, 9188, 9163, 9190, 9188, 9191, 9160, 9189, + + 9189, 9200, 9206, 9126, 9101, 9163, 9101, 9191, 9101, 9192, + 9208, 9101, 9192, 9223, 9161, 9225, 9206, 9101, 9101, 9227, + 9228, 9101, 9101, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + + 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, 9102, + 9102, 9102, 9102, 9102, 9102, 9102, 9123, 9156, 9193, 9136, + 9157, 9157, 9232, 9224, 9230, 9230, 9240, 9218, 9240, 9193, + 9253, 9226, 9123, 9123, 9123, 9123, 9123, 9123, 9218, 9193, + 9221, 9123, 9226, 9209, 9123, 9209, 9209, 9209, 9209, 9209, + 9209, 9229, 9219, 9219, 9219, 9219, 9219, 9219, 9231, 9233, + 9234, 9229, 9221, 9244, 9237, 9243, 9156, 9255, 9233, 9234, + 9231, 9156, 9238, 9238, 9243, 9123, 9224, 9123, 9237, 9123, + 9136, 9136, 9157, 9245, 9245, 9136, 9244, 9136, 9258, 9123, + 9219, 9253, 9123, 9123, 9159, 9159, 9159, 9159, 9159, 9159, + + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9159, + 9159, 9159, 9159, 9159, 9159, 9159, 9159, 9164, 9165, 9166, + 9167, 9168, 9169, 9170, 9171, 9172, 9175, 9173, 9176, 9174, + + 9254, 9239, 9178, 9182, 9250, 9180, 9239, 9181, 9254, 9179, + 9256, 9250, 9239, 9177, 9251, 9260, 9197, 9251, 9251, 9256, + 9257, 9184, 9261, 9264, 9183, 9260, 9195, 9194, 9205, 9202, + 9267, 9257, 9269, 9261, 9270, 9185, 9187, 9271, 9186, 9203, + 9165, 9198, 9199, 9196, 9169, 9273, 9274, 9204, 9280, 9167, + 9276, 9168, 9173, 9180, 9166, 9174, 9178, 9180, 9170, 9181, + 9172, 9171, 9182, 9164, 9165, 9166, 9167, 9168, 9169, 9170, + 9171, 9172, 9175, 9173, 9176, 9174, 9177, 9179, 9178, 9182, + 9183, 9180, 9184, 9181, 9185, 9179, 9186, 9195, 9187, 9177, + 9194, 9196, 9197, 9198, 9202, 9205, 9199, 9184, 9203, 9204, + + 9183, 9276, 9195, 9194, 9205, 9202, 9211, 9211, 9211, 9211, + 9279, 9185, 9187, 9279, 9186, 9203, 9266, 9198, 9199, 9196, + 9281, 9278, 9282, 9204, 9207, 9207, 9207, 9207, 9213, 9213, + 9213, 9213, 9210, 9210, 9210, 9210, 9241, 9278, 9207, 9283, + 9207, 9207, 9284, 9207, 9207, 9207, 9207, 9207, 9207, 9210, + 9246, 9210, 9210, 9210, 9210, 9210, 9210, 9212, 9212, 9212, + 9212, 9214, 9214, 9214, 9214, 9235, 9285, 9211, 9215, 9215, + 9215, 9215, 9216, 9216, 9216, 9216, 9215, 9266, 9259, 9286, + 9216, 9246, 9211, 9287, 9262, 9211, 9211, 9241, 9241, 9213, + 9235, 9217, 9217, 9217, 9217, 9290, 9215, 9272, 9292, 9217, + + 9216, 9242, 9242, 9242, 9242, 9272, 9213, 9213, 9210, 9262, + 9246, 9272, 9210, 9268, 9268, 9268, 9268, 9235, 9212, 9217, + 9295, 9275, 9214, 9293, 9289, 9252, 9214, 9277, 9293, 9215, + 9259, 9299, 9277, 9216, 9246, 9275, 9212, 9212, 9277, 9289, + 9214, 9252, 9252, 9252, 9252, 9252, 9252, 9215, 9288, 9298, + 9298, 9216, 9217, 9216, 9236, 9217, 9236, 9236, 9296, 9236, + 9236, 9236, 9236, 9236, 9236, 9242, 9291, 9297, 9262, 9300, + 9217, 9288, 9296, 9301, 9302, 9305, 9303, 9268, 9291, 9302, + 9304, 9300, 9308, 9297, 9307, 9310, 9252, 9303, 9242, 9305, + 9309, 9309, 9304, 9301, 9306, 9306, 9307, 9252, 9315, 9306, + + 9268, 9306, 9311, 9310, 9312, 9311, 9313, 9313, 9314, 9312, + 9317, 9313, 9316, 9313, 9318, 9312, 9319, 9320, 9321, 9314, + 9322, 9316, 9326, 9325, 9327, 9328, 9329, 9330, 9332, 9333, + 9331, 9334, 9322, 9325, 9331, 9335, 9330, 9336, 9332, 9337, + 9338, 9334, 9333, 9339, 9340, 9341, 9342, 9336, 9332, 9338, + 9343, 9344, 9345, 9346, 9342, 9340, 9335, 9346, 9343, 9347, + 9347, 9348, 9351, 9346, 9344, 9350, 9355, 9358, 9319, 9349, + 9349, 9349, 9349, 9350, 9352, 9318, 9352, 9319, 9354, 9321, + 9321, 9353, 9354, 9356, 9351, 9326, 9357, 9353, 9359, 9360, + 9363, 9365, 9362, 9357, 9321, 9361, 9359, 9368, 9326, 9360, + + 9319, 9323, 9362, 9366, 9361, 9364, 9364, 9364, 9364, 9372, + 9366, 9367, 9375, 9348, 9373, 9370, 9366, 9323, 9323, 9323, + 9323, 9323, 9323, 9369, 9367, 9374, 9323, 9369, 9355, 9323, + 9370, 9371, 9376, 9369, 9349, 9371, 9373, 9377, 9355, 9374, + 9378, 9379, 9380, 9376, 9378, 9356, 9381, 9382, 9383, 9368, + 9385, 9392, 9363, 9384, 9386, 9380, 9349, 9387, 9386, 9389, + 9323, 9381, 9323, 9323, 9384, 9388, 9393, 9387, 9393, 9385, + 9364, 9391, 9389, 9323, 9323, 9399, 9388, 9323, 9323, 9324, + 9390, 9395, 9391, 9395, 9390, 9394, 9390, 9397, 9401, 9402, + 9406, 9397, 9364, 9397, 9408, 9324, 9324, 9324, 9324, 9324, + + 9324, 9396, 9394, 9398, 9324, 9396, 9400, 9324, 9403, 9404, + 9405, 9396, 9409, 9398, 9400, 9410, 9413, 9414, 9415, 9416, + 9418, 9405, 9420, 9421, 9425, 9426, 9427, 9427, 9427, 9427, + 9429, 9430, 9431, 9432, 9434, 9435, 9413, 9436, 9324, 9437, + 9324, 9324, 9438, 9439, 9440, 9431, 9441, 9445, 9440, 9446, + 9447, 9402, 9324, 9448, 9449, 9324, 9324, 9451, 9445, 9449, + 9403, 9452, 9450, 9453, 9454, 9455, 9458, 9410, 9455, 9458, + 9403, 9404, 9450, 9459, 9460, 9450, 9461, 9454, 9463, 9458, + 9464, 9465, 9451, 9466, 9467, 9404, 9452, 9468, 9470, 9469, + 9473, 9479, 9403, 9469, 9471, 9472, 9471, 9467, 9484, 9474, + + 9481, 9472, 9474, 9486, 9481, 9485, 9481, 9473, 9485, 9474, + 9487, 9486, 9490, 9488, 9481, 9481, 9488, 9430, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + + 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, 9442, + 9442, 9443, 9462, 9494, 9493, 9457, 9493, 9478, 9456, 9477, + 9476, 9489, 9491, 9495, 9496, 9499, 9491, 9443, 9443, 9443, + 9443, 9443, 9443, 9500, 9482, 9501, 9443, 9462, 9482, 9443, + 9482, 9483, 9502, 9492, 9482, 9483, 9489, 9483, 9482, 9503, + 9483, 9504, 9497, 9498, 9482, 9483, 9492, 9497, 9498, 9506, + 9505, 9509, 9508, 9512, 9507, 9462, 9511, 9477, 9508, 9513, + 9443, 9510, 9443, 9505, 9503, 9507, 9515, 9510, 9511, 9478, + 9510, 9514, 9522, 9519, 9443, 9514, 9443, 9443, 9443, 9444, + 9456, 9457, 9476, 9478, 9456, 9477, 9476, 9517, 9519, 9524, + + 9525, 9503, 9517, 9518, 9520, 9444, 9444, 9444, 9444, 9444, + 9444, 9520, 9518, 9530, 9444, 9521, 9529, 9444, 9531, 9521, + 9532, 9533, 9529, 9535, 9534, 9536, 9535, 9538, 9515, 9534, + 9539, 9538, 9521, 9539, 9541, 9544, 9543, 9546, 9547, 9549, + 9552, 9515, 9553, 9554, 9547, 9554, 9551, 9556, 9444, 9543, + 9444, 9557, 9551, 9558, 9522, 9551, 9559, 9522, 9560, 9561, + 9562, 9563, 9444, 9565, 9444, 9444, 9444, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, 9480, + 9516, 9516, 9516, 9516, 9523, 9526, 9526, 9526, 9526, 9527, + 9527, 9527, 9527, 9537, 9540, 9542, 9545, 9545, 9545, 9545, + 9548, 9550, 9566, 9555, 9567, 9568, 9569, 9570, 9571, 9571, + 9572, 9573, 9574, 9573, 9575, 9577, 9570, 9527, 9576, 9540, + + 9555, 9578, 9576, 9575, 9576, 9548, 9579, 9580, 9579, 9576, + 9581, 9576, 9582, 9583, 9582, 9584, 9587, 9590, 9585, 9583, + 9580, 9585, 9591, 9588, 9584, 9537, 9586, 9588, 9586, 9588, + 9589, 9592, 9589, 9594, 9599, 9592, 9588, 9591, 9516, 9523, + 9593, 9597, 9595, 9601, 9594, 9602, 9550, 9516, 9595, 9604, + 9542, 9595, 9526, 9593, 9545, 9596, 9527, 9598, 9540, 9596, + 9598, 9596, 9600, 9545, 9603, 9605, 9597, 9600, 9596, 9603, + 9606, 9607, 9610, 9607, 9609, 9609, 9611, 9612, 9613, 9614, + 9614, 9617, 9616, 9615, 9615, 9618, 9619, 9620, 9621, 9622, + 9623, 9624, 9625, 9626, 9627, 9628, 9625, 9629, 9630, 9631, + + 9632, 9604, 9633, 9634, 9635, 9637, 9640, 9644, 9619, 9636, + 9636, 9636, 9636, 9636, 9645, 9646, 9647, 9648, 9649, 9651, + 9602, 9652, 9650, 9657, 9604, 9647, 9646, 9654, 9648, 9655, + 9653, 9644, 9606, 9604, 9616, 9658, 9609, 9655, 9645, 9649, + 9605, 9614, 9650, 9653, 9658, 9606, 9606, 9615, 9660, 9654, + 9667, 9662, 9669, 9670, 9674, 9640, 9675, 9672, 9616, 9676, + 9632, 9672, 9677, 9678, 9657, 9660, 9662, 9672, 9633, 9636, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, 9641, + 9641, 9641, 9641, 9642, 9656, 9659, 9661, 9663, 9656, 9664, + 9668, 9665, 9679, 9671, 9673, 9680, 9681, 9682, 9683, 9642, + 9642, 9642, 9642, 9642, 9642, 9685, 9661, 9692, 9642, 9659, + 9694, 9642, 9656, 9695, 9663, 9665, 9721, 9664, 9722, 9673, + + 9690, 9690, 9695, 9694, 9723, 9724, 9722, 9725, 9729, 9737, + 9739, 9722, 9741, 9742, 9725, 9749, 9721, 9751, 9754, 9724, + 9758, 9760, 9642, 9668, 9642, 9671, 9642, 9755, 9761, 9765, + 9755, 9760, 9754, 9766, 9767, 9642, 9642, 9768, 9761, 9642, + 9642, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, 9643, + 9643, 9643, 9643, 9643, 9666, 9687, 9698, 9688, 9688, 9689, + 9689, 9689, 9689, 9697, 9701, 9706, 9699, 9700, 9702, 9703, + 9666, 9666, 9666, 9666, 9666, 9666, 9753, 9759, 9777, 9666, + 9778, 9779, 9666, 9780, 9778, 9783, 9738, 9738, 9738, 9738, + 9756, 9759, 9756, 9756, 9756, 9756, 9756, 9756, 9753, 9788, + 9738, 9775, 9738, 9738, 9687, 9738, 9738, 9738, 9738, 9738, + 9738, 9774, 9698, 9666, 9699, 9666, 9666, 9666, 9789, 9700, + + 9687, 9688, 9781, 9781, 9774, 9703, 9775, 9666, 9697, 9701, + 9666, 9666, 9698, 9702, 9790, 9792, 9793, 9799, 9706, 9697, + 9701, 9706, 9699, 9700, 9702, 9703, 9689, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, 9693, + 9704, 9705, 9709, 9710, 9712, 9711, 9713, 9714, 9715, 9716, + 9717, 9772, 9720, 9776, 9784, 9798, 9796, 9731, 9734, 9782, + 9732, 9718, 9719, 9726, 9727, 9728, 9796, 9782, 9800, 9798, + 9736, 9733, 9735, 9740, 9740, 9740, 9740, 9797, 9776, 9784, + 9772, 9801, 9802, 9743, 9743, 9743, 9743, 9797, 9803, 9804, + 9709, 9805, 9704, 9806, 9810, 9812, 9715, 9820, 9716, 9825, + 9808, 9717, 9744, 9744, 9744, 9744, 9705, 9808, 9813, 9710, + 9711, 9712, 9732, 9828, 9734, 9813, 9704, 9705, 9709, 9710, + + 9712, 9711, 9713, 9714, 9715, 9716, 9717, 9718, 9720, 9719, + 9726, 9727, 9728, 9731, 9734, 9736, 9732, 9718, 9719, 9726, + 9727, 9728, 9733, 9735, 9743, 9829, 9736, 9733, 9735, 9740, + 9830, 9773, 9817, 9740, 9745, 9745, 9745, 9745, 9746, 9746, + 9746, 9746, 9743, 9744, 9747, 9747, 9747, 9747, 9763, 9763, + 9763, 9763, 9747, 9817, 9748, 9748, 9748, 9748, 9769, 9840, + 9848, 9744, 9748, 9744, 9809, 9831, 9746, 9785, 9785, 9785, + 9785, 9757, 9747, 9757, 9757, 9757, 9757, 9757, 9757, 9809, + 9811, 9831, 9748, 9773, 9764, 9764, 9764, 9764, 9807, 9769, + 9811, 9814, 9807, 9773, 9807, 9745, 9816, 9835, 9745, 9746, + + 9786, 9786, 9786, 9786, 9814, 9747, 9816, 9818, 9835, 9747, + 9748, 9757, 9764, 9745, 9818, 9748, 9821, 9746, 9769, 9787, + 9787, 9787, 9787, 9747, 9794, 9794, 9794, 9794, 9815, 9821, + 9819, 9815, 9824, 9748, 9822, 9763, 9823, 9826, 9823, 9791, + 9819, 9827, 9769, 9834, 9822, 9824, 9838, 9787, 9785, 9823, + 9791, 9838, 9791, 9791, 9785, 9791, 9791, 9791, 9791, 9791, + 9791, 9837, 9826, 9836, 9836, 9839, 9827, 9839, 9836, 9841, + 9837, 9764, 9842, 9844, 9843, 9845, 9844, 9851, 9841, 9843, + 9865, 9846, 9844, 9849, 9845, 9842, 9846, 9786, 9850, 9794, + 9853, 9834, 9849, 9827, 9847, 9847, 9852, 9850, 9855, 9853, + + 9852, 9791, 9854, 9856, 9856, 9867, 9787, 9861, 9855, 9859, + 9859, 9794, 9861, 9866, 9866, 9854, 9875, 9857, 9864, 9834, + 9858, 9858, 9858, 9858, 9864, 9827, 9832, 9880, 9857, 9851, + 9857, 9857, 9863, 9857, 9857, 9857, 9857, 9857, 9857, 9863, + 9860, 9863, 9832, 9832, 9832, 9832, 9832, 9832, 9851, 9860, + 9860, 9832, 9862, 9868, 9832, 9868, 9862, 9870, 9862, 9869, + 9870, 9862, 9872, 9869, 9871, 9871, 9870, 9876, 9873, 9874, + 9874, 9876, 9877, 9877, 9872, 9873, 9879, 9873, 9878, 9883, + 9879, 9881, 9884, 9886, 9885, 9832, 9887, 9832, 9857, 9878, + 9881, 9878, 9888, 9890, 9858, 9891, 9892, 9881, 9893, 9832, + + 9885, 9832, 9832, 9832, 9833, 9894, 9895, 9858, 9900, 9901, + 9902, 9902, 9902, 9902, 9907, 9908, 9901, 9907, 9910, 9906, + 9833, 9833, 9833, 9833, 9833, 9833, 9906, 9909, 9914, 9833, + 9909, 9883, 9833, 9911, 9911, 9915, 9916, 9917, 9914, 9918, + 9919, 9920, 9921, 9922, 9921, 9923, 9925, 9921, 9926, 9935, + 9936, 9927, 9926, 9922, 9927, 9933, 9925, 9937, 9938, 9933, + 9936, 9933, 9939, 9833, 9940, 9833, 9939, 9940, 9941, 9942, + 9938, 9944, 9945, 9943, 9940, 9833, 9943, 9833, 9946, 9947, + 9833, 9833, 9948, 9949, 9951, 9950, 9948, 9951, 9952, 9947, + 9953, 9894, 9950, 9954, 9955, 9956, 9964, 9902, 9903, 9903, + + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9903, + 9903, 9904, 9958, 9924, 9912, 9928, 9959, 9930, 9961, 9962, + + 9929, 9961, 9958, 9963, 9965, 9967, 9959, 9904, 9904, 9904, + 9904, 9904, 9904, 9969, 9972, 9934, 9904, 9966, 9975, 9904, + 9957, 9957, 9957, 9957, 9962, 9970, 9960, 9966, 9963, 9968, + 9971, 9973, 9968, 9974, 9932, 9974, 9976, 9981, 9982, 9970, + 9934, 9983, 9973, 9975, 9977, 9977, 9977, 9977, 9957, 9985, + 9904, 9984, 9904, 9985, 9986, 9928, 9987, 9988, 9930, 9932, + 9989, 9984, 9990, 9991, 9904, 9924, 9904, 9904, 9904, 9905, + 9912, 9928, 9929, 9930, 9992, 9934, 9929, 9934, 9960, 9993, + 9994, 9934, 9971, 9934, 9996, 9905, 9905, 9905, 9905, 9905, + 9905, 9997,10002,10003, 9905, 9998, 9932, 9905, 9960, 9998, + + 9932, 9998, 9932,10000, 9999, 9998, 9932, 9957,10000,10001, + 9932, 9999,10004,10001, 9999,10005,10006,10007,10005,10006, + 10007,10008,10009,10001,10011, 9977,10012,10007, 9905,10010, + 9905, 9977,10013,10009,10014,10013,10010,10016,10017,10010, + 10016, 9905, 9905,10019,10024, 9905, 9905, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, + 9978, 9978, 9978, 9978, 9979, 9980, 9980, 9980, 9980,10018, + 10020,10021,10028,10028,10015, 9979,10030, 9979, 9979,10031, + 9979, 9979, 9979, 9979, 9979, 9979,10015,10015, 9978,10022, + 10032,10023,10023,10029,10018,10020,10021,10027,10027,10022, + 10033,10034,10035,10036,10037,10022,10038,10039,10040,10041, + 10042,10043,10044,10045,10046,10046,10046,10046,10046,10048, + + 10049,10055,10020,10047,10047,10047,10047,10047,10050,10050, + 10050,10050,10056,10057,10059,10058, 9979,10060,10065,10063, + 9980,10066,10057,10066,10028,10060,10067, 9978,10058,10064, + 10064,10069, 9980,10071,10020,10023,10063,10067,10076,10050, + 10070,10027,10072,10072,10029,10077,10074,10071,10069,10029, + 10073,10080,10073,10079,10046,10079,10070,10074,10079,10081, + 10082,10085,10086,10047,10087,10088,10044,10089,10091,10091, + 10093,10094,10095,10111,10112,10119,10094,10095,10120,10123, + 10119,10119,10129,10120,10135,10136,10136,10123,10137,10119, + 10150,10158,10123,10161,10162,10050,10051,10051,10051,10051, + + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10051, + 10051,10051,10051,10051,10051,10051,10051,10051,10051,10052, + 10122,10090,10165,10153,10122,10155,10122,10153,10122,10166, + + 10155,10155,10153,10122,10122,10052,10052,10052,10052,10052, + 10052,10171,10152,10176,10052,10156,10152,10052,10152,10156, + 10152,10156,10177,10156,10166,10152,10157,10157,10156,10160, + 10160,10157,10169,10179,10160,10180,10167,10169,10167,10167, + 10090,10167,10167,10167,10167,10167,10167,10185,10052,10168, + 10052,10166,10052,10090,10168,10168,10170,10170,10186,10189, + 10052,10170,10052,10193,10195,10052,10052,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10054,10054,10054,10054,10054,10054,10054,10054,10054,10054, + 10068,10092,10092,10092,10092,10096,10097,10098,10100,10099, + 10101,10102,10172,10103,10105,10104,10107,10174,10196,10197, + 10198,10190,10190,10108,10106,10174,10190,10199,10115,10200, + 10174,10191,10191,10202,10125,10215,10191,10128,10113,10130, + + 10116,10202,10121,10164,10133,10109,10202,10114,10216,10203, + 10175,10203,10117,10124,10203,10149,10100,10132,10101,10126, + 10217,10218,10163,10206,10172,10068,10105,10204,10206,10097, + 10099,10104,10204,10102,10204,10108,10068,10075,10106,10098, + 10115,10096,10097,10098,10100,10099,10101,10102,10092,10103, + 10105,10104,10107,10075,10075,10075,10075,10075,10075,10108, + 10106,10109,10075,10113,10115,10075,10114,10116,10117,10124, + 10125,10126,10121,10128,10113,10130,10116,10121,10134,10132, + 10133,10109,10227,10114,10228,10149,10121,10164,10117,10124, + 10149,10223,10163,10132,10175,10126,10075,10163,10075,10223, + + 10075,10138,10138,10138,10138,10225,10205,10075,10173,10230, + 10075,10205,10075,10075,10075,10231,10139,10139,10139,10139, + 10205,10233,10140,10140,10140,10140,10134,10141,10141,10141, + 10141,10142,10142,10142,10142,10141,10234,10235,10236,10142, + 10238,10143,10143,10143,10143,10240,10210,10210,10144,10144, + 10144,10144,10210,10207,10134,10141,10241,10242,10207,10142, + 10173,10207,10138,10145,10145,10145,10145,10213,10173,10143, + 10239,10208,10213,10173,10213,10244,10144,10139,10140,10208, + 10138,10139,10211,10140,10208,10209,10245,10142,10141,10225, + 10246,10145,10142,10209,10211,10139,10247,10143,10209,10211, + + 10249,10140,10143,10141,10144,10250,10141,10212,10212,10144, + 10142,10251,10212,10146,10146,10146,10146,10252,10219,10145, + 10143,10146,10239,10219,10145,10219,10253,10144,10147,10147, + 10147,10147,10148,10148,10148,10148,10147,10254,10255,10256, + 10148,10146,10145,10178,10178,10178,10178,10182,10257,10182, + 10182,10182,10182,10182,10182,10222,10147,10258,10259,10261, + 10148,10183,10181,10183,10183,10183,10183,10183,10183,10146, + 10260,10262,10214,10181,10146,10181,10181,10214,10181,10181, + 10181,10181,10181,10181,10147,10184,10214,10181,10148,10147, + 10229,10263,10146,10148,10229,10148,10229,10264,10265,10184, + + 10267,10184,10184,10184,10184,10184,10184,10147,10147,10222, + 10184,10148,10187,10187,10187,10187,10188,10188,10188,10188, + 10192,10226,10260,10192,10192,10226,10192,10226,10192,10268, + 10178,10222,10232,10192,10269,10226,10232,10243,10232,10270, + 10243,10243,10273,10243,10188,10273,10274,10275,10276,10277, + 10278,10279,10280,10281,10274,10279,10282,10283,10284,10279, + 10285,10286,10287,10288,10289,10290,10291,10292,10293,10290, + 10295,10290,10294,10296,10295,10298,10299,10300,10301,10290, + 10299,10302,10299,10290,10291,10303,10301,10306,10288,10304, + 10311,10300,10305,10304,10299,10295,10305,10307,10305,10187, + + 10307,10308,10309,10188,10220,10310,10312,10314,10313,10308, + 10305,10309,10313,10315,10310,10292,10316,10318,10317,10319, + 10220,10220,10220,10220,10220,10220,10317,10320,10319,10220, + 10324,10312,10220,10321,10322,10323,10328,10329,10330,10334, + 10335,10336,10287,10292,10293,10328,10287,10330,10294,10337, + 10338,10340,10342,10323,10348,10298,10343,10345,10312,10327, + 10327,10327,10327,10220,10346,10220,10345,10346,10359,10347, + 10311,10344,10331,10347,10343,10331,10331,10220,10331,10344, + 10220,10220,10221,10352,10354,10321,10322,10327,10356,10349, + 10331,10349,10356,10354,10352,10325,10358,10358,10221,10221, + + 10221,10221,10221,10221,10322,10326,10325,10221,10325,10325, + 10221,10325,10325,10325,10325,10325,10325,10350,10351,10326, + 10325,10326,10326,10326,10326,10326,10326,10353,10355,10357, + 10326,10355,10357,10360,10360,10350,10351,10361,10361,10362, + 10363,10221,10366,10221,10367,10368,10327,10369,10370,10353, + 10371,10372,10373,10374,10375,10221,10376,10377,10221,10221, + 10271,10378,10379,10380,10381,10382,10383,10385,10386,10387, + 10388,10383,10389,10390,10392,10393,10271,10271,10271,10271, + 10271,10271,10391,10387,10396,10271,10394,10397,10271,10398, + 10399,10402,10389,10400,10401,10385,10386,10390,10405,10393, + + 10398,10406,10408,10401,10391,10404,10394,10399,10407,10407, + 10404,10402,10410,10407,10411,10362,10412,10400,10414,10271, + 10378,10271,10415,10416,10417,10418,10418,10418,10418,10420, + 10421,10422,10271,10271,10423,10426,10271,10271,10272,10427, + 10428,10424,10434,10441,10443,10453,10388,10455,10456,10469, + 10468,10474,10481,10482,10272,10272,10272,10272,10272,10272, + 10475,10440,10487,10272,10490,10440,10272,10440,10444,10440, + 10445,10491,10416,10492,10440,10468,10440,10470,10444,10494, + 10499,10500,10444,10416,10444,10475,10444,10470,10445,10501, + 10421,10444,10470,10445,10428,10480,10420,10272,10422,10272, + + 10444,10423,10445,10502,10480,10420,10421,10422,10507,10480, + 10423,10272,10418,10424,10272,10272,10428,10424,10272,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + + 10297,10297,10297,10297,10297,10297,10297,10297,10297,10297, + 10297,10297,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + 10384,10384,10384,10384,10384,10384,10384,10384,10384,10384, + + 10384,10384,10384,10384,10384,10425,10429,10430,10432,10433, + 10442,10436,10496,10438,10439,10435,10485,10437,10471,10448, + 10452,10450,10471,10515,10471,10516,10471,10473,10484,10484, + 10446,10471,10473,10484,10473,10442,10509,10457,10457,10457, + 10457,10509,10517,10458,10458,10458,10458,10459,10459,10459, + 10459,10460,10460,10460,10460,10508,10513,10543,10508,10430, + 10508,10513,10461,10461,10461,10461,10425,10436,10544,10546, + 10452,10433,10496,10524,10439,10450,10547,10496,10438,10549, + 10550,10425,10429,10430,10432,10433,10435,10436,10437,10438, + 10439,10435,10446,10437,10442,10448,10452,10450,10457,10458, + + 10485,10498,10551,10459,10458,10524,10446,10460,10459,10543, + 10552,10479,10460,10457,10556,10479,10457,10479,10461,10479, + 10497,10557,10458,10461,10479,10497,10459,10497,10556,10558, + 10460,10462,10462,10462,10462,10463,10463,10463,10463,10561, + 10527,10461,10464,10464,10464,10464,10465,10465,10465,10465, + 10562,10505,10467,10467,10467,10467,10505,10519,10505,10477, + 10467,10477,10477,10477,10477,10477,10477,10563,10564,10506, + 10464,10498,10527,10506,10465,10506,10498,10565,10506,10478, + 10467,10478,10478,10478,10478,10478,10478,10462,10510,10566, + 10571,10463,10462,10510,10573,10510,10463,10576,10463,10511, + + 10569,10511,10465,10464,10511,10575,10577,10465,10467,10519, + 10462,10462,10512,10467,10463,10512,10522,10512,10464,10478, + 10522,10464,10522,10578,10579,10465,10466,10466,10466,10466, + 10575,10467,10569,10519,10466,10488,10488,10488,10488,10583, + 10466,10585,10466,10466,10472,10466,10466,10466,10466,10466, + 10466,10518,10582,10518,10466,10472,10518,10472,10472,10489, + 10472,10472,10472,10472,10472,10472,10582,10586,10589,10472, + 10489,10590,10489,10489,10591,10489,10489,10489,10489,10489, + 10489,10523,10466,10592,10514,10593,10526,10466,10514,10523, + 10514,10523,10586,10514,10528,10523,10526,10523,10594,10595, + + 10526,10596,10526,10528,10528,10466,10597,10530,10528,10598, + 10528,10526,10489,10523,10472,10529,10599,10600,10526,10472, + 10567,10601,10488,10520,10532,10529,10528,10603,10605,10529, + 10570,10529,10607,10608,10529,10592,10531,10610,10612,10520, + 10520,10520,10520,10520,10520,10567,10531,10529,10520,10530, + 10531,10520,10531,10613,10560,10614,10535,10617,10560,10530, + 10560,10531,10618,10530,10620,10530,10535,10580,10531,10560, + 10535,10580,10535,10580,10587,10621,10532,10535,10587,10622, + 10587,10530,10520,10623,10520,10520,10532,10624,10535,10520, + 10532,10520,10532,10534,10625,10626,10520,10570,10627,10520, + + 10520,10521,10628,10534,10567,10609,10570,10534,10532,10534, + 10616,10609,10629,10534,10533,10630,10616,10521,10521,10521, + 10521,10521,10521,10631,10533,10534,10521,10536,10533,10521, + 10533,10633,10634,10635,10636,10641,10642,10536,10654,10533, + 10537,10536,10639,10536,10632,10640,10533,10639,10643,10644, + 10537,10640,10655,10521,10537,10645,10537,10647,10644,10536, + 10521,10643,10521,10521,10650,10537,10647,10521,10648,10521, + 10645,10657,10537,10648,10521,10650,10651,10521,10521,10652, + 10651,10652,10653,10659,10660,10521,10525,10661,10649,10653, + 10664,10664,10664,10664,10665,10668,10672,10525,10538,10525, + + 10525,10678,10525,10525,10525,10525,10525,10525,10538,10540, + 10539,10525,10538,10669,10538,10656,10632,10663,10538,10540, + 10539,10680,10688,10540,10539,10540,10539,10690,10691,10541, + 10538,10539,10692,10693,10720,10724,10727,10542,10525,10541, + 10667,10540,10539,10541,10670,10541,10553,10542,10525,10541, + 10671,10542,10525,10542,10525,10649,10553,10542,10568,10649, + 10553,10541,10553,10666,10649,10669,10663,10673,10568,10542, + 10525,10668,10568,10675,10568,10656,10728,10664,10553,10554, + 10656,10677,10681,10729,10663,10683,10684,10685,10667,10669, + 10568,10686,10584,10694,10732,10554,10554,10554,10554,10554, + + 10554,10699,10733,10584,10554,10584,10584,10554,10584,10584, + 10584,10584,10584,10584,10734,10697,10667,10584,10696,10666, + 10670,10739,10673,10713,10741,10687,10671,10687,10713,10713, + 10687,10698,10698,10698,10698,10685,10729,10687,10554,10666, + 10554,10726,10677,10673,10742,10743,10726,10683,10726,10675, + 10738,10735,10554,10746,10694,10554,10554,10677,10681,10554, + 10555,10683,10684,10685,10735,10753,10755,10686,10770,10694, + 10701,10701,10701,10701,10699,10738,10555,10555,10555,10555, + 10555,10555,10697,10696,10714,10555,10771,10698,10555,10761, + 10761,10697,10762,10765,10696,10714,10762,10714,10714,10772, + + 10714,10714,10714,10714,10714,10714,10773,10765,10715,10714, + 10715,10715,10715,10715,10715,10715,10776,10750,10737,10555, + 10737,10555,10750,10737,10737,10716,10701,10716,10716,10716, + 10716,10716,10716,10555,10767,10767,10555,10555,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10638,10638,10638,10638,10638,10638,10638,10638,10638, + 10638,10700,10700,10700,10700,10702,10702,10702,10702,10703, + 10703,10703,10703,10704,10704,10704,10704,10705,10705,10705, + 10705,10781,10723,10707,10707,10707,10707,10782,10717,10711, + 10711,10711,10711,10784,10756,10785,10786,10711,10712,10712, + 10712,10712,10717,10748,10717,10717,10717,10717,10717,10717, + 10719,10748,10719,10717,10764,10719,10748,10711,10744,10764, + 10787,10702,10700,10769,10719,10703,10744,10769,10744,10704, + + 10752,10744,10752,10705,10723,10752,10704,10700,10705,10707, + 10700,10763,10723,10788,10707,10711,10760,10723,10789,10703, + 10711,10763,10792,10790,10793,10763,10705,10706,10706,10706, + 10706,10711,10707,10721,10721,10721,10721,10794,10711,10711, + 10756,10706,10795,10706,10706,10718,10706,10706,10706,10706, + 10706,10706,10745,10745,10796,10712,10718,10745,10718,10718, + 10801,10718,10718,10718,10718,10718,10718,10766,10760,10730, + 10718,10730,10730,10730,10730,10730,10730,10766,10790,10791, + 10791,10766,10760,10706,10802,10804,10805,10731,10706,10731, + 10731,10731,10731,10731,10731,10783,10807,10809,10783,10790, + + 10759,10810,10811,10749,10759,10783,10706,10708,10708,10708, + 10708,10749,10759,10749,10803,10806,10749,10806,10812,10813, + 10721,10708,10809,10708,10708,10817,10708,10708,10708,10708, + 10708,10708,10819,10751,10768,10708,10751,10768,10817,10808, + 10823,10751,10808,10808,10797,10824,10751,10825,10768,10778, + 10778,10778,10778,10778,10778,10797,10798,10797,10797,10731, + 10797,10797,10797,10797,10797,10797,10803,10816,10708,10797, + 10798,10816,10798,10798,10798,10798,10798,10798,10826,10803, + 10799,10798,10821,10827,10828,10821,10708,10709,10709,10709, + 10709,10799,10829,10799,10799,10709,10799,10799,10799,10799, + + 10799,10799,10830,10831,10709,10799,10709,10709,10709,10709, + 10709,10709,10832,10800,10814,10709,10800,10815,10815,10815, + 10815,10815,10815,10818,10814,10800,10820,10814,10833,10820, + 10834,10835,10836,10818,10837,10838,10818,10839,10845,10820, + 10841,10842,10843,10709,10847,10843,10848,10849,10709,10851, + 10852,10853,10856,10847,10854,10853,10860,10862,10863,10851, + 10864,10869,10845,10866,10857,10867,10709,10710,10710,10710, + 10710,10849,10870,10872,10852,10710,10855,10855,10855,10855, + 10874,10878,10876,10882,10710,10883,10710,10710,10710,10710, + 10710,10710,10841,10842,10886,10710,10857,10887,10880,10885, + + 10885,10888,10889,10891,10892,10885,10854,10863,10894,10909, + 10901,10901,10901,10901,10911,10917,10841,10842,10918,10893, + 10893,10893,10893,10710,10915,10866,10919,10920,10710,10924, + 10854,10925,10867,10882,10932,10926,10907,10869,10901,10866, + 10926,10867,10944,10710,10950,10928,10710,10710,10757,10876, + 10928,10891,10880,10905,10905,10905,10905,10878,10876,10882, + 10951,10952,10953,10855,10757,10757,10757,10757,10757,10757, + 10954,10901,10930,10757,10880,10893,10757,10930,10907,10891, + 10892,10894,10896,10896,10896,10896,10901,10955,10907,10901, + 10901,10956,10907,10937,10907,10966,10907,10900,10900,10900, + + 10900,10907,10910,10910,10910,10910,10927,10757,10915,10757, + 10969,10927,10927,10958,10902,10902,10902,10902,10929,10958, + 10757,10757,10902,10929,10757,10757,10904,10904,10904,10904, + 10757,10758,10929,10923,10904,10937,10960,10923,10896,10923, + 10905,10923,10902,10896,10971,10973,10923,10758,10758,10758, + 10758,10758,10758,10900,10904,10974,10758,10968,10900,10758, + 10903,10903,10903,10903,10968,10921,10975,10956,10903,10900, + 10902,10921,10976,10931,10931,10902,10900,10900,10931,10921, + 10977,10913,10904,10913,10978,10970,10913,10904,10903,10910, + 10758,10904,10758,10902,10902,10913,10959,10979,10980,10959, + + 10970,10936,10981,10982,10758,10904,10983,10758,10758,10779, + 10972,10959,10972,10938,10984,10986,10903,10987,10988,10991, + 10960,10903,10939,10993,10995,10779,10779,10779,10779,10779, + 10779,10908,10997,10995,10779,11001,11002,10779,10903,10903, + 10999,10940,10908,10936,10908,10908,11006,10908,10908,10908, + 10908,10908,10908,10936,11007,10938,10908,10936,10941,10936, + 11008,11001,10999,10936,10939,10938,11012,10942,10779,10938, + 10779,10938,11017,11033,10939,10936,11014,11009,10939,10943, + 10939,11010,10779,10940,11034,10779,10779,10780,10939,11035, + 11037,10957,11039,10940,11042,11043,11047,10940,11045,10940, + + 10941,11048,11050,10780,10780,10780,10780,10780,10780,10942, + 10941,11045,10780,11052,10941,10780,10941,11051,11046,10942, + 10961,10943,11051,10942,10961,10942,10961,10961,11046,11060, + 11061,10943,10941,10957,11062,10943,11010,10943,11009,11063, + 10943,11014,11012,10957,11064,11065,10780,10957,10780,10957, + 10957,11058,11014,11009,11058,11067,11070,11010,11067,11072, + 10780,11073,10780,10780,10780,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10840,10840, + 10840,10840,10840,10840,10840,10840,10840,10840,10895,10895, + 10895,10895,11054,10946,10946,10946,10946,10946,10946,11074, + 11040,11075,10895,11076,10895,10895,11015,10895,10895,10895, + 10895,10895,10895,10967,10967,10967,10967,10967,10967,10985, + 10985,10985,10985,10985,11004,11004,11004,11004,11016,11018, + + 11020,11020,11020,11020,11054,11059,11016,11077,11079,11080, + 11081,11016,11059,11082,10895,10897,10897,10897,10897,11069, + 11083,11084,11085,11069,11086,11069,11069,11087,11089,10897, + 11091,10897,10897,10946,10897,10897,10897,10897,10897,10897, + 11093,11091,11092,11015,11021,11021,11021,11021,11094,10985, + 11095,11092,11015,10967,11040,11102,11020,11114,11021,11115, + 11021,11021,11018,11021,11021,11021,11021,11021,11021,11022, + 11022,11022,11022,11116,11096,11018,10897,11025,11025,11025, + 11025,11004,11097,11022,11118,11022,11022,11119,11022,11022, + 11022,11022,11022,11022,10897,10898,10898,10898,10898,11120, + + 11121,11122,11123,11023,11023,11023,11023,11026,11026,11026, + 11026,11124,10898,11053,10898,10898,10898,10898,10898,10898, + 11023,11121,11023,11023,11023,11023,11023,11023,11027,11027, + 11027,11027,11126,11025,11130,11049,11131,11129,11132,11049, + 11134,11049,11128,11049,11028,11028,11028,11028,11049,11025, + 11096,10898,11129,11128,11135,11053,10898,11136,11097,11023, + 11029,11029,11029,11029,11137,11053,11100,11099,11026,11053, + 11133,11053,11055,11138,10898,10899,10899,10899,10899,11139, + 11140,11133,11142,11026,11027,11143,11026,11026,11144,11027, + 11145,11103,10899,11146,10899,10899,10899,10899,10899,10899, + + 11028,11030,11030,11030,11030,11028,11147,11027,11027,11030, + 11031,11031,11031,11031,11055,11099,11029,11149,11031,11150, + 11151,11029,11028,11028,11055,11029,11152,11127,11055,11030, + 11055,10899,11032,11032,11032,11032,10899,11153,11031,11029, + 11032,11159,11100,11099,11101,11149,11103,11167,11168,11101, + 11156,10899,11160,11169,10899,10899,10934,11030,11101,11171, + 11032,11173,11030,11175,11176,11177,11031,11103,11178,11127, + 11179,11031,10934,10934,10934,10934,10934,10934,11180,11127, + 11030,10934,11181,11127,10934,11127,11182,11183,11032,11031, + 11184,11031,11187,11032,11188,11189,11032,11104,11104,11104, + + 11104,11127,11105,11105,11105,11105,11190,11106,11106,11106, + 11106,11032,11191,11156,11193,10934,11195,10934,11196,11107, + 11107,11107,11107,11197,11160,10934,11156,11193,11160,10934, + 11198,11199,10934,10934,10935,11203,11108,11108,11108,11108, + 11205,11206,11207,11209,10935,11171,11210,11211,11212,11213, + 10935,10935,10935,10935,10935,10935,11214,11215,11216,10935, + 11217,11223,10935,11106,11109,11109,11109,11109,11161,11161, + 11161,11161,11225,11104,11226,11107,11227,11104,11105,11222, + 11228,11229,11105,11220,11230,11198,10935,11106,11110,11110, + 11110,11110,11108,10935,11231,10935,10935,11107,11234,11235, + + 10935,11108,10935,11235,11220,11237,11198,10935,11238,11240, + 10935,10935,10947,11239,11111,11111,11111,11111,11242,11243, + 11109,11244,11236,11245,11161,11109,11246,11247,10947,10947, + 10947,10947,10947,10947,11249,11251,11250,10947,11252,11253, + 10947,11255,11256,11109,11110,11162,11162,11162,11162,11110, + 11258,11222,11259,11260,11264,11222,11112,11112,11112,11112, + 11163,11163,11163,11163,11112,11265,11267,11110,11268,11110, + 11111,10947,11270,10947,11271,11111,11272,11273,11111, 1859, + 11200,11200,11200,11200,11112,10947, 1856,10947,10947,10947, + 10949,11383,11383,11111,11201,11201,11201,11201,11236,11239, + + 1855,11162,11384,11384,11450,11450,10949,10949,10949,10949, + 10949,10949,11112,11359, 1854,10949,11163,11112,10949,11359, + 11359,11112,11250,11360,11163,11369,11162,11370, 1853,11360, + 11360,11369,11369,11370,11370,11112,11200,11372,11451,11451, + 11373,11483,11483,11372,11372,11200,11373,11373,11380,10949, + 11201,10949, 1851,11482,11380,11380,11530,11530,11409,10949, + 11482,11482, 1850,10949,11409,11409,10949,10949,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,10990,10990,10990,10990,10990,10990,10990,10990,10990, + 10990,11024,11024,11024,11024,11113,11113,11113,11113,11164, + 11164,11164,11164,11113,11926,11926, 1849,11926,11024, 1848, + 11024,11024,11024,11024,11024,11024,11165,11165,11165,11165, + 1843, 1842, 1841,11113,11166,11166,11166,11166,11202,11202, + + 11202,11202,11166,11420,11224,11224,11224,11224,11421,11420, + 11420, 1840,11431, 1839,11421,11421,11529,11024,11431,11431, + 1838,11113,11166,11529,11529,11164,11113, 1836, 1835,11432, + 11164, 1834,11434, 1833,11164,11432,11432,11024,11434,11434, + 1832,11024,11165, 1831,11113,11435, 1830,11165,11164, 1829, + 11166,11435,11435, 1828,11202,11166,11441, 1827, 1823,11202, + 11224,11462,11441,11441, 1821,11165, 1820,11462,11462,11485, + 11166, 1819,11491,11166,11202,11485,11485,11202,11491,11491, + 11224,11276,11276,11276,11276,11276,11276,11276,11276,11276, + 11276,11276,11276,11276,11276,11276,11276,11276,11276,11276, + + 11276,11276,11276,11276,11276,11277,11277,11277,11277,11277, + 11277,11277,11277,11277,11277,11277,11277,11277,11277,11277, + 11277,11277,11277,11277,11277,11277,11277,11277,11277,11278, + 11278,11278,11278,11278,11278,11278,11278,11278,11278,11278, + 11278,11278,11278,11278,11278,11278,11278,11278,11278,11278, + 11278,11278,11278,11279,11279,11279,11279,11279,11279,11279, + 11279,11279,11279,11279,11279,11279,11279,11279,11279,11279, + 11279,11279,11279,11279,11279,11279,11279,11280,11280,11280, + 11280,11280,11280,11280,11280,11280,11280,11280,11280,11280, + 11280,11280,11280,11280,11280,11280,11280,11280,11280,11280, + + 11280,11281,11281,11281,11281,11281,11281,11281,11281,11281, + 11281,11281,11281,11281,11281,11281,11281,11281,11281,11281, + 11281,11281,11281,11281,11281,11282,11282,11282,11282,11282, + 11282,11282,11282,11282,11282,11282,11282,11282,11282,11282, + 11282,11282,11282,11282,11282,11282,11282,11282,11282,11283, + 11283,11283,11283,11283,11283,11283,11283,11283,11283,11283, + 11283,11283,11283,11283,11283,11283,11283,11283,11283,11283, + 11283,11283,11283,11284,11284,11284,11284,11284,11284,11284, + 11284,11284,11284,11284,11284,11284,11284,11284,11284,11284, + 11284,11284,11284,11284,11284,11284,11284,11285,11285,11285, + + 11285,11285,11285,11285,11285,11285,11285,11285,11285,11285, + 11285,11285,11285,11285,11285,11285,11285,11285,11285,11285, + 11285,11286,11286,11286,11286,11286,11286,11286,11286,11286, + 11286,11286,11286,11286,11286,11286,11286,11286,11286,11286, + 11286,11286,11286,11286,11286,11287,11287,11287,11287,11287, + 11287,11287,11287,11287,11287,11287,11287,11287,11287,11287, + 11287,11287,11287,11287,11287,11287,11287,11287,11287,11288, + 11288,11288,11288,11288,11288,11288,11288,11288,11288,11288, + 11288,11288,11288,11288,11288,11288,11288,11288,11288,11288, + 11288,11288,11288,11289,11289,11289,11289,11289,11289,11289, + + 11289,11289,11289,11289,11289,11289,11289,11289,11289,11289, + 11289,11289,11289,11289,11289,11289,11289,11290,11290,11290, + 11290,11290,11290,11290,11290,11290,11290,11290,11290,11290, + 11290,11290,11290,11290,11290,11290,11290,11290,11290,11290, + 11290,11291,11291,11291,11291,11291,11291,11291,11291,11291, + 11291,11291,11291,11291,11291,11291,11291,11291,11291,11291, + 11291,11291,11291,11291,11291,11292,11292,11292,11292,11292, + 11292,11292,11292,11292,11292,11292,11292,11292,11292,11292, + 11292,11292,11292,11292,11292,11292,11292,11292,11292,11293, + 11293,11293,11293,11293,11293,11293,11293,11293,11293,11293, + + 11293,11293,11293,11293,11293,11293,11293,11293,11293,11293, + 11293,11293,11293,11294,11294,11294,11294,11294,11294,11294, + 11294,11294,11294,11294,11294,11294,11294,11294,11294,11294, + 11294,11294,11294,11294,11294,11294,11294,11295,11295,11295, + 11295,11295,11295,11295,11295,11295,11295,11295,11295,11295, + 11295,11295,11295,11295,11295,11295,11295,11295,11295,11295, + 11295,11296,11296,11296,11296,11296,11296,11296,11296,11296, + 11296,11296,11296,11296,11296,11296,11296,11296,11296,11296, + 11296,11296,11296,11296,11296,11297,11297,11297,11297,11297, + 11297,11297,11297,11297,11297,11297,11297,11297,11297,11297, + + 11297,11297,11297,11297,11297,11297,11297,11297,11297,11298, + 11298,11298,11298,11298,11298,11298,11298,11298,11298,11298, + 11298,11298,11298,11298,11298,11298,11298,11298,11298,11298, + 11298,11298,11298,11299,11299,11299,11299,11299,11299,11299, + 11299,11299,11299,11299,11299,11299,11299,11299,11299,11299, + 11299,11299,11299,11299,11299,11299,11299,11300,11300,11300, + 11300,11300,11300,11300,11300,11300,11300,11300,11300,11300, + 11300,11300,11300,11300,11300,11300,11300,11300,11300,11300, + 11300,11301,11301,11301,11301,11301,11301,11301,11301,11301, + 11301,11301,11301,11301,11301,11301,11301,11301,11301,11301, + + 11301,11301,11301,11301,11301,11302,11302,11302,11302,11302, + 11302,11302,11302,11302,11302,11302,11302,11302,11302,11302, + 11302,11302,11302,11302,11302,11302,11302,11302,11302,11303, + 11303,11303,11303,11303,11303,11303,11303,11303,11303,11303, + 11303,11303,11303,11303,11303,11303,11303,11303,11303,11303, + 11303,11303,11303,11304,11304,11304,11304,11304,11304,11304, + 11304,11304,11304,11304,11304,11304,11304,11304,11304,11304, + 11304,11304,11304,11304,11304,11304,11304,11305,11305,11305, + 11305,11305,11305,11305,11305,11305,11305,11305,11305,11305, + 11305,11305,11305,11305,11305,11305,11305,11305,11305,11305, + + 11305,11306,11306,11306,11306,11306,11306,11306,11306,11306, + 11306,11306,11306,11306,11306,11306,11306,11306,11306,11306, + 11306,11306,11306,11306,11306,11307,11307,11307,11307,11307, + 11307,11307,11307,11307,11307,11307,11307,11307,11307,11307, + 11307,11307,11307,11307,11307,11307,11307,11307,11307,11308, + 11308,11308,11308,11308,11308,11308,11308,11308,11308,11308, + 11308,11308,11308,11308,11308,11308,11308,11308,11308,11308, + 11308,11308,11308,11309,11309,11309,11309,11309,11309,11309, + 11309,11309,11309,11309,11309,11309,11309,11309,11309,11309, + 11309,11309,11309,11309,11309,11309,11309,11310,11310,11310, + + 11310,11310,11310,11310,11310,11310,11310,11310,11310,11310, + 11310,11310,11310,11310,11310,11310,11310,11310,11310,11310, + 11310,11311,11311,11311,11311,11311,11311,11311,11311,11311, + 11311,11311,11311,11311,11311,11311,11311,11311,11311,11311, + 11311,11311,11311,11311,11311,11312,11312,11312,11312,11312, + 11312,11312,11312,11312,11312,11312,11312,11312,11312,11312, + 11312,11312,11312,11312,11312,11312,11312,11312,11312,11313, + 11313,11313,11313,11313,11313,11313,11313,11313,11313,11313, + 11313,11313,11313,11313,11313,11313,11313,11313,11313,11313, + 11313,11313,11313,11314,11314,11314,11314,11314,11314,11314, + + 11314,11314,11314,11314,11314,11314,11314,11314,11314,11314, + 11314,11314,11314,11314,11314,11314,11314,11315,11315,11315, + 11315,11315,11315,11315,11315,11315,11315,11315,11315,11315, + 11315,11315,11315,11315,11315,11315,11315,11315,11315,11315, + 11315,11316,11316,11316,11316,11316,11316,11316,11316,11316, + 11316,11316,11316,11316,11316,11316,11316,11316,11316,11316, + 11316,11316,11316,11316,11316,11317,11317,11317,11317,11317, + 11317,11317,11317,11317,11317,11317,11317,11317,11317,11317, + 11317,11317,11317,11317,11317,11317,11317,11317,11317,11318, + 11318,11318,11318,11318,11318,11318,11318,11318,11318,11318, + + 11318,11318,11318,11318,11318,11318,11318,11318,11318,11318, + 11318,11318,11318,11319,11319,11319,11319,11319,11319,11319, + 11319,11319,11319,11319,11319,11319,11319,11319,11319,11319, + 11319,11319,11319,11319,11319,11319,11319,11320,11320,11320, + 11320,11320,11320,11320,11320,11320,11320,11320,11320,11320, + 11320,11320,11320,11320,11320,11320,11320,11320,11320,11320, + 11320,11321,11321,11321,11321,11321,11321,11321,11321,11321, + 11321,11321,11321,11321,11321,11321,11321,11321,11321,11321, + 11321,11321,11321,11321,11321,11322,11322,11322,11322,11322, + 11322,11322,11322,11322,11322,11322,11322,11322,11322,11322, + + 11322,11322,11322,11322,11322,11322,11322,11322,11322,11323, + 11323,11323,11323,11323,11323,11323,11323,11323,11323,11323, + 11323,11323,11323,11323,11323,11323,11323,11323,11323,11323, + 11323,11323,11323,11324,11324,11324,11324,11324,11324,11324, + 11324,11324,11324,11324,11324,11324,11324,11324,11324,11324, + 11324,11324,11324,11324,11324,11324,11324,11325,11325,11325, + 11325,11325,11325,11325,11325,11325,11325,11325,11325,11325, + 11325,11325,11325,11325,11325,11325,11325,11325,11325,11325, + 11325,11326,11326,11326,11326,11326,11326,11326,11326,11326, + 11326,11326,11326,11326,11326,11326,11326,11326,11326,11326, + + 11326,11326,11326,11326,11326,11327,11327,11327,11327,11327, + 11327,11327,11327,11327,11327,11327,11327,11327,11327,11327, + 11327,11327,11327,11327,11327,11327,11327,11327,11327,11328, + 11328,11328,11328,11328,11328,11328,11328,11328,11328,11328, + 11328,11328,11328,11328,11328,11328,11328,11328,11328,11328, + 11328,11328,11328,11329,11329,11329,11329,11329,11329,11329, + 11329,11329,11329,11329,11329,11329,11329,11329,11329,11329, + 11329,11329,11329,11329,11329,11329,11329,11330,11330,11330, + 11330,11330,11330,11330,11330,11330,11330,11330,11330,11330, + 11330,11330,11330,11330,11330,11330,11330,11330,11330,11330, + + 11330,11331,11331,11331,11331,11331,11331,11331,11331,11331, + 11331,11331,11331,11331,11331,11331,11331,11331,11331,11331, + 11331,11331,11331,11331,11331,11332,11332,11332,11332,11332, + 11332,11332,11332,11332,11332,11332,11332,11332,11332,11332, + 11332,11332,11332,11332,11332,11332,11332,11332,11332,11333, + 11333,11333,11333,11333,11333,11333,11333,11333,11333,11333, + 11333,11333,11333,11333,11333,11333,11333,11333,11333,11333, + 11333,11333,11333,11334,11334,11334,11334,11334,11334,11334, + 11334,11334,11334,11334,11334,11334,11334,11334,11334,11334, + 11334,11334,11334,11334,11334,11334,11334,11335,11335,11335, + + 11335,11335,11335,11335,11335,11335,11335,11335,11335,11335, + 11335,11335,11335,11335,11335,11335,11335,11335,11335,11335, + 11335,11336,11336,11336,11336,11336,11336,11336,11336,11336, + 11336,11336,11336,11336,11336,11336,11336,11336,11336,11336, + 11336,11336,11336,11336,11336,11337,11337,11337,11337,11337, + 11337,11337,11337,11337,11337,11337,11337,11337,11337,11337, + 11337,11337,11337,11337,11337,11337,11337,11337,11337,11338, + 11338,11338,11338,11338,11338,11338,11338,11338,11338,11338, + 11338,11338,11338,11338,11338,11338,11338,11338,11338,11338, + 11338,11338,11338,11339,11339,11339,11339,11339,11339,11339, + + 11339,11339,11339,11339,11339,11339,11339,11339,11339,11339, + 11339,11339,11339,11339,11339,11339,11339,11340,11340,11340, + 11340,11340,11340,11340,11340,11340,11340,11340,11340,11340, + 11340,11340,11340,11340,11340,11340,11340,11340,11340,11340, + 11340,11341,11341,11341,11341,11341,11341,11341,11341,11341, + 11341,11341,11341,11341,11341,11341,11341,11341,11341,11341, + 11341,11341,11341,11341,11341,11342,11342,11342,11342,11342, + 11342,11342,11342,11342,11342,11342,11342,11342,11342,11342, + 11342,11342,11342,11342,11342,11342,11342,11342,11342,11343, + 11343,11343,11343,11343,11343,11343,11343,11343,11343,11343, + + 11343,11343,11343,11343,11343,11343,11343,11343,11343,11343, + 11343,11343,11343,11344,11344,11344,11344,11344,11344,11344, + 11344,11344,11344,11344,11344,11344,11344,11344,11344,11344, + 11344,11344,11344,11344,11344,11344,11344,11345,11345,11345, + 11345,11345,11345,11345,11345,11345,11345,11345,11345,11345, + 11345,11345,11345,11345,11345,11345,11345,11345,11345,11345, + 11345,11346,11346,11346,11346,11346,11346,11346,11346,11346, + 11346,11346,11346,11346,11346,11346,11346,11346,11346,11346, + 11346,11346,11346,11346,11346,11347,11347,11347,11347,11347, + 11347,11347,11347,11347,11347,11347,11347,11347,11347,11347, + + 11347,11347,11347,11347,11347,11347,11347,11347,11347,11348, + 11348,11348,11348,11348,11348,11348,11348,11348,11348,11348, + 11348,11348,11348,11348,11348,11348,11348,11348,11348,11348, + 11348,11348,11348,11349, 1818,11492, 1815,11511, 1814, 1813, + 11349,11492,11492,11511,11511, 1804,11349,11349,11350,11350, + 11350,11350,11350,11350,11350,11350,11350,11350,11350,11350, + 11350,11350,11350,11350,11350,11350,11350,11350,11350,11350, + 11350,11350,11351,11351, 1802,11351,11351,11351,11351,11351, + 11351,11351,11351,11351,11351,11351,11351,11351,11351,11351, + 11351,11351,11351,11351,11351,11351,11352,11352, 1800,11352, + + 11352,11352,11352,11352,11352,11352,11352,11352,11352,11352, + 11352,11352,11352,11352,11352,11352,11352,11352,11352,11352, + 11353,11353, 1799,11353, 1795,11956,11956,11532,11956,11353, + 11353, 1794,11353,11532,11532, 1792,11353,11353,11354,11354, + 11354,11354,11354,11354,11354, 1791,11354,11354,11354,11354, + 11354,11354,11354,11354,11354,11354,11354,11354,11354,11354, + 11354,11354,11355,11355,11355,11355,11355,11355,11355,11355, + 11355,11355,11355,11355,11355,11355,11355,11355,11355,11355, + 11355,11355,11355,11355,11355,11355,11356,11356, 1788, 1787, + 1786,11540, 1783,11356,11356,11357,11357,11540,11540, 1781, + + 11541, 1780,11357,11357,11358,11358,11541,11541, 1779,11575, + 1777,11358,11358,11361,11361,11575,11575,11581, 1775,11582, + 11361,11361,11362,11581,11581,11582,11582,11362,11362,11362, + 11362,11362,11362,11362,11362,11362,11362,11362,11362,11362, + 11362,11362,11362,11362,11362,11362,11363,11363, 1774, 1773, + 11611, 1771,11625,11363,11363,11364,11611,11611,11625,11625, + 11630,11364,11364, 1770, 1769, 1768,11630,11630,11364,11364, + 11365,11365,11365,11365,11365,11365,11365,11365,11365,11365, + 11365,11365,11365,11365,11365,11365,11365,11365,11365,11365, + 11365,11365, 1766,11365,11366,11366,11366,11366,11366,11366, + + 11366,11366,11366,11366,11366,11366,11366,11366,11366,11366, + 11366,11366,11366,11366,11366,11366,11366,11366,11367,11367, + 11367,11367, 1765, 1764,11631, 1761,11367,11367, 1752,11367, + 11631,11631, 1751,11367,11367,11368,11368,11368,11368,11368, + 11368,11368,11368,11368,11368,11368,11368,11368,11368,11368, + 11368,11368,11368,11368,11368,11368,11368,11368,11368,11371, + 1748, 1747, 1746, 1745, 1744,11371,11371, 1743,11371,11374, + 11374,11374,11374,11374,11374, 1742,11374,11374,11374,11374, + 11374,11374,11374,11374,11374,11374,11374,11374,11374,11374, + 11374,11374,11374,11375,11375, 1741, 1740, 1739,11678, 1738, + + 11375,11375,11376,11376,11678,11678, 1737,11684, 1736,11376, + 11376,11377,11377,11684,11684, 1735, 1731, 1730,11377,11377, + 11378,11378,11378,11378, 1727,11378, 1726, 1725,11723, 1724, + 11378,11727, 1723,11378,11723,11723, 1722,11727,11727,11378, + 11378,11379,11379,11379,11379,11379,11379,11379,11379,11379, + 11379,11379,11379,11379,11379,11379,11379,11379,11379,11379, + 11379,11379,11379,11379,11379,11381,11381,11381,11381,11381, + 11381,11381,11381,11381,11381,11381,11381,11381,11381,11381, + 11381,11381,11381,11381,11381,11381,11381,11381,11381,11382, + 11382,11382,11382,11382,11382,11382,11382,11382,11382,11382, + + 11382,11382,11382,11382,11382,11382,11382,11382,11382,11382, + 11382,11382,11382,11385,11385,11385,11385,11385,11385,11385, + 11385,11385,11385,11385,11385,11385,11385,11385,11385,11385, + 11385,11385,11385,11385,11385,11385,11385,11386,11386,11386, + 11386,11386,11386,11386,11386,11386,11386,11386,11386,11386, + 11386,11386,11386,11386,11386,11386,11386,11386,11386,11386, + 11386,11387, 1721, 1717, 1716,11800, 1714, 1713,11387, 1712, + 11387,11800,11800,11801,11387,11387,11387,11387,11388,11801, + 11801, 1711,11803, 1710, 1709,11388, 1707,11388,11803,11803, + 1705,11388,11388,11388,11388,11389,11389,11389,11389,11389, + + 11389,11389,11389,11389,11389,11389,11389,11389,11389,11389, + 11389,11389,11389,11389,11389,11389,11389,11389,11389,11390, + 11390, 1704, 1703,11816, 1702,11838,11390,11390,11391,11816, + 11816,11838,11838, 1701,11839, 1700, 1699,11391, 1698,11391, + 11839,11839,11840,11391,11391,11392,11392, 1697,11840,11840, + 1696, 1695,11392,11392,11393,11393,11393,11393,11393,11393, + 11393,11393,11393,11393,11393,11393,11393,11393,11393,11393, + 11393,11393,11393,11393,11393,11393,11393,11393,11394, 1694, + 1693, 1691,11394,11394, 1690, 1688,11394,11394,11394,11394, + 11394,11394,11394,11394, 1685,11394,11394,11394,11394,11394, + + 11395,11395,11395,11395,11395,11395,11395,11395,11395,11395, + 11395,11395,11395,11395,11395,11395,11395,11395,11395,11395, + 11395,11395,11395,11395,11396,11396,11396,11396,11396,11396, + 11396,11396,11396,11396,11396,11396,11396,11396,11396,11396, + 11396,11396,11396,11396,11396,11396,11396,11396,11397,11397, + 1684, 1682, 1681, 1679, 1677,11397,11397,11398,11398, 1675, + 11398,11398,11398,11398,11398,11398,11398,11398,11398,11398, + 11398,11398,11398,11398,11398,11398,11398,11398,11398,11398, + 11398,11399,11399, 1673,11399,11399,11399,11399,11399,11399, + 11399,11399,11399,11399,11399,11399,11399,11399,11399,11399, + + 11399,11399,11399,11399,11399,11400,11400,11400,11400,11400, + 11400,11400,11400,11400,11400,11400,11400,11400,11400,11400, + 11400,11400,11400,11400,11400,11400,11400,11400,11400,11401, + 11401,11401,11401,11401,11401,11401,11401,11401,11401,11401, + 11401,11401,11401,11401,11401,11401,11401,11401,11401,11401, + 11401,11401,11401,11402,11402,11402,11402,11402,11402, 1671, + 11402,11402,11402,11402,11402,11402,11402,11402,11402,11402, + 11402,11402,11402,11402,11402,11402,11402,11403,11403,11403, + 11403,11403,11403,11403,11403,11403,11403,11403,11403,11403, + 11403,11403,11403,11403,11403,11403,11403,11403,11403,11403, + + 11403,11404, 1669, 1665, 1662, 1661,11852, 1660,11404,11404, + 1659,11404,11852,11852, 1655, 1653, 1652,11404,11404,11405, + 11405, 1651, 1647, 1646, 1645, 1641,11405,11405,11406, 1640, + 1637, 1636, 1634, 1632, 1627,11406,11406,11406,11406, 1626, + 1625, 1624, 1620, 1616,11406,11406,11407, 1615, 1614, 1611, + 1609, 1605, 1604,11407,11407,11407,11407, 1603, 1601, 1600, + 1597, 1596,11407,11407,11408,11408,11408,11408,11408,11408, + 11408,11408,11408,11408,11408,11408,11408,11408,11408,11408, + 11408,11408,11408,11408,11408,11408,11408,11408,11410,11410, + 1595,11410,11410,11410,11410,11410,11410,11410,11410,11410, + + 11410,11410,11410,11410,11410,11410,11410,11410,11410,11410, + 11410,11410,11411,11411,11411,11411,11411,11411,11411,11411, + 11411,11411,11411,11411,11411,11411,11411,11411,11411,11411, + 11411,11411,11411,11411,11411,11411,11412,11412, 1594, 1593, + 1590, 1588, 1587,11412,11412,11413,11413, 1586, 1584, 1582, + 1581, 1580,11413,11413,11414,11414, 1579, 1574, 1570, 1569, + 1568,11414,11414,11415,11415,11415,11415,11415,11415,11415, + 1567,11415,11415,11415,11415,11415,11415,11415,11415,11415, + 11415,11415,11415,11415,11415,11415,11415,11416,11416,11416, + 11416,11416,11416,11416,11416,11416,11416,11416,11416,11416, + + 11416,11416,11416,11416,11416,11416,11416,11416,11416,11416, + 11416,11417,11417, 1566, 1565, 1563, 1561, 1559,11417,11417, + 11418,11418, 1558, 1557, 1555, 1554, 1551,11418,11418,11419, + 11419, 1550, 1549, 1548, 1547, 1546,11419,11419,11422,11422, + 1545, 1544, 1543, 1542, 1541,11422,11422,11423, 1540, 1539, + 1538, 1535,11423,11423,11423,11423,11423,11423,11423,11423, + 11423,11423,11423,11423,11423,11423,11423,11423,11423,11423, + 11423,11424,11424, 1533, 1532, 1531, 1530, 1456,11424,11424, + 11425, 1378, 1367, 1361, 1353, 1334, 1333, 1332,11425,11425, + 11425, 1330, 1323, 1322, 1321, 1319,11425,11425,11426,11426, + + 11426,11426,11426,11426,11426,11426,11426,11426,11426,11426, + 11426,11426,11426,11426,11426,11426,11426,11426,11426,11426, + 1316,11426,11427,11427,11427,11427,11427,11427,11427,11427, + 11427,11427,11427,11427,11427,11427,11427,11427,11427,11427, + 11427,11427,11427,11427,11427,11427,11428,11428,11428,11428, + 11428,11428,11428,11428,11428,11428,11428,11428,11428,11428, + 11428,11428,11428,11428,11428,11428,11428,11428,11428,11428, + 11429,11429, 1314, 1311, 1309, 1308, 1305,11429,11429,11430, + 11430,11430,11430,11430,11430,11430,11430,11430,11430,11430, + 11430,11430,11430,11430,11430,11430,11430,11430,11430,11430, + + 11430,11430,11430,11433, 1303, 1300, 1297, 1290, 1275,11433, + 11433, 1270,11433,11436, 1269, 1268, 1267, 1261, 1258, 1256, + 11436,11436,11436,11436, 1255, 1254, 1253, 1251, 1248,11436, + 11436,11437,11437, 1245, 1241, 1240, 1238, 1235,11437,11437, + 11438,11438, 1234, 1232, 1231, 1230, 1227,11438,11438,11439, + 11439, 1224, 1223, 1222, 1221, 1220,11439,11439,11440,11440, + 11440,11440, 1219, 1218, 1216, 1215, 1214, 1213,11440, 1211, + 1206,11440, 1200, 1180, 1174, 1160, 1158,11440,11440,11442, + 1156, 1155, 1154, 1153, 1152, 1151,11442,11442, 1150,11442, + 1149, 1148, 1147, 1146, 1145,11442,11442,11443,11443, 1144, + + 1143, 1142, 1141, 1140,11443,11443,11444, 1138, 1137, 1134, + 1131, 1129, 1128,11444,11444,11444,11444, 1127, 1126, 1125, + 1123, 1121,11444,11444,11445,11445,11445,11445,11445,11445, + 11445,11445,11445,11445,11445,11445,11445,11445,11445,11445, + 11445,11445,11445,11445,11445,11445,11445,11445,11446,11446, + 11446,11446,11446,11446, 1119,11446,11446,11446,11446,11446, + 11446,11446,11446,11446,11446,11446,11446,11446,11446,11446, + 11446,11446,11447,11447,11447,11447,11447,11447,11447,11447, + 11447,11447,11447,11447,11447,11447,11447,11447,11447,11447, + 11447,11447,11447,11447,11447,11447,11448,11448,11448,11448, + + 11448,11448,11448,11448,11448,11448,11448,11448,11448,11448, + 11448,11448,11448,11448,11448,11448,11448,11448,11448,11448, + 11449,11449,11449,11449,11449,11449,11449,11449,11449,11449, + 11449,11449,11449,11449,11449,11449,11449,11449,11449,11449, + 11449,11449,11449,11449,11452, 1115, 1113, 1108, 1082, 1055, + 1053,11452, 986, 982, 971, 970, 969,11452,11452, 968, + 11452,11453, 967, 966, 964, 963, 962, 961,11453, 960, + 956,11453, 955, 954,11453,11453,11454,11454,11454,11454, + 11454,11454,11454,11454,11454,11454,11454,11454,11454,11454, + 11454,11454,11454,11454,11454,11454,11454,11454,11454,11454, + + 11455,11455, 953, 952, 951, 950, 948,11455,11455,11456, + 943, 941, 938, 932, 931, 930, 927, 926,11456, 918, + 909, 905, 894, 887,11456,11456,11457,11457, 886, 885, + 884, 883, 878,11457,11457,11458,11458,11458,11458,11458, + 11458,11458,11458,11458,11458,11458,11458,11458,11458,11458, + 11458,11458,11458,11458,11458,11458,11458,11458,11458,11459, + 877, 876, 868,11459,11459, 867, 865,11459,11459,11459, + 11459,11459,11459,11459,11459, 861,11459,11459,11459,11459, + 11459,11460, 859, 858, 857,11460,11460, 855, 853,11460, + 11460,11460,11460,11460,11460,11460,11460, 848,11460,11460, + + 11460,11460,11460,11461,11461,11461,11461,11461,11461,11461, + 11461,11461,11461,11461,11461,11461,11461,11461,11461,11461, + 11461,11461,11461,11461,11461,11461,11461,11463, 842, 841, + 840, 839, 838, 837,11463,11463, 832,11463, 831, 830, + 829, 828, 827,11463,11463,11464,11464, 826, 823, 822, + 821, 819,11464,11464,11465, 818, 807, 806, 804, 801, + 800,11465,11465,11465,11465, 799, 796, 791, 790, 789, + 11465,11465,11466,11466,11466,11466,11466,11466,11466,11466, + 11466,11466,11466,11466,11466,11466,11466,11466,11466,11466, + 11466,11466,11466,11466,11466,11466,11467,11467, 787, 786, + + 784, 783, 781,11467,11467,11468,11468, 780, 777, 770, + 767, 766,11468,11468,11469,11469, 762,11469,11469,11469, + 11469,11469,11469,11469,11469,11469,11469,11469,11469,11469, + 11469,11469,11469,11469,11469,11469,11469,11469,11470,11470, + 11470,11470,11470,11470,11470,11470,11470,11470,11470,11470, + 11470,11470,11470,11470,11470,11470,11470,11470,11470,11470, + 11470,11470,11471,11471,11471,11471,11471,11471,11471,11471, + 11471,11471,11471,11471,11471,11471,11471,11471,11471,11471, + 11471,11471,11471,11471,11471,11471,11472, 668, 662, 650, + 645, 644, 643, 619, 617, 616,11472,11472,11472,11472, + + 11472,11472,11472,11472,11472,11473, 604,11473, 596, 593, + 587,11473,11473,11474, 585, 575, 570, 569, 565, 554, + 11474,11474, 553,11474, 552, 549, 548, 541, 540,11474, + 11474,11475,11475, 536, 535, 532, 531, 526,11475,11475, + 11476,11476,11476,11476,11476,11476,11476,11476,11476,11476, + 11476,11476,11476,11476,11476,11476,11476,11476,11476,11476, + 11476,11476,11476,11476,11477, 524, 515, 511, 506, 504, + 500,11477,11477,11477,11477, 489, 469, 461, 457, 456, + 11477,11477,11478,11478, 452, 448, 446, 445, 440,11478, + 11478,11479,11479, 438, 435, 433, 431, 425,11479,11479, + + 11480,11480, 407, 400, 379, 378, 377,11480,11480,11481, + 369, 366,11481, 361, 355, 343, 339, 337, 332, 331, + 324,11481,11481, 316, 314, 310, 309, 307,11481,11481, + 11484,11484, 306, 305, 303, 301, 300,11484,11484,11486, + 11486, 291, 287, 286, 272, 268,11486,11486,11487,11487, + 267, 261, 258, 244, 234,11487,11487,11488,11488,11488, + 11488,11488,11488,11488,11488,11488,11488,11488,11488,11488, + 11488,11488,11488,11488,11488,11488,11488,11488,11488,11488, + 11488,11489,11489,11489,11489,11489,11489,11489,11489,11489, + 11489,11489,11489,11489,11489,11489,11489,11489,11489,11489, + + 11489,11489,11489, 228,11489,11490,11490,11490,11490,11490, + 11490,11490,11490,11490,11490,11490,11490,11490,11490,11490, + 11490,11490,11490,11490,11490,11490,11490,11490,11490,11493, + 11493, 223, 215, 213, 196, 192,11493,11493,11494,11494, + 191, 188, 187, 181, 138,11494,11494,11495,11495, 137, + 136, 135, 134, 133,11495,11495,11496, 72, 71, 66, + 65, 40, 39,11496,11496, 38,11496, 37, 0, 0, + 0, 0,11496,11496,11497,11497, 0, 0, 0, 0, + 0,11497,11497,11498, 0, 0, 0, 0, 0, 0, + 11498,11498,11498,11498, 0, 0, 0, 0, 0,11498, + + 11498,11499,11499,11499,11499,11499,11499,11499,11499,11499, + 11499,11499,11499,11499,11499,11499,11499,11499,11499,11499, + 11499,11499,11499,11499,11499,11500, 0, 0, 0, 0, + 0, 0, 0, 0, 0,11500,11500,11500,11500,11500, + 11500,11500,11500,11500,11501,11501,11501,11501,11501,11501, + 11501,11501,11501,11501,11501,11501,11501,11501,11501,11501, + 11501,11501,11501,11501,11501,11501,11501,11501,11502,11502, + 11502,11502,11502,11502,11502,11502,11502,11502,11502,11502, + 11502,11502,11502,11502,11502,11502,11502,11502,11502,11502, + 11502,11502,11503,11503,11503,11503,11503,11503,11503,11503, + + 11503,11503,11503,11503,11503,11503,11503,11503,11503,11503, + 11503,11503,11503,11503,11503,11503,11504, 0, 0, 0, + 0, 0, 0,11504, 0, 0, 0, 0, 0,11504, + 11504, 0,11504,11505, 0, 0, 0, 0, 0, 0, + 11505, 0, 0,11505, 0, 0,11505,11505,11506,11506, + 0, 0, 0, 0, 0,11506,11506,11507, 0, 0, + 0, 0, 0, 0, 0, 0,11507, 0, 0, 0, + 0, 0,11507,11507,11508,11508, 0, 0, 0, 0, + 0,11508,11508,11509, 0, 0, 0,11509,11509, 0, + 0,11509,11509,11509,11509,11509,11509,11509,11509, 0, + + 11509,11509,11509,11509,11509,11510, 0, 0, 0,11510, + 11510, 0, 0,11510,11510,11510,11510,11510,11510,11510, + 11510, 0,11510,11510,11510,11510,11510,11512, 0, 0, + 0, 0, 0, 0,11512,11512, 0,11512, 0, 0, + 0, 0, 0,11512,11512,11513,11513, 0, 0, 0, + 0, 0,11513,11513,11514, 0, 0, 0, 0, 0, + 0,11514,11514,11514,11514, 0, 0, 0, 0, 0, + 11514,11514,11515,11515,11515,11515,11515,11515,11515,11515, + 11515,11515,11515,11515,11515,11515,11515,11515,11515,11515, + 11515,11515,11515,11515,11515,11515,11516,11516, 0, 0, + + 0, 0, 0,11516,11516,11517,11517, 0, 0, 0, + 0, 0,11517,11517,11518,11518, 0,11518,11518,11518, + 11518,11518,11518,11518,11518,11518,11518,11518,11518,11518, + 11518,11518,11518,11518,11518,11518,11518,11518,11519,11519, + 11519,11519,11519,11519,11519,11519,11519,11519,11519,11519, + 11519,11519,11519,11519,11519,11519,11519,11519,11519,11519, + 11519,11519,11520,11520,11520,11520,11520,11520,11520,11520, + 11520,11520,11520,11520,11520,11520,11520,11520,11520,11520, + 11520,11520,11520,11520,11520,11520,11521, 0, 0, 0, + 0, 0, 0,11521,11521, 0,11521, 0, 0, 0, + + 0, 0,11521,11521,11522,11522, 0, 0, 0, 0, + 0,11522,11522,11523,11523,11523,11523,11523,11523,11523, + 11523,11523,11523,11523,11523,11523,11523,11523,11523,11523, + 11523,11523,11523,11523,11523,11523,11523,11524, 0, 0, + 0, 0, 0, 0,11524,11524,11524,11524, 0, 0, + 0, 0, 0,11524,11524,11525,11525, 0, 0, 0, + 0, 0,11525,11525,11526,11526, 0, 0, 0, 0, + 0,11526,11526,11527,11527, 0, 0, 0, 0, 0, + 11527,11527,11528,11528, 0, 0, 0, 0, 0,11528, + 11528,11531,11531, 0, 0, 0, 0, 0,11531,11531, + + 11533,11533, 0, 0, 0, 0,11533,11533,11533,11534, + 11534, 0, 0, 0, 0, 0,11534,11534,11535,11535, + 11535,11535,11535,11535,11535,11535,11535,11535,11535,11535, + 11535,11535,11535,11535,11535,11535,11535,11535,11535,11535, + 11535,11535,11536,11536,11536,11536,11536,11536,11536,11536, + 11536,11536,11536,11536,11536,11536,11536,11536,11536,11536, + 11536,11536,11536,11536,11536,11536,11537,11537,11537,11537, + 11537,11537,11537,11537,11537,11537,11537,11537,11537,11537, + 11537,11537,11537,11537,11537,11537,11537,11537,11537,11537, + 11538,11538,11538,11538,11538,11538,11538,11538,11538,11538, + + 11538,11538,11538,11538,11538,11538,11538,11538,11538,11538, + 11538,11538,11538,11538,11539,11539,11539,11539,11539,11539, + 11539,11539,11539,11539,11539,11539,11539,11539,11539,11539, + 11539,11539,11539,11539,11539,11539,11539,11539,11542,11542, + 0, 0, 0, 0, 0,11542,11542,11543,11543, 0, + 0, 0, 0, 0,11543,11543,11544,11544, 0, 0, + 0, 0, 0,11544,11544,11545, 0, 0, 0, 0, + 0, 0,11545,11545, 0,11545, 0, 0, 0, 0, + 0,11545,11545,11546,11546, 0, 0, 0, 0, 0, + 11546,11546,11547, 0, 0, 0, 0, 0, 0,11547, + + 11547,11547,11547, 0, 0, 0, 0, 0,11547,11547, + 11548,11548,11548,11548,11548,11548,11548,11548,11548,11548, + 11548,11548,11548,11548,11548,11548,11548,11548,11548,11548, + 11548,11548,11548,11548,11549,11549,11549,11549,11549,11549, + 11549,11549,11549,11549,11549,11549,11549,11549,11549,11549, + 11549,11549,11549,11549,11549,11549,11549,11549,11550,11550, + 11550,11550,11550,11550,11550,11550,11550,11550,11550,11550, + 11550,11550,11550,11550,11550,11550,11550,11550,11550,11550, + 11550,11550,11551, 0, 0, 0, 0, 0, 0,11551, + 0, 0, 0, 0, 0,11551,11551, 0,11551,11552, + + 0, 0, 0, 0, 0, 0,11552, 0, 0,11552, + 0, 0,11552,11552,11553,11553, 0, 0, 0, 0, + 0,11553,11553,11554, 0, 0, 0, 0, 0, 0, + 0, 0,11554, 0, 0, 0, 0,11554,11554,11554, + 11555,11555, 0, 0, 0, 0, 0,11555,11555,11556, + 0, 0, 0,11556,11556, 0, 0,11556,11556,11556, + 11556,11556,11556,11556,11556, 0,11556,11556,11556,11556, + 11556,11557, 0, 0, 0,11557,11557, 0, 0,11557, + 11557,11557,11557,11557,11557,11557,11557, 0,11557,11557, + 11557,11557,11557,11558, 0, 0, 0, 0, 0, 0, + + 11558,11558, 0,11558, 0, 0, 0, 0, 0,11558, + 11558,11559,11559, 0, 0, 0, 0, 0,11559,11559, + 11560, 0, 0, 0, 0, 0, 0,11560,11560,11560, + 11560, 0, 0, 0, 0, 0,11560,11560,11561,11561, + 0, 0, 0, 0, 0,11561,11561,11562,11562, 0, + 0, 0, 0, 0,11562,11562,11563,11563, 0,11563, + 11563,11563,11563,11563,11563,11563,11563,11563,11563,11563, + 11563,11563,11563,11563,11563,11563,11563,11563,11563,11563, + 11564,11564,11564,11564,11564,11564,11564,11564,11564,11564, + 11564,11564,11564,11564,11564,11564,11564,11564,11564,11564, + + 11564,11564,11564,11564,11565,11565,11565,11565,11565,11565, + 11565,11565,11565,11565,11565,11565,11565,11565,11565,11565, + 11565,11565,11565,11565,11565,11565,11565,11565,11566, 0, + 0, 0, 0, 0, 0,11566,11566, 0,11566, 0, + 0, 0, 0, 0,11566,11566,11567,11567, 0, 0, + 0, 0, 0,11567,11567,11568, 0, 0, 0, 0, + 11568, 0, 0, 0, 0, 0,11568,11568, 0,11568, + 11569, 0, 0, 0, 0, 0, 0,11569,11569,11569, + 11569, 0, 0, 0, 0, 0,11569,11569,11569,11570, + 11570, 0, 0, 0, 0, 0,11570,11570,11571,11571, + + 0, 0, 0, 0, 0,11571,11571,11572, 0, 0, + 0, 0, 0,11572,11572, 0,11572,11573,11573, 0, + 0, 0, 0, 0,11573,11573,11574,11574, 0, 0, + 0, 0, 0,11574,11574,11576,11576, 0, 0, 0, + 0, 0,11576,11576,11577, 0, 0,11577, 0, 0, + 0, 0, 0, 0, 0, 0,11577,11577, 0, 0, + 0, 0, 0,11577,11577,11578,11578,11578,11578,11578, + 11578,11578,11578,11578,11578,11578,11578,11578,11578,11578, + 11578,11578,11578,11578,11578,11578,11578,11578,11578,11579, + 11579,11579,11579,11579,11579,11579,11579,11579,11579,11579, + + 11579,11579,11579,11579,11579,11579,11579,11579,11579,11579, + 11579,11579,11579,11580,11580,11580,11580,11580,11580,11580, + 11580,11580,11580,11580,11580,11580,11580,11580,11580,11580, + 11580,11580,11580,11580,11580,11580,11580,11583,11583, 0, + 0, 0, 0, 0,11583,11583,11584, 0, 0,11584, + 0, 0, 0, 0, 0, 0, 0, 0,11584,11584, + 0, 0, 0, 0, 0,11584,11584,11585, 0, 0, + 11585, 0, 0, 0, 0, 0, 0, 0, 0,11585, + 11585, 0, 0, 0, 0, 0,11585,11585,11586, 0, + 0, 0, 0, 0, 0,11586,11586, 0,11586, 0, + + 0, 0, 0, 0,11586,11586,11587,11587, 0, 0, + 0, 0, 0,11587,11587,11588, 0, 0, 0, 0, + 0, 0,11588,11588,11588,11588, 0, 0, 0, 0, + 0,11588,11588,11588,11589,11589, 0,11589,11589,11589, + 11589,11589,11589,11589,11589,11589,11589,11589,11589,11589, + 11589,11589,11589,11589,11589,11589,11589,11589,11590, 0, + 0, 0, 0,11590, 0, 0, 0, 0, 0,11590, + 11590, 0,11590,11591,11591,11591,11591,11591,11591,11591, + 11591,11591,11591,11591,11591,11591,11591,11591,11591,11591, + 11591,11591,11591,11591,11591,11591,11591,11592,11592,11592, + + 11592,11592,11592,11592,11592,11592,11592,11592,11592,11592, + 11592,11592,11592,11592,11592,11592,11592,11592,11592,11592, + 11592,11593, 0, 0,11593, 0, 0,11593, 0, 0, + 0, 0, 0, 0,11593, 0, 0, 0, 0, 0, + 11593,11593, 0,11593,11594, 0, 0,11594, 0, 0, + 11594, 0, 0, 0, 0, 0, 0,11594, 0, 0, + 11594, 0, 0,11594,11594,11595,11595, 0, 0, 0, + 0, 0,11595,11595,11596, 0, 0, 0, 0, 0, + 0, 0, 0,11596, 0, 0, 0, 0, 0,11596, + 11596,11597,11597, 0, 0, 0, 0, 0,11597,11597, + + 11598,11598, 0, 0, 0, 0, 0,11598,11598,11599, + 0, 0, 0,11599,11599, 0, 0,11599,11599,11599, + 11599,11599,11599,11599,11599, 0,11599,11599,11599,11599, + 11599,11600, 0, 0, 0,11600,11600, 0, 0,11600, + 11600,11600,11600,11600,11600,11600,11600, 0,11600,11600, + 11600,11600,11600,11601, 0, 0, 0, 0, 0, 0, + 11601,11601, 0,11601, 0, 0, 0, 0, 0,11601, + 11601,11602,11602, 0, 0, 0, 0, 0,11602,11602, + 11603, 0, 0, 0, 0, 0, 0,11603,11603,11603, + 11603, 0, 0, 0, 0, 0,11603,11603,11604,11604, + + 0, 0, 0, 0, 0,11604,11604,11605,11605, 0, + 0, 0, 0, 0,11605,11605,11606,11606, 0,11606, + 11606,11606,11606,11606,11606,11606,11606,11606,11606,11606, + 11606,11606,11606,11606,11606,11606,11606,11606,11606,11606, + 11607,11607,11607,11607,11607,11607,11607,11607,11607,11607, + 11607,11607,11607,11607,11607,11607,11607,11607,11607,11607, + 11607,11607,11607,11607,11608,11608,11608,11608,11608,11608, + 11608,11608,11608,11608,11608,11608,11608,11608,11608,11608, + 11608,11608,11608,11608,11608,11608,11608,11608,11609, 0, + 0, 0, 0, 0, 0,11609,11609, 0,11609, 0, + + 0, 0, 0, 0,11609,11609,11610,11610, 0, 0, + 0, 0, 0,11610,11610,11612,11612, 0,11612,11612, + 11612,11612,11612,11612,11612,11612,11612,11612,11612,11612, + 11612,11612,11612,11612,11612,11612,11612,11612,11612,11613, + 11613,11613,11613,11613,11613,11613,11613,11613,11613,11613, + 11613,11613,11613,11613,11613,11613,11613,11613,11613,11613, + 11613, 0,11613,11614,11614,11614,11614,11614,11614,11614, + 11614,11614,11614,11614,11614,11614,11614,11614,11614,11614, + 11614,11614,11614,11614,11614,11614,11614,11615, 0, 0, + 0, 0,11615, 0, 0, 0, 0, 0,11615,11615, + + 0,11615,11616,11616,11616,11616,11616,11616,11616,11616, + 11616,11616,11616,11616,11616,11616,11616,11616,11616,11616, + 11616,11616,11616,11616,11616,11616,11617,11617,11617,11617, + 11617,11617,11617,11617,11617,11617,11617,11617,11617,11617, + 11617,11617,11617,11617,11617,11617,11617,11617,11617,11617, + 11618, 0, 0,11618,11618,11618,11618,11618,11618,11618, + 11618,11618,11618,11618,11618,11618,11618,11618,11618,11618, + 0,11618,11618,11618,11619, 0, 0, 0, 0, 0, + 0,11619,11619,11619,11619, 0, 0, 0, 0, 0, + 11619,11619,11620,11620, 0, 0, 0, 0, 0,11620, + + 11620,11621,11621, 0, 0, 0, 0, 0,11621,11621, + 11622, 0, 0, 0, 0, 0,11622,11622, 0,11622, + 11623,11623, 0, 0, 0, 0, 0,11623,11623,11624, + 11624, 0, 0, 0, 0, 0,11624,11624,11626,11626, + 0, 0, 0, 0, 0,11626,11626,11627,11627, 0, + 0, 0, 0, 0,11627,11627,11628,11628,11628,11628, + 11628,11628,11628,11628,11628,11628,11628,11628,11628,11628, + 11628,11628,11628,11628,11628,11628,11628,11628,11628,11628, + 11629,11629,11629,11629,11629,11629,11629,11629,11629,11629, + 11629,11629,11629,11629,11629,11629,11629,11629,11629,11629, + + 11629,11629,11629,11629,11632, 0, 0, 0, 0, 0, + 0, 0, 0,11632,11632, 0, 0, 0, 0, 0, + 11632,11632,11632,11633,11633, 0, 0, 0, 0, 0, + 11633,11633,11634,11634, 0, 0, 0, 0, 0,11634, + 11634,11635, 0, 0, 0, 0, 0, 0,11635,11635, + 0,11635, 0, 0, 0, 0, 0,11635,11635,11636, + 11636, 0, 0, 0, 0, 0,11636,11636,11637, 0, + 0, 0, 0, 0, 0,11637,11637,11637,11637, 0, + 0, 0, 0, 0,11637,11637,11638, 0, 0, 0, + 0,11638, 0, 0, 0, 0, 0,11638,11638, 0, + + 11638,11639,11639,11639,11639,11639,11639,11639,11639,11639, + 11639,11639,11639,11639,11639,11639,11639,11639,11639,11639, + 11639,11639,11639,11639,11639,11640,11640,11640,11640,11640, + 11640,11640,11640,11640,11640,11640,11640,11640,11640,11640, + 11640,11640,11640,11640,11640,11640,11640,11640,11640,11641, + 11641,11641,11641,11641,11641,11641,11641,11641,11641,11641, + 11641,11641,11641,11641, 0,11641,11641,11641,11641,11641, + 11641,11641,11641,11642,11642,11642,11642,11642,11642,11642, + 11642,11642,11642,11642,11642,11642,11642,11642,11642,11642, + 11642,11642,11642,11642,11642,11642,11642,11643, 0, 0, + + 0, 0, 0, 0,11643,11643, 0,11643, 0, 0, + 0, 0, 0,11643,11643,11644,11644, 0, 0, 0, + 0, 0,11644,11644,11645, 0, 0, 0, 0, 0, + 0,11645, 0, 0, 0, 0, 0,11645,11645, 0, + 11645,11646,11646, 0, 0, 0, 0, 0,11646,11646, + 11647, 0, 0, 0, 0, 0, 0, 0, 0,11647, + 0, 0, 0, 0, 0,11647,11647,11648,11648, 0, + 0, 0, 0, 0,11648,11648,11649,11649, 0, 0, + 0, 0, 0,11649,11649,11650, 0, 0, 0,11650, + 11650, 0, 0,11650,11650,11650,11650,11650,11650,11650, + + 11650, 0,11650,11650,11650,11650,11650,11651, 0, 0, + 0,11651,11651, 0, 0,11651,11651,11651,11651,11651, + 11651,11651,11651, 0,11651,11651,11651,11651,11651,11652, + 0, 0, 0, 0, 0, 0,11652,11652, 0,11652, + 0, 0, 0, 0, 0,11652,11652,11653,11653, 0, + 0, 0, 0, 0,11653,11653,11654,11654,11654,11654, + 0, 0, 0, 0, 0, 0,11654,11654,11654,11654, + 0, 0, 0, 0, 0,11654,11654,11654,11655,11655, + 0, 0, 0, 0, 0,11655,11655,11656,11656, 0, + 0, 0, 0, 0,11656,11656,11657,11657, 0,11657, + + 11657,11657,11657,11657,11657,11657,11657,11657,11657,11657, + 11657,11657,11657,11657,11657,11657,11657,11657,11657,11657, + 11658,11658,11658,11658,11658,11658,11658,11658,11658,11658, + 11658,11658,11658,11658,11658,11658,11658,11658,11658,11658, + 11658,11658,11658,11658,11659,11659,11659,11659,11659,11659, + 11659,11659,11659,11659,11659,11659,11659,11659,11659,11659, + 11659,11659,11659,11659,11659,11659,11659,11659,11660, 0, + 0, 0, 0, 0,11660,11660, 0,11660,11661,11661, + 0,11661,11661,11661,11661,11661,11661,11661,11661,11661, + 11661,11661,11661,11661,11661,11661,11661,11661,11661,11661, + + 11661,11661,11662, 0, 0, 0, 0,11662, 0, 0, + 0, 0, 0,11662,11662, 0,11662,11663,11663, 0, + 11663,11663,11663,11663,11663,11663,11663,11663,11663,11663, + 11663,11663,11663,11663,11663,11663,11663,11663,11663,11663, + 11663,11664,11664,11664,11664,11664,11664,11664,11664,11664, + 11664,11664,11664,11664,11664,11664,11664,11664,11664,11664, + 11664,11664,11664, 0,11664,11665,11665,11665,11665,11665, + 11665,11665,11665,11665,11665,11665,11665,11665,11665,11665, + 11665,11665,11665,11665,11665,11665,11665,11665,11665,11666, + 0, 0, 0, 0,11666, 0, 0, 0, 0, 0, + + 11666,11666, 0,11666,11667,11667,11667,11667,11667,11667, + 11667,11667,11667,11667,11667,11667,11667,11667,11667,11667, + 11667,11667,11667,11667,11667,11667,11667,11667,11668,11668, + 11668,11668,11668,11668,11668, 0,11668,11668,11668,11668, + 11668,11668,11668,11668,11668,11668,11668,11668,11668,11668, + 11668,11668,11669,11669,11669,11669,11669,11669,11669,11669, + 11669,11669,11669,11669,11669,11669,11669,11669,11669,11669, + 11669,11669,11669,11669,11669,11669,11670, 0, 0, 0, + 0, 0,11670,11670, 0,11670,11671, 0, 0, 0, + 0, 0, 0,11671,11671,11671,11671, 0, 0, 0, + + 0, 0,11671,11671,11672,11672, 0, 0, 0, 0, + 0,11672,11672,11673,11673, 0, 0, 0, 0, 0, + 11673,11673,11674, 0, 0, 0, 0, 0,11674,11674, + 0,11674,11675,11675, 0, 0, 0, 0, 0,11675, + 11675,11676, 0, 0, 0, 0, 0, 0, 0, 0, + 11676,11676, 0, 0, 0, 0, 0,11676,11676,11677, + 0, 0, 0, 0, 0,11677,11677, 0,11677,11679, + 11679, 0, 0, 0, 0, 0,11679,11679,11680,11680, + 0, 0, 0, 0, 0,11680,11680,11681,11681,11681, + 11681,11681,11681,11681,11681,11681,11681,11681,11681,11681, + + 11681,11681,11681,11681,11681,11681,11681,11681,11681,11681, + 11681,11682,11682,11682,11682,11682,11682,11682,11682,11682, + 11682,11682,11682,11682,11682,11682,11682,11682,11682,11682, + 11682,11682,11682,11682,11682,11683,11683,11683,11683,11683, + 11683,11683,11683,11683,11683,11683,11683,11683,11683,11683, + 11683,11683,11683,11683,11683,11683,11683,11683,11683,11685, + 11685, 0, 0, 0, 0, 0,11685,11685,11686,11686, + 0, 0, 0, 0, 0,11686,11686,11687,11687, 0, + 0, 0, 0, 0,11687,11687,11688,11688,11688,11688, + 0, 0, 0, 0, 0, 0,11688, 0, 0,11688, + + 0, 0, 0, 0, 0,11688,11688,11689, 0, 0, + 0, 0, 0, 0,11689,11689, 0,11689, 0, 0, + 0, 0, 0,11689,11689,11690,11690, 0, 0, 0, + 0, 0,11690,11690,11691, 0, 0, 0, 0, 0, + 0,11691,11691,11691,11691, 0, 0, 0, 0, 0, + 11691,11691,11692, 0, 0, 0, 0,11692, 0, 0, + 0, 0, 0,11692,11692, 0,11692,11693, 0, 0, + 0, 0,11693, 0, 0, 0, 0, 0,11693,11693, + 0,11693,11694,11694,11694,11694,11694,11694,11694,11694, + 11694,11694,11694,11694,11694,11694,11694,11694,11694,11694, + + 11694,11694,11694,11694,11694,11694,11695,11695,11695,11695, + 11695,11695,11695,11695,11695,11695,11695,11695,11695,11695, + 11695,11695,11695,11695,11695,11695,11695,11695,11695,11695, + 11696, 0, 0, 0, 0, 0, 0,11696, 0, 0, + 0, 0, 0,11696,11696, 0,11696,11697,11697, 0, + 0, 0, 0, 0,11697,11697,11698, 0, 0, 0, + 0, 0, 0, 0, 0,11698, 0, 0, 0, 0, + 0,11698,11698,11699,11699, 0, 0, 0, 0, 0, + 11699,11699,11700, 0, 0, 0,11700,11700, 0, 0, + 11700,11700,11700,11700,11700,11700,11700,11700, 0,11700, + + 11700,11700,11700,11700,11701, 0, 0, 0,11701,11701, + 0, 0,11701,11701,11701,11701,11701,11701,11701,11701, + 0,11701,11701,11701,11701,11701,11702, 0, 0, 0, + 0, 0, 0,11702,11702, 0,11702, 0, 0, 0, + 0, 0,11702,11702,11703,11703, 0, 0, 0, 0, + 0,11703,11703,11704, 0, 0, 0, 0, 0, 0, + 11704,11704,11704,11704, 0, 0, 0, 0, 0,11704, + 11704,11705,11705,11705,11705, 0, 0, 0, 0, 0, + 0, 0, 0,11705,11705, 0,11705, 0, 0, 0, + 11705,11705,11706,11706, 0, 0, 0, 0, 0,11706, + + 11706,11707,11707, 0,11707,11707,11707,11707,11707,11707, + 11707,11707,11707,11707,11707,11707,11707,11707,11707,11707, + 11707,11707,11707,11707,11707,11708,11708,11708,11708,11708, + 11708,11708,11708,11708,11708,11708,11708,11708,11708,11708, + 11708,11708,11708,11708,11708,11708,11708,11708,11708,11709, + 11709,11709,11709,11709,11709,11709,11709,11709,11709,11709, + 11709,11709,11709,11709,11709,11709,11709,11709,11709,11709, + 11709,11709,11709,11710,11710, 0, 0, 0, 0, 0, + 11710,11710,11711, 0, 0, 0, 0,11711, 0, 0, + 0, 0, 0,11711,11711, 0,11711,11712, 0, 0, + + 0, 0, 0, 0,11712,11712, 0,11712, 0, 0, + 0, 0, 0,11712,11712,11713,11713,11713,11713,11713, + 11713,11713, 0,11713,11713,11713,11713,11713,11713,11713, + 11713,11713,11713,11713,11713,11713,11713,11713,11713,11714, + 11714,11714,11714,11714,11714,11714,11714,11714,11714,11714, + 11714,11714,11714,11714,11714,11714,11714,11714,11714,11714, + 11714,11714,11714,11715,11715,11715,11715,11715,11715,11715, + 11715,11715,11715,11715,11715,11715,11715,11715,11715,11715, + 11715,11715,11715,11715,11715,11715,11715,11716, 0, 0, + 0, 0, 0,11716,11716, 0,11716,11717, 0, 0, + + 0, 0, 0, 0,11717,11717,11717,11717, 0, 0, + 0, 0, 0,11717,11717,11718,11718, 0, 0, 0, + 0, 0,11718,11718,11719,11719, 0, 0, 0, 0, + 0,11719,11719,11720, 0, 0, 0, 0, 0,11720, + 11720, 0,11720,11721,11721, 0, 0, 0, 0, 0, + 11721,11721,11721,11722, 0, 0, 0, 0, 0,11722, + 11722, 0,11722,11724,11724, 0, 0, 0, 0, 0, + 11724,11724,11725, 0, 0,11725, 0, 0, 0, 0, + 0, 0, 0, 0,11725,11725, 0, 0, 0, 0, + 0,11725,11725,11726,11726,11726,11726,11726,11726,11726, + + 11726,11726,11726,11726,11726,11726,11726,11726,11726,11726, + 11726,11726,11726,11726,11726,11726,11726,11728, 0, 0, + 11728, 0, 0, 0, 0, 0, 0, 0, 0,11728, + 11728, 0, 0, 0, 0, 0,11728,11728,11729, 0, + 0,11729, 0, 0, 0, 0, 0, 0, 0, 0, + 11729,11729, 0, 0, 0, 0, 0,11729,11729,11730, + 0, 0,11730, 0, 0, 0, 0, 0, 0, 0, + 0,11730,11730, 0, 0, 0, 0, 0,11730,11730, + 11731,11731,11731,11731, 0, 0, 0, 0, 0, 0, + 11731, 0, 0,11731, 0, 0, 0, 0, 0,11731, + + 11731,11732,11732, 0, 0, 0, 0, 0,11732,11732, + 11733, 0, 0, 0, 0, 0, 0,11733,11733,11733, + 11733, 0, 0, 0, 0, 0,11733,11733,11734, 0, + 0, 0, 0, 0, 0,11734,11734, 0,11734, 0, + 0, 0, 0, 0,11734,11734,11735, 0, 0, 0, + 0,11735, 0, 0, 0, 0, 0,11735,11735, 0, + 11735,11736,11736,11736,11736,11736,11736,11736,11736,11736, + 11736,11736,11736,11736,11736,11736,11736,11736,11736,11736, + 11736,11736,11736,11736,11736,11737,11737,11737,11737,11737, + 11737,11737,11737,11737,11737,11737,11737,11737,11737,11737, + + 11737,11737,11737,11737,11737,11737,11737,11737,11737,11738, + 0, 0, 0, 0, 0, 0,11738, 0, 0, 0, + 0, 0,11738,11738, 0,11738,11739,11739, 0, 0, + 0, 0, 0,11739,11739,11740, 0, 0, 0, 0, + 0, 0, 0, 0,11740, 0, 0, 0, 0, 0, + 11740,11740,11741,11741, 0, 0, 0, 0, 0,11741, + 11741,11742, 0, 0, 0,11742,11742, 0, 0,11742, + 11742,11742,11742,11742,11742,11742,11742, 0,11742,11742, + 11742,11742,11742,11743, 0, 0, 0,11743,11743, 0, + 0,11743,11743,11743,11743,11743,11743,11743,11743, 0, + + 11743,11743,11743,11743,11743,11744,11744, 0, 0, 0, + 0, 0,11744,11744,11745, 0, 0, 0, 0, 0, + 0,11745,11745,11745,11745, 0, 0, 0, 0, 0, + 11745,11745,11746,11746,11746,11746,11746,11746,11746,11746, + 11746,11746,11746,11746,11746,11746,11746,11746,11746,11746, + 11746,11746,11746,11746,11746,11746,11747,11747, 0, 0, + 0, 0, 0,11747,11747,11748,11748,11748,11748,11748, + 11748,11748,11748,11748,11748,11748,11748,11748,11748,11748, + 11748,11748,11748,11748,11748,11748,11748,11748,11748,11749, + 11749,11749,11749,11749,11749,11749,11749,11749,11749,11749, + + 11749,11749,11749,11749,11749,11749,11749,11749,11749,11749, + 11749,11749,11749,11750,11750, 0, 0, 0, 0, 0, + 11750,11750,11751, 0, 0, 0, 0,11751, 0, 0, + 0, 0, 0,11751,11751, 0,11751,11752,11752,11752, + 11752,11752,11752,11752, 0,11752,11752,11752,11752,11752, + 11752,11752,11752,11752,11752,11752,11752,11752,11752,11752, + 11752,11753,11753,11753,11753,11753,11753,11753,11753,11753, + 11753,11753,11753,11753,11753,11753,11753,11753,11753,11753, + 11753,11753,11753,11753,11753,11754, 0, 0, 0, 0, + 0, 0,11754,11754, 0,11754, 0, 0, 0, 0, + + 0,11754,11754,11755,11755, 0, 0, 0, 0, 0, + 11755,11755,11756,11756,11756,11756,11756,11756,11756,11756, + 11756,11756,11756,11756,11756,11756,11756,11756,11756,11756, + 11756,11756,11756,11756,11756,11756,11757, 0, 0, 0, + 0, 0, 0,11757,11757,11757,11757, 0, 0, 0, + 0, 0,11757,11757,11758,11758, 0, 0, 0, 0, + 0,11758,11758,11759,11759, 0, 0, 0, 0, 0, + 11759,11759,11760, 0, 0, 0, 0, 0,11760,11760, + 0,11760,11761,11761, 0, 0, 0, 0, 0,11761, + 11761,11762, 0, 0, 0, 0, 0, 0, 0, 0, + + 0,11762, 0,11762, 0, 0, 0,11762,11762,11763, + 0, 0, 0, 0, 0, 0, 0, 0,11763,11763, + 0,11763, 0, 0, 0,11763,11763,11764,11764, 0, + 0, 0, 0, 0,11764,11764,11765, 0, 0, 0, + 0, 0, 0, 0, 0, 0,11765, 0,11765, 0, + 0, 0,11765,11765,11766,11766, 0, 0, 0, 0, + 0,11766,11766,11767,11767, 0, 0, 0, 0, 0, + 11767,11767,11768,11768, 0, 0, 0, 0, 0,11768, + 11768,11769,11769, 0, 0, 0, 0, 0,11769,11769, + 11770, 0, 0, 0, 0, 0, 0,11770,11770,11770, + + 11770, 0, 0, 0, 0, 0,11770,11770,11771, 0, + 0, 0, 0,11771, 0, 0, 0, 0, 0,11771, + 11771, 0,11771,11772, 0, 0, 0, 0, 0, 0, + 11772,11772, 0,11772, 0, 0, 0, 0, 0,11772, + 11772,11773,11773,11773,11773,11773,11773,11773,11773,11773, + 11773,11773,11773,11773,11773,11773,11773,11773,11773,11773, + 11773,11773,11773,11773,11773,11774,11774,11774,11774,11774, + 11774,11774,11774,11774,11774,11774,11774,11774,11774,11774, + 11774,11774,11774,11774,11774,11774,11774,11774,11774,11775, + 0, 0,11775, 0, 0, 0, 0, 0, 0,11775, + + 0,11775, 0, 0, 0,11775,11775, 0,11775,11776, + 0, 0, 0, 0, 0, 0, 0, 0,11776, 0, + 0, 0, 0, 0,11776,11776,11777,11777, 0, 0, + 0, 0, 0,11777,11777,11778, 0, 0, 0,11778, + 11778, 0, 0,11778,11778,11778,11778,11778,11778,11778, + 11778, 0,11778,11778,11778,11778,11778,11779, 0, 0, + 0,11779,11779, 0, 0,11779,11779,11779,11779,11779, + 11779,11779,11779, 0,11779,11779,11779,11779,11779,11780, + 11780, 0, 0, 0, 0, 0,11780,11780,11781, 0, + 0, 0, 0, 0, 0,11781,11781,11781,11781, 0, + + 0, 0, 0, 0,11781,11781,11782,11782,11782,11782, + 11782,11782,11782,11782,11782,11782,11782,11782,11782,11782, + 11782,11782,11782,11782,11782,11782,11782,11782,11782,11782, + 11783,11783, 0, 0, 0, 0, 0,11783,11783,11784, + 11784,11784,11784,11784,11784,11784,11784,11784,11784,11784, + 11784,11784,11784,11784,11784,11784,11784,11784,11784,11784, + 11784,11784,11784,11785,11785,11785,11785,11785,11785,11785, + 11785,11785,11785,11785,11785,11785,11785,11785,11785,11785, + 11785,11785,11785,11785,11785,11785,11785,11786,11786, 0, + 0, 0, 0, 0,11786,11786,11787, 0, 0, 0, + + 0,11787, 0, 0, 0, 0, 0,11787,11787, 0, + 11787,11788,11788,11788,11788,11788,11788,11788, 0,11788, + 11788,11788,11788,11788,11788,11788,11788,11788,11788,11788, + 11788,11788,11788,11788,11788,11789,11789,11789,11789,11789, + 11789,11789,11789,11789,11789,11789,11789,11789,11789,11789, + 11789,11789,11789,11789,11789,11789,11789,11789,11789,11790, + 11790, 0, 0, 0, 0, 0,11790,11790,11791,11791, + 11791,11791,11791,11791,11791,11791,11791,11791,11791,11791, + 11791,11791,11791,11791,11791,11791,11791,11791,11791,11791, + 11791,11791,11792,11792,11792,11792,11792,11792,11792,11792, + + 11792,11792,11792,11792,11792,11792,11792,11792,11792,11792, + 11792,11792,11792,11792,11792,11792,11793,11793, 0, 0, + 0, 0, 0,11793,11793,11794, 0, 0, 0, 0, + 0, 0,11794,11794,11794,11794, 0, 0, 0, 0, + 0,11794,11794,11795,11795, 0, 0, 0, 0, 0, + 11795,11795,11796,11796,11796,11796,11796,11796,11796,11796, + 11796,11796,11796,11796,11796,11796,11796,11796,11796,11796, + 11796,11796,11796,11796,11796,11796,11797,11797, 0, 0, + 0, 0, 0,11797,11797,11798, 0, 0, 0, 0, + 0,11798,11798, 0,11798,11799,11799, 0, 0, 0, + + 0, 0,11799,11799,11802,11802,11802,11802, 0, 0, + 0, 0, 0, 0, 0, 0,11802,11802, 0, 0, + 0, 0, 0,11802,11802,11804, 0, 0, 0, 0, + 0,11804,11804, 0,11804,11805,11805, 0, 0, 0, + 0, 0,11805,11805,11806,11806, 0, 0, 0, 0, + 0,11806,11806,11807,11807, 0, 0, 0, 0, 0, + 11807,11807,11808,11808, 0, 0, 0, 0, 0,11808, + 11808,11809, 0, 0, 0, 0, 0, 0,11809,11809, + 11809,11809, 0, 0, 0, 0, 0,11809,11809,11810, + 0, 0, 0, 0,11810, 0, 0, 0, 0, 0, + + 11810,11810, 0,11810,11811,11811,11811,11811,11811,11811, + 11811,11811,11811,11811,11811,11811,11811,11811,11811,11811, + 11811,11811,11811,11811,11811,11811,11811,11811,11812,11812, + 11812,11812,11812,11812,11812,11812,11812,11812,11812,11812, + 11812,11812,11812,11812,11812,11812,11812,11812,11812,11812, + 11812,11812,11813,11813,11813,11813,11813,11813,11813,11813, + 11813,11813,11813,11813,11813,11813,11813,11813,11813,11813, + 11813,11813,11813,11813,11813,11813,11814, 0, 0, 0, + 0, 0, 0, 0, 0,11814, 0, 0, 0, 0, + 0,11814,11814,11815,11815, 0, 0, 0, 0, 0, + + 11815,11815,11817, 0, 0, 0,11817,11817, 0, 0, + 11817,11817,11817,11817,11817,11817,11817,11817, 0,11817, + 11817,11817,11817,11817,11818,11818, 0, 0, 0, 0, + 0,11818,11818,11819, 0, 0, 0, 0, 0, 0, + 11819,11819,11819,11819, 0, 0, 0, 0, 0,11819, + 11819,11820,11820, 0, 0, 0, 0, 0,11820,11820, + 11821,11821,11821,11821,11821,11821,11821,11821,11821,11821, + 11821,11821,11821,11821,11821,11821,11821,11821,11821,11821, + 11821,11821,11821,11821,11822,11822,11822,11822,11822,11822, + 11822,11822,11822,11822,11822,11822,11822,11822,11822,11822, + + 11822,11822,11822,11822,11822,11822,11822,11822,11823,11823, + 11823,11823,11823,11823,11823,11823,11823,11823,11823,11823, + 11823,11823,11823,11823,11823,11823,11823,11823,11823,11823, + 11823,11823,11824,11824, 0, 0, 0, 0, 0,11824, + 11824,11825, 0, 0, 0, 0,11825, 0, 0, 0, + 0, 0,11825,11825, 0,11825,11826,11826,11826,11826, + 11826,11826,11826, 0,11826,11826,11826,11826,11826,11826, + 11826,11826,11826,11826,11826,11826,11826,11826,11826,11826, + 11827,11827,11827,11827,11827,11827,11827,11827,11827,11827, + 11827,11827,11827,11827,11827,11827,11827,11827,11827,11827, + + 11827,11827,11827,11827,11828,11828,11828,11828,11828,11828, + 11828,11828,11828,11828,11828,11828,11828,11828,11828,11828, + 11828,11828,11828,11828,11828,11828,11828,11828,11829,11829, + 11829,11829,11829,11829,11829,11829,11829,11829,11829,11829, + 11829,11829,11829,11829,11829,11829,11829,11829,11829,11829, + 11829,11830,11830,11830,11830,11830,11830,11830,11830,11830, + 11830,11830,11830,11830,11830,11830,11830,11830,11830,11830, + 11830,11830,11830,11830,11830,11831,11831, 0, 0, 0, + 0, 0,11831,11831,11832, 0, 0, 0, 0, 0, + 0,11832,11832,11832,11832, 0, 0, 0, 0, 0, + + 11832,11832,11833,11833, 0, 0, 0, 0, 0,11833, + 11833,11834,11834,11834,11834,11834,11834,11834,11834,11834, + 11834,11834,11834,11834,11834,11834,11834,11834,11834,11834, + 11834,11834,11834,11834,11834,11835,11835, 0, 0, 0, + 0, 0,11835,11835,11836, 0, 0, 0, 0, 0, + 11836,11836, 0,11836,11837,11837, 0, 0, 0, 0, + 0,11837,11837,11841, 0, 0, 0, 0, 0,11841, + 11841, 0,11841,11842,11842, 0, 0, 0, 0, 0, + 11842,11842,11843,11843, 0, 0, 0, 0, 0,11843, + 11843,11844,11844, 0, 0, 0, 0, 0,11844,11844, + + 11845,11845, 0, 0, 0, 0, 0,11845,11845,11846, + 0, 0, 0, 0, 0, 0,11846,11846,11846,11846, + 0, 0, 0, 0, 0,11846,11846,11847, 0, 0, + 0, 0,11847, 0, 0, 0, 0, 0,11847,11847, + 0,11847,11848,11848,11848,11848,11848,11848,11848,11848, + 11848,11848,11848,11848,11848,11848,11848,11848,11848,11848, + 11848,11848,11848,11848,11848,11848,11849,11849,11849,11849, + 11849,11849,11849,11849,11849,11849,11849,11849,11849,11849, + 11849,11849,11849,11849,11849,11849,11849,11849,11849,11849, + 11850,11850,11850,11850,11850,11850,11850,11850,11850,11850, + + 11850,11850,11850,11850,11850,11850,11850,11850,11850,11850, + 11850,11850,11850,11850,11851, 0, 0, 0, 0, 0, + 0, 0, 0,11851, 0, 0, 0, 0, 0,11851, + 11851,11853, 0, 0, 0, 0,11853, 0, 0,11853, + 11853,11853,11853,11853,11853,11853,11853, 0,11853,11853, + 11853,11853,11853,11854,11854, 0, 0, 0, 0, 0, + 11854,11854,11855, 0, 0, 0, 0, 0, 0,11855, + 11855,11855,11855, 0, 0, 0, 0, 0,11855,11855, + 11856,11856, 0, 0, 0, 0, 0,11856,11856,11857, + 11857,11857,11857,11857,11857,11857,11857,11857,11857,11857, + + 11857,11857,11857,11857,11857,11857,11857,11857,11857,11857, + 11857,11857,11857,11858,11858,11858,11858,11858,11858,11858, + 11858,11858,11858,11858,11858,11858,11858,11858,11858,11858, + 11858,11858,11858,11858,11858,11858,11858,11859,11859,11859, + 11859,11859,11859,11859,11859,11859,11859,11859,11859,11859, + 11859,11859,11859,11859,11859,11859,11859,11859,11859,11859, + 11859,11860,11860,11860,11860, 0, 0, 0, 0, 0, + 0, 0, 0,11860,11860, 0, 0, 0, 0, 0, + 11860,11860,11860,11861,11861,11861,11861,11861,11861,11861, + 11861,11861,11861,11861,11861,11861,11861,11861,11861,11861, + + 11861,11861,11861,11861,11861,11861,11861,11862, 0, 0, + 0, 0,11862, 0, 0, 0, 0, 0,11862,11862, + 0,11862,11863,11863,11863,11863,11863,11863,11863, 0, + 11863,11863,11863,11863,11863,11863,11863,11863,11863,11863, + 11863,11863,11863,11863,11863,11863,11864,11864,11864,11864, + 11864,11864,11864,11864,11864,11864,11864,11864,11864,11864, + 11864,11864,11864,11864,11864,11864,11864,11864,11864,11864, + 11865,11865,11865,11865,11865,11865,11865,11865,11865,11865, + 11865,11865,11865,11865,11865,11865,11865,11865,11865,11865, + 11865,11865,11865,11865,11866,11866, 0, 0, 0, 0, + + 0,11866,11866, 0,11866,11867,11867,11867,11867,11867, + 11867,11867,11867,11867,11867,11867,11867,11867,11867,11867, + 11867,11867,11867,11867,11867,11867,11867,11867,11867,11868, + 11868,11868,11868,11868,11868,11868,11868,11868,11868,11868, + 11868,11868,11868,11868,11868,11868,11868,11868,11868,11868, + 11868,11868,11868,11869, 0, 0, 0, 0, 0,11869, + 11869, 0,11869,11870,11870,11870,11870,11870,11870,11870, + 11870,11870,11870,11870,11870,11870,11870,11870,11870,11870, + 11870,11870,11870,11870,11870,11870,11870,11871,11871,11871, + 11871,11871,11871,11871,11871,11871,11871,11871,11871,11871, + + 11871,11871,11871,11871,11871,11871,11871,11871,11871, 0, + 11871,11872, 0, 0, 0, 0, 0, 0,11872,11872, + 11872,11872, 0, 0, 0, 0, 0,11872,11872,11873, + 11873, 0, 0, 0, 0, 0,11873,11873,11874,11874, + 11874,11874,11874,11874,11874,11874,11874,11874,11874,11874, + 11874,11874,11874,11874,11874,11874,11874,11874,11874,11874, + 11874,11874,11875, 0, 0, 0, 0, 0,11875,11875, + 0,11875,11876,11876, 0, 0, 0, 0, 0,11876, + 11876,11877,11877, 0, 0, 0, 0, 0,11877,11877, + 11878,11878, 0, 0, 0, 0, 0,11878,11878,11879, + + 11879,11879,11879, 0, 0, 0, 0, 0, 0, 0, + 0,11879,11879, 0, 0, 0, 0, 0,11879,11879, + 11879,11880, 0, 0, 0, 0, 0, 0,11880,11880, + 11880,11880, 0, 0, 0, 0, 0,11880,11880,11881, + 0, 0, 0, 0,11881, 0, 0, 0, 0, 0, + 11881,11881, 0,11881,11882,11882,11882,11882,11882,11882, + 11882,11882,11882,11882,11882,11882,11882,11882,11882,11882, + 11882,11882,11882,11882,11882,11882,11882,11882,11883,11883, + 11883,11883,11883,11883,11883,11883,11883,11883,11883,11883, + 11883,11883,11883,11883,11883,11883,11883,11883,11883,11883, + + 11883,11883,11884,11884,11884,11884,11884,11884,11884,11884, + 11884,11884,11884,11884,11884,11884,11884,11884,11884,11884, + 11884,11884,11884,11884,11884,11884,11885,11885,11885,11885, + 11885,11885,11885,11885,11885,11885,11885,11885,11885,11885, + 11885,11885,11885,11885,11885,11885,11885,11885,11885,11885, + 11886, 0, 0, 0, 0, 0, 0, 0, 0,11886, + 0, 0, 0, 0, 0,11886,11886,11887,11887,11887, + 11887, 0, 0, 0, 0, 0, 0, 0, 0,11887, + 11887, 0, 0, 0, 0, 0,11887,11887,11887,11888, + 0, 0, 0, 0, 0, 0,11888,11888,11888,11888, + + 0, 0, 0, 0, 0,11888,11888,11889,11889, 0, + 0, 0, 0, 0,11889,11889,11890,11890,11890,11890, + 11890,11890,11890,11890,11890,11890,11890,11890,11890,11890, + 11890,11890,11890,11890,11890,11890,11890,11890,11890,11890, + 11891,11891,11891,11891,11891,11891,11891,11891,11891,11891, + 11891,11891,11891,11891,11891,11891,11891,11891,11891,11891, + 11891,11891,11891,11891,11892, 0, 0, 0, 0, 0, + 11892,11892, 0,11892,11893,11893,11893,11893,11893,11893, + 11893, 0,11893,11893,11893,11893,11893,11893,11893,11893, + 11893,11893,11893,11893,11893,11893,11893,11893,11894,11894, + + 11894,11894,11894,11894,11894, 0,11894,11894,11894,11894, + 11894,11894,11894,11894,11894,11894,11894,11894,11894,11894, + 11894,11894,11895,11895,11895,11895,11895,11895,11895,11895, + 11895,11895,11895,11895,11895,11895,11895,11895,11895,11895, + 11895,11895,11895,11895,11895,11895,11896,11896,11896,11896, + 11896,11896,11896,11896,11896,11896,11896,11896,11896,11896, + 11896,11896,11896,11896,11896,11896,11896,11896,11896,11896, + 11897,11897, 0, 0, 0, 0, 0,11897,11897, 0, + 11897,11898,11898,11898,11898,11898,11898,11898,11898,11898, + 11898,11898,11898,11898,11898,11898,11898,11898,11898,11898, + + 11898,11898,11898,11898,11898,11899,11899,11899,11899,11899, + 11899,11899,11899,11899,11899,11899,11899,11899,11899,11899, + 11899,11899,11899,11899,11899,11899,11899,11899,11899,11900, + 11900, 0, 0, 0, 0, 0,11900,11900,11901, 0, + 0, 0, 0, 0,11901,11901, 0,11901,11902, 0, + 0, 0, 0, 0,11902,11902,11902, 0,11902, 0, + 0, 0, 0, 0,11902,11902,11903, 0, 0, 0, + 0, 0,11903,11903, 0,11903,11904,11904,11904,11904, + 11904,11904,11904,11904,11904,11904,11904,11904,11904,11904, + 11904,11904,11904,11904,11904,11904,11904,11904,11904,11904, + + 11905,11905,11905,11905,11905,11905,11905,11905,11905,11905, + 11905,11905,11905,11905,11905,11905,11905,11905,11905,11905, + 11905,11905, 0,11905,11906, 0, 0, 0, 0, 0, + 0,11906,11906,11906,11906, 0, 0, 0, 0, 0, + 11906,11906,11907,11907,11907,11907,11907,11907,11907,11907, + 11907,11907,11907,11907,11907,11907,11907,11907,11907,11907, + 11907,11907,11907,11907,11907,11907,11908, 0, 0, 0, + 0, 0,11908,11908, 0,11908,11909,11909, 0, 0, + 0, 0, 0,11909,11909,11910, 0, 0, 0, 0, + 0, 0,11910,11910,11910,11910, 0, 0, 0, 0, + + 0,11910,11910,11911, 0, 0, 0, 0,11911, 0, + 0, 0, 0, 0,11911,11911, 0,11911,11912,11912, + 11912,11912,11912,11912,11912,11912,11912,11912,11912,11912, + 11912,11912,11912,11912,11912,11912,11912,11912,11912,11912, + 11912,11912,11913,11913,11913,11913,11913,11913,11913,11913, + 11913,11913,11913,11913,11913,11913,11913,11913,11913,11913, + 11913,11913,11913,11913,11913,11913,11914,11914, 0, 0, + 0, 0, 0,11914,11914,11915, 0, 0, 0, 0, + 0,11915,11915,11915, 0,11915, 0, 0, 0, 0, + 0,11915,11915,11916,11916,11916,11916,11916,11916,11916, + + 11916,11916,11916,11916,11916,11916,11916,11916,11916,11916, + 11916,11916,11916,11916,11916,11916,11916,11917,11917,11917, + 11917,11917,11917,11917,11917,11917,11917,11917,11917,11917, + 11917,11917,11917,11917,11917,11917,11917,11917,11917,11917, + 11917,11918,11918,11918,11918,11918,11918,11918,11918,11918, + 11918,11918,11918,11918,11918,11918,11918,11918,11918,11918, + 11918,11918,11918,11918,11918,11919, 0, 0, 0, 0, + 0, 0, 0, 0,11919, 0, 0, 0, 0, 0, + 11919,11919,11920,11920,11920,11920,11920,11920,11920,11920, + 11920,11920,11920,11920,11920,11920,11920,11920,11920,11920, + + 11920,11920,11920,11920,11920,11920,11921,11921,11921,11921, + 11921,11921,11921,11921,11921,11921,11921,11921,11921,11921, + 11921,11921,11921,11921,11921,11921,11921,11921,11921,11921, + 11922, 0, 0, 0, 0, 0,11922,11922, 0,11922, + 11923, 0, 0, 0, 0,11923, 0, 0, 0, 0, + 0,11923,11923, 0,11923,11924,11924,11924,11924,11924, + 11924,11924,11924,11924,11924,11924,11924,11924,11924,11924, + 11924,11924,11924,11924,11924,11924,11924,11924,11924,11925, + 11925,11925,11925,11925,11925,11925,11925,11925,11925,11925, + 11925,11925,11925,11925,11925,11925,11925,11925,11925,11925, + + 11925,11925,11925,11927,11927,11927,11927,11927,11927,11927, + 0,11927,11927,11927,11927,11927,11927,11927,11927,11927, + 11927,11927,11927,11927,11927,11927,11927,11928,11928,11928, + 11928,11928,11928,11928, 0,11928,11928,11928,11928,11928, + 11928,11928,11928,11928,11928,11928,11928,11928,11928,11928, + 11928,11929,11929,11929,11929,11929,11929,11929, 0,11929, + 11929,11929,11929,11929,11929,11929,11929,11929,11929,11929, + 11929,11929,11929,11929,11929,11930,11930,11930,11930,11930, + 11930,11930,11930,11930,11930,11930,11930,11930,11930,11930, + 11930,11930,11930,11930,11930,11930,11930,11930,11930,11931, + + 11931,11931,11931,11931,11931,11931,11931,11931,11931,11931, + 11931,11931,11931,11931,11931,11931,11931,11931,11931,11931, + 11931,11931,11931,11932,11932,11932,11932,11932,11932,11932, + 11932,11932,11932,11932,11932,11932,11932,11932,11932,11932, + 11932,11932,11932,11932,11932,11932,11932,11933,11933,11933, + 11933,11933,11933,11933,11933,11933,11933,11933,11933,11933, + 11933,11933,11933,11933,11933,11933,11933,11933,11933,11933, + 11934,11934, 0, 0, 0, 0, 0,11934,11934,11935, + 0, 0, 0, 0, 0,11935,11935, 0,11935,11936, + 11936,11936,11936,11936,11936,11936,11936,11936,11936,11936, + + 11936,11936,11936,11936,11936,11936,11936,11936,11936,11936, + 11936,11936,11936,11937,11937,11937,11937,11937,11937,11937, + 11937,11937,11937,11937,11937,11937,11937,11937,11937,11937, + 11937,11937,11937,11937,11937,11937,11937,11938,11938,11938, + 11938,11938,11938,11938,11938,11938,11938,11938,11938,11938, + 11938,11938,11938,11938,11938,11938,11938,11938,11938,11938, + 11938,11939, 0, 0, 0, 0, 0, 0,11939,11939, + 11939,11939, 0, 0, 0, 0, 0,11939,11939,11940, + 11940,11940,11940,11940,11940,11940,11940,11940,11940,11940, + 11940,11940,11940,11940,11940,11940,11940,11940,11940,11940, + + 11940,11940,11940,11941,11941,11941,11941,11941,11941,11941, + 11941,11941,11941,11941,11941,11941,11941,11941,11941,11941, + 11941,11941,11941,11941,11941,11941,11941,11942,11942, 0, + 0, 0, 0, 0,11942,11942,11942,11943, 0, 0, + 0, 0, 0, 0,11943,11943,11943,11943, 0, 0, + 0, 0, 0,11943,11943,11944,11944, 0,11944,11944, + 11944,11944,11944,11944,11944,11944,11944,11944,11944,11944, + 11944,11944,11944,11944,11944,11944,11944,11944,11944,11945, + 0, 0, 0, 0,11945, 0, 0, 0, 0, 0, + 11945,11945, 0,11945,11946,11946,11946,11946,11946,11946, + + 11946,11946,11946,11946,11946,11946,11946,11946,11946,11946, + 11946,11946,11946,11946,11946,11946,11946,11946,11947,11947, + 0, 0, 0, 0, 0,11947,11947,11948, 0, 0, + 0, 0, 0, 0, 0, 0,11948, 0, 0, 0, + 0, 0,11948,11948,11949,11949,11949,11949,11949,11949, + 11949,11949,11949,11949,11949,11949,11949,11949,11949,11949, + 11949,11949,11949,11949,11949,11949,11949,11949,11950,11950, + 11950,11950,11950,11950,11950,11950,11950,11950,11950,11950, + 11950,11950,11950,11950,11950,11950,11950,11950,11950,11950, + 11950,11951,11951,11951,11951,11951,11951,11951,11951,11951, + + 11951,11951,11951,11951,11951,11951,11951,11951,11951,11951, + 11951,11951,11951,11951,11951,11952, 0, 0, 0, 0, + 0,11952,11952, 0,11952,11953,11953,11953,11953,11953, + 11953,11953,11953,11953,11953,11953,11953,11953,11953,11953, + 11953,11953,11953,11953,11953,11953,11953,11953,11953,11954, + 11954,11954,11954,11954,11954,11954,11954,11954,11954,11954, + 11954,11954,11954,11954,11954,11954,11954,11954,11954,11954, + 11954,11954,11954,11955,11955,11955,11955,11955,11955,11955, + 11955,11955,11955,11955,11955,11955,11955,11955,11955,11955, + 11955,11955,11955,11955,11955,11955,11955,11957,11957,11957, + + 11957,11957,11957,11957,11957,11957,11957,11957,11957,11957, + 11957,11957,11957,11957,11957,11957,11957,11957,11957,11957, + 11957,11958,11958,11958,11958,11958,11958,11958,11958,11958, + 11958,11958,11958,11958,11958,11958,11958,11958,11958,11958, + 11958,11958,11958,11958,11958,11959,11959,11959,11959,11959, + 11959,11959, 0,11959,11959,11959,11959,11959,11959,11959, + 11959,11959,11959,11959,11959,11959,11959,11959,11959,11960, + 11960,11960,11960,11960,11960,11960, 0,11960,11960,11960, + 11960,11960,11960,11960,11960,11960,11960,11960,11960,11960, + 11960,11960,11960,11961,11961,11961,11961,11961,11961,11961, + + 0,11961,11961,11961,11961,11961,11961,11961,11961,11961, + 11961,11961,11961,11961,11961,11961,11961,11962,11962,11962, + 11962,11962,11962,11962,11962,11962,11962,11962,11962,11962, + 11962,11962,11962,11962,11962,11962,11962,11962,11962,11962, + 11962,11963, 0, 0, 0, 0, 0,11963,11963,11963, + 0,11963, 0, 0, 0, 0, 0,11963,11963,11964, + 11964,11964,11964,11964,11964,11964,11964,11964,11964,11964, + 11964,11964,11964,11964,11964,11964,11964,11964,11964,11964, + 11964,11964,11964,11965,11965,11965,11965,11965,11965,11965, + 11965,11965,11965,11965,11965,11965,11965,11965,11965,11965, + + 11965,11965,11965,11965,11965,11965,11965,11966,11966, 0, + 0, 0, 0, 0,11966,11966,11967,11967,11967,11967, + 11967,11967,11967,11967,11967,11967,11967,11967,11967,11967, + 11967,11967,11967,11967,11967,11967,11967,11967,11967,11967, + 11968,11968,11968,11968,11968,11968,11968,11968,11968,11968, + 11968,11968,11968,11968,11968,11968,11968,11968,11968,11968, + 11968,11968,11968,11968,11969,11969,11969,11969,11969,11969, + 11969,11969,11969,11969,11969,11969,11969,11969,11969,11969, + 11969,11969,11969,11969,11969,11969,11969,11969,11970,11970, + 11970,11970,11970,11970,11970,11970,11970,11970,11970,11970, + + 11970,11970,11970,11970,11970,11970,11970,11970,11970,11970, + 11970,11970,11971, 0, 0, 0, 0, 0, 0,11971, + 11971,11971,11971, 0, 0, 0, 0, 0,11971,11971, + 11972,11972,11972,11972,11972,11972,11972,11972,11972,11972, + 11972,11972,11972,11972,11972,11972,11972,11972,11972,11972, + 11972,11972,11972,11972,11973,11973,11973,11973,11973,11973, + 11973,11973,11973,11973,11973,11973,11973,11973,11973,11973, + 11973,11973,11973,11973,11973,11973,11973,11973,11974, 0, + 0, 0, 0, 0, 0,11974,11974,11974,11974, 0, + 0, 0, 0, 0,11974,11974,11975, 0, 0, 0, + + 0, 0,11975,11975,11975, 0,11975, 0, 0, 0, + 0, 0,11975,11975,11976,11976,11976,11976,11976,11976, + 11976,11976,11976,11976,11976,11976,11976,11976,11976,11976, + 11976,11976,11976,11976,11976,11976,11976,11976,11977,11977, + 0, 0, 0, 0, 0,11977,11977,11978, 0, 0, + 0, 0, 0, 0, 0, 0,11978, 0, 0, 0, + 0, 0,11978,11978,11979,11979,11979,11979,11979,11979, + 11979,11979,11979,11979,11979,11979,11979,11979,11979,11979, + 11979,11979,11979,11979,11979,11979,11979,11979,11980,11980, + 11980,11980,11980,11980,11980,11980,11980,11980,11980,11980, + + 11980,11980,11980,11980,11980,11980,11980,11980,11980,11980, + 11980,11981,11981,11981,11981,11981,11981,11981,11981,11981, + 11981,11981,11981,11981,11981,11981,11981,11981,11981,11981, + 11981,11981,11981,11981,11981,11982, 0, 0, 0, 0, + 0,11982,11982, 0,11982,11983,11983,11983,11983,11983, + 11983,11983,11983,11983,11983,11983,11983,11983,11983,11983, + 11983,11983,11983,11983,11983,11983,11983,11983,11983,11984, + 11984,11984,11984,11984,11984,11984,11984,11984,11984,11984, + 11984,11984,11984,11984,11984,11984,11984,11984,11984,11984, + 11984,11984,11984,11985,11985,11985,11985,11985,11985,11985, + + 11985,11985,11985,11985,11985,11985,11985,11985,11985,11985, + 11985,11985,11985,11985,11985,11985,11985,11986,11986,11986, + 11986,11986,11986,11986, 0,11986,11986,11986,11986,11986, + 11986,11986,11986,11986,11986,11986,11986,11986,11986,11986, + 11986,11987,11987,11987,11987,11987,11987,11987, 0,11987, + 11987,11987,11987,11987,11987,11987,11987,11987,11987,11987, + 11987,11987,11987,11987,11987,11988,11988,11988,11988,11988, + 11988,11988, 0,11988,11988,11988,11988,11988,11988,11988, + 11988,11988,11988,11988,11988,11988,11988,11988,11988,11989, + 11989,11989,11989,11989,11989,11989,11989,11989,11989,11989, + + 11989,11989,11989,11989,11989,11989,11989,11989,11989,11989, + 11989,11989,11989,11990,11990,11990,11990,11990,11990,11990, + 11990,11990,11990,11990,11990,11990,11990,11990,11990,11990, + 11990,11990,11990,11990,11990,11990,11990,11991,11991,11991, + 11991,11991,11991,11991,11991,11991,11991,11991,11991,11991, + 11991,11991,11991,11991,11991,11991,11991,11991,11991,11991, + 11991,11992, 0, 0, 0, 0, 0, 0, 0, 0, + 11992,11992, 0, 0, 0, 0, 0,11992,11992,11992, + 11993,11993,11993,11993,11993,11993,11993,11993,11993,11993, + 11993,11993,11993,11993,11993,11993,11993,11993,11993,11993, + + 11993,11993,11993,11993,11994, 0, 0, 0, 0, 0, + 0,11994,11994,11994,11994, 0, 0, 0, 0, 0, + 11994,11994,11995, 0, 0, 0, 0, 0, 0,11995, + 11995,11995,11995, 0, 0, 0, 0, 0,11995,11995, + 11996, 0, 0, 0, 0, 0, 0, 0, 0,11996, + 11996, 0, 0, 0, 0, 0,11996,11996,11996,11997, + 11997, 0, 0, 0, 0, 0,11997,11997, 0,11997, + 11998,11998,11998,11998,11998,11998,11998,11998,11998,11998, + 11998,11998,11998,11998,11998,11998,11998,11998,11998,11998, + 11998,11998,11998,11998,11999, 0, 0, 0, 0,11999, + + 0, 0, 0, 0, 0,11999,11999, 0,11999,12000, + 12000,12000,12000,12000,12000,12000,12000,12000,12000,12000, + 12000,12000,12000,12000,12000,12000,12000,12000,12000,12000, + 12000,12000,12000,12001,12001,12001,12001,12001,12001,12001, + 12001,12001,12001,12001,12001,12001,12001,12001,12001,12001, + 12001,12001,12001,12001,12001,12001,12001,12002,12002,12002, + 12002,12002,12002,12002,12002,12002,12002,12002,12002,12002, + 12002,12002,12002,12002,12002,12002,12002,12002,12002,12002, + 12002,12003,12003,12003,12003,12003,12003,12003,12003,12003, + 12003,12003,12003,12003,12003,12003,12003,12003,12003,12003, + + 12003,12003,12003,12003,12003,12004, 0, 0, 0, 0, + 0,12004,12004, 0,12004,12005,12005,12005,12005,12005, + 12005,12005,12005,12005,12005,12005,12005,12005,12005,12005, + 12005,12005,12005,12005,12005,12005,12005,12005,12005,12006, + 12006,12006,12006,12006,12006,12006,12006,12006,12006,12006, + 12006,12006,12006,12006,12006,12006,12006,12006,12006,12006, + 12006,12006,12006,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275,11275,11275,11275, + 11275,11275,11275,11275,11275,11275,11275 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "tth.lex" +/* TtH flex file to convert plain TeX and LaTeX to HTML. +(c) Ian Hutchinson, 1997-2011. +Released under the terms of the GPL2. See license.txt +This file needs to be turned into a C program using flex +And then compiled into the tth executable using a C compiler. +*/ +#line 10 "tth.lex" +#define TTH_VERSION "4.08" + /*#define TTH_GOLD "gold" no longer a distinction*/ /*sf*/ +#define TTH_HEAD "HEAD" /*sf*/ +char tth_DOC[]="\n\ + Version XXXX (c)1997-2011 Ian Hutchinson\n\ + TtH (TeX-to-HTML) translates TeX into HTML.\n\n\ +The program is a filter by default: it reads from stdin and writes to stdout.\n\ +But a non-switch argument specifies the file[.tex] to translate to file.html.\n\ +Diagnostics concerning unknown or untranslated constructs are sent to stderr.\n\n\ + Obtain USAGE & switch information by: tth -?\n\ + Obtain QUALIFICATIONS by: tth -?q\n\n\ +TtH may be used and distributed under the terms of the GPL version 2.\n"; +char tth_DOCQ[]="\n\ +TeX including mathematics; Plain TeX; LaTeX (2e). \n\ +Limitations and special usages:\n\ + \\input searches TTHINPUTS not TEXINPUTS. Counter operations are global.\n\ + \\catcode changes, tabbing environment, \\usepackage: not supported.\n\ + \\epsfbox{file.eps} links or inlines the figure file, depending on -e switch.\n\ + \\special{html:stuff} inserts HTML stuff. \\iftth is always true.\n\ + \\href{URL}{anchor text} inserts a hypertext anchor pointing to URL.\n\ + %%tth: ... passes the rest of the comment to TtH (not TeX) for parsing\n\ +\n\ +"; +char tth_USAGE[]="\n\ +USAGE: tth [-a -c ...] [<]file.tex [>file.html] [2>err]\n\ + A non-switch argument specifies the input file and the implied output file.\n\ + -h print help. -? print this usage.\n\ + -a enable automatic calls of LaTeX: if no aux file exists, attempt to call.\n\ + picture environment conversion using latex2gif. Default omit.\n\ + -c prefix header \"Content-type: text/HTML\" (for direct web serving).\n\ + -d disable definitions with delimited arguments. Default enable.\n\ + -e? epsfbox handling: -e1 convert to png/gif using user-supplied ps2png/gif.\n\ + -e2 convert and include inline. -e0 (default) no conversion, just ref. \n\ + -f? limit built-up fraction nesting in display eqns to ?(0-9). Default 5.\n\ + -g remove, don\'t guess intent of, \\font commands. Default guess font/size.\n\ + -i use italic font for equations (like TeX). Default roman.\n\ + -j? use index page length ?. Default 20 lines. -j single column.\n\ + -Lfile tell tth the base file (no extension) for LaTeX auxiliary input,\n\ + enables LaTeX commands (e.g. \\frac) without a \\documentclass line.\n\ + -n? HTML title format control. 0 raw. 1 expand macros. 2 expand eqns. \n\ + -ppath specify additional directories (path) to search for input files.\n\ + -r raw HTML output (omit header and tail) for inclusion in other files.\n\ + -t display built-up items in textstyle equations. Default in-line.\n\ + -u unicode character encoding. (Default iso-8859-1).\n\ + -w? HTML writing style. Default no head/body tags. -w -w0 no title.\n\ + -w1 single title only, head/body tags. -w2 XHTML.\n\ + -y? equation style: bit 1 compress vertically; bit 2 inline overaccents.\n\ + -xmakeindxcmd specify command for making index. Default \"makeindex\"\n\ + -v give verbose commentary. -V even more verbose (for debugging).\n"; +char *tth_debughelp="\n\ +Debugging mask: usage tth -vn with n the sum of:\n\ +Bit 1. 1 Standard verbose messages.\n\ +Bit 2. 2 Equation code.\n\ +Bit 3. 4 Definitions, counters, countersetting.\n\ +Bit 4. 8 Macro expansions. Delimited argument matching.\n\ +Bit 5. 16 Stack levels, brace counts etc.\n\ +Bit 6. 32 Tabular, Figures and Pictures.\n\ +Bit 7. 64 Comments.\n\ +Bit 8. 128 Auxiliary Files.\n\ +Bit 9. 256 Cross-references.\n\ +Bit 10. 512 Built-ins, codes.\n\ +Bit 11. 1024 Conditionals, dimensions.\n\ +Bit 12. 2048 Fonts\n\ +Bit 13. 4096 Termination.\n\ +Bit 14. 8192 Line-end diagnosis.\n\ +Bit 16. 32768 Silence unknown command warnings.\n\ + -V= 2048+256+4+2+1\n"; + + +#include <string.h> +#include <stdlib.h> +#include <stdio.h> +#include <ctype.h> /* For toupper */ +#include <time.h> +#define GET_DIMEN {yy_push_state(lookforunit);yy_push_state(lookfornum);\ + *argchar=0;} +#define TTH_MAXDEPTH 30 +#define TTH_CHARLEN 500 +#define TTH_DLEN 20000 +#define TTH_34DLEN 72000 +#define TTH_FONTLEN 200 +#ifdef __vms +#define SUCCESS 1 +#define RMCMD "del" +#define RMTERM ";" +#define PATH_SEP "," +#define DIR_SEP "" +#else +#define SUCCESS 0 +#ifdef MSDOS +#define RMCMD "del" +#define RMTERM "" +#define PATH_SEP ";" +#define DIR_SEP "\\" +#else +#define RMCMD "rm" +#define RMTERM "" +#define PATH_SEP ":" +#define DIR_SEP "/" +#endif +#endif + + /*#define TTH_EXIT(level) exit(level)*/ +#define TTH_EXIT(level) return level; +#define TTH_FATAL(level) yy_push_state(error);tth_ercnt=-abs(level);tth_erlev=level; + + /* Silence warnings */ +#define YY_NO_TOP_STATE + + /* lex Globals */ +void tth_push(),tth_pop(); +char* tth_symbol_point(); +int tth_root_len[TTH_MAXDEPTH] ={0}; +char tth_root_index[TTH_MAXDEPTH][TTH_CHARLEN]={{0}}; +int tth_root_depth=0; +int tth_num_lines = 1; +int tth_push_depth=0; +char tth_closures[TTH_MAXDEPTH][TTH_CHARLEN]; +char tth_texclose[TTH_MAXDEPTH][TTH_CHARLEN]={{0}}; +char tth_font_open[TTH_MAXDEPTH][TTH_CHARLEN]={{0}}; +char tth_font_close[TTH_MAXDEPTH][TTH_CHARLEN]={{0}}; +char tth_fonto_def[TTH_CHARLEN]={0}; +char tth_fontc_def[TTH_CHARLEN]={0}; +int tth_key[TTH_MAXDEPTH]; +int tth_debug = 0; +int tth_verb = 0; +int tth_delimdef=1; +int tth_mathitalic=1; +int tth_flev0=5; +int tth_flev=5; +int tth_multinum=1; +int tth_autopic=0; +int tth_istyle=3; +int tth_htmlstyle=0; +int tth_unicode=2; +int tth_indexpage=20; +int tth_allowinput=1; +int tth_titlestate=4; +int tth_tagpurge=0; + +#ifdef MSDOS + /* Define the size of djgpp stack*/ +unsigned _stklen = 1048576; /* need a larger stack (1Mb) */ +#endif + + /*Global string pointer and length*/ +#define MAX_INCLUDE_DEPTH 100 +YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH]; +YY_BUFFER_STATE halbuff; +FILE *tth_inputfile=0; +FILE *tth_indexfile=0; +FILE *tth_indexstyle=0; +FILE *tth_picfile=0; +FILE *tth_fdout=0; +int tth_stack_ptr = 0; +int tth_ercnt=0; +int tth_erlev=0; +int tth_epsftype=0; +int tth_fontguess=1; +int tth_splitfile=0; /*sf*/ +int tth_inlinefrac=0; +char tth_latex_file[TTH_CHARLEN]={0}; /* base name of latex files. */ +char tth_index_cmd[TTH_CHARLEN]={0}; /* Makeindex command line. */ +char tth_texinput_path[TTH_CHARLEN]={0}; +int tth_LaTeX=0; +char *tth_latex_builtins = "\\def\\frac#1#2{{{#1}\\over{#2}}}\ +\\def\\label#1{\\tthlabel}\ +\\def\\newlabel#1#2{\\tthnewlabel}\ +\\def\\ref#1{\\tthref}\ +\\def\\pageref#1{\\tthpageref}\ +\\def\\index{\\tthgpindex}\ +\\def\\see#1#2{{\\it\\seename} #1}\ +\\tthcountinit\ +\\newcount\\footnote\ +\\newcounter{chapter}\ +\\newcounter{section}[chapter]\ +\\newcounter{subsection}[section]\ +\\renewcommand{\\thesubsection}{\\thesection.\\arabic{subsection}}\ +\\newcounter{subsubsection}[subsection]\ +\\renewcommand{\\thesubsubsection}{\\thesubsection.\\arabic{subsubsection}}\ +\\newcounter{equation}[chapter]\ +\\newcounter{figure}[chapter]\ +\\newcounter{table}[chapter]\ +\\newcounter{part}\ +\\newcounter{secnumdepth}\ +\\setcounter{secnumdepth}{3}\ +\\def\\newtheorem#1#2{\\newenvironment{#1}{\\par\\stepcounter{#1}\ + \\textbf{#2 \\arabic{#1}}\\bgroup \\em}{\\par\\egroup}\\newcounter{#1}}\ +\\def\\tthenclose#1#2#3{#1{#3}#2}\ +\\def\\prefacename{Preface}\ +\\def\\refname{References}\ +\\def\\abstractname{Abstract}\ +\\def\\bibname{Bibliography}\ +\\def\\chaptername{Chapter}\ +\\def\\appendixname{Appendix}\ +\\def\\contentsname{Contents}\ +\\def\\listfigurename{List of Figures}\ +\\def\\listtablename{List of Tables}\ +\\def\\indexname{Index}\ +\\def\\figurename{Figure}\ +\\def\\tablename{Table}\ +\\def\\partname{Part}\ +\\def\\enclname{encl}\ +\\def\\ccname{cc}\ +\\def\\headtoname{To}\ +\\def\\pagename{Page}\ +\\def\\seename{see}\ +\\def\\alsoname{see also}\ +\\def\\proofname{Proof}\ +\\def\\newfont#1#2{\\font#1 #2 }\ +\\def\\thanks#1{\\footnote{#1}}\ +\\def\\bibcite{\\gdef}\n"; +char *tth_latex_builtins2= +"\\newcommand{\\part}[1][]{\\tthpart}\ +\\newcommand{\\chapter}[1][]{\\tthchapter}\ +\\newcommand{\\section}[1][]{\\tthsection}\ +\\newcommand{\\subsection}[1][]{\\tthsubsection}\ +\\newcommand{\\subsubsection}[1][]{\\tthsubsubsection}\ +\\newcounter{paragraph}[subsubsection]\ +\\renewcommand{\\theparagraph}{\\thesubsubsection.\\arabic{paragraph}}\ +\\newcommand{\\paragraph}[1][]{\\tthparagraph}\ +\\newcounter{subparagraph}[paragraph]\ +\\renewcommand{\\thesubparagraph}{\\theparagraph.\\arabic{subparagraph}}\ +\\newcommand{\\subparagraph}[1][]{\\tthsubparagraph}\ +\\newcommand{\\author}[2][]{\\centerheader{3}{#2}{align=\"center\"}}\ +\\newcommand{\\date}[2][]{\\centerheader{3}{#2}{align=\"center\"}}\ +\\newcommand{\\address}[2][]{\\centerheader{3}{#2}{align=\"center\"}}\ +\\newcommand{\\parbox}[2][]{\\hbox to #2}\ +\\def\\symbol#1{\\char#1}\ +\\def\\text{\\textrm}\ +\\def\\definecolor#1#2#3{\\def{#1}{{#3}}}\ +\\def\\setlength#1#2{#1=#2}\ +\\def\\columnwidth{\\hsize}\ +\\newcommand\\caption[1][]{\\tthcaption}\ +\\newenvironment{longtable}\ +{\\begin{table}\\begin{center}\ + \\def\\noalcen##1{\\noalign{\\centering ##1}\\stepcounter{table}}\ + \\renewcommand\\caption[2][]{\\ifx ##2* \\noalcen\ + \\else\\noalign{\\tthcaption{##2}}\\fi}\ + \\def\\endhead{\\\\}\\def\\endfirsthead{\\\\}\ + \\def\\endfoot{\\\\}\\def\\endlastfoot{\\\\}\ + \\def\\kill{\\\\}\ + \\begin{tabular}}\ + {\\end{tabular}\\end{center}\\end{table}}\ +\\def\\tthciteform{}\\def\\tthbibform{[}\\def\\tthbibcb{]}\ +\\def\\tthciteob{[}\\def\\tthcitepb{,}\\def\\tthcitefi{,}\\def\\tthcitecb{]}\ +\\newcommand\\citet[2][]{{\\def\\tthciteform##1##2##3##4{##3 [##2]}\ +\\def\\tthciteob{}\\def\\tthcitecb{}\\cite[#1]{#2}}}\ +\\newcommand\\citep[2][]{{\\def\\tthciteform##1##2##3##4{##3, ##2}\ +\\def\\tthciteob{[}\\cite[#1]{#2}}}\ +\\newcommand\\marginpar[2][]{\\special{html:<table align=\"right\" border=\ +\"border\"><tr><td align=\"right\">}#2\\special{html:</td></tr></table>}}\ +\\def\\newsavebox{\\newbox}\n"; +char *tth_latex_builtins3= +"\\def\\tthsplittail{\ +\\special{html:\n<hr /><table width=\"100\\%\"><tr><td>\n\ + <a href=\"index.html\">HEAD</a></td><td align=\"right\">\n\ +<a href=\"}\\tthfilenext\\special{html:\">}NEXT\n\ +\\special{html:</a></td></tr></table>\n</div></body></html>}}\n\ +\\def\\tthsplittop{\ +\\special{html:<table width=\"100\\%\"><tr><td>\n\ + <a href=\"index.html\">HEAD</a></td><td align=\"right\">\n\ + <a href=\"}\\tthfilechar\\special{html:\">}PREVIOUS\n\ +\\special{html:</a></td></tr></table>}}\n\ +\\def\\glossary\\index\n\ +\\newenvironment{floatingfigure}{\\special{html:\ +<br clear=\"all\" />\n\ +<table border=\"0\" align=\"left\" width=\"20\\%\"><tr><td>}\ +\\begin{figure}\\wd}{\\special{html:</td></tr></table>}\\end{figure}}\n\ +\\def\\tabularnewline{\\\\}\n\ +\\def\\AtEndDocument#1{}"; +char *tth_builtins = "\\def\\bye{\\vfill\\eject\\end }\ +\\def\\cal{\\sffamily\\it }\ +\\def\\phantom#1{\\tthphantom}\ +\\let\\hphantom=\\phantom\ +\\def\\root#1\\of#2{\\sqrt[#1]{#2}}\ +\\def\\H#1{\\\"#1}\\def\\b#1{\\underline{#1}}\ +\\def\\v{\\noexpand\\v}\\def\\u{\\noexpand\\u}\ +\\def\\t{\\noexpand\\t}\\def\\d{\\noexpand\\d}\ +\\def\\c#1{\\noexpand\\c #1}\ +\\def\\url{\\tthurl}\ +\\def\\hyperlink#1#2{\\href{\\##1}{#2}}\ +\\def\\hypertarget#1#2{\\special{html:<a id=\"#1\">}#2\\special{html:</a>}}\ +\\def\\proclaim #1.#2\\par{\\medskip{\\bf#1.\\ }{\\sl#2\\par}}\ +\\def\\newdimen#1{\\def#1{\\tthdimen#1 0\\tth_hsize}}\ +\\def\\hsize{\\tthdimen\\hsize 1\\tth_hsize}\ +\\def\\ensuremath#1{$#1$}\ +\\def\\TeX{\\ensuremath{\\rm T_EX}}\ +\\def\\LaTeX{\\ensuremath{\\rm L^AT_EX}}\ +\\def\\buildrel#1\\over#2{\\mathop{#2}^{#1}}\ +\\newcount\\tthdummy\ +\\def\\uppercase#1{{\\tth_uppercase #1}}\ +\\def\\newbox#1{\\def#1{}}\n\ +\\def\\today{\\tth_today}\n\ +\\def\\tthfootnotes{Footnotes}\n\ +\\def\\string#1{\\verb!#1!}\n\ +\\def\\displaylines#1{\\eqalign{#1}}\n\ +\\def\\leqalignno#1{\\eqalignno{#1}}\n\ +\\def\\leqno#1{\\eqno{#1}}\ +\\def\\bm#1{{\\tth_bm #1}}\ +\\newenvironment{abstract}{\\begin{tthabstract}}{\\end{tthabstract}}\ +\\newcommand\\tthoutopt[1][]{#1}\n\ +\\newcommand\\tthnooutopt[1][]{}\n"; + + /* static functions */ +static int indexkey(); +static void mkkey(),rmkey(),rmdef(),mkdef(); +static void delimit(); +static int b_align(); +static int roman(); +static int scaledpoints(); +static void tagpurge(); +static int adddimen(); + +/* Start condition stacks, not POSIX */ +/* Permits to compile without -lfl */ +/* Remove isatty calls for VMS */ +/* Not as accurate, probably because of rescanning. %option yylineno */ +/* Start conditions */ +/* Paragraph grouping for beginsection, item etc: */ + +/* Cause par to scan texclose.*/ + +/* Look for first token following and put argchar at end:*/ + +/* Expand following command and output expchar after first token, +if non-null, else prefix exptex and rescan (in equations)*/ + +/* Put swapchar after following open brace and rescan. */ + +/* Enclose a bare token in braces. Caller must initialize dupstore: */ + +/* Output the current brace group as raw text. Terminate with closing: */ + +/* Output verbatim till we encounter \end{verbatim} */ + +/* Output verbatim till we encounter a character matching chr1[0] */ + +/* Output without HTML tags so that we are compatible with title*/ + +/* Get from here to end of brace group. Then treat according to storetype: +0 Make argchar the closing of first, attach second copy, rescan. +1 Save in supstore. 2 Save in substore. For sup/bscripting. +3 Rescan with argchar between first and second copies. +4 Rescan one copy only with argchar prepended. +5 Rescan one copy with argchar postpended. +*/ + +/* Same thing but delimited by square brackets */ + +/* Throw away a following group closed by \fi or \end{picture} */ + +/* Throw away the following text closed by \else or \fi */ + +/* Inner if state inside falsetext. As falsetext except no else sensitivity*/ + +/* Throw away the following text closed by \or */ + +/* Break out of dumping of ortext states */ + +/* Get the unexpanded tokens to compare for ifx */ + +/* Get the tokens to compare for if */ + +/* Get the numbers to compare for ifnum */ + +/* Look for first number following. Put into argchar, and Pop. */ + +/* Look for first number following. Output num, argchar, and Pop. */ + +/* Look for unit. Catenate to argchar. Construct dimension in anumber */ + +/* Get the first file-like argument. */ + +/* Get nothing but the corresponding closebrace. */ + +/* Get a box definition for setbox. Mostly getting optional dimension */ + +/* Get an immediate sub or sup, else pop*/ + +/* Get the command we are defining only: */ + +/* Get a brace group as the definition's name */ + +/* Get the definition's argument description. Leave number in narg. */ + +/* Compress whitespace in delimited definition argument template and store*/ + +/* Get the end part of a newenvironment */ + +/* Define a let command. Explicitly using predefined macro. */ + +/* Throw away contiguous brace groups */ + +/* Advancing dimensions */ + +/* Get complete definition of a new count: */ + +/* Perform a counter advance: */ + +/* Output the value of a counter: */ + +/* Set the value of a previously defined counter: */ + +/* Extract the halign template. */ + +/* Inside tables, interpret & and \cr */ + +/* Handle ends of lines in halign state, e.g. \hline \end{tabular} \multi */ + +/* State for exiting expand-after of an ampersand. */ + +/* State for exiting expand-after of an ampersand in equations. */ + + + +/* Equation mode. */ + +/* Display table mode */ + +/* Textbox in equations mode */ + +/* latex listing environments */ + + + + +/* Uppercase mode */ + +/* Small caps text mode, no braces allowed. */ + +/* Define the token to be the next lot of text: */ + +/* Obtain the bracegroup as a macro argument: */ + +/* Obtain the bracket group as a macro argument: */ + +/* Detect the presence of [ and switch to optag if found */ + +/* Input a file. */ + +/* Parameter substitution in macros. */ + +/* Expanding an edef*/ + +/* Interpreting delimited definition argument */ + +/* Removing spaces e.g. after commands */ + +/* Warn if output takes place before title. */ + +/* titlecheck state for strict HTML/XHTML. */ + +/* Scan builtins at start. */ + +/* Scan LaTeX builtins at start. */ + +/* Glue flex clause removal */ + +/* rule dimension removal */ + +/* big delimiter get type */ + +/* Picture environment */ + +/* csname getting state */ + +/*tabular alignment string interpretation*/ + +/* Copying halign material to precell*/ + +/* Inserting space in horizontal lines and vertical.*/ + + +/* Dealing with hboxes */ + +/* Dealing with vboxes */ + +/* Setting Dimensions */ + +/* PreScanning tabular argument */ + +/* Error exiting state */ + +/* Paragraph checking state after a newline when par is possible*/ + +/* Expand following token till we reach something no more expandable +but don't embrace it. Prefix exptex if not zero. */ + +/* Copying of a group but escaping special characters as we go. Hence +making it suitable for subsequent verbatim or url handling. Ending +as dugroup. */ + +/* Dupgroup that treats % as a normal character */ + +/* Deal with the string that has been stored using uncommentgroup*/ + + +/* Checking if the start of a $$ indicates display table */ + +/* Defines */ +/* NOA [^a-zA-Z0-9] Removed 1.04 */ +/* Old versions. WSP [ \t\n] WSC [^ \t\n] NL \n */ +/* Costs 120k C! BRCG \{[^\}]*(\{[^\}]*(\{[^\}]*\})?[^\}]*\})?[^\}]*\} */ +#line 14815 "lex.yy.c" + +#define INITIAL 0 +#define pargroup 1 +#define parclose 2 +#define tokenarg 3 +#define exptokarg 4 +#define swaparg 5 +#define embracetok 6 +#define rawgroup 7 +#define verbatim 8 +#define verb 9 +#define notags 10 +#define dupgroup 11 +#define dupsquare 12 +#define discardgroup 13 +#define falsetext 14 +#define innerfalse 15 +#define ortext 16 +#define orbreak 17 +#define getifx 18 +#define getiftok 19 +#define getifnum 20 +#define lookfornum 21 +#define insertnum 22 +#define lookforunit 23 +#define lookforfile 24 +#define matchbrace 25 +#define getbox 26 +#define getsubp 27 +#define getdef 28 +#define getdefbr 29 +#define getnumargs 30 +#define ddcomp 31 +#define getend 32 +#define letdef 33 +#define unknown 34 +#define dimadv 35 +#define getcount 36 +#define advance 37 +#define number 38 +#define counterset 39 +#define htemplate 40 +#define halign 41 +#define hendline 42 +#define hamper 43 +#define mamper 44 +#define vtemplate 45 +#define valign 46 +#define equation 47 +#define disptab 48 +#define textbox 49 +#define Litemize 50 +#define Lenumerate 51 +#define Ldescription 52 +#define Lindex 53 +#define uppercase 54 +#define textsc 55 +#define define 56 +#define macarg 57 +#define optag 58 +#define optdetect 59 +#define inputfile 60 +#define psub 61 +#define xpnd 62 +#define delimint 63 +#define removespace 64 +#define titlecheck 65 +#define stricttitle 66 +#define builtins 67 +#define latexbuiltins 68 +#define glue 69 +#define ruledim 70 +#define bigdel 71 +#define picture 72 +#define csname 73 +#define talign 74 +#define tempamp 75 +#define hskip 76 +#define vskip 77 +#define hbox 78 +#define vbox 79 +#define setdimen 80 +#define tabpre 81 +#define error 82 +#define parcheck 83 +#define tokexp 84 +#define escgroup 85 +#define uncommentgroup 86 +#define urlgroup 87 +#define indexgroup 88 +#define halsearch 89 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include <unistd.h> +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy (void ); + +int yyget_debug (void ); + +void yyset_debug (int debug_flag ); + +YY_EXTRA_TYPE yyget_extra (void ); + +void yyset_extra (YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in (void ); + +void yyset_in (FILE * in_str ); + +FILE *yyget_out (void ); + +void yyset_out (FILE * out_str ); + +int yyget_leng (void ); + +char *yyget_text (void ); + +int yyget_lineno (void ); + +void yyset_lineno (int line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap (void ); +#else +extern int yywrap (void ); +#endif +#endif + + static void yyunput (int c,char *buf_ptr ); + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + + static int yy_start_stack_ptr = 0; + static int yy_start_stack_depth = 0; + static int *yy_start_stack = NULL; + + static void yy_push_state (int new_state ); + + static void yy_pop_state (void ); + + static int yy_top_state (void ); + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else +#define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 540 "tth.lex" + + + /* Local storage */ + +#define NCOUNT 256 +#define NFNMAX 1600 +#define NARMAX 20 +#define TTH_PUSH_BUFF(rmv) if ( tth_stack_ptr >= MAX_INCLUDE_DEPTH )\ + {fprintf(stderr,buffdeep,tth_num_lines);TTH_EXIT( 1 );}\ + eofrmv[tth_stack_ptr]=rmv;\ + include_stack[tth_stack_ptr++] = YY_CURRENT_BUFFER; +char *buffdeep="**** Error: FATAL. Scan buffers nested too deeply. Infinite loop? Line %d.\n"; +#define TTH_SCAN_STRING TTH_PUSH_BUFF(0);yy_scan_string +extern void tth_epsf(),tth_symext(),tth_encode(),tth_undefine(); + /*Not static except for tthfunc*/ +#define STATIC +STATIC char closing[TTH_CHARLEN]={0}; +STATIC char preclose[TTH_CHARLEN]={0}; +STATIC char argchar[TTH_CHARLEN]={0}; +STATIC char defchar[TTH_CHARLEN]={0}; +STATIC char eqchar[4*TTH_CHARLEN]={0}; +STATIC char eqchar2[4*TTH_CHARLEN]={0}; +STATIC char scratchstring[TTH_CHARLEN]={0}; +STATIC char scrstring[TTH_CHARLEN]={0}; +STATIC char swapchar[TTH_CHARLEN]={0}; +STATIC char expchar[TTH_CHARLEN]={0}; +STATIC char exptex[TTH_CHARLEN]={0}; +STATIC char strif[TTH_CHARLEN]={0}; +STATIC char newcstr[TTH_CHARLEN]={0}; +STATIC char boxalign[TTH_CHARLEN]={0}; +STATIC char boxvalign[TTH_CHARLEN]={0}; +STATIC char dupstore[TTH_DLEN]; +STATIC char dupstore2[2*TTH_DLEN]; +STATIC char supstore[TTH_DLEN]={0}; +STATIC char substore[TTH_DLEN]={0}; +STATIC char defstore[TTH_DLEN]={0}; +STATIC char psubstore[TTH_DLEN]={0}; +STATIC char chr1[2]={0}; +STATIC int storetype=0; +STATIC int bracecount=0; +STATIC int horizmode=0; /* 1 in horizontal mode. -1 after a \n. 0 after a \par*/ +STATIC int horiztemp=0; +STATIC int whitespace=0; +STATIC int edeftype=0; + /* Stacking of halign and tabular operational data. */ +STATIC int colnum=0; +STATIC char halstring[TTH_CHARLEN]={0}; +STATIC char *halstrings[NARMAX]; +STATIC YY_BUFFER_STATE halbuffs[NARMAX]; +STATIC int halignenter=0; +STATIC int halenter[NARMAX]={99}; +STATIC int halncols[NARMAX]={0}; +STATIC int halind=0; +#define TTH_HAL_PUSH if(tth_debug&32)fprintf(stderr,"HAL PUSH %d,",halind);\ + if(tth_debug&32)fprintf(stderr,"%s\n",halstring);\ + if(halind < NARMAX) {\ + halenter[halind]=halignenter;halncols[halind]=ncols;\ + halbuffs[halind]=halbuff;colnum=0;mkkey(halstring,halstrings,&halind);\ + }else{ fprintf(stderr,"**** Error: Fatal. Tables nested too deeply. Line %d\n",tth_num_lines);\ + TTH_EXIT(1);} +#define TTH_HAL_POP if(tth_debug&32)fprintf(stderr,"HAL POP %d,",halind-1);\ + if(halind > 0){\ + strcpy(halstring,halstrings[halind-1]);\ + rmkey(halstrings,&halind);halbuff=halbuffs[halind];\ + halignenter=halenter[halind];ncols=halncols[halind];\ + if(tth_debug&32)fprintf(stderr,"%s\n",halstring);\ + }else{ fprintf(stderr,"**** Error: Fatal. Underflow of Table index. Line %d\n",tth_num_lines);\ + TTH_EXIT(1);} +STATIC int eqalignlog=0; /* 1 eqalign, >1 no-numbering, >100 reset at line end.*/ +STATIC int colspan=1; /* colspan of table cell; was 0 default. Now 1.*/ +STATIC int eqaligncell=0; +STATIC int eqalignrow=0; +STATIC int eqalog[NARMAX]; /* Storage for pushing eqalign flags */ +STATIC int eqacell[NARMAX]; +STATIC int eqarow[NARMAX]; +STATIC int eqaind=0; +#define TTH_EQA_PUSH if(eqaind < NARMAX) {\ + eqalog[eqaind]=eqalignlog;eqacell[eqaind]=eqaligncell;\ + eqarow[eqaind]=eqalignrow;eqaind++;\ + }else{ fprintf(stderr,"**** Error: Fatal. Matrices nested too deeply. Line %d\n",tth_num_lines);\ + TTH_EXIT(1);} +#define TTH_EQA_POP if(eqaind > 0){ eqaind--;\ + eqalignlog=eqalog[eqaind];eqaligncell=eqacell[eqaind];\ + eqalignrow=eqarow[eqaind];\ + }else{ fprintf(stderr,"**** Error: Fatal. Underflow of Matrix index:%d Line %d\n",eqaind,tth_num_lines);\ + TTH_EXIT(1);} +STATIC int i,ind=0,jarg=0,jargmax=0,jscratch,js2,jshal,jstal=0, hgt=0; +STATIC int iac=0,jac=0; +STATIC int ncounters=0; +STATIC int counters[NCOUNT]={0}; +STATIC char *countkeys[NCOUNT]={0}; +STATIC char *countwithins[NCOUNT]={0}; +STATIC int nkeys=0; +STATIC char *keys[NFNMAX]={0}; +STATIC char *defs[NFNMAX]={0}; +STATIC char *optargs[NFNMAX]={0}; +STATIC int nargs[NFNMAX]={0}; +STATIC int lkeys[NFNMAX]={0}; +STATIC int ckeys[NFNMAX]={0}; +STATIC int localdef=0; +STATIC int narg; +STATIC int margmax=0; +STATIC char *margkeys[NARMAX]={0}; +STATIC char *margs[NARMAX]={0}; +STATIC int margn[NARMAX]={0}; +/* Fractions and math */ +extern void tth_enclose(),tth_prefix(); +STATIC int eqdepth=0; +STATIC char *eqstrs[NFNMAX]; +STATIC char eqstr[4*TTH_DLEN]={0}; +STATIC char eqstore[4*TTH_DLEN]; +STATIC char eqlimited[TTH_DLEN]={0}; +/* STATIC int eqsubsup=0; */ +STATIC int eqclose=0; +STATIC int eqhgt=0; +STATIC int mtrx[NFNMAX]={0}; +STATIC int active[NFNMAX]={0}; +STATIC int levhgt[NFNMAX]={0}; +STATIC int tophgt[NFNMAX]={0}; +STATIC char levdelim[NFNMAX][20]={{0}}; +STATIC int tabwidth=150; +STATIC int qrtlen=0,qrtlen2=0; +STATIC time_t thetime; +struct tm timestruct; +STATIC char *chscratch=0; +STATIC char *chs2=0; +STATIC char *chs3=0; +STATIC char *chdef=0; +STATIC char *chopt=0; +STATIC int lopt=0; +/* Latex Sections etc*/ +STATIC int chaplog=0; +STATIC int countstart=0; +#define ftntno counters[0+countstart] +#define chapno counters[1+countstart] +#define sectno counters[2+countstart] +#define subsectno counters[3+countstart] +#define subsubsectno counters[4+countstart] +#define equatno counters[5+countstart] +#define figureno counters[6+countstart] +#define tableno counters[7+countstart] +#define partno counters[8+countstart] +#define secnumdepth counters[9+countstart] +STATIC int appendix=0; +STATIC char environment[20]={0}; /* Name of environment */ +STATIC char labelchar[20]={0}; /* Running label in current section. */ +STATIC char envirchar[20]={0}; /* Running label in numbered environment. */ +STATIC char refchar[20]={0}; /* Type of internal reference. */ +STATIC char colorchar[20]={0}; +STATIC char filechar[20]={0}; +STATIC char filenext[20]={0}; /*sf*/ +STATIC char auxflch[20]={0}; +STATIC char schar[3]={0}; /*sf*/ +#define TNO 400 +STATIC char *tchar[TNO]={0}; /*sf*/ +STATIC char *fchar[TNO]={0}; /*sf*/ +STATIC int tbno=0; /*sf*/ +STATIC int fgno=0; /*sf*/ +STATIC char ftntcode[4]; +STATIC int ftntwrap=0; +STATIC int displaystyle=0; +STATIC int nbuiltins=0; + /* STATIC int compression=0; */ +STATIC int enumerate=0; +STATIC char enumtype[5]={'1','a','i','A','I'}; +STATIC int eofrmv[MAX_INCLUDE_DEPTH]; +STATIC int lbook=0; +STATIC int lefteq=0; +STATIC char unitlength[TTH_CHARLEN]={0}; +STATIC int picno=0; +STATIC int ncols=0; +STATIC char tdalign[TTH_CHARLEN]={0}; +STATIC char precell[TTH_CHARLEN]={0}; +STATIC float anumber=0.,bnumber=1.,cnumber=0.; +STATIC float cyanc=0.,magentac=0.,yellowc=0.,blackc=0.; +STATIC float redc=0.,greenc=0.,bluec=0.; +STATIC int thesize=0; +STATIC int tthglue=0; +STATIC int tth_eqwidth=100; +STATIC int dimadvstate=0; +#define TTH_INDPC 5 +extern int tth_group(); + /* Number of scaledpoints per screen pixel. 100 pixels per inch. */ +#define SCALEDPERPIXEL (65536*72/100) + /* Guess of the screen width in pixels larger than real is usually the best + error to have. */ +#define DEFAULTHSIZEPIX 1000 +/* extern int tth_halcode(); */ +STATIC int boxborder=0; +extern int tth_cmykcolor(); +STATIC char xpndstring[2]={0}; +STATIC int bibliogs=0; +STATIC int verbinput=0; +/* Open for reading, and test that we really can read it. */ +STATIC char openscrt[2]; +#define TTH_FILE_OPEN(scratchstring) \ + ( (tth_inputfile=fopen(scratchstring,"r")) ?\ + ( ( (fread(openscrt,1,1,tth_inputfile)==0) && ferror(tth_inputfile) \ + && (!fclose(tth_inputfile) || 1 ) ) ? \ + NULL : (freopen(scratchstring,"r",tth_inputfile)) )\ + : NULL ) +STATIC int tth_index_face=0; +STATIC int tth_index_line=0; +STATIC int tthindexrefno=0; +STATIC int oa_removes=0; +STATIC char page_compositor[]="-"; +STATIC char input_filename[TTH_CHARLEN]={0}; +STATIC int minus=1; +#define TTH_UNKS_LEN 4000 +STATIC char unknownstring[TTH_UNKS_LEN]={0}; +STATIC char valignstring[TTH_CHARLEN]={0}; +STATIC int valsec=0; +STATIC char tth_verbenviron[TTH_MAXDEPTH]={0}; + /* */ + + /* Define the storable stacked integers */ +#define INTDEPTHMAX 30 /* Stack depth*/ +#define INTMAX 10 /* Maximum integers */ +#define INTERROR 99999 /* Value indicating overflow */ +int PUSHEDINTS[INTMAX][INTDEPTHMAX]={{0}}; +int PUSHEDINTDEPTHS[INTMAX]={0}; +#define TTH_INT_SETPUSH(name,value) \ + if(PUSHEDINTDEPTHS[name]<INTDEPTHMAX) {\ + PUSHEDINTS[name][++PUSHEDINTDEPTHS[name] ]=value;\ + }else{fprintf(stderr,"INT overflow, %s\n","name");++PUSHEDINTDEPTHS[name];} +#define TTH_INT_VALUE(name) \ + (PUSHEDINTDEPTHS[name]<=INTDEPTHMAX) ? \ + PUSHEDINTS[name][PUSHEDINTDEPTHS[name] ] :\ + INTERROR +#define TTH_INT_POP(name) \ + if(PUSHEDINTDEPTHS[name]>0){\ + PUSHEDINTS[name][PUSHEDINTDEPTHS[name]--]=0;\ + }else{fprintf(stderr,"INT underflow, %s\n","name");} + /* Here we define as macros the names of our pushed integers. */ +#define EQSUBSUP 0 + /* Calls are then of the form, e.g. TTH_INT_VALUE(EQSUBSUP,10)*/ + + +/*mathstringshl*/ + + /*Macros in scanner etc. */ +#ifdef TTH_GOLD +#define TTH_NAME "Hgold" +#else +#define TTH_NAME "H" +#endif + +#define TTH_SYMBOLN (tth_unicode ? "" : "<span style=\"font-family:symbol\">\n") +#define TTH_SYMBOL (tth_unicode ? "" : "<span style=\"font-family:symbol\">") +#define TTH_SYMEND (tth_unicode ? "" : "</span>") +#define TTH_SYMENDN (tth_unicode ? "" : "</span\n>") +#define TTH_SYMPT(chr) (tth_unicode ? tth_symbol_point(chr) : chr) + +#define TTH_DISP1 ((tth_debug < 2) ? "\n<br clear=\"all\" /><table border=\"0\" width=\"%d%%\"><tr><td>\n<table align=\"center\" cellspacing=\"0\" cellpadding=\"2\"><tr><td nowrap=\"nowrap\" align=\"center\">\n" : "\n<br clear=\"all\" /><table border=\"1\" width=\"%d%%\"><tr><td>\n<table border=\"1\" align=\"center\"><tr><td nowrap=\"nowrap\" align=\"center\">\n" ) +/* DISPE for equalign etc. Old version.*/ +#define TTH_DISPE ((tth_debug < 2) ? "\n<br clear=\"all\" /><table border=\"0\" width=\"%d%%\"><tr><td>\n" : "\n<br clear=\"all\" /><table border=\"1\" width=\"%d%%\"><tr><td>\n" ) + /* New broken version + #define TTH_DISPE ((tth_debug < 2) ? "\n<br clear=\"all\" /><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"%d%%\">\n" : "\n<br clear=\"all\" /><table border=\"1\" width=\"%d%%\">\n" ) */ + +#define TTH_DISP2 "</td></tr></table>\n</td></tr></table>\n" +#define TTH_DISP3 "</td></tr></table>\n</td><td width=\"1%\">" +#define TTH_DISP4 "</td></tr></table>\n" +#define TTH_DISP5 "\n</td><td width=\"1%\">" +#define TTH_DISP6 "</td></tr></table>\n" /* Instead of DISP4*/ +#define TTH_TSTY1 ((tth_debug <2) ? "<br clear=\"all\" /><table border=\"0\" align=\"left\" cellspacing=\"0\" cellpadding=\"0\"><tr><td nowrap=\"nowrap\">" : "<br clear=\"all\" /><table border=\"1\" align=\"left\"><tr><td>" ) +#define TTH_TSTY2 "\n</td></tr></table><br />" +#define TTH_EQ1 ((tth_debug<2) ? "<table border=\"0\" align=\"left\" cellspacing=\"0\" cellpadding=\"0\"><tr><td nowrap=\"nowrap\" align=\"center\">\n" : "<table border=\"1\" align=\"left\"><tr><td nowrap=\"nowrap\" align=\"center\">\n") +#define TTH_EQ3 ((tth_debug<2) ? "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" : "<table border=\"1\">" ) +#define TTH_EQ2 "</table>\n" +#define TTH_EQ4 "</td></tr></table>\n" +#define TTH_EQ5 ((tth_debug<2) ? "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td nowrap=\"nowrap\" align=\"center\">\n" : "<table border=\"1\"><tr><td nowrap=\"nowrap\" align=\"center\">\n") +#define TTH_EQ6 ((tth_debug<2) ? "<tr><td width=\"50%\"></td><td nowrap=\"nowrap\" align=\"right\">\n" : "<tr><td width=\"50%\"></td><td nowrap=\"nowrap\" align=\"right\">\n" ) +#define TTH_EQ7 "\n <tr><td width=\"50%%\"></td><td nowrap=\"nowrap\" align=\"%s\" colspan=\"%d\">" +#define TTH_EQ8 "</td><td width=\"50%\"></td><td width=\"1\" align=\"right\">" +#define TTH_EQ9 "</td><td width=\"50%\">" +#define TTH_EQ10 "\n <tr><td nowrap=\"nowrap\" align=\"%s\" colspan=\"%d\">" +#define TTH_EQ11 ((tth_debug<2)?"<table><tr><td nowrap=\"nowrap\" align=\"%s\" colspan=\"%d\">":"<table border=\"1\"><tr><td nowrap=\"nowrap\" align=\"%s\" colspan=\"%d\">") +#define TTH_CELL1 ((eqclose > tth_flev) ? ((levdelim[eqclose][0]||levdelim[eqclose+1][0]) ? "" : "["): ((levdelim[eqclose][0]) ? "" : "</td><td nowrap=\"nowrap\" align=\"center\">\n") ) +#define TTH_CELL2 ((eqclose > tth_flev) ? ((levdelim[eqclose+1][0]||levdelim[eqclose][0]) ? "" : "]"): ((levdelim[eqclose+1][0]) ? "" : "</td><td nowrap=\"nowrap\" align=\"center\">\n") ) + /* CELL2 and CELL3 need to be identical apart from the test. */ +#define TTH_CELL3 "</td><td nowrap=\"nowrap\" align=\"center\">\n" +#define TTH_CELL4 "</td><td align=\"right\">" + /*#define TTH_CELL_L "</td><td align=\"left\">"*/ +#define TTH_CELL_TAB (eqdepth ?"</td></tr></table></td>":"</td>") +#define TTH_CELL_L "</td><td align=\"left\" class=\"cl\">" +#define TTH_CELL_R "</td><td align=\"right\" class=\"cr\">" +#define TTH_CELL5 "</td><td nowrap=\"nowrap\">" +#define TTH_CELL_START "</td><td" +#define TTH_LEV1 ((eqclose > tth_flev) ? "(": ((tth_debug<2) ? "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td nowrap=\"nowrap\" align=\"center\">\n": "<table border=\"1\"><tr><td nowrap=\"nowrap\" align=\"center\">\n") ) +#define TTH_LEV2 ((eqclose > tth_flev) ? ")": "</td></tr></table>") + +#define TTH_EQA1 ((tth_debug<2) ? ((eqalignlog) ? "<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\"><tr><td nowrap=\"nowrap\" align=\"left\">\n":"<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\"><tr><td nowrap=\"nowrap\" align=\"center\">\n") : ((eqalignlog) ? "<table border=\"1\"><tr><td nowrap=\"nowrap\" align=\"left\">\n":"<table border=\"1\"><tr><td nowrap=\"nowrap\" align=\"center\">\n")) +#define TTH_EQA2 "</td></tr></table>" +#define TTH_EQA3 ((eqalignlog) ? "</td><td nowrap=\"nowrap\" align=\"left\">\n" : "</td><td nowrap=\"nowrap\" align=\"center\">\n") +#define TTH_EQA4 ((eqalignlog) ? "</td><td nowrap=\"nowrap\" align=\"left\" colspan=" : "</td><td nowrap=\"nowrap\" align=\"center\" colspan=") + /* The leading \n is vital in tth_istyle. */ +#define TTH_DIV ((eqclose > tth_flev) ? "/":(tth_istyle&1 ? "\n<div class=\"hrcomp\"><hr noshade=\"noshade\" size=\"1\"/></div>":"<hr noshade=\"noshade\" size=\"1\" />") ) + +#define TTH_ATOP ((eqclose > tth_flev) ? " || ":"<br />\n" ) +#define TTH_NULL_BOTTOM ((eqclose > tth_flev) ? "":" <br />" ) +#define TTH_NOALIGN "<tr><td nowrap=\"nowrap\" colspan=6>" +#define TTH_BR "<br />" +#define TTH_BRN "<br />\n" +#define TTH_SUP1 "<sup>" +#define TTH_SUP2 "</sup>" +#define TTH_SUB1 "<sub>" +#define TTH_SUB2 "</sub>" +#define TTH_OINT strcat(eqstr,"</td><td align=\"center\">");\ + strcat(eqstr,TTH_SYMBOL);chr1[0]=243;strcat(eqstr,TTH_SYMPT(chr1));\ + strcat(eqstr,"<br />(");chr1[0]=231;strcat(eqstr,TTH_SYMPT(chr1));\ + strcat(eqstr,")<br />");chr1[0]=245;strcat(eqstr,TTH_SYMPT(chr1));\ + strcat(eqstr,TTH_SYMEND);strcat(eqstr,"<br />");strcat(eqstr,"</td><td>");\ + if(levhgt[eqclose] == 1)levhgt[eqclose]=2;hgt=3; + /* These ought to be a good way of closing up over/under braces etc + but layout is too broken to give good vertical centering then +#define TTH_OBR (tth_istyle&1 ? "\n<div class=\"hrcomp\"><hr /></div>" : "<hr />") +#define TTH_OBRB (tth_istyle&1 ? "\n<div class=\"hrcomp\"><br /></div>" : "<br />") + */ +#define TTH_OBR "<hr />" +#define TTH_OBRB "<br />" +#define TTH_EM1 "<em>" +#define TTH_EM2 "</em>" +#define TTH_SMALLCAPS_FONT1 "<span style=\"font-size:x-small\">" +#define TTH_SMALLCAPS_FONT2 "</span>" +#define TTH_BOLDO "<b>" +#define TTH_BOLD1 "<b>" +#define TTH_BOLDC "</b>" +#define TTH_BOLD2 "</b>" +#define TTH_BLDITO "<b><i>" +#define TTH_BLDIT1 "<b><i>" +#define TTH_BLDITC "</i></b>" +#define TTH_BLDIT2 "</i></b>" +#define TTH_ITAL1 "<i>" +#define TTH_ITAL2 "</i>" +#define TTH_ITALO "<i>" +#define TTH_ITALC "</i>" +#define TTH_TT1 "<tt>" +#define TTH_TT2 "</tt>" +#define TTH_TTO "<tt>" +#define TTH_TTC "</tt>" +#define TTH_UNDL1 "<u>" +#define TTH_UNDL2 "</u>" +#define TTH_NORM1 (tth_istyle&1 ? "<span class=\"roman\">" : "") +#define TTH_NORM2 (tth_istyle&1 ? "</span>" : "") +#define TTH_HELV1 "<span style=\"font-family:helvetica\">" +#define TTH_HELV2 "</span>" +/* #define TTH_FONTCANCEL "</i></b></tt>" Trying a less drastic approach */ +#define TTH_FONTCANCEL "</b>" +#define TTH_DAG "†" +#define TTH_DDAG "‡" + +#define TTH_OA1 (tth_istyle&1 ? "<div class=\"comp\">" : "") +#define TTH_OA2 (tth_istyle&1 ? "<br /></div>\n<div class=\"norm\">" : "<br />") +/* The comb bottom style is messed up by differences between NS and gecko. + The margin bottom does not seem to matter. Even uncompressed accents + are misaligned in Gecko. This is a font scaling problem.*/ +#define TTH_OA3 (tth_istyle&1 ? "</div>\n<div class=\"comb\"> </div>\n" : " <br />") +#define TTH_OA4 (tth_istyle&1 ? "\n<div class=\"comb\"> </div>\n" :" <br />") +#define TTH_OA5 (tth_istyle&1 ? "\n<div class=\"norm\">" : "") +#define TTH_STYLE ((tth_debug&2) ? " <style type=\"text/css\"><!--\n\ + td div.comp { margin-top: -0.6ex; margin-bottom: -1ex; background: yellow;}\n\ + td div.comb { margin-top: -0.7ex; margin-bottom: -.6ex; background: yellow;}\n\ + td div.hrcomp { line-height: 0.9; margin-top: -0.8ex; margin-bottom: -1ex; background: yellow;}\n\ + td div.norm {line-height:normal; background: cyan;} \n\ + span.roman {font-family: serif; font-style: normal; font-weight: normal;} \n\ + span.overacc2 {position: relative; left: .8em; top: -1.2ex;}\n\ + span.overacc1 {position: relative; left: .6em; top: -1.2ex;} --></style>\n"\ + : " <style type=\"text/css\"><!--\n\ + td div.comp { margin-top: -0.6ex; margin-bottom: -1ex;}\n\ + td div.comb { margin-top: -0.6ex; margin-bottom: -.6ex;}\n\ + td div.hrcomp { line-height: 0.9; margin-top: -0.8ex; margin-bottom: -1ex;}\n\ + td div.norm {line-height:normal;}\n\ + span.roman {font-family: serif; font-style: normal; font-weight: normal;} \n\ + span.overacc2 {position: relative; left: .8em; top: -1.2ex;}\n\ + span.overacc1 {position: relative; left: .6em; top: -1.2ex;} --></style>\n") + +#define TTH_SIZESTYLE " <style type=\"text/css\"><!--\n\ + .tiny {font-size:30%;}\n\ + .scriptsize {font-size:xx-small;}\n\ + .footnotesize {font-size:x-small;}\n\ + .smaller {font-size:smaller;}\n\ + .small {font-size:small;}\n\ + .normalsize {font-size:medium;}\n\ + .large {font-size:large;}\n\ + .larger {font-size:x-large;}\n\ + .largerstill {font-size:xx-large;}\n\ + .huge {font-size:300%;}\n\ + --></style>\n" + + +#define TTH_MATHS(chr) strcat(eqstr,TTH_SYMBOL);\ + strcat(eqstr,TTH_SYMPT(chr)); strcat(eqstr,TTH_SYMENDN); +#define TTH_MATHI(icr) chr1[0]=icr;TTH_MATHS(chr1); +#define TTH_MATHC(chr) strcat(eqstr,chr); +#define TTH_COMPLEX ( (strcspn(eqstr,"&+-/") < strlen(eqstr)) || (strstr(eqstr,"\\pm") != NULL) || (strstr(eqstr,"\\mp") != NULL)) + /* +#define TTH_P_STYLE " <style type=\"text/css\"><!-- div.p { margin-top: 7pt;}--></style>\n" + */ +#define TTH_P_STYLE " <style type=\"text/css\"> div.p { margin-top: 7pt;}</style>\n" +/* #define TTH_PAR_ACTION if(tth_htmlstyle&2){\ */ +/* TTH_OUTPUT("\n<div class=\"p\"></div>\n");}\ */ +/* else{TTH_OUTPUT("\n<p>\n");}horizmode=0; */ +/* The comment is to fool tidy into thinking it's not empty*/ +#define TTH_PAR_ACTION TTH_OUTPUT("\n<div class=\"p\"><!----></div>\n");horizmode=0; + +#define TTH_CLEAR "<br clear=\"all\" />" +#define TTH_LIMITOP(icr) chr1[0]=icr;if(eqclose >tth_flev-1){TTH_MATHI(icr);}else{\ + oa_removes=0;\ + strcat(eqstr,TTH_CELL3);\ + strcpy(eqlimited,chr1);\ + if(levhgt[eqclose] == 1)levhgt[eqclose]=2;\ + if(bracecount){\ + fprintf(stderr,"****Internal Error! Bracecount nonzero in limitop.\n");\ + bracecount=0;}\ + yy_push_state(getsubp);} +#define TTH_OUTPUT(chr) if(eqdepth){strcat(eqstr,chr);}else{fprintf(tth_fdout,"%s",chr);} +#define TTH_OUTPUTH(chr) if(eqdepth){strcat(eqstr,chr);}else{fprintf(tth_fdout,"%s",chr);}horizmode=1; +#define TTH_CLOSEGROUP TTH_OUTPUT(closing) +#define TTH_HGT 12 +#define TTH_BOXCODE "<span style=\"font-size:x-small\"><sup>[<u>¯</u>]</sup></span>" +#define TTH_HBAR "ħ" +#define TTH_TEXTBOX1 "" +#define TTH_TEXTBOX2 "" + /* Tabular variable markup */ +#define TTH_TRO "\n<tr>" +#define TTH_TRC "</tr>" +#define TTH_TABC "</table>\n" +#define TTH_TABB "<table border=\"1\" class=\"tabular\">" +#define TTH_TABO "<table class=\"tabular\">" +#define TTH_TRTD "<tr><td></td></tr>" +#define TTH_MULSTART "<td colspan=\"%d\"%s>" +#define TTH_TABNOAL "\n<tr><td colspan=\"%d\">" +#define TTH_TABNOAL2 "\n</tr></td>" +#define TTH_MULSPAN "<td align=\"center\" colspan=\"%d\">" +#define TTH_TDVAR "<td%s>" +#define TTH_TABRT " align=\"right\"" +#define TTH_TABLT " align=\"left\"" +#define TTH_TABCT " align=\"center\"" + + /* This was the old doctype. Reports are that on Windows gecko recognizes + symbol fonts for a doctype of 40 but not 401. So keep to 40*/ +#define TTH_DOCTYPE4 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"\n \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html>" +#define TTH_DOCTYPE41 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>" +#define TTH_DOCXML "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">" +#define TTH_DOCTYPE (tth_htmlstyle&2 ? TTH_DOCXML : TTH_DOCTYPE4 ) +#define TTH_GENERATOR (!(tth_htmlstyle&3) ? "\n<meta name=\"GENERATOR\" content=\"Tt%s %s\">\n" : ( tth_htmlstyle&2 ? "\n<head>\n<meta name=\"GENERATOR\" content=\"Tt%s %s\" />\n" : "\n<head>\n<meta name=\"GENERATOR\" content=\"Tt%s %s\">\n") ) +#define TTH_ENCODING (!tth_unicode ? (tth_htmlstyle&2 ?"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n":"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\n") : "") + + + +#define TTH_MIME_HEAD "MIME-Version: 1.0\nContent-Type: MULTIPART/MIXED; BOUNDARY=\"1293058819-1213484446-873576042\"\n\n--1293058819-1213484446-873576042\nContent-Type: TEXT/HTML; charset=iso-8859-1; name=\"index.html\"\n\n" /*sf*/ +#define TTH_MIME_DIVIDE "\n--1293058819-1213484446-873576042\nContent-Type: TEXT/HTML; charset=iso-8859-1; name=\"%s\"\n\n" /*sf*/ + + +#define TTH_DO_MACRO *(yytext+strcspn(yytext," "))=0;\ + ind=indexkey(yytext,keys,&nkeys); \ + if(horizmode) horizmode=1;\ + if(ind != -1) {\ + jargmax=nargs[ind];\ + chdef=defs[ind];\ + chopt=optargs[ind];\ + if(optargs[ind]) lopt=1; else lopt=0;\ + *dupstore=0;\ + if( jargmax == 0){\ + jarg=1;\ + if(tth_debug&8)fprintf(stderr,"Using definition %s %d= %s\n",yytext,ind,chdef);\ + TTH_PUSH_BUFF(1);\ + yy_scan_string(chdef);\ + yy_push_state(psub);\ + }else if(jargmax >0){\ + jarg=1;\ + if(tth_debug&8) fprintf(stderr,"Getting arguments of %s\n",yytext);\ + bracecount=-1;\ + if(lopt) yy_push_state(optdetect);\ + else{yy_push_state(macarg);yy_push_state(embracetok);}\ + }else{\ + if(tth_debug&8)fprintf(stderr,"Using Delimited Definition:%s\n",yytext);\ + chscratch=defs[ind-1];\ + chs2=chscratch;\ + *dupstore2=0;\ + jarg=0;\ + yy_push_state(delimint);whitespace=0;\ + horizmode=1;\ + }\ + } + +#define TTH_CHECK_LENGTH js2=0;\ + if(strlen(dupstore) > 9*TTH_DLEN/10 ){chs2=dupstore;js2=1;}\ + else if(strlen(defstore) > 9*TTH_DLEN/10 ){chs2=defstore;js2=1;}\ + else if(strlen(psubstore) > 9*TTH_DLEN/10 ){chs2=psubstore;js2=1;}\ + else if(strlen(dupstore2) > 18*TTH_DLEN/10 ){chs2=dupstore2;js2=1;}\ + if(js2){ *(chs2+200)=0;fprintf(stderr,\ + "\n**** Error: FATAL. Exceeding allowed string length. Line %d. Runaway argument?\n String starts:%s ...\n",tth_num_lines,chs2);\ + fprintf(stderr," Possible cause: Use of macro %d, %s\n",ind,keys[ind]);\ + TTH_EXIT(1);} + +#define TTH_CCAT(chr1,chr2) if(strlen(chr1)+strlen(chr2) >= TTH_CHARLEN)\ + {fprintf(stderr,\ +"**** Character overflow; catenation of %s prevented, line %d\n%s",\ +chr2,tth_num_lines,\ +" Check for alternating font changes. Use grouping instead.\n\ + If necessary, increase the value of TTH_CHARLEN and recompile TtH.\n");}\ +else strcat(chr1,chr2); + +#define TTH_CCPY(chr1,chr2) if(strlen(chr2) >= TTH_CHARLEN)\ + {fprintf(stderr,\ +"**** Character overflow; strcpy of %s prevented, line %d\n",chr2,tth_num_lines);}\ +else strcpy(chr1,chr2); + +#define TTH_PRECLOSE(chr1) strcpy(preclose,closing);TTH_CCPY(closing,chr1);\ + TTH_CCAT(closing,preclose); + + /* +#define TTH_PRETEXCLOSE(chr1) strcpy(preclose,tth_texclose[tth_push_depth]);\ + TTH_CCPY(tth_texclose[tth_push_depth],chr1);\ + TTH_CCAT(tth_texclose[tth_push_depth],preclose); + */ +#define TTH_PRETEXCLOSE(chr1) strcpy(scratchstring,tth_texclose[tth_push_depth]);\ + TTH_CCPY(tth_texclose[tth_push_depth],chr1);\ + TTH_CCAT(tth_texclose[tth_push_depth],scratchstring);*scratchstring=0; + +#define TTH_SWAP(chr1) strcpy(swapchar,chr1);yy_push_state(swaparg);\ + yy_push_state(embracetok); + /* Do an explicitly defined tex function of argno arguments (>0) */ +#define TTH_TEX_FN(chr1,argno) chdef=chr1;jargmax=argno;\ + jarg=1;bracecount=-1;lopt=0;\ + yy_push_state(macarg);yy_push_state(embracetok); + /* Do an explicitly defined tex function of argno arguments (>1) + including an optional argument. */ +#define TTH_TEX_FN_OPT(chr1,argno,defaultopt) chdef=chr1;jargmax=argno;\ + jarg=1;bracecount=-1;lopt=1;chopt=defaultopt;\ + yy_push_state(optdetect); + +#define TTH_PUSH_CLOSING tth_key[tth_push_depth]=nkeys;tth_push(closing) +#define TTH_POP_CLOSING if(tth_debug&16)fprintf(stderr,"nkeys:%d,tth_key:%d\n",nkeys,tth_key[tth_push_depth-1]);\ + if(nkeys-tth_key[tth_push_depth-1])\ + tth_undefine(keys,&nkeys,tth_key[tth_push_depth-1],lkeys);tth_pop(closing); + +#define TTH_HALCODE(chr1) ((*chr1=='c') ? TTH_TABCT :\ +( (*chr1=='r')? TTH_TABRT :\ +( (*chr1=='p')? (\ + (strcpy(scrstring," width=\"")!=NULL &&\ + strncat(scrstring,chr1+2,strlen(chr1+2)-1)!=NULL &&\ + strcat(scrstring,"\"")!=NULL) ? scrstring: "")\ + : TTH_TABLT))) + + + /* fprintf(stderr,"%s-%s[%d%d]",precell,yytext,jshal,jstal);\ + if(jshal==1){TTH_CCAT(precell,"{");}\ + */ +#define TTH_HALACT if(tth_debug&32)\ + fprintf(stderr,"+%s[%d%d]",yytext,jshal,jstal);\ + if(jshal>1){jshal--;}else{\ + if(jshal==0){sprintf(scratchstring,TTH_TDVAR,TTH_HALCODE(yytext));\ + TTH_OUTPUT(tdalign);*tdalign=0;\ + TTH_OUTPUT(scratchstring);\ + if(eqdepth){TTH_OUTPUT(TTH_EQ5);}\ + }\ + yy_switch_to_buffer(include_stack[--tth_stack_ptr] );\ + yy_pop_state();jshal=0;\ + if(tth_debug&32){fprintf(stderr,"%s",precell);}\ + TTH_SCAN_STRING(precell);*precell=0;} +#define TTH_HALSWITCH {TTH_PUSH_BUFF(0);yy_switch_to_buffer(halbuff);yy_push_state(talign);} + +#define TTH_TEXCLOSE if(*tth_texclose[tth_push_depth-1]){\ + if(tth_debug&8)fprintf(stderr,\ + "Active TEXCLOSE: %s at push_depth %d, eqclose=%d\n", \ + tth_texclose[tth_push_depth-1],tth_push_depth,eqclose); \ + yyless(0);TTH_SCAN_STRING(tth_texclose[tth_push_depth-1]);\ + *tth_texclose[tth_push_depth-1]=0;} + +#define TTH_INC_LINE if(!(tth_stack_ptr||ftntwrap)){\ + if(tth_debug&32)fprintf(stderr," Line increment: numlines=%d yytext=%s",\ + tth_num_lines,yytext);tth_num_lines++;}; +#define TTH_INC_MULTI chs3=yytext;while((chs3=(strstr(chs3,"\n"))?(strstr(chs3,"\n")):(strstr(chs3,"\r")))){chs3++;TTH_INC_LINE}; +#define TTH_EXTRACT_COMMENT \ + if((chscratch=strstr(yytext,"%%tth:"))||(chscratch=strstr(yytext,"%%ttm:"))){\ + TTH_CCPY(scratchstring,chscratch+6);\ + chs2=yytext;\ + while((chs2=strstr(chs2,"\n"))!=NULL&&chs2<=chscratch){\ + TTH_INC_LINE;chs2++;\ + }\ + TTH_SCAN_STRING(scratchstring);\ + }else + + +#define TTH_TINY (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"tiny\">" : "<div class=\"tiny\">") +#define TTH_SCRIPTSIZE (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"scriptsize\">": "<div class=\"scriptsize\">") +#define TTH_FOOTNOTESIZE (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"footnotesize\">": "<div class=\"footnotesize\">") +#define TTH_SMALL (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"small\">": "<div class=\"small\">") +#define TTH_NORMALSIZE (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"normalsize\">": "<div class=\"normalsize\">") +#define TTH_large (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"large\">": "<div class=\"large\">") +#define TTH_Large (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"larger\">": "<div class=\"larger\">") +#define TTH_LARGE (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"largerstill\">": "<div class=\"largerstill\">") +#define TTH_HUGE (((horizmode!=0) || (tth_htmlstyle&4)) ? "<span class=\"huge\">": "<div class=\"huge\">") +#define TTH_SIZEEND (((horizmode!=0) || (tth_htmlstyle&4)) ? "</span>" :"</div>") + +#define TTH_SIZEGEN1 "<span style=\"font-size:" +#define TTH_SIZEGEN2 "%\">" +#define TTH_COLOR "\\special{html:<span style=\"color:#%s\">}" +#define TTH_COLOREND "</span>" + /*start executable statements*/ + +tth_flev=tth_flev0; + + + /******************************* RULES *****************************/ + +#line 15710 "lex.yy.c" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 11276 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 45164 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 1148 "tth.lex" +nbuiltins=nkeys;tth_debug=tth_LaTeX-1;fprintf(tth_fdout,"\n"); + YY_BREAK +case 2: +YY_RULE_SETUP +#line 1149 "tth.lex" +nbuiltins=nkeys; bibliogs=0; + YY_BREAK +/* Strip out formating commands. */ +case 3: +YY_RULE_SETUP +#line 1152 "tth.lex" + + YY_BREAK +case 4: +YY_RULE_SETUP +#line 1153 "tth.lex" + + YY_BREAK +case 5: +YY_RULE_SETUP +#line 1154 "tth.lex" + + YY_BREAK +case 6: +YY_RULE_SETUP +#line 1155 "tth.lex" + + YY_BREAK +case 7: +YY_RULE_SETUP +#line 1156 "tth.lex" + + YY_BREAK +case 8: +YY_RULE_SETUP +#line 1157 "tth.lex" + + YY_BREAK +case 9: +YY_RULE_SETUP +#line 1158 "tth.lex" + + YY_BREAK +case 10: +YY_RULE_SETUP +#line 1159 "tth.lex" + + YY_BREAK +case 11: +YY_RULE_SETUP +#line 1160 "tth.lex" + + YY_BREAK +case 12: +YY_RULE_SETUP +#line 1161 "tth.lex" + + YY_BREAK +case 13: +YY_RULE_SETUP +#line 1162 "tth.lex" + + YY_BREAK +case 14: +YY_RULE_SETUP +#line 1163 "tth.lex" + + YY_BREAK +case 15: +YY_RULE_SETUP +#line 1164 "tth.lex" + + YY_BREAK +case 16: +#line 1166 "tth.lex" +case 17: +YY_RULE_SETUP +#line 1166 "tth.lex" +yy_push_state(matchbrace); + YY_BREAK +/* external macro expansion in notags.*/ +case 18: +YY_RULE_SETUP +#line 1168 "tth.lex" +{ + if(tth_titlestate&1){ + TTH_DO_MACRO else{TTH_OUTPUT(yytext);} + }else{ + TTH_OUTPUT(yytext); + } +} + YY_BREAK +case 19: +YY_RULE_SETUP +#line 1175 "tth.lex" +TTH_OUTPUT(yytext+1); + YY_BREAK +case 20: +YY_RULE_SETUP +#line 1176 "tth.lex" +{ + if(tth_titlestate&2){ + tth_tagpurge=1; + TTH_SCAN_STRING("\\tth_notageq"); + } +} + YY_BREAK +case 21: +YY_RULE_SETUP +#line 1183 "tth.lex" +{ + if(tth_titlestate){ + yy_push_state(notags); + }else{ + yy_push_state(verbatim); + } + TTH_PUSH_CLOSING; +} + YY_BREAK +case 22: +YY_RULE_SETUP +#line 1191 "tth.lex" +{ /* Defined as a latex command with optional arg */ + verbinput=1; + TTH_TEX_FN_OPT("\\tth_verbinput #2 \\tth_endverbinput#tthdrop2",2,""); +} + YY_BREAK +case 23: +YY_RULE_SETUP +#line 1195 "tth.lex" +{ + fprintf(tth_fdout,"\n<pre>"); yy_push_state(verbatim); /*begin verbatim*/ + TTH_PUSH_CLOSING; TTH_CCPY(closing,"</pre>"); + yy_push_state(inputfile); + yy_push_state(removespace); +} + YY_BREAK +case 24: +#line 1203 "tth.lex" +case 25: +YY_RULE_SETUP +#line 1203 "tth.lex" +TTH_TEX_FN("\\tthexpandafter#tthdrop1",1); + YY_BREAK +case 26: +YY_RULE_SETUP +#line 1204 "tth.lex" +{ + if(horizmode) horizmode=1; + js2=indexkey("#1",margkeys,&margmax); + yy_pop_state(); + strcpy(exptex,margs[js2]); + rmdef(margkeys,margs,&margmax); + if(tth_debug&8)fprintf(stderr,"Expanding after %s\n",exptex); + *expchar=0; + yy_push_state(tokexp); /* expandafter not using embracing */ + } + YY_BREAK +case 27: +#line 1215 "tth.lex" +case 28: +YY_RULE_SETUP +#line 1215 "tth.lex" +yy_push_state(csname);strcpy(scratchstring," "); + YY_BREAK +case 29: +YY_RULE_SETUP +#line 1216 "tth.lex" +strcat(scratchstring,yytext); + YY_BREAK +case 30: +/* rule 30 can match eol */ +YY_RULE_SETUP +#line 1217 "tth.lex" +{ + fprintf(stderr,"**** Error: line end in csname. Syntax error? Line %d\n",tth_num_lines); + TTH_SCAN_STRING("\\endcsname"); +} + YY_BREAK +case 31: +YY_RULE_SETUP +#line 1221 "tth.lex" +{ + yy_pop_state(); + chscratch=scratchstring+strspn(scratchstring," \t")-1; + *chscratch='\\'; + if(tth_debug&8)fprintf(stderr,"Rescanning \\csname:%s\n",chscratch); + TTH_SCAN_STRING(chscratch); +} + YY_BREAK +/**** ********** Non-standard functions. ******************/ +/* Put any personal rules here unless there is some special reason. */ +case 32: +YY_RULE_SETUP +#line 1231 "tth.lex" +{ + TTH_OUTPUT(TTH_Large);TTH_PRECLOSE(TTH_SIZEEND); + TTH_OUTPUT(TTH_BOLD1);TTH_PRECLOSE(TTH_BOLD2); +} + YY_BREAK +case 33: +/* rule 33 can match eol */ +YY_RULE_SETUP +#line 1235 "tth.lex" +{ + TTH_INC_MULTI; + TTH_SCAN_STRING("\\epsfbox"); +} + YY_BREAK +case 34: +#line 1240 "tth.lex" +case 35: +#line 1241 "tth.lex" +/* \\epsfbox TTH_TEX_FN("\\tthpsfile#tthdrop1",1); + This code needs to be changed to behave like \leavevmode\hbox + in that it stacks boxes horizontally. + A problem is that to prevent h/vbox from breaking lines unnecessarily in HTML + we start a new table only if we are NOT in horizmode. This is the opposite + of TeX's behaviour. However, a \vbox ought to do it.*/ +case 36: +YY_RULE_SETUP +#line 1247 "tth.lex" +{ + { + if(tth_debug&32)fprintf(stderr,"Calling tthpsfile %s\n",yytext); + TTH_TEX_FN("\\tthpsfile#tthdrop1",1); + } +} + YY_BREAK +case 37: +YY_RULE_SETUP +#line 1253 "tth.lex" +TTH_TEX_FN("\\tthpsfile#tthdrop1",1); + YY_BREAK +case 38: +YY_RULE_SETUP +#line 1254 "tth.lex" +{ + /*if(horizmode)*/ horizmode=1; + js2=indexkey("#1",margkeys,&margmax); + TTH_CCPY(scratchstring,margs[js2]); + yy_pop_state(); + rmdef(margkeys,margs,&margmax); + if(tth_debug&32)fprintf(stderr,"Figure inclusion %s\n",scratchstring); + if((chscratch=strstr(scratchstring,"file=")) != NULL){ + chscratch=chscratch+5; + }else if((chscratch=strstr(scratchstring,"figure=")) != NULL){ + chscratch=chscratch+7; + }else{ + chscratch=scratchstring; + } + chscratch=chscratch+strspn(chscratch,"{ "); + *(chscratch+strcspn(chscratch,"},"))=0; /* Terminate at } or ,*/ + tth_epsf(chscratch,tth_epsftype); + } + YY_BREAK +/* Starting State for Constructing head/body and title.*/ +case 39: +YY_RULE_SETUP +#line 1276 "tth.lex" +{ + fprintf(stderr,"Initial HTML output assumed to be the title.\n"); + if(tth_htmlstyle&3)strcat(tth_texclose[tth_push_depth], + "</head>\n<body><div>\n"); + yy_pop_state(); + yyless(0); + } + YY_BREAK +case 40: +/* rule 40 can match eol */ +YY_RULE_SETUP +#line 1283 "tth.lex" +{ + fprintf(stderr,"Initial HTML output including title.\n"); + if(tth_htmlstyle&3)strcat(tth_texclose[tth_push_depth], + "</head>\n<body><div>\n"); + yy_pop_state(); + yyless(0); +} + YY_BREAK +case 41: +YY_RULE_SETUP +#line 1290 "tth.lex" +{ + fprintf(stderr,"Initial HTML output apparently NOT the title terminates head.\n"); + if(tth_htmlstyle&3) {TTH_OUTPUT("</head>\n<body><div>\n")}; + yy_pop_state(); + yyless(0); +} + YY_BREAK +case 42: +YY_RULE_SETUP +#line 1297 "tth.lex" +TTH_TEX_FN_OPT("{\\headline{#2} \\centerheader{1}{{#2}}{align=\"center\"}}#tthdrop2",2,""); + YY_BREAK +case 43: +YY_RULE_SETUP +#line 1299 "tth.lex" +{ + if(!tth_htmlstyle&1){ + TTH_TEX_FN_OPT("{\\headline{#2} \\centerheader{1}{{#2}}{align=\"center\"}}#tthdrop2",2,""); + }else{ + TTH_TEX_FN_OPT("{\\centerheader{1}{{#2}}{align=\"center\"}}#tthdrop2",2,""); + } +} + YY_BREAK +case 44: +YY_RULE_SETUP +#line 1307 "tth.lex" +{ + yy_pop_state(); + if(tth_htmlstyle&3){ + TTH_TEX_FN("{\\special{html:\n<title>} \\begin{notags}#1\\end{verbatim} \\special{html:\n\n

    \n}}#tthdrop1",1); + }else{ + TTH_TEX_FN("{\\special{html:\n} \\begin{notags}#1\\end{verbatim}\\special{html:\n}}#tthdrop1",1); + } +} + YY_BREAK +case 45: +YY_RULE_SETUP +#line 1316 "tth.lex" +if(!tth_htmlstyle&1){ + TTH_TEX_FN("{\\special{html:\n}\\begin{notags}#1\\end{verbatim}\\special{html:\n}}#tthdrop1",1); +}else{ + TTH_TEX_FN("#tthdrop1",1); +} + YY_BREAK +case 46: +YY_RULE_SETUP +#line 1322 "tth.lex" + + YY_BREAK +case 47: +/* rule 47 can match eol */ +YY_RULE_SETUP +#line 1323 "tth.lex" +TTH_INC_LINE; /* Don't put spurious \par s at top.*/ + YY_BREAK +/* Trap some common causes of improper output in titlecheck state. */ +case 48: +#line 1326 "tth.lex" +case 49: +YY_RULE_SETUP +#line 1326 "tth.lex" +{TTH_SCAN_STRING("\\title");} + YY_BREAK +case 50: +#line 1329 "tth.lex" +case 51: +#line 1330 "tth.lex" +case 52: +#line 1331 "tth.lex" +case 53: +#line 1332 "tth.lex" +case 54: +#line 1333 "tth.lex" +case 55: +#line 1334 "tth.lex" +case 56: +#line 1335 "tth.lex" +case 57: +YY_RULE_SETUP +#line 1335 "tth.lex" +{ + sprintf(newcstr,"\\headline{#1}%s{#1}#tthdrop1",yytext); + TTH_TEX_FN(newcstr,1);} + YY_BREAK +case 58: +/* rule 58 can match eol */ +#line 1340 "tth.lex" +case 59: +/* rule 59 can match eol */ +#line 1341 "tth.lex" +case 60: +/* rule 60 can match eol */ +#line 1342 "tth.lex" +case 61: +/* rule 61 can match eol */ +#line 1343 "tth.lex" +case 62: +/* rule 62 can match eol */ +#line 1344 "tth.lex" +case 63: +/* rule 63 can match eol */ +#line 1345 "tth.lex" +case 64: +/* rule 64 can match eol */ +#line 1346 "tth.lex" +case 65: +/* rule 65 can match eol */ +#line 1347 "tth.lex" +case 66: +/* rule 66 can match eol */ +#line 1348 "tth.lex" +case 67: +/* rule 67 can match eol */ +YY_RULE_SETUP +#line 1348 "tth.lex" +{ + fprintf(stderr, + "**** File starts with \"%s\". It can\'t be the HTML title.\n", + yytext); + fprintf(tth_fdout,"\nNo Title\n"); + if(tth_htmlstyle&3)fprintf(tth_fdout,"\n
    \n"); + yy_pop_state(); + yyless(0); + TTH_SCAN_STRING("\\par"); +} + YY_BREAK +/* Things that can't go in the HTML head in strict mode.*/ +case 68: +#line 1360 "tth.lex" +case 69: +#line 1361 "tth.lex" +case 70: +#line 1362 "tth.lex" +case 71: +#line 1363 "tth.lex" +case 72: +#line 1364 "tth.lex" +case 73: +#line 1365 "tth.lex" +case 74: +#line 1366 "tth.lex" +case 75: +#line 1367 "tth.lex" +case 76: +YY_RULE_SETUP +#line 1367 "tth.lex" +{ + fprintf(stderr, + "**** File starts with \"%s\". It can\'t be in strict HTML heads.\n", + yytext); + fprintf(tth_fdout,"\nNo Title\n"); + if(tth_htmlstyle&3)fprintf(tth_fdout,"\n
    \n"); + yy_pop_state(); + yyless(0); + TTH_SCAN_STRING("\\par"); +} + YY_BREAK +/* Make the title the first one to five plain words. */ +case 77: +YY_RULE_SETUP +#line 1378 "tth.lex" +{ + fprintf(stderr,"HTML Title constructed as:%s\n",yytext); + fprintf(tth_fdout,"\n%s\n",yytext); + if(tth_htmlstyle&3)fprintf(tth_fdout,"\n
    \n"); + yy_pop_state(); + yyless(0); + TTH_SCAN_STRING("\\par"); +} + YY_BREAK +case 78: +YY_RULE_SETUP +#line 1386 "tth.lex" +{ + fprintf(stderr,"Pagecolor in titlecheck.\n"); + if(tth_htmlstyle&3)fprintf(tth_fdout,"No title\n"); + yy_pop_state();/* titlecheck terminated */ + TTH_TEX_FN_OPT("{\\edef\\tthexpcol{\\tthpageColor{#2}}\\tthexpcol}#tthdrop2",2,""); +} + YY_BREAK +case 79: +YY_RULE_SETUP +#line 1393 "tth.lex" +{ /*tth_num_lines--;*/ + TTH_TEX_FN("{\\special{html:\n}#2\\special{html:}}#tthdrop2",2); } + YY_BREAK +case 80: +YY_RULE_SETUP +#line 1395 "tth.lex" +TTH_TEX_FN("{\\special{html:\n}#2 \\special{html:}}#tthdrop3",3);/* tth_num_lines--;*/ + YY_BREAK +case 81: +#line 1398 "tth.lex" +case 82: +YY_RULE_SETUP +#line 1398 "tth.lex" +{ + TTH_PUSH_CLOSING;yy_push_state(rawgroup); + } + YY_BREAK +case 83: +YY_RULE_SETUP +#line 1402 "tth.lex" +TTH_SCAN_STRING("\\expandafter\\tthhref\\tthescape"); + YY_BREAK +case 84: +YY_RULE_SETUP +#line 1403 "tth.lex" +{ + TTH_TEX_FN("{\\special{html:}#2\\special{html:}}#tthdrop2",2); +} + YY_BREAK +/* Get the following brace group and escape special chars, rescan */ +case 85: +#line 1408 "tth.lex" +case 86: +YY_RULE_SETUP +#line 1408 "tth.lex" +{ + *dupstore=0; + *argchar=0; + storetype=5; /* Rescan one copy argchar postfixed. */ + yy_push_state(escgroup); + bracecount=-1; + yy_push_state(embracetok); /* Make sure we have a braced argument */ +} + YY_BREAK +case 87: +#line 1417 "tth.lex" +case 88: +YY_RULE_SETUP +#line 1417 "tth.lex" +{ + *dupstore=0; + *argchar=0; + yy_push_state(urlgroup); + storetype=99; /* Just leave in dupgroup to be dealt with by prior state*/ + yy_push_state(uncommentgroup); + /*yy_push_state(escgroup);*/ + bracecount=-1; + yy_push_state(embracetok); /* Make sure we have a braced argument */ +} + YY_BREAK +case 89: +/* rule 89 can match eol */ +YY_RULE_SETUP +#line 1428 "tth.lex" +{ + yyless(0); + yy_pop_state(); + /*remove the closing brace*/ + *(dupstore+strlen(dupstore)-1)=0; + if(strcspn(dupstore,"\\&")!=0){ + /* Even the href can't contain an ampersand literally so we need to + translate it.*/ + strcpy(dupstore2,dupstore); + *dupstore=0; + i=0; + while(*(dupstore2+i)!=0){ + if(*(dupstore2+i)=='&'){ + if(*(dupstore+strlen(dupstore)-1)=='\\') + *(dupstore+strlen(dupstore)-1)=0;/*Remove prior */ + strncat(dupstore,"&",5); + }else{ + strncat(dupstore,(dupstore2+i),1); + } + i++; + } + } + sprintf(dupstore2, + "\\special{html:}\\verb%c%s%c\\special{html:}" + ,dupstore+1,6,dupstore+1,6); + TTH_SCAN_STRING(dupstore2); + *dupstore=0; + *dupstore2=0; + } + YY_BREAK +/* +.|\n { + yyless(0); + yy_pop_state(); + strcpy(dupstore2,"\\href");strcat(dupstore2,dupstore); + sprintf(dupstore2+strlen(dupstore2),"{\\verb%c%s",6,dupstore+1); + sprintf(dupstore2+strlen(dupstore2)-1,"%c}",6); + if(tth_debug&8)fprintf(stderr,"urlgroup rescanning:%s\n",dupstore2); + TTH_SCAN_STRING(dupstore2); + *dupstore=0; + *dupstore2=0; + }*/ +/* Colordvi commands, won't work in equations. Convert to \color */ +case 90: +#line 1473 "tth.lex" +case 91: +#line 1474 "tth.lex" +case 92: +#line 1475 "tth.lex" +case 93: +#line 1476 "tth.lex" +case 94: +#line 1477 "tth.lex" +case 95: +#line 1478 "tth.lex" +case 96: +#line 1479 "tth.lex" +case 97: +YY_RULE_SETUP +#line 1479 "tth.lex" +{ + strcpy(scratchstring,yytext+1); + /**scratchstring=tolower(*scratchstring);*/ + sprintf(scrstring,"\\color{%s}",scratchstring); + TTH_SWAP(scrstring); +} + YY_BREAK +case 98: +/* rule 98 can match eol */ +YY_RULE_SETUP +#line 1485 "tth.lex" +TTH_INC_MULTI;fprintf(tth_fdout,","); + YY_BREAK +/************************ Comment removal ******************/ +/* Many needed so that e.g. inside a comment does not break stuff */ +case 99: +/* rule 99 can match eol */ +#line 1490 "tth.lex" +case 100: +/* rule 100 can match eol */ +#line 1491 "tth.lex" +case 101: +/* rule 101 can match eol */ +YY_RULE_SETUP +#line 1491 "tth.lex" +{ + TTH_INC_LINE; + if(strstr(yytext,"%%tth:")==yytext){TTH_SCAN_STRING(yytext+6);} + else if(strstr(yytext,"%%ttm:")==yytext){TTH_SCAN_STRING(yytext+6);} + else{ + if(tth_debug&64) fprintf(stderr,"Comment:%s",yytext); + } + } + YY_BREAK +case 102: +/* rule 102 can match eol */ +YY_RULE_SETUP +#line 1500 "tth.lex" +{ + TTH_INC_LINE; + if(strstr(yytext,"%%tth:")==yytext){TTH_SCAN_STRING(yytext+6);} + else if(strstr(yytext,"%%ttm:")==yytext){TTH_SCAN_STRING(yytext+6);} + else{ + if(tth_debug&64) fprintf(stderr,"Comment:%s",yytext); + if(horizmode) horizmode=-1; + yy_push_state(parcheck); + } + } + YY_BREAK +/* escgroup explicitly ignores comment removal and other special chars.*/ +case 103: +YY_RULE_SETUP +#line 1512 "tth.lex" +strcat(dupstore,"\\");strcat(dupstore,yytext); + YY_BREAK +/* Don't escape things already escaped*/ +case 104: +YY_RULE_SETUP +#line 1514 "tth.lex" +strcat(dupstore,yytext); + YY_BREAK +/*********************************************************************/ +/* Date information needs to be before conditionals. */ +case 105: +YY_RULE_SETUP +#line 1517 "tth.lex" +{ + time(&thetime); + strcpy(scratchstring,ctime(&thetime)); + strcpy(scratchstring+10,", "); + TTH_OUTPUT(scratchstring+4); + TTH_OUTPUTH(scratchstring+20); + } + YY_BREAK +/* Act as if these are counters */ +case 106: +YY_RULE_SETUP +#line 1526 "tth.lex" +{ + yyless(0); + TTH_SCAN_STRING("\\number"); +} + YY_BREAK +case 107: +YY_RULE_SETUP +#line 1531 "tth.lex" +{ + time(&thetime); + timestruct=*localtime(&thetime); + timestruct.tm_year= timestruct.tm_year+1900; + sprintf(scrstring,"%d",timestruct.tm_year); + /* Remove space afterwards*/ + TTH_PUSH_BUFF(1);yy_scan_string(scrstring); + yy_pop_state(); +} + YY_BREAK +case 108: +YY_RULE_SETUP +#line 1540 "tth.lex" +{ + time(&thetime); + timestruct=*localtime(&thetime); + sprintf(scrstring,"%d",timestruct.tm_mon+1); + TTH_PUSH_BUFF(1);yy_scan_string(scrstring); + yy_pop_state(); +} + YY_BREAK +case 109: +YY_RULE_SETUP +#line 1547 "tth.lex" +{ + time(&thetime); + timestruct=*localtime(&thetime); + sprintf(scrstring,"%d",timestruct.tm_mday); + TTH_PUSH_BUFF(1);yy_scan_string(scrstring); + yy_pop_state(); +} + YY_BREAK +/***********************************************************************/ +/* Conditionals*/ +case 110: +YY_RULE_SETUP +#line 1557 "tth.lex" +{ + strcpy(scratchstring,strstr(yytext,"\\if")+3); + sprintf(scrstring,"\\def\\if%s{\\iffalse}\\def\\%sfalse{\\%dfalse}\\def\\%strue{\\%dtrue}",scratchstring,scratchstring,nkeys,scratchstring,nkeys); + TTH_SCAN_STRING(scrstring); +} + YY_BREAK +case 111: +YY_RULE_SETUP +#line 1562 "tth.lex" +{ + sscanf(yytext+1,"%d",&js2); + strncpy(defs[js2]+3,"false",5); +} + YY_BREAK +case 112: +YY_RULE_SETUP +#line 1566 "tth.lex" +{ + sscanf(yytext+1,"%d",&js2); + strncpy(defs[js2]+3,"true ",5); +} + YY_BREAK +case 113: +#line 1572 "tth.lex" +case 114: +#line 1573 "tth.lex" +case 115: +#line 1574 "tth.lex" +case 116: +YY_RULE_SETUP +#line 1574 "tth.lex" +if(tth_debug&1024)fprintf(stderr,"Starting %s.\n",yytext); + YY_BREAK +case 117: +YY_RULE_SETUP +#line 1576 "tth.lex" + + YY_BREAK +case 118: +#line 1578 "tth.lex" +case 119: +YY_RULE_SETUP +#line 1578 "tth.lex" +{ + yy_push_state(innerfalse); + if(tth_debug&1024)fprintf(stderr,"Starting inner \\if in falsetext.\n"); +} + YY_BREAK +case 120: +#line 1583 "tth.lex" +case 121: +YY_RULE_SETUP +#line 1583 "tth.lex" + + YY_BREAK +case 122: +YY_RULE_SETUP +#line 1584 "tth.lex" +{ + yy_push_state(falsetext); + if(tth_debug&1024)fprintf(stderr,"Starting \\iffalse.\n"); +} + YY_BREAK +case 123: +YY_RULE_SETUP +#line 1588 "tth.lex" +if(horizmode) yy_push_state(falsetext); + YY_BREAK +case 124: +YY_RULE_SETUP +#line 1589 "tth.lex" +if(!horizmode) yy_push_state(falsetext); + YY_BREAK +case 125: +#line 1592 "tth.lex" +case 126: +YY_RULE_SETUP +#line 1592 "tth.lex" +{ + if(tth_debug&1024)fprintf(stderr,"Ending true clause \\if\\fi.\n"); + if(horizmode)horizmode=1; +} + YY_BREAK +case 127: +#line 1597 "tth.lex" +case 128: +YY_RULE_SETUP +#line 1597 "tth.lex" +{ + if(tth_debug&1024)fprintf(stderr,"Ending true clause \\if\\else\n"); + yy_push_state(falsetext); + if(horizmode)horizmode=1; +} + YY_BREAK +case 129: +YY_RULE_SETUP +#line 1602 "tth.lex" +{ + yy_pop_state(); + if(tth_debug&1024)fprintf(stderr,"Ending false clause \\if\\else.\n"); + if(horizmode)horizmode=1; + yy_push_state(removespace); +} + YY_BREAK +case 130: +YY_RULE_SETUP +#line 1608 "tth.lex" +/* Don't misinterpret other commands. */ + YY_BREAK +case 131: +YY_RULE_SETUP +#line 1609 "tth.lex" +{ + yy_pop_state(); + if(tth_debug&1024)fprintf(stderr,"Ending false clause \\if\\fi.\n"); + if(horizmode)horizmode=1; +} + YY_BREAK +case 132: +YY_RULE_SETUP +#line 1614 "tth.lex" + + YY_BREAK +case 133: +YY_RULE_SETUP +#line 1616 "tth.lex" +yy_push_state(innerfalse); + YY_BREAK +case 134: +YY_RULE_SETUP +#line 1617 "tth.lex" +yy_pop_state(); if(tth_debug&1024)fprintf(stderr,"\\or "); + YY_BREAK +case 135: +YY_RULE_SETUP +#line 1618 "tth.lex" +yy_push_state(innerfalse); /* Ignore nested ifs */ + YY_BREAK +case 136: +YY_RULE_SETUP +#line 1619 "tth.lex" +{ + yy_pop_state(); if(tth_debug&1024)fprintf(stderr,"#tthorbreak\n"); + TTH_SCAN_STRING(yytext); + } + YY_BREAK +case 137: +#line 1624 "tth.lex" +case 138: +YY_RULE_SETUP +#line 1624 "tth.lex" +{ + if(tth_debug&1024)fprintf(stderr,"%s ortext\n",yytext); + TTH_SCAN_STRING("#tthorbreak");} + YY_BREAK +case 139: +YY_RULE_SETUP +#line 1627 "tth.lex" +/*fprintf(stderr,"ortext ");*/ + YY_BREAK +case 140: +YY_RULE_SETUP +#line 1629 "tth.lex" +{ + yy_pop_state(); if(tth_debug&1024)fprintf(stderr,"#orbreak end\n");} + YY_BREAK +case 141: +YY_RULE_SETUP +#line 1631 "tth.lex" +{ + yyless(0); + yy_pop_state(); if(tth_debug&1024)fprintf(stderr,"Orbreak exit\n");} + YY_BREAK +case 142: +#line 1636 "tth.lex" +case 143: +#line 1637 "tth.lex" +case 144: +#line 1638 "tth.lex" +case 145: +#line 1639 "tth.lex" +case 146: +#line 1640 "tth.lex" +case 147: +YY_RULE_SETUP +#line 1640 "tth.lex" +{ + yy_push_state(getifnum);strcpy(strif,yytext);yy_push_state(removespace);} + YY_BREAK +case 148: +#line 1643 "tth.lex" +case 149: +YY_RULE_SETUP +#line 1643 "tth.lex" +yy_push_state(number);jscratch=0; + YY_BREAK +case 150: +YY_RULE_SETUP +#line 1644 "tth.lex" +TTH_CCAT(strif,yytext); + YY_BREAK +case 151: +YY_RULE_SETUP +#line 1645 "tth.lex" +{ + TTH_DO_MACRO + else if( (ind=indexkey(yytext,countkeys,&ncounters)) != -1) { + if(tth_debug&1024)fprintf(stderr,"If Counter %d, %s\n",ind,countkeys[ind]); + sprintf(scratchstring,"%d ",counters[ind]); + TTH_PUSH_BUFF(1);yy_scan_string(scratchstring); /* remove spaces */ + } else { + yyless(0); + TTH_SCAN_STRING("#"); /*Termination Sign*/ + } + } + YY_BREAK +case 152: +YY_RULE_SETUP +#line 1656 "tth.lex" +TTH_CCAT(strif,yytext);yy_push_state(removespace); + YY_BREAK +case 153: +/* rule 153 can match eol */ +YY_RULE_SETUP +#line 1657 "tth.lex" +/*Oct 2001.*/ + YY_BREAK +case 154: +YY_RULE_SETUP +#line 1658 "tth.lex" +{ + yy_pop_state(); + if(*yytext != '#') {yyless(0);} + if(tth_debug&1024)fprintf(stderr,"strif text:%s\n",strif); + chs2=strif+strcspn(strif,"0123456789"); + if(strstr(strif,"\\ifnum")){ + chscratch=chs2+strcspn(chs2,"<>="); + sscanf(chs2,"%d",&jscratch); + sscanf(chscratch+1,"%d",&js2); + switch(*chscratch){ + case '<': if(!(jscratch': if(!(jscratch>js2)) yy_push_state(falsetext);break; + } + }else if(strstr(strif,"\\ifodd")){ + sscanf(chs2,"%d",&jscratch); + if(!(jscratch & 1)) yy_push_state(falsetext);break; /* even */ + }else if(strstr(strif,"\\ifcase")){ + sscanf(chs2,"%d",&jscratch); + yy_push_state(orbreak); + for(js2=1;js2<=jscratch;js2++) yy_push_state(ortext); + } +} + YY_BREAK +case 155: +#line 1683 "tth.lex" +case 156: +YY_RULE_SETUP +#line 1683 "tth.lex" +yy_push_state(getiftok);*strif=0; yy_push_state(removespace); + YY_BREAK +case 157: +YY_RULE_SETUP +#line 1684 "tth.lex" +{ + TTH_DO_MACRO + else{ + if(tth_debug&1024) fprintf(stderr, + "**** Unknown or unexpandable command %s as \\if test token. Line %d\n",yytext,tth_num_lines); + if(strlen(strif) > 1){ + yy_pop_state(); + if(!(strlen(strif)==strlen(yytext) && strstr(strif,yytext))) + yy_push_state(falsetext); + }else strcat(strif,yytext); + } +} + YY_BREAK +case 158: +/* rule 158 can match eol */ +YY_RULE_SETUP +#line 1696 "tth.lex" +{ + if(strcspn(yytext,"\n")==0) TTH_INC_LINE; + if(strlen(strif)){ + yy_pop_state(); + if(!(strlen(strif)==strlen(yytext) && strstr(strif,yytext))) + yy_push_state(falsetext); + }else strcat(strif,yytext); +} + YY_BREAK +case 159: +#line 1706 "tth.lex" +case 160: +YY_RULE_SETUP +#line 1706 "tth.lex" +yy_push_state(getifx);*strif=0; yy_push_state(removespace); + YY_BREAK +case 161: +/* rule 161 can match eol */ +#line 1708 "tth.lex" +case 162: +/* rule 162 can match eol */ +YY_RULE_SETUP +#line 1708 "tth.lex" +{ + if(strcspn(yytext,"\n")==0) TTH_INC_LINE; + if(tth_debug&1024) fprintf(stderr,"\\ifx comparison argument:%s\n",yytext); + if(strlen(strif)){ /* Terminate */ + yy_pop_state(); + js2=0; + if(strlen(strif)>1) { + if(strlen(yytext)>1){ /* Both apparently command strings */ + if(strlen(strif)==strlen(yytext) && strstr(strif,yytext))js2=1; + if(((ind=indexkey(yytext,keys,&nkeys))!=-1) == + ((i=indexkey(strif,keys,&nkeys))!=-1)){ + if((tth_debug&1024)&&(i>=0)) + fprintf(stderr,"Comparing:%d:%d:%s:%s:\n",i,ind,defs[i],defs[ind]); + if(i==ind)js2=1; else if(strstr(defs[i],defs[ind])==defs[i]) js2=1; + }else if((ind=indexkey(yytext,countkeys,&ncounters))!=-1)/*counters*/ + if(ind == indexkey(strif,countkeys,&ncounters))js2=1; + } + }else if(strlen(yytext)==1){ /* Both single characters */ + if(*strif==*yytext) js2=1; + } + if(!js2){ + if(tth_debug&1024) fprintf(stderr,"ifx FALSE\n"); + yy_push_state(falsetext); + }else if(tth_debug&1024) fprintf(stderr,"ifx TRUE\n"); + } + if(strlen(yytext) > 1)yy_push_state(removespace); + strcpy(strif,yytext); +} + YY_BREAK +/********************************************************************/ +/* Equation Code */ +/*equationhl*/ +case 163: +YY_RULE_SETUP +#line 1739 "tth.lex" +{ + if(!eqalignrow) mkkey(eqstr,eqstrs,&eqdepth); /* Start new row */ + if(tth_istyle&1)eqalignrow=eqalignrow+6*(levhgt[eqclose]-1)+TTH_HGT;else + eqalignrow=eqalignrow+levhgt[eqclose]; + levhgt[eqclose]=1; /* new */ + TTH_TEX_FN("{#1}\\tth_lefteq#tthdrop1",1); +} + YY_BREAK +case 164: +YY_RULE_SETUP +#line 1747 "tth.lex" +{ + TTH_TEX_FN("{\\buildrel{#1}\\over{#2}}#tthdrop2",2); +} + YY_BREAK +case 165: +/* rule 165 can match eol */ +YY_RULE_SETUP +#line 1751 "tth.lex" +TTH_CHECK_LENGTH; TTH_INC_LINE; + YY_BREAK +case 166: +/* rule 166 can match eol */ +YY_RULE_SETUP +#line 1753 "tth.lex" +{ + TTH_INC_MULTI; + if(*halstring){ /* halign and tabular */ + TTH_SCAN_STRING("\\tth_halcr}"); + }else{ + unput('}'); + } +} /* see also at \begin{array} = \matrix */ + YY_BREAK +/* Version that uses tabular code: */ +case 167: +YY_RULE_SETUP +#line 1763 "tth.lex" +TTH_SCAN_STRING("\\end{tabular}"); + YY_BREAK +case 168: +YY_RULE_SETUP +#line 1765 "tth.lex" +{ + if(tth_debug&2)fprintf(stderr,"end eqnarray, eqdepth=%d, eqclose=%d, tth_multinum=%d, eqalignlog=%d.\n",eqdepth,eqclose,tth_multinum,eqalignlog); + TTH_SCAN_STRING("}}\\tth_endeqnarray"); +} + YY_BREAK +case 169: +YY_RULE_SETUP +#line 1769 "tth.lex" +if(eqalignlog <= 100) eqalignlog=eqalignlog+100; + YY_BREAK +/* Font faces and styles etc.*/ +case 170: +YY_RULE_SETUP +#line 1771 "tth.lex" +TTH_SWAP("\\rm "); + YY_BREAK +case 171: +#line 1773 "tth.lex" +case 172: +YY_RULE_SETUP +#line 1773 "tth.lex" +TTH_SWAP("\\bf "); + YY_BREAK +case 173: +YY_RULE_SETUP +#line 1774 "tth.lex" +TTH_SWAP("\\it "); + YY_BREAK +case 174: +YY_RULE_SETUP +#line 1775 "tth.lex" +TTH_SWAP("\\it "); + YY_BREAK +case 175: +YY_RULE_SETUP +#line 1776 "tth.lex" +TTH_SWAP("\\tt "); + YY_BREAK +case 176: +YY_RULE_SETUP +#line 1777 "tth.lex" +TTH_SWAP("\\sffamily "); + YY_BREAK +case 177: +YY_RULE_SETUP +#line 1778 "tth.lex" + + YY_BREAK +case 178: +/* rule 178 can match eol */ +YY_RULE_SETUP +#line 1779 "tth.lex" +TTH_INC_MULTI; + YY_BREAK +case 179: +YY_RULE_SETUP +#line 1780 "tth.lex" +TTH_MATHI(219); + YY_BREAK +case 180: +YY_RULE_SETUP +#line 1783 "tth.lex" +{ + /* halign */ + /*if(*halstring) {TTH_SCAN_STRING("}\\tth_mhamper{");*/ + if(*halstring) {TTH_SCAN_STRING("\\tth_mhamper"); + }else{ yy_push_state(mamper); + } + } + YY_BREAK +case 181: +YY_RULE_SETUP +#line 1790 "tth.lex" +yy_push_state(hamper); + YY_BREAK +/* hamper for halign */ +case 182: +/* rule 182 can match eol */ +YY_RULE_SETUP +#line 1793 "tth.lex" +TTH_INC_MULTI; + YY_BREAK +case 183: +/* rule 183 can match eol */ +YY_RULE_SETUP +#line 1794 "tth.lex" +{ + yyless(0);yy_pop_state(); + tth_enclose(TTH_EQA1,eqstr,TTH_EQA2,eqstore); + if(eqaligncell && !tth_LaTeX && eqalignlog){ + /* This ends the second cell of eqaligno. */ + strcat(eqstr,TTH_CELL_R); + } else strcat(eqstr,TTH_EQA3); + if(eqaligncell) { + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); + rmkey(eqstrs,&eqdepth); + } + mkkey(eqstr,eqstrs,&eqdepth); + *eqstr=0; + eqaligncell++; +} + YY_BREAK +case 184: +YY_RULE_SETUP +#line 1810 "tth.lex" +TTH_TEX_FN("\\tthemultispan{#1}#tthdrop1",1); + YY_BREAK +case 185: +YY_RULE_SETUP +#line 1811 "tth.lex" +TTH_TEX_FN("\\tthemultispan{#1}#tthdrop2",2); + YY_BREAK +/* interior in array */ +case 186: +YY_RULE_SETUP +#line 1813 "tth.lex" +{ + yy_pop_state(); + chscratch=strstr(yytext,"multi"); + TTH_CCPY(argchar,chscratch+strcspn(chscratch,"{")+1); + *(argchar+strcspn(argchar,"}"))=0; + tth_enclose(TTH_EQA1,eqstr,TTH_EQA2,eqstore); + sprintf(eqstr+strlen(eqstr),"%s\"%s\"%s\n",TTH_EQA4,argchar,">"); + if(eqaligncell) { + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); + rmkey(eqstrs,&eqdepth); + } + mkkey(eqstr,eqstrs,&eqdepth); + *eqstr=0; + eqaligncell++; + } + YY_BREAK +case 187: +YY_RULE_SETUP +#line 1828 "tth.lex" +{ /* line start in array */ + chscratch=strstr(yytext,"multi"); + TTH_CCPY(argchar,chscratch+strcspn(chscratch,"{")+1); + *(argchar+strcspn(argchar,"}"))=0; + sscanf(argchar,"%d",&colspan); + } + YY_BREAK +case 188: +YY_RULE_SETUP +#line 1834 "tth.lex" +{ /* expand first */ + TTH_DO_MACRO + else{ + yyless(0);yy_pop_state(); + tth_enclose(TTH_EQA1,eqstr,TTH_EQA2,eqstore); + if(eqaligncell && !tth_LaTeX && eqalignlog){ + /* This ends the second cell of eqaligno. */ + strcat(eqstr,TTH_CELL_R); + } else strcat(eqstr,TTH_EQA3); + if(eqaligncell) { + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); + rmkey(eqstrs,&eqdepth); + } + mkkey(eqstr,eqstrs,&eqdepth); + *eqstr=0; + eqaligncell++; + } +} + YY_BREAK +case 189: +YY_RULE_SETUP +#line 1853 "tth.lex" +{ + if(tth_debug&33) fprintf(stderr,"noalign in equation:\n"); + if(!eqalignrow) mkkey(eqstr,eqstrs,&eqdepth); + if(tth_istyle&1)eqalignrow=eqalignrow+6*(levhgt[eqclose]-1)+TTH_HGT;else + eqalignrow=eqalignrow+levhgt[eqclose]; + levhgt[eqclose]=1; + strcpy(eqstr,TTH_NOALIGN); + TTH_TEX_FN("{#1}\\special{html:}\\tth_eqfin#tthdrop1",1); + } + YY_BREAK +case 190: +/* rule 190 can match eol */ +#line 1863 "tth.lex" +case 191: +/* rule 191 can match eol */ +#line 1864 "tth.lex" +case 192: +/* rule 192 can match eol */ +YY_RULE_SETUP +#line 1864 "tth.lex" +{ + if(eqclose && (active[eqclose-1] || mtrx[eqclose-1])){ + /* If this is really an array-type environment. */ + if(tth_debug&16)fprintf(stderr, + "Active tth_cr. yytext=%s eqclose=%d, active=%d\n", + yytext,eqclose,active[eqclose-1]); + if(strstr(yytext,"tth_")){ /* Prefix special opening */ + sprintf(scrstring,TTH_EQ11, + (lefteq ? "left":(eqalignlog ?"right":"center")),colspan); + /*(colspan? colspan : 1)); Avoid colspan=0; not now necc.*/ + tth_enclose(scrstring,eqstr,TTH_EQA2,eqstore); + }else{ + /* Next line ensures \cr is equivalent to \nonumber\\ */ + if(strstr(yytext,"\\cr"))if(eqalignlog <= 100) eqalignlog=eqalignlog+100; + tth_enclose(TTH_EQA1,eqstr,TTH_EQA2,eqstore); + } + if(tth_debug&16)fprintf(stderr, + "TTH_CR, eqalignlog=%d, colspan=%d, envirchar=%s, tth_multinum=%d, tth_LaTeX=%d.\n", + eqalignlog,colspan,envirchar,tth_multinum,tth_LaTeX); + if(eqaligncell){ /* If there is a preceding & (cell) prefix it. */ + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); + rmkey(eqstrs,&eqdepth); + } + /* If this row is an eqalign or is not the first.*/ + if((eqalignlog&&(eqalignlog-100))||eqalignrow){ + sprintf(eqchar,((eqalignlog&&(eqalignlog-100))?TTH_EQ7:TTH_EQ10), + (lefteq ? "left":((eqalignlog&&(eqalignlog-100)) ? + "right":"center")),colspan); + tth_prefix(eqchar,eqstr,eqstore); /* Prefix its opening */ + *eqchar=0; + } + if(eqalignrow){ /* If this row is not the first.*/ + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); /* Prefix previous row */ + rmkey(eqstrs,&eqdepth); + } + if(tth_LaTeX && tth_multinum && strlen(envirchar) && (eqalignlog==1) ){ + strcat(eqstr,TTH_EQ8); + strcpy(scratchstring,"(\\theequation)"); + }else{ + if((eqalignlog>1)&&(eqalignlog-100)) strcat(eqstr,TTH_EQ9); + *scratchstring=0; + } + strcat(scratchstring,"\\tth_closerow"); + TTH_SCAN_STRING(scratchstring); + /*mtrx[eqclose-1]=0; A mistake. Should be done only at end.*/ + }else if(*halstring){ /* halign and tabular */ + TTH_SCAN_STRING("\\tth_halcr"); + }else{ + fprintf(stderr,"**** Improper \\\\ or \\cr outside array environment ignored, Line %d.\n",tth_num_lines); + } +} + YY_BREAK +case 193: +YY_RULE_SETUP +#line 1916 "tth.lex" +{ + if(tth_LaTeX && tth_multinum && strlen(envirchar) && (eqalignlog==1) ){ + equatno++;sprintf(envirchar,"%d",equatno);tth_multinum++; + } + strcat(eqstr,""); /* Close the row */ + *eqchar=0; + mkkey(eqstr,eqstrs,&eqdepth); /* Start new row */ + *eqstr=0; + /* eqalignrow++; old */ + if(tth_istyle&1)eqalignrow=eqalignrow+6*(levhgt[eqclose]-1)+TTH_HGT;else + eqalignrow=eqalignrow+levhgt[eqclose]; + levhgt[eqclose]=1; /* new */ + eqaligncell=0; + lefteq=0; + colspan=1; + if(eqalignlog >= 100) eqalignlog=eqalignlog-100; +} + YY_BREAK +case 194: +YY_RULE_SETUP +#line 1934 "tth.lex" +{ + if(tth_debug&16) { + fprintf(stderr,"Start Group {, eqdepth=%d, eqclose=%d, tth_flev=%d, levdelim=%s\n",eqdepth,eqclose,tth_flev,levdelim[eqclose]); + } + if(tth_flev < 0) tth_flev=tth_flev-99; + mkkey(eqstr,eqstrs,&eqdepth); + *eqstr=0; + eqclose++; + tophgt[eqclose]=0; + levhgt[eqclose]=1; + TTH_PUSH_CLOSING; + } + YY_BREAK +case 195: +YY_RULE_SETUP +#line 1947 "tth.lex" +{ + if(mtrx[eqclose-1] || active[eqclose-1] || tophgt[eqclose]){ + /* Terminate getsubp state */ + yyless(0); + TTH_SCAN_STRING("#"); + }else{ + /* Just enter the brace termination code. */ + TTH_SCAN_STRING("\\tth_closebrace"); + } +} + YY_BREAK +case 196: +#line 1958 "tth.lex" +case 197: +YY_RULE_SETUP +#line 1958 "tth.lex" +{ + TTH_TEXCLOSE else{ + do{ + if(tth_debug&16) { + if(active[eqclose]) { + fprintf(stderr, + "Active Group }, eqdepth=%d, eqclose=%d, tth_flev=%d, levdelim=%s, active=%d\n" + ,eqdepth,eqclose,tth_flev,levdelim[eqclose],active[eqclose]);} + else {fprintf(stderr, + "Close Group }, eqdepth=%d, eqclose=%d, tth_flev=%d, levdelim=%s\n" + ,eqdepth,eqclose,tth_flev,levdelim[eqclose]);} + } + if(tophgt[eqclose] != 0){ /* If fraction */ + if(tth_debug&16)fprintf(stderr,"Fraction closing.\n"); + if(levhgt[eqclose] > 1 || (eqclose > tth_flev && TTH_COMPLEX)){ + /* If bottom contains a fraction or we are topped out. */ + /* Try bottom compression*/ + oa_removes=b_align(eqstr,tth_debug); + tth_enclose(TTH_LEV1,eqstr,TTH_LEV2,eqstore); + }else{ /* Put br at end if we are still closing a real cell */ + if((eqclose <= tth_flev) && (active[eqclose-1]!=30)) strcat(eqstr,TTH_BR); + } + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); + rmkey(eqstrs,&eqdepth); + TTH_CLOSEGROUP;TTH_POP_CLOSING; /* put closing before cell end */ + if(active[eqclose-1]!=30){ + /* CELL1/2 test for non-zero levdelim 0,+1 */ + tth_enclose(TTH_CELL1,eqstr,TTH_CELL2,eqstore); + if(eqclose <= tth_flev) yy_push_state(getsubp); + if(tth_debug&16) fprintf(stderr,"Whole fraction:%s\n",eqstr); + } + }else { + TTH_CLOSEGROUP;TTH_POP_CLOSING; + } + if(eqclose > tth_flev) hgt=1; else hgt=tophgt[eqclose]+levhgt[eqclose]; + if(tth_debug&16) fprintf(stderr,"eqclose=%d,tth_flev=%d,hgt=%d,%d,%d\n", + eqclose,tth_flev,hgt,tophgt[eqclose],levhgt[eqclose]); + if(levhgt[eqclose-1] < hgt) levhgt[eqclose-1]=hgt; + if(tth_debug&2 && (levdelim[eqclose][0]||levdelim[eqclose+1][0])) + fprintf(stderr,"Delimiting:%s%d%s\n", + levdelim[eqclose],hgt,levdelim[eqclose+1]); + if(levdelim[eqclose][0]){ + delimit(levdelim[eqclose],hgt,eqchar); + } + if(levdelim[eqclose+1][0]){ + delimit(levdelim[eqclose+1],hgt,eqchar2); + } + /* Cut spurious cells off end of eqchar and eqstr if necessary*/ + chscratch=eqchar+strlen(eqchar)-strlen(TTH_CELL3); + if( (strstr(chscratch,TTH_CELL3)==chscratch) && + (strstr(eqstr,TTH_CELL_START)==eqstr+strspn(eqstr," \n"))){ + *chscratch=0; + } + chscratch=eqstr+strlen(eqstr)-strlen(TTH_CELL3); + if( (strstr(eqchar2,TTH_CELL_START)==eqchar2+strspn(eqchar2," \n")) && + (strstr(chscratch,TTH_CELL3)==chscratch) ){ + *chscratch=0; + } /* Section could be combined with delimit immediately above. */ + /* rely on no delimiters on active closures. False for matrix. */ + if(levdelim[eqclose+1][0] && (hgt > 1)) yy_push_state(getsubp); + *levdelim[eqclose]=0; + *levdelim[eqclose+1]=0; + + tth_enclose(eqchar,eqstr,eqchar2,eqstore); + *eqchar=0; + *eqchar2=0; + if(active[eqclose-1]==30){ /* eqlimited section for mathop, overbrace */ + if(tth_debug&2)fprintf(stderr,"Mathop eqlimited:%s\n",eqstr); + if(strlen(eqlimited)+strlen(eqstr)< TTH_DLEN) { + strcat(eqlimited,eqstr); + if(tth_debug&2)fprintf(stderr,"EQlimited=||%s||\n",eqlimited); + }else{ + fprintf(stderr, + "Error: Fatal! Exceeded eqlimited storage. Over/underbrace too long.\n"); + TTH_EXIT(5); + } + strcpy(eqstr,eqstrs[eqdepth-1]); + yy_push_state(getsubp); + if(levhgt[eqclose] == 1)levhgt[eqclose]=2; /* Force fraction closure */ + active[eqclose-1]=0; + }else{ + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); + } + rmkey(eqstrs,&eqdepth); + if(tth_flev < 0) tth_flev=tth_flev+99; + active[eqclose]=0; + mtrx[eqclose]=0; + eqclose--; + if(eqclose < 0) { + fprintf(stderr,"**** Error! Fatal! Negative closure count, line:%d\n",tth_num_lines); + TTH_EXIT(4); + } + } while (active[eqclose]); + if(tth_debug&16) fprintf(stderr, + "Completing Close Group, eqdepth=%d, eqclose=%d, tth_flev=%d, levdelim=%s\n" + ,eqdepth,eqclose,tth_flev,levdelim[eqclose]); + } +} + YY_BREAK +case 198: +YY_RULE_SETUP +#line 2057 "tth.lex" +{ /* Cope with ambiguous style at equation end */ + if(displaystyle){ + if(tth_debug&2)fprintf(stderr,"$$ in displaystyle\n"); + TTH_SCAN_STRING("}\\tth_endequation"); + }else{ + yyless(1); + TTH_SCAN_STRING("}\\tth_endinline"); + } + } + YY_BREAK +case 199: +YY_RULE_SETUP +#line 2067 "tth.lex" +{ + TTH_TEXCLOSE else{ + if(tth_debug&2) fprintf(stderr,"Leaving inline eq, eqclose=%d, eqdepth=%d, tth_flev=%d, levhgt=%d, tophgt=%d\n", + eqclose,eqdepth,tth_flev,levhgt[eqclose],tophgt[eqclose]); + TTH_CLOSEGROUP;TTH_POP_CLOSING; + if(tth_inlinefrac && (levhgt[eqclose]+tophgt[eqclose]>1)) + tth_enclose(TTH_TSTY1,eqstr,TTH_TSTY2,eqstore); + if(eqdepth==1){ + rmkey(eqstrs,&eqdepth); /*eqdepth--;*/ + tth_flev=tth_flev0; + horizmode=1; + if(tth_tagpurge){ + tagpurge(eqstr); + tth_tagpurge=0; + } + fprintf(tth_fdout,"%s",eqstr);*eqstr=0; + }else{ + if(displaystyle)displaystyle--; + eqdepth--; + if(tth_debug&2)fprintf(stderr, + "Equation in a textbox inside an equation.\n"); + TTH_OUTPUT(TTH_TEXTBOX1); + } + yy_pop_state(); + } +} + YY_BREAK +/* Force all equations to end enclosed. */ +case 200: +YY_RULE_SETUP +#line 2094 "tth.lex" +{ + if(strstr(yytext,"*")==NULL){ /* end{equation} */ + if(tth_multinum < 2) { + TTH_SCAN_STRING("}\\tth_numbereq"); + }else { + /* end of equation which needs to unincrement*/ + equatno--; + TTH_SCAN_STRING("}\\tth_endequation"); + } + }else {TTH_SCAN_STRING("}\\tth_endequation");} /* embracing essential */ +} + YY_BREAK +case 201: +#line 2106 "tth.lex" +case 202: +YY_RULE_SETUP +#line 2106 "tth.lex" +TTH_SCAN_STRING("}\\tth_endequation"); + YY_BREAK +case 203: +YY_RULE_SETUP +#line 2108 "tth.lex" +{ + strcat(eqstr,TTH_DISP3); + TTH_SCAN_STRING("(\\theequation)\\tth_endnumbered"); +} + YY_BREAK +case 204: +YY_RULE_SETUP +#line 2112 "tth.lex" +equatno--;TTH_SCAN_STRING("\\tth_endequation"); + YY_BREAK +case 205: +#line 2114 "tth.lex" +case 206: +YY_RULE_SETUP +#line 2114 "tth.lex" +{ + TTH_TEXCLOSE else{ + eqaligncell=0; + if(tth_debug&2) fprintf(stderr, + "End equation %d, %s. eqalignlog=%d, tth_eqwidth=%d\n", + equatno,yytext,eqalignlog,tth_eqwidth); + if(tth_multinum)tth_multinum=1; + { + if(eqalignlog){ + sprintf(scrstring,TTH_DISPE,tth_eqwidth); + tth_enclose(scrstring,eqstr,TTH_DISP6,eqstore); +/* tth_enclose(scrstring,eqstr,TTH_DISP4,eqstore); */ + }else{ + sprintf(scrstring,TTH_DISP1,tth_eqwidth); + if(strstr(yytext,"numb")){ + tth_enclose(scrstring,eqstr,TTH_DISP4,eqstore); + }else{ + tth_enclose(scrstring,eqstr,TTH_DISP2,eqstore); + } + } + if(tth_debug&2) fprintf(stderr, + "Leaving display eq, eqclose=%d, eqdepth=%d, tth_flev=%d\n", + eqclose,eqdepth,tth_flev); + if(eqdepth==1){ + rmkey(eqstrs,&eqdepth);/*eqdepth--;*/ + }else{ + fprintf(stderr, + "**** Error: Fatal Abnormal eqdepth %d on display equation exit, line %d\n", + eqdepth,tth_num_lines);TTH_EXIT(2); + } + if(eqclose > 0) { + fprintf(stderr, + "**** Error: Fatal Abnormal eqclose %d on Display Equation End, line %d\n", + eqclose,tth_num_lines);TTH_EXIT(3); + } + yy_pop_state(); + tth_flev=tth_flev0; /* Necessary if textstyle has been used. */ + horizmode=1; /* Make sure we now recognize \n\n */ + displaystyle=0; + *environment=0; + eqalignlog=0; + TTH_CLOSEGROUP;TTH_POP_CLOSING; + fprintf(tth_fdout,"%s\n",eqstr);*eqstr=0; + } + } +} + YY_BREAK +/* Single character fractions .*/ +case 207: +/* rule 207 can match eol */ +YY_RULE_SETUP +#line 2161 "tth.lex" +{ + if(active[eqclose]){ /* reembrace to protect active closure */ + TTH_INC_MULTI; + sprintf(scratchstring,"{%s}",yytext); + TTH_SCAN_STRING(scratchstring); + }else if((eqclose > tth_flev || !displaystyle)){ + TTH_INC_MULTI; + chscratch=yytext+strspn(yytext,"${ \t\n"); + chs2=strstr(chscratch,"\\over")+5; + sprintf(scratchstring,"%c/%c", + *(chscratch),*(chs2+strspn(chs2," \t\r\n"))); + TTH_OUTPUT(scratchstring); + }else{ /* split to prevent treatment */ + strcpy(scratchstring,yytext); + jscratch=strspn(yytext,"${ \t"); + yyless(jscratch); + *(scratchstring+jscratch)=0; + TTH_SCAN_STRING(scratchstring); + } + } + YY_BREAK +case 208: +/* rule 208 can match eol */ +YY_RULE_SETUP +#line 2182 "tth.lex" +{ + TTH_INC_MULTI; + yyless(strspn(yytext," \t\r\n")); +} + YY_BREAK +case 209: +/* rule 209 can match eol */ +YY_RULE_SETUP +#line 2186 "tth.lex" +{ + TTH_INC_MULTI; + if(tth_debug&16)fprintf(stderr, + "Over Close Group, depth=%d, eqclose=%d, levhgt=%d\n", + eqdepth,eqclose,levhgt[eqclose]); + if(levhgt[eqclose] > 1 || (eqclose > tth_flev && TTH_COMPLEX)) { + /* Remove unnecessary cell and bottoms from single cells*/ + oa_removes=b_align(eqstr,tth_debug); + tth_enclose(TTH_LEV1,eqstr,TTH_LEV2,eqstore); + }else { /* Fix a strange alignment problem. Removed 15 Oct 2003 + if((tth_istyle&1) && !strstr(yytext,"atop") && !strstr(yytext,"choose")) + tth_prefix(" ",eqstr,eqstore); */ + } + if(strstr(yytext,"atop") || strstr(yytext,"choose")) + strcat(eqstr,TTH_ATOP); + else strcat(eqstr,TTH_DIV); + mkkey(eqstr,eqstrs,&eqdepth); + *eqstr=0; + tophgt[eqclose]=levhgt[eqclose]+1; + levhgt[eqclose]=1; + if(strstr(yytext,"choose")){ + strcat(levdelim[eqclose],"("); + tth_push_depth--; + TTH_PRETEXCLOSE("\\tth_chooseclose"); + tth_push_depth++; + } + } + YY_BREAK +case 210: +YY_RULE_SETUP +#line 2213 "tth.lex" +strcpy(levdelim[eqclose+1],")"); + YY_BREAK +/*TTH_SCAN_STRING("\\right)"); doesn't work. Imbalances closures.*/ +/* End of Fraction*/ +/* Sub/p scripts. */ +/* Dont make prime a superscript, it becomes too small. + This case will not be used if we are doing a full cell (getsubsup). */ +case 211: +YY_RULE_SETUP +#line 2221 "tth.lex" +TTH_MATHI(162); + YY_BREAK +case 212: +YY_RULE_SETUP +#line 2222 "tth.lex" +{ + strcat(eqstr,TTH_SUP1);yy_push_state(exptokarg); + TTH_CCPY(expchar,TTH_SUP2); + } + YY_BREAK +case 213: +YY_RULE_SETUP +#line 2226 "tth.lex" +{ + strcat(eqstr,TTH_SUB1);yy_push_state(exptokarg); + TTH_CCPY(expchar,TTH_SUB2); + } + YY_BREAK +/* Version that uses tabular:*/ +case 214: +/* rule 214 can match eol */ +YY_RULE_SETUP +#line 2231 "tth.lex" +{ + TTH_INC_MULTI; + TTH_SCAN_STRING("\\begin{tabular}"); +} + YY_BREAK +case 215: +/* rule 215 can match eol */ +#line 2236 "tth.lex" +case 216: +/* rule 216 can match eol */ +YY_RULE_SETUP +#line 2236 "tth.lex" +{ /*border not really supported*/ + TTH_INC_MULTI; + TTH_HAL_PUSH;*halstring=0; + if(strstr(yytext,"eq") != NULL) eqalignlog++;/*make both levels 1*/ + TTH_EQA_PUSH; + /*This instead of the previous makes level 1 only. Intended for lone + \eqno, but breaks the standard layout. So don't do it.*/ + /* if(strstr(yytext,"eq") != NULL) eqalignlog++;*/ + TTH_PUSH_CLOSING; + if(strstr(yytext,"eq") == NULL) eqalignlog=0; + /*if(strstr(yytext,"eq") != NULL) eqalignlog++; else eqalignlog=0;*/ + if(tth_debug&2) { + fprintf(stderr, + "Matrix {, eqdepth=%d, eqclose=%d, eqalignlog=%d, tth_flev=%d, levdelim=%s.\n" + ,eqdepth,eqclose,eqalignlog,tth_flev,levdelim[eqclose]); + } + mkkey(eqstr,eqstrs,&eqdepth); + eqclose++; + *eqstr=0; + levhgt[eqclose]=1; + tophgt[eqclose]=0; + eqaligncell=0; + eqalignrow=0; + tth_push_depth--; + TTH_PRETEXCLOSE("\\tth_cr\\tth_matrixclose"); + tth_push_depth++; + mtrx[eqclose-1]=1; + if(tth_debug&16)fprintf(stderr,"Set Matrix: eqclose=%d,eqdepth=%d\n",eqclose,eqdepth);/**/ + } + YY_BREAK +case 217: +YY_RULE_SETUP +#line 2265 "tth.lex" +{ + if(tth_debug&16) fprintf(stderr,"Matrix close %d, levhgt=%d, rows=%d\n", + eqclose,levhgt[eqclose],eqalignrow); + if(tth_istyle&1) levhgt[eqclose]=(eqalignrow+6*(levhgt[eqclose]-1)+TTH_HGT)/6; else levhgt[eqclose]=levhgt[eqclose]+eqalignrow; + tth_prefix(eqstrs[eqdepth-1],eqstr,eqstore); + rmkey(eqstrs,&eqdepth); + if(eqalignlog){ + /* For 50% but just first line */ + tth_enclose(TTH_EQ3,eqstr,TTH_EQ2,eqstore); + }else{ + tth_enclose(TTH_EQ1,eqstr,TTH_EQ2,eqstore); + } + TTH_EQA_POP; + TTH_HAL_POP; + /* Enclose unless this is the end of an eqalign type construct. */ + if(eqaind || !eqalignlog)tth_enclose(TTH_CELL5,eqstr,TTH_CELL5,eqstore); + active[eqclose-1]=0; +} + YY_BREAK +case 218: +YY_RULE_SETUP +#line 2284 "tth.lex" +{ + TTH_TEX_FN("\\mbox{\\left\\lbrace\\matrix{#1}\\right.}#tthdrop1",1); +} + YY_BREAK +case 219: +YY_RULE_SETUP +#line 2287 "tth.lex" +{ + TTH_TEX_FN("\\left(\\matrix{#1}\\right)#tthdrop1",1); +} + YY_BREAK +/* textboxes. Because of problems as subscript, removed this to builtins. + \\textrm | + but this does not generally seem to be a good plan. + But the approach below breaks with unenclosed subscript texts. + */ +case 220: +/* rule 220 can match eol */ +#line 2297 "tth.lex" +case 221: +/* rule 221 can match eol */ +#line 2298 "tth.lex" +case 222: +/* rule 222 can match eol */ +#line 2299 "tth.lex" +case 223: +/* rule 223 can match eol */ +#line 2300 "tth.lex" +case 224: +/* rule 224 can match eol */ +YY_RULE_SETUP +#line 2300 "tth.lex" +{ + TTH_INC_MULTI; + strcpy(scratchstring,"\\tth_tbone");strcat(scratchstring,"\\rm "); TTH_SCAN_STRING("\\tth_tbox"); +} + YY_BREAK +case 225: +YY_RULE_SETUP +#line 2304 "tth.lex" +{ + strcpy(scratchstring,"\\tth_tbone");strcat(scratchstring,"\\bf "); TTH_SCAN_STRING("\\tth_tbox"); +} + YY_BREAK +case 226: +#line 2308 "tth.lex" +case 227: +YY_RULE_SETUP +#line 2308 "tth.lex" +{ + strcpy(scratchstring,"\\tth_tbone");strcat(scratchstring,"\\it "); TTH_SCAN_STRING("\\tth_tbox"); +} + YY_BREAK +case 228: +YY_RULE_SETUP +#line 2311 "tth.lex" +{ + strcpy(scratchstring,"\\tth_tbone");strcat(scratchstring,"\\tt "); TTH_SCAN_STRING("\\tth_tbox"); +} + YY_BREAK +case 229: +YY_RULE_SETUP +#line 2314 "tth.lex" +{ + strcpy(scratchstring,"\\tth_tbone");strcat(scratchstring,"\\sffamily "); TTH_SCAN_STRING("\\tth_tbox"); +} + YY_BREAK +case 230: +YY_RULE_SETUP +#line 2317 "tth.lex" +{ + strcpy(scratchstring,"\\tth_tbone");strcat(scratchstring,"\\scshape "); TTH_SCAN_STRING("\\tth_tbox"); +} + YY_BREAK +case 231: +YY_RULE_SETUP +#line 2320 "tth.lex" +{ + if(tth_debug&2)fprintf(stderr, + "Start textbox. eqclose %d. push_depth %d. Line %d\n" + ,eqclose,tth_push_depth,tth_num_lines); + if(!displaystyle) yy_push_state(textbox); + TTH_SWAP(scratchstring); + /* This had to be moved into tth_tbone */ + /*TTH_PRETEXCLOSE("\\tth_boxclose");*/ +} + YY_BREAK +case 232: +YY_RULE_SETUP +#line 2329 "tth.lex" +{ + if(tth_debug&2)fprintf(stderr, + "Start textbox exptokarg. Displaystyle %d. eqclose %d, push_depth %d, Line %d\n" + ,displaystyle,eqclose,tth_push_depth,tth_num_lines); + yy_pop_state(); + if(!displaystyle)yy_push_state(textbox); + yy_push_state(exptokarg); + TTH_SWAP(scratchstring); +} + YY_BREAK +case 233: +YY_RULE_SETUP +#line 2338 "tth.lex" +{ /* box closure*/ + if(tth_debug&2) fprintf(stderr,"Box closure, eqclose=%d\n",eqclose); + if(!displaystyle) yy_pop_state(); /* textbox state end */ + } + YY_BREAK +case 234: +YY_RULE_SETUP +#line 2342 "tth.lex" +{ + if(tth_debug&8)fprintf(stderr,"tbone at push_depth %d\n",tth_push_depth); + TTH_OUTPUT(TTH_TEXTBOX1); + tth_push_depth--;TTH_PRETEXCLOSE("\\tth_boxclose");tth_push_depth++; +} + YY_BREAK +case 235: +YY_RULE_SETUP +#line 2347 "tth.lex" +{GET_DIMEN;} /* Override new handling */ + YY_BREAK +case 236: +#line 2350 "tth.lex" +case 237: +#line 2351 "tth.lex" +case 238: +YY_RULE_SETUP +#line 2351 "tth.lex" +{ + /* Deal with single $ or inline in display equations or boxes.*/ + if(displaystyle==1){ /* Open inline in box enclose it.*/ + if(tth_debug&2)fprintf(stderr,"Inline inside displaystyle.\n"); + TTH_SCAN_STRING("{$"); + displaystyle++; + }else if(displaystyle==2){ + if(!strstr(tth_font_open[tth_push_depth],TTH_ITAL1)){ + strcat(tth_font_open[tth_push_depth],tth_font_open[0]); + strcat(tth_font_close[tth_push_depth],tth_font_close[0]); + } + displaystyle++; + }else if(displaystyle==3){ /* End enclosure inserted. */ + if(tth_debug&2)fprintf(stderr,"End Inline inside displaystyle.\n"); + TTH_SCAN_STRING("}"); + displaystyle=1; + }else if(strstr(tth_texclose[tth_push_depth],"tth_boxclose")) { + if(tth_debug&2) fprintf(stderr,"Inline inside box.\n"); + if(!strstr(tth_font_open[tth_push_depth],TTH_ITAL1)){ + strcat(tth_font_open[tth_push_depth],tth_font_open[0]); + strcat(tth_font_close[tth_push_depth],tth_font_close[0]); + } + }else{ + TTH_SCAN_STRING("}\\tth_endinline"); + } + } + YY_BREAK +/* Math greek and symbols */ +case 239: +YY_RULE_SETUP +#line 2378 "tth.lex" +TTH_MATHS("a"); + YY_BREAK +case 240: +YY_RULE_SETUP +#line 2379 "tth.lex" +TTH_MATHS("b"); + YY_BREAK +case 241: +YY_RULE_SETUP +#line 2380 "tth.lex" +TTH_MATHS("g"); + YY_BREAK +case 242: +YY_RULE_SETUP +#line 2381 "tth.lex" +TTH_MATHS("d"); + YY_BREAK +case 243: +YY_RULE_SETUP +#line 2382 "tth.lex" +TTH_MATHS("e"); + YY_BREAK +/* \\varepsilon{SP}* TTH_MATHS("e"); */ +case 244: +YY_RULE_SETUP +#line 2384 "tth.lex" +{ + if(tth_unicode){ + TTH_MATHI(129); /*Kludge for coding translation */ + }else{ + TTH_MATHS("e"); + } +} + YY_BREAK +case 245: +YY_RULE_SETUP +#line 2391 "tth.lex" +TTH_MATHS("z"); + YY_BREAK +case 246: +YY_RULE_SETUP +#line 2392 "tth.lex" +TTH_MATHS("h") + YY_BREAK +case 247: +YY_RULE_SETUP +#line 2393 "tth.lex" +TTH_MATHS("q"); + YY_BREAK +case 248: +YY_RULE_SETUP +#line 2394 "tth.lex" +TTH_MATHS("J"); + YY_BREAK +case 249: +YY_RULE_SETUP +#line 2395 "tth.lex" +TTH_MATHS("i"); + YY_BREAK +case 250: +YY_RULE_SETUP +#line 2396 "tth.lex" +TTH_MATHS("k"); + YY_BREAK +case 251: +YY_RULE_SETUP +#line 2397 "tth.lex" +TTH_MATHS("l"); + YY_BREAK +case 252: +YY_RULE_SETUP +#line 2398 "tth.lex" +TTH_MATHS("l"); + YY_BREAK +case 253: +YY_RULE_SETUP +#line 2399 "tth.lex" +TTH_MATHS("m"); + YY_BREAK +case 254: +YY_RULE_SETUP +#line 2400 "tth.lex" +TTH_MATHS("n"); + YY_BREAK +case 255: +YY_RULE_SETUP +#line 2401 "tth.lex" +TTH_MATHS("x"); + YY_BREAK +case 256: +YY_RULE_SETUP +#line 2402 "tth.lex" +TTH_MATHS("p"); + YY_BREAK +case 257: +YY_RULE_SETUP +#line 2403 "tth.lex" +TTH_MATHS("v"); + YY_BREAK +case 258: +YY_RULE_SETUP +#line 2404 "tth.lex" +TTH_MATHS("r"); + YY_BREAK +case 259: +YY_RULE_SETUP +#line 2405 "tth.lex" +TTH_MATHS("r"); + YY_BREAK +case 260: +YY_RULE_SETUP +#line 2406 "tth.lex" +TTH_MATHS("s"); + YY_BREAK +case 261: +YY_RULE_SETUP +#line 2407 "tth.lex" +TTH_MATHS("V"); + YY_BREAK +case 262: +YY_RULE_SETUP +#line 2408 "tth.lex" +TTH_MATHS("t"); + YY_BREAK +case 263: +YY_RULE_SETUP +#line 2409 "tth.lex" +TTH_MATHS("u"); + YY_BREAK +case 264: +YY_RULE_SETUP +#line 2410 "tth.lex" +TTH_MATHS("f"); + YY_BREAK +case 265: +YY_RULE_SETUP +#line 2411 "tth.lex" +TTH_MATHS("j"); + YY_BREAK +case 266: +YY_RULE_SETUP +#line 2412 "tth.lex" +TTH_MATHS("c"); + YY_BREAK +case 267: +YY_RULE_SETUP +#line 2413 "tth.lex" +TTH_MATHS("y"); + YY_BREAK +case 268: +YY_RULE_SETUP +#line 2414 "tth.lex" +TTH_MATHS("w"); + YY_BREAK +case 269: +YY_RULE_SETUP +#line 2415 "tth.lex" +TTH_MATHS("G"); + YY_BREAK +case 270: +YY_RULE_SETUP +#line 2416 "tth.lex" +TTH_MATHS("D"); + YY_BREAK +case 271: +YY_RULE_SETUP +#line 2417 "tth.lex" +TTH_MATHS("Q"); + YY_BREAK +case 272: +YY_RULE_SETUP +#line 2418 "tth.lex" +TTH_MATHS("L"); + YY_BREAK +case 273: +YY_RULE_SETUP +#line 2419 "tth.lex" +TTH_MATHS("X"); + YY_BREAK +case 274: +YY_RULE_SETUP +#line 2420 "tth.lex" +TTH_MATHS("P"); + YY_BREAK +case 275: +YY_RULE_SETUP +#line 2421 "tth.lex" +TTH_MATHS("S"); + YY_BREAK +case 276: +YY_RULE_SETUP +#line 2422 "tth.lex" +TTH_MATHS("U"); + YY_BREAK +case 277: +YY_RULE_SETUP +#line 2423 "tth.lex" +TTH_MATHS("F"); + YY_BREAK +case 278: +YY_RULE_SETUP +#line 2424 "tth.lex" +TTH_MATHS("Y"); + YY_BREAK +case 279: +YY_RULE_SETUP +#line 2425 "tth.lex" +TTH_MATHS("W"); + YY_BREAK +case 280: +YY_RULE_SETUP +#line 2427 "tth.lex" +TTH_MATHC("l"); + YY_BREAK +case 281: +YY_RULE_SETUP +#line 2428 "tth.lex" +TTH_MATHI(192); + YY_BREAK +case 282: +YY_RULE_SETUP +#line 2429 "tth.lex" +TTH_MATHS("i"); + YY_BREAK +case 283: +YY_RULE_SETUP +#line 2430 "tth.lex" +TTH_MATHC("j"); + YY_BREAK +case 284: +YY_RULE_SETUP +#line 2431 "tth.lex" +TTH_MATHI(195); + YY_BREAK +case 285: +#line 2433 "tth.lex" +case 286: +YY_RULE_SETUP +#line 2433 "tth.lex" +TTH_MATHI(194); + YY_BREAK +case 287: +#line 2435 "tth.lex" +case 288: +YY_RULE_SETUP +#line 2435 "tth.lex" +TTH_MATHI(193); + YY_BREAK +case 289: +YY_RULE_SETUP +#line 2436 "tth.lex" +TTH_MATHI(182); + YY_BREAK +case 290: +YY_RULE_SETUP +#line 2437 "tth.lex" +TTH_MATHI(165); + YY_BREAK +case 291: +YY_RULE_SETUP +#line 2438 "tth.lex" +TTH_MATHI(208); + YY_BREAK +case 292: +YY_RULE_SETUP +#line 2439 "tth.lex" +TTH_MATHI(162); + YY_BREAK +case 293: +YY_RULE_SETUP +#line 2440 "tth.lex" +TTH_MATHI(162); + YY_BREAK +case 294: +YY_RULE_SETUP +#line 2441 "tth.lex" +TTH_MATHI(198); + YY_BREAK +case 295: +YY_RULE_SETUP +#line 2442 "tth.lex" +TTH_MATHI(209); + YY_BREAK +case 296: +YY_RULE_SETUP +#line 2443 "tth.lex" +TTH_MATHI(214); + YY_BREAK +case 297: +#line 2445 "tth.lex" +case 298: +YY_RULE_SETUP +#line 2445 "tth.lex" +TTH_MATHS("|"); + YY_BREAK +case 299: +#line 2447 "tth.lex" +case 300: +#line 2448 "tth.lex" +case 301: +YY_RULE_SETUP +#line 2448 "tth.lex" +TTH_MATHS("||"); + YY_BREAK +case 302: +YY_RULE_SETUP +#line 2449 "tth.lex" +TTH_MATHC("["); + YY_BREAK +case 303: +YY_RULE_SETUP +#line 2450 "tth.lex" +TTH_MATHC("]"); + YY_BREAK +case 304: +YY_RULE_SETUP +#line 2451 "tth.lex" +TTH_MATHC("{"); + YY_BREAK +case 305: +YY_RULE_SETUP +#line 2452 "tth.lex" +TTH_MATHC("}"); + YY_BREAK +case 306: +YY_RULE_SETUP +#line 2453 "tth.lex" +TTH_MATHI(249); + YY_BREAK +case 307: +YY_RULE_SETUP +#line 2454 "tth.lex" +TTH_MATHI(251); + YY_BREAK +case 308: +YY_RULE_SETUP +#line 2455 "tth.lex" +TTH_MATHI(233); + YY_BREAK +case 309: +YY_RULE_SETUP +#line 2456 "tth.lex" +TTH_MATHI(235); + YY_BREAK +case 310: +YY_RULE_SETUP +#line 2457 "tth.lex" +TTH_MATHI(225); + YY_BREAK +case 311: +YY_RULE_SETUP +#line 2458 "tth.lex" +TTH_MATHI(241); + YY_BREAK +case 312: +#line 2460 "tth.lex" +case 313: +#line 2461 "tth.lex" +case 314: +YY_RULE_SETUP +#line 2461 "tth.lex" +TTH_MATHC("\\"); + YY_BREAK +case 315: +YY_RULE_SETUP +#line 2462 "tth.lex" +TTH_MATHS("\""); + YY_BREAK +case 316: +YY_RULE_SETUP +#line 2463 "tth.lex" +TTH_MATHS("$"); + YY_BREAK +case 317: +YY_RULE_SETUP +#line 2464 "tth.lex" +TTH_MATHI(216); + YY_BREAK +case 318: +YY_RULE_SETUP +#line 2465 "tth.lex" +TTH_MATHI(167); + YY_BREAK +case 319: +YY_RULE_SETUP +#line 2466 "tth.lex" +TTH_MATHI(168); + YY_BREAK +case 320: +YY_RULE_SETUP +#line 2467 "tth.lex" +TTH_MATHI(169); + YY_BREAK +case 321: +YY_RULE_SETUP +#line 2468 "tth.lex" +TTH_MATHI(170); + YY_BREAK +case 322: +YY_RULE_SETUP +#line 2470 "tth.lex" +TTH_MATHS("-"); + YY_BREAK +/*Risky. \+ TTH_MATHS("+"); */ +case 323: +YY_RULE_SETUP +#line 2472 "tth.lex" +TTH_MATHC("T"); + YY_BREAK +case 324: +#line 2474 "tth.lex" +case 325: +YY_RULE_SETUP +#line 2474 "tth.lex" +TTH_MATHS("^"); + YY_BREAK +case 326: +YY_RULE_SETUP +#line 2475 "tth.lex" +TTH_MATHI(176); + YY_BREAK +case 327: +YY_RULE_SETUP +#line 2476 "tth.lex" +TTH_MATHC("~"); + YY_BREAK +case 328: +YY_RULE_SETUP +#line 2477 "tth.lex" +TTH_MATHS(" ~ "); + YY_BREAK +case 329: +#line 2479 "tth.lex" +case 330: +YY_RULE_SETUP +#line 2479 "tth.lex" +TTH_MATHC(" mod "); + YY_BREAK +case 331: +YY_RULE_SETUP +#line 2480 "tth.lex" +TTH_MATHC(" < "); + YY_BREAK +case 332: +YY_RULE_SETUP +#line 2481 "tth.lex" +TTH_MATHC(" > "); + YY_BREAK +case 333: +#line 2483 "tth.lex" +case 334: +YY_RULE_SETUP +#line 2483 "tth.lex" +TTH_MATHC(" << "); + YY_BREAK +case 335: +#line 2485 "tth.lex" +case 336: +YY_RULE_SETUP +#line 2485 "tth.lex" +TTH_MATHC(" >> "); + YY_BREAK +case 337: +YY_RULE_SETUP +#line 2486 "tth.lex" +TTH_MATHS("*"); + YY_BREAK +case 338: +YY_RULE_SETUP +#line 2487 "tth.lex" +TTH_MATHS("*"); + YY_BREAK +case 339: +YY_RULE_SETUP +#line 2488 "tth.lex" +TTH_MATHI(224); + YY_BREAK +case 340: +YY_RULE_SETUP +#line 2489 "tth.lex" +TTH_MATHI(183); + YY_BREAK +case 341: +YY_RULE_SETUP +#line 2490 "tth.lex" +TTH_MATHC("·"); + YY_BREAK +/*\\cdot TTH_MATHI(215);*/ +case 342: +YY_RULE_SETUP +#line 2492 "tth.lex" +TTH_MATHI(200); + YY_BREAK +case 343: +YY_RULE_SETUP +#line 2493 "tth.lex" +TTH_MATHI(199); + YY_BREAK +case 344: +YY_RULE_SETUP +#line 2494 "tth.lex" +TTH_MATHI(177); + YY_BREAK +case 345: +YY_RULE_SETUP +#line 2495 "tth.lex" +TTH_MATHS("-±"); + YY_BREAK +case 346: +#line 2497 "tth.lex" +case 347: +YY_RULE_SETUP +#line 2497 "tth.lex" +TTH_MATHI(218); + YY_BREAK +case 348: +#line 2499 "tth.lex" +case 349: +YY_RULE_SETUP +#line 2499 "tth.lex" +TTH_MATHI(217); + YY_BREAK +case 350: +YY_RULE_SETUP +#line 2500 "tth.lex" +TTH_MATHI(197); + YY_BREAK +case 351: +YY_RULE_SETUP +#line 2501 "tth.lex" +TTH_MATHI(196); + YY_BREAK +case 352: +YY_RULE_SETUP +#line 2502 "tth.lex" +TTH_MATHI(198); + YY_BREAK +case 353: +/* rule 353 can match eol */ +YY_RULE_SETUP +#line 2504 "tth.lex" +TTH_INC_MULTI;/* Don't mess up if it is in wrong place*/ + YY_BREAK +case 354: +YY_RULE_SETUP +#line 2505 "tth.lex" +{ + if(eqclose <= tth_flev-1 && displaystyle){ + /*If we end with a CELL3, cut it off. */ + if( ((jscratch=strlen(eqstr)) >= (js2=strlen(TTH_CELL3))) && + strcmp(eqstr+jscratch-js2,TTH_CELL3) == 0){ + *(eqstr+jscratch-js2)=0; + } + strcat(eqstr,TTH_CELL_L); + if(levhgt[eqclose] == 1)levhgt[eqclose]=2; + if(hgt < 2) hgt=2; + yy_push_state(getsubp); + } +} + YY_BREAK +case 355: +YY_RULE_SETUP +#line 2519 "tth.lex" +{ + if(eqclose > tth_flev-1 || !displaystyle ){ + TTH_MATHI(242); /* TTH_OUTPUT(" "); perhaps not */ + }else{ + delimit("ò",2,eqchar); + strcat(eqstr,eqchar); + *eqchar=0; + if(levhgt[eqclose] == 1)levhgt[eqclose]=2; + hgt=3; + yy_push_state(getsubp); + } + } + YY_BREAK +case 356: +#line 2532 "tth.lex" +case 357: +YY_RULE_SETUP +#line 2532 "tth.lex" +{ + if(eqclose > tth_flev-1){ + TTH_MATHC("(");TTH_MATHI(242);TTH_MATHC(")"); + }else{ + TTH_OINT; + yy_push_state(getsubp); + } + } + YY_BREAK +case 358: +YY_RULE_SETUP +#line 2541 "tth.lex" +TTH_LIMITOP(199); + YY_BREAK +case 359: +YY_RULE_SETUP +#line 2542 "tth.lex" +TTH_LIMITOP(200); + YY_BREAK +case 360: +YY_RULE_SETUP +#line 2543 "tth.lex" +TTH_LIMITOP(218); + YY_BREAK +case 361: +YY_RULE_SETUP +#line 2544 "tth.lex" +TTH_LIMITOP(217); + YY_BREAK +case 362: +YY_RULE_SETUP +#line 2545 "tth.lex" +TTH_LIMITOP(196); + YY_BREAK +case 363: +YY_RULE_SETUP +#line 2546 "tth.lex" +TTH_LIMITOP(197); + YY_BREAK +case 364: +YY_RULE_SETUP +#line 2547 "tth.lex" +TTH_LIMITOP(229); + YY_BREAK +case 365: +YY_RULE_SETUP +#line 2548 "tth.lex" +TTH_LIMITOP(213); + YY_BREAK +case 366: +YY_RULE_SETUP +#line 2549 "tth.lex" +TTH_LIMITOP(242); + YY_BREAK +case 367: +YY_RULE_SETUP +#line 2550 "tth.lex" +/* Drop a limits command if not combined */ + YY_BREAK +case 368: +YY_RULE_SETUP +#line 2552 "tth.lex" +TTH_MATHI(199); + YY_BREAK +case 369: +YY_RULE_SETUP +#line 2553 "tth.lex" +TTH_MATHI(200); + YY_BREAK +case 370: +YY_RULE_SETUP +#line 2554 "tth.lex" +TTH_MATHI(218); + YY_BREAK +case 371: +YY_RULE_SETUP +#line 2555 "tth.lex" +TTH_MATHI(217); + YY_BREAK +case 372: +YY_RULE_SETUP +#line 2556 "tth.lex" +TTH_MATHI(196); + YY_BREAK +case 373: +YY_RULE_SETUP +#line 2557 "tth.lex" +TTH_MATHI(197); + YY_BREAK +case 374: +YY_RULE_SETUP +#line 2558 "tth.lex" +TTH_MATHI(229); + YY_BREAK +case 375: +YY_RULE_SETUP +#line 2559 "tth.lex" +TTH_MATHI(213); + YY_BREAK +case 376: +YY_RULE_SETUP +#line 2561 "tth.lex" +TTH_MATHI(184); + YY_BREAK +case 377: +YY_RULE_SETUP +#line 2562 "tth.lex" +TTH_MATHC("×"); + YY_BREAK +/*\\times TTH_MATHI(180);*/ +case 378: +YY_RULE_SETUP +#line 2564 "tth.lex" +TTH_MATHC(" <~"); + YY_BREAK +case 379: +YY_RULE_SETUP +#line 2565 "tth.lex" +TTH_MATHC(" >~"); + YY_BREAK +case 380: +YY_RULE_SETUP +#line 2567 "tth.lex" +TTH_MATHC(" ");TTH_MATHC("|");TTH_MATHC(" "); + YY_BREAK +case 381: +YY_RULE_SETUP +#line 2568 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(163);TTH_MATHC(" "); + YY_BREAK +case 382: +YY_RULE_SETUP +#line 2569 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(163);TTH_MATHC(" "); + YY_BREAK +case 383: +YY_RULE_SETUP +#line 2570 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(179);TTH_MATHC(" "); + YY_BREAK +case 384: +YY_RULE_SETUP +#line 2571 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(179);TTH_MATHC(" "); + YY_BREAK +case 385: +YY_RULE_SETUP +#line 2572 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(186);TTH_MATHC(" "); + YY_BREAK +case 386: +YY_RULE_SETUP +#line 2573 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(187);TTH_MATHC(" "); + YY_BREAK +case 387: +#line 2575 "tth.lex" +case 388: +YY_RULE_SETUP +#line 2575 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(185);TTH_MATHC(" "); + YY_BREAK +case 389: +YY_RULE_SETUP +#line 2576 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(185);TTH_MATHC(" "); + YY_BREAK +case 390: +YY_RULE_SETUP +#line 2577 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(203);TTH_MATHC(" "); + YY_BREAK +case 391: +YY_RULE_SETUP +#line 2578 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(204);TTH_MATHC(" "); + YY_BREAK +case 392: +YY_RULE_SETUP +#line 2579 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(205);TTH_MATHC(" "); + YY_BREAK +case 393: +YY_RULE_SETUP +#line 2580 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(201);TTH_MATHC(" "); + YY_BREAK +case 394: +YY_RULE_SETUP +#line 2581 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(202);TTH_MATHC(" "); + YY_BREAK +case 395: +YY_RULE_SETUP +#line 2582 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(206);TTH_MATHC(" "); + YY_BREAK +case 396: +#line 2584 "tth.lex" +case 397: +YY_RULE_SETUP +#line 2584 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(207);TTH_MATHC(" "); + YY_BREAK +case 398: +#line 2586 "tth.lex" +case 399: +YY_RULE_SETUP +#line 2586 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(39);TTH_MATHC(" "); + YY_BREAK +case 400: +#line 2588 "tth.lex" +case 401: +YY_RULE_SETUP +#line 2588 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(64);TTH_MATHC(" "); + YY_BREAK +case 402: +YY_RULE_SETUP +#line 2589 "tth.lex" +TTH_MATHC(" ");TTH_MATHI(181);TTH_MATHC(" "); + YY_BREAK +case 403: +#line 2591 "tth.lex" +case 404: +YY_RULE_SETUP +#line 2591 "tth.lex" +TTH_MATHI(172); + YY_BREAK +case 405: +YY_RULE_SETUP +#line 2592 "tth.lex" +TTH_MATHI(172); + YY_BREAK +/* A slight kludge */ +case 406: +#line 2595 "tth.lex" +case 407: +#line 2596 "tth.lex" +case 408: +#line 2597 "tth.lex" +case 409: +YY_RULE_SETUP +#line 2597 "tth.lex" +TTH_MATHI(174); + YY_BREAK +case 410: +YY_RULE_SETUP +#line 2598 "tth.lex" +TTH_MATHI(174); + YY_BREAK +case 411: +YY_RULE_SETUP +#line 2599 "tth.lex" +TTH_MATHI(173); + YY_BREAK +case 412: +YY_RULE_SETUP +#line 2600 "tth.lex" +TTH_MATHI(175); + YY_BREAK +case 413: +YY_RULE_SETUP +#line 2601 "tth.lex" +TTH_MATHC(yytext); + YY_BREAK +case 414: +YY_RULE_SETUP +#line 2602 "tth.lex" +TTH_MATHC(yytext); + YY_BREAK +case 415: +#line 2604 "tth.lex" +case 416: +YY_RULE_SETUP +#line 2604 "tth.lex" +TTH_MATHI(171); + YY_BREAK +case 417: +YY_RULE_SETUP +#line 2605 "tth.lex" +TTH_MATHI(220); + YY_BREAK +case 418: +YY_RULE_SETUP +#line 2606 "tth.lex" +TTH_MATHI(220); + YY_BREAK +case 419: +YY_RULE_SETUP +#line 2607 "tth.lex" +TTH_MATHI(222); + YY_BREAK +case 420: +YY_RULE_SETUP +#line 2608 "tth.lex" +TTH_MATHI(222); + YY_BREAK +case 421: +YY_RULE_SETUP +#line 2609 "tth.lex" +TTH_MATHC(yytext); + YY_BREAK +case 422: +#line 2611 "tth.lex" +/* moved before if code \\iff TTH_MATHI(219); */ +case 423: +YY_RULE_SETUP +#line 2612 "tth.lex" +TTH_MATHI(219); + YY_BREAK +case 424: +YY_RULE_SETUP +#line 2613 "tth.lex" +TTH_MATHI(221); + YY_BREAK +case 425: +YY_RULE_SETUP +#line 2614 "tth.lex" +TTH_MATHI(223); + YY_BREAK +/* \\dots{SP}* TTH_MATHI(188); Not in math mode */ +case 426: +YY_RULE_SETUP +#line 2616 "tth.lex" +TTH_MATHI(188); + YY_BREAK +case 427: +YY_RULE_SETUP +#line 2617 "tth.lex" +TTH_MATHI(188); + YY_BREAK +case 428: +YY_RULE_SETUP +#line 2618 "tth.lex" +TTH_MATHI(188); + YY_BREAK +case 429: +YY_RULE_SETUP +#line 2619 "tth.lex" +TTH_MATHI(188); + YY_BREAK +case 430: +YY_RULE_SETUP +#line 2620 "tth.lex" +TTH_MATHI(188); + YY_BREAK +case 431: +YY_RULE_SETUP +#line 2621 "tth.lex" +TTH_OUTPUT("···"); + YY_BREAK +case 432: +YY_RULE_SETUP +#line 2622 "tth.lex" +TTH_OUTPUT(":"); + YY_BREAK +case 433: +YY_RULE_SETUP +#line 2623 "tth.lex" +TTH_MATHC("@"); + YY_BREAK +case 434: +#line 2625 "tth.lex" +case 435: +YY_RULE_SETUP +#line 2625 "tth.lex" +TTH_OUTPUT(TTH_DAG); + YY_BREAK +case 436: +#line 2627 "tth.lex" +case 437: +YY_RULE_SETUP +#line 2627 "tth.lex" +TTH_OUTPUT(TTH_DDAG); + YY_BREAK +case 438: +YY_RULE_SETUP +#line 2629 "tth.lex" +TTH_MATHC("arccos"); + YY_BREAK +case 439: +YY_RULE_SETUP +#line 2630 "tth.lex" +TTH_MATHC("arcsin"); + YY_BREAK +case 440: +YY_RULE_SETUP +#line 2631 "tth.lex" +TTH_MATHC("arctan"); + YY_BREAK +case 441: +YY_RULE_SETUP +#line 2632 "tth.lex" +TTH_MATHC("arg"); + YY_BREAK +case 442: +YY_RULE_SETUP +#line 2633 "tth.lex" +TTH_MATHC("cos"); + YY_BREAK +case 443: +YY_RULE_SETUP +#line 2634 "tth.lex" +TTH_MATHC("cosh"); + YY_BREAK +case 444: +YY_RULE_SETUP +#line 2635 "tth.lex" +TTH_MATHC("cot"); + YY_BREAK +case 445: +YY_RULE_SETUP +#line 2636 "tth.lex" +TTH_MATHC("coth"); + YY_BREAK +case 446: +YY_RULE_SETUP +#line 2637 "tth.lex" +TTH_MATHC("csc"); + YY_BREAK +/* \\deg{SP}* TTH_MATHC("°"); Incorrect TeX */ +case 447: +YY_RULE_SETUP +#line 2639 "tth.lex" +TTH_MATHC("deg"); + YY_BREAK +case 448: +YY_RULE_SETUP +#line 2640 "tth.lex" +TTH_MATHC("dim"); + YY_BREAK +case 449: +YY_RULE_SETUP +#line 2641 "tth.lex" +TTH_MATHC("exp"); + YY_BREAK +case 450: +YY_RULE_SETUP +#line 2642 "tth.lex" +TTH_MATHC("hom"); + YY_BREAK +case 451: +YY_RULE_SETUP +#line 2643 "tth.lex" +TTH_MATHC("ker"); + YY_BREAK +case 452: +YY_RULE_SETUP +#line 2644 "tth.lex" +TTH_MATHC("lg"); + YY_BREAK +case 453: +YY_RULE_SETUP +#line 2645 "tth.lex" +TTH_MATHC("ln"); + YY_BREAK +case 454: +YY_RULE_SETUP +#line 2646 "tth.lex" +TTH_MATHC("log"); + YY_BREAK +case 455: +YY_RULE_SETUP +#line 2647 "tth.lex" +TTH_MATHC("sec"); + YY_BREAK +case 456: +YY_RULE_SETUP +#line 2648 "tth.lex" +TTH_MATHC("sin"); + YY_BREAK +case 457: +YY_RULE_SETUP +#line 2649 "tth.lex" +TTH_MATHC("sinh"); + YY_BREAK +case 458: +YY_RULE_SETUP +#line 2650 "tth.lex" +TTH_MATHC("tan"); + YY_BREAK +case 459: +YY_RULE_SETUP +#line 2651 "tth.lex" +TTH_MATHC("tanh"); + YY_BREAK +case 460: +#line 2654 "tth.lex" +case 461: +#line 2655 "tth.lex" +case 462: +#line 2656 "tth.lex" +case 463: +#line 2657 "tth.lex" +case 464: +#line 2658 "tth.lex" +case 465: +#line 2659 "tth.lex" +case 466: +#line 2660 "tth.lex" +case 467: +#line 2661 "tth.lex" +case 468: +#line 2662 "tth.lex" +case 469: +YY_RULE_SETUP +#line 2662 "tth.lex" +{ + if(strstr(yytext,"nolimit")){js2=0;}else{js2=1;} + *(yytext+1+strcspn(yytext+1," \\"))=0; + if(eqclose >tth_flev-1 || js2==0){ TTH_MATHC(yytext+1); + }else{ + strcat(eqstr,TTH_CELL3); + strcat(eqlimited,yytext+1); + oa_removes=0; + yy_push_state(getsubp); + if(levhgt[eqclose] == 1) levhgt[eqclose]=2; /* Force fraction closure */ + } + } + YY_BREAK +case 470: +/* rule 470 can match eol */ +#line 2675 "tth.lex" +case 471: +/* rule 471 can match eol */ +YY_RULE_SETUP +#line 2675 "tth.lex" +{ + if(eqclose > tth_flev-1 || !displaystyle ){ + unput('{'); + }else{ + TTH_INC_MULTI; + strcat(eqstr,TTH_CELL3); + mkkey(eqstr,eqstrs,&eqdepth); + eqclose++; + if(tth_flev<0)tth_flev=tth_flev-99; + TTH_PUSH_CLOSING; + active[eqclose-1]=30; + /*TTH_PRETEXCLOSE("\\tth_eqlimited");*/ + oa_removes=0; + if(*(yytext+1) == 'o'){ + TTH_CCPY(closing,TTH_OBRB); + strcpy(eqstr,TTH_OBR); + }else if(*(yytext+1) == 'u'){ + TTH_CCPY(closing,TTH_OBR); + strcpy(eqstr,TTH_OBRB); + }else { + strcpy(eqstr,""); + unput(' '); + } + mkkey(eqstr,eqstrs,&eqdepth); + *eqstr=0; + tophgt[eqclose]=1; + levhgt[eqclose]=1; + active[eqclose]=1; + unput('{'); + } +} + YY_BREAK +case 472: +YY_RULE_SETUP +#line 2706 "tth.lex" +{ /* not done eqlimited section for mathop, overbrace */ + if(tth_debug&2)fprintf(stderr,"Mathop eqlimited:%s\n",eqstr); + if(strlen(eqlimited)+strlen(eqstr)< TTH_DLEN) { + strcat(eqlimited,eqstr); + if(tth_debug&2)fprintf(stderr,"EQLIMITED=||%s||\n",eqlimited); + }else{ + fprintf(stderr, + "Error: Fatal! Exceeded eqlimited storage. Over/underbrace too long.\n"); + TTH_EXIT(5); + } + *eqstr=0; + /*strcpy(eqstr,eqstrs[eqdepth-1]);*/ + yy_push_state(getsubp); /*Does not work here */ + if(levhgt[eqclose] == 1)levhgt[eqclose]=2; /* Force fraction closure */ + /*active[eqclose-1]=0;*/ +} + YY_BREAK +/* end of symbols */ +case 473: +YY_RULE_SETUP +#line 2724 "tth.lex" +/* Nothing needs doing */ + YY_BREAK +case 474: +YY_RULE_SETUP +#line 2725 "tth.lex" +TTH_SWAP("\\buildrel\\rightarrow\\over "); + YY_BREAK +case 475: +YY_RULE_SETUP +#line 2726 "tth.lex" +TTH_SWAP("\\buildrel\\leftarrow\\over "); + YY_BREAK +/* Above accents expressed with braces. Removed {WSP} 11 Apr */ +case 476: +YY_RULE_SETUP +#line 2729 "tth.lex" +{ /* single character bar; convert to \sar */ + *(yytext+1)='s'; + TTH_SCAN_STRING(yytext); + } + YY_BREAK +case 477: +#line 2734 "tth.lex" +case 478: +#line 2735 "tth.lex" +case 479: +#line 2736 "tth.lex" +case 480: +#line 2737 "tth.lex" +case 481: +#line 2738 "tth.lex" +case 482: +#line 2739 "tth.lex" +case 483: +#line 2740 "tth.lex" +case 484: +YY_RULE_SETUP +#line 2740 "tth.lex" +{ + if(tth_debug&2) { + fprintf(stderr,"Start Overaccent {, eqdepth=%d, eqclose=%d, tth_flev=%d, levdelim=%s.\n",eqdepth,eqclose,tth_flev,levdelim[eqclose]); + } + if(*(yytext+2)=='d') *(yytext+1)='2'; + if(strstr(yytext,"wide")==yytext+1) yytext=yytext+4; /* skip wide */ + if(eqclose > tth_flev && *(yytext+1)=='q'){TTH_OUTPUT(scratchstring);} + if(eqclose > tth_flev && tth_istyle&2 && *(yytext+1)!='q'){ + /* Testing of stylesheet aproach for inline use: -w2 not Netscape. */ + switch(*(yytext+1)){ + case 'h': TTH_OUTPUT("");TTH_MATHI(217); + TTH_OUTPUT("");break; + case 't':TTH_OUTPUT("~");break; + case 'o': case 'b': case 's': + TTH_OUTPUT("");TTH_MATHI(190); + TTH_OUTPUT("");break; + case 'd':TTH_OUTPUT("· ");break; + case '2':TTH_OUTPUT("·· ");break; + case 'v': + TTH_OUTPUT("");TTH_MATHI(174); + TTH_OUTPUT("");break; + } + }else{ /*Display or non-style in-line*/ + mkkey(eqstr,eqstrs,&eqdepth); + eqclose++; + *eqstr=0; + if(tth_flev<0)tth_flev=tth_flev-99; + TTH_PUSH_CLOSING; + if(eqclose > tth_flev){ /* Inline levels will be enclosed in [()]. */ + TTH_CCPY(closing,""); + switch(*(yytext+1)){ + case 'o': case 'b': case 's': TTH_MATHS("`");break; + case 'd': TTH_CCPY(closing,"\\dot");break; + case '2': TTH_CCPY(closing,"\\ddot");break; + case 't': TTH_CCPY(closing,"\\tilde");break; + case 'h': TTH_MATHC("^");break; + case 'v': TTH_CCPY(closing,"\\vec");break; + case 'q': /* output moved above to fix inline */ break; + default : fprintf(stderr,"Overaccent error:%s,%d\n",yytext,*(yytext+1)); + } + }else{ /* Display case*/ + TTH_CCPY(closing,TTH_OA3); + switch(*(yytext+1)){ + case 'o': strcpy(eqstr,TTH_DIV); + strcat(eqstr,TTH_OA5);TTH_CCPY(closing,TTH_OA3); + break; + case 'b': case 's': TTH_OUTPUT(TTH_OA1); + TTH_OUTPUT((tth_istyle&1 ? "-":"_"));TTH_OUTPUT(TTH_OA2);break; + case 'd': TTH_OUTPUT(TTH_OA1); + if(tth_istyle&1) {TTH_MATHI(215);} else {TTH_OUTPUT(".");} + TTH_OUTPUT(TTH_OA2);break; + case '2': TTH_OUTPUT(TTH_OA1); + if(tth_istyle&1) {TTH_MATHI(215);TTH_MATHI(215);} else + {TTH_OUTPUT("..");} TTH_OUTPUT(TTH_OA2);break; + /* case '2': strcpy(eqstr,"..
    ");break; */ + case 't':TTH_OUTPUT(TTH_OA1);TTH_OUTPUT("~");strcat(eqstr,TTH_OA2);break; + case 'h':TTH_OUTPUT(TTH_OA1);TTH_OUTPUT("^");strcat(eqstr,TTH_OA2);break; + case 'v':TTH_OUTPUT(TTH_OA1);TTH_MATHI(174);TTH_OUTPUT(TTH_OA2);break; + /* case 'v': TTH_MATHI(174);strcat(eqstr,"
    ");break; */ + case 'q': { + if(tth_debug&2)fprintf(stderr,"qrtlen=%d\n",qrtlen); + sprintf(eqstr,"%s  ",TTH_OA1); + for(i=0;i%s%s%s", + TTH_FOOTNOTESIZE,scrstring,TTH_SIZEEND); + TTH_OUTPUT(scratchstring); + } + sprintf(dupstore,"{\\surd %s}",margs[jscratch]); + TTH_SCAN_STRING(dupstore); + *dupstore=0; + }else if(strcspn(margs[jscratch],"{}\\")==js2 + && !(tth_istyle&1) /* Only for non-compressed */ + && !qrtlen2 /* And non index */ + ){/* multiple char qrt case.*/ + sprintf(scratchstring,"%s%s%s",TTH_SYMBOL,TTH_SYMPT(chr1),TTH_SYMEND); + sprintf(dupstore,"\\qrt{%s}",margs[jscratch]); + qrtlen=strlen(dupstore)-6; + js2=0; + chscratch=dupstore+5; + while((jscratch=strcspn(chscratch," )(^_")) != strlen(chscratch)){ + js2++; + chscratch=chscratch+jscratch+1; + if(!strcspn((chscratch-1),"^_"))js2++; + } + qrtlen=qrtlen-(0.5*js2); + TTH_SCAN_STRING(dupstore);*dupstore=0; + }else{ /* Default case, embedded groups or commands. Or index*/ + if(qrtlen2){ + sprintf(scratchstring, + "%s%s%s%s%s%s",TTH_FOOTNOTESIZE,scrstring,TTH_SIZEEND, + TTH_SYMBOL,TTH_SYMPT(chr1),TTH_SYMEND); + }else{ + sprintf(scratchstring,"%s%s%s",TTH_SYMBOL,TTH_SYMPT(chr1),TTH_SYMEND); + } + if(eqclose > tth_flev-1 ) { /* put in braces if topped out */ + TTH_OUTPUT(scratchstring); + TTH_MATHC("{"); + TTH_PUSH_CLOSING; + /* TTH_CCPY(closing,"}"); Came in wrong order after fraction. + so fixed in the dupstore call.*/ + if(tth_debug&2) { + fprintf(stderr, + "Start Sqrt {, eqdepth=%d, eqclose=%d, tth_flev=%d, levdelim=%s.\n" + ,eqdepth,eqclose,tth_flev,levdelim[eqclose]); + } + mkkey(eqstr,eqstrs,&eqdepth); + *eqstr=0; + if(tth_flev < 0) tth_flev=tth_flev-99; + eqclose++; + tophgt[eqclose]=0; + levhgt[eqclose]=1; + sprintf(dupstore,"%s}\\}",margs[jscratch]); + }else{ /* use overline */ + sprintf(dupstore,"{\\overline{%s}\\tth_makeroot}",margs[jscratch]); + tth_root_depth++; + /* pass to delimit code via global stack. */ + TTH_SCAN_STRING(dupstore); /* defer the contents scan. Do index */ + tth_flev=tth_flev-99; /* No built-up in index */ + /* use double braces to ensure inline enclosure works correctly. */ + sprintf(dupstore,"{{%s}\\tth_rootindex}",scrstring); + } + TTH_SCAN_STRING(dupstore); + *dupstore=0; + } + yy_pop_state(); + rmdef(margkeys,margs,&margmax); /* Dump two arguments */ + rmdef(margkeys,margs,&margmax); + }else{fprintf(stderr,"Error finding sqrt argument");} +} /* end of tth_sqrt*/ + YY_BREAK +case 488: +YY_RULE_SETUP +#line 2905 "tth.lex" +{ + TTH_CCPY(tth_root_index[tth_root_depth],eqstr); + tth_root_len[tth_root_depth]=strlen(eqstr); + *eqstr=0; + tth_flev=tth_flev+99; +} + YY_BREAK +case 489: +YY_RULE_SETUP +#line 2911 "tth.lex" +strcpy(levdelim[eqclose],"Ö"); + YY_BREAK +/* Above accents etc without braces: embrace following token (and rescan). */ +case 490: +/* rule 490 can match eol */ +#line 2916 "tth.lex" +case 491: +/* rule 491 can match eol */ +#line 2917 "tth.lex" +case 492: +/* rule 492 can match eol */ +#line 2918 "tth.lex" +case 493: +/* rule 493 can match eol */ +#line 2919 "tth.lex" +case 494: +/* rule 494 can match eol */ +#line 2920 "tth.lex" +case 495: +/* rule 495 can match eol */ +#line 2921 "tth.lex" +case 496: +/* rule 496 can match eol */ +YY_RULE_SETUP +#line 2921 "tth.lex" +{ /* overline needs leading WSP */ + TTH_INC_MULTI; + strcpy(dupstore,yytext); + *(dupstore+strcspn(dupstore," \t\r\n"))=0; + /* yy_push_state(embracetok); OLD */ + *expchar=0;TTH_CCPY(exptex,dupstore);*dupstore=0; + yy_push_state(exptokarg); /* overaccent */ + } + YY_BREAK +case 497: +/* rule 497 can match eol */ +YY_RULE_SETUP +#line 2929 "tth.lex" +{ /*This is default.*/ + TTH_INC_MULTI; + if((tth_flev > 0 )){ + strcpy(scrstring,yytext+5); + *(scrstring+strlen(scrstring)-2)=0; + sprintf(scratchstring,"}\\special{html:%s}%s\\tth_endnumbered", + (eqalignlog ? TTH_DISP5 : TTH_DISP3),scrstring); + /*fprintf(stderr,"Ending eqno: %s\n",scratchstring); */ + TTH_SCAN_STRING(scratchstring); + }else{ + yyless(5); TTH_MATHC("     "); + } + } + YY_BREAK +case 498: +YY_RULE_SETUP +#line 2942 "tth.lex" +{ /* Fallback only */ + if((tth_flev > 0 ) && (eqaligncell)) { + tth_enclose(TTH_EQ1,eqstr,TTH_EQ4,eqstore); + strcat(eqstr,TTH_CELL4); + } + TTH_MATHC("     "); + } + YY_BREAK +case 499: +/* rule 499 can match eol */ +YY_RULE_SETUP +#line 2949 "tth.lex" +{ + TTH_INC_MULTI; + TTH_SCAN_STRING("\\left.\\tth_size2\\right"); + } + YY_BREAK +case 500: +/* rule 500 can match eol */ +YY_RULE_SETUP +#line 2953 "tth.lex" +{ + TTH_INC_MULTI; + TTH_SCAN_STRING("\\left.\\tth_size3\\right"); + } + YY_BREAK +case 501: +YY_RULE_SETUP +#line 2957 "tth.lex" +levhgt[eqclose]=2; + YY_BREAK +case 502: +YY_RULE_SETUP +#line 2958 "tth.lex" +levhgt[eqclose]=3; + YY_BREAK +case 503: +/* rule 503 can match eol */ +YY_RULE_SETUP +#line 2959 "tth.lex" +{ + TTH_INC_MULTI;yy_push_state(bigdel);strcpy(scratchstring,"{");} + YY_BREAK +case 504: +/* rule 504 can match eol */ +YY_RULE_SETUP +#line 2961 "tth.lex" +{ + TTH_INC_MULTI;yy_push_state(bigdel);strcpy(scratchstring,"}");} + YY_BREAK +case 505: +YY_RULE_SETUP +#line 2964 "tth.lex" +; + YY_BREAK +case 506: +YY_RULE_SETUP +#line 2965 "tth.lex" +; + YY_BREAK +case 507: +YY_RULE_SETUP +#line 2966 "tth.lex" +; + YY_BREAK +/* Textstyle html is so limited that it makes no sense to use it. + Also it can trip problem with implied grouping of an eq insufficient. + to end dupgroup. Partly avoided by the eqdept>2 test but not entirely.*/ +/* +\\textstyle { + if(eqdepth>2){ + tth_flev=tth_flev-99; + TTH_CCPY(argchar,"\\tth_endtextstyle"); + storetype=5; + yy_push_state(dupgroup); + } +} +\\tth_endtextstyle tth_flev=tth_flev+99; + */ +case 508: +YY_RULE_SETUP +#line 2981 "tth.lex" + + YY_BREAK +case 509: +YY_RULE_SETUP +#line 2982 "tth.lex" + + YY_BREAK +case 510: +YY_RULE_SETUP +#line 2983 "tth.lex" + + YY_BREAK +/* Default equation actions. */ +/* Was single character. IE gave problems. */ +case 511: +YY_RULE_SETUP +#line 2987 "tth.lex" +{ + strcat(eqstr,tth_font_open[tth_push_depth]); + strcat(eqstr,yytext); + strcat(eqstr,tth_font_close[tth_push_depth]); + } + YY_BREAK +case 512: +YY_RULE_SETUP +#line 2993 "tth.lex" +TTH_MATHC(" "); + YY_BREAK +case 513: +#line 2995 "tth.lex" +case 514: +#line 2996 "tth.lex" +case 515: +#line 2997 "tth.lex" +case 516: +#line 2998 "tth.lex" +case 517: +YY_RULE_SETUP +#line 2998 "tth.lex" +{ + if(*(yytext) == '\\'){ chscratch=yytext+1;} else {chscratch=yytext;} + if(*chscratch=='&')chscratch="&"; + /* If the font has been changed, use it for non-letters too */ + if(!tth_mathitalic || strcmp(tth_font_open[tth_push_depth],TTH_ITAL1)!=0 ){ + strcat(eqstr,tth_font_open[tth_push_depth]); + strcat(eqstr,chscratch); + strcat(eqstr,tth_font_close[tth_push_depth]); + }else{ + strcat(eqstr,chscratch); + } +} + YY_BREAK +case 518: +/* rule 518 can match eol */ +YY_RULE_SETUP +#line 3010 "tth.lex" +TTH_INC_MULTI; TTH_SCAN_STRING(" = "); + YY_BREAK +/**** tth pseudo-TeX ******/ +case 519: +YY_RULE_SETUP +#line 3015 "tth.lex" +{ + if(tth_debug&8) fprintf(stderr,"#tthbigsup, eqhgt=%d\n",eqhgt); + strcat(eqstr,TTH_BR); + *expchar=0; + if(strlen(eqlimited)){ + tth_symext(eqlimited,eqstr+strlen(eqstr)); + *eqlimited=0; + for(i=0;i");TTH_PRECLOSE(""); + }else{ + TTH_OUTPUT("");TTH_PRECLOSE(""); + } +} + YY_BREAK +case 529: +YY_RULE_SETUP +#line 3077 "tth.lex" +{ /* No more subp's */ + if(*yytext != '#') yyless(0); + storetype=0; + yy_pop_state(); + if(strlen(supstore) || strlen(substore)){ /* Need to deal with subp */ + strcpy(dupstore,"{\\tthscriptsize{"); + strcat(dupstore,supstore); + strcat(dupstore,"}}#tthbigsup{\\tthscriptsize{"); + strcat(dupstore,substore); + strcat(dupstore,"}}"); + if(tth_istyle&1) eqhgt=0.8*hgt+0.7; else eqhgt=hgt; + if(tth_debug&8)fprintf(stderr,"Scanning subpscripts:%s\n",dupstore); + TTH_SCAN_STRING(dupstore); + *dupstore=0; + *argchar=0; + *supstore=0; + *substore=0; + strcpy(expchar,""); /* make non-null */ + yy_push_state(exptokarg); /* scanning subpscripts */ + }else if(strlen(eqlimited)){ /* No delimiters but a limited symbol */ + tth_symext(eqlimited,eqstr+strlen(eqstr)); + for(i=0;i"); + *eqlimited=0; + } + } + YY_BREAK +/* New big, left, right, delimiters section */ +case 530: +YY_RULE_SETUP +#line 3107 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"{");unput(*scratchstring);} + YY_BREAK +case 531: +YY_RULE_SETUP +#line 3109 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"}");unput(*scratchstring);} + YY_BREAK +case 532: +YY_RULE_SETUP +#line 3111 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"(");unput(*scratchstring);} + YY_BREAK +case 533: +YY_RULE_SETUP +#line 3113 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],")");unput(*scratchstring);} + YY_BREAK +case 534: +YY_RULE_SETUP +#line 3115 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"[");unput(*scratchstring);} + YY_BREAK +case 535: +YY_RULE_SETUP +#line 3117 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"]");unput(*scratchstring);} + YY_BREAK +case 536: +YY_RULE_SETUP +#line 3119 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"é");unput(*scratchstring);} + YY_BREAK +case 537: +YY_RULE_SETUP +#line 3121 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"ù");unput(*scratchstring);} + YY_BREAK +case 538: +YY_RULE_SETUP +#line 3123 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"ë");unput(*scratchstring);} + YY_BREAK +case 539: +YY_RULE_SETUP +#line 3125 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"û");unput(*scratchstring);} + YY_BREAK +case 540: +YY_RULE_SETUP +#line 3127 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"á");unput(*scratchstring);} + YY_BREAK +case 541: +YY_RULE_SETUP +#line 3129 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"ñ");unput(*scratchstring);} + YY_BREAK +case 542: +YY_RULE_SETUP +#line 3131 "tth.lex" +{ + yy_pop_state();strcpy(levdelim[eqclose+1],"|");unput(*scratchstring);} + YY_BREAK +case 543: +YY_RULE_SETUP +#line 3133 "tth.lex" +{ + yy_pop_state();*levdelim[eqclose+1]=*yytext;unput(*scratchstring);} + YY_BREAK +case 544: +YY_RULE_SETUP +#line 3135 "tth.lex" +yy_pop_state();*levdelim[eqclose+1]=0;unput(*scratchstring); + YY_BREAK +case 545: +YY_RULE_SETUP +#line 3136 "tth.lex" +{ /* unknown bigdelimiter; make blank and then rescan. */ + yy_pop_state();yyless(0); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +/* ************* LaTeX Math constructs. ***********************/ +case 546: +#line 3146 "tth.lex" +case 547: +#line 3147 "tth.lex" +case 548: +YY_RULE_SETUP +#line 3147 "tth.lex" +{ /* Latex display equations */ + if(tth_debug&3)fprintf(stderr,"Latex display eqn %d\n",equatno); + displaystyle=1; + /* Not needed now that empty div is used. + if(tth_htmlstyle&2){ + TTH_OUTPUT(closing); strcpy(closing,"
    "); + TTH_OUTPUT("\n
    \n"); + }*/ + horizmode=0; + strcpy(eqstr,""); + eqclose=0; + mkkey(eqstr,eqstrs,&eqdepth); + TTH_PUSH_CLOSING; + if(!strstr(tth_font_open[tth_push_depth],TTH_ITALO)){ + TTH_CCAT(tth_font_open[tth_push_depth],tth_font_open[0]); + TTH_CCAT(tth_font_close[tth_push_depth],tth_font_close[0]); + } + yy_push_state(equation); + if( (strlen(yytext)>2) && *(yytext+7)=='e'){ + if(*(yytext+strlen(yytext)-2)!='*') { + equatno++; + strcpy(environment,"equation"); + sprintf(envirchar,"%d",equatno); + }else if(tth_multinum) *envirchar=0; + } + if(tth_debug&2) fprintf(stderr,"envirchar=%s, tth_multinum=%d, equatno=%d\n", + envirchar,tth_multinum,equatno); + TTH_SCAN_STRING("{"); /*OCT*/ + } + YY_BREAK +/* begin (inline) math moved after the close math */ +case 549: +YY_RULE_SETUP +#line 3177 "tth.lex" +{ /* Assume this is NOT inside \math */ + if(strstr(yytext,"*") != NULL){ + eqalignlog=1; tth_multinum++; /* No row numbering. No end numbering */ + } else eqalignlog=0; + if(tth_debug&2)fprintf(stderr, + "eqnarray: eqalignlog=%d, tth_multinum=%d yytext=%s\n", + eqalignlog,tth_multinum,yytext); + TTH_SCAN_STRING("\\begin{equation}\\eqalign{"); + } + YY_BREAK +/* ********************** LateX Non Math ********************************/ +case 550: +YY_RULE_SETUP +#line 3189 "tth.lex" +{ /* Check for aux file. If present input. */ + tth_LaTeX=1; + if(tth_splitfile)strcpy(filechar,"index.html"); /*sf*/ + if(strlen(tth_latex_file)){ + TTH_CCPY(argchar,tth_latex_file);strcat(argchar,".aux"); + if( (tth_inputfile=fopen(argchar,"r")) != NULL){ + tth_prefix("\\input ",argchar,eqstore); + TTH_SCAN_STRING(argchar); + fclose(tth_inputfile);tth_inputfile=NULL; + } else{ + fprintf(stderr,"No auxiliary LaTeX file found: %s\n",argchar); + /* New automatic auxfile section.*/ + if(tth_autopic){ + fprintf(stderr, + "...trying to run latex, logfile=%s.tlg. This may take a moment ...\n", + tth_latex_file); + sprintf(scratchstring, + "latex -interaction=batchmode %s >%s.tlg", + tth_latex_file,tth_latex_file); + if((js2=system(scratchstring))!=SUCCESS) + fprintf(stderr,"...latex returned: %d indicating error(s) in the tex file.\n",js2); + if( (tth_inputfile=fopen(argchar,"r")) != NULL){ + tth_prefix("\\input ",argchar,eqstore); + TTH_SCAN_STRING(argchar); + fclose(tth_inputfile);tth_inputfile=NULL; + fprintf(stderr,"...latex seems to have created the aux file.\n"); + }else{ + fprintf(stderr,"**** System call:%s failed to create aux file.\n**** You probably don't have latex installed.\n", + scratchstring); + fprintf(stderr,"**** Continuing, but any forward references etc. will be incorrect.\n"); + } + /* End of auto aux section.*/ + } + } + argchar[0]=0; + }else{ + fprintf(stderr, + "Latex base filename blank. Auxiliary files will not be found.\n"); + } + TTH_PUSH_CLOSING;TTH_CCPY(closing,""); + /* {TTH_PAR_ACTION} Not here because of titles etc. */ + horizmode=0; + } + YY_BREAK +case 551: +YY_RULE_SETUP +#line 3232 "tth.lex" +{/* Open index tid file for writing and start to do so. */ + if(strlen(tth_latex_file)){ + strcpy(scratchstring,tth_latex_file);strcat(scratchstring,".tid"); + if( (tth_indexfile=fopen(scratchstring,"w")) ){ + fprintf(stderr,"Opened index file: %s\n",scratchstring); + /* Open the makeindex style file. Or use default compositor.*/ + strcpy(scratchstring,tth_latex_file);strcat(scratchstring,".tms"); + if( (tth_indexstyle=fopen(scratchstring,"w")) ){ + strcpy(page_compositor,"."); + fprintf(tth_indexstyle,"page_compositor \"%s\"\n",page_compositor); + fclose(tth_indexstyle); + } + } else { + fprintf(stderr,"**** Failed to open index file: %s Line %d\n",scratchstring,tth_num_lines); + } + } + } + YY_BREAK +case 552: +YY_RULE_SETUP +#line 3250 "tth.lex" +{ /* Version to grab whole thing even special chars*/ + *dupstore=0; + *argchar=0; + yy_push_state(indexgroup); + storetype=99; /* Just leave in dupgroup to be dealt with by prior state*/ + yy_push_state(uncommentgroup); + bracecount=-1; +} + YY_BREAK +case 553: +/* rule 553 can match eol */ +YY_RULE_SETUP +#line 3258 "tth.lex" +{ /* \index action on group stored in dupstore. */ + yyless(0); + yy_pop_state(); + if(horizmode) horizmode=1; + chscratch=dupstore+1; /* Remove braces.*/ + *(chscratch+strlen(chscratch)-1)=0; + tthindexrefno++; + if(tth_indexfile != NULL){ + strcpy(scratchstring,chscratch); + *(scratchstring+strcspn(scratchstring,"|@"))= 0 ; + /*Here we should remove spaces and special characters in a version + of scratchstring to be used as the name. Because (quoting) ID and + NAME tokens must begin with a letter ([A-Za-z]) and may be + followed by any number of letters, digits ([0-9]), hyphens ("-"), + underscores ("_"), colons (":"), and periodsx("."). This means + the unallowed characters are: "\n\t_!\"#$%&'()*+,/;<=>?[\\]^`{|}~" */ + /* This version replaced only ! + while(strlen(scratchstring)-strcspn(scratchstring,"!")) + *(scratchstring+strcspn(scratchstring,"!")) = '+'; */ + while(strlen(scratchstring) + -strcspn(scratchstring,"\n\t !\"#$%&'()*+,/;<=>?[\\]^`{|}~")) + *(scratchstring + +strcspn(scratchstring,"\n\t !\"#$%&'()*+,/;<=>?[\\]^`{|}~")) = '_'; + strcpy(scrstring,chscratch); + *(scrstring+strcspn(scrstring,"|"))= 0 ; /* remove all number formatting */ + if(lbook){ + if(appendix)sprintf(argchar,"%c",chapno+64); + else sprintf(argchar,"%d",chapno); + if(strstr(chscratch,"|see")==NULL){ + if(tth_splitfile) fprintf(tth_indexfile, /*sf*/ + "\\indexentry{%s|href{%s#%s%s%d%d}}{%s%s%d}\n", /*sf*/ + scrstring,filechar,scratchstring,/*sf*/ + argchar,sectno,tthindexrefno,/*sf*/ + argchar,page_compositor,sectno); else /*sf*/ + fprintf(tth_indexfile, + "\\indexentry{%s|href{#%s%s%d%d}}{%s%s%d}\n", + scrstring,scratchstring, + argchar,sectno,tthindexrefno, + argchar,page_compositor,sectno); + fprintf(tth_fdout,"", + scratchstring,argchar,sectno,tthindexrefno); + }else{ /* A |see case */ + fprintf(tth_indexfile, + "\\indexentry{%s}{%s%s%d}\n",chscratch, + argchar,page_compositor,sectno); } + }else { + if(appendix)sprintf(argchar,"%c",sectno+64); + else sprintf(argchar,"%d",sectno); + if(strstr(chscratch,"|see")==NULL){ + if(tth_splitfile) fprintf(tth_indexfile, /*sf*/ + "\\indexentry{%s|href{%s#%s%s%d%d}}{%s%s%d}\n", /*sf*/ + scrstring,filechar,scratchstring, /*sf*/ + argchar,subsectno,tthindexrefno, /*sf*/ + argchar,page_compositor,subsectno); else /*sf*/ + fprintf(tth_indexfile, + "\\indexentry{%s|href{#%s%s%d%d}}{%s%s%d}\n", + scrstring,scratchstring, + argchar,subsectno,tthindexrefno, + argchar,page_compositor,subsectno); + fprintf(tth_fdout,"" + ,scratchstring,argchar,subsectno); + }else{ /* A |see case */ + fprintf(tth_indexfile, + "\\indexentry{%s}{%s%s%d}\n",chscratch, + argchar,page_compositor,subsectno); + } + } + *argchar=0; + } + *dupstore=0; +} + YY_BREAK +case 554: +YY_RULE_SETUP +#line 3330 "tth.lex" +{ /* Check for file. If present put title and open */ + if(tth_indexfile !=NULL){ + fprintf(stderr,"Closing index file and processing ...\n"); + fclose(tth_indexfile); + tth_indexfile=NULL;/* Omitting this caused segfaults during + footnote wrap if there are index entries in + footnotes. I guess because one tries to + write to fclosed file. In any case those + entries aren't entered into index. Fixme.*/ + if(*tth_index_cmd){ + if(strstr(tth_index_cmd," ")){/* Command with spaces is complete format*/ + sprintf(scratchstring, + tth_index_cmd,tth_latex_file,tth_latex_file,tth_latex_file); + }else{/* No spaces: just the makeindex command */ + sprintf(scratchstring,"%s -o %s.tin %s.tid", + tth_index_cmd,tth_latex_file,tth_latex_file); + } + }else sprintf(scratchstring,"makeindex -o %s.tin -s %s.tms %s.tid", + tth_latex_file,tth_latex_file,tth_latex_file); + jscratch=system(scratchstring); + if(jscratch != SUCCESS){ + fprintf(stderr,"**** System call failed: %s**** Index not made.\n" + ,scratchstring); + } + strcpy(scratchstring,"(showing section)"); + } else *scratchstring=0; + /* Get the index anyway */ + sprintf(argchar,"\n\\special{html:\n}\\beginsection{\\indexname{ %s}}\\par\\input %s.tin", + scratchstring,tth_latex_file); + TTH_SCAN_STRING(argchar); + argchar[0]=0; + if(tth_splitfile){ /*sf*/ + strcpy(filenext,"docindex.html");/*sf*/ + TTH_SCAN_STRING("\\tthsplittail\\tthsplitinv\\tthsplittop\\tthfileupd"); /*sf*/ + }/*sf*/ + } + YY_BREAK +case 555: +YY_RULE_SETUP +#line 3366 "tth.lex" +{ /* Check for file. If present put title and open */ + TTH_CCPY(argchar,tth_latex_file);TTH_CCAT(argchar,".toc"); + if( (tth_inputfile=fopen(argchar,"r")) != NULL){ + fclose(tth_inputfile);tth_inputfile=NULL; + sprintf(scratchstring,"\\htmlheader{1}{\\contentsname{ }}\\input %s ", + argchar); + if(tth_indexfile) {TTH_PUSH_BUFF(11);} else /*get extra code*/ + {TTH_PUSH_BUFF(0);} /*braces required*/ + yy_scan_string(scratchstring); + } + argchar[0]=0; + } + YY_BREAK +case 556: +YY_RULE_SETUP +#line 3378 "tth.lex" +{ /* Check for file. If present put title and open */ + TTH_CCPY(argchar,tth_latex_file);strcat(argchar,".lot"); + if( (tth_inputfile=fopen(argchar,"r")) != NULL){ + tth_prefix("\\htmlheader{1}{\\listtablename{ }}\\input ",argchar,eqstore); + TTH_SCAN_STRING(argchar); + fclose(tth_inputfile);tth_inputfile=NULL; + } + tbno=0;/*sf*/ + argchar[0]=0; + } + YY_BREAK +case 557: +YY_RULE_SETUP +#line 3388 "tth.lex" +{ /* Check for file. If present put title and open */ + TTH_CCPY(argchar,tth_latex_file);strcat(argchar,".lof"); + if( (tth_inputfile=fopen(argchar,"r")) != NULL){ + tth_prefix("\\htmlheader{1}{\\listfigurename{ }}\\input ",argchar,eqstore); + TTH_SCAN_STRING(argchar); + fclose(tth_inputfile);tth_inputfile=NULL; + } + fgno=0;/*sf*/ + argchar[0]=0; + } + YY_BREAK +case 558: +/* rule 558 can match eol */ +YY_RULE_SETUP +#line 3398 "tth.lex" +{ /*Processing aux file*/ + TTH_INC_LINE + if(strstr(yytext,"toc}{\\contentsline")==yytext+12){ /*sf*/ + /* Updating section label*/ /*sf*/ + if( (chscratch=strstr(yytext,"numberline {"))!=NULL){ /*sf*/ + strncpy(schar,(chscratch+12),2); /*max: 2 digit number*/ /*sf*/ + *(schar+strcspn(schar,"}."))=0; /*sf*/ + } /*sf*/ + }else if(strstr(yytext,"lof}{\\contentsline")){ /*sf*/ + if(fgno < TNO) mkkey(schar,fchar,&fgno); /*sf*/ + else fprintf(stderr,"Too many figures"); /*sf*/ + }else if(strstr(yytext,"lot}{\\contentsline")){ /*sf*/ + if(tbno < TNO) mkkey(schar,tchar,&tbno); /*sf*/ + else fprintf(stderr,"Too many tables"); /*sf*/ + } /*sf*/ +} + YY_BREAK +case 559: +/* rule 559 can match eol */ +YY_RULE_SETUP +#line 3414 "tth.lex" +{ + horizmode=1; + *scrstring=0; + if(tth_debug&128) fprintf(stderr,"Contentsline %s\n",yytext); + strcpy(refchar,"tth_sEc"); + if(strstr(yytext,"{chapter}")!=NULL){ + chaplog=4;strcpy(refchar,"tth_chAp"); + }else if(strstr(yytext,"{table}")!=NULL){ + strcpy(refchar,"tth_tAb"); + for(i=0;i<4;i++) strcat(scrstring," "); + }else if(strstr(yytext,"{figure}")!=NULL){ + strcpy(refchar,"tth_fIg"); + for(i=0;i<4;i++) strcat(scrstring," "); + }else if(strstr(yytext,"{section}")!=NULL){ + for(i=0;i%s  ", + scrstring,auxflch,refchar,chscratch,chscratch); + TTH_TEX_FN("{#1}\\special{html:
    }\\tthunknown#tthdrop2",2); + }else{ + if(strstr(yytext,"{part}")){/*Only enter unnumbered line if part*/ + TTH_TEX_FN("{#1}\\special{html:
    }\\tthunknown#tthdrop2",2); + }else{TTH_TEX_FN("\\tthunknown#tthdrop2",2);} + } + unput('{'); /* Already in first group. */ +} + YY_BREAK +case 560: +/* rule 560 can match eol */ +YY_RULE_SETUP +#line 3465 "tth.lex" +{ + TTH_INC_MULTI; + js2=strcspn(yytext,"{"); + strcpy(dupstore,yytext+js2+1); + if(tth_debug&256) fprintf(stderr,"Citations:%s\n",dupstore); + i=0;ind=-1; + strcpy(dupstore2,"\\tthciteob"); + for(jargmax=0;jargmax<30;jargmax++){ +/* ind=ind+i+1; */ + ind=ind+i+1+strspn(dupstore+ind+i+1,", \t\n");/*Advance to start of next*/ + js2=strcspn(dupstore+ind,"},\t\n"); /*Termination of key*/ + i=js2+strspn(dupstore+ind+js2," \t\n"); /* Next divider*/ + *(dupstore+ind+js2)=0; + jarg=indexkey(dupstore+ind,keys,&nkeys); + if(jarg == -1) { + fprintf(stderr,"No bibcite for %s\n",dupstore+ind); + }else{ + if(ckeys[jarg]==0){ + if(tth_splitfile)sprintf(dupstore2+strlen(dupstore2),/*sf*/ + "\\special{html:}",/*sf*/ + dupstore+ind,dupstore+ind);else /*sf*/ + sprintf(dupstore2+strlen(dupstore2), + "\\special{html:}", + dupstore+ind,dupstore+ind); + ckeys[jarg]++; + }else{ + if(tth_splitfile)sprintf(dupstore2+strlen(dupstore2),/*sf*/ + "\\special{html:}",/*sf*/ + dupstore+ind);else /*sf*/ + sprintf(dupstore2+strlen(dupstore2), + "\\special{html:}", + dupstore+ind); + } + strcpy(scratchstring,defs[jarg]); + if((chscratch=strstr(scratchstring,"#tthdrop0"))) *chscratch=0; + /* New operator on the bibcite */ + strcat(dupstore2,"\\tthciteform "); + strcat(dupstore2,scratchstring); + strcat(dupstore2,"\\special{html:}"); + if(!nargs[jarg]){ + if(lbook)jscratch=chapno; else jscratch=sectno; + if(appendix) nargs[jarg]=jscratch+64; + else nargs[jarg]=jscratch; + js2=jarg; + mkkey(filechar,optargs,&js2); + } + } + if(*(dupstore+ind+i+1)){ + strcat(dupstore2,"\\tthcitepb"); + } else { /* Exhausted citations */ + js2=strcspn(yytext,"{"); + if((jscratch=strcspn(yytext,"[")) < js2-2){ + strcat(dupstore2,"\\tthcitefi{}"); + strncat(dupstore2,yytext+jscratch+1,js2-jscratch-2); + } + strcat(dupstore2,"\\tthcitecb{}"); + jargmax=30; + } + } + if(tth_debug&256)fprintf(stderr,"Rescanning citations:\n%s\n",dupstore2); + TTH_SCAN_STRING(dupstore2); + i=0;ind=0;jarg=0;jargmax=0; *dupstore=0; *dupstore2=0; +} + YY_BREAK +case 561: +YY_RULE_SETUP +#line 3529 "tth.lex" +TTH_TEX_FN("\\tth_thebibliography#tthdrop1",1); + YY_BREAK +case 562: +YY_RULE_SETUP +#line 3530 "tth.lex" +{ + if(lbook) {TTH_SCAN_STRING("\\special{html:

    }\\bibname\\special{html:

    \n}\\begin{description}");} + else {TTH_SCAN_STRING("\\special{html:

    }\\refname\\special{html:

    \n}\\begin{description}");} + if(tth_splitfile){ /*sf*/ + if(!bibliogs) strcpy(filenext,"refs.html"); /*sf*/ + else sprintf(filenext,"refs%d.html",bibliogs); /*sf*/ + bibliogs++; /*sf*/ + TTH_SCAN_STRING("\\tthsplittail\\tthsplitinv\\tthsplittop\\tthfileupd"); /*sf*/ + }/*sf*/ + TTH_SCAN_STRING("\\par"); + } + YY_BREAK +case 563: +YY_RULE_SETUP +#line 3542 "tth.lex" +TTH_TEX_FN_OPT("\\tthbibitem{#2}#tthdrop2",2,""); + YY_BREAK +case 564: +/* rule 564 can match eol */ +YY_RULE_SETUP +#line 3543 "tth.lex" +{ + TTH_INC_MULTI; + TTH_OUTPUT(closing);strcpy(closing,"\n"); /*27 Apr 2001 */ + fprintf(tth_fdout,"
    "); + strcpy(dupstore,yytext); + *(dupstore+strlen(dupstore)-1)=0; + if((chs2=strstr(dupstore,"]"))==NULL) chs2=dupstore; + chs2=chs2+strcspn(chs2,"{")+1; + jarg=indexkey(chs2,keys,&nkeys); + if(jarg== -1){ + fprintf(stderr,"Unknown bibitem %s\n",chs2); + fprintf(tth_fdout,"[]
    "); + }else{ + *(scratchstring)=0; + if(tth_splitfile){ /*sf*/ + if(!optargs[jarg]) /*sf*/ + {fprintf(stderr,"**** Error: Null bibitem optarg (file)\n");}else/*sf*/ + strcpy(scratchstring,optargs[jarg]); /*sf*/ + } /*sf*/ + /* New operator on the bibcite */ + strcpy(scrstring,"\\tthbibform "); + strcat(scrstring,defs[jarg]); + if((chscratch=strstr(scrstring,"#tthdrop"))) *chscratch=0;/* huh?*/ + strcat(scrstring,"\\tthbibcb"); + strcat(scrstring,"}"); + TTH_PUSH_CLOSING; strcpy(closing,"
    "); + fprintf(tth_fdout,"",scratchstring,chs2,chs2); + TTH_SCAN_STRING(scrstring); + } + jarg=0;*dupstore=0; + } + YY_BREAK +case 565: +/* rule 565 can match eol */ +YY_RULE_SETUP +#line 3574 "tth.lex" +{ /* Input the bbl file. */ + TTH_CCPY(argchar,tth_latex_file);strcat(argchar,".bbl"); + if( (tth_inputfile=fopen(argchar,"r")) != NULL){ + tth_prefix("\\input ",argchar,eqstore); + TTH_SCAN_STRING(argchar); + fclose(tth_inputfile);tth_inputfile=NULL; + }else{ + if(tth_autopic){ + fprintf(stderr, + "**** No bibliography file %s found. Trying to create.\n",argchar); + /* New automatic bbl file section.*/ + fprintf(stderr, + "...trying to run latex, logfile=%s.tlg. This may take a moment ...\n", + tth_latex_file); + sprintf(scratchstring,"latex -interaction=batchmode %s >%s.tlg", + tth_latex_file,tth_latex_file); + if((js2=system(scratchstring))!=SUCCESS) + fprintf(stderr,"...latex returned: %d indicating error(s) in the tex file.\n",js2); + fprintf(stderr,"...trying to run bibtex ...\n"); + sprintf(scrstring,"bibtex %s",tth_latex_file); + if(system(scrstring)!=SUCCESS)fprintf(stderr,"Bibtex failed\n"); + if(system(scratchstring)!=SUCCESS){}; + if( (tth_inputfile=fopen(argchar,"r")) != NULL){ + tth_prefix("\\input ",argchar,eqstore); + TTH_SCAN_STRING(argchar); + fclose(tth_inputfile);tth_inputfile=NULL; + fprintf(stderr,"...latex/bibtex have created file. "); + fprintf(stderr,"If Unknown bibitem now occurs, rerun tth.\n"); + }else{ + fprintf(stderr,"**** System calls failed. You probably don't have latex or bibtex installed.\n**** No bbl file created. Bibliography will be incomplete.\n"); + } + }else{ + /* End of auto bbl section.*/ + fprintf(stderr, + "**** No bibliography file %s found. Create using latex and bibtex.\n", + argchar); + } + } + argchar[0]=0; + } + YY_BREAK +case 566: +YY_RULE_SETUP +#line 3615 "tth.lex" +{ + chapno=0;sectno=0;appendix=1; + if(lbook) strcpy(scratchstring, + "\\renewcommand{\\thechapter}{\\Alph{chapter}}"); + else strcpy(scratchstring, + "\\renewcommand{\\thesection}{\\Alph{section}}"); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +case 567: +YY_RULE_SETUP +#line 3623 "tth.lex" +{ + fprintf(tth_fdout,"\n

    "); yy_push_state(tokenarg); TTH_CCPY(argchar,"

    "); +} + YY_BREAK +case 568: +YY_RULE_SETUP +#line 3626 "tth.lex" +{ + sprintf(scratchstring,"%s\\tthenclose{\\special{html:

    }%s{ %s} \\special{html:
    }}{\\special{html:


    }} ", + "\\stepcounter{part}", + "\\partname","\\thepart"); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +case 569: +YY_RULE_SETUP +#line 3632 "tth.lex" +{ + fprintf(tth_fdout,"\n

    "); yy_push_state(tokenarg); TTH_CCPY(argchar,"

    ");} + YY_BREAK +case 570: +YY_RULE_SETUP +#line 3634 "tth.lex" +{ + figureno=0;tableno=0; + sprintf(labelchar,"%d",chapno+1); + if(appendix) sprintf(labelchar,"%c",chapno+1+64); + TTH_SCAN_STRING("\\tthchapcomplete"); + if(tth_splitfile){ /*sf*/ + sprintf(filenext,"chap%s.html",labelchar);/*sf*/ + TTH_SCAN_STRING("\\tthsplittail\\tthsplitinv\\tthsplittop\\tthfileupd"); /*sf*/ + }/*sf*/ +} + YY_BREAK +case 571: +YY_RULE_SETUP +#line 3644 "tth.lex" +if(tth_splitfile) strcpy(filechar,filenext); /*sf*/ + YY_BREAK +case 572: +YY_RULE_SETUP +#line 3645 "tth.lex" +{/*sf*/ + fprintf(tth_fdout,TTH_MIME_DIVIDE,filenext);/*sf*/ + fprintf(tth_fdout,TTH_DOCTYPE); /*sf*/ + fprintf(tth_fdout,TTH_GENERATOR,TTH_NAME,TTH_VERSION); /*sf*/ + fprintf(tth_fdout,TTH_ENCODING); /*sf*/ + fprintf(tth_fdout,"%s",TTH_P_STYLE); /*sf*/ + if(tth_istyle)fprintf(tth_fdout,"%s",TTH_STYLE); /*sf*/ + if(!(tth_htmlstyle&4))fprintf(tth_fdout,"%s",TTH_SIZESTYLE); /*sf*/ + fprintf(tth_fdout,"%s\n",filenext);/*sf*/ + if(tth_htmlstyle&3)fprintf(tth_fdout,"\n
    \n");/*sf*/ +}/*sf*/ + YY_BREAK +case 573: +YY_RULE_SETUP +#line 3656 "tth.lex" +fprintf(tth_fdout,"%s",filenext); /*sf*/ + YY_BREAK +case 574: +YY_RULE_SETUP +#line 3657 "tth.lex" +fprintf(tth_fdout,"%s",filechar); /*sf*/ + YY_BREAK +case 575: +YY_RULE_SETUP +#line 3658 "tth.lex" +{ + if(appendix) {TTH_CCPY(argchar,"\\appendixname");} + else TTH_CCPY(argchar,"\\chaptername"); + sprintf(scratchstring,"\n\\stepcounter{chapter}\\tthenclose{\ + \\special{html:

    }\n%s{ \\thechapter}\ + \\special{html:
    }}{\\special{html:

    }} ", + labelchar,argchar); + TTH_SCAN_STRING(scratchstring);*argchar=0; +} + YY_BREAK +case 576: +YY_RULE_SETUP +#line 3667 "tth.lex" +{ + fprintf(tth_fdout,"\n

    "); yy_push_state(tokenarg); TTH_CCPY(argchar,"

    ");} + YY_BREAK +case 577: +YY_RULE_SETUP +#line 3669 "tth.lex" +{ + TTH_SCAN_STRING("\\tthsectcomplete"); + if(lbook) { + sprintf(labelchar,"%d.%d",chapno,sectno+1); + if(appendix)sprintf(labelchar,"%c.%d",chapno+64,sectno+1); + }else{ + sprintf(labelchar,"%d",sectno+1); + if(appendix)sprintf(labelchar,"%c",sectno+1+64); + if(tth_splitfile){ /*sf*/ + sprintf(filenext,"sec%s.html",labelchar);/*sf*/ + TTH_SCAN_STRING("\\tthsplittail\\tthsplitinv\\tthsplittop\\tthfileupd"); /*sf*/ + }/*sf*/ + } +} + YY_BREAK +case 578: +YY_RULE_SETUP +#line 3683 "tth.lex" +{ + if(secnumdepth > 0){ + /* the following needs the space at the end for tex compatibility */ + sprintf(scratchstring,"\n\\stepcounter{section}\\tthenclose{\ + \\special{html:

    }\n\\thesection\ + \\special{html:  }}{\\special{html:

    }} ",labelchar); + TTH_SCAN_STRING(scratchstring); + }else{ + fprintf(tth_fdout,"\n

    "); + yy_push_state(tokenarg); + TTH_CCPY(argchar,"

    "); + } +} + YY_BREAK +case 579: +YY_RULE_SETUP +#line 3696 "tth.lex" +{ + fprintf(tth_fdout,"\n

    "); yy_push_state(tokenarg); TTH_CCPY(argchar,"

    ");} + YY_BREAK +case 580: +YY_RULE_SETUP +#line 3698 "tth.lex" +{ + { + if(lbook) { + if(appendix) sprintf(labelchar,"%c.%d.%d",chapno+64,sectno,subsectno+1); + else sprintf(labelchar,"%d.%d.%d",chapno,sectno,subsectno+1); + }else { + if(appendix) sprintf(labelchar,"%c.%d",sectno+64,subsectno+1); + else sprintf(labelchar,"%d.%d",sectno,subsectno+1); + } + if(secnumdepth > 1){ + sprintf(scratchstring,"\n\\stepcounter{subsection}\\tthenclose{\ + \\special{html:

    }\n\\thesubsection\ + \\special{html:  }}{\\special{html:

    }} ",labelchar); + TTH_SCAN_STRING(scratchstring); + }else{ + fprintf(tth_fdout,"\n

    "); yy_push_state(tokenarg); TTH_CCPY(argchar,"

    "); + } + } +} + YY_BREAK +case 581: +YY_RULE_SETUP +#line 3717 "tth.lex" +{ + fprintf(tth_fdout,"\n

    "); yy_push_state(tokenarg); TTH_CCPY(argchar,"

    ");} + YY_BREAK +case 582: +YY_RULE_SETUP +#line 3719 "tth.lex" +{ + { + if(lbook) { + if(appendix) sprintf(labelchar,"%c.%d.%d.%d", + chapno+64,sectno,subsectno,subsubsectno+1); + else sprintf(labelchar,"%d.%d.%d.%d", + chapno,sectno,subsectno,subsubsectno+1); + }else { + if(appendix) sprintf(labelchar,"%c.%d.%d", + sectno+64,subsectno,subsubsectno+1); + else sprintf(labelchar,"%d.%d.%d",sectno,subsectno,subsubsectno+1); + } + if(secnumdepth > 2){ + sprintf(scratchstring,"\n\\stepcounter{subsubsection}\\tthenclose{\ + \\special{html:

    }\n\\thesubsubsection\ + \\special{html:  }}{\\special{html:

    }} ",labelchar); + TTH_SCAN_STRING(scratchstring); + }else{ + fprintf(tth_fdout,"\n

    "); yy_push_state(tokenarg); TTH_CCPY(argchar,"

    "); + } + } +} + YY_BREAK +case 583: +YY_RULE_SETUP +#line 3741 "tth.lex" +{ + if(secnumdepth > 3){ + TTH_TEX_FN("\\par\\stepcounter{paragraph}{\\bf\\theparagraph\ + \\special{html:\n}\ + \\special{html:  }#1\\special{html:\n}\\ }#tthdrop1",1); + }else{ + TTH_TEX_FN("\\par{\\bf#1\\ \\ }#tthdrop1",1); + } +} + YY_BREAK +case 584: +YY_RULE_SETUP +#line 3750 "tth.lex" +{ + if(secnumdepth > 4){ + TTH_TEX_FN("\\stepcounter{subparagraph}{\\special{html:
    }\ + \\quad\\bf\ + \\special{html:\n}\ + \\thesubparagraph\ + \\special{html:  }#1\\special{html:\n}\\ }#tthdrop1",1); + }else{ + TTH_TEX_FN("\\special{html:
    }{\\quad\\bf#1\\ \\ }#tthdrop1",1); + } +} + YY_BREAK +case 585: +YY_RULE_SETUP +#line 3762 "tth.lex" +{ + if(tth_debug&256)fprintf(stderr,"Caption in environment:%s\n",environment); + if(!strcmp(environment,"figure")){ + figureno++; + if(lbook) sprintf(envirchar,"%d.%d",chapno,figureno); + else sprintf(envirchar,"%d",figureno); + sprintf(scratchstring,"\n\\tthenclose{\\special{html:
    }\\figurename{ \\thefigure:} }{\\special{html:
    }} "); + }else if(!strcmp(environment,"table")){ + tableno++; + if(lbook) sprintf(envirchar,"%d.%d",chapno,tableno); + else sprintf(envirchar,"%d",tableno); + sprintf(scratchstring,"\n\\tthenclose{\\special{html:
    }\\tablename{ \\thetable:} }{\\special{html:
    }} "); + } + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +case 586: +YY_RULE_SETUP +#line 3777 "tth.lex" +{ + if(horizmode) horizmode=1; + jscratch=indexkey("#1",margkeys,&margmax); + if(tth_debug&256)fprintf(stderr, + "tthnewlabel jscratch=%d, margs[jscratch]=%s\n",jscratch,margs[jscratch]); + strcpy(dupstore,margs[jscratch]); + if(tth_group(scrstring,margs[jscratch+1],TTH_CHARLEN-1)){ + fprintf(stderr,"Label end broken in newlabel:%s\n",margs[jscratch+1]); } + if(tth_splitfile){ /*sf*/ + if(lbook)strcpy(scratchstring,"chap"); /*sf*/ + else strcpy(scratchstring,"sec"); /*sf*/ + if(strlen(schar)){ /* File defined; use it.*/ /*sf*/ + strcat(scratchstring,schar); /*sf*/ + strcat(scratchstring,".html"); /*sf*/ + }else if(*(scrstring+1)=='}') strcpy(scratchstring,"index.html"); /*sf*/ + else{ /* Should not now come here. */ /*sf*/ + strcat(scratchstring,scrstring+1); /*sf*/ + *(scratchstring+strcspn(scratchstring,".}"))=0; /*sf*/ + strcat(scratchstring,".html"); /*sf*/ + fprintf(stderr, /*sf*/ + "**** Abnormal newlabel file reference:%s\n",scratchstring);/*sf*/ + } /*sf*/ + }else /*sf*/ + *scratchstring=0; + js2=nkeys; /* Just for copying the file name to optargs. */ + narg=*(scrstring+1); + if(*(scrstring+1)=='}')narg=0; + else if(narg > 64) narg=-(narg-64); /* Test for appendix */ + else sscanf(scrstring+1,"%d",&narg); + if(nkeys < NFNMAX) { + mkkey(scratchstring,optargs,&js2); + lkeys[nkeys]=0; + mkdef(dupstore,keys,scrstring,defs,&narg,nargs,&nkeys); + if(tth_debug&256){ + i=indexkey(dupstore,keys,&nkeys); + fprintf(stderr,"Defined Label %s, index %d, nargs %d, optarg %s, Def %s\n", + dupstore,i,nargs[i],optargs[i],defs[i]); + } + } + else fprintf(stderr,"Too many functions to define %s\n",dupstore); + *dupstore=0; + } + YY_BREAK +case 587: +YY_RULE_SETUP +#line 3819 "tth.lex" +{ /* Called only by \label latex builtin. */ + if(horizmode) horizmode=1; + jscratch=indexkey("#1",margkeys,&margmax); + if(tth_debug&256)fprintf(stderr,"tthlabel jscratch=%d, margs[jscratch]=%s ", + jscratch,margs[jscratch]); + strcpy(dupstore,margs[jscratch]); + narg=chapno; + if(indexkey(dupstore,keys,&nkeys) == -1) { + if(nkeys < NFNMAX) { + js2=nkeys; + mkkey(filechar,optargs,&js2); + lkeys[nkeys]=0; + if(strlen(environment)) + mkdef(dupstore,keys,envirchar,defs,&narg,nargs,&nkeys); + else + if(strlen(labelchar)) + mkdef(dupstore,keys,labelchar,defs,&narg,nargs,&nkeys); + else mkdef(dupstore,keys,"*",defs,&narg,nargs,&nkeys); + if(tth_debug&256){ + i=indexkey(dupstore,keys,&nkeys); + fprintf(stderr,"\nDefined Label %s index %d nargs %d Def %s\n", + dupstore,i,nargs[i],defs[i]); + } + } + else fprintf(stderr,"Too many functions to define %s",dupstore); + }else{ + if(tth_debug&256)fprintf(stderr,"Predefined.\n"); + } + fprintf(tth_fdout,"\n",dupstore); + *dupstore=0; + } + YY_BREAK +case 588: +#line 3851 "tth.lex" +case 589: +YY_RULE_SETUP +#line 3851 "tth.lex" +{ + if(horizmode) horizmode=1; + jscratch=indexkey("#1",margkeys,&margmax); + if(tth_debug&256) fprintf(stderr,"tthref jscratch=%d, margs[jscratch]=%s\n", + jscratch,margs[jscratch]); + strcpy(dupstore,margs[jscratch]); + ind=indexkey(dupstore,keys,&nkeys); + if(ind != -1){ + strcpy(scratchstring, "#tthdrop1\\special{html:}%s\\special{html:}",dupstore,scrstring); + TTH_SCAN_STRING(scratchstring); + }else{ + fprintf(stderr,"Unknown Latex \\ref:%s\n",dupstore); + TTH_SCAN_STRING("#tthdrop1"); + } + *dupstore=0;*argchar=0; + } + YY_BREAK +case 590: +/* rule 590 can match eol */ +YY_RULE_SETUP +#line 3881 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 591: +YY_RULE_SETUP +#line 3882 "tth.lex" +{ + /* These are purely to silence warnings. They are non-functional*/ + PUSHEDINTS[0][0]=0; + PUSHEDINTDEPTHS[0]=0; + /* end of warning silencing */ + yy_pop_state(); + yyless(0); + strcpy(dupstore2,tth_builtins); + strcat(dupstore2,"\\tthbuiltins"); + TTH_SCAN_STRING(dupstore2); + *dupstore2=0; + } + YY_BREAK +case 592: +YY_RULE_SETUP +#line 3894 "tth.lex" +{ + yy_pop_state(); + yyless(0); + strcpy(dupstore2,tth_latex_builtins); + strcat(dupstore2,tth_latex_builtins2); + strcat(dupstore2,tth_latex_builtins3); + strcat(dupstore2,"\\tthlatexbuiltins"); + TTH_SCAN_STRING(dupstore2); + *dupstore2=0; + tth_LaTeX=tth_debug+1; /* LaTeX initialization state. */ + if(tth_debug==1) tth_debug--; /* Don't debug builtins */ + } + YY_BREAK +case 593: +YY_RULE_SETUP +#line 3907 "tth.lex" +{ + countstart=ncounters; + if(tth_debug&512) fprintf(stderr,"Countstart= %d\n",countstart); +} + YY_BREAK +case 594: +/* rule 594 can match eol */ +YY_RULE_SETUP +#line 3912 "tth.lex" +{ + TTH_INC_MULTI; + if(indexkey("\\label",keys,&nkeys) == -1){ /* Only if not already done */ + strcpy(dupstore2,tth_latex_builtins); + strcat(dupstore2,tth_latex_builtins2); + strcat(dupstore2,tth_latex_builtins3); + tth_LaTeX=tth_debug+1; /* LaTeX initialization state. Make non-zero. */ + if(tth_debug==1) tth_debug--; /* Don't debug builtins */ + if(tth_debug&512) fprintf(stderr,"Defining built-in Latex commands\n"); + } + if(strstr(yytext,"book")||strstr(yytext,"report")) { + lbook=1; + strcat(dupstore2, + "\\renewcommand{\\thesection}{\\thechapter.\\arabic{section}}"); + strcat(dupstore2, + "\\renewcommand{\\thefigure}{\\thechapter.\\arabic{figure}}"); + strcat(dupstore2, + "\\renewcommand{\\thetable}{\\thechapter.\\arabic{table}}"); + strcat(dupstore2,"\\setcounter{secnumdepth}{2}"); + strcat(dupstore2, + "\\renewcommand{\\theequation}{\\thechapter.\\arabic{equation}}"); + } else { + lbook=0; + } + strcat(dupstore2,"\\tthlatexbuiltins"); /* signals end of builtins */ + TTH_SCAN_STRING(dupstore2); + *dupstore2=0; +} + YY_BREAK +case 595: +/* rule 595 can match eol */ +YY_RULE_SETUP +#line 3941 "tth.lex" +{ + TTH_INC_MULTI; + if(strstr(yytext,"numbers")){TTH_SCAN_STRING("\\NAT@numberstrue ");} + TTH_SCAN_STRING("\\newif\\ifNAT@numbers\ +\\def\\tthbibform#1#2#3#4{\\ifNAT@numbers[#1\\else[#3 #2\\fi}\ +\\def\\tthciteform#1#2#3#4{\\ifNAT@numbers[#1\\else#3, [#2\\fi}\ +\\def\\tthciteob{}\\def\\tthcitecb{]}\\input tthntbib.sty"); +} + YY_BREAK +case 596: +YY_RULE_SETUP +#line 3949 "tth.lex" +yy_push_state(matchbrace); + YY_BREAK +/* Font faces and styles etc.*/ +case 597: +#line 3953 "tth.lex" +case 598: +YY_RULE_SETUP +#line 3953 "tth.lex" +TTH_SWAP("\\rm "); + YY_BREAK +case 599: +YY_RULE_SETUP +#line 3954 "tth.lex" +TTH_SWAP("\\bf "); + YY_BREAK +case 600: +YY_RULE_SETUP +#line 3955 "tth.lex" +TTH_SWAP("\\rm "); + YY_BREAK +case 601: +YY_RULE_SETUP +#line 3956 "tth.lex" +TTH_SWAP("\\it "); + YY_BREAK +case 602: +YY_RULE_SETUP +#line 3957 "tth.lex" +TTH_SWAP("\\it "); + YY_BREAK +case 603: +YY_RULE_SETUP +#line 3958 "tth.lex" +TTH_SWAP("\\tt "); + YY_BREAK +case 604: +YY_RULE_SETUP +#line 3959 "tth.lex" +TTH_SWAP("\\sffamily "); + YY_BREAK +case 605: +YY_RULE_SETUP +#line 3960 "tth.lex" +TTH_SWAP("\\scshape "); + YY_BREAK +/* Now using the halign brace closure */ +case 606: +YY_RULE_SETUP +#line 3962 "tth.lex" +{ + TTH_OUTPUT(TTH_SMALLCAPS_FONT1); + for(jscratch=0;jscratch"); yy_push_state(verbatim); + TTH_PUSH_CLOSING; TTH_CCPY(closing,"\n");} + YY_BREAK +case 613: +YY_RULE_SETUP +#line 3980 "tth.lex" +{ + fprintf(tth_fdout,"\n
    "); TTH_PUSH_CLOSING; TTH_CCPY(closing,"
    ");} + YY_BREAK +case 614: +YY_RULE_SETUP +#line 3982 "tth.lex" +{ + if(horizmode) horizmode=1; + fprintf(tth_fdout,"\n
    ");TTH_PUSH_CLOSING; + TTH_CCPY(closing,"
    ");} + YY_BREAK +case 615: +#line 3987 "tth.lex" +case 616: +#line 3988 "tth.lex" +case 617: +YY_RULE_SETUP +#line 3988 "tth.lex" +{ + if(horizmode) horizmode=1; + fprintf(tth_fdout,"\n
    "); + TTH_PUSH_CLOSING;TTH_CCPY(closing,"
    ");} + YY_BREAK +case 618: +YY_RULE_SETUP +#line 3992 "tth.lex" +{ + if(horizmode) horizmode=1; + TTH_SCAN_STRING("\\beginsection{\\abstractname}\\par"); + TTH_PUSH_CLOSING; /*TTH_CCPY(closing,TTH_PAR);*/ +} + YY_BREAK +case 619: +YY_RULE_SETUP +#line 3997 "tth.lex" +TTH_SCAN_STRING("\\egroup\\par"); + YY_BREAK +case 620: +YY_RULE_SETUP +#line 3999 "tth.lex" +{ + horizmode=0; + fprintf(tth_fdout,"\n
      ");yy_push_state(Litemize); + tth_eqwidth=tth_eqwidth-TTH_INDPC; + TTH_PUSH_CLOSING; +} + YY_BREAK +case 621: +/* rule 621 can match eol */ +YY_RULE_SETUP +#line 4005 "tth.lex" +{ + TTH_INC_MULTI; + yy_pop_state(); + TTH_OUTPUT(closing); + fprintf(tth_fdout,"
    "); + tth_eqwidth=tth_eqwidth+TTH_INDPC; + TTH_POP_CLOSING; + horizmode=1; +} + YY_BREAK +case 622: +YY_RULE_SETUP +#line 4015 "tth.lex" +{ + horizmode=0; + fprintf(tth_fdout,"\n
      ", + enumtype[(enumerate > 4 ? 0 : enumerate)]); + yy_push_state(Lenumerate); + enumerate++; + tth_eqwidth=tth_eqwidth-TTH_INDPC; + TTH_PUSH_CLOSING; + } + YY_BREAK +case 623: +/* rule 623 can match eol */ +YY_RULE_SETUP +#line 4024 "tth.lex" +{ + TTH_INC_MULTI; + yy_pop_state(); + TTH_OUTPUT(closing); + fprintf(tth_fdout,"
    "); + enumerate--; + tth_eqwidth=tth_eqwidth+TTH_INDPC; + TTH_POP_CLOSING; + horizmode=1; +} + YY_BREAK +case 624: +YY_RULE_SETUP +#line 4034 "tth.lex" +{ /* list like description */ + horizmode=0; + fprintf(tth_fdout,"\n
    \n");yy_push_state(Ldescription); + yy_push_state(unknown); /* dump adjacent brace groups */ + tth_eqwidth=tth_eqwidth-TTH_INDPC; + TTH_PUSH_CLOSING; + horizmode=1; + yy_push_state(removespace); +} + YY_BREAK +/* Multiple column index. */ +case 625: +YY_RULE_SETUP +#line 4044 "tth.lex" +{ + if(tth_debug&3)fprintf(stderr,"Starting the index "); + horizmode=0; + yy_push_state(Ldescription); + TTH_OUTPUT("\n

    \n
    \n"); + tth_eqwidth=tth_eqwidth-TTH_INDPC; + TTH_PUSH_CLOSING; + tth_index_face=0; + tth_index_line=0; +} + YY_BREAK +/* Multiple two-column segments broken only at indexspace.*/ +case 626: +/* rule 626 can match eol */ +YY_RULE_SETUP +#line 4056 "tth.lex" +{ + /* fprintf(stderr,"indexspace\n"); */ + TTH_INC_MULTI; + if(tth_index_line > tth_indexpage){ + TTH_OUTPUT(closing); *closing=0; + tth_index_line=0; + if((++tth_index_face)&1){ + TTH_OUTPUT("

    \n
    \n"); + }else{ + TTH_OUTPUT("

    \n
    \n"); + } + }else{ + TTH_OUTPUT("

    "); + ++tth_index_line; + } +} + YY_BREAK +case 627: +/* rule 627 can match eol */ +YY_RULE_SETUP +#line 4073 "tth.lex" +{ + TTH_INC_MULTI; + yy_pop_state(); + TTH_OUTPUT(closing); + TTH_OUTPUT("
    "); + tth_eqwidth=tth_eqwidth+TTH_INDPC; + TTH_POP_CLOSING; +} + YY_BREAK +case 628: +YY_RULE_SETUP +#line 4082 "tth.lex" +{ + /* if(horizmode) horizmode=1; */ + horizmode=0; + fprintf(tth_fdout,"\n
    \n");yy_push_state(Ldescription); + tth_eqwidth=tth_eqwidth-TTH_INDPC; + TTH_PUSH_CLOSING; + } + YY_BREAK +case 629: +/* rule 629 can match eol */ +#line 4090 "tth.lex" +case 630: +/* rule 630 can match eol */ +YY_RULE_SETUP +#line 4090 "tth.lex" +{ + TTH_INC_MULTI; + yy_pop_state(); + TTH_OUTPUT(closing); + fprintf(tth_fdout,"
    "); + tth_eqwidth=tth_eqwidth+TTH_INDPC; + TTH_POP_CLOSING; +} + YY_BREAK +case 631: +/* rule 631 can match eol */ +YY_RULE_SETUP +#line 4098 "tth.lex" +{ + TTH_INC_MULTI; + if(horizmode) horizmode=1; + strcpy(environment,"figure"); + TTH_PUSH_CLOSING;*closing=0; + if(lbook) sprintf(envirchar,"%d.%d",chapno,figureno+1); + else sprintf(envirchar,"%d",figureno+1); + {TTH_PAR_ACTION}; + fprintf(tth_fdout,"\n ",envirchar); + } + YY_BREAK +case 632: +/* rule 632 can match eol */ +YY_RULE_SETUP +#line 4108 "tth.lex" +{ + TTH_INC_MULTI; + if(horizmode) horizmode=1; + strcpy(environment,"table"); + TTH_PUSH_CLOSING;*closing=0; + if(lbook) sprintf(envirchar,"%d.%d",chapno,tableno+1); + else sprintf(envirchar,"%d",tableno+1); + {TTH_PAR_ACTION}; + fprintf(tth_fdout,"\n ",envirchar); + } + YY_BREAK +case 633: +#line 4119 "tth.lex" +case 634: +YY_RULE_SETUP +#line 4119 "tth.lex" +{ /* Special case. Remove environment label. */ + TTH_TEXCLOSE else{ + TTH_CLOSEGROUP;TTH_POP_CLOSING; + {TTH_PAR_ACTION}; + *environment=0;}} + YY_BREAK +case 635: +/* rule 635 can match eol */ +YY_RULE_SETUP +#line 4125 "tth.lex" +strcpy(unitlength,yytext); + YY_BREAK +case 636: +YY_RULE_SETUP +#line 4126 "tth.lex" +{ + if(tth_autopic){ + picno++; + if(tth_debug&32)fprintf(stderr,"Starting picture number %d\n",picno); + fprintf(tth_fdout,"
    \"Picture",picno,picno); + {TTH_PAR_ACTION}; + sprintf(scratchstring,"pic%d.gif",picno); + if((tth_picfile=fopen(scratchstring,"r"))){ + fclose(tth_picfile);tth_picfile=NULL; + fprintf(stderr,"Including existing picture %s\n",scratchstring); + yy_push_state(discardgroup); + }else{ + sprintf(scratchstring,"pic%d.tex",picno); + if ( (tth_picfile=fopen(scratchstring,"w")) != NULL){ + fprintf(tth_picfile, + "\\batchmode\\documentclass{article}\n\\usepackage{graphicx}\\usepackage{epsfig}\n\\pagestyle{empty}\n\\begin{document}%s\n%s", + unitlength,yytext); + yy_push_state(picture); + jscratch=0; + }else{ + fprintf(stderr,"Unable to open picture file for writing.\n"); + yy_push_state(discardgroup); + fprintf(tth_fdout,"
    Picture Not Created.
    \n"); + } + } + }else{ + yy_push_state(discardgroup); + fprintf(tth_fdout,"
    Picture Omitted
    "); + } +} + YY_BREAK +case 637: +YY_RULE_SETUP +#line 4156 "tth.lex" +jscratch++;fprintf(tth_picfile,"%s",yytext); + YY_BREAK +case 638: +YY_RULE_SETUP +#line 4157 "tth.lex" +{ + if(jscratch) {jscratch--; fprintf(tth_picfile,"%s",yytext);} + else{ + fprintf(tth_picfile,"%s",yytext); + fprintf(tth_picfile,"\\end{document}\n"); + fclose(tth_picfile);tth_picfile=NULL; + sprintf(scratchstring,"latex2gif pic%d",picno); + jscratch=system(scratchstring); + if(jscratch==SUCCESS){ fprintf(stderr,"Created pic%d.gif\n",picno);} + else{ + fprintf(stderr,"**** Failed to create pic%d.gif\n",picno); + fprintf(tth_fdout,"
    Picture Not Created.
    "); + } + yy_pop_state(); + } +} + YY_BREAK +case 639: +YY_RULE_SETUP +#line 4173 "tth.lex" + + YY_BREAK +case 640: +/* rule 640 can match eol */ +YY_RULE_SETUP +#line 4174 "tth.lex" +{ + if(strcspn(yytext,"\n")==0) TTH_INC_LINE; + fprintf(tth_picfile,"%s",yytext); +} + YY_BREAK +case 641: +YY_RULE_SETUP +#line 4178 "tth.lex" +{ + yy_push_state(discardgroup); + if(tth_debug&32)fprintf(stderr,"Discarding unsupported construct:%s\n",yytext); + } + YY_BREAK +case 642: +YY_RULE_SETUP +#line 4182 "tth.lex" +{ + yy_pop_state(); + if(tth_debug&32)fprintf(stderr,"Ending discarding construct:%s\n",yytext); + } + YY_BREAK +case 643: +YY_RULE_SETUP +#line 4186 "tth.lex" + + YY_BREAK +/***********************************************************************/ +/* Latex tabular and haligns */ +case 644: +YY_RULE_SETUP +#line 4190 "tth.lex" +TTH_TEX_FN("\\begin{tabular}#tthdrop1",1); + YY_BREAK +case 645: +YY_RULE_SETUP +#line 4191 "tth.lex" +{ + TTH_TEX_FN_OPT("\\tth_tabular#tthdrop2",2,""); +} + YY_BREAK +case 646: +YY_RULE_SETUP +#line 4194 "tth.lex" +{ + TTH_HAL_PUSH; + *halstring=0; + if((jscratch=indexkey("#2",margkeys,&margmax))!=-1){ + if(tth_debug&33) fprintf(stderr,"Tabular argument:%s> ",margs[jscratch]); + yy_pop_state(); + TTH_SCAN_STRING("\\tth_endtabpre"); + TTH_SCAN_STRING(margs[jscratch]); + rmdef(margkeys,margs,&margmax); rmdef(margkeys,margs,&margmax); + }else fprintf(stderr,"**** Error: No tabular argument found.\n"); + if(tth_debug&33) fprintf(stderr,"Beginning tabular\n"); + if(!eqdepth)yy_push_state(disptab); /* Prevent $$ from being display math.*/ + yy_push_state(tabpre); /* Prescan the tabular argument.*/ + ncols=0; +} + YY_BREAK +case 647: +/* rule 647 can match eol */ +YY_RULE_SETUP +#line 4209 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 648: +YY_RULE_SETUP +#line 4210 "tth.lex" +/*remove spaces*/ + YY_BREAK +case 649: +YY_RULE_SETUP +#line 4211 "tth.lex" +TTH_CCAT(halstring,yytext); + YY_BREAK +case 650: +YY_RULE_SETUP +#line 4212 "tth.lex" +TTH_CCAT(halstring,yytext);ncols++; + YY_BREAK +/* +c|l|r { + TTH_CCAT(halstring,"&{&"); + TTH_CCAT(halstring,yytext);ncols++; + TTH_CCAT(halstring,"&}&"); +}*/ +case 651: +YY_RULE_SETUP +#line 4219 "tth.lex" +{ TTH_TEX_FN("\\tth_preat#tthdrop1",1); } + YY_BREAK +case 652: +YY_RULE_SETUP +#line 4220 "tth.lex" +{ + yy_pop_state(); + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1){ + TTH_CCAT(halstring,"@{"); + TTH_CCAT(halstring,margs[jscratch]); + TTH_CCAT(halstring,"}"); + if(tth_debug&32) fprintf(stderr,"@string copied =%s\n",margs[jscratch]); + rmdef(margkeys,margs,&margmax); + } +} + YY_BREAK +case 653: +YY_RULE_SETUP +#line 4230 "tth.lex" +{ TTH_TEX_FN("\\tth_presp#tthdrop1",1);ncols++; } + YY_BREAK +case 654: +YY_RULE_SETUP +#line 4231 "tth.lex" +{ + yy_pop_state(); + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1){ + if(tth_debug&32) fprintf(stderr,"p-string =%s ",margs[jscratch]); + TTH_CCPY(scratchstring,margs[jscratch]); + TTH_CCAT(scratchstring,"\\tth_pfinish"); + TTH_SCAN_STRING(scratchstring); + GET_DIMEN; + rmdef(margkeys,margs,&margmax); + } +} + YY_BREAK +case 655: +YY_RULE_SETUP +#line 4242 "tth.lex" +{ + /* sprintf(scratchstring,"&{&p{%d}&}&",thesize/SCALEDPERPIXEL);*/ + sprintf(scratchstring,"p{%d}",thesize/SCALEDPERPIXEL); + TTH_CCAT(halstring,scratchstring); + if(tth_debug&1056) fprintf(stderr,"p-string copied=%s pixels for %d sp\n", + scratchstring,thesize); +} + YY_BREAK +case 656: +YY_RULE_SETUP +#line 4249 "tth.lex" +{ TTH_TEX_FN("\\tth_tabstar#tthdrop2",2); } + YY_BREAK +case 657: +YY_RULE_SETUP +#line 4250 "tth.lex" +{ + yy_pop_state(); + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1){ + if(tth_debug&32) fprintf(stderr,"*{%s} construct. ",margs[jscratch]); + sscanf(margs[jscratch],"%d",&js2); + if((jscratch=indexkey("#2",margkeys,&margmax))!=-1 || + js2>=1 || js2<255){ + if(tth_debug&32) fprintf(stderr,"Codes: %s\n",margs[jscratch]); + for(js2++;js2>1;js2--){TTH_CCAT(halstring,margs[jscratch]);ncols++;} + rmdef(margkeys,margs,&margmax); + }else fprintf(stderr,"**** Error in tabular argument * number:%d\n",js2); + rmdef(margkeys,margs,&margmax); + } +} + YY_BREAK +case 658: +/* rule 658 can match eol */ +YY_RULE_SETUP +#line 4264 "tth.lex" +if(strcspn(yytext,"\n")==0) TTH_INC_LINE;/* Do nothing if we don't recognize */ + YY_BREAK +case 659: +YY_RULE_SETUP +#line 4265 "tth.lex" +{ + yy_pop_state(); + TTH_PUSH_CLOSING; + TTH_CCPY(closing,TTH_TABC); + if(eqdepth) {/* equation case */ + TTH_EQA_PUSH; + eqclose++; + tophgt[eqclose]=0; + levhgt[eqclose]=1; + eqalignrow=0; + } + if(eqdepth && displaystyle) { /* only display equations.*/ + TTH_OUTPUT(TTH_CELL3);TTH_CCAT(closing,TTH_CELL3); + }else {TTH_OUTPUT("\n");} + if(*(halstring) == '|') { + TTH_OUTPUT(TTH_TABB); + }else{ + TTH_OUTPUT(TTH_TABO); + } /* Guess that if template starts '|' we want a boxed table, else not */ + *tdalign=0;*precell=0; /* Safety only; ought not to be needed */ + if(eqdepth)eqalignrow++; + yy_push_state(hendline); /* check for multicol at start */ + TTH_PUSH_BUFF(0);halbuff=yy_scan_string(halstring); /* Setup halbuff */ + yy_switch_to_buffer(include_stack[--tth_stack_ptr]); + /* But keep current*/ + if(tth_debug&32)fprintf(stderr,"Endtabpre:%s>\n",halstring); + if(!*halstring){ + fprintf(stderr,"**** Error Fatal. Null or improper alignment argument, line %d.\n",tth_num_lines); + TTH_EXIT(3); + } + } + YY_BREAK +case 660: +YY_RULE_SETUP +#line 4297 "tth.lex" +{ /* cell boundary. Scan @strings if any */ + if(tth_debug&32)fprintf(stderr,"|"); + jstal=-1; + if(*precell && !jshal && *tdalign){ + strcat(precell,"&"); + *tdalign=0; + yy_switch_to_buffer(include_stack[--tth_stack_ptr] ); + yy_pop_state(); + if(tth_debug&32){fprintf(stderr,"%s",precell);} + TTH_SCAN_STRING(precell);*precell=0; + } else if(jshal==1 || jshal==-1 ){ + TTH_HALACT; + } +} + YY_BREAK +case 661: +YY_RULE_SETUP +#line 4311 "tth.lex" +{ + /* if(tth_debug&32) fprintf(stderr,"tth_@, %d\n",margmax);*/ + TTH_TEX_FN("\\tth_atstring#tthdrop1",1); +} + YY_BREAK +case 662: +YY_RULE_SETUP +#line 4315 "tth.lex" +{ + yy_pop_state(); + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1){ + if(jshal<1){ + TTH_CCAT(precell,"{"); + TTH_CCAT(precell,margs[jscratch]); + TTH_CCAT(precell,"}"); + /* if(tth_debug&32) fprintf(stderr,"@string=%s ",precell);*/ + } + rmdef(margkeys,margs,&margmax); + } /* Have to explicitly excape from macro + because <> not handled in talign */ + yy_delete_buffer(YY_CURRENT_BUFFER ); + yy_switch_to_buffer(include_stack[--tth_stack_ptr] ); +} + YY_BREAK +case 663: +/* rule 663 can match eol */ +YY_RULE_SETUP +#line 4331 "tth.lex" +{ + if(jshal==1||jshal==-1){yyless(0);} + if(jstal==-1)jstal=0; + TTH_HALACT; +} + YY_BREAK +case YY_STATE_EOF(talign): +#line 4336 "tth.lex" +{ /* Reset halbuff to start. Gives matrix underflows. + yy_delete_buffer(YY_CURRENT_BUFFER); + if(tth_debug&32)fprintf(stderr,"\nTemplate end rescan:%s> \n",halstring); + halbuff=yy_scan_string(halstring); + yy_switch_to_buffer(halbuff); */ + TTH_HALACT; /*Old approach */ +} + YY_BREAK +case 664: +YY_RULE_SETUP +#line 4343 "tth.lex" +yy_push_state(tempamp); + YY_BREAK +case 665: +YY_RULE_SETUP +#line 4344 "tth.lex" +{ + yy_pop_state(); + /* if(tth_debug&32)fprintf(stderr,"%dprecell=%s\n",jshal,precell);*/ + /* if(jshal>0)*precell=0; don't now throw away */ +} + YY_BREAK +case 666: +YY_RULE_SETUP +#line 4349 "tth.lex" +{TTH_CCAT(precell,yytext);} + YY_BREAK +case 667: +#line 4351 "tth.lex" +case 668: +/* rule 668 can match eol */ +YY_RULE_SETUP +#line 4351 "tth.lex" +{ + if(strcspn(yytext,"\n")==0) TTH_INC_LINE; + if(jshal<1){TTH_CCAT(precell,yytext);} +} + YY_BREAK +case 669: +YY_RULE_SETUP +#line 4355 "tth.lex" +fprintf(stderr,"Unknown tabular format: %s\n",yytext);TTH_HALACT; + YY_BREAK +case 670: +YY_RULE_SETUP +#line 4357 "tth.lex" +TTH_SCAN_STRING("\\par"); + YY_BREAK +case 671: +YY_RULE_SETUP +#line 4358 "tth.lex" +{ + fprintf(tth_fdout,"\n",valignstring); +} + YY_BREAK +case 672: +YY_RULE_SETUP +#line 4361 "tth.lex" +{ + yy_pop_state(); +} + YY_BREAK +case 673: +YY_RULE_SETUP +#line 4365 "tth.lex" +{ + if(*halstring) {yy_push_state(hamper); + }else{fprintf(tth_fdout,"\n",tabwidth);}/* settabs */ +} + YY_BREAK +case 674: +#line 4370 "tth.lex" +case 675: +#line 4371 "tth.lex" +case 676: +#line 4372 "tth.lex" +case 677: +/* rule 677 can match eol */ +YY_RULE_SETUP +#line 4372 "tth.lex" +{ + TTH_INC_MULTI; + if(*halstring){ /* halign and tabular */ + if(jstal==0){ + jstal=1; + jshal=-1; + yyless(0); + TTH_HALSWITCH; + }else{ + jstal=0; + TTH_OUTPUT(TTH_CELL_TAB); + TTH_OUTPUT(TTH_TRC); + if(eqdepth){ + if(tth_istyle&1)eqalignrow=eqalignrow+6*(levhgt[eqclose]-1)+TTH_HGT;else + eqalignrow=eqalignrow+levhgt[eqclose]; + if(tth_debug&2)fprintf(stderr, + "Halcr. eqalignrow=%d, eqaind=%d, levhgt=%d\n", + eqalignrow,eqaind,levhgt[eqclose]); + levhgt[eqclose]=1; + } + yy_push_state(hendline); + yy_delete_buffer(halbuff); /* Reset halbuff to start */ + if(tth_debug&32)fprintf(stderr,"\nEOL rescan:%s> \n",halstring); + TTH_PUSH_BUFF(0);halbuff=yy_scan_string(halstring); + yy_switch_to_buffer(include_stack[--tth_stack_ptr]); + } + }else{ + if(*(yytext+1)=='c'){ + TTH_OUTPUT("\n"); /* settabs */ + }else{ + TTH_OUTPUT("
    "); /* LaTeX Plain text line break */ + } + } +} + YY_BREAK +case 678: +/* rule 678 can match eol */ +YY_RULE_SETUP +#line 4406 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 679: +YY_RULE_SETUP +#line 4407 "tth.lex" + + YY_BREAK +case 680: +YY_RULE_SETUP +#line 4408 "tth.lex" +{ + if(tth_debug&32) fprintf(stderr,"\nInner Multicolumn(%d%d)",jshal,jstal); + if(jstal==0){ + jstal=1; + jshal=-1; + yyless(0); + yy_pop_state();TTH_SCAN_STRING("&"); + TTH_HALSWITCH; + }else /**/{ + jstal=0; + TTH_OUTPUT(TTH_CELL_TAB); + TTH_TEX_FN("\\tth_multistart#tthdrop2",2); + } +} /* See psub below. */ + YY_BREAK +case 681: +YY_RULE_SETUP +#line 4422 "tth.lex" +TTH_SCAN_STRING("\\multispan1"); + YY_BREAK +case 682: +YY_RULE_SETUP +#line 4423 "tth.lex" +{ + if(tth_debug&32) fprintf(stderr,"Inner Multispan(%d%d)",jshal,jstal); + if(jstal==0){ + jstal=1; + jshal=-1; + yyless(0); + yy_pop_state();TTH_SCAN_STRING("&"); + TTH_HALSWITCH; + }else{ + jstal=0; + yy_pop_state(); + TTH_OUTPUT(TTH_CELL_TAB); + TTH_TEX_FN("\\tth_multispan#tthdrop1",1); + } +} /* See psub below */ + YY_BREAK +case 683: +YY_RULE_SETUP +#line 4438 "tth.lex" +{ /* expand first */ + TTH_DO_MACRO + else{ + yyless(0); + strcpy(tdalign,TTH_CELL_TAB); /* Save the cell closing.*/ + yy_pop_state();jshal=0; + TTH_HALSWITCH; + } +} + YY_BREAK +case 684: +YY_RULE_SETUP +#line 4447 "tth.lex" +{ + yyless(0); + strcpy(tdalign,TTH_CELL_TAB); /* Save the cell closing.*/ + yy_pop_state(); + jshal=0; + TTH_HALSWITCH; +} + YY_BREAK +case 685: +YY_RULE_SETUP +#line 4454 "tth.lex" + + YY_BREAK +case 686: +/* rule 686 can match eol */ +YY_RULE_SETUP +#line 4455 "tth.lex" +TTH_INC_MULTI;TTH_OUTPUT(TTH_TRTD); + YY_BREAK +case 687: +YY_RULE_SETUP +#line 4456 "tth.lex" +yy_push_state(matchbrace); + YY_BREAK +case 688: +YY_RULE_SETUP +#line 4457 "tth.lex" + + YY_BREAK +case 689: +/* rule 689 can match eol */ +YY_RULE_SETUP +#line 4458 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 690: +YY_RULE_SETUP +#line 4460 "tth.lex" +{ + if(tth_debug&32) fprintf(stderr,"Multicolumn at start:"); + TTH_OUTPUT(TTH_TRO); + TTH_TEX_FN("\\tth_multiinner#tthdrop2",2); +} + YY_BREAK +/* Add an open brace for a starting multicol */ +case 691: +YY_RULE_SETUP +#line 4466 "tth.lex" +{ + /*TTH_SCAN_STRING("{"); + if(tth_debug&32){fprintf(stderr,"{");}*/ + TTH_SCAN_STRING("\\tth_multistart#tthdrop2"); +} + YY_BREAK +case 692: +YY_RULE_SETUP +#line 4471 "tth.lex" +{ + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1){ + sscanf(margs[jscratch],"%d",&jshal); + }else{fprintf(stderr,"No argument #1 in multicol\n");} + if((jscratch=indexkey("#2",margkeys,&margmax))!=-1){ + strcpy(scrstring,margs[jscratch]); + chscratch=scrstring+strcspn(scrstring,"lrcp"); /* No @strings allowed */ + strcpy(scratchstring,TTH_HALCODE(chscratch)); + }else{*scratchstring=0;fprintf(stderr,"No argument #2 in multicol\n");} + if(tth_debug&32) fprintf(stderr,"%d,%s\n",jshal,scratchstring); + sprintf(scrstring,TTH_MULSTART,jshal,scratchstring); + TTH_OUTPUT(scrstring); + if(eqdepth){TTH_OUTPUT(TTH_EQ5);} + yy_pop_state(); yy_pop_state(); /* get out of hendline/hamper too */ + rmdef(margkeys,margs,&margmax);rmdef(margkeys,margs,&margmax); + jshal++;/* fix */ + TTH_HALSWITCH; + } + YY_BREAK +case 693: +YY_RULE_SETUP +#line 4489 "tth.lex" +{ + TTH_TEXCLOSE else{ + if(tth_debug&32) fprintf(stderr,"Ending tabular\n"); + yy_delete_buffer(halbuff); + yy_pop_state(); + TTH_HAL_POP; + if(eqdepth){ + eqclose--; + if(tth_istyle&1)jscratch=(eqalignrow+6*(levhgt[eqclose+1]-1)+TTH_HGT)/6; + else jscratch=levhgt[eqclose+1]+eqalignrow; + if(jscratch>levhgt[eqclose])levhgt[eqclose]=jscratch; + /* This was an alternative attempt when \\ was forced. Height was broken. + if(eqalignrow>levhgt[eqclose])levhgt[eqclose]=eqalignrow;*/ + if(tth_debug&2)fprintf(stderr, + "Equation Tabular Close: eqclose=%d, eqalignrow=%d, levhgt=%d\n", + eqclose,eqalignrow,levhgt[eqclose]); + TTH_EQA_POP; + } + TTH_CLOSEGROUP;TTH_POP_CLOSING; + if(!eqdepth)yy_pop_state(); /* the disptab we added */ +} +} + YY_BREAK +case 694: +YY_RULE_SETUP +#line 4511 "tth.lex" +{ + yy_pop_state(); /* out of hendline */ + TTH_TEXCLOSE else{ + if(!eqdepth){ + if(tth_push_depth==halignenter){ + TTH_HAL_POP; + } + TTH_CLOSEGROUP;TTH_POP_CLOSING; + }else{ /* This for equation state should not happen */ + eqclose--; + TTH_EQA_POP; + yy_pop_state();yyless(0); + } +}} /* end of halign. */ + YY_BREAK +case 695: +YY_RULE_SETUP +#line 4525 "tth.lex" +{ + yyless(0); TTH_OUTPUT(TTH_TRO); + yy_pop_state(); + jshal=0; + TTH_HALSWITCH; +} + YY_BREAK +case 696: +YY_RULE_SETUP +#line 4532 "tth.lex" +{/*attempt to fix*/ + if(tth_debug&33) fprintf(stderr, + "Noalign in hendline. eqdepth=%d, ncols=%d.\n",eqdepth,ncols); + sprintf(scrstring,"\\multicolumn{%d}{l}{#1}\\cr#tthdrop1",ncols); + TTH_TEX_FN(scrstring,1); +} + YY_BREAK +case 697: +YY_RULE_SETUP +#line 4539 "tth.lex" +TTH_SCAN_STRING("\\multispan1"); + YY_BREAK +case 698: +YY_RULE_SETUP +#line 4540 "tth.lex" +{ + yy_pop_state(); + if(tth_debug&32) fprintf(stderr,"Line Start Multispan\n"); + TTH_TEX_FN("\\tth_multispan#tthdrop1",1); + TTH_OUTPUT(TTH_TRO); +} + YY_BREAK +case 699: +YY_RULE_SETUP +#line 4546 "tth.lex" +{ + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1) + sscanf(margs[jscratch],"%d",&jshal); + if(tth_debug&32) fprintf(stderr," %d",jshal); + sprintf(scrstring,TTH_MULSPAN,jshal); + TTH_OUTPUT(scrstring); + yy_pop_state(); + rmdef(margkeys,margs,&margmax); + jshal++;/* fix */ + TTH_HALSWITCH; +} + YY_BREAK +case 700: +YY_RULE_SETUP +#line 4557 "tth.lex" +{ /* expand first */ + TTH_DO_MACRO + else{ + yyless(0);TTH_OUTPUT(TTH_TRO); + yy_pop_state(); + jshal=0; + TTH_HALSWITCH; + } +} + YY_BREAK +case 701: +YY_RULE_SETUP +#line 4566 "tth.lex" +yyless(0);TTH_SCAN_STRING("\\\\"); + YY_BREAK +case 702: +YY_RULE_SETUP +#line 4568 "tth.lex" +yy_push_state(matchbrace); + YY_BREAK +case 703: +YY_RULE_SETUP +#line 4569 "tth.lex" + + YY_BREAK +case 704: +/* rule 704 can match eol */ +YY_RULE_SETUP +#line 4570 "tth.lex" +TTH_INC_MULTI;TTH_OUTPUT(""); + YY_BREAK +/* End of tabular and halign code.*/ +/********************************************************************/ +case 705: +YY_RULE_SETUP +#line 4574 "tth.lex" +TTH_OUTPUT(TTH_TINY);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 706: +YY_RULE_SETUP +#line 4575 "tth.lex" +TTH_OUTPUT(TTH_SCRIPTSIZE);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 707: +YY_RULE_SETUP +#line 4576 "tth.lex" +TTH_OUTPUT(TTH_FOOTNOTESIZE);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 708: +YY_RULE_SETUP +#line 4577 "tth.lex" +TTH_OUTPUT(TTH_SMALL);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 709: +YY_RULE_SETUP +#line 4578 "tth.lex" +TTH_OUTPUT(TTH_NORMALSIZE);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 710: +YY_RULE_SETUP +#line 4579 "tth.lex" +TTH_OUTPUT(TTH_large);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 711: +YY_RULE_SETUP +#line 4580 "tth.lex" +TTH_OUTPUT(TTH_Large);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 712: +YY_RULE_SETUP +#line 4581 "tth.lex" +TTH_OUTPUT(TTH_LARGE);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 713: +YY_RULE_SETUP +#line 4582 "tth.lex" +TTH_OUTPUT(TTH_HUGE);TTH_PRECLOSE(TTH_SIZEEND); + YY_BREAK +case 714: +YY_RULE_SETUP +#line 4584 "tth.lex" +fprintf(tth_fdout,"
    ");TTH_PRECLOSE("
    "); + YY_BREAK +case 715: +YY_RULE_SETUP +#line 4585 "tth.lex" +fprintf(tth_fdout,"
    ");TTH_PRECLOSE("
    "); + YY_BREAK +/* Insert an implied hbox around the minipage(s) that terminates at the + next \par. Inside the minipages the state is not pargroup. Thus any + \par inside the minipage does not terminate the hbox group. + */ +case 716: +YY_RULE_SETUP +#line 4591 "tth.lex" +{ + yy_push_state(INITIAL); + TTH_TEX_FN_OPT("\\vbox\\bgroup\\hsize=#2#tthdrop2",2,""); +} + YY_BREAK +case 717: +YY_RULE_SETUP +#line 4595 "tth.lex" +{ + TTH_PUSH_CLOSING; /* This will be cancelled at the end of the pargroup*/ + yy_push_state(pargroup); + yy_push_state(INITIAL); + TTH_TEX_FN_OPT("\\tth_hbox\\vbox\\bgroup\\hsize=#2#tthdrop2",2,""); +} + YY_BREAK +case 718: +YY_RULE_SETUP +#line 4601 "tth.lex" +{ + TTH_SCAN_STRING("\\egroup"); + yy_pop_state(); +} + YY_BREAK +/*Default Begin and End Are at end of flex code. */ +/* colordvi-compatible commands. Expand the argument first.*/ +case 719: +YY_RULE_SETUP +#line 4609 "tth.lex" +TTH_TEX_FN("{\\textColor{#1}#2}#tthdrop2",2); + YY_BREAK +/* textColor in colordvi is global. But that's a terrible thing to do + so in TtH it is local. */ +case 720: +YY_RULE_SETUP +#line 4612 "tth.lex" +TTH_TEX_FN("\\edef\\tthexpcol{\\tthtextColor{#1}}\\tthexpcol#tthdrop1",1); + YY_BREAK +case 721: +/* rule 721 can match eol */ +#line 4614 "tth.lex" +case 722: +/* rule 722 can match eol */ +#line 4615 "tth.lex" +case 723: +/* rule 723 can match eol */ +#line 4616 "tth.lex" +case 724: +/* rule 724 can match eol */ +YY_RULE_SETUP +#line 4616 "tth.lex" +{ /* Color defined in one of four ways*/ + chscratch=yytext+strcspn(yytext,"{")+1; + *(chscratch+strcspn(chscratch,"}"))=0; + if((jscratch=sscanf(chscratch,"%f %f %f %f", + &cyanc,&magentac,&yellowc,&blackc))<=2){ + if((jscratch=sscanf(chscratch,"%f , %f , %f , %f", /*Latex comma delimits*/ + &cyanc,&magentac,&yellowc,&blackc))<=2){ + if(jscratch == 1) { /* grey */ + redc=cyanc; + greenc=cyanc; + bluec=cyanc; + }else if(jscratch==0 || jscratch==EOF){ /* Try a named color*/ + if((jscratch=indexkey(chscratch,keys,&nkeys))!=-1){ + /* Custom color.*/ /*Substitute and scan again*/ + TTH_CCPY(scratchstring,yytext); + *(scratchstring+strcspn(scratchstring,"{"))=0; + TTH_CCAT(scratchstring,defs[jscratch]); + *(scratchstring+strcspn(scratchstring,"#"))=0; /* Fix end*/ + TTH_SCAN_STRING(scratchstring); + jscratch=5; + }else{ + jscratch=tth_cmykcolor(chscratch,&cyanc,&magentac,&yellowc,&blackc); + } + }else{ + jscratch=0; + } + } + } + if(jscratch!=5){ /* For non custom colors*/ + if(jscratch==0){ + fprintf(stderr,"**** Unknown color specification %s\n",chscratch); + }else if(jscratch==4){ /* Convert to RGB from CMYK*/ + if((redc=1.-cyanc-blackc)<0.) redc=0.; + if((greenc=1.-magentac-blackc)<0.) greenc=0.; + if((bluec=1.-yellowc-blackc)<0.) bluec=0.; + }else if(jscratch==3){ /* It is RGB already */ + redc=cyanc; + greenc=magentac; + bluec=yellowc; + } + if(jscratch){ + sprintf(colorchar,"%2.2X%2.2X%2.2X", + (int)(redc*255),(int)(greenc*255),(int)(bluec*255)); + if(tth_debug&32)fprintf(stderr,"RGB=%f,%f,%f\ncolorchar=%s\n", + redc,greenc,bluec,colorchar); + if(strstr(yytext,"tthbgC")){/*Box Background color case CSS*/ + sprintf(scratchstring, + "\\special{html:\n}" + ,colorchar); + TTH_PRECLOSE(""); + }else if(strstr(yytext,"tthpageC")){ /* Page color HTML violation*/ + sprintf(scratchstring, + "\\special{html:}",colorchar); + }else{ + sprintf(scratchstring,TTH_COLOR,colorchar); + /* if(!strstr(yytext,"tthspecial")) + Not closing locally for the colordvi special case breaks stuff. */ + {TTH_PRECLOSE(TTH_COLOREND);} + } + TTH_SCAN_STRING(scratchstring); + } + } +} + YY_BREAK +/* The specials that colordvi constructs for dvips for unknown colors. */ +case 725: +/* rule 725 can match eol */ +YY_RULE_SETUP +#line 4680 "tth.lex" +TTH_INC_MULTI; + YY_BREAK +/* TTH_OUTPUT(TTH_COLOREND); Remove because nesting gets broken */ +case 726: +/* rule 726 can match eol */ +YY_RULE_SETUP +#line 4682 "tth.lex" +{ + TTH_INC_MULTI; + TTH_CCPY(scratchstring,"\\tthspecialcolor{"); + /* if(strstr(yytext,"push")){ + TTH_CCPY(scratchstring,"\\tthtextColor{"); + } */ + TTH_CCAT(scratchstring,(strrchr(yytext,' ')+1)); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +/* Latex graphics colors (see grfguide.ps). The syntax is confusingly the + exact opposite of colordvi, in that textcolor colorizes its argument + but color is the switch. Use the preceding function anyway.*/ +case 727: +YY_RULE_SETUP +#line 4695 "tth.lex" +TTH_TEX_FN_OPT("{\\textColor{#2}#3}#tthdrop3",3,""); + YY_BREAK +case 728: +YY_RULE_SETUP +#line 4696 "tth.lex" +TTH_TEX_FN_OPT("\\edef\\tthexpcol{\\tthtextColor{#2}}\\tthexpcol#tthdrop2",2,""); + YY_BREAK +case 729: +YY_RULE_SETUP +#line 4697 "tth.lex" +TTH_TEX_FN_OPT("{\\edef\\tthexpcol{\\tthbgColor{#2}}\\tthexpcol #3}#tthdrop3",3,""); + YY_BREAK +case 730: +YY_RULE_SETUP +#line 4698 "tth.lex" +TTH_TEX_FN_OPT("\\fbox{\\colorbox[#1]{#2}{#3}}#tthdrop3",3,""); + YY_BREAK +case 731: +YY_RULE_SETUP +#line 4699 "tth.lex" +TTH_TEX_FN_OPT("{\\edef\\tthexpcol{\\tthpageColor{#2}}\\tthexpcol}#tthdrop2",2,""); + YY_BREAK +case 732: +#line 4702 "tth.lex" +case 733: +#line 4703 "tth.lex" +case 734: +#line 4704 "tth.lex" +case 735: +#line 4705 "tth.lex" +case 736: +#line 4706 "tth.lex" +case 737: +YY_RULE_SETUP +#line 4706 "tth.lex" +{ + localdef=1; + horizmode=0; /* This protection against \par should not be needed but ...*/ + yy_push_state(define); + yy_push_state(getnumargs); + yy_push_state(getdef); +} + YY_BREAK +case 738: +/* rule 738 can match eol */ +YY_RULE_SETUP +#line 4713 "tth.lex" +{ + fprintf(stderr,"**** %s: works only for non-standard environments\n",yytext); + strcpy(scratchstring,"\\newenvironment"); + strcat(scratchstring,yytext+strcspn(yytext,"{")); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +case 739: +/* rule 739 can match eol */ +YY_RULE_SETUP +#line 4719 "tth.lex" +{ + localdef=0; + horizmode=0; + yy_push_state(getend); /* will define the end environment, see following */ + yy_push_state(define); /* defines the begin environment */ + yy_push_state(getnumargs); + TTH_CCPY(defchar,"\\begin"); + strcat(defchar,strstr(yytext,"{")); + *dupstore=0; /*does getdef*/ + TTH_PUSH_CLOSING;TTH_CCPY(closing,strstr(yytext,"{")); /* save for getend */ +} + YY_BREAK +case 740: +/* rule 740 can match eol */ +YY_RULE_SETUP +#line 4730 "tth.lex" +{ + TTH_INC_MULTI; + /* Newtheorem with numberedlike option. Overrides macro definition.*/ + if(tth_debug&4)fprintf(stderr,"New numbered-like theorem:%s\n",yytext); + strcpy(scratchstring,strstr(yytext,"{")+1); + strcpy(dupstore,strstr(scratchstring,"{")); + *strstr(scratchstring,"}")=0; + strcpy(scrstring,strstr(yytext,"[")+1); + *strstr(scrstring,"]")=0; + sprintf(dupstore2,"\\newenvironment{%s}{\\par\\stepcounter{%s} \\textbf{%s \\arabic{%s}}\\bgroup \\em}{\\par\\egroup}", + scratchstring,scrstring,dupstore,scrstring); + TTH_SCAN_STRING(dupstore2); + *dupstore=0; + *dupstore2=0; +} + YY_BREAK +case 741: +YY_RULE_SETUP +#line 4745 "tth.lex" +{ + yyless(0);yy_pop_state(); + yy_push_state(define); + yy_push_state(getnumargs); + TTH_CCPY(defchar,"\\end");strcat(defchar,closing); + *dupstore=0; /*does getdef*/ + TTH_POP_CLOSING; +} /* end and beginning now defined. */ + YY_BREAK +case 742: +YY_RULE_SETUP +#line 4754 "tth.lex" +{ + if(indexkey("\\amslatex",keys,&nkeys)!=-1){ + TTH_SCAN_STRING("\\verb|"); + }else{ + TTH_OUTPUT(" - "); + } +} + YY_BREAK +/* url that does not use braces */ +case 743: +#line 4763 "tth.lex" +/*\\verb\*?[^ \t\na] { prior to 12 Jan 2002*/ +case 744: +YY_RULE_SETUP +#line 4764 "tth.lex" +{ /* Prevent erroneous \verbatim detection */ + if(tth_debug&8)fprintf(stderr,"Entering Verb state:%s\n",yytext); + chr1[0]=*(yytext+strlen(yytext)-1); + TTH_OUTPUT(TTH_TT1); yy_push_state(verb); + TTH_PUSH_CLOSING; TTH_CCPY(closing,TTH_TT2); + } + YY_BREAK +/* Deal with cases that are not in line.*/ +case 745: +YY_RULE_SETUP +#line 4771 "tth.lex" +TTH_TEX_FN("\\verb#1#tthdrop1",1); + YY_BREAK +/* ************* Enclosing multiple groups in stuff. ******** removed **/ +/* **************Paragraphing closures.***************/ +case 746: +/* rule 746 can match eol */ +YY_RULE_SETUP +#line 4776 "tth.lex" +{ + TTH_INC_LINE;yy_pop_state();TTH_SCAN_STRING("\\par\n");horizmode=1;} + YY_BREAK +case 747: +YY_RULE_SETUP +#line 4778 "tth.lex" +{yyless(0);yy_pop_state();horizmode=1;} + YY_BREAK +case 748: +/* rule 748 can match eol */ +YY_RULE_SETUP +#line 4780 "tth.lex" +{ + TTH_INC_LINE; + if(horizmode==1){ + horizmode=-1; + yy_push_state(parcheck); + fprintf(tth_fdout,"%s",yytext); + }else if(horizmode==-1) { + fprintf(stderr,"**** Abnormal NL in -1 horizmode, pargroup\n"); + /* TTH_SCAN_STRING("\\par"); */ + } +} + YY_BREAK +case 749: +YY_RULE_SETUP +#line 4791 "tth.lex" +{ + TTH_TEXCLOSE else{ + TTH_CLOSEGROUP;TTH_POP_CLOSING; + yy_pop_state(); + if(tth_eqwidth<100) tth_eqwidth=tth_eqwidth+TTH_INDPC; + horizmode=0;/*{TTH_PAR_ACTION} not in pargroup?*/ + } +} + YY_BREAK +case 750: +YY_RULE_SETUP +#line 4799 "tth.lex" +{ + TTH_TEXCLOSE else{ + if(!strcmp(closing,"
    ")) { + /* Do not close the list or pop closing.*/ + fprintf(tth_fdout,"%s","\n
    \n"); + }else{ /* Have to close a different item */ + TTH_CLOSEGROUP; /* This a special case no POP_CLOSING */ + fprintf(tth_fdout,"
    "); + TTH_CCPY(closing,"
    "); + horizmode=0;/*{TTH_PAR_ACTION}*/ + } + TTH_CCPY(argchar,"
    \n
    ");yy_push_state(tokenarg); + } +} + YY_BREAK +case 751: +YY_RULE_SETUP +#line 4813 "tth.lex" +{ + TTH_TEXCLOSE else{ + if(!strcmp(closing,"
    ")) { + /* Do not close the list or pop closing.*/ + fprintf(tth_fdout,"%s","
    \n"); + }else{ /* Have to close a different item */ + TTH_CLOSEGROUP; /* This a special case no POP_CLOSING */ + fprintf(tth_fdout,"
    "); + TTH_CCPY(closing,"
    "); + horizmode=0; + } + TTH_CCPY(argchar,"
    \n");yy_push_state(tokenarg); + } +} + YY_BREAK +case 752: +#line 4829 "tth.lex" +case 753: +#line 4830 "tth.lex" +case 754: +YY_RULE_SETUP +#line 4830 "tth.lex" +{ + sprintf(scratchstring,"\\par%s",yytext); TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +/* Fix for \hang and friends end of a vbox implies a par */ +case 755: +#line 4835 "tth.lex" +case 756: +#line 4836 "tth.lex" +case 757: +YY_RULE_SETUP +#line 4836 "tth.lex" +{ + if(strstr(closing,"--vbox")){ + TTH_SCAN_STRING("\\par}"); + }else{ + TTH_SCAN_STRING("\\tthparendgroup"); + } +} + YY_BREAK +case 758: +YY_RULE_SETUP +#line 4845 "tth.lex" +{ + if(strstr(tth_texclose[tth_push_depth-1],"\\tthhbclose")){ + if(tth_debug&1024){ + fprintf(stderr,"Par in hhbc:%s\n",tth_texclose[tth_push_depth-1]);} + yyless(0);TTH_SCAN_STRING(tth_texclose[tth_push_depth-1]); + *tth_texclose[tth_push_depth-1]=0; + }else{ + if(horizmode) {TTH_PAR_ACTION} + else {fprintf(tth_fdout,"\n");} + } +} + YY_BREAK +case 759: +/* rule 759 can match eol */ +YY_RULE_SETUP +#line 4856 "tth.lex" +{ + TTH_CHECK_LENGTH; + if(bracecount) fprintf(stderr, + "**** Error. Bracecount=%d nonzero, line %d\n", + bracecount,tth_num_lines); + TTH_INC_LINE; + if(horizmode==1){ + horizmode=-1; + yy_push_state(parcheck); + TTH_OUTPUT(yytext); + }else if(horizmode==-1) { + fprintf(stderr,"**** Abnormal NL in -1 horizmode, parclose\n"); + } +} + YY_BREAK +case 760: +YY_RULE_SETUP +#line 4871 "tth.lex" +{ + if(horizmode) { + {TTH_PAR_ACTION} + } else {fprintf(tth_fdout,"\n");} + } + YY_BREAK +case 761: +/* rule 761 can match eol */ +YY_RULE_SETUP +#line 4877 "tth.lex" +{ + TTH_CHECK_LENGTH; + if(bracecount) fprintf(stderr,"**** Error. Bracecount=%d nonzero, line %d\n", + bracecount,tth_num_lines); + TTH_INC_LINE; + if(horizmode==1){ + horizmode=-1; + yy_push_state(parcheck); + TTH_OUTPUT(yytext); + }else if(horizmode==-1) { + fprintf(stderr,"**** Abnormal NL in -1 horizmode.\n"); +/* {TTH_PAR_ACTION} */ + } + } + YY_BREAK +/*************************** General Rules. *****************/ +case 762: +YY_RULE_SETUP +#line 4893 "tth.lex" +{ + TTH_PUSH_CLOSING; fprintf(tth_fdout,"\n

    "); + TTH_CCPY(closing,"

    \n"); + yy_push_state(pargroup);tth_eqwidth=tth_eqwidth-TTH_INDPC;} + YY_BREAK +case 763: +YY_RULE_SETUP +#line 4897 "tth.lex" +{ + TTH_OUTPUT("\n
    \n"); + TTH_CCPY(argchar,"
    "); + yy_push_state(tokenarg); +} + YY_BREAK +case 764: +YY_RULE_SETUP +#line 4902 "tth.lex" +{ + fprintf(tth_fdout,"\n
    ");yy_push_state(tokenarg); + TTH_CCPY(argchar,"
    ");} + YY_BREAK +case 765: +#line 4908 "tth.lex" +case 766: +#line 4909 "tth.lex" +case 767: +#line 4910 "tth.lex" +case 768: +YY_RULE_SETUP +#line 4910 "tth.lex" +TTH_SWAP("\\tth_underline "); + YY_BREAK +case 769: +YY_RULE_SETUP +#line 4911 "tth.lex" +yy_push_state(ruledim);TTH_OUTPUT("
    \n"); + YY_BREAK +case 770: +YY_RULE_SETUP +#line 4912 "tth.lex" +yy_push_state(ruledim); + YY_BREAK +case 771: +#line 4914 "tth.lex" +case 772: +YY_RULE_SETUP +#line 4914 "tth.lex" +{ + /* if(horizmode) {fprintf(tth_fdout,TTH_PAR);horizmode=0;} replaced by*/ + if(horizmode) {{TTH_PAR_ACTION}} + fprintf(tth_fdout,"

    "); +} + YY_BREAK +case 773: +#line 4920 "tth.lex" +case 774: +YY_RULE_SETUP +#line 4920 "tth.lex" +{ + if(horizmode) {{TTH_PAR_ACTION}} + fprintf(tth_fdout,"
    "); +} + YY_BREAK +case 775: +#line 4925 "tth.lex" +case 776: +#line 4926 "tth.lex" +case 777: +YY_RULE_SETUP +#line 4926 "tth.lex" +{ + if(horizmode) {{TTH_PAR_ACTION}} +} + YY_BREAK +/* Suck up prior whitespace to prevent paragraphs in lists*/ +case 778: +/* rule 778 can match eol */ +YY_RULE_SETUP +#line 4931 "tth.lex" +{ + TTH_EXTRACT_COMMENT{TTH_INC_MULTI;TTH_OUTPUT("
    ");} +} + YY_BREAK +/* Because of sucking up, this must be explicit. */ +case 779: +/* rule 779 can match eol */ +YY_RULE_SETUP +#line 4935 "tth.lex" +{ + TTH_EXTRACT_COMMENT{GET_DIMEN;} +} + YY_BREAK +/* Try a better job at sucking up whitespace before items. */ +case 780: +/* rule 780 can match eol */ +YY_RULE_SETUP +#line 4939 "tth.lex" +{ + TTH_EXTRACT_COMMENT{ /* Fix tth-comment before item bug. */ + TTH_INC_MULTI; + TTH_OUTPUT(closing); + *closing=0; + strcat(closing,"\n
    \n"); + strcat(closing,"
  • \n"); + fprintf(tth_fdout,"\n
  • "); + } +} + YY_BREAK +/* New approach to optional item argument. Don't try to grab the whole.*/ +case 781: +/* rule 781 can match eol */ +YY_RULE_SETUP +#line 4950 "tth.lex" +{ + TTH_EXTRACT_COMMENT{ /* Fix tth-comment before item bug. */ + TTH_INC_MULTI; + if(tth_htmlstyle&2){/* Strict xhtml doesn't allow text outside
  • */ + TTH_OUTPUT(closing); + *closing=0; + strcat(closing,"\n
    \n"); + strcat(closing,"
  • \n"); + fprintf(tth_fdout,"\n
  • "); + TTH_SCAN_STRING("\\tthnooutopt["); + }else{ + fprintf(tth_fdout,"\n
    "); + TTH_SCAN_STRING("\\tthoutopt["); + } + } +} + YY_BREAK +case 782: +YY_RULE_SETUP +#line 4966 "tth.lex" +fprintf(tth_fdout,"
        "); + YY_BREAK +case 783: +YY_RULE_SETUP +#line 4967 "tth.lex" +fprintf(tth_fdout,"
            "); + YY_BREAK +case 784: +/* rule 784 can match eol */ +YY_RULE_SETUP +#line 4968 "tth.lex" +{ /* Space might not mean no opt. */ + /* If we can immediately detect absence of opt arg. Don't put dt section*/ + TTH_INC_MULTI; + jscratch=strlen(yytext)-1; /*circumlocution necessary*/ + yyless(jscratch); + TTH_OUTPUT(closing); strcpy(closing,"\n"); + fprintf(tth_fdout,"\n\t
    "); + tth_index_line++; +} + YY_BREAK +case 785: +/* rule 785 can match eol */ +YY_RULE_SETUP +#line 4977 "tth.lex" +{ /* If opt arg absent just gives null dt*/ + TTH_EXTRACT_COMMENT{ /* Fix tth-comment before item bug. */ + TTH_INC_MULTI; + TTH_OUTPUT(closing); strcpy(closing,"
    \n"); + TTH_TEX_FN_OPT("\\special{html:
    }#1\\special{html:
    \n\t
    }#tthdrop1",1,""); + tth_index_line++; + } +} + YY_BREAK +case 786: +/* rule 786 can match eol */ +YY_RULE_SETUP +#line 4985 "tth.lex" +{ + TTH_EXTRACT_COMMENT{ /* Fix tth-comment before item bug. */ + TTH_INC_MULTI; + TTH_OUTPUT(closing); strcpy(closing,"
    \n"); + fprintf(tth_fdout,"
        "); + tth_index_line++; + } +} + YY_BREAK +case 787: +/* rule 787 can match eol */ +YY_RULE_SETUP +#line 4993 "tth.lex" +{ + TTH_EXTRACT_COMMENT{ /* Fix tth-comment before item bug. */ + TTH_INC_MULTI; + TTH_OUTPUT(closing); strcpy(closing,"
    \n"); + fprintf(tth_fdout,"
            "); + tth_index_line++; + } +} + YY_BREAK +case 788: +YY_RULE_SETUP +#line 5001 "tth.lex" +{ + fprintf(tth_fdout,"%s","\n
    \n
    \n");TTH_PUSH_CLOSING; + TTH_CCPY(closing,"
    "); + TTH_CCPY(argchar,"\n
    \n"); + yy_push_state(pargroup);tth_eqwidth=tth_eqwidth-TTH_INDPC; + yy_push_state(tokenarg); /* item code */ + } + YY_BREAK +case 789: +YY_RULE_SETUP +#line 5008 "tth.lex" +{ + fprintf(tth_fdout,"\n
    ");TTH_PUSH_CLOSING; + TTH_CCPY(closing,"
    "); + TTH_CCPY(argchar,"
    "); + yy_push_state(pargroup);tth_eqwidth=tth_eqwidth-TTH_INDPC; + yy_push_state(tokenarg); /* itemitem code */ +} + YY_BREAK +case 790: +YY_RULE_SETUP +#line 5015 "tth.lex" +{TTH_PUSH_CLOSING;fprintf(tth_fdout,"\n
    ");} + YY_BREAK +case 791: +YY_RULE_SETUP +#line 5016 "tth.lex" +{ + TTH_TEXCLOSE else{ + TTH_CLOSEGROUP;TTH_POP_CLOSING;fprintf(tth_fdout,"\n
    ");} +} + YY_BREAK +case 792: +YY_RULE_SETUP +#line 5021 "tth.lex" +{ /* Now using embracetok Sep 98*/ + ftntno++; + tth_encode(ftntcode,ftntno); + if(tth_LaTeX){ /* convert to plain TeX form */ + if((chscratch=strstr(yytext,"["))){ /* optional argument case */ + strcpy(scratchstring,chscratch+1); + *(scratchstring+strcspn(scratchstring,"]"))=0; + sprintf(dupstore,"{$^{%s}$}",scratchstring); + ftntno--; + sscanf(scratchstring,"%d",&js2); + tth_encode(ftntcode,js2); + }else{ + sprintf(dupstore,"{$^{%d}$}",ftntno); + } + } + if(tth_splitfile)sprintf(scratchstring,"",ftntcode,ftntcode);else /*sf*/ + sprintf(scratchstring, + "",ftntcode,ftntcode); + TTH_OUTPUT(scratchstring); + bracecount--; + TTH_CCPY(argchar,"\\tth_footnote"); + storetype=3; /* Make argchar to be rescanned */ + yy_push_state(dupgroup); /* Puts in anchors */ + yy_push_state(embracetok); +} + YY_BREAK +case 793: +YY_RULE_SETUP +#line 5047 "tth.lex" +{ /* xdef footnote with reference.*/ + if(tth_debug&4) fprintf(stderr,"tthfootnote, dupstore=%s\n",dupstore); + TTH_OUTPUT(""); /* end the anchors */ + sprintf(newcstr, + "\\xdef\\tthFtNt%s{\\tthhref{%s#tthFref%s}{#1}{#2}\\end}#tthdrop2", + ftntcode,filechar,ftntcode); + TTH_TEX_FN(newcstr,2); + } + YY_BREAK +case 794: +YY_RULE_SETUP +#line 5056 "tth.lex" +{ + yy_push_state(uppercase); + tth_push_depth--; + TTH_PRETEXCLOSE("\\tth_endupper"); + tth_push_depth++; +} + YY_BREAK +case 795: +YY_RULE_SETUP +#line 5062 "tth.lex" +{ + for(jscratch=0;jscratch\n"); + TTH_HAL_PUSH; + *halstring=0; + halignenter=tth_push_depth; + } + YY_BREAK +case 800: +YY_RULE_SETUP +#line 5087 "tth.lex" +{ + strcpy(scratchstring," border=\"1\""); + TTH_CCAT(scrstring,yytext); +} + YY_BREAK +/* Add template interpretation into && strings and alignment.*/ +case 801: +YY_RULE_SETUP +#line 5092 "tth.lex" +{ + TTH_CCAT(halstring,tdalign); + /* TTH_CCAT(scrstring,"}&|"); */ + TTH_CCAT(scrstring,"&|"); + TTH_CCAT(halstring,scrstring); + /* strcpy(scrstring,"&{");*/ + strcpy(scrstring,"&"); + /*TTH_CCAT(scrstring,"&|"); + if(strlen(scrstring)>3){ + TTH_CCAT(halstring,scrstring); + }else {TTH_CCAT(halstring,"|");} + strcpy(scrstring,"&"); Old version */ + *tdalign=0; + js2=ncols; /* signifies that we are in the first part of the cell */ +} + YY_BREAK +case 802: +YY_RULE_SETUP +#line 5107 "tth.lex" +{ + if(*tdalign==0) { + strcpy(tdalign,"r"); + } else if(ncols!=js2){ + if(*tdalign=='r') strcpy(tdalign,"c"); else strcpy(tdalign,"l"); + yy_push_state(removespace); + } +} + YY_BREAK +case 803: +YY_RULE_SETUP +#line 5115 "tth.lex" +{ + ncols++; + TTH_CCAT(scrstring,"&"); + if(strlen(scrstring)>2){TTH_CCAT(halstring,scrstring);} + strcpy(scrstring,"&"); + if(!*tdalign) strcpy(tdalign,"l"); +} + YY_BREAK +case 804: +#line 5123 "tth.lex" +case 805: +/* rule 805 can match eol */ +YY_RULE_SETUP +#line 5123 "tth.lex" +TTH_INC_LINE;TTH_CCAT(scrstring,yytext); + YY_BREAK +case 806: +YY_RULE_SETUP +#line 5124 "tth.lex" +TTH_CCAT(scrstring,yytext); + YY_BREAK +case 807: +YY_RULE_SETUP +#line 5125 "tth.lex" +{ /* New version uses the scanning of template. */ + /* + TTH_CCAT(scrstring,"&"); + TTH_CCAT(halstring,tdalign); + if(strlen(scrstring)>2) {TTH_CCAT(halstring,scrstring);} + */ + /* TTH_CCAT(scrstring,"}&"); */ + TTH_CCAT(scrstring,"&"); + TTH_CCAT(halstring,tdalign); + TTH_CCAT(halstring,scrstring); + if(tth_debug&32)fprintf(stderr,"halign format string:%s> ",halstring); + *tdalign=0;*dupstore=0; + yy_pop_state(); + yy_push_state(hendline); /* check for multicol at start */ + TTH_PUSH_BUFF(0);halbuff=yy_scan_string(halstring); /* Setup halbuff */ + yy_switch_to_buffer(include_stack[--tth_stack_ptr]); + fprintf(tth_fdout,"\n",scratchstring); +} + YY_BREAK +/* end of halign and htemplate */ +/* Hack of valign allowing only one row . */ +case 808: +/* rule 808 can match eol */ +YY_RULE_SETUP +#line 5147 "tth.lex" +{ + TTH_INC_MULTI; + yy_push_state(valign); + yy_push_state(vtemplate); + *valignstring=0; + valsec=0; + TTH_PRETEXCLOSE("\\tthexitvalign"); + TTH_PUSH_CLOSING; + TTH_CCPY(closing,"\n"); + } + YY_BREAK +case 809: +YY_RULE_SETUP +#line 5158 "tth.lex" +valsec++; + YY_BREAK +case 810: +YY_RULE_SETUP +#line 5159 "tth.lex" +{ + if(valsec){ + if(*valignstring){ + TTH_CCPY(valignstring," valign=\"middle\""); + }else{ + TTH_CCPY(valignstring," valign=\"top\""); + } + }else{ + TTH_CCPY(valignstring," valign=\"bottom\""); + } +} + YY_BREAK +case 811: +YY_RULE_SETUP +#line 5170 "tth.lex" +{ + fprintf(tth_fdout,"\n",valignstring); + yy_pop_state(); +} + YY_BREAK +case 812: +#line 5177 "tth.lex" +case 813: +YY_RULE_SETUP +#line 5177 "tth.lex" +{ + yy_pop_state(); +} + YY_BREAK +/* altered approach to input*/ +case 814: +#line 5182 "tth.lex" +case 815: +#line 5183 "tth.lex" +case 816: +YY_RULE_SETUP +#line 5183 "tth.lex" +yy_push_state(inputfile);yy_push_state(removespace); + YY_BREAK +case YY_STATE_EOF(inputfile): +#line 5184 "tth.lex" +TTH_SCAN_STRING(" \\tth_eof"); + YY_BREAK +case 817: +/* rule 817 can match eol */ +#line 5186 "tth.lex" +case 818: +/* rule 818 can match eol */ +YY_RULE_SETUP +#line 5186 "tth.lex" +TTH_INC_LINE;TTH_SCAN_STRING(" "); + YY_BREAK +case 819: +#line 5188 "tth.lex" +case 820: +YY_RULE_SETUP +#line 5188 "tth.lex" +{ + if ( tth_stack_ptr >= MAX_INCLUDE_DEPTH ) + { + fprintf(stderr, "**** Error: Fatal. Includes nested too deeply. Line %d\n",tth_num_lines); + TTH_EXIT( 1 ); + } + if(tth_allowinput){ + strcpy(scratchstring,input_filename); + if( (tth_inputfile=TTH_FILE_OPEN(scratchstring)) == NULL){ + strcat(scratchstring,".tex"); + if ( (tth_inputfile=fopen(scratchstring,"r")) == NULL){ + if(strlen(tth_texinput_path) > 0){ + chscratch=tth_texinput_path; + while(strlen(chscratch)){ + if((js2=strcspn(chscratch,PATH_SEP))){ + strcpy(scratchstring,chscratch); + strcpy(scratchstring+js2,DIR_SEP); + strcat(scratchstring,input_filename); + if(tth_debug&128) + fprintf(stderr,"Input try file:%s\n",scratchstring); + chscratch=chscratch+js2; + chscratch=chscratch+strspn(chscratch,PATH_SEP); + if ( (tth_inputfile=fopen(scratchstring,"r")) == NULL){ + strcat(scratchstring,".tex"); + tth_inputfile=fopen(scratchstring,"r"); + } + }else{++chscratch;} + if(tth_inputfile)break; + } + } + } + } + if(tth_inputfile){ + if(tth_debug&1) fprintf(stderr,"Input file: %s\n",scratchstring); + sprintf(scrstring,"\\tth_fileclose%p ",tth_inputfile); + TTH_SCAN_STRING(scrstring); + include_stack[tth_stack_ptr++] = YY_CURRENT_BUFFER; + yy_switch_to_buffer(yy_create_buffer(tth_inputfile,YY_BUF_SIZE)); + }else{ + fprintf(stderr,"Input file %s not found\n",input_filename); + } + }else{ + fprintf(stderr,"Input of file %s not allowed.\n",input_filename); + } + *input_filename=0; + yy_pop_state(); + } + YY_BREAK +case 821: +YY_RULE_SETUP +#line 5235 "tth.lex" + + YY_BREAK +case 822: +YY_RULE_SETUP +#line 5236 "tth.lex" +TTH_CCAT(input_filename,yytext); + YY_BREAK +/* Specific internal commands to expand in inputfile */ +case 823: +YY_RULE_SETUP +#line 5238 "tth.lex" +TTH_SCAN_STRING(tth_latex_file); + YY_BREAK +case 824: +YY_RULE_SETUP +#line 5239 "tth.lex" +{ + TTH_DO_MACRO + else{ + TTH_CCAT(input_filename,yytext); + } +} + YY_BREAK +case 825: +/* rule 825 can match eol */ +#line 5247 "tth.lex" +case 826: +/* rule 826 can match eol */ +YY_RULE_SETUP +#line 5247 "tth.lex" +{ +#ifdef MSDOS + /* pointer reading is broken in DJGPP */ + sscanf(yytext,"\\tth_fileclose%x ",&tth_inputfile); +#else + sscanf(yytext,"\\tth_fileclose%p ",&tth_inputfile); +#endif + if(!fclose(tth_inputfile)) { + if(tth_debug&1){ + fprintf(stderr,"Closing %s.\n",yytext); + } + }else{ + fprintf(stderr,"**** Error closing %s. ",yytext); + fprintf(stderr," Apparent file pointer:%p.\n",tth_inputfile); + } + + tth_inputfile=NULL; +} + YY_BREAK +case 827: +/* rule 827 can match eol */ +YY_RULE_SETUP +#line 5266 "tth.lex" +{ + TTH_INC_MULTI; + if(tth_fontguess){/* Try to guess what size etc is being called for. */ + strcpy(scratchstring,yytext); + jscratch=0; + js2=0; + if(tth_debug&2048)fprintf(stderr,"Font definition start:%s\n",scratchstring); + if((chscratch=strstr(scratchstring," at ")) != NULL){ /* at NNpt */ + chscratch=chscratch+4+strspn(chscratch+4," "); + if(strspn(chscratch,"0123456789")){ + *(chscratch+strspn(chscratch,"0123456789"))=0; + sscanf(chscratch,"%d",&js2); + jscratch=(js2-10)/2; + } + } + if(!js2){ /* No "at", Guess scaled */ + if((chscratch=strstr(scratchstring,"\\magstep")) != NULL){ + if(strspn(chscratch+8,"1234567890")){ + *(chscratch+8+strspn(chscratch+8,"1234567890"))=0; + sscanf(chscratch+8,"%d",&jscratch); + *chscratch=0; + } + } + if(strcspn(scratchstring,"123456789") != strlen(scratchstring)){ + sscanf(scratchstring+strcspn(scratchstring,"123456789"),"%d",&js2); + jscratch=jscratch + (js2-10)/2; /* Approx */ + *(scratchstring+strcspn(scratchstring,"123456789"))=0; + } + } + chscratch=strstr(scratchstring+1,"\\"); + chscratch=chscratch+strcspn(chscratch," ="); + if(strstr(chscratch,"mb") != NULL) strcpy(defstore,"\\rmfamily\\bf"); + else if(strstr(chscratch,"mr") != NULL) strcpy(defstore,"\\rmfamily"); + else if(strstr(chscratch,"mssb") != NULL) strcpy(defstore,"\\sffamily\\bf"); + else if(strstr(chscratch,"mssi") != NULL) strcpy(defstore,"\\sffamily\\it"); + else if(strstr(chscratch,"mss") != NULL) strcpy(defstore,"\\sffamily "); + else if(strstr(chscratch,"msl") != NULL) strcpy(defstore,"\\rmfamily\\it"); + else if(strstr(chscratch,"mi") != NULL) strcpy(defstore,"\\rmfamily\\it"); + else if(strstr(chscratch,"mtti") != NULL) strcpy(defstore,"\\ttfamily\\it"); + else if(strstr(chscratch,"mttb") != NULL) strcpy(defstore,"\\ttfamily\\bf"); + else if(strstr(chscratch,"mtt") != NULL) strcpy(defstore,"\\upshape\\ttfamily"); + else *defstore=0; + switch(jscratch){ + case 1: strcat(defstore,"\\large ");break; + case 2: strcat(defstore,"\\Large ");break; + case 3: strcat(defstore,"\\LARGE ");break; + case 4: case 5: case 6: case 7: case 8: strcat(defstore,"\\huge ");break; + case -1: strcat(defstore,"\\small ");break; + case -2: strcat(defstore,"\\footnotesize ");break; + case -3: strcat(defstore,"\\scriptsize ");break; + case -4: case -5: case -6: strcat(defstore,"\\tiny ");break; + default : strcat(defstore,"\\normalsize ");break; + } + chscratch=strstr(scratchstring+1,"\\"); + *(chscratch+strcspn(chscratch," ="))=0; + sprintf(dupstore,"\\def%s{%s}",chscratch,defstore); + if(tth_debug&2048)fprintf(stderr,"Font definition:%s\n",dupstore); + *defstore=0; + TTH_SCAN_STRING(dupstore); + *dupstore=0; + }else fprintf(tth_fdout," "); +} + YY_BREAK +/* Latex counters etc.*/ +case 828: +/* rule 828 can match eol */ +YY_RULE_SETUP +#line 5329 "tth.lex" +{ + TTH_INC_MULTI; + sprintf(newcstr,"\\tth_newcounter%s",strstr(yytext,"{")); + TTH_TEX_FN_OPT(newcstr,1,""); + /* This does not work using scratchstring. Need a permanent String*/ +} + YY_BREAK +case 829: +YY_RULE_SETUP +#line 5335 "tth.lex" +{ + if(tth_debug&4)fprintf(stderr,"Newcounter: %s\n",yytext); + strcpy(dupstore2,"\\");strcat(dupstore2,yytext+strcspn(yytext,"{")+1); + *(strstr(dupstore2,"}"))=0; + mkkey(dupstore2,countkeys,&ncounters); + if(tth_debug&4) fprintf(stderr,"Created new counter %s\n",dupstore2); + sprintf(scratchstring,"\\gdef\\the%s{\\arabic{%s}}",dupstore2+1,dupstore2+1); + strcpy(scrstring,yytext); + TTH_SCAN_STRING(scratchstring); + /* New using opt arg.*/ + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1){ + sprintf(scratchstring,"\\%s",margs[jscratch]); + yy_pop_state(); + rmdef(margkeys,margs,&margmax); + } + if(strlen(scratchstring)>1){ + if((ind=indexkey(scratchstring,countkeys,&ncounters)) != -1){ + *scrstring=0; + i=ind; + if(countwithins[ind]){ + strcpy(scrstring,countwithins[i]); + i++; + rmkey(countwithins,&i); + } + strcat(scrstring,dupstore2+1); + strcat(scrstring,","); + mkkey(scrstring,countwithins,&i); + if(tth_debug&4)fprintf(stderr,"Added %s to withins of %s:%s\n", + dupstore2+1,scratchstring,scrstring); + }else{ + fprintf(stderr,"**** Error: No such counter for \"within\" option: %s. Line %d\n", + scratchstring,tth_num_lines); + } + } + *dupstore2=0; + if(horizmode)horizmode=1; + } + YY_BREAK +case 830: +/* rule 830 can match eol */ +YY_RULE_SETUP +#line 5372 "tth.lex" +{ + TTH_INC_MULTI; + if(tth_debug&4)fprintf(stderr,"Setcounter: %s\n",yytext); + yytext=yytext+strcspn(yytext,"{"); + TTH_CCPY(argchar,yytext);*(argchar+strcspn(argchar,"}"))=0; + *(argchar)='\\'; + if((ind=indexkey(argchar,countkeys,&ncounters)) != -1){ + yy_push_state(counterset); + if((chscratch=strstr(yytext,"\\value")) != NULL){ + strcpy(dupstore2,(chscratch+6)); + *dupstore2='\\'; + }else{ + strcpy(dupstore2,yytext+1+strcspn(yytext+1,"{")+1); + } + *(dupstore2+strcspn(dupstore2,"}"))=0; + TTH_SCAN_STRING(dupstore2); + *dupstore2=0; + }else fprintf(stderr,"**** No counter: %s to set. Line %d\n",argchar,tth_num_lines); + *argchar=0; + } + YY_BREAK +case 831: +YY_RULE_SETUP +#line 5392 "tth.lex" +iac=-1;yy_push_state(advance); yy_push_state(removespace); + YY_BREAK +case 832: +YY_RULE_SETUP +#line 5393 "tth.lex" +{ + if(strstr(yytext,"alph")) jscratch=1; + else if(strstr(yytext,"Alph")) jscratch=2; + else if(strstr(yytext,"roman")) jscratch=3; + else if(strstr(yytext,"Roman")) jscratch=4; + else jscratch=0; + if((chscratch=strstr(yytext,"{"))!=NULL) yytext=chscratch; + else yytext=yytext+3; + if((chscratch=strstr(yytext,"}"))!=NULL) *chscratch=0; + *yytext='\\'; + TTH_SCAN_STRING(yytext); + yy_push_state(number);if(horizmode)horizmode=1; + } + YY_BREAK +case 833: +/* rule 833 can match eol */ +YY_RULE_SETUP +#line 5406 "tth.lex" +{ + TTH_INC_MULTI; + strcpy(scratchstring,yytext+strcspn(yytext,"{")); + *scratchstring='\\'; + *(scratchstring+strlen(scratchstring)-1)=0; + if((ind=indexkey(scratchstring,countkeys,&ncounters)) != -1){ + strcpy(dupstore2,"\\addtocounter"); + strcat(dupstore2,yytext+strcspn(yytext,"{")); + strcat(dupstore2,"{1}"); + if(countwithins[ind]){ + strcpy(scrstring,countwithins[ind]); + chscratch=scrstring; + while((chs2=strstr(chscratch,",")) != NULL){ + *chs2=0; + sprintf(dupstore2+strlen(dupstore2),"\\setcounter{%s}{0}",chscratch); + chscratch=chs2+1; + } + } + if(tth_debug&4) fprintf(stderr,"Stepping counter:%s\n",dupstore2); + TTH_SCAN_STRING(dupstore2); + }else{ + fprintf(stderr,"**** No counter:%s to step. Line %d\n",scratchstring,tth_num_lines); + } + *dupstore2=0;if(horizmode)horizmode=1; + } + YY_BREAK +case 834: +/* rule 834 can match eol */ +YY_RULE_SETUP +#line 5431 "tth.lex" +{ + TTH_INC_MULTI; + chscratch=yytext+strcspn(yytext,"{")+1; + chs2=chscratch+strcspn(chscratch,"{")+1; + *(chscratch+strcspn(chscratch,"}"))=0; + *(chs2+strcspn(chs2,"}"))=0; + strcpy(scratchstring,"\\"); + strcat(scratchstring,chs2); + if((ind=indexkey(scratchstring,countkeys,&ncounters)) != -1){ + *scrstring=0; + i=ind; + if(countwithins[ind]){ + strcpy(scrstring,countwithins[i]); + rmkey(countwithins,&i); + i++; + } + strcat(scrstring,chscratch); + strcat(scrstring,","); + mkkey(scrstring,countwithins,&i); + if(tth_debug&4)fprintf(stderr,"Added %s to withins of %s:%s\n", + chscratch,scratchstring,scrstring); + }else{ + fprintf(stderr,"**** Error: No such counter for \"within\" option: %s. Line %d\n", + scratchstring,tth_num_lines); + } +} + YY_BREAK +/* TeX counters */ +case 835: +YY_RULE_SETUP +#line 5459 "tth.lex" +{ + if(horizmode)horizmode=1;yy_push_state(getcount);yy_push_state(removespace);} + YY_BREAK +case 836: +YY_RULE_SETUP +#line 5461 "tth.lex" +{ + mkkey(yytext,countkeys,&ncounters);yy_pop_state(); + } + YY_BREAK +case 837: +YY_RULE_SETUP +#line 5464 "tth.lex" +fprintf(stderr,"Ill-formed newcount");yy_pop_state(); + YY_BREAK +case 838: +YY_RULE_SETUP +#line 5467 "tth.lex" +{iac=-1;yy_push_state(advance);if(horizmode)horizmode=1;} + YY_BREAK +case 839: +/* rule 839 can match eol */ +YY_RULE_SETUP +#line 5469 "tth.lex" +TTH_INC_MULTI; + YY_BREAK +/* +\\[a-zA-Z]+((margin)|(width)|(height)|(size)|(offset)|(indent)){SP}*(by)? { + TTH_INC_MULTI; + if(tth_debug&4) fprintf(stderr,"Removing dimension advance: %s\n",yytext); + yy_pop_state(); + GET_DIMEN; + } Override the real command */ +case 840: +/* rule 840 can match eol */ +YY_RULE_SETUP +#line 5479 "tth.lex" +{ + /* Latex addtocounter. Convert into plain form. */ + TTH_INC_MULTI; + *yytext='\\'; + *(yytext+strcspn(yytext,"}"))=' '; + *(yytext+strcspn(yytext,"{"))=' '; + *(yytext+strlen(yytext)-1)=0; + if((chscratch=strstr(yytext,"\\value")) != NULL){ + strcpy(chscratch," "); + *(chscratch+6)='\\'; + *(chscratch+strcspn(chscratch,"}"))=0; + } + if(tth_debug&4)fprintf(stderr,"Latex advance string:%s\n",yytext); + TTH_SCAN_STRING(yytext); +} + YY_BREAK +case 841: +YY_RULE_SETUP +#line 5495 "tth.lex" + + YY_BREAK +case 842: +YY_RULE_SETUP +#line 5496 "tth.lex" +{/* Dimension advancing: get counter name.*/ + chscratch=yytext+strlen("\\tthdimen"); + strcpy(newcstr,chscratch+strspn(chscratch," ")); + yy_pop_state(); + yy_push_state(dimadv); /* Prepare to get second and advance. */ + dimadvstate=0; + GET_DIMEN; + if(tth_debug&1024)fprintf(stderr,"Advancing %s\n",newcstr); +} + YY_BREAK +case 843: +/* rule 843 can match eol */ +YY_RULE_SETUP +#line 5506 "tth.lex" +{ + yyless(0); + if(!dimadvstate){ /* Return of first time we have the first num,unit. */ + cnumber=anumber; + strcpy(scrstring,scratchstring); + GET_DIMEN; + dimadvstate=1; + }else{ + if(tth_debug&1024)fprintf(stderr,"Adding: %f %s, %f %s\n", + cnumber,scrstring,anumber,scratchstring); + adddimen(&cnumber,scrstring,&anumber,scratchstring); + if(*scrstring=='%')strcpy(scrstring,"\\tth_hsize"); + yy_pop_state(); + sprintf(scratchstring,"%s %f%s",newcstr,cnumber,scrstring); + if(tth_debug&1024)fprintf(stderr,"Dimension advance string:%s\n",scratchstring); + TTH_SCAN_STRING(scratchstring); + dimadvstate=0; + } +} + YY_BREAK +case 844: +YY_RULE_SETUP +#line 5527 "tth.lex" +{ + if(strcspn(yytext,"-") < strlen(yytext)) minus=-1; +} + YY_BREAK +case 845: +#line 5531 "tth.lex" +case 846: +YY_RULE_SETUP +#line 5531 "tth.lex" +{ + if(iac==-1){ /* First time we are getting the one to set */ + iac=indexkey(yytext,countkeys,&ncounters); + if(tth_debug&4) fprintf(stderr,"First advance:%s: %d, currently: %d.\n", + yytext,iac,counters[iac]); + if(iac == -1) { + TTH_DO_MACRO else{ + if(!(tth_debug&32768)) + fprintf(stderr,"**** Unknown counter to advance: %s\n",argchar); + yy_pop_state(); + GET_DIMEN; + } + } else { + strcpy(argchar,yytext); + } + }else{ + if(tth_debug&4) fprintf(stderr,"Advancing counter %d, %s by %s. " + ,iac,argchar,yytext); + if(strcspn(yytext,"0123456789") < strlen(yytext)){ + sscanf(yytext+strcspn(yytext,"+-0123456789"),"%d",&jac); + counters[iac]=counters[iac]+jac*minus; + jac=0; + } else { + TTH_CCPY(newcstr,yytext+strcspn(yytext,"\\")); + jac=indexkey(newcstr,countkeys,&ncounters); + if(jac == -1) { + TTH_DO_MACRO else{ + if(!(tth_debug&32768)) + fprintf(stderr,"**** Unknown counter: %s\n",newcstr); + jac=-2; /* Quit. Expansion is exhausted. */ + } + } else { + if(strcspn(yytext,"-") == strlen(yytext)) { + counters[iac]=counters[iac]+minus*counters[jac]; + }else{ + counters[iac]=counters[iac]-minus*counters[jac]; + } + } + } + if(jac!=-1){ + minus=1; + yy_pop_state(); + if(tth_debug&4) fprintf(stderr,"New counter value=%d\n",counters[iac]); + *argchar=0; + } + } +} + YY_BREAK +case 847: +YY_RULE_SETUP +#line 5578 "tth.lex" +{ + fprintf(stderr,"**** Error. Ill-formed \\advance statement\n"); + yy_pop_state(); +} + YY_BREAK +case 848: +/* rule 848 can match eol */ +#line 5584 "tth.lex" +case 849: +/* rule 849 can match eol */ +YY_RULE_SETUP +#line 5584 "tth.lex" +{ + chscratch=strstr(yytext,"{"); + strcpy(scratchstring,chscratch); + *(scratchstring+strcspn(scratchstring,"}"))=0; + *(scratchstring)='\\'; + TTH_SCAN_STRING(scratchstring); + } + YY_BREAK +case 850: +#line 5593 "tth.lex" +case 851: +#line 5594 "tth.lex" +case 852: +#line 5595 "tth.lex" +case 853: +YY_RULE_SETUP +#line 5595 "tth.lex" +yy_push_state(number);jscratch=0; + YY_BREAK +case 854: +YY_RULE_SETUP +#line 5596 "tth.lex" +{ + i=indexkey(yytext,countkeys,&ncounters); + if(i == -1) { + TTH_DO_MACRO else { + if(!(tth_debug&32768)) + fprintf(stderr,"**** Unknown counter for number, %s\n",yytext); + yy_pop_state(); + } + } else { + switch(jscratch){ + case 0: sprintf(dupstore2,"%d",counters[i]);break; + case 1: sprintf(dupstore2,"%c",counters[i]+96);break; + case 2: sprintf(dupstore2,"%c",counters[i]+64);break; + case 3: roman(counters[i],dupstore2);break; + case 4: roman(counters[i],dupstore2); + for(js2=0;js2 */ + if(!bracecount){ + if(tth_debug&4) fprintf(stderr,"Close brace ending let,count=%d\n", + bracecount); + yy_pop_state(); + strcpy(scratchstring,defstore+strspn(defstore," {")); + *(scratchstring+strcspn(scratchstring,"}"))=0; + if((i=indexkey(scratchstring,keys,&nkeys))==-1){ + if(tth_debug&4) fprintf(stderr,"Macro %s not found for \\let. Presuming native.\n",scratchstring); + strcat(defstore,"#tthdrop"); + sprintf((defstore+strlen(defstore)),"%d",abs(narg)); + if(nkeys < NFNMAX) { + lkeys[nkeys]=localdef; + mkdef(defchar,keys,defstore,defs,&narg,nargs,&nkeys); + if(tth_debug&4){ + i=indexkey(defchar,keys,&nkeys); + fprintf(stderr," Just Defined Key %s index %d nargs %d Def %s\n", + defchar,i,nargs[i],defs[i]); + } + } + else fprintf(stderr,"Too many functions to define %s",defchar); + }else{ + if(nkeys < NFNMAX) { + lkeys[nkeys]=localdef; + mkdef(defchar,keys,defs[i],defs,nargs+i,nargs,&nkeys); + if(tth_debug&4){ + i=indexkey(defchar,keys,&nkeys); + fprintf(stderr,"Defined Let Key %s index %d nargs %d Def %s\n", + defchar,i,nargs[i],defs[i]); + } + }else fprintf(stderr,"Too many functions to define %s",defchar); + } + *defchar=0; + *defstore=0; + } else { + if(tth_debug&4) fprintf(stderr,"Close brace in [e]def, count=%d\n", + bracecount); + strcat(defstore,yytext);bracecount--; + } +} + YY_BREAK +case 863: +YY_RULE_SETUP +#line 5705 "tth.lex" +{ + if(*(yytext+1)!='d')localdef=0; else localdef=1; + if(tth_debug&4) fprintf(stderr,"%s(localdef=%d)",yytext,localdef); + yy_push_state(define); + yy_push_state(getnumargs); + yy_push_state(getdef); + } + YY_BREAK +case 864: +YY_RULE_SETUP +#line 5712 "tth.lex" +{ + if(*(yytext+1)!='e')localdef=0; else localdef=1; + if(tth_debug&4) fprintf(stderr,"%s(localdef=%d)",yytext,localdef); + edeftype=1; + yy_push_state(define); + yy_push_state(getnumargs); /* determine no of args */ + yy_push_state(getdef); /* determine the key of definition */ + } + YY_BREAK +case 865: +/* rule 865 can match eol */ +YY_RULE_SETUP +#line 5720 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 866: +YY_RULE_SETUP +#line 5721 "tth.lex" + + YY_BREAK +case 867: +YY_RULE_SETUP +#line 5722 "tth.lex" +yy_push_state(getdefbr);strcpy(dupstore,"{"); + YY_BREAK +case 868: +YY_RULE_SETUP +#line 5723 "tth.lex" +{ /* Really ought to match braces. */ + /*fprintf(stderr,"getdefbr strings:%s:%s:",yytext,dupstore);*/ + yy_pop_state(); + TTH_CCPY(defchar,dupstore+strspn(dupstore,"{ \t\n")); + yy_pop_state();*dupstore=0; + /* If this is a true definition, terminate at space etc.*/ + if(*defchar=='\\') + *(defchar+strcspn(defchar," =}"))=0; + if(tth_debug&4) fprintf(stderr,":%s,",defchar); +} + YY_BREAK +case 869: +YY_RULE_SETUP +#line 5733 "tth.lex" +strcat(dupstore,yytext); + YY_BREAK +case 870: +YY_RULE_SETUP +#line 5734 "tth.lex" +{ + /*fprintf(stderr,"getdef string:%s:",yytext);*/ + TTH_CCPY(defchar,yytext+strspn(yytext,"{ \t\n")); + yy_pop_state();*dupstore=0; + *(defchar+strcspn(defchar," =}"))=0; + if(tth_debug&4) fprintf(stderr,":%s,",yytext); + } + YY_BREAK +case 871: +YY_RULE_SETUP +#line 5741 "tth.lex" +{ + fprintf(stderr, + "\n**** Error: incompatible syntax in macro name:%s: Line %d\n", + yytext,tth_num_lines); + yy_pop_state(); +} + YY_BREAK +/* Latex form accommodates arg number perhaps WSP is wrong. */ +case 872: +/* rule 872 can match eol */ +#line 5750 "tth.lex" +case 873: +/* rule 873 can match eol */ +YY_RULE_SETUP +#line 5750 "tth.lex" +{ /* New pattern */ + /* sscanf((yytext+strcspn(yytext,"] \t\n{")-1),"%d",&narg); */ + TTH_INC_MULTI; + sscanf((yytext+strcspn(yytext,"]{")-1),"%d",&narg); + yy_pop_state(); + if(tth_debug&4) fprintf(stderr," %d arguments.\n",narg); + } + YY_BREAK +case 874: +YY_RULE_SETUP +#line 5757 "tth.lex" +{ + narg=0; + yy_pop_state(); + if(tth_debug&4) fprintf(stderr," no arguments.\n"); + } + YY_BREAK +case 875: +/* rule 875 can match eol */ +YY_RULE_SETUP +#line 5762 "tth.lex" +{ + if(tth_delimdef){ + yy_pop_state(); + if(tth_debug&4) fprintf(stderr,"yytext=%s",yytext); + chs2=yytext-1; + while(chs2 != NULL){ + chscratch=chs2; + chs2=strstr(chscratch+1,"#"); + } + sscanf(chscratch+1,"%d",&narg); + narg=-narg; + if(tth_debug&4) fprintf(stderr, + "Delimited definition:%s\n No of args: %d\n ",defchar,narg); + if(nkeys < NFNMAX) { + whitespace=1; + horizmode=1; + yyless(0); + *dupstore=0; /* ought not to be needed */ + yy_push_state(ddcomp); + } + else fprintf(stderr,"Too many functions to define %s",defchar); + }else{ + TTH_INC_MULTI; + yy_pop_state();yy_pop_state();yy_push_state(matchbrace); + fprintf(stderr,"Discarding delimited definition:%s\n",defchar); + } +} + YY_BREAK +case 876: +/* rule 876 can match eol */ +YY_RULE_SETUP +#line 5789 "tth.lex" +{ + if(!whitespace)strcat(dupstore," "); + TTH_INC_LINE; + whitespace=1; + if(horizmode==1){ + horizmode=-1; + yy_push_state(parcheck); + }else{ + if(horizmode==-1){ + fprintf(stderr,"**** Abnormal NL in -1 ddcomp.\n"); +/* horizmode=0;strcat(dupstore,"\\par"); */ + } + } +} + YY_BREAK +case 877: +YY_RULE_SETUP +#line 5803 "tth.lex" +{if(!whitespace){strcat(dupstore," ");} whitespace=1; } + YY_BREAK +case 878: +YY_RULE_SETUP +#line 5804 "tth.lex" +{whitespace=1;strcat(dupstore,yytext);} + YY_BREAK +case 879: +YY_RULE_SETUP +#line 5805 "tth.lex" +{ + whitespace=0;strcat(dupstore,yytext);horizmode=1; + lkeys[nkeys]=0; + mkdef("",keys,dupstore,defs,&narg,nargs,&nkeys); + if(tth_debug&4){ + fprintf(stderr,"Defined Argument-Template: index %d nargs %d Def:%s\n", + nkeys-1,nargs[nkeys-1],defs[nkeys-1]); + } + *dupstore=0; + yy_pop_state(); +} + YY_BREAK +case 880: +YY_RULE_SETUP +#line 5816 "tth.lex" +{whitespace=0;strcat(dupstore,yytext+1);horizmode=1;} + YY_BREAK +case 881: +YY_RULE_SETUP +#line 5817 "tth.lex" +{whitespace=0;strcat(dupstore,yytext);horizmode=1;} + YY_BREAK +case 882: +/* rule 882 can match eol */ +YY_RULE_SETUP +#line 5819 "tth.lex" +{ + TTH_INC_MULTI; + strcpy(scratchstring,yytext); + chscratch=strstr(scratchstring+1,"[")+1; + *(chscratch+strcspn(chscratch,"]"))=0; + js2=nkeys; + mkkey(chscratch,optargs,&js2); + if(tth_debug&4){ + js2--; + fprintf(stderr,"Defined Default argument %s index %d nargs %d Def %s\n", + chscratch,js2,nargs[js2],optargs[js2]); + } + strcpy(scratchstring+3,"{"); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +case 883: +#line 5836 "tth.lex" +case 884: +#line 5837 "tth.lex" +case 885: +YY_RULE_SETUP +#line 5837 "tth.lex" +TTH_PUSH_CLOSING; + YY_BREAK +case 886: +#line 5839 "tth.lex" +case 887: +#line 5840 "tth.lex" +case 888: +#line 5841 "tth.lex" +case 889: +YY_RULE_SETUP +#line 5841 "tth.lex" +{ + TTH_TEXCLOSE else{ +/* if(horizmode==-1)horizmode=1; */ + TTH_CLOSEGROUP;TTH_POP_CLOSING;} +} + YY_BREAK +case 890: +YY_RULE_SETUP +#line 5846 "tth.lex" +bracecount++; + YY_BREAK +case 891: +YY_RULE_SETUP +#line 5847 "tth.lex" +{if(!bracecount){yy_pop_state();} else {bracecount--;}} + YY_BREAK +case 892: +YY_RULE_SETUP +#line 5848 "tth.lex" + + YY_BREAK +case 893: +YY_RULE_SETUP +#line 5849 "tth.lex" + + YY_BREAK +case 894: +YY_RULE_SETUP +#line 5850 "tth.lex" + + YY_BREAK +case 895: +YY_RULE_SETUP +#line 5852 "tth.lex" +if(!tth_LaTeX) fprintf(tth_fdout,"
    \n",tabwidth); + YY_BREAK +case 896: +YY_RULE_SETUP +#line 5854 "tth.lex" +{ + sscanf(yytext+8,"%d",&jscratch); + tabwidth=1000/jscratch; + } + YY_BREAK +case 897: +YY_RULE_SETUP +#line 5858 "tth.lex" +{TTH_PAR_ACTION}; + YY_BREAK +/* Standard TeX formatting switches work properly inside groups.*/ +case 898: +YY_RULE_SETUP +#line 5861 "tth.lex" +fprintf(tth_fdout,"
    ");TTH_PRECLOSE("\n
    "); + YY_BREAK +case 899: +YY_RULE_SETUP +#line 5862 "tth.lex" +{ /* underline switch. */ + if(eqdepth && strcspn(TTH_NAME,"M")>0 ){ /* In equations not Mathml */ + TTH_CCAT(tth_font_open[tth_push_depth],TTH_UNDL1); + TTH_CCAT(tth_font_close[tth_push_depth],TTH_UNDL2); + }else{ + TTH_OUTPUT(TTH_UNDL1);TTH_PRECLOSE(TTH_UNDL2); + } + } + YY_BREAK +case 900: +YY_RULE_SETUP +#line 5870 "tth.lex" +{ + if(eqdepth){ + TTH_CCAT(tth_font_open[tth_push_depth],TTH_BOLDO); + TTH_CCAT(tth_font_close[tth_push_depth],TTH_BOLDC); + if(strstr(tth_texclose[tth_push_depth-1],"tth_boxclose")) { + TTH_OUTPUT(TTH_BOLD1);TTH_PRECLOSE(TTH_BOLD2); + } + }else{ + TTH_OUTPUT(TTH_BOLD1);TTH_PRECLOSE(TTH_BOLD2); + } + } + YY_BREAK +case 901: +YY_RULE_SETUP +#line 5881 "tth.lex" +{ + if(eqdepth){ + TTH_CCPY(tth_font_open[tth_push_depth],TTH_BOLDO); + TTH_CCPY(tth_font_close[tth_push_depth],TTH_BOLDC); + if(strstr(tth_texclose[tth_push_depth-1],"tth_boxclose")) { + TTH_OUTPUT(TTH_BOLD1);TTH_PRECLOSE(TTH_BOLD2); + } + }else{ + TTH_OUTPUT(TTH_BOLD1);TTH_PRECLOSE(TTH_BOLD2); + } + } + YY_BREAK +/* Implementation of \bm from math package. Bold italic.*/ +case 902: +YY_RULE_SETUP +#line 5893 "tth.lex" +{ + if(eqdepth){ + TTH_CCPY(tth_font_open[tth_push_depth],TTH_BLDITO); + TTH_CCPY(tth_font_close[tth_push_depth],TTH_BLDITC); + if(strstr(tth_texclose[tth_push_depth-1],"tth_boxclose")) { + TTH_OUTPUT(TTH_BLDIT1);TTH_PRECLOSE(TTH_BLDIT2); + } + }else{ + TTH_OUTPUT(TTH_BLDIT1);TTH_PRECLOSE(TTH_BLDIT2); + } + } + YY_BREAK +case 903: +#line 5905 "tth.lex" +case 904: +YY_RULE_SETUP +#line 5905 "tth.lex" +{ + if(eqdepth){ + TTH_CCAT(tth_font_open[tth_push_depth],TTH_ITALO); + TTH_CCAT(tth_font_close[tth_push_depth],TTH_ITALC); + if(strstr(tth_texclose[tth_push_depth-1],"tth_boxclose")) { + TTH_OUTPUT(TTH_ITAL1);TTH_PRECLOSE(TTH_ITAL2); + } + }else{ + TTH_OUTPUT(TTH_ITAL1);TTH_PRECLOSE(TTH_ITAL2); + } + } + YY_BREAK +case 905: +#line 5917 "tth.lex" +case 906: +YY_RULE_SETUP +#line 5917 "tth.lex" +{ + if(eqdepth){ + TTH_CCPY(tth_font_open[tth_push_depth],TTH_ITALO); + TTH_CCPY(tth_font_close[tth_push_depth],TTH_ITALC); + if(strstr(tth_texclose[tth_push_depth-1],"tth_boxclose")) { + TTH_OUTPUT(TTH_ITAL1);TTH_PRECLOSE(TTH_ITAL2); + } + }else{ + TTH_OUTPUT(TTH_ITAL1);TTH_PRECLOSE(TTH_ITAL2); + } + } + YY_BREAK +case 907: +#line 5929 "tth.lex" +case 908: +YY_RULE_SETUP +#line 5929 "tth.lex" +{ + if(eqdepth){ + TTH_CCPY(tth_font_open[tth_push_depth],TTH_TTO); + TTH_CCPY(tth_font_close[tth_push_depth],TTH_TTC); + if(strstr(tth_texclose[tth_push_depth-1],"tth_boxclose")) { + TTH_OUTPUT(TTH_TT1);TTH_PRECLOSE(TTH_TT2); + } + }else{ + TTH_OUTPUT(TTH_TT1);TTH_PRECLOSE(TTH_TT2); + } + } + YY_BREAK +case 909: +#line 5941 "tth.lex" +case 910: +#line 5942 "tth.lex" +case 911: +#line 5943 "tth.lex" +case 912: +#line 5944 "tth.lex" +case 913: +YY_RULE_SETUP +#line 5944 "tth.lex" +{ + if(eqdepth){ + TTH_CCPY(tth_font_open[tth_push_depth],TTH_NORM1); + TTH_CCPY(tth_font_close[tth_push_depth],TTH_NORM2); + }else{ + if(!eqdepth && !(tth_istyle&1)){ + TTH_OUTPUT(TTH_FONTCANCEL); /* not in equations: avoid bug */ + }else{ + TTH_OUTPUT(TTH_NORM1);TTH_PRECLOSE(TTH_NORM2); + } + } +} + YY_BREAK +case 914: +YY_RULE_SETUP +#line 5956 "tth.lex" +{ /* new approach */ + if(tth_push_depth){ + yy_push_state(textsc); + tth_push_depth--; + TTH_PRETEXCLOSE("\\tth_endsmallcaps"); + tth_push_depth++;} +} + YY_BREAK +case 915: +YY_RULE_SETUP +#line 5963 "tth.lex" +{ + TTH_OUTPUT(TTH_HELV1); TTH_PRECLOSE(TTH_HELV2);} + YY_BREAK +case 916: +YY_RULE_SETUP +#line 5965 "tth.lex" +{ + TTH_CCAT(tth_font_open[tth_push_depth],TTH_BOLDO); + TTH_CCAT(tth_font_close[tth_push_depth],TTH_BOLDC); +} + YY_BREAK +case 917: +YY_RULE_SETUP +#line 5969 "tth.lex" +{ + TTH_CCPY(tth_font_open[tth_push_depth],tth_fonto_def); + TTH_CCPY(tth_font_close[tth_push_depth],tth_fontc_def); +} + YY_BREAK +case 918: +YY_RULE_SETUP +#line 5974 "tth.lex" +fprintf(tth_fdout,"
    ");TTH_PRECLOSE("
    "); + YY_BREAK +case 919: +YY_RULE_SETUP +#line 5976 "tth.lex" +{ + fprintf(tth_fdout,"
    "); + if(strstr(closing,"--vbox")){ + TTH_CCPY(scratchstring,""); + }else{*scratchstring=0;} + TTH_PUSH_CLOSING; + TTH_CCPY(closing,scratchstring); + TTH_CCAT(closing,"
    \n"); + yy_push_state(pargroup);tth_eqwidth=tth_eqwidth-TTH_INDPC;} + YY_BREAK +case 920: +YY_RULE_SETUP +#line 5985 "tth.lex" +{ + TTH_PUSH_CLOSING; fprintf(tth_fdout,"
    "); + TTH_CCPY(closing,"
    \n"); + yy_push_state(pargroup);tth_eqwidth=tth_eqwidth-TTH_INDPC; + GET_DIMEN } + YY_BREAK +case 921: +YY_RULE_SETUP +#line 5990 "tth.lex" +{ + fprintf(stderr,"Hangafter ignored\n");yy_push_state(lookfornum);*argchar=0; +} + YY_BREAK +/* Getting values and units, do nothing. Only treat the explicit case. + A tokenized DIMEN will treat command and dimen as unknown commands. + Removed /{NUM} also in hangindent, 1.01 (also saved 10k size)*/ +case 922: +YY_RULE_SETUP +#line 5999 "tth.lex" +GET_DIMEN + YY_BREAK +case 923: +YY_RULE_SETUP +#line 6000 "tth.lex" +GET_DIMEN + YY_BREAK +/* Setting sizes: */ +case 924: +YY_RULE_SETUP +#line 6002 "tth.lex" +GET_DIMEN + YY_BREAK +case 925: +YY_RULE_SETUP +#line 6003 "tth.lex" +GET_DIMEN + YY_BREAK +case 926: +YY_RULE_SETUP +#line 6004 "tth.lex" +GET_DIMEN + YY_BREAK +case 927: +YY_RULE_SETUP +#line 6005 "tth.lex" +GET_DIMEN + YY_BREAK +case 928: +YY_RULE_SETUP +#line 6006 "tth.lex" +GET_DIMEN + YY_BREAK +/*.|\n yyless(0);yy_pop_state(); *argchar=0; */ +case 929: +/* rule 929 can match eol */ +YY_RULE_SETUP +#line 6010 "tth.lex" +{ /* Set a dimension that was defined. */ + strcpy(newcstr,yytext+1+strcspn(yytext+1,"\\")); + *scratchstring=0; + if(tth_push_depth-tth_LaTeX>0 || strcmp(newcstr,"\\hsize")) + yy_push_state(setdimen); + GET_DIMEN;/* Get the new dimension */ + /* yy_push_state(argclear); */ + GET_DIMEN;/* Get the current dimension*/ + if(tth_debug&1024){fprintf(stderr,"Dimension to set: %s Now follow the current and the new values:\n",newcstr);} +} + YY_BREAK +/* Preexisting dimensions, skips etc. Now not preexisting. +\\hsize { + strcpy(newcstr,yytext);*scratchstring=0; + if(tth_push_depth-tth_LaTeX>0)yy_push_state(setdimen); + GET_DIMEN; +} */ +case 930: +/* rule 930 can match eol */ +YY_RULE_SETUP +#line 6026 "tth.lex" +{ + yy_pop_state();yyless(0); + if(tth_debug&1024)fprintf(stderr,"Setdimen. scratchstring=%s, closing=%s, newcstr=%s, thesize=%d\n",scratchstring,closing,newcstr,thesize); + if(thesize){ + if(*scratchstring=='%') { + sprintf(scrstring,"\\def%s{\\tthdimen%s %f%s}", + newcstr,newcstr,anumber,"\\tth_hsize"); + if(strstr(closing,"")!=NULL + && strstr(newcstr,"\\hsize")!=NULL){ + sprintf(scratchstring,"
    \n", + (thesize*DEFAULTHSIZEPIX)/100,boxalign); /*Guess at width */ + TTH_OUTPUT(scratchstring); + } + }else if(strlen(scratchstring)){ + sprintf(scrstring,"\\def%s{\\tthdimen%s %f%s}", + newcstr,newcstr,anumber,scratchstring); + if(strstr(closing,"")!=NULL + && strstr(newcstr,"\\hsize")!=NULL){ + sprintf(scratchstring,"\n", + thesize/SCALEDPERPIXEL,boxalign); + TTH_OUTPUT(scratchstring); + } + } + TTH_SCAN_STRING(scrstring); + } +} + YY_BREAK +case 931: +YY_RULE_SETUP +#line 6052 "tth.lex" +{ + TTH_DO_MACRO + else{GET_DIMEN;} +} + YY_BREAK +case 932: +YY_RULE_SETUP +#line 6056 "tth.lex" +TTH_TEX_FN("\\hskip #1{}#tthdrop1",1); + YY_BREAK +case 933: +YY_RULE_SETUP +#line 6057 "tth.lex" +TTH_TEX_FN("\\vskip #1{}#tthdrop1",1); + YY_BREAK +case 934: +YY_RULE_SETUP +#line 6058 "tth.lex" +{ + yy_push_state(hskip); + yy_push_state(glue);GET_DIMEN; +} + YY_BREAK +case 935: +/* rule 935 can match eol */ +YY_RULE_SETUP +#line 6062 "tth.lex" +{ + if(*scratchstring=='%'){ /* Size is in % of hsize. Guess 100 nbsp per line!*/ + for(js2=0;js2 is 14 pixels */ + for(js2=0;js2<(thesize/(SCALEDPERPIXEL*14));js2++){TTH_OUTPUT("
    ");} + yy_pop_state(); yyless(0); +} + YY_BREAK +case 938: +#line 6079 "tth.lex" +case 939: +YY_RULE_SETUP +#line 6079 "tth.lex" +{ + TTH_DO_MACRO + else{ + if(horizmode) horizmode=1; + if(tth_debug&1) fprintf(stderr,"Removing glue command:%s\n",yytext); + yy_push_state(glue);GET_DIMEN; + } + } + YY_BREAK +case 940: +YY_RULE_SETUP +#line 6087 "tth.lex" +{ + if(!horizmode || horizmode==3 || strstr(closing,""); + } +} + YY_BREAK +case 941: +YY_RULE_SETUP +#line 6109 "tth.lex" +{ + if(tth_debug&1024)fprintf(stderr,"tthhbclose Stack_ptr=%d. Closing=%s\n",tth_stack_ptr,closing); + yy_pop_state(); + if(tth_debug&1024)fprintf(stderr,"tthhbclose pop completed\n"); + TTH_CLOSEGROUP;TTH_POP_CLOSING; +} + YY_BREAK +case 942: +/* rule 942 can match eol */ +YY_RULE_SETUP +#line 6117 "tth.lex" +{ + if(tth_debug&1024)fprintf(stderr,"Starting vbox\n"); + yy_pop_state(); + /*If box does not start with explicit hsize manipulation, make it do so. */ + chscratch=strstr(yytext,"\\hsize"); + js2=1+strcspn(yytext+1,"\\"); + yyless(js2); + if(chscratch){ +/* fprintf(stderr,"vbox:%s\n",yytext); */ + }else{ + if((ind=indexkey("\\hsize",keys,&nkeys))!=-1){/*hsize is defined*/ + if(indexkey("\\hsize",keys,&ind)!=-1){/*hsize is currently redefined*/ + /* Must be done after the yyless */ + TTH_SCAN_STRING("\\hsize=\\hsize ");/*Set size at the start of vbox*/ + if(tth_debug&1024)fprintf(stderr,"Vbox auto hsize reset\n"); + } + } + } + *scratchstring=0; + if(strstr(closing,""); + TTH_CCAT(closing,scratchstring); + if(!horizmode || horizmode==3){ /* Pass on vert mode to next box if any*/ + TTH_CCAT(tth_texclose[tth_push_depth-1],"\\tthvertbox"); + } + horizmode=1; +} + YY_BREAK +case 943: +YY_RULE_SETUP +#line 6158 "tth.lex" +{TTH_SWAP("\\tth_hbox");} + YY_BREAK +case 944: +YY_RULE_SETUP +#line 6159 "tth.lex" +{ + if(horizmode){ + TTH_CCAT(closing,""); + }else{ + TTH_OUTPUT("
    "); + TTH_CCAT(closing,"
    "); + } +} + YY_BREAK +case 945: +YY_RULE_SETUP +#line 6167 "tth.lex" +{ + yy_push_state(hbox); + GET_DIMEN; +} + YY_BREAK +case 946: +YY_RULE_SETUP +#line 6171 "tth.lex" +TTH_SCAN_STRING("\\par\\hbox to\\hsize "); + YY_BREAK +case 947: +/* rule 947 can match eol */ +YY_RULE_SETUP +#line 6173 "tth.lex" +{ + if(strstr(yytext,"\\h")){ + strcpy(boxalign," align=\"right\""); + } + TTH_PUSH_CLOSING; + TTH_CCPY(closing,"
    \n"); + if(!horizmode){ + TTH_CCAT(closing,"
    "); + } + /*Special post-table state does not trigger broken table code */ + TTH_CCAT(tth_texclose[tth_push_depth-1],"\\tthhorizbox"); + if(horizmode&&(horizmode!=2)){TTH_OUTPUT("
    ");} + /* avoid broken table alignment*/ + if(*scratchstring == '%'){ + sprintf(scratchstring, + "\n", + boxborder,thesize,"%",boxalign); + TTH_OUTPUT(scratchstring); + }else{ + sprintf(scratchstring, + "
    \n", + boxborder,thesize/SCALEDPERPIXEL,boxalign); + TTH_OUTPUT(scratchstring); + } + horizmode=1; + *boxalign=0;boxborder=0; + yy_pop_state(); +} + YY_BREAK +case 948: +YY_RULE_SETUP +#line 6201 "tth.lex" +horizmode=2; /* fprintf(stderr,"Set Horizmode=2.\n"); */ + YY_BREAK +case 949: +YY_RULE_SETUP +#line 6202 "tth.lex" +horizmode=3; + YY_BREAK +case 950: +YY_RULE_SETUP +#line 6204 "tth.lex" +{ + fprintf(stderr, + "**** Error: Apparently unembraced h/vbox:%s, near line %d\n", + yytext,tth_num_lines); + yyless(0); + *boxalign=0; + yy_pop_state(); +} + YY_BREAK +case 951: +YY_RULE_SETUP +#line 6212 "tth.lex" +{ /* expand a possible macro */ + TTH_DO_MACRO else{ + yyless(0); + *boxalign=0; + yy_pop_state(); + horizmode=1; + } +} + YY_BREAK +case 952: +#line 6221 "tth.lex" +case 953: +YY_RULE_SETUP +#line 6221 "tth.lex" +{ + if(strstr(closing,"
    ")){ + TTH_OUTPUT(""); /* align=right a compromise. */ + } + else{if(tth_debug&1024)fprintf(stderr, + "Apparent hfill/hss outside hbox. Closing=%s\n",closing);} +} + YY_BREAK +case 954: +#line 6229 "tth.lex" +case 955: +/* rule 955 can match eol */ +YY_RULE_SETUP +#line 6229 "tth.lex" +{ + TTH_INC_MULTI; + if(*(yytext+1)=='f')boxborder=1; + if(strcspn(yytext,"[") == strlen(yytext)){ + *scrstring=0;*scratchstring=0; + }else{ + TTH_CCPY(scratchstring,yytext+strcspn(yytext,"[")+1); + if((chscratch=strstr(scratchstring,"["))!=NULL){ + strcpy(scrstring,chscratch+1);}else{*scrstring=0;} + *(scratchstring+strcspn(scratchstring,"]"))=0; + } /* Now we have the width and optional alignment. */ + switch(*scrstring){ + case 'l': strcpy(boxalign," align=\"left\"");break; + case 'r': strcpy(boxalign," align=\"right\"");break; + default : strcpy(boxalign," align=\"center\""); + } + chscratch=scrstring; + if(*(yytext+1) =='s'){ /* Setbox case, prefix definitions.*/ + TTH_CCPY(scrstring,"\\setbox"); + TTH_CCAT(scrstring,yytext+strcspn(yytext,"{")); + chscratch=(scrstring+strcspn(scrstring,"}")+1); + } + if(*scratchstring)sprintf(chscratch,"\\hbox to %s",scratchstring); + else if(boxborder)strcpy(chscratch,"\\hbox to 0pt");/*really undefined*/ + else strcpy(chscratch,"\\hbox"); + + TTH_SCAN_STRING(scrstring); +} + YY_BREAK +case 956: +YY_RULE_SETUP +#line 6258 "tth.lex" +{ + sscanf(yytext+7,"%d",&js2); + js2++; + roman(js2,scratchstring); + sprintf(scrstring,"\\setbox\\tthbox%s",scratchstring); + TTH_SCAN_STRING(scrstring); +} + YY_BREAK +case 957: +YY_RULE_SETUP +#line 6266 "tth.lex" +{ + yy_push_state(getbox); /* Get the box definition, then define */ + yy_push_state(getdef); /* Get the next cs and leave in defchar.*/ + *argchar=0; /* ensure null if no box found */ +} + YY_BREAK +case 958: +YY_RULE_SETUP +#line 6273 "tth.lex" +{ + TTH_CCPY(argchar,yytext); + TTH_CCAT(argchar," "); + if(strstr(yytext," ")){ + yy_push_state(lookforunit);yy_push_state(lookfornum); + /* GET_DIMEN, but without resetting argchar.*/ + } + if(tth_debug&4)fprintf(stderr,"Setting box as:%s\n",yytext); +} + YY_BREAK +case 959: +/* rule 959 can match eol */ +YY_RULE_SETUP +#line 6282 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 960: +YY_RULE_SETUP +#line 6283 "tth.lex" + + YY_BREAK +case 961: +/* rule 961 can match eol */ +YY_RULE_SETUP +#line 6284 "tth.lex" +{ + yyless(0); + yy_pop_state(); + sprintf(dupstore,"{%s}{%s}",defchar,argchar); + *defchar=0;*argchar=0; + TTH_SCAN_STRING(dupstore); + *dupstore=0; + TTH_TEX_FN("\\edef#1{#2{#3}}#tthdrop3",3); +} + YY_BREAK +case 962: +#line 6295 "tth.lex" +/*\\vbox{SP}+to |*/ +case 963: +#line 6297 "tth.lex" +case 964: +#line 6298 "tth.lex" +case 965: +YY_RULE_SETUP +#line 6298 "tth.lex" +GET_DIMEN + YY_BREAK +case 966: +YY_RULE_SETUP +#line 6299 "tth.lex" +TTH_TEX_FN_OPT("#tthdrop3",3,""); + YY_BREAK +/* Looking constructs */ +case 967: +YY_RULE_SETUP +#line 6302 "tth.lex" +{TTH_PUSH_CLOSING;TTH_CCPY(closing,argchar); + argchar[0]=0;yy_pop_state();} + YY_BREAK +case 968: +#line 6305 "tth.lex" +case 969: +YY_RULE_SETUP +#line 6305 "tth.lex" +{ + strcpy(dupstore,"{");strcat(dupstore,yytext);strcat(dupstore,"}"); + TTH_SCAN_STRING(dupstore); + *dupstore=0; + } + YY_BREAK +case 970: +#line 6311 "tth.lex" +case 971: +#line 6312 "tth.lex" +case 972: +/* rule 972 can match eol */ +YY_RULE_SETUP +#line 6312 "tth.lex" +{ + /* Count braces, save text in dupstore */ + TTH_INC_MULTI; + TTH_CHECK_LENGTH; + if(tth_debug&16) + fprintf(stderr,"Open brace appending - %s - to - %s -\n",yytext,dupstore); + bracecount++;strcat(dupstore,yytext); + } + YY_BREAK +case 973: +YY_RULE_SETUP +#line 6320 "tth.lex" +yy_push_state(number);jscratch=0; + YY_BREAK +case 974: +YY_RULE_SETUP +#line 6321 "tth.lex" +yy_push_state(matchbrace); + YY_BREAK +/* Prevent an expanding state from expanding: + \hsize, natbib cites in footnotes*/ +case 975: +#line 6325 "tth.lex" +case 976: +YY_RULE_SETUP +#line 6325 "tth.lex" +{ + if(tth_debug&4)fprintf(stderr,"We don't expand:%s \n",yytext); + strcat(defstore,yytext);strcpy(xpndstring," "); +} + YY_BREAK +case 977: +YY_RULE_SETUP +#line 6329 "tth.lex" +{ + if(tth_debug&4)fprintf(stderr,"Attempt to expand:%s ",yytext); + TTH_DO_MACRO + else { + if(tth_debug&4)fprintf(stderr,"failed"); + strcat(defstore,yytext); + strcpy(xpndstring," "); + } + if(tth_debug&4)fprintf(stderr,"\n"); +} + YY_BREAK +case 978: +YY_RULE_SETUP +#line 6339 "tth.lex" +{ /* tth pseudo commands are unexpandable. */ + strcat(defstore,yytext); + /* strcpy(xpndstring," "); And no termination is needed. */ +} + YY_BREAK +case 979: +YY_RULE_SETUP +#line 6343 "tth.lex" +{ + strcat(defstore,yytext+9); strcpy(xpndstring," "); +} + YY_BREAK +case 980: +YY_RULE_SETUP +#line 6346 "tth.lex" + + YY_BREAK +case 981: +YY_RULE_SETUP +#line 6348 "tth.lex" +{ + strcat(defstore,yytext); + yy_pop_state(); + if(nkeys < NFNMAX) { + lkeys[nkeys]=localdef; + mkdef(defchar,keys,defstore,defs,&narg,nargs,&nkeys); + if(tth_debug&12){ + i=indexkey(defchar,keys,&nkeys); + fprintf(stderr,"Defined Key %s index %d nargs %d Def %s\n", + defchar,i,nargs[i],defs[i]); + } + } + else fprintf(stderr,"Too many functions to define %s",defchar); + *defstore=0;*defchar=0; /* Clean up */ +} + YY_BREAK +/* If the next thing is a brace don't put the xpndstring (possible space) + If it is not, then output the space denoting the end of previous macro*/ +case 982: +YY_RULE_SETUP +#line 6365 "tth.lex" +strcat(defstore,yytext);*xpndstring=0; + YY_BREAK +case 983: +/* rule 983 can match eol */ +YY_RULE_SETUP +#line 6366 "tth.lex" +{ + if(strcspn(yytext,"\n")==0) TTH_INC_LINE; + strcat(defstore,xpndstring);strcat(defstore,yytext);*xpndstring=0; +} + YY_BREAK +case 984: +YY_RULE_SETUP +#line 6370 "tth.lex" +strcat(defstore,yytext); /* Ensure \\ doesn't escape. */ + YY_BREAK +case 985: +YY_RULE_SETUP +#line 6371 "tth.lex" +strcat(defstore,yytext); /* Don't count escaped { */ + YY_BREAK +case 986: +YY_RULE_SETUP +#line 6372 "tth.lex" +{ + if(tth_debug&16) fprintf(stderr,"Open brace in [e]def, count=%d\n", + bracecount); + bracecount++;strcat(defstore,yytext); + } + YY_BREAK +case 987: +YY_RULE_SETUP +#line 6377 "tth.lex" +strcat(defstore,yytext); + YY_BREAK +case 988: +YY_RULE_SETUP +#line 6378 "tth.lex" +{ + if(!bracecount){ + if(tth_debug&16) fprintf(stderr,"Close brace ending [e]def,count=%d\n", + bracecount); + yy_pop_state(); + strcat(defstore,"#tthdrop"); + sprintf((defstore+strlen(defstore)),"%d",abs(narg)); + if(edeftype){ + if(tth_debug&4) fprintf(stderr,"Expanding definition:%s\n",defstore); + edeftype=0; + yy_push_state(xpnd); + TTH_SCAN_STRING(defstore); + }else{ + if(nkeys < NFNMAX) { + lkeys[nkeys]=localdef; + mkdef(defchar,keys,defstore,defs,&narg,nargs,&nkeys); + if(tth_debug&4){ + i=indexkey(defchar,keys,&nkeys); + fprintf(stderr,"Defined Key %s index %d nargs %d Def %s\n", + defchar,i,nargs[i],defs[i]); + } + } + else fprintf(stderr,"Too many functions to define %s",defchar); + *defchar=0; + } + *defstore=0; + } else { + if(tth_debug&16) fprintf(stderr,"Close brace in [e]def, count=%d\n", + bracecount); + strcat(defstore,yytext);bracecount--; + } + } + YY_BREAK +case 989: +/* rule 989 can match eol */ +YY_RULE_SETUP +#line 6410 "tth.lex" +TTH_INC_LINE;TTH_CHECK_LENGTH;strcat(defstore,yytext); + YY_BREAK +case 990: +/* rule 990 can match eol */ +YY_RULE_SETUP +#line 6411 "tth.lex" +strcat(defstore,yytext); + YY_BREAK +case 991: +/* rule 991 can match eol */ +YY_RULE_SETUP +#line 6413 "tth.lex" +TTH_INC_MULTI; /*Necessary for roots to work etc.*/ + YY_BREAK +case 992: +YY_RULE_SETUP +#line 6414 "tth.lex" +{ + yyless(0);yy_pop_state(); + yy_push_state(macarg);yy_push_state(embracetok);yy_push_state(optag); +} + YY_BREAK +case 993: +/* rule 993 can match eol */ +YY_RULE_SETUP +#line 6418 "tth.lex" +{ + yyless(0);yy_pop_state(); + sprintf(scratchstring,"#%d",jarg); + if(margmax < NARMAX) { + jscratch=0; + { + strcpy(scrstring,chopt); /* changed Aug 15 */ + mkdef(scratchstring,margkeys,scrstring,margs,&jscratch,margn,&margmax); + if(tth_debug&8){ + i=indexkey(scratchstring,margkeys,&margmax); + fprintf(stderr,"Used Default argument %s index %d Def:%s\n", + scratchstring,i,margs[i]); + } + }/* optargs should always be defined. */ + } else fprintf(stderr,"**** Error: Too many Macro Args to define %s Line %d\n",argchar,tth_num_lines); + if( jargmax < 0){ /* Don't understand why */ + jarg++; + }else if(jarg == jargmax) { + jarg=1; + TTH_SCAN_STRING(chdef); + yy_push_state(psub); + if(tth_debug&8) fprintf(stderr, + "Using definition %s in optdetect\n",chdef); + bracecount=0; + } else { + bracecount=-1; + yy_push_state(macarg);yy_push_state(embracetok); + jarg++; + } +} + YY_BREAK +case 994: +YY_RULE_SETUP +#line 6448 "tth.lex" +{ /* Don't add space after verb */ + strcat(dupstore,yytext); + *(dupstore+strlen(dupstore)-1)=0; + unput('}'); +} + YY_BREAK +case 995: +#line 6454 "tth.lex" +case 996: +YY_RULE_SETUP +#line 6454 "tth.lex" +{ + strcat(dupstore,yytext); + strcpy(dupstore+strlen(dupstore)-1," "); + if(tth_debug&8) fprintf(stderr,"Macarg added space in:%s\n",yytext); + unput(*(yytext+strlen(yytext)-1)); + } + YY_BREAK +case 997: +#line 6461 "tth.lex" +case 998: +YY_RULE_SETUP +#line 6461 "tth.lex" +bracecount++;strcat(dupstore,yytext); + YY_BREAK +case 999: +#line 6463 "tth.lex" +case 1000: +YY_RULE_SETUP +#line 6463 "tth.lex" +{ + if(bracecount == 0){ + sprintf(argchar,"#%d",jarg); + if(margmax < NARMAX) { + jscratch=0; + mkdef(argchar,margkeys,dupstore+1,margs,&jscratch,margn,&margmax); + if(tth_debug&8){ + i=indexkey(argchar,margkeys,&margmax); + fprintf(stderr,"Argument %s index %d Def:%s:\n", + argchar,i,margs[i]); + } + } else fprintf(stderr,"**** Error: Too many Macro Args to define %s Line %d\n",argchar,tth_num_lines); + *argchar=0;*dupstore=0; + if(jarg==1 && lopt){ + if(tth_debug&8)fprintf(stderr,"Ended optional argument\n"); + yy_pop_state();yy_pop_state(); + } + if( jargmax < 0){ + yy_pop_state(); + jarg++; + }else if(jarg == jargmax) { + jarg=1; + yy_pop_state(); + TTH_SCAN_STRING(chdef); + yy_push_state(psub); + if(tth_debug&8) fprintf(stderr, + "Using definition %s in macarg\n",chdef); + } else { + bracecount=-1; + yy_push_state(embracetok); + jarg++; + } + } else { + strcat(dupstore,yytext);bracecount--; + } + } + YY_BREAK +case 1001: +#line 6500 "tth.lex" +case 1002: +#line 6501 "tth.lex" +case 1003: +/* rule 1003 can match eol */ +YY_RULE_SETUP +#line 6501 "tth.lex" +{ + /* Count down braces. Save, or complete. + storetype= + 0 Duplicate and rescan with argchar = closing of first. + 1 copy to superscript. 2 copy to subscript. + 3 Duplicate but with argchar inserted in middle and hence scanned. + 4 Rescan just one copy prefixed by argchar. + 5 Rescan one copy with argchar postfixed. + 6 Rescan two copies with argchar prefixed to first. + Else just leave in dupstore. (Caller must clean up). + */ + TTH_INC_MULTI; + if(!bracecount){ + strcat(dupstore,yytext); + if(tth_debug&16)fprintf(stderr, + "Ending dupgroup, dupstore= %s, storetype=%d\n",dupstore,storetype); + if(storetype == 0){ + strcpy(dupstore2,dupstore);strcat(dupstore2,dupstore); + TTH_PUSH_CLOSING;TTH_CCPY(closing,argchar); + TTH_SCAN_STRING(dupstore2); + *dupstore2=0; + *dupstore=0; + } else if (storetype == 1) { /* Take the } off the end.*/ + *(dupstore+strlen(dupstore)-1)=0; + strcpy(supstore,dupstore); + *dupstore=0; + } else if (storetype == 2) { + *(dupstore+strlen(dupstore)-1)=0; + strcpy(substore,dupstore); + *dupstore=0; + } else if (storetype == 3) { + strcpy(dupstore2,dupstore);strcat(dupstore2,argchar); + strcat(dupstore2,dupstore); + *argchar=0; + if(tth_debug&16)fprintf(stderr,"Rescanning: %s\n",dupstore2); + TTH_SCAN_STRING(dupstore2);*dupstore2=0; + *dupstore=0; + } else if (storetype == 4) { + strcpy(dupstore2,argchar); *argchar=0; + strcat(dupstore2,dupstore); *dupstore=0; + if(tth_debug&16)fprintf(stderr,"Rescanning: %s\n",dupstore2); + TTH_SCAN_STRING(dupstore2);*dupstore2=0; + } else if (storetype == 5) { + strcat(dupstore,argchar); *argchar=0; + if(tth_debug&16)fprintf(stderr,"Rescanning: %s\n",dupstore); + TTH_SCAN_STRING(dupstore);*dupstore=0; + } else if (storetype == 6) { + strcpy(dupstore2,argchar); *argchar=0; + strcat(dupstore2,dupstore);strcat(dupstore2,dupstore); *dupstore=0; + if(tth_debug&16)fprintf(stderr,"Rescanning: %s\n",dupstore2); + TTH_SCAN_STRING(dupstore2);*dupstore2=0; + } + storetype=0; + yy_pop_state(); + } else { + if(tth_debug&16) + fprintf(stderr,"appending - %s - to - %s -\n",yytext,dupstore); + strcat(dupstore,yytext);bracecount--;} +} + YY_BREAK +case 1004: +YY_RULE_SETUP +#line 6560 "tth.lex" +{ + if(verbinput){ TTH_OUTPUT(yytext);} + else{ + if(tth_titlestate) tth_titlestate=99; + TTH_TEXCLOSE else{TTH_CLOSEGROUP;TTH_POP_CLOSING;yy_pop_state();} + } +} + YY_BREAK +case 1005: +YY_RULE_SETUP +#line 6568 "tth.lex" +TTH_TEX_FN("\\tth_grabverbname#tthdrop1",1); + YY_BREAK +case 1006: +YY_RULE_SETUP +#line 6569 "tth.lex" +{ /* Set the name of verb environment */ + if((jscratch=indexkey("#1",margkeys,&margmax))!=-1){ + strcpy(tth_verbenviron,margs[jscratch]); + rmdef(margkeys,margs,&margmax); + yy_pop_state(); + if(tth_debug)fprintf(stderr,"Verbenviron=%s\n",tth_verbenviron); + /* Now the rest of entering verbatim environment. */ + if(horizmode) horizmode=1; + fprintf(tth_fdout,"
    "); yy_push_state(verbatim);
    +    TTH_PUSH_CLOSING;  TTH_CCPY(closing,"
    "); + }else{ + fprintf(stderr,"Failed to grab verbatim name"); + } +} + YY_BREAK +case 1007: +YY_RULE_SETUP +#line 6583 "tth.lex" +{/* Redefinable verbatim end command */ + if(verbinput){ TTH_OUTPUT(yytext); + }else{ + TTH_CCPY(scratchstring,yytext+5); + *(scratchstring+strlen(scratchstring)-1)=0; + if(tth_debug)fprintf(stderr,"End of: %s\n",scratchstring); + if(strstr(tth_verbenviron,scratchstring)==tth_verbenviron){ + if(tth_titlestate) tth_titlestate=99; + TTH_TEXCLOSE else{TTH_CLOSEGROUP;TTH_POP_CLOSING;yy_pop_state(); + if(tth_debug)fprintf(stderr,"Popped state\n");} + /* Scan \end{....} a second time for end of environment */ + if(tth_debug)fprintf(stderr,"environment:%s\nscratchstring:%s\n" + ,environment,scratchstring); + if(!strcmp(environment,scratchstring)){TTH_SCAN_STRING(yytext);} + *scratchstring=0; + *tth_verbenviron=0; + }else{ + TTH_OUTPUT(yytext); + } + } +} + YY_BREAK +case 1008: +YY_RULE_SETUP +#line 6605 "tth.lex" +{ + verbinput=0; + TTH_TEXCLOSE else{TTH_CLOSEGROUP;TTH_POP_CLOSING;yy_pop_state();} +} + YY_BREAK +case 1009: +#line 6610 "tth.lex" +case 1010: +YY_RULE_SETUP +#line 6610 "tth.lex" +{ + TTH_TEXCLOSE else{TTH_CLOSEGROUP;TTH_POP_CLOSING;yy_pop_state();} +} + YY_BREAK +case 1011: +YY_RULE_SETUP +#line 6613 "tth.lex" +{ + TTH_OUTPUT(yytext);TTH_PUSH_CLOSING; + TTH_CCPY(closing,"}"); + yy_push_state(rawgroup);} + YY_BREAK +/* Dimensions and Numbers etc. */ +case 1012: +/* rule 1012 can match eol */ +YY_RULE_SETUP +#line 6620 "tth.lex" +{ + TTH_INC_MULTI; + yy_pop_state(); + TTH_CCAT(argchar,yytext); + strcpy(scratchstring,yytext+strlen(yytext)-2); /*unit is last 2 letters */ + if(!tthglue) { + thesize = scaledpoints(anumber,scratchstring); + } + if(tth_debug&1024) fprintf(stderr,"Dimension %d sp, from specified %f %s\n", + thesize,anumber,scratchstring); + *argchar=0; /* Don't think this is used. */ +} + YY_BREAK +case 1013: +YY_RULE_SETUP +#line 6632 "tth.lex" +{ /* The dimension is in \hsizes */ + thesize=100*anumber; + strcpy(scratchstring,"%"); + yy_pop_state(); + if(tth_debug&1024) fprintf(stderr,"Dimension tth_hsize: %d\n",thesize); + *argchar=0; /* this is used. */ +} + YY_BREAK +case 1014: +YY_RULE_SETUP +#line 6639 "tth.lex" +GET_DIMEN; /* Do nothing outside for now */ + YY_BREAK +case 1015: +YY_RULE_SETUP +#line 6640 "tth.lex" +{ /* expand a possible macro */ + TTH_DO_MACRO else { /* pop state if uninterpretable */ + if(tth_debug&1024) fprintf(stderr,"Unknown dimension %s\n",yytext); + thesize=0; + yyless(0); + yy_pop_state();} +} + YY_BREAK +case 1016: +YY_RULE_SETUP +#line 6647 "tth.lex" +/* Rip this out of the way */ + YY_BREAK +case 1017: +YY_RULE_SETUP +#line 6648 "tth.lex" +{/* We find a number. Scale instead. Shouldn't be in TeX*/ + if(! sscanf(yytext,"%f",&bnumber) ){ + fprintf(stderr,"**** Uninterpreted scaled dimension value:%s\n",yytext); + bnumber=1.; + } + anumber=anumber*bnumber; +} + YY_BREAK +case 1018: +/* rule 1018 can match eol */ +YY_RULE_SETUP +#line 6656 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 1019: +YY_RULE_SETUP +#line 6657 "tth.lex" +/* Ignore spaces */ + YY_BREAK +case 1020: +YY_RULE_SETUP +#line 6658 "tth.lex" +/* and equal signs */ + YY_BREAK +case 1021: +YY_RULE_SETUP +#line 6659 "tth.lex" +{ /* If we find a number store it.*/ + TTH_CCAT(argchar,yytext); + if(! sscanf(argchar,"%f",&anumber) ){ + if(tth_debug&4)fprintf(stderr,"Uninterpreted dimension value:%s\n",argchar); + anumber = 0; + } +/* if(tth_debug&1024)fprintf(stderr,"Got number: %f\n",anumber); */ + yy_pop_state(); +} + YY_BREAK +case 1022: +YY_RULE_SETUP +#line 6668 "tth.lex" +strcat(argchar,yytext); + YY_BREAK +/* If this is an unknown token, pop extra lookforunit state too.*/ +case 1023: +YY_RULE_SETUP +#line 6670 "tth.lex" +{ + TTH_DO_MACRO + else{ + /* was TTH_CCAT(argchar,yytext); then became yyless(0) now + presume if argchar !=0 that we need to collect it e.g. in setbox.*/ + if(strlen(argchar)){TTH_CCAT(argchar,yytext);}else yyless(0); + if(tth_debug&1024)fprintf(stderr,"Failed lookfornum:%s\n",yytext); + yy_pop_state();yy_pop_state(); + } +} + YY_BREAK +case 1024: +YY_RULE_SETUP +#line 6680 "tth.lex" +{ + fprintf(tth_fdout,"%s%s",yytext,argchar);yy_pop_state();} + YY_BREAK +case 1025: +/* rule 1025 can match eol */ +YY_RULE_SETUP +#line 6682 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 1026: +YY_RULE_SETUP +#line 6683 "tth.lex" + + YY_BREAK +case 1027: +YY_RULE_SETUP +#line 6684 "tth.lex" +{TTH_CCPY(argchar,yytext);yy_pop_state(); + if(tth_verb) fprintf(stderr,"File:%s",yytext);} + YY_BREAK +case 1028: +/* rule 1028 can match eol */ +YY_RULE_SETUP +#line 6686 "tth.lex" +TTH_INC_MULTI;tthglue=1;GET_DIMEN + YY_BREAK +/* nested glue not allowed */ +case 1029: +/* rule 1029 can match eol */ +YY_RULE_SETUP +#line 6688 "tth.lex" +tthglue=0;yyless(0);yy_pop_state(); + YY_BREAK +case 1030: +#line 6691 "tth.lex" +case 1031: +#line 6692 "tth.lex" +case 1032: +YY_RULE_SETUP +#line 6692 "tth.lex" +{ /* already embraced */ + strcat(dupstore,"{"); + TTH_SCAN_STRING(dupstore); + *dupstore=0; + yy_pop_state(); +} + YY_BREAK +case 1033: +/* rule 1033 can match eol */ +YY_RULE_SETUP +#line 6699 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 1034: +YY_RULE_SETUP +#line 6700 "tth.lex" + + YY_BREAK +case 1035: +#line 6702 "tth.lex" +case 1036: +#line 6703 "tth.lex" +case 1037: +YY_RULE_SETUP +#line 6703 "tth.lex" +{ /* Enclose a bare token for using as argument.*/ + strcat(dupstore,"{");strcat(dupstore,yytext);strcat(dupstore,"}"); + TTH_SCAN_STRING(dupstore); + *dupstore=0; + yy_pop_state(); + } + YY_BREAK +case 1038: +#line 6710 "tth.lex" +case 1039: +YY_RULE_SETUP +#line 6710 "tth.lex" +{ + sprintf(scratchstring,"{%s",swapchar); + TTH_SCAN_STRING(scratchstring);*swapchar=0;yy_pop_state(); +} + YY_BREAK +case 1040: +YY_RULE_SETUP +#line 6714 "tth.lex" +{ + fprintf(stderr,"**** Error: swaparg fault:%s:%s:\n",swapchar,yytext); + yy_pop_state();} + YY_BREAK +/************* count lines ****************/ +case 1041: +/* rule 1041 can match eol */ +YY_RULE_SETUP +#line 6719 "tth.lex" +TTH_INC_LINE; + YY_BREAK +case 1042: +/* rule 1042 can match eol */ +YY_RULE_SETUP +#line 6720 "tth.lex" +{ + TTH_INC_LINE; + fprintf(tth_fdout,"%s",yytext); + strcpy(scratchstring,"\n"); + if(tth_debug&8192)fprintf(stderr,"Verbatim \\n:%d, \\n code:%d Length:%d\n",(int) *yytext,(int) *scratchstring, (int) strlen(scratchstring)); +} + YY_BREAK +case 1043: +/* rule 1043 can match eol */ +YY_RULE_SETUP +#line 6726 "tth.lex" +{ /* Final route for all cases once expanded. */ + TTH_INC_MULTI; + if(strlen(expchar)){ + yyless(strcspn(yytext,"{")); + TTH_PUSH_CLOSING;TTH_CCPY(closing,expchar); + *expchar=0;yy_pop_state(); + if(tth_debug&8) { + fprintf(stderr,"Exptok Group {, eqdepth=%d, eqclose=%d, tth_flev=%d, levdelim=%s\n",eqdepth,eqclose,tth_flev,levdelim[eqclose]); + } + mkkey(eqstr,eqstrs,&eqdepth); + tth_flev=tth_flev-99; + eqclose++; + tophgt[eqclose]=0; + levhgt[eqclose]=1; + *eqstr=0; + active[eqclose]=1; + }else{ + strcat(exptex,yytext+strcspn(yytext,"{")); + TTH_SCAN_STRING(exptex); + if(tth_debug&8){ + fprintf(stderr,"Expansion completed. Rescanning %s\n",exptex); + } + *exptex=0; + yy_pop_state(); + } +} + YY_BREAK +case 1044: +YY_RULE_SETUP +#line 6753 "tth.lex" +{ + if(tth_debug&8) fprintf(stderr, + "Nothing to expand in exptok[arg]. Rescan:{%s}\n",yytext); + sprintf(scratchstring,"{%s}",yytext+strlen(yytext)-1); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +case 1045: +YY_RULE_SETUP +#line 6759 "tth.lex" +{ /* fix for _\| etc */ + if(tth_debug&8)fprintf(stderr,"Exptokarg, expanding:%s\n",yytext); + TTH_DO_MACRO + else { + strcpy(dupstore,"{");strcat(dupstore,yytext);strcat(dupstore,"}"); + TTH_SCAN_STRING(dupstore); + *dupstore=0; + } +} + YY_BREAK +case 1046: +YY_RULE_SETUP +#line 6769 "tth.lex" +{ + yyless(0);yy_pop_state(); + if(strlen(exptex)){TTH_SCAN_STRING(exptex); *exptex=0;} +} + YY_BREAK +case 1047: +YY_RULE_SETUP +#line 6773 "tth.lex" +{ /* fix for _\| etc OUT for tokexp. */ + if(tth_debug&8)fprintf(stderr,"Tokexp, expanding:%s\n",yytext); + TTH_DO_MACRO + else { + yy_pop_state(); + yyless(0); + *dupstore=0; + if(strlen(exptex)){TTH_SCAN_STRING(exptex); *exptex=0;} + } +} + YY_BREAK +case 1048: +YY_RULE_SETUP +#line 6784 "tth.lex" +{ + if(*halstring){ /* In a display table has to be a null inline*/ + }else{ + TTH_TEXCLOSE else{ + yy_pop_state(); + /* moved into closing. fprintf(tth_fdout,"");*/ + TTH_CLOSEGROUP;TTH_POP_CLOSING; + if(tth_debug&33)fprintf(stderr,"Display Table end.\n"); + } + } +} + YY_BREAK +case 1049: +#line 6797 "tth.lex" +case 1050: +#line 6798 "tth.lex" +case 1051: +YY_RULE_SETUP +#line 6798 "tth.lex" +{ + if(tth_debug&2) + fprintf(stderr,"Starting textbox equation, line %d\n",tth_num_lines); + /* TTH_OUTPUT(TTH_TEXTBOX2);*/ + if(displaystyle)displaystyle++; + mkkey(eqstr,eqstrs,&eqdepth); + TTH_PUSH_CLOSING; + yy_push_state(equation); + TTH_SCAN_STRING("{"); +} + YY_BREAK +/* $ Will be superceded by equation grab for non-null eqs */ +case 1052: +#line 6810 "tth.lex" +case 1053: +#line 6811 "tth.lex" +case 1054: +#line 6812 "tth.lex" +case 1055: +YY_RULE_SETUP +#line 6812 "tth.lex" +{ + if(displaystyle) fprintf(stderr,"Starting displaystyle incorrect.\n"); + displaystyle=0; + tophgt[eqclose]=0;levhgt[eqclose]=1; + *eqstr=0; + eqclose=0; + mkkey(eqstr,eqstrs,&eqdepth); + if((!tth_inlinefrac)^(strstr(TTH_NAME,"M")!=NULL)) tth_flev=tth_flev-89; + TTH_PUSH_CLOSING; + if(!strstr(tth_font_open[tth_push_depth],TTH_ITALO)){ + TTH_CCAT(tth_font_open[tth_push_depth],tth_font_open[0]); + TTH_CCAT(tth_font_close[tth_push_depth],tth_font_close[0]); + } + yy_push_state(equation); + TTH_SCAN_STRING("{"); + } + YY_BREAK +case 1056: +YY_RULE_SETUP +#line 6829 "tth.lex" + + YY_BREAK +case 1057: +/* rule 1057 can match eol */ +YY_RULE_SETUP +#line 6831 "tth.lex" +{ + if(strcspn(yytext,"_^")==1){ + if(tth_debug&3) fprintf(stderr,"Special In line Eq:%s\n",yytext); + /* + yyless(1); + unput(' '); This broke with pushback errors + Handle subdefer appropriately for specials. + Hence we use the following more cumbersome but safer approach. + Really I ought to find a better way to make sure that we can + accommodate constructs like $^1_2$ using msupsub in mathml. + The problem seems to be the implied { which never has subscripts. + */ + *scrstring=0; + if(strstr(TTH_NAME,"M")){ /* MathML */ strcat(scrstring," ");} + strcat(scrstring,yytext+1); + TTH_SCAN_STRING(scrstring); + *scrstring=0; + }else{ + if(tth_debug&3) fprintf(stderr,"In line Eq:%s\n",yytext); + yyless(1); + } + TTH_SCAN_STRING("$"); /* Force into other channel above.*/ + } + YY_BREAK +case 1058: +/* rule 1058 can match eol */ +#line 6856 "tth.lex" +case 1059: +/* rule 1059 can match eol */ +YY_RULE_SETUP +#line 6856 "tth.lex" +{ + if(tth_debug&33)fprintf(stderr,"Display Table:\n%s\n",yytext); + fprintf(tth_fdout,"
    "); + yyless(2); + yy_push_state(disptab); + TTH_PUSH_CLOSING; + TTH_CCPY(closing,"
    "); +} + YY_BREAK +/* Allowing the first half of a display to be recognized as equation is + problematic. Instead go to halsearch state. + Does not permit non-output commands before the halign. TeX does.*/ +case 1060: +YY_RULE_SETUP +#line 6867 "tth.lex" +{ + yy_push_state(halsearch); +} + YY_BREAK +case 1061: +/* rule 1061 can match eol */ +YY_RULE_SETUP +#line 6871 "tth.lex" +TTH_INC_MULTI; + YY_BREAK +case 1062: +YY_RULE_SETUP +#line 6872 "tth.lex" +{ + if(tth_debug&33)fprintf(stderr,"Display Table:\n%s\n",yytext); + yyless(0); + yy_pop_state(); + yy_push_state(disptab); + fprintf(tth_fdout,"
    "); + TTH_PUSH_CLOSING; + TTH_CCPY(closing,"
    "); +} + YY_BREAK +case 1063: +/* rule 1063 can match eol */ +YY_RULE_SETUP +#line 6881 "tth.lex" +{ + yyless(0); + yy_pop_state(); + TTH_SCAN_STRING("\\tth_start_equation"); +} + YY_BREAK +/* Don't recognize display equations except in certain allowed states. */ +case 1064: +#line 6889 "tth.lex" +case 1065: +/* rule 1065 can match eol */ +YY_RULE_SETUP +#line 6889 "tth.lex" +{ + { + if(tth_debug&3) fprintf(stderr,"Display Eq:\n%s\n",yytext); + if(strstr(yytext,"\\tth_start_equation")==NULL) yyless(2); + if(strcspn(yytext,"_^")==2){ + if(strstr(TTH_NAME,"M")){ /* MathML */ unput(' ');} + } + TTH_SCAN_STRING("{"); + /* + if(tth_htmlstyle&2){ + TTH_OUTPUT(closing); strcpy(closing,"
  • "); + TTH_OUTPUT("\n
    \n");}*/ + horizmode=0; + displaystyle=1; + *eqstr=0; + eqclose=0; + tophgt[eqclose]=0; + mkkey(eqstr,eqstrs,&eqdepth); + TTH_PUSH_CLOSING; + if(!strstr(tth_font_open[tth_push_depth],TTH_ITALO)){ + TTH_CCAT(tth_font_open[tth_push_depth],tth_font_open[0]); + TTH_CCAT(tth_font_close[tth_push_depth],tth_font_close[0]); + } + yy_push_state(equation); + } + } + YY_BREAK +/* Translate single characters. */ +case 1066: +YY_RULE_SETUP +#line 6917 "tth.lex" +TTH_OUTPUTH(yytext+strlen(yytext)-1); + YY_BREAK +case 1067: +/* rule 1067 can match eol */ +YY_RULE_SETUP +#line 6919 "tth.lex" +{ + TTH_INC_MULTI; + sscanf(yytext+5,"%d",&jscratch); + sprintf(scratchstring,"%c",jscratch); + TTH_OUTPUTH(scratchstring); + yy_push_state(removespace); +} + YY_BREAK +/* Latin Characters and other non-math but output correctly in math.*/ +case 1068: +YY_RULE_SETUP +#line 6928 "tth.lex" +{ /* Circumvent spaces after accents.*/ + strcpy(scratchstring,yytext); + unput(*(scratchstring+strlen(scratchstring)-1)); + unput(*(scratchstring+1));unput(*scratchstring); +} + YY_BREAK +case 1069: +#line 6935 "tth.lex" +case 1070: +#line 6936 "tth.lex" +case 1071: +YY_RULE_SETUP +#line 6936 "tth.lex" +TTH_OUTPUTH(" "); + YY_BREAK +case 1072: +/* rule 1072 can match eol */ +YY_RULE_SETUP +#line 6937 "tth.lex" +TTH_OUTPUTH(" ");TTH_INC_LINE; + YY_BREAK +case 1073: +YY_RULE_SETUP +#line 6938 "tth.lex" +TTH_OUTPUTH("  "); + YY_BREAK +case 1074: +YY_RULE_SETUP +#line 6939 "tth.lex" +TTH_OUTPUTH("   "); + YY_BREAK +case 1075: +YY_RULE_SETUP +#line 6940 "tth.lex" +TTH_OUTPUTH("      "); + YY_BREAK +case 1076: +YY_RULE_SETUP +#line 6941 "tth.lex" +TTH_OUTPUTH("Æ"); + YY_BREAK +case 1077: +YY_RULE_SETUP +#line 6942 "tth.lex" +TTH_OUTPUTH("Á"); + YY_BREAK +case 1078: +YY_RULE_SETUP +#line 6943 "tth.lex" +TTH_OUTPUTH("Â"); + YY_BREAK +case 1079: +YY_RULE_SETUP +#line 6944 "tth.lex" +TTH_OUTPUTH("À"); + YY_BREAK +case 1080: +#line 6946 "tth.lex" +case 1081: +YY_RULE_SETUP +#line 6946 "tth.lex" +TTH_OUTPUTH("Å"); + YY_BREAK +case 1082: +YY_RULE_SETUP +#line 6947 "tth.lex" +TTH_OUTPUTH("Ã"); + YY_BREAK +case 1083: +#line 6949 "tth.lex" +case 1084: +YY_RULE_SETUP +#line 6949 "tth.lex" +TTH_OUTPUTH("Ä"); + YY_BREAK +/* \\c{SP}?C | */ +case 1085: +YY_RULE_SETUP +#line 6951 "tth.lex" +TTH_OUTPUTH("Ç"); + YY_BREAK +case 1086: +YY_RULE_SETUP +#line 6952 "tth.lex" +TTH_OUTPUTH("É"); + YY_BREAK +case 1087: +YY_RULE_SETUP +#line 6953 "tth.lex" +TTH_OUTPUTH("Ê"); + YY_BREAK +case 1088: +YY_RULE_SETUP +#line 6954 "tth.lex" +TTH_OUTPUTH("È"); + YY_BREAK +case 1089: +#line 6956 "tth.lex" +case 1090: +YY_RULE_SETUP +#line 6956 "tth.lex" +TTH_OUTPUTH("Ë"); + YY_BREAK +case 1091: +YY_RULE_SETUP +#line 6957 "tth.lex" +TTH_OUTPUTH("Ì"); + YY_BREAK +case 1092: +YY_RULE_SETUP +#line 6958 "tth.lex" +TTH_OUTPUTH("Í"); + YY_BREAK +case 1093: +YY_RULE_SETUP +#line 6959 "tth.lex" +TTH_OUTPUTH("Î"); + YY_BREAK +case 1094: +#line 6961 "tth.lex" +case 1095: +YY_RULE_SETUP +#line 6961 "tth.lex" +TTH_OUTPUTH("Ï"); + YY_BREAK +case 1096: +YY_RULE_SETUP +#line 6962 "tth.lex" +TTH_OUTPUTH("Ñ"); + YY_BREAK +case 1097: +YY_RULE_SETUP +#line 6963 "tth.lex" +TTH_OUTPUTH("Ò"); + YY_BREAK +case 1098: +YY_RULE_SETUP +#line 6964 "tth.lex" +TTH_OUTPUTH("Ó"); + YY_BREAK +case 1099: +YY_RULE_SETUP +#line 6965 "tth.lex" +TTH_OUTPUTH("Ô"); + YY_BREAK +case 1100: +YY_RULE_SETUP +#line 6966 "tth.lex" +TTH_OUTPUTH("Ø"); + YY_BREAK +case 1101: +YY_RULE_SETUP +#line 6967 "tth.lex" +TTH_OUTPUTH("Õ"); + YY_BREAK +case 1102: +#line 6969 "tth.lex" +case 1103: +YY_RULE_SETUP +#line 6969 "tth.lex" +TTH_OUTPUTH("Ö"); + YY_BREAK +case 1104: +YY_RULE_SETUP +#line 6970 "tth.lex" +TTH_OUTPUTH("¶"); + YY_BREAK +case 1105: +YY_RULE_SETUP +#line 6971 "tth.lex" +TTH_OUTPUTH("§"); + YY_BREAK +case 1106: +YY_RULE_SETUP +#line 6972 "tth.lex" +TTH_OUTPUTH("Ú"); + YY_BREAK +case 1107: +YY_RULE_SETUP +#line 6973 "tth.lex" +TTH_OUTPUTH("Û"); + YY_BREAK +case 1108: +YY_RULE_SETUP +#line 6974 "tth.lex" +TTH_OUTPUTH("Ù"); + YY_BREAK +case 1109: +#line 6976 "tth.lex" +case 1110: +YY_RULE_SETUP +#line 6976 "tth.lex" +TTH_OUTPUTH("Ü"); + YY_BREAK +case 1111: +YY_RULE_SETUP +#line 6977 "tth.lex" +TTH_OUTPUTH("Ý"); + YY_BREAK +case 1112: +YY_RULE_SETUP +#line 6978 "tth.lex" +TTH_OUTPUTH("&"); + YY_BREAK +case 1113: +YY_RULE_SETUP +#line 6979 "tth.lex" +TTH_OUTPUTH("&"); + YY_BREAK +case 1114: +YY_RULE_SETUP +#line 6980 "tth.lex" +TTH_OUTPUTH("æ"); + YY_BREAK +case 1115: +YY_RULE_SETUP +#line 6981 "tth.lex" +TTH_OUTPUTH("à"); + YY_BREAK +case 1116: +YY_RULE_SETUP +#line 6982 "tth.lex" +TTH_OUTPUTH("á"); + YY_BREAK +case 1117: +YY_RULE_SETUP +#line 6983 "tth.lex" +TTH_OUTPUTH("â"); + YY_BREAK +case 1118: +YY_RULE_SETUP +#line 6984 "tth.lex" +TTH_OUTPUTH("ã"); + YY_BREAK +case 1119: +#line 6986 "tth.lex" +case 1120: +YY_RULE_SETUP +#line 6986 "tth.lex" +TTH_OUTPUTH("ä"); + YY_BREAK +case 1121: +#line 6988 "tth.lex" +case 1122: +YY_RULE_SETUP +#line 6988 "tth.lex" +TTH_OUTPUTH("å"); + YY_BREAK +/* \\c{SP}?c | */ +case 1123: +YY_RULE_SETUP +#line 6990 "tth.lex" +TTH_OUTPUTH("ç"); + YY_BREAK +case 1124: +YY_RULE_SETUP +#line 6991 "tth.lex" +TTH_OUTPUTH("^"); + YY_BREAK +case 1125: +YY_RULE_SETUP +#line 6992 "tth.lex" +TTH_OUTPUTH("©"); + YY_BREAK +case 1126: +YY_RULE_SETUP +#line 6993 "tth.lex" +TTH_OUTPUTH("é"); + YY_BREAK +case 1127: +YY_RULE_SETUP +#line 6994 "tth.lex" +TTH_OUTPUTH("ê"); + YY_BREAK +case 1128: +YY_RULE_SETUP +#line 6995 "tth.lex" +TTH_OUTPUTH("è"); + YY_BREAK +case 1129: +YY_RULE_SETUP +#line 6996 "tth.lex" +TTH_OUTPUTH("ð"); + YY_BREAK +case 1130: +#line 6998 "tth.lex" +case 1131: +YY_RULE_SETUP +#line 6998 "tth.lex" +TTH_OUTPUTH("ë"); + YY_BREAK +case 1132: +#line 7000 "tth.lex" +case 1133: +YY_RULE_SETUP +#line 7000 "tth.lex" +TTH_OUTPUTH(">"); + YY_BREAK +case 1134: +#line 7002 "tth.lex" +case 1135: +YY_RULE_SETUP +#line 7002 "tth.lex" +TTH_OUTPUTH("<"); + YY_BREAK +case 1136: +YY_RULE_SETUP +#line 7003 "tth.lex" +TTH_OUTPUTH(" ") + YY_BREAK +case 1137: +#line 7005 "tth.lex" +case 1138: +YY_RULE_SETUP +#line 7005 "tth.lex" +TTH_OUTPUTH("ì"); + YY_BREAK +case 1139: +#line 7007 "tth.lex" +case 1140: +#line 7008 "tth.lex" +case 1141: +YY_RULE_SETUP +#line 7008 "tth.lex" +TTH_OUTPUTH("í"); + YY_BREAK +case 1142: +#line 7010 "tth.lex" +case 1143: +YY_RULE_SETUP +#line 7010 "tth.lex" +TTH_OUTPUTH("î"); + YY_BREAK +case 1144: +#line 7012 "tth.lex" +case 1145: +#line 7013 "tth.lex" +case 1146: +YY_RULE_SETUP +#line 7013 "tth.lex" +TTH_OUTPUTH("ï"); + YY_BREAK +case 1147: +YY_RULE_SETUP +#line 7014 "tth.lex" +TTH_OUTPUTH("ñ"); + YY_BREAK +case 1148: +YY_RULE_SETUP +#line 7015 "tth.lex" +TTH_OUTPUTH("ò"); + YY_BREAK +case 1149: +YY_RULE_SETUP +#line 7016 "tth.lex" +TTH_OUTPUTH("ó"); + YY_BREAK +case 1150: +YY_RULE_SETUP +#line 7017 "tth.lex" +TTH_OUTPUTH("ô"); + YY_BREAK +case 1151: +YY_RULE_SETUP +#line 7018 "tth.lex" +TTH_OUTPUTH("ø"); + YY_BREAK +case 1152: +YY_RULE_SETUP +#line 7019 "tth.lex" +TTH_OUTPUTH("õ"); + YY_BREAK +case 1153: +#line 7021 "tth.lex" +case 1154: +YY_RULE_SETUP +#line 7021 "tth.lex" +TTH_OUTPUTH("ö"); + YY_BREAK +case 1155: +YY_RULE_SETUP +#line 7022 "tth.lex" +TTH_OUTPUTH("¯"); + YY_BREAK +case 1156: +YY_RULE_SETUP +#line 7023 "tth.lex" +TTH_OUTPUTH("£"); + YY_BREAK +case 1157: +YY_RULE_SETUP +#line 7024 "tth.lex" +TTH_OUTPUTH("~"); + YY_BREAK +case 1158: +YY_RULE_SETUP +#line 7025 "tth.lex" +TTH_OUTPUTH("ú"); + YY_BREAK +case 1159: +YY_RULE_SETUP +#line 7026 "tth.lex" +TTH_OUTPUTH("û"); + YY_BREAK +case 1160: +YY_RULE_SETUP +#line 7027 "tth.lex" +TTH_OUTPUTH("ù"); + YY_BREAK +case 1161: +#line 7029 "tth.lex" +case 1162: +YY_RULE_SETUP +#line 7029 "tth.lex" +TTH_OUTPUTH("ü"); + YY_BREAK +case 1163: +YY_RULE_SETUP +#line 7030 "tth.lex" +TTH_OUTPUTH("ý"); + YY_BREAK +case 1164: +#line 7032 "tth.lex" +case 1165: +YY_RULE_SETUP +#line 7032 "tth.lex" +TTH_OUTPUTH("ÿ"); + YY_BREAK +case 1166: +YY_RULE_SETUP +#line 7033 "tth.lex" +TTH_OUTPUTH("ß"); + YY_BREAK +case 1167: +#line 7035 "tth.lex" +case 1168: +YY_RULE_SETUP +#line 7035 "tth.lex" +TTH_DO_MACRO else{ TTH_OUTPUTH("ß");} + YY_BREAK +/* Polish character macros:*/ +case 1169: +YY_RULE_SETUP +#line 7037 "tth.lex" +TTH_OUTPUTH("Ą"); + YY_BREAK +case 1170: +YY_RULE_SETUP +#line 7038 "tth.lex" +TTH_OUTPUTH("Ć"); + YY_BREAK +case 1171: +YY_RULE_SETUP +#line 7039 "tth.lex" +TTH_OUTPUTH("Ę"); + YY_BREAK +case 1172: +YY_RULE_SETUP +#line 7040 "tth.lex" +TTH_OUTPUTH("Ł"); + YY_BREAK +case 1173: +YY_RULE_SETUP +#line 7041 "tth.lex" +TTH_OUTPUTH("Ń"); + YY_BREAK +case 1174: +YY_RULE_SETUP +#line 7042 "tth.lex" +TTH_OUTPUTH("Ś"); + YY_BREAK +case 1175: +YY_RULE_SETUP +#line 7043 "tth.lex" +TTH_OUTPUTH("Ź"); + YY_BREAK +case 1176: +YY_RULE_SETUP +#line 7044 "tth.lex" +TTH_OUTPUTH("Ż"); + YY_BREAK +case 1177: +YY_RULE_SETUP +#line 7045 "tth.lex" +TTH_OUTPUTH("ą"); + YY_BREAK +case 1178: +YY_RULE_SETUP +#line 7046 "tth.lex" +TTH_OUTPUTH("ć"); + YY_BREAK +case 1179: +YY_RULE_SETUP +#line 7047 "tth.lex" +TTH_OUTPUTH("ę"); + YY_BREAK +case 1180: +YY_RULE_SETUP +#line 7048 "tth.lex" +TTH_OUTPUTH("ł"); + YY_BREAK +case 1181: +YY_RULE_SETUP +#line 7049 "tth.lex" +TTH_OUTPUTH("ń"); + YY_BREAK +case 1182: +YY_RULE_SETUP +#line 7050 "tth.lex" +TTH_OUTPUTH("ś"); + YY_BREAK +case 1183: +YY_RULE_SETUP +#line 7051 "tth.lex" +TTH_OUTPUTH("ź"); + YY_BREAK +case 1184: +YY_RULE_SETUP +#line 7052 "tth.lex" +TTH_OUTPUTH("ż"); + YY_BREAK +case 1185: +YY_RULE_SETUP +#line 7054 "tth.lex" +TTH_OUTPUTH(",,"); + YY_BREAK +case 1186: +YY_RULE_SETUP +#line 7055 "tth.lex" +TTH_OUTPUTH("''"); + YY_BREAK +case 1187: +YY_RULE_SETUP +#line 7056 "tth.lex" +TTH_OUTPUTH("«"); + YY_BREAK +case 1188: +YY_RULE_SETUP +#line 7057 "tth.lex" +TTH_OUTPUTH("»"); + YY_BREAK +case 1189: +YY_RULE_SETUP +#line 7058 "tth.lex" + + YY_BREAK +/* Convert TeX double quotes to single-character */ +case 1190: +#line 7061 "tth.lex" +case 1191: +YY_RULE_SETUP +#line 7061 "tth.lex" +TTH_OUTPUTH("\""); + YY_BREAK +case 1192: +YY_RULE_SETUP +#line 7062 "tth.lex" +{ + if(*(yytext+1)=='g') strcpy(scratchstring,"\\`"); + else strcpy(scratchstring,"\\'"); + strcat(scratchstring,yytext+strlen(yytext)-3); + TTH_SCAN_STRING(scratchstring); +} + YY_BREAK +/* Remove unwanted braces from around accented characters. */ +case 1193: +#line 7070 "tth.lex" +/* \\c{SP}*\{[cC]\} | */ +case 1194: +YY_RULE_SETUP +#line 7071 "tth.lex" +{ + if(tth_debug&8) fprintf(stderr,"Fixing accent:%s\n",yytext); + *dupstore2=0; + strncat(dupstore2,yytext,2); + strncat(dupstore2,yytext+strcspn(yytext,"{")+1, + strcspn(yytext,"}")-strcspn(yytext,"{")-1); + TTH_SCAN_STRING(dupstore2); + *dupstore2=0; + } + YY_BREAK +/* Unknown diacriticals must terminate safely. +\\noexpand\\H +\\noexpand\\b + Above are safely defined. Below need protection.*/ +case 1195: +YY_RULE_SETUP +#line 7084 "tth.lex" + + YY_BREAK +case 1196: +YY_RULE_SETUP +#line 7085 "tth.lex" + + YY_BREAK +case 1197: +YY_RULE_SETUP +#line 7086 "tth.lex" + + YY_BREAK +case 1198: +YY_RULE_SETUP +#line 7087 "tth.lex" + + YY_BREAK +case 1199: +YY_RULE_SETUP +#line 7089 "tth.lex" +TTH_OUTPUTH(TTH_BOXCODE); + YY_BREAK +case 1200: +YY_RULE_SETUP +#line 7090 "tth.lex" +TTH_OUTPUTH(TTH_HBAR); + YY_BREAK +/* Various things not being used. + \\\c TTH_OUTPUTH("¸"); + \? TTH_OUTPUTH("¿"); + \! TTH_OUTPUTH("¡"); + */ +case 1201: +YY_RULE_SETUP +#line 7097 "tth.lex" +{ + TTH_SCAN_STRING(tth_latex_file); +} + YY_BREAK +/* This needs to match all the cases of comments otherwise they will + not allow escaping of the % in that state. Not all are TTH_OUTPUT */ +case 1202: +#line 7103 "tth.lex" +case 1203: +#line 7104 "tth.lex" +case 1204: +YY_RULE_SETUP +#line 7104 "tth.lex" +TTH_OUTPUTH("%"); + YY_BREAK +case 1205: +YY_RULE_SETUP +#line 7105 "tth.lex" + + YY_BREAK +case 1206: +#line 7107 "tth.lex" +case 1207: +/* rule 1207 can match eol */ +YY_RULE_SETUP +#line 7107 "tth.lex" +{ + if(strcspn(yytext,"\n")==0) {TTH_INC_LINE;TTH_CHECK_LENGTH;} + strcat(dupstore,yytext); +} + YY_BREAK +case 1208: +YY_RULE_SETUP +#line 7111 "tth.lex" +strcat(defstore,yytext); + YY_BREAK +case 1209: +/* rule 1209 can match eol */ +YY_RULE_SETUP +#line 7112 "tth.lex" +{ + TTH_INC_LINE; +} + YY_BREAK +case 1210: +#line 7116 "tth.lex" +case 1211: +#line 7117 "tth.lex" +/* \\\\\*?({SP}*\[[^\]]*\])? | */ +case 1212: +YY_RULE_SETUP +#line 7118 "tth.lex" +TTH_SCAN_STRING("\\par"); + YY_BREAK +case 1213: +YY_RULE_SETUP +#line 7119 "tth.lex" +{ + if(horizmode) horizmode=1; + jscratch=indexkey("#1",margkeys,&margmax); + yy_pop_state(); + if(jscratch!=-1){ + strcpy(dupstore,margs[jscratch]); + rmdef(margkeys,margs,&margmax); + for(js2=0;js2<2*(strlen(dupstore));js2++)TTH_OUTPUT(" "); + }else{ + fprintf(stderr,"***** Error. No argument in \\phantom. Line %d\n",tth_num_lines); + } + *dupstore=0; + } + YY_BREAK +case 1214: +YY_RULE_SETUP +#line 7133 "tth.lex" +TTH_OUTPUTH("$"); + YY_BREAK +case 1215: +YY_RULE_SETUP +#line 7134 "tth.lex" +TTH_OUTPUTH("#"); + YY_BREAK +case 1216: +YY_RULE_SETUP +#line 7135 "tth.lex" +TTH_OUTPUTH("{"); + YY_BREAK +case 1217: +YY_RULE_SETUP +#line 7136 "tth.lex" +TTH_OUTPUTH("}"); + YY_BREAK +/* In nbsp choice above \\{SP} TTH_OUTPUTH(" "); */ +case 1218: +YY_RULE_SETUP +#line 7138 "tth.lex" +TTH_OUTPUTH("_"); + YY_BREAK +case 1219: +YY_RULE_SETUP +#line 7139 "tth.lex" + + YY_BREAK +case 1220: +YY_RULE_SETUP +#line 7140 "tth.lex" +TTH_OUTPUTH(" "); + YY_BREAK +case 1221: +YY_RULE_SETUP +#line 7141 "tth.lex" +TTH_OUTPUTH("-"); + YY_BREAK +case 1222: +YY_RULE_SETUP +#line 7142 "tth.lex" +TTH_OUTPUTH("..."); /* non-math dots */ + YY_BREAK +/* Commands to ignore in equations as well as text*/ +case 1223: +YY_RULE_SETUP +#line 7144 "tth.lex" + + YY_BREAK +case 1224: +YY_RULE_SETUP +#line 7145 "tth.lex" + + YY_BREAK +case 1225: +YY_RULE_SETUP +#line 7146 "tth.lex" + + YY_BREAK +/* Some problems in equations being confused with this, unless specific. */ +case 1226: +YY_RULE_SETUP +#line 7149 "tth.lex" +{ + fprintf(stderr,"**** Removing inappropriate parameter command %s Line %d\n",yytext,tth_num_lines); + yy_push_state(lookfornum);*argchar=0; + } + YY_BREAK +case 1227: +YY_RULE_SETUP +#line 7153 "tth.lex" +/* Overridden where necessary for defs.. */ + YY_BREAK +/* TeX Commands in equations*/ +case 1228: +YY_RULE_SETUP +#line 7156 "tth.lex" +{ + TTH_DO_MACRO + else if( (ind=indexkey(yytext,countkeys,&ncounters)) != -1) { + if(tth_debug&4) fprintf(stderr,"Setting counter %d, %s. ",ind,countkeys[ind]); + yy_push_state(counterset); + } else { + if(!(tth_debug&32768)) + fprintf(stderr,"**** Unknown command %s in equation, Line %d\n" + ,yytext,tth_num_lines); + strcat(eqstr,yytext); + } + } + YY_BREAK +/* Default equation action may no longer be needed, but not sure. 21 Mar*/ +case 1229: +YY_RULE_SETUP +#line 7169 "tth.lex" +{ + strcat(eqstr,yytext); + } + YY_BREAK +case 1230: +YY_RULE_SETUP +#line 7173 "tth.lex" +yy_scan_string("}\\end"); + YY_BREAK +/* Latex default (unknown) environment */ +case 1231: +YY_RULE_SETUP +#line 7175 "tth.lex" +{ + TTH_CCPY(environment,strstr(yytext,"{")+1); + environment[strlen(environment)-1]=0; + TTH_DO_MACRO + else{ + environment[0]=0; + fprintf(stderr,"**** Unknown or ignored environment: %s Line %d\n" + ,yytext,tth_num_lines); + } + TTH_PUSH_CLOSING; + /*This is balanced by the \egroup just below.*/ + } + YY_BREAK +case 1232: +YY_RULE_SETUP +#line 7187 "tth.lex" +{ + ind=indexkey(yytext,keys,&nkeys); + TTH_SCAN_STRING("\\egroup"); + if(ind != -1) { /* This was defined by newenvironment */ + TTH_SCAN_STRING(defs[ind]); + environment[0]=0; + yy_push_state(psub); + if(tth_debug&8) fprintf(stderr,"Using definition %d= %s in end\n" + ,ind,defs[ind]); + } + } + YY_BREAK +case 1233: +/* rule 1233 can match eol */ +YY_RULE_SETUP +#line 7198 "tth.lex" +{ + TTH_INC_MULTI; + if(strstr(yytext,"\n")){TTH_INC_LINE;} + fprintf(stderr, + "**** Warning! Bad LaTeX Style. Space after \\begin. Line %d\n",tth_num_lines); + unput('n');unput('i');unput('g');unput('e');unput('b');unput('\\'); +} + YY_BREAK +case 1234: +/* rule 1234 can match eol */ +YY_RULE_SETUP +#line 7205 "tth.lex" +{ + TTH_INC_MULTI; + if(strstr(yytext,"\n")){TTH_INC_LINE;} + fprintf(stderr, + "**** Warning! Bad LaTeX Style. Space after \\end Line %d\n",tth_num_lines); + unput('{');unput('d');unput('n');unput('e');unput('\\'); +} + YY_BREAK +case 1235: +YY_RULE_SETUP +#line 7213 "tth.lex" +{ + if(*yytext == *chr1){ + TTH_TEXCLOSE else{ + TTH_CLOSEGROUP;TTH_POP_CLOSING; + yy_pop_state(); + } + }else{ + if(*yytext == '&') {TTH_OUTPUTH("&");} + else if(*yytext == '<') {TTH_OUTPUTH("<");} + else if(*yytext == '>') {TTH_OUTPUTH(">");} + else if(*yytext == ' ') {TTH_OUTPUTH(" ");} + else {TTH_OUTPUTH(yytext);} + } + } + YY_BREAK +/* Special escape sequences in rawgroup */ +case 1236: +YY_RULE_SETUP +#line 7229 "tth.lex" +TTH_OUTPUT(yytext+1); + YY_BREAK +/* Don't set horizmode for whitespace.*/ +case 1237: +YY_RULE_SETUP +#line 7231 "tth.lex" +TTH_OUTPUT(yytext); + YY_BREAK +/* Default action */ +case 1238: +YY_RULE_SETUP +#line 7233 "tth.lex" +horizmode=1;TTH_OUTPUT(yytext); + YY_BREAK +/* Normal action. Set to horizontal mode if not space*/ +case 1239: +YY_RULE_SETUP +#line 7235 "tth.lex" +fprintf(tth_fdout,"%s",yytext); + YY_BREAK +/* Default action */ +case 1240: +YY_RULE_SETUP +#line 7237 "tth.lex" +horizmode=1;fprintf(tth_fdout,"%s",yytext); + YY_BREAK +/* Delete in certain states. */ +case 1241: +YY_RULE_SETUP +#line 7240 "tth.lex" +yyless(0);yy_pop_state(); + YY_BREAK +case 1242: +YY_RULE_SETUP +#line 7241 "tth.lex" + + YY_BREAK +case 1243: +/* rule 1243 can match eol */ +YY_RULE_SETUP +#line 7243 "tth.lex" +{ + if(tth_ercnt==0){ + fprintf(stderr,"%s",yytext); + tth_ercnt=0; + fprintf(stderr,"\n");TTH_EXIT(1); + }else if(tth_ercnt>0){ fprintf(stderr,"%s",yytext);tth_ercnt--; + }else{tth_ercnt=0;TTH_EXIT(tth_erlev);} ; +} + YY_BREAK +case 1244: +YY_RULE_SETUP +#line 7252 "tth.lex" +horizmode=1; + YY_BREAK +case 1245: +YY_RULE_SETUP +#line 7253 "tth.lex" +{TTH_PAR_ACTION} + YY_BREAK +case 1246: +YY_RULE_SETUP +#line 7254 "tth.lex" +yy_push_state(unknown); + YY_BREAK +case 1247: +YY_RULE_SETUP +#line 7255 "tth.lex" +yy_push_state(unknown); + YY_BREAK +case 1248: +YY_RULE_SETUP +#line 7256 "tth.lex" +fprintf(stderr,"**** DANGER: Catcode changes not honored. Expect abnormal behavior. Line %d\n",tth_num_lines); + YY_BREAK +/* Ignore quietly */ +case 1249: +YY_RULE_SETUP +#line 7259 "tth.lex" + + YY_BREAK +case 1250: +YY_RULE_SETUP +#line 7260 "tth.lex" + + YY_BREAK +case 1251: +YY_RULE_SETUP +#line 7261 "tth.lex" + + YY_BREAK +case 1252: +YY_RULE_SETUP +#line 7262 "tth.lex" + + YY_BREAK +case 1253: +YY_RULE_SETUP +#line 7263 "tth.lex" + + YY_BREAK +case 1254: +YY_RULE_SETUP +#line 7264 "tth.lex" + + YY_BREAK +case 1255: +YY_RULE_SETUP +#line 7265 "tth.lex" + + YY_BREAK +/*\\line | */ +case 1256: +YY_RULE_SETUP +#line 7267 "tth.lex" + + YY_BREAK +case 1257: +YY_RULE_SETUP +#line 7268 "tth.lex" + + YY_BREAK +case 1258: +YY_RULE_SETUP +#line 7269 "tth.lex" + + YY_BREAK +case 1259: +#line 7271 "tth.lex" +case 1260: +#line 7272 "tth.lex" +case 1261: +YY_RULE_SETUP +#line 7272 "tth.lex" +{ /* Dump the argument. Might be used instead of matchbrace. */ + TTH_TEX_FN("#tthdrop1",1); +} + YY_BREAK +case 1262: +#line 7276 "tth.lex" +case 1263: +#line 7277 "tth.lex" +case 1264: +YY_RULE_SETUP +#line 7277 "tth.lex" +{ + sscanf(yytext+strcspn(yytext,"0123456789"),"%d", &js2); + js2++; + roman(js2,scratchstring); + sprintf(scrstring,"\\tthbox%s",scratchstring); + TTH_SCAN_STRING(scrstring); +} + YY_BREAK +case 1265: +#line 7286 "tth.lex" +case 1266: +#line 7287 "tth.lex" +case 1267: +#line 7288 "tth.lex" +case 1268: +#line 7289 "tth.lex" +case 1269: +#line 7290 "tth.lex" +case 1270: +#line 7291 "tth.lex" +case 1271: +#line 7292 "tth.lex" +case 1272: +#line 7293 "tth.lex" +case 1273: +/* rule 1273 can match eol */ +#line 7294 "tth.lex" +case 1274: +/* rule 1274 can match eol */ +#line 7295 "tth.lex" +case 1275: +/* rule 1275 can match eol */ +#line 7296 "tth.lex" +case 1276: +/* rule 1276 can match eol */ +#line 7297 "tth.lex" +case 1277: +/* rule 1277 can match eol */ +#line 7298 "tth.lex" +case 1278: +/* rule 1278 can match eol */ +#line 7299 "tth.lex" +case 1279: +/* rule 1279 can match eol */ +#line 7300 "tth.lex" +case 1280: +/* rule 1280 can match eol */ +YY_RULE_SETUP +#line 7300 "tth.lex" +if(horizmode)horizmode=1; + YY_BREAK +case 1281: +#line 7302 "tth.lex" +case 1282: +#line 7303 "tth.lex" +case 1283: +#line 7304 "tth.lex" +case 1284: +#line 7305 "tth.lex" +case 1285: +#line 7306 "tth.lex" +case 1286: +#line 7307 "tth.lex" +case 1287: +#line 7308 "tth.lex" +case 1288: +YY_RULE_SETUP +#line 7308 "tth.lex" +TTH_INC_MULTI;yy_push_state(matchbrace); + YY_BREAK +case 1289: +#line 7311 "tth.lex" +case 1290: +#line 7312 "tth.lex" +case 1291: +#line 7313 "tth.lex" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(pargroup): +case YY_STATE_EOF(parclose): +case YY_STATE_EOF(tokenarg): +case YY_STATE_EOF(exptokarg): +case YY_STATE_EOF(swaparg): +case YY_STATE_EOF(embracetok): +case YY_STATE_EOF(rawgroup): +case YY_STATE_EOF(verbatim): +case YY_STATE_EOF(verb): +case YY_STATE_EOF(notags): +case YY_STATE_EOF(dupgroup): +case YY_STATE_EOF(dupsquare): +case YY_STATE_EOF(discardgroup): +case YY_STATE_EOF(falsetext): +case YY_STATE_EOF(innerfalse): +case YY_STATE_EOF(ortext): +case YY_STATE_EOF(orbreak): +case YY_STATE_EOF(getifx): +case YY_STATE_EOF(getiftok): +case YY_STATE_EOF(getifnum): +case YY_STATE_EOF(lookfornum): +case YY_STATE_EOF(insertnum): +case YY_STATE_EOF(lookforunit): +case YY_STATE_EOF(lookforfile): +case YY_STATE_EOF(matchbrace): +case YY_STATE_EOF(getbox): +case YY_STATE_EOF(getsubp): +case YY_STATE_EOF(getdef): +case YY_STATE_EOF(getdefbr): +case YY_STATE_EOF(getnumargs): +case YY_STATE_EOF(ddcomp): +case YY_STATE_EOF(getend): +case YY_STATE_EOF(letdef): +case YY_STATE_EOF(unknown): +case YY_STATE_EOF(dimadv): +case YY_STATE_EOF(getcount): +case YY_STATE_EOF(advance): +case YY_STATE_EOF(number): +case YY_STATE_EOF(counterset): +case YY_STATE_EOF(htemplate): +case YY_STATE_EOF(halign): +case YY_STATE_EOF(hendline): +case YY_STATE_EOF(hamper): +case YY_STATE_EOF(mamper): +case YY_STATE_EOF(vtemplate): +case YY_STATE_EOF(valign): +case YY_STATE_EOF(equation): +case YY_STATE_EOF(disptab): +case YY_STATE_EOF(textbox): +case YY_STATE_EOF(Litemize): +case YY_STATE_EOF(Lenumerate): +case YY_STATE_EOF(Ldescription): +case YY_STATE_EOF(Lindex): +case YY_STATE_EOF(uppercase): +case YY_STATE_EOF(textsc): +case YY_STATE_EOF(define): +case YY_STATE_EOF(macarg): +case YY_STATE_EOF(optag): +case YY_STATE_EOF(optdetect): +case YY_STATE_EOF(psub): +case YY_STATE_EOF(xpnd): +case YY_STATE_EOF(delimint): +case YY_STATE_EOF(removespace): +case YY_STATE_EOF(titlecheck): +case YY_STATE_EOF(stricttitle): +case YY_STATE_EOF(builtins): +case YY_STATE_EOF(latexbuiltins): +case YY_STATE_EOF(glue): +case YY_STATE_EOF(ruledim): +case YY_STATE_EOF(bigdel): +case YY_STATE_EOF(picture): +case YY_STATE_EOF(csname): +case YY_STATE_EOF(tempamp): +case YY_STATE_EOF(hskip): +case YY_STATE_EOF(vskip): +case YY_STATE_EOF(hbox): +case YY_STATE_EOF(vbox): +case YY_STATE_EOF(setdimen): +case YY_STATE_EOF(tabpre): +case YY_STATE_EOF(error): +case YY_STATE_EOF(parcheck): +case YY_STATE_EOF(tokexp): +case YY_STATE_EOF(escgroup): +case YY_STATE_EOF(uncommentgroup): +case YY_STATE_EOF(urlgroup): +case YY_STATE_EOF(indexgroup): +case YY_STATE_EOF(halsearch): +#line 7313 "tth.lex" +{ + if(!strcmp(yytext,"\\end")) { + tth_stack_ptr=0; + if(!ftntno){ + TTH_INC_LINE; + if(tth_debug&1024 && !(tth_stack_ptr||ftntwrap)) fprintf(stderr,"\n"); + /*Terminate the diagnostic*/ + }/* Count the last line if it is \end */ + } + /*Function returns here*/ + if ( --tth_stack_ptr < 0){ + TTH_CLOSEGROUP;*closing=0; + if(ftntno){ + TTH_SCAN_STRING("\\special{html:

    }\\tthfootnotes:\\special{html:

    \n}"); + ftntno=0; + if(tth_splitfile){ /*sf*/ + strcpy(filenext,"footnote.html");/*sf*/ + TTH_SCAN_STRING("\\tthsplittail\\tthsplitinv\\tthsplittop\\tthfileupd"); /*sf*/ + }/*sf*/ + }else{ + if(tth_debug&4096)fprintf(stderr,"ftntwrap:%d,",ftntwrap); + if(ftntwrap < nkeys){ /* Footnote wrap-up. Search keys. */ + if(tth_debug&4096)fprintf(stderr," %s\n",keys[ftntwrap]); + yy_delete_buffer(YY_CURRENT_BUFFER );/*leakfix*/ + if(strstr(keys[ftntwrap],"tthFtNt")){ + {TTH_PAR_ACTION}; + fprintf(tth_fdout,"",keys[ftntwrap]+1); + if(tth_debug&256)fprintf(stderr,"Footnote key %d, scanning: %s\n", + ftntwrap,defs[ftntwrap]); + yy_scan_string(defs[ftntwrap]);yy_push_state(psub); + } else yy_scan_string("\\end"); + tth_stack_ptr++; + /* tth_stack_ptr=1;*/ + ftntwrap++; + }else{ + if(tth_indexfile){ + /* We no longer remove it because we use different name. + sprintf(scratchstring,"%s %s.ind%s",RMCMD,tth_latex_file,RMTERM); + system(scratchstring); + */ + tth_indexfile=NULL; + } + if(tth_splitfile)fprintf(tth_fdout,"
    %s",TTH_HEAD);/*sf*/ + if(tth_debug&4096)fprintf(stderr,"Terminating.\n"); + fflush(stdout); + yyterminate(); + } + } + }else{ + if(eofrmv[tth_stack_ptr] == 11){ /*Index ref in toc*/ + if(tth_splitfile)/*sf*/ + {fprintf(tth_fdout,"Index
    ");}else/*sf*/ + {fprintf(tth_fdout,"Index
    ");} + eofrmv[tth_stack_ptr] = 0; /* Do it only once. */ + }else{ + /*horizmode=0; for removespace caused uppercase problem*/ + if(eofrmv[tth_stack_ptr]) yy_push_state(removespace); + } + if(tth_debug&16) fprintf(stderr, + "EOF encountered: level=%d rmv=%d\n", + tth_stack_ptr, eofrmv[tth_stack_ptr]); + yy_delete_buffer(YY_CURRENT_BUFFER ); + yy_switch_to_buffer(include_stack[tth_stack_ptr] ); + } +} + YY_BREAK +case 1292: +YY_RULE_SETUP +#line 7378 "tth.lex" +{ /* Don't suppose glue command in equations */ + TTH_CCPY(argchar,yytext); + strcpy(argchar+strlen(argchar)-1,"\n="); + TTH_SCAN_STRING(argchar); + *argchar=0; +} + YY_BREAK +case 1293: +YY_RULE_SETUP +#line 7385 "tth.lex" +yy_push_state(unknown); + YY_BREAK +/* Format looks like counter or dimension setting */ +case 1294: +YY_RULE_SETUP +#line 7388 "tth.lex" +{ + TTH_CCPY(argchar,yytext); + argchar[strcspn(yytext," =")]=0; + if( (ind=indexkey(argchar,countkeys,&ncounters)) != -1 ){ + if(tth_debug&4) fprintf(stderr,"Setting counter %d, %s\n",ind,countkeys[ind]); + yy_push_state(counterset); + } else if((ind=indexkey(argchar,keys,&nkeys)) != -1 ){ /*defined command*/ + yyless(strcspn(yytext," =")); + TTH_SCAN_STRING(argchar); + *argchar=0; + } else { + if((!strstr(unknownstring,yytext)||tth_debug)&&!(tth_debug&32768)){ + fprintf(stderr,"**** Unknown parameter/dimension/glue command %s Line %d\n",yytext,tth_num_lines); + if(!strstr(unknownstring,yytext) && + strlen(unknownstring)+strlen(yytext) < TTH_UNKS_LEN) + strcat(unknownstring,yytext); + } + yy_push_state(glue); /* In case glue */ + GET_DIMEN + } + } + YY_BREAK +case 1295: +#line 7411 "tth.lex" +case 1296: +YY_RULE_SETUP +#line 7411 "tth.lex" +{ /* Not a tth native command */ + TTH_DO_MACRO + else if( (ind=indexkey(yytext,countkeys,&ncounters)) != -1) { + if(tth_debug&4) fprintf(stderr,"Setting counter %d, %s\n",ind,countkeys[ind]); + yy_push_state(counterset); + } else { + if((!strstr(unknownstring,yytext)||tth_debug)&&!(tth_debug&32768)){ + fprintf(stderr,"**** Unknown command %s, (%d user-defined) Line %d\n", + yytext,nkeys-nbuiltins,tth_num_lines); + if(!strstr(unknownstring,yytext)&& + strlen(unknownstring)+strlen(yytext) < TTH_UNKS_LEN) + strcat(unknownstring,yytext); + } + yy_push_state(unknown); + } + } + YY_BREAK +case 1297: +YY_RULE_SETUP +#line 7429 "tth.lex" +yy_push_state(matchbrace); + YY_BREAK +case 1298: +/* rule 1298 can match eol */ +YY_RULE_SETUP +#line 7430 "tth.lex" +TTH_INC_MULTI; + YY_BREAK +case 1299: +/* rule 1299 can match eol */ +YY_RULE_SETUP +#line 7431 "tth.lex" +yy_pop_state();yyless(0); + YY_BREAK +case 1300: +YY_RULE_SETUP +#line 7433 "tth.lex" +strcat(psubstore,yytext); + YY_BREAK +case 1301: +YY_RULE_SETUP +#line 7434 "tth.lex" +strcat(psubstore,yytext); + YY_BREAK +case 1302: +/* rule 1302 can match eol */ +YY_RULE_SETUP +#line 7435 "tth.lex" +TTH_INC_LINE;strcat(psubstore,yytext); + YY_BREAK +case 1303: +YY_RULE_SETUP +#line 7436 "tth.lex" +{ + strcat(psubstore,"#"); + if(tth_debug&8) fprintf(stderr,"Double # added to %s\n",psubstore); + } + YY_BREAK +/* Changed * to + here 4 Nov 07 */ +case 1304: +YY_RULE_SETUP +#line 7441 "tth.lex" +{ /* Add space after a command string, in case */ + if( (js2 = strcspn(yytext,"#")) ){ + strcpy(scratchstring,yytext); + if(!strstr(yytext,"\\verb")){/*Don't add space after \verb*/ + strcpy(scratchstring+js2," "); + }else {*(scratchstring+js2)=0;} + strcat(psubstore,scratchstring); + } + jscratch=margmax-jarg+1; + i=indexkey(yytext+js2,margkeys,&jscratch); + if(tth_debug&8)fprintf(stderr,"%s argument search starting at %d finds %d\n", + yytext,jscratch,i); + if(i != -1) { + strcat(psubstore,margs[i]); + } else { + fprintf(stderr,"Could not find argument %s on macro arg stack\n",yytext); + } + } + YY_BREAK +case 1305: +YY_RULE_SETUP +#line 7459 "tth.lex" +{ + sscanf((yytext+strlen(yytext)-1),"%d",&i); + if(tth_debug&8) fprintf(stderr,"dropping %d args\n",i); + for (jscratch=0;jscratch63 && *yytext<91) || (*yytext>96 && *yytext<123)){ + if(whitespace==1)whitespace=1; else whitespace=0; + }else{ + if(whitespace==1)whitespace=2; else whitespace=0; + } + strcat(dupstore,scratchstring); + if(*chscratch == '#' ) { /* Nondelimited argument. */ + if(tth_debug&8) fprintf(stderr,"Non-delimited argument; jarg=%d\n",jarg); + chs2=chscratch+2; + chscratch=chs2; + if(strstr(yytext,"\n")){tth_num_lines--;}/*don't count twice*/ + yyless(0); + horiztemp=horizmode; + *dupstore=0; + if(jarg){ /* Not for zeroth argument */ + bracecount=-1; + yy_push_state(macarg); + yy_push_state(embracetok); + } else jarg++; + }else if(*chscratch == '{'){ /* Last argument is nondelimited */ + jargmax=jarg; /* use standard form of macarg */ + yyless(0); + horiztemp=horizmode; + *dupstore=0; + bracecount=-1; + yy_pop_state(); + yy_push_state(macarg); + yy_push_state(embracetok); + } else if(*chscratch == *scratchstring){ /* Normal delimited case. */ + chscratch++; + if((*chscratch == '#')||(*chscratch == '{')){ /* Matched pattern seg */ + sprintf(argchar,"#%d",jarg); + if(tth_debug&8)fprintf(stderr,"Matched Pattern:%s: jarg=%d, argchar=%s\n" + ,dupstore,jarg,argchar); + jscratch=0; + /* dupstore[strlen(dupstore)-(chscratch-chs2-compression)]=0;*/ + dupstore[strlen(dupstore)-(chscratch-chs2)]=0; + if(jarg){ + mkdef(argchar,margkeys,dupstore,margs, + &jscratch,margn,&margmax); + if(tth_debug&8){ + i=indexkey(argchar,margkeys,&margmax); + fprintf(stderr,"Delimited Argument:%s: index %d Def %s\n", + argchar,i,margs[i]); + } + } + if(*chscratch == '{') { /* Completed Template */ + jarg=1; + yy_pop_state(); + TTH_SCAN_STRING(defs[ind]); + if(tth_debug&8)fprintf(stderr,"Using definition %s (%d) = %s.\n", + keys[ind],ind,defs[ind]); + yy_push_state(psub); + }else{ /* Look for next argument */ + jarg++; + chs2=chscratch+2; + chscratch=chs2; + } + *dupstore=0; + /* compression=0;*/ + } + }else{ /* Mismatch. Start over. */ + chscratch=chs2; + if(*scratchstring == '{') { /* Nested braces protect against matching. */ + bracecount=0; storetype=10; /* Was 4 till new definitions */ + yy_push_state(dupgroup); + } + } + horizmode=horiztemp; +} + YY_BREAK +case 1311: +/* rule 1311 can match eol */ +YY_RULE_SETUP +#line 7593 "tth.lex" +{ + TTH_CHECK_LENGTH; + TTH_INC_LINE; + if(horizmode==1){ + horizmode=-1; + yy_push_state(parcheck); + TTH_OUTPUT(yytext); + }else if(horizmode==-1) { + fprintf(stderr,"**** Abnormal NL, removespace. Line %d\n",tth_num_lines); + } +} + YY_BREAK +case 1312: +YY_RULE_SETUP +#line 7604 "tth.lex" + + YY_BREAK +case 1313: +/* rule 1313 can match eol */ +YY_RULE_SETUP +#line 7605 "tth.lex" +{ + if(tth_debug&16)fprintf(stderr,"End of removespace:%s\n",yytext); + yy_pop_state();yyless(0); + } + YY_BREAK +case 1314: +/* rule 1314 can match eol */ +YY_RULE_SETUP +#line 7609 "tth.lex" +TTH_INC_MULTI;GET_DIMEN; + YY_BREAK +case 1315: +/* rule 1315 can match eol */ +YY_RULE_SETUP +#line 7610 "tth.lex" +yyless(0);yy_pop_state(); + YY_BREAK +case 1316: +YY_RULE_SETUP +#line 7612 "tth.lex" +ECHO; + YY_BREAK +#line 26748 "lex.yy.c" + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), (size_t) num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart(yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 11276 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 11276 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 11275); + + return yy_is_jam ? 0 : yy_current_state; +} + + static void yyunput (int c, register char * yy_bp ) +{ + register char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = (yy_n_chars) + 2; + register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + register char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart(yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return EOF; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_init_buffer(YY_CURRENT_BUFFER,input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree((void *) b->yy_ch_buf ); + + yyfree((void *) b ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = 1; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + int num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +{ + + return yy_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) yyalloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + + static void yy_push_state (int new_state ) +{ + if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) ) + { + yy_size_t new_size; + + (yy_start_stack_depth) += YY_START_STACK_INCR; + new_size = (yy_start_stack_depth) * sizeof( int ); + + if ( ! (yy_start_stack) ) + (yy_start_stack) = (int *) yyalloc(new_size ); + + else + (yy_start_stack) = (int *) yyrealloc((void *) (yy_start_stack),new_size ); + + if ( ! (yy_start_stack) ) + YY_FATAL_ERROR( "out of memory expanding start-condition stack" ); + } + + (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START; + + BEGIN(new_state); +} + + static void yy_pop_state (void) +{ + if ( --(yy_start_stack_ptr) < 0 ) + YY_FATAL_ERROR( "start-condition stack underflow" ); + + BEGIN((yy_start_stack)[(yy_start_stack_ptr)]); +} + + static int yy_top_state (void) +{ + return (yy_start_stack)[(yy_start_stack_ptr) - 1]; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +int yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param line_number + * + */ +void yyset_lineno (int line_number ) +{ + + yylineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * in_str ) +{ + yyin = in_str ; +} + +void yyset_out (FILE * out_str ) +{ + yyout = out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int bdebug ) +{ + yy_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + + (yy_start_stack_ptr) = 0; + (yy_start_stack_depth) = 0; + (yy_start_stack) = NULL; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Destroy the start condition stack. */ + yyfree((yy_start_stack) ); + (yy_start_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 7612 "tth.lex" + + + /********************************** CODE ******************************/ + +int main(argc,argv) +int argc; +char *argv[]; +{ +int raw=0,httpcont=0; +int i,ilatex=0,ititle=1; +char *spoint=0; +char ttver[]=TTH_VERSION; +char ttname[20]; +time_t secs_elapsed; +time_t make_time=939087164; +char timestr[]="On 00 Jan 2000, 00:00."; +FILE *fdin=0; +int horizmode=1; /* In signoff use font tags not divs */ +char main_input[TTH_CHARLEN]; +char main_output[TTH_CHARLEN]; + tth_fdout=stdout; + if((spoint=strstr(tth_DOC,"XXXX"))){ /* Make version strings */ + strcpy(ttname,"Tt"); + strcat(ttname,TTH_NAME); + strncpy(spoint-10-strlen(ttname),ttname,strlen(ttname)); + strncpy(spoint,ttver,strlen(ttver)); + if(strstr(TTH_NAME,"M")){ /* MathML */ + tth_mathitalic=0; /* Don't use for mml */ + tth_htmlstyle=2; /* Use default XHTML style for MathML*/ +#ifdef TTM_LAPSED + time(&secs_elapsed); + /*fprintf(stderr,"Maketime=%ld, elapsed=%ld",(long)make_time, + (long)secs_elapsed); */ + if(make_time!=939087164){ + if(secs_elapsed>make_time+30*24*60*60){ + fprintf(stderr,TTM_LAPSED); + TTH_EXIT(1); + } + } +#else + secs_elapsed=make_time; +#endif + while((spoint=strstr(tth_DOC,"tth")))strncpy(spoint,"ttm",3); + while((spoint=strstr(tth_DOC,"TtH")))strncpy(spoint,"TtM",3); + while((spoint=strstr(tth_USAGE,"tth")))strncpy(spoint,"ttm",3); + while((spoint=strstr(tth_USAGE,"TtH")))strncpy(spoint,"TtM",3); + while((spoint=strstr(tth_DOC,"(TeX-to-HTML"))) + strncpy(spoint," Tex to MathML/HTML translator. ", + strlen(" Tex to MathML/HTML translator. ")); + } + } + for (i=1;i"); + strcpy(tth_font_close[0],""); + TTH_CCPY(tth_fonto_def,tth_font_open[0]); + TTH_CCPY(tth_fontc_def,tth_font_close[0]); + }else{ + /* Make all (even multi-letter) identifiers italic*/ + strcpy(tth_font_open[0],TTH_ITALO); + } + break; + case 'j': tth_indexpage=9999; + if(*(argv[i]+2)) sscanf(argv[i]+2,"%d",&tth_indexpage); + fprintf(stderr,"HTML index page length %d\n",tth_indexpage);break; + case 'k': strcpy(tth_latex_file,argv[i]+2);break; + case 'L': case 'l':{ + if(strlen(tth_latex_file)){ + fprintf(stderr, + "Do not use both -L switch and file command-line argument %s\n", + main_input); + return 1; + } + strcpy(tth_latex_file,argv[i]+2); + fprintf(stderr,"Including LaTeX commands\n"); + ilatex=1; + break; + } + case 'n': + tth_titlestate=4; + if(*(argv[i]+2)) sscanf(argv[i]+2,"%d",&tth_titlestate); + break; + /*case 'n': tth_multinum=0;break; disable 3.0*/ + case 'P': case 'p': + if(!strcmp(argv[i]+2,"NULL")){tth_allowinput=0;} + TTH_CCPY(tth_texinput_path,argv[i]+2);break; + case 'r': raw=1;if(*(argv[i]+2)) sscanf(argv[i]+2,"%d",&raw);break; + case 's': tth_splitfile=1;break; /*sf*/ + case 't': tth_inlinefrac=1;break; + case 'u': tth_unicode=1; + if(*(argv[i]+2)) sscanf(argv[i]+2,"%d",&tth_unicode); + fprintf(stderr,"HTML unicode style %d\n",tth_unicode);break; + case 'v': tth_verb=1; tth_debug=1; + if(*(argv[i]+2)=='?'){fprintf(stderr,"%s",tth_debughelp);return 1;} + else if(*(argv[i]+2)) sscanf(argv[i]+2,"%d",&tth_debug); + break; + case 'V': tth_verb=1; tth_debug=2048+256+7;break; + case 'w': sscanf(argv[i]+2,"%d",&tth_htmlstyle); + fprintf(stderr,"HTML writing style %d\n",tth_htmlstyle); + if(!tth_htmlstyle&1) ititle=0;break; + case 'x':strcpy(tth_index_cmd,argv[i]+2);break; + case 'y': sscanf(argv[i]+2,"%d",&tth_istyle); + fprintf(stderr,"Equation layout style %d\n",tth_istyle); + break; + } + if(tth_verb)fprintf(stderr,"Debug level %d\n",tth_debug); + } + } + if((spoint=getenv("TTHINPUTS"))){ + TTH_CCAT(tth_texinput_path,PATH_SEP);TTH_CCAT(tth_texinput_path,spoint);} + if(httpcont) fprintf(tth_fdout,"Content-type: text/HTML\n\n"); + if(tth_splitfile) fprintf(tth_fdout,TTH_MIME_HEAD); /*sf*/ + if(raw!=1){ + fprintf(tth_fdout,TTH_DOCTYPE); + fprintf(tth_fdout,TTH_GENERATOR,TTH_NAME,TTH_VERSION); + fprintf(tth_fdout,TTH_ENCODING); + /*if(tth_htmlstyle&2) */ + fprintf(tth_fdout,"%s",TTH_P_STYLE); + if(tth_istyle)fprintf(tth_fdout,"%s",TTH_STYLE); + if(!(tth_htmlstyle&4))fprintf(tth_fdout,"%s",TTH_SIZESTYLE); + } + if(tth_flev0) tth_flev0=tth_flev0+2; /* Increment to compensate for dummy levels. */ + if(ititle && raw!=1){ + if(tth_htmlstyle&3){ + yy_push_state(stricttitle); + }else{ + yy_push_state(titlecheck); + } + } + yy_push_state(builtins); + if(ilatex)yy_push_state(latexbuiltins); + /* if(tth_debug) + fprintf(stderr,"Starting yylex\n"); */ + yylex(); + fprintf(stderr, "Number of lines processed approximately %d\n", + tth_num_lines-1); + /* Time stamp */ + time(&secs_elapsed); + spoint=ctime(&secs_elapsed); + strncpy(timestr+3,spoint+8,2); + strncpy(timestr+6,spoint+4,3); + strncpy(timestr+10,spoint+20,4); + strncpy(timestr+16,spoint+11,5); + if(raw==2)*timestr=0; /* Not if -r2 */ + if(raw!=1 && raw != 4){ + fprintf(tth_fdout,"\n


    File translated from\n\ +T%sE%sX\nby \n\ +T%sT%s%s,\n\ +version %s.
    %s
    \n",TTH_SMALL,TTH_SIZEEND,TTH_SMALL,TTH_SIZEEND + ,TTH_NAME,TTH_VERSION,timestr); + } + if(raw!=1){ + if(tth_htmlstyle&3)fprintf(tth_fdout,"
    "); + fprintf(tth_fdout,"\n"); + } + if(tth_debug&16) fprintf(stderr, "Exit pushdepth= %d\n",tth_push_depth); + /* silence gcc warnings:*/ if(1==0){yy_top_state();input();} + return 0; +} /* end main */ + +void tth_push(arg) +char arg[]; +{ + if(tth_debug&16) fprintf(stderr,"tth_push:%s depth:%d\n",\ + arg,tth_push_depth); + if(tth_push_depth == TTH_MAXDEPTH) { + fprintf(stderr, + "**** Error Fatal: Attempt to exceed max nesting:%d\n", + tth_push_depth); + TTH_FATAL(6); + }else{ + strcpy(tth_closures[tth_push_depth],arg); + strcpy(tth_font_open[tth_push_depth+1], + tth_font_open[tth_push_depth]); + strcpy(tth_font_close[tth_push_depth+1], + tth_font_close[tth_push_depth]); + tth_push_depth++; + } + arg[0]=0; +} + +void tth_pop(arg) +char arg[]; +{ + if(tth_push_depth < 1){ + fprintf(stderr,"**** Error: Fatal. Apparently too many }s.\nCheck for TeX errors or incompatibilities before line %d,\nnext material ",tth_num_lines); + /*TTH_FATAL(1);*/ + yy_push_state(error); + tth_ercnt=40; + }else{ + tth_push_depth--; + strcpy(arg,tth_closures[tth_push_depth]); + if(tth_debug&16) fprintf(stderr,"tth_pop:%s depth:%d\n",\ + arg,tth_push_depth); + } +} + +/* ******************************************************************** + Process epsbox. If epsftype=0 put link. Arg is the file name. + epsftype=1 Convert the ps or eps file to a gif reference. + epsftype=2 Ditto but inline it. epsftype=3 inline an iconized version.*/ +void tth_epsf(arg,epsftype) +char *arg; +int epsftype; +{ +#define NCONV 2 +#define NGTYPES 3 + char *gtype[NGTYPES]={"png","gif","jpg"}; + char commandstr[150]={0}; + char filestr[150]={0}; + char filestr1[150]={0}; + char filestr2[150]={0}; + FILE *giffile; + int sys=SUCCESS; + int c,i,psfound; + char *ext; + char eqstr[1]; /*dummy here for tthfunc*/ + *eqstr=0; /*silence warnings */ + ext=arg; /*silence warnings */ +if(epsftype==0){ + fprintf(tth_fdout,"Figure",arg); +}else{ + c=0; + for(i=1;i<=(strlen(arg)<4 ? strlen(arg) : 4);i++){ + ext=arg+strlen(arg)-i; + if(*ext=='.'){ + c=i; + break; + } + ext=ext+i; + } + if(c){ + if(strcmp(ext,".eps") && strcmp(ext,".EPS") + && strcmp(ext,".ps") && strcmp(ext,".PS") + && strcmp(ext,".pdf") && strcmp(ext,".PDF")) + { + fprintf(stderr,"Not a [e]ps file: %s, no conversion\n",arg); + if(epsftype==1) fprintf(tth_fdout,"Figure",arg); + if(epsftype==2) fprintf(tth_fdout,"\"%s\"",arg,arg); + return; + } + } + /* c=length of extension.*/ + strcpy(filestr,arg); + giffile=fopen(filestr,"r"); + psfound=0; + if(giffile == NULL){ /* Try possible file names */ + if(tth_debug&32)fprintf(stderr,"Graphic Input File %s not found.\n",filestr); + if(c==0){ + strcat(filestr,".eps"); + giffile=fopen(filestr,"r"); + if(giffile == NULL){ + if(tth_debug&32)fprintf(stderr,"Graphic Input File %s not found.\n",filestr); + strcpy(filestr,arg); strcat(filestr,".ps"); + giffile=fopen(filestr,"r"); + if(giffile == NULL){ + if(tth_debug&32)fprintf(stderr,"Graphic Input File %s not found.\n",filestr); + strcpy(filestr,arg); strcat(filestr,".pdf"); + giffile=fopen(filestr,"r"); + if(giffile == NULL){ + if(tth_debug&32)fprintf(stderr,"Graphic Input File %s not found.\n",filestr); + psfound=0; + strcpy(filestr,arg); /*Restore original name*/ + }else{ + fprintf(stderr,"Found %s. ",filestr); + psfound=1; + c=4; + } + }else{ + fprintf(stderr,"Found %s. ",filestr); + psfound=1; + c=3; + } + }else{ + fprintf(stderr,"Found %s. ",filestr); + psfound=1; + c=4; + } + } + }else{psfound=1;} + strcat(filestr1,filestr); /* The file we found for input if any.*/ + filestr[strlen(filestr)-c]=0; + sys=SUCCESS+1; + for(c=0;cFigure",filestr); + if(epsftype==2) fprintf(tth_fdout,"\"%s\"",filestr,filestr); + if(epsftype==3) fprintf(tth_fdout,"\"%s\"" + ,filestr,filestr1,filestr1); + }else if(psfound){ /* This can only happen if the system call occurs. */ + fprintf(stderr,"**** System call:%s failed.\n",commandstr); + fprintf(stderr, + "**** This failure is NOT in TtH; it is in an auxiliary program.\n"); + fprintf(tth_fdout,"Figure",arg); + }else { + fprintf(stderr,"**** No suitable source file for %s\n",arg); + } +} +} +/**************************************************************************/ +/* handling code for defs */ + +static int indexkey(key,keys,nkeys) +char *key; +char *keys[]; +int *nkeys; +{ + int i, j; + j=-1; + for(i = *nkeys-1; i>=0; i--) { + if(!strcmp(key,keys[i])) { + j=i; + break; + } + } + return j; +} + +static void mkkey(key,keys,nkeys) +char *key; +char *keys[]; +int *nkeys; +{ + size_t size; + size=strlen(key)+1; + keys[*nkeys]=malloc(size); + strcpy(keys[*nkeys],key); + (*nkeys)++; +} + +static void mkdef(key,keys,def,defs,narg,nargs,nkeys) +char *key; +char *keys[]; +char *def; +char *defs[]; +int *narg; +int nargs[]; +int *nkeys; +{ + size_t size; + size=strlen(key)+1; + keys[*nkeys]=malloc(size); + strcpy(keys[*nkeys],key); + size=strlen(def)+1; + defs[*nkeys]=malloc(size); + strcpy(defs[*nkeys],def); + nargs[*nkeys]=*narg; + (*nkeys)++; +} + +static void rmkey(keys,nkeys) +char *keys[]; +int *nkeys; +{ + if((*nkeys) > 0){ + (*nkeys)--; + free(keys[*nkeys]); + keys[*nkeys]=0; + } else { + fprintf(stderr,"**** Error: No keys left to remove\n"); + } +} + +static void rmdef(keys,defs,nkeys) +char *keys[]; +char *defs[]; +int *nkeys; +{ + if((*nkeys) > 0){ + (*nkeys)--; + free(keys[*nkeys]); + keys[*nkeys]=0; + free(defs[*nkeys]); + defs[*nkeys]=0; + } else { + fprintf(stderr,"**** Error: No defs left to remove\n"); + } +} + +void tth_undefine(keys,nkeys,udkey,lkeys) +char *keys[]; +int *nkeys; +int udkey; +int lkeys[]; + /* Undefine all local keys (lkeys(n)=1) from udkey to nkeys-1 */ +{ + /*static void rmkey();*/ + int i,ig; + ig=0; + for(i=(*nkeys)-1;i>=udkey;i--) { + if(lkeys[i]){ + if(tth_debug&4)fprintf(stderr, + "Undefining:Key %d, %s, %s\n",i,keys[i], + (ig ? "Trapped." : "Freed.")); + if(ig){ + *keys[i]=0; + lkeys[i]=0; + }else{ + rmkey(keys,nkeys); + } + }else{ig=1;} + } +} + +void tth_enclose(str0,str1,str2,store) /* Enclose str1 with str0, str2 */ +char *str0, *str2, *str1, *store; +{ /* Exit if string gets more than 3.5 of the 4*max */ + int lost; + strcpy(store,str1); + if((lost=strlen(str2)+strlen(store)- TTH_34DLEN) < 0){ + strcat(store,str2); + }else{ + fprintf(stderr,"**** Error: Fatal. String overflow: Lengths %d,%d\n", + (int)strlen(store),(int)strlen(str2)); + fprintf(stderr,"Line %d\n",tth_num_lines); + TTH_FATAL(2); + } + strcpy(str1,str0); + if((lost=strlen(str1)+strlen(store)- TTH_34DLEN) < 0){ + strcat(str1,store); + }else{ + fprintf(stderr,"**** Error: Fatal. String overflow: Lengths %d,%d\n", + (int)strlen(store),(int)strlen(str1)); + fprintf(stderr,"Line %d\n",tth_num_lines); + TTH_FATAL(2); + } +} + +void tth_prefix(str0,str1,store) /* Prefix str1 by str0, in str1 */ +char *str0, *str1, *store; +{ + int lost; + strcpy(store,str1); + strcpy(str1,str0); + if((lost=strlen(str1)+strlen(store)- TTH_34DLEN) < 0){ + strcat(str1,store); + }else{ + fprintf(stderr, + "**** Error: Fatal. Prefix string overflow: String %d, Prefix %d\n" + ,(int)strlen(store),(int)strlen(str1)); + fprintf(stderr,"Line %d. Check for excessive length equation.\n%s\n" + ,tth_num_lines," If necessary use switch -y0."); + TTH_FATAL(2); + } +} +/************************************************************************/ +/* start delimit */ +static void delimit(char *type, int heightin, char *codes) + /* Return codes corresponding to a delimiter of given type and height*/ +{ +#define notypes 14 + static int top[notypes]={230,246,233,249,236,252,234,243,233,249,234,250,32,32}; + static int flat[notypes]={231,247,234,250,239,239,234,244,234,250,234,250,32,32}; + static int mid[notypes]={231,247,234,250,237,253,234,244,234,250,234,250,225,241}; + static int bot[notypes]={232,248,235,251,238,254,234,245,234,250,235,251,32,32}; + int i,j; + char chr1[2]={0}; + char buff[20]; + int height; + int horizmode=1; /* In equations use font tags not divs */ + + /*tth_istyle case*/ + if(tth_istyle&1) height=0.65*heightin + 0.71; /* 2 has to yield 2*/ + else height=0.95*heightin+heightin*heightin/16 +.11; + /* Experimental size. Evenness fixed. If very large assume matrix. */ + if(tth_debug&32)fprintf(stderr,"Delimiter %s, heightin=%d, height=%d\n", + type,heightin,height); + + if (!strcmp(type,"(")) i=0 ; + else if(!strcmp(type,")")) i=1 ; + else if(!strcmp(type,"[")) i=2 ; + else if(!strcmp(type,"]")) i=3 ; + else if(!strcmp(type,"{")) {i=4 ; height=2*(height/2)+1;} + else if(!strcmp(type,"}")) {i=5 ; height=2*(height/2)+1;} + else if(!strcmp(type,"|")) i=6 ; + else if(!strcmp(type,"ò")) i=7 ; /* int */ + else if(!strcmp(type,"é")) i=8 ; /* lceil */ + else if(!strcmp(type,"ù")) i=9 ; /* rceil */ + else if(!strcmp(type,"ë")) i=10 ; /* lfloor */ + else if(!strcmp(type,"û")) i=11 ; /* rfloor */ + else if(!strcmp(type,"á")) i=12 ; /* langle */ + else if(!strcmp(type,"ñ")) i=13 ; /* rangle */ + else if(!strcmp(type,"/") || !strcmp(type,"\\")) { + /* Old version with font size=+... and bug sprintf(codes, + "%s%d%s%s%s\n", + TTH_SIZEGEN1,2*(height-1),TTH_SIZEGEN2,TTH_SIZEEND,type); + */ + sprintf(codes, + "%s%d%s%s%s\n", + TTH_SIZEGEN1,100*(height),TTH_SIZEGEN2,type,TTH_SIZEEND); + return; + } + else if(!strcmp(type,"Ö")) { /* Sqrt code */ + if(tth_root_len[tth_root_depth]){ /* An index exists */ + if(heightin<=2 ){ + if(tth_istyle&1){ + sprintf(codes,"%s%s%s%s %s%s%s%s",TTH_CELL_R,TTH_OA1, + TTH_FOOTNOTESIZE,tth_root_index[tth_root_depth], + TTH_SIZEEND,TTH_OA2,TTH_SYMBOL,TTH_large); + chr1[0]=214; + sprintf(codes+strlen(codes), + "%s%s%s%s%s",TTH_SYMPT(chr1),TTH_SIZEEND,TTH_SYMEND,TTH_OA3,TTH_CELL3); + }else{ + chr1[0]=230; + sprintf(codes,"%s\n%s%s %s%s%s%s
    ", + TTH_CELL_R,TTH_SCRIPTSIZE,tth_root_index[tth_root_depth], + TTH_SIZEEND,TTH_SYMBOL,TTH_NORMALSIZE,TTH_SYMPT(chr1)); + chr1[0]=214; + sprintf(codes+strlen(codes),"%s
    %s%s%s", + TTH_SYMPT(chr1),TTH_SIZEEND,TTH_SYMEND,TTH_CELL3); + } + }else{ + chr1[0]=230; + sprintf(codes,"%s%s%s%s %s%s%s%s
    ",TTH_CELL_R,TTH_OA5,TTH_SMALL, + tth_root_index[tth_root_depth],TTH_SIZEEND, + TTH_SYMBOL,TTH_Large,TTH_SYMPT(chr1)); + chr1[0]=231; + for(j=1;j<(height*.78-2.3);j++){ /* extra sqrt height */ + sprintf(codes+strlen(codes),"%s
    ",TTH_SYMPT(chr1)); + } + chr1[0]=214; + if(tth_istyle&1) sprintf(codes+strlen(codes), + "%s%s\n %s%s%s",TTH_SYMPT(chr1),TTH_SIZEEND,TTH_SYMEND, + TTH_OA3,TTH_CELL3); + else sprintf(codes+strlen(codes),"%s%s\n %s
    \n%s", + TTH_SYMPT(chr1),TTH_SIZEEND,TTH_SYMEND, + TTH_CELL3); + } + }else{ /* Vanilla */ + if(heightin > 2){ + chr1[0]=230; + sprintf(codes, + "%s\n%s  %s%s
    " + ,TTH_CELL_L,TTH_Large,TTH_SYMBOL,TTH_SYMPT(chr1)); + chr1[0]=250; + for(j=1;j < (0.78*height-2.3);j++){ + sprintf(codes+strlen(codes),"%s %s%s
    \n", + TTH_SYMEND,TTH_SYMBOL,TTH_SYMPT(chr1)); + }/* Accommodate Konqueror nbsp symbol bug */ + chr1[0]=214; + sprintf(codes+strlen(codes),"%s
    %s%s%s", + TTH_SYMPT(chr1),TTH_SIZEEND,TTH_SYMEND,TTH_CELL3); + }else{ + chr1[0]=214; + sprintf(codes, + "%s
    %s%s%s%s
    %s%s%s",TTH_CELL_L,TTH_SYMBOL, + TTH_Large,TTH_SYMPT(chr1),TTH_SIZEEND,TTH_SYMEND,TTH_OA4,TTH_CELL3); + } + } + *tth_root_index[tth_root_depth]=0; + tth_root_len[tth_root_depth]=0; + tth_root_depth--; + return; + } + else if(!strcmp(type,".")) { *codes=0; return; } + else { + fprintf(stderr, "Incorrect delimiter::%s::\n",type); + i=-1; + *codes=0; + return; + } + + /* Now using 8 bit codes. */ + if(height>1){ + strcpy(codes,TTH_CELL_L); + strcat(codes,TTH_SYMBOLN); + for (j=1 ; j <= height ; j++){ + if(j == 1) {chr1[0]=top[i]; sprintf(buff,"%s
    ",TTH_SYMPT(chr1));} + else if(j == height) {chr1[0]=bot[i]; sprintf(buff,"%s\n",TTH_SYMPT(chr1));} + else if(j == (height+1)/2) { + chr1[0]=mid[i];sprintf(buff,"%s
    \n",TTH_SYMPT(chr1));} + else {chr1[0]=flat[i]; sprintf(buff,"%s
    ",TTH_SYMPT(chr1));} + strcat(codes,buff); + } + strcat(codes,TTH_SYMEND); + strcat(codes,TTH_CELL3); + if(tth_debug&512) fprintf(stderr,"codes=%s",codes); + }else{ + if(i > 6){ + strcpy(codes,TTH_SYMBOLN); + strcat(codes,TTH_SYMPT(type)); + strcat(codes,TTH_SYMEND); + }else strcpy(codes,type); + } +} + /* end delimit */ + /*start symext*/ +/**************** Construct large, possibly extended, character. */ +void tth_symext(charin,charout) +char *charin,*charout; +{ + int horizmode=1; /* In equations use font tags not divs */ + char chr1[2]={0}; + chr1[0]=242; + if(strlen(charin) == 1){ + if(charin[0]==chr1[0]) { + strcpy(charout,TTH_SYMBOL); + chr1[0]=243;strcat(charout,TTH_SYMPT(chr1)); + strcat(charout,"
    "); + chr1[0]=245;strcat(charout,TTH_SYMPT(chr1)); + strcat(charout,"
    "); + strcat(charout,TTH_SYMEND); + }else { + strcpy(charout,TTH_LARGE); + strcat(charout,TTH_SYMBOL); + strcat(charout,TTH_SYMPT(charin)); + strcat(charout,"
    \n") ; + strcat(charout,TTH_SYMEND); + strcat(charout,TTH_SIZEEND); + } + }else{ /* Longer than one: remove a leading space, quote and terminate. */ + if(*charin==' ')strcpy(charout,charin+1); else strcpy(charout,charin); + if(strstr(charout,TTH_OBR)+strlen(TTH_OBR)!=charout+strlen(charout) + && strstr(charout, /*This mess is really TTH_DIV without eqclose ref*/ + (tth_istyle&1 ? + "\n

    " + :"
    ") + )+strlen( + (tth_istyle&1 ? + "\n

    " + :"
    ") + )!=charout+strlen(charout) + && strstr(charout+strlen(charout)-9,"ble>")==NULL) + strcat(charout,"
    \n"); + } /* Don't add an extra br to a hr or table end. */ +} + /*end symext*/ +/***************** Encode 3-digit integers *************************/ +void tth_encode(code,num) +char *code; +int num; +{ +int i; +sprintf(code,"%03d",num); +for (i=0;i<3;i++) *(code+i)=*(code+i) + 17; +} + +/*******************************************************************/ +/* Find the first brace group in the string "text" and copy it to the + string group, whose maximum length is len, value returned 0 if successful.*/ +int tth_group(group,text,len) +char *text,*group; +int len; +{ + int i,j; + int brace; + i=strspn(text," \t\n"); + /* if(*(text+i)=='{') i++; remove leading brace */ + j=0; + brace=0; /* 1 if removing braces */ + while(i+j < strlen(text)){ + if(*(text+i+j)=='{')brace++; + else if(*(text+i+j)=='}')brace--; + if(brace <= 0) break; + j++; + } + strncpy(group,text+i,len); + if(i+j= 4*multiples[0]){ + strcpy(rm,"A LARGE NUMBER"); + return 1; + } + m=0; + i=num; + if(i < 0){ + i=-i; + *(rm+(m++))='-'; + } + for(j=0;j=0){ + i=i-k; + *(rm+(m++))=codes[j]; + } + if(j=k){ + i=i-(k-p); + *(rm+(m++))=codes[n]; + *(rm+(m++))=codes[j]; + } + } + } + *(rm+(m++))=0; + return 0; +} +/* start b_align */ +/************************************************************************* + Take off the Cell start and the extra bottom from single over construct. + This is used only at the completion of the top or bottom of a fraction. + If cell starts or ends with CELL3, cut off since they are redundant. + If it then ends with OA4 it is a candidate for bottom removal. + If every CELL3 appears as part of the sequence OA4 CELL3, then change + each occurrence to just CELL3. + */ +#define BMAXLEN 1000 +#define NSTS 20 +static int b_align(thestring,tth_debug) + char *thestring; + int tth_debug; +{ + char buff1[BMAXLEN]; + char *chr,*chr1,*chr2; + char *oastarts[NSTS]; + char *oa4null=" "; + int ists=0,i; + + if(tth_debug&8192)fprintf(stderr,"b_align string:%s",thestring); + if(strlen(thestring) > BMAXLEN) return 0; /*Too long*/ + strcpy(buff1,thestring); + if(strstr(thestring,TTH_CELL3) == thestring) { /*Starts with CELL3 */ + strcpy(buff1,thestring+strlen(TTH_CELL3)); + if(tth_debug&2)fprintf(stderr,"String Head cut, "); + } + if(strstr(buff1+strlen(buff1)-strlen(TTH_CELL3),TTH_CELL3)){/*end*/ + *(buff1+strlen(buff1)-strlen(TTH_CELL3))=0; + if(tth_debug&2)fprintf(stderr,"String Tail cut. "); + } + if((oastarts[0]=strstr(buff1+strlen(buff1)-strlen(TTH_OA4),TTH_OA4))){ + chr=buff1; + for (ists=0; ists=0 && i<256) { + strcpy(tth_chuni,(tth_unicode==1 ? tth_sympoint[i] : tth_sympoint2[i])); + }else {i=-1;} + } + if(i==-1){ + j=0; + *tth_chuni=0; + while(strlen(chsym+j)){ + i=(int)*(chsym+j++); + if(i<0)i=i+256; + strcat(tth_chuni,(tth_unicode==1 ? tth_sympoint[i] : tth_sympoint2[i])); + } + } + } + return tth_chuni; +} +/*************************************/ +void tagpurge(eqstr) + char *eqstr; +{ + char *position; + char eqpurge[4*TTH_DLEN]; + int len; +/* fprintf(stderr,"Title Purging %s\n",eqstr); */ + position=eqstr; + *eqpurge=0; + while(position")+1; + } + strcpy(eqstr,eqpurge); +/* fprintf(stderr,"Purged %s\n",eqstr); */ +} + +/**End of TtH**/ + diff --git a/code-postprocessing/bbob_pproc/tth_C/tth.gif b/code-postprocessing/bbob_pproc/tth_C/tth.gif new file mode 100644 index 0000000000000000000000000000000000000000..f5ee5058b294d1e66a2cdbf1cddfb9670fc3dc5a GIT binary patch literal 7341 zcmeI1cQ{=8pT|cDqnGHSMzkPA#27@0GCCom_k`#zA&BTRV|0mLLqsnj$`}ln7=#dA z^ymyj)X_F~@9sXkclYk@@AvGp``g`n{yfh)f4yGk`+2|5M_oe=Bx7p^FazWR{{9*o zx�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 literal 0 HcmV?d00001 diff --git a/code-postprocessing/bbob_pproc/tth_C/tth_manual.html b/code-postprocessing/bbob_pproc/tth_C/tth_manual.html new file mode 100644 index 000000000..2a21d3daf --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/tth_manual.html @@ -0,0 +1,3123 @@ + + + + + + + + + \TtH: a ``\TeX to HTML'' translator. + +

    TTH: a "TEX to HTML" translator.

    +
    TtH icon
    + +
    +Version 4.04
    + +

    +

    + + +
    + +

    Abstract

    +TTH translates TEX documents that use the Plain macro package or +LATEX, into HTML. + It is extremely fast and completely portable. It +produces web documents that are more compact and managable, and +faster-viewing, than those from other converters, because it really +translates the equations, instead of converting them into images. + +
    + +

    Contents

    1  Capabilities
    +    1.1  Plain TEX
    +        1.1.1  Mathematics
    +        1.1.2  Formatting and Macro Support
    +    1.2  LATEX
    +        1.2.1  Environments:
    +        1.2.2  LATEX Commands:
    +    1.3  Special TEX usage for TTH
    +    1.4  Unsupported Commands
    +2  Installation
    +3  Usage
    +4  Messages
    +5  Mathematics
    +    5.1  Equations
    + + +    5.2  In-line Equation Limitations
    +    5.3  Mathematics Layout Style Improvement using CSS
    + + +6  Features dependent on external programs.
    +    6.1  Independence of [La]TEX installation and the -L switch.
    +    6.2  BibTeX bibliographies
    +    6.3  Indexing
    + +        6.3.1  Glossaries.
    +    6.4  Graphics Inclusion: epsfbox/includegraphics
    +    6.5  Picture Environments
    +7  Tabular Environment or Halign for Tables
    +    7.1  Tabular
    +    7.2  Halign
    +    7.3  Longtables
    +8  Boxes, Dimensions, and fills
    +TEX command definitions and other extensions
    +    9.1  Delimited-parameter macros and Conditionals
    +    9.2  Macro- and Style-file inclusion
    +    9.3  Layout to include arguments of unknown commands
    +    9.4  Restrictions on redefinition of internal commands
    +        9.4.1  Footnotes
    +10  Color
    +    10.1  LATEX Color
    +    10.2  Plain Color
    +    10.3  Limitations
    +11  Producing output split into different files.
    +    11.1  Overview
    +    11.2  Navigation Controls at File Top and Tail
    +    11.3  Special Precautions when Splitting Output
    +        11.3.1  Floats such as figures or tables
    +        11.3.2  Multiple Bibliographies
    +12  HTML and output
    +    12.1  Formal HTML validation
    +    12.2  HTML Styles
    +13  Browser and Server Problems
    +    13.1  Accessing Symbol Fonts: Overview
    +    13.2  Accessing Symbol Fonts: Details
    +    13.3  Printing
    +    13.4  Netscape/Mozilla Composer
    +    13.5  Other Browser Bugs
    +    13.6  Web server problems
    +14  Code Critique
    +15  License
    +16  Acknowledgements
    +A  Appendix: Non-Standard TEX Macros
    +B  Appendix: Frequently Asked Questions
    +    B.1  Building and Running TTH
    + + + +    B.2  [La]TeX constructs TTH does not seem to recognize
    + + + + + + + + + +    B.3  HTML output that does not satisfy
    + + + + + + + + + + + + +    B.4  How to write TEX designed for Web publishing
    + + + + + + + +    B.5  Formerly Frequently Asked Now Rarely Asked
    + + + +Index
    + +
    +

    +1  Capabilities

    + +
    +

    +1.1  Plain TEX

    + +
    +

    +1.1.1  Mathematics

    + +
    +Almost all of TEX's mathematics is supported with the exception of a +few obscure symbols that are absent from the fonts normally available +to browsers. Support includes, for example, in-line equations with +subscripts and superscripts, display equations with built-up +fractions, over accents, large delimiters, operators with limits; +matrix, pmatrix, cases, [but not bordermatrix]; over/underbrace [but +using a rule, not a brace]. + +
    +

    +1.1.2  Formatting and Macro Support

    + +
    + +
      +
    • Font styles: \it, \bf, \sl, \uppercase, everywhere, +\rm in most situations +1. +
      +
    • + +
    • Accented characters written like \"o or \'{e}. +
      +
    • + +
    • Guess the intent of font definitions, i.e. \font commands +[optionally, remove contruct]. +
      +
    • + +
    • Macro definitions that are global: \gdef, \xdef, +\global\def, \global\edef; or local to the +current group: \def, \edef. +
      +
    • + +
    • Definitions with delimited arguments. +
      +
    • + +
    • Input of files [see 9.2]. +
      +
    • + +
    • Newcount, number, advance and counter setting [global counter setting +only]. + + + +
      +
    • + +
    • Conditionals: iftrue, +iffalse, +ifnum, +ifodd, +ifcase, +if [for defined commands and plain characters, not some internals] +2, ifx [only for +defined commands and counters; internals appear undefined], ifvmode, +ifmmode, newif. +
      +
    • + +
    • Centerline, beginsection, item, itemitem, obeylines; hang, hangindent, +narrower [for entire paragraphs, hangafter ignored]. + Headline is made +into a title, footnote{}{}. Comments: removed. +
      +
    • + +
    • Tables: halign [uses border style if the template contains +vrule.]. Settabs, \+. +
      +
    • + +
    • Simple uses of \hbox,\vbox and \hsize to align text and +make boxes with restricted widths, but these are discouraged. In +setting the width of a vbox, the value of hsize should be once only, +immediately at the beginning of the vbox. +
      +
    • +
    + +
    +

    +1.2  LATEX

    +LATEX support includes essentially all mathematics plus the following + +
    +

    +1.2.1  Environments:

    + em, verbatim, center, flushright, verse, quotation, quote, itemize, +enumerate, description, list [treated as if description], figure, +table, tabular[*,x], equation, displaymath, eqnarray, math, array [not +generally in in-line equations], thebibliography, [raw]html, +index [as description], minipage [ignoring optional argument], +longtable [but see 7.3]. + +
    +

    +1.2.2  LATEX Commands:

    + [re]newcommand, newenvironment, chapter, section, subsection, +subsubsection, caption, label, ref, pageref [no number], emph, textit, +texttt, textbf, centering, raggedleft, includegraphics, [e]psfig, +title, author, date [maketitle ignored: title etc inserted when +defined], lefteqn, frac, tableofcontents, input, include [as input, +includeonly ignored], textcolor, color, footnote +[ignoring optional arg], cite, bibitem, bibliography, tiny +... normalsize ... Huge, newcounter, setcounter, addtocounter, value +[inside set or addto counter], arabic, the, stepcounter, newline, +verb[*] [can't use @ as separator], bfseries, itshape, ttfamily, +textsc, ensuremath, listoftables, listoffigures, newtheorem [no +optional arguments permitted], today, printindex, boldmath, +unboldmath, newfont, thanks, makeindex, index, @addtoreset, +verbatiminput, paragraph, subparagraph, url, makebox, framebox, mbox, +fbox, parbox [ignoring optional argument], definecolor, colorbox, +fcolorbox [not in equations], pagecolor [discouraged], savebox, sbox, +usebox. + +
    + These cover most of the vital LATEX constructs. Internal hypertext +cross-references are automatically generated (e.g. by ref and +tableofcontents) provided LATEX has previously been run on the +document and the appropriate command-line switch is used. + +
    +

    +1.3  Special TEX usage for TTH

    + A few non-standard TEX commands are supported as follows +3. See +also 6.4. + +
    +\epsfbox{file.[e]ps} Puts in an anchor called "Figure" linked to 
    +    file.[e]ps (default), or alternatively calls user-supplied script 
    +    to convert the [e]ps file to a gif image and optionally inline it.  
    +\special{html:"tags"} inserts ``tags'' into the HTML e.g. for images etc.  
    +\href{reference}{anchor} highlights ``anchor'' with href=``reference''.
    +\url{URL} like \href but with URL providing both reference and anchor.
    +\begin{[raw]html} ... \end{[raw]html} environment passed direct to output.
    +\tthtensor Subscripts and superscripts immediately following, on simple
    +    characters, are stacked up in displaystyle equations, not staggered. 
    +\tthdump{...} The group is omitted by tth. Define \tthdump as a nop for TeX.
    +%%tth:... The rest of the comment line is passed to tth (not TeX) for parsing.
    +
    +
    + +
    +

    +1.4  Unsupported Commands

    + +
    + When TTH encounters TEX constructs that it cannot handle either +because there is no HTML equivalent, or because it is not clever +enough, it tries to remove the mess they would otherwise cause in the +HTML code, generally giving a warning of the action if it is not sure +what it is doing. The following are +not translated. + +
    + +
    + \magnification \magstep etc : Removes the whole construct.
    + Some boxes in equations.
    + \raisebox, \lowerbox and similar usages.
    + \accent, \mathaccent. 
    +
    +
    + +
    +

    +2  Installation

    + +
    +The source for TTH is flex code which is processed to produce a C program +tth.c which comprises the distribution. This file is compiled by + +
    +	gcc -o tth tth.c
    +
    +
    + or whatever C compiler you are using. Compilation takes +typically less than a minute on a modern PC. + +
    +The executable should then be copied to whatever directory you want +(preferably on your path of course). That's all! + +
    +Alternatively you may be able to obtain a precompiled executable from +wherever you accessed this file. The Wind@ws executable comes with a +batch file for installation. Just run it by the command "install". + +
    +

    +3  Usage

    + +
    + Command line is as +follows. The order of the parts is irrelevant. Switches (preceded by a +minus sign -) can appear anywhere on the line. Square brackets should +not be entered, they simply indicate optional parts of the command +line. + + + + +
    +Either filter style (the < and > are file redirection operators):
    +  tth [-a -c -d ... ] <file.tex [>file.html] [2>err]
    +
    +Or, specifying the input file as an argument (output is then implied):
    +  tth [-a -c -d ... ] file[.tex] [2>err]
    +
    +Switches:
    +   -a automatic picture environment conversion using latex2gif (default omit). 
    +   -c prefix header "Content-type: text/HTML" (for direct web serving).
    +   -d disable delimited definitions.
    +   -e? epsfbox handling: -e1 convert figure to gif using user-supplied ps2gif.
    +       -e2 convert and include inline. -e0 (default) no conversion, just ref. 
    +   -f? sets the depth of grouping to which fractions are constructed built-up
    +    f5 (default) allows five levels built-up, f0 none, f9 lots. 
    +   -g don't guess an HTML equivalent for font definitions, just remove.
    +   -h print help. -? print usage.
    +   -i use italic as default math font.
    +   -Lfile  tells tth the base file (no extension) for LaTeX auxiliary input, 
    +      enables LaTeX commands (e.g. \frac) without a \documentclass line.
    +   -n? HTML title format control. 0 raw. 1 expand macros. 2 expand equations.
    +   -ppath specify additional directories (path) to search for input files.
    +      -pNULL is a special switch that disables all \input or \includes.
    +   -r output raw HTML (no preamble or postlude) for inclusion in other HTML.
    +	-r2 omit just the time stamp. -r1 is equivalent to -r.
    +   -t display built-up items in textstyle equations (default in-line).
    +   -u? unicode character encoding. Default 2 (unicode 3.2). 0 (iso8859-1)
    +   -v give verbose commentary. 
    +   -w? html writing style: 0 no title construction. 1 use head/body. 2 XHTML.
    +   -y? equation style: bit 1 compress vertically; bit 2 inline overaccents.
    +   -xmakeindx  specify a non-standard makeindex command line.
    +
    +
    + + + +With no arguments other than switches starting with a "-", +the program is a filter, i.e. it reads from stdin and writes to stdout. +In addition, diagnostic messages concerning its detection of unknown +or untranslated constructs are sent to stderr. If these standard +channels are not redirected using < and >, then the +input is read from the command line, and both output and error +messages are printed on the screen. + +
    +If a non-switch argument is present, it is assumed to be the name of +the input file. The file must have extension ".tex" but the extension +may be omitted. The output file is then constructed from the argument +by removing the extension ".tex" if specified, and adding ".html". + +
    +TTH is extremely fast in default mode on any reasonable hardware. +Conversion of even large TEX files should be a matter of a second or +two. +This makes it possible to use TTH in a CGI script to output HTML +directly from TEX source if desired; (stderr may then need to be redirected.) + +
    +

    +4  Messages

    + +
    +Messages about TTH's state and its assessment of the TEX it is +translating are output always to the stderr stream, which +normally displays on the console, but under Un*x type systems can be +redirected to a file if necessary. Normally these messages are one of +three types: + +
    + +

    Error Messages

    +These start **** Error: and indicate some improper condition or +error either in TTH or in the TEX of the file being +translated. Some errors are fatal and cause TTH to stop. On others +it will continue, but the TEX file probably should be corrected in +order to get correct output. + +
    + +

    Warnings

    +These start **** but without reporting Error. They are +messages by which TTH indicates aspects of the translation process +that may not be fully satisfactory, usually because of known limitations, +but which quite likely will not prevent the translated file from +displaying correctly, and so do not necessarily require +intervention. Examples include the use of some dimensions, glue, or similar +TEX commands that have no HTML equivalent. + +
    + +

    Informational and external

    +Lines with no **** are either informational, meaning the state +of the translation is not considered abnormal, or else they may come +from external programs (e.g. makeindex), over which TTH has no +control. + +
    +The switch -v causes more verbose messages to be output, which +may be helpful for understanding why errors are reported. A higher +level of verbosity -V can be invoked, but is intended primarily +for internal debugging of TTH and will rarely be comprehensible! + +
    +The presumption that lies behind TTH message design is that the file +being translated has been debugged using TEX or LATEX to remove +syntax errors. TTH is not good at understanding or reporting TEX syntax errors and counts only the lines in the main TEX file, not +those in files read by \input. Therefore error reporting by +TTH does not reach even the low standard of clarity set by TEX and +LATEX error messages. Although TEX files can be debugged using +TTH alone, since it is very fast, the process is not recommended for +inexpert TEX users. Moreover, since TTH understands both TEX and +LATEX simultaneously, it can parse some files that TEX or LATEX  +separately cannot. + +
    +

    +5  Mathematics

    + +
    +

    +5.1  Equations

    + +
    + Equations are translated internally into HTML. TTH uses HTML tables + for layout of built-up fractions in display equations. It also uses + the HTML tag < font face="symbol" > to render Greek and large + delimiters etc. Untranslatable TEX math tokens are inserted + verbatim. + +
    +The internal approach to equation translation is a major area where +TTH departs from the philosophy of LATEX2html and its +derivatives. TTH  +does not use any images to try to represent hard-to-translate +constructs like equations. Instead it uses the native ability of HTML +to the fullest in providing a semantically correct rendering of the +equation. The aesthetic qualities obtained are in practice no worse on +average than LATEX2html's inlined images, which are generally slightly +misaligned and of uncertain scaling relative to the text. Some +limitations in the HTML code are inevitable, of course, but one ends +up with a compact representation that can be rendered directly by the +browser without the visitor having to download any additional helper +code (e.g. Java equation renderer). + +
    + +The option [-i]   to TTH makes italic the default +font within equations, and thus the style more TEX-like. The italic +font appearance in browsers is not as satisfactory as TEX's math +italic, so for many documents roman looks better. + +
    + +Spacing   in equations is handled slightly differently by TTH than +by TEX. The reason is that most browsers use fonts that will crowd the +characters horizontally too close for comfort in many cases (for +example: M||/2). Also, built-up HTML equations are more +spread out vertically than in TEX. Therefore TTH equations look better +if spaces are added between some characters. So TTH  +does not remove spaces in the original TEX file between characters in +equations. The author is thus able to control this detail of layout in +the HTML without messing up their TEX file - since TEX will ignore +any spaces inserted. Legacy TEX code that contains a lot of spurious +whitespace (ignored by TEX) may, as a result, occasionally become too +spread-out when translated. + +
    +

    +5.2  In-line Equation Limitations

    + +
    + Some TEX capabilities are +extremely difficult or impossible to translate into HTML, because of +browser limitations, and are best avoided if possible. Arrays or +matrices or built-up fractions in in-line equations cannot be +properly supported because tables cannot be placed in-line in HTML. +TTH output often will be strangely disjointed. + + + + + As an option, TTH provides switch -t to convert inline +equations that use built-up constructs into a sort of half display, +half in-line equation. Each time a new in-line equation is encountered +[$ ... $ or \( ... \)] that needs to be built up, an +HTML table that starts a new line is begun, and the text then flows on +afterwards. For example +
    1
    2 + n

    +This option gives a slightly strange layout for simple equations +but is a big improvement for some situations, e.g. in-line matrices. + + +
    +Likewise most over- and under-accents, and indeed anything that +requires specific placement on the page other than simple subscript or +superscript and underline, cannot be rendered in-line in plain +HTML, although TTH will render them well in +displaystyle. These latter constructs are nevertheless commonly +used in in-line TEX. By default TTH renders these constructs in a +relatively intuitive way. For example $\hat{a}$ is rendered +a. The result is rarely elegant but it is +unambiguous. + +
    +

    +5.3  Mathematics Layout Style Improvement using CSS

    + + + + +
    +Some of the mathematics rendering limitations just mentioned can be + overcome using Cascading Style Sheets. These are an extension of HTML + that allows finer control over the layout. Most modern browsers + support some fraction of the CSS specification, but historically its + implementation has been slow and buggy. So it used to be awkward and + dangerous to adopt CSS for authoring because of never knowing whether + one was producing HTML that would simply be broken on a particular + browser. Moreover using style sheets slows down the browser's + rendering. + +
    + +Vertical Compression   of the otherwise sometimes rather +spread-out mathematics is implemented on TTH using a simple built-in +style sheet to reduce unwanted vertical space. The implementation +works around the different idiosyncrasies of the browsers' +implementations as well as it can, and is designed to degrade +gracefully in browsers without CSS support or with the support +switched off. This compression can be controlled by the switch -y, +which permits a numeric argument, e.g. -y1. Compression is on +by default, which corresponds to the first bit of the -y switch value +being 1 (in other words the value is odd). It may be switched off by +using the switch -y with an even numeric argument (or none at +all), e.g. -y2 or -y. + +
    + +In-line over-accents   can be rendered explicitly using the +relative positioning available in CSS2. The result is visually + preferable to the the indicative base rendering. However, it does not + fall-back gracefully, and the application of over accents to + multiple-character groups produces a poorly aligned result. + Nevertheless, since TTH version 3.87 it is used as default. It can + be turned off using the -y switch with the second bit (2) zeroed + in the numeric argument. For example -y1 or -y0 turns + it off. + +
    +

    +6  Features dependent on external programs.

    + +
    +

    +6.1  Independence of [La]TEX installation and the -L switch.

    + + + A major difference +between TTH and LaTeX2HTML is that TTH does not call the LATEX or tex programs at all by default, and is not specifically dependent +upon these, or indeed any other (e.g. PERL), programs being installed +on the translating system. Its portability is therefore virtually +universal. + +
    +Forward references in LATEX are handled by multiple passes that write +auxiliary files. TTH does only a single pass through the source. If +you want TTH to use LATEX constructs (e.g. tableofcontents, +bibliographic commands, etc.) that depend on auxiliary files, then +you do need to run LATEX on the code so that these files are +generated. Alternatively, the TTH switch +-a +causes TTH automatically to attempt to run latex on the file, +if no auxiliary file .aux exists. + +
    +When run specifying a filename on the command line as a non-switch +argument, TTH constructs the name of the expected auxiliary LATEX files in the usual way and looks for them in the same directory as the +file. +If you are using TTH as a filter, you must tell TTH, using the +switch -Lfilename, the base file name of these auxiliary files +(which is the name of the original file omitting the extension). If +TTH cannot find the relevant auxiliary file because you didn't run +LATEX and generate the files or didn't include the switch, then it +will omit the construct and warn you. +Forward references via ref will not work if the .aux file is +unavailable, but backward references will. The -L switch with no +filename may be used to tell TTH that the document being translated +is to be interpreted as a LATEX file even though it lacks the usual +LATEXheader commands. This may be useful for translating single +equations that (unwisely) use the \frac command. + +
    +

    +6.2  BibTeX bibliographies +

    + +
    +TTH supports bibliographies that are created by hand using +\begin{thebibliography} etc. Such bibliographies do not require +anything beyond the .aux file. TTH also supports +bibliographies created using BibTEX from a biblography database. The +filename.bbl file is input at the correct place in the +document. However, this filename.bbl is not created +automatically by LATEX. In addition to running LATEX on the source +file to create the auxiliary file, you must also execute +bibtex filename in the same directory, to create the +filename.bbl file, and then run LATEX again to get the +references right. (This is, of course, no more than the standard +procedure for using BibTEX with LATEX but it must be done if you +want TTH to get your bibliography right). If you don't create the +.bbl file, or if you create it somewhere else that TTH does not +search, then naturally TTH won't find it. Since the BibTEX process +is relatively tortuous, TTH offers an alternative. Using the -a +switch with TTH will cause it +to attempt to generate the required .bbl file automatically using +BibTEX and LATEX. + +
    +There are many different styles for bibliographies and a large number +of different LATEX extension packages has grown up to implement +them, which TTH does not support. More recently, a significant +rationalization of the situation has been achieved by the package +natbib. TTH has rudimentary support built in for its +commands \citep and citet in the default author-date +form without a second optional argument. A style file for +natbib is distributed with TTHgold which makes it possible to +accommodate most of its more useful styles and commands and easily switch from +author-date citation to numeric citation. + +
    +

    +6.3  Indexing

    + +
    +TTH can make an extremely useful hyperlinked index using LATEX automatic indexing entries. But indexing an HTML document is different +from indexing a printed document, because a printed index refers to +page numbers, which have no meaning in HTML because there are no page +breaks. TTH indexes LATEXdocuments by section number rather +than by page; assuming, of course, that they have been prepared with +index entries in the standard LATEX fashion. + +
    + When processing a LATEX file that contains the +\makeindex command in its preamble, TTH will construct an +appropriately cross-hyperlinked index that will be input when the +command \printindex is encountered, which must be after +all the index references \index{ ... } in the document. TTH does this independently of LATEX, but not of the subsidiary program +makeindex that is normally used with LATEX to produce the +final index. TTH creates its index entries in a file with extension +.tid (Tth InDex). Unfortunately the standard form that +makeindex expects for compound numbering of its sections or +pages is "1-2", separated by a dash. TtH changes that to "1.2" +using a point, and has to output a style file filename.mst , +where filename is the base filename of the latex file being +processed, to enable makeindex to handle this form. When the +\printindex command is encountered, TTH closes the .tid file and +runs the command + +
    +makeindex -o filename.tin filename.tid
    +
    +
    +on it. This creates an output file filename.tin, and +then TTH reads that file in as its index. If, instead of creating +an index file during TTH processing, one wants to use with TTH an +index file already created, all that is needed is to remove the +\makeindex command from the top of the LATEX source and copy +the existing .ind file to a .tin file that will be input by +\printindex. No indexing files will be written or deleted +without a \makeindex command in the document. + +
    +The \makeindex command, if present, will also cause TTH to add + +a linked entry called "Index" +to the end of any table of contents. This entry is a highly desirable +feature for an HTML file, but if there is no \printindex +command at the end of the document, the index will not exist, so the +reference will be non-existent. + +
    +On some operating systems with file name length restrictions, the +makeindex program is called makeindx. Therefore a TTH switch is +provided: -xcommandline, which substitutes commandline +for the default call makeindex. Therefore, -xmakeindx +will switch to the correct program name on one of these limited +operating systems. This switch also allows additional parameters or +switches to be passed to makeindex. If the -xcommandline +contains any spaces, then it is interpreted as the complete +command-line (not just the first word of the command-line), in which +the base filename may be referenced up to 3 times as "%s". For +example +-x"makeindex -s style.sty -o %s.tin %s.tid" will handle the +index using a different style file "style.sty". +If you don't have the makeindex program, you can't create indexes with +TTH or LATEX, except by hand. + +
    +All of the index file processing naturally requires that TTH have +write permission for the directory in which the original LATEX file +(specified by the -L switch) resides. + +
    + +Layout of the index   can be controlled with the switch +-j with an immediately following argument that specifies the +minimum number of lines in a column before the column will be +terminated. Because index entries are usually short, books almost +always adopt a two-column format for the index. TTH will also do so +by default, but since an HTML document has no page breaks, the question +arises how long the individual columns are allowed to be. The default +(no switch) is equivalent to -j20. A switch -j with no +argument is equivalent to specifying a very large number of lines, +with the result that only one column is used. A switch -j1 +will cause the columns to break at every indexspace, that is generally +at every new letter, so letter lists will alternate between columns. + +
    +

    +6.3.1  Glossaries.

    LATEX has a parallel set of commands for +glossary construction, replacing "index" with "glossary". +However, there is no \printglossary command and the .glo file +that LATEX produces cannot be handled by the makeindex program +without a specific style file being defined. Therefore glossary +entries are highly specialized and rarely used. TTH does not support +a glossary separate from the index. Instead it simply defines the +command as \def\glossary{\index} with the result that glossary +entries are placed in the index. It may be necessary to add +\makeindex and \printindex commands to make TTH handle +the glossary entries for a file that has only a \makeglossary +command. + +
    +

    +6.4  Graphics Inclusion: epsfbox/includegraphics

    + + +The standard way in plain TEX to include a graphic is using the epsf +macros. The work is done by \epsfbox{file.[e]ps} which +TTH can parse. By default TTH produces a simple link to such a +postscript file, or indeed any format file. + +
    + Optionally TTH can use a more appropriate +graphics format, possibly using a user-supplied (script or) program +called ps2png or ps2gif to convert the postscript file +to a png4 or gif +file, "file.png" or "file.gif". ["file" is the name of the +original postscript file without the extension and png or gif are +interchangeable as far as matters for this +description]. When the switch -e1 or -e2 is specified, if +"file.png", "file.gif" or "file.jpg" already exists in the same +directory as implied by the reference to "file.ps" then no +conversion is done and the file found is used instead. That graphics +file is then automatically either linked (-e1) or inlined (-e2) in the +document. If no such file is found, TTH tries to find a postscript +file with extension that starts either .ps or .eps and convert it, +first using ps2png then, if unsuccessful, ps2gif. Linux +(un*x) ps2png and ps2gif scripts using Ghostscript and +the netpbm utilities for this purpose are included with the +distribution. A comparable batch program can be constructed to work +under other operating systems +5 + or else the conversion can be done by +hand. Naturally you need these utility programs or their equivalent on +your system to do the conversion. The calling command-line for +whatever ps2png (or gif) is supplied must be of the form: + +
    ps2png inputfile.ext outputfile.ext
    +
    + The program must +have permission to write the outputfile (file.png) in the directory in +which the file.ps resides. + +
    +By popular request, a third graphics option -e3 for generating icons is +now available. If no previously translated graphics file, +e.g. "file.png" exists, TTH passes to ps2gif (or png) a third +argument consisting of the name, "file_icon.gif", of an icon file. +ps2gif is expected to create it from the same postscript file. In +other words the call becomes + +
    ps2gif file.eps file.gif file_icon.gif
    +
    + This third argument is then the file that is +inlined, while the larger gif file named "file.gif" is linked such +that clicking on the icon displays the full-size gif file. The icon +will not be created if "file.gif" already exists, because +ps2gif will not then be called. + +
    +The LATEX2e command \includegraphics{...} and the older +\[e]psfig{file=...} are treated the same as \epsfbox. +Their optional arguments are ignored. + +
    +If the extension is omitted for the graphics file specification, then +.ps or .eps is tried. If the extension of the file specified is +non-null and not .ps or .eps, no conversion is done but the file +is referenced or in-lined as an image. In effect, then, TTH supports +postscript, encapsulated postscript, gif, and jpeg, plus any future +formats that become supported by common browsers. However, LATEX does +not support these other formats, so it will give an error message if +it can't find a postscript file, unless you specify the bounding box, +thus preventing LATEX interrogating the file. + +
    +

    +6.5  Picture Environments

    + + +The picture environment cannot be translated to HTML. Pictures using +the built-in LATEX commands must be converted to a graphics file such +as a gif, and then included using \includegraphics, see +6.4. The switch -a, + causes TTH to attempt automatic +picture conversion using a user-supplied routine latex2gif. +When this switch is used, TTH outputs the picture to a file picn.tex, +where n is the number of the picture (if there does not already exist +a file picn.gif). It then calls the command latex2gif picn +which must be a command (e.g. a script using LATEX, dvips, etc.) on +the system, which converts the file picn.tex to a file picn.gif. An +example linux script is included in the distribution but this +conversion script is dependent on the system and so is entirely the +user's responsibility. For viewing the results, the files picn.gif +must be accessible to the browser in the same directory as the HTML +files, then they will be included in-line. It is impossible for a +picture environment to be converted in this automatic fashion if it +contains macros defined somewhere else in the original LATEX file, +because the macros will then be undefined in the picture file that is +extracted, and LATEX will be stumped. In that case, manual +intervention is necessary. + +
    +

    +7  Tabular Environment or Halign for Tables

    + + +The tabular environment is the recommended way to construct tables in +LATEX. In plain TEX, although \settabs etc. is supported, the +\halign{ ... } command is recommended. (The LATEX tabbing +environment is not supported by TTH because it is antithetical +to the spirit of HTML document description, and because it is an +extremely complicated construct. If you are lucky, TTH will not mess +up your tabbing environment too much, but it makes no attempt to +interpret it properly.) Considerable effort has been expended to +translate the tabular environment, including interpreting the +alignment argument of the environment, into as near an equivalent in +HTML as reasonably achievable6. However, the limitations of HTML tables impose +the following limitations on the translation. + +
    +

    +7.1  Tabular

    + +
      +
    • HTML tables have either all cells bordered with rules or +none. TTH therefore decides whether to use a bordered table by +examining the first character of the alignment argument. If is it +|, then the table is bordered, otherwise not. +
      +
    • + +
    • HTML tables are not capable of simultaneously aligning part of a +cell's contents to the right and part to the left, which is +automatically done by LATEX on some occasions when @-strings are used. +For example if the alignment argument is |l@{~units}|r|, LATEX +will align "units" to the right of the first cell. TTH can't. In +some unbordered cases TTH will try for the same effect by putting the +closing @-string in the following cell. This won't always give a good +result. +
      +
    • + +
    • @-strings and *{num} code repetition are not permitted in the +alignment argument to \multicolumn, but they are in the main +tabular alignment argument. +
      +
    • +
    + +
    +

    +7.2  Halign

    + +
    + +
      +
    • TTH decides whether to use a bordered table in Plain TEX +by examining the entire halign template (i.e. the material up to the +first \cr of the halign). If it contains the command +\vrule TTH makes the table bordered, otherwise not. +
      +
    • + +
    • TTH decides on the alignment of the cell contents by looking for +\hfill or \hss commands in the cell template. The +default is to left-align the cell. If one of these spacing commands is present +in the template prior to the # for this cell, then the cell +will be right-aligned unless such a command also appears after the +#, in which case the cell is centered. Again HTML is not capable of +applying different alignments to different parts of a cell. So results may +sometimes be different from TEX. However, if most of this paragraph +sounds totally obscure to you, don't worry; TTH will probably do the +right thing. +
      +
    • + +
    • The \multispan command is supported, giving a centered +multicolumn cell, and \omit is treated as \multispan1. +However, \span is currently not supported. +
      +
    • + +
    • In TEX each cell of an halign table resides within its own + implied brace group. Because TTH does not implement this implied + group, errors can arise. Even HTML table errors that lead to parse + errors with XML parsers can arise when the cells have boxes in them. + If this happens, the fix is to put an explicit brace group round the + offending cell in the template line like this example: + +
      +  \halign{#\quad\hfil &{\vbox{\hsize\0.5\hsize #}}\cr
      +    1 & V-box material\cr
      +    }
      +
      +
      +
      +
    • +
    + +
    +

    +7.3  Longtables

    + + + +
    + +
      +
    • The longtable environment is supported, but it is always centered. It +is converted into a standard tabular inside a table environment +because there is no need to accommodate page breaks (the main point of +longtable) in HTML. +
      +
    • + +
    • The caption (including caption*) command is +translated correctly but set as part of the HTML table; so, if the +caption is longer than the longest row of the table, it will cause the +whole table width to expand, possibly up to 100% of the +line-width. +
      +
    • + +
    • The commands endhead, endfirsthead, endfoot, endlastfoot, +are ignored, but their immediately preceding commands are therefore +inserted into the table. That is probably not desirable for the foot +commands. Longtable footers are not translated into footers. +
      +
    • + +
    • The \kill command is ignored. Its text is spuriously inserted. +
      +
    • +
    + +
    +

    +8  Boxes, Dimensions, and fills

    + +
    +Boxes, dimensions, and fills are rarely appropriate for web documents +because they imply an attempt to control the fine details of +layout. Browsers make their own choices about layout of a document in +HTML. For example they make the lines fit whatever size of window +happens to be present. This dynamic formatting makes mincemeat of most +detailed TEX layout. In fact, if you want your readers to see +exactly what you see, that is impossible with HTML, and you should use +some other representation of your document. + +
    +There are nevertheless many cases when a TEX document containing +boxes, dimensions, and fills needs to be translated. Limited +translation of these constructs is supported. They are translated, +where appropriate and possible, into HTML tables with widths and +vertical skips estimated to give a reasonable result on a browser. It +must be stressed that accurate translation is inherently impossible +because browsers deal in pixel sizes and default font sizes that vary +and are out of the control of the publisher. + +
    +The types of box usage that translate quite well are when things like + +
    +\hbox to \hsize{The left \hfil the Right}
    +\vbox{\hsize=2in Matter to be set in horizontal mode to a 
    +  limited hsize}
    +\makebox[0.6\hsize][r]{Stuff to the right of the makebox.}
    +\framebox{check}
    +
    +
    +are on a line by themselves. +You get: + +
    +
    +The left the Right
    +
    + Matter to be set in horizontal mode to a limited hsize +
    +
    +
    +
    +
    +Stuff to the right of the makebox.
    +
    +check
    +Usages that translate poorly tend to be boxes within a line of +text. That is because current HTML table implementations have to start +a new line unless they happen to be adjacent to a table already. Thus +an hbox in a line will give a line break that you might not have +wanted. This behaviour is really a bug in the browsers, but we are +currently stuck with it. The behaviour of HTML tables is buggy +[see 13.5] when their alignment is specified, which means that +strange results are likely if more than one box on a line is being +set. Boxes in equations are troublesome. The only type that is +reasonably supported is \mbox which is often used in LATEX for +introducing text inside equations. + +
    +Negative skips are not supported at all. + +
    +The only important dimension parameter that is currently interpreted +is \hsize. It is what controls the width of a vbox. It can be +reset using the plain TEX format e.g. \hsize = 3in or scaled +or advanced e.g. \hsize=0.6\hsize but only within a group. It +makes no sense for the HTML file to try to specify the width of the +line at the outermost level. That is the browser's business. + +
    +New dimensions can be defined, set, advanced, scaled and used to set +other dimensions including \hsize. + +
    +TTH trys valiantly to mimic the sort of text alignment that is +obtained using glue such as \hfil and \hss, provided it +is inside a box. However, the alignment algorithm of HTML tables makes +it impossible to obtain fills with exactly equal sizes. So don't be +surprised if some results looks disagreeable. Moreover, TTH will +completely ignore the glue outside an hbox, and it doesn't know +the difference between \hfil and \hfill, etc. + +
    +

    +9  TEX command definitions and other extensions

    + +
    +

    +9.1  Delimited-parameter macros and +Conditionals

    + +
    +Delimited parameter definitions are fully supported. However, macros +in some style files are written in such a way that the recognition of +the delimited parameter depends on other TEX behaviour +(e.g. dimensions) that are not supported or handled differently by +TTH. In such cases it is all too possible for the delimited parameter +not to be matched, resulting in a runaway argument situation. +Thus, delimited parameter macros are especially dangerous when using +TTH, or indeed any process other than TEX itself. (And they are +never exactly "safe TEX"). The recognition of these definitions can +be disabled using the -d switch, in which case the definitions are +simply discarded. + +
    +Conditionals such as \if, \ifnum and so on are +supported, as listed above (1.1.2). In TTH they have one +syntax limitation. Further `if' commands are not permitted in, or as part of +a command expanded in, the tokens, characters, or numbers being +tested. Thus, an example of truly perverse usage such as
    +\ifnum 1=\if ab 1\else 2\fi  True \else False \fi
    will likely +break. Nested `if' constructs are permitted in the conditional +text, however, so
    +\ifnum 1=1 True\if ab -true\else -false\fi \else False \fi
    is fine. +Because TTH does not internally resemble TEX, whereas the result of +conditionals such as \if and \ifx may depend on internal +representations, there cannot be 100% compatibility of such tests at +the lowest level. Still, tests on externally defined commands ought +generally to give correct results. When authoring documents in TEX one +is generally well advised to avoid conditionals. + +
    +Although TTH supports a remarkably complete subset of LATEX, it does +not support all of the complicated primitive details of +TEX, partly because that would be unnecessary. +For example, practically any TEX that redefines category codes +(other than @ which TTH treats universally as a letter) will break because +TTH knows nothing about the concept of category codes. (If you don't +know much either, about this unfortunate aspect of TEX, join the vast +majority of TEX users!) A related example is that TTH expects +only letters or @ in user-defined command names, not punctuation +characters etc. + +
    +

    +9.2  Macro- and Style-file +inclusion

    + + +Macro definitions are fully supported by TTH. However, special macro +packages designed for a specific layout of journal or conference, for +example, often use unsupported constructs such as catcode changes. It +may then be inadvisable to use the macro package. TTH does not +recognize the \usepackage command by default because the +LATEX macros that are input by this command almost always contain +catcode changes or other usages incompatible with TTH. That is +another reason why TTH does not normally have directory paths +defined the same as TEX. If a macro package is on the TEXINPUTS path +it will be found by TEX but not by TTH. Thus, the macro +definitions are included when "TEX"ing the file, but not when +"TTH"ing it. It should be clear from this discussion, however, +that TTH generally does not support any of the enormous number of +extensions to LATEX unless they are mentioned in this manual, +because most extension packages are incompatible with TTH. + +
    +TTH will find an input file if + +
      +
    1. the full path is + specified relative to the directory from which TTH is run, e.g.
      + \input /home/myhome/mytexdir/mymacro.tex
      +
      +
    2. + +
    3. the -p switch specifies a path on which the file is +found, or +
      +
    4. + +
    5. the TTHINPUTS environment variable is defined to be a path on +which the file is found. +
      +
    6. +
    +Paths are searched in this order until an appropriate file is +found or all directory options are exhausted + +
    + This policy provides a mechanism +for making available the alternative package for TTH, +without alteration of the original TEX files, by placing the +(simplified) version of the macro package on the path TTH searches. + An example using the -p switch might be + +
    +tth >file.html <file.tex -p/usr/local/tthinputs:~/mytthinputs
    +
    +
    + +
    +Since it is impossible to anticipate all style file incompatibilities, +it must be the responsibility of the user (or the journal) to decide +how to translate the concepts implemented in the original complicated +macro package into simpler, TTH-compatible, TEX macros. + +
    +When TTH is used within a CGI script accepting arbitrary TEX for +translation, its ability to input any file on the system is a serious +security hole. It can be used to view all sorts of files on the system +by \inputing them. Therefore a special switch -pNULL is +provided that disables all \input or \include files. + +
    +

    +9.3  Layout to include arguments of unknown +commands +

    + +
    +Unrecognized or undefined commands of the form +\dothis{one}{two}{three}, are treated by discarding +all the following adjacent brace groups. A space between the close and +open braces will terminate the discarded arguments and cause the +following brace group(s) to be scanned as if just the text. This +makes it possible to use formatting to make TEX code come out right in +both TEX and HTML. For example if TTH encounters a command written +"\boxthis{width} {boxed material}" which might be +designed in TEX to provide a width to a defined command, written with +a space after the first argument, it will ignore the width and scan +the boxed material into the text. + +
    +

    +9.4  Restrictions on redefinition of internal +commands +

    + +
    +In TTH (unlike TEX) most internal commands can not normally be +redefined; any redefinition will simply be ignored (except inside edef +and a few other places). This prevents TTH from safely allowing use of +major packages that redefine standard TEX commands. For example amsTEX redefines footnote to have just one argument, which will cause +problems. This particular example is potentially a problem with LATEX too, which also redefines footnote. TTH handles this by keeping track +of whether the file is LATEX or TEX; therefore you should not mix the +two dialects in a single file even though there is no need to tell TTH +explicitly which type the file is. (Besides, a mixed file will play +havoc with TEX itself.) + +
    +

    +9.4.1  Footnotes

    +Footnotes are placed together at the end of the document, or, in the +case of TTHgold splitting files, in a separate file called +footnote.html. The title of this end section is determined by the +macro \tthfootnotes. By default this is "Footnotes", but can +be redefined by the user at will, e.g. by +\def\tthfootnotes{Tailnotes}. + +
    +

    +10  Color

    + +TTH supports the coloring of text using the color package macros for +LATEX, supported by dvips (but not xdvi). TTH also supports the Plain +TEX colordvi macros contained in the package colordvi.tex that do the +same thing. + +
    +

    +10.1  LATEX Color

    + +
    +The LATEX syntax is recommended because the 68 standard +named colors7 are directly supported internally by TTH using the named +model. Any numerical CMYK, RGB and Gray color can also be prescribed. For +example the following commands are enclosed in themselves: +\textcolor[named]{BrickRed}{...}, +\textcolor[rgb]{0.,.5,0.}{...}, +\textcolor[cmyk]{0.,.5,0.,0.3}{...}. +You can define custom colors in the usual way using, for example + +
    +{\definecolor{Puce}{rgb}{1.,.5,.8}
    +\color{Puce} This is my own Puce.}
    +
    +
    +Which gives " +This is my own Puce." + +
    +The command \pagecolor is supported but discouraged. It +is highly likely to give rise to an HTML file that will fail +validation because it inserts an HTML tag <body bgcolor=...> +which will not be in its correct position (immediately following the +title). The only way to be certain to produce an HTML file that passes +validation is to put the title and body commands in by hand, using +e.g. \special{html:<title>...</title><body ...>} Netscape +seems not to mind a body tag out of order, but only the first one is +able to set the page background color. + +
    +The commands \colorbox and \fcolorbox are supported via +CSS style sheet commands. They will only work to set the background +color of included text if the browser is set to use style sheets. + +"This sentence" is the result of the command +\colorbox{green}{``This sentence''}. If it is colored, then +your browser supports style sheets to this extent. If not, check your +preferences settings. + +
    +

    +10.2  Plain Color

    + +
    +The Plain TEX syntax using commands such as \Red{red text} requires +the file colordvi.tex to be input prior to their use. But +because TTH does not search the standard TEX paths, that file will +not usually be found unless the full path is explicitly +specified. If the file is not found, only the 8 standard colors + +
    +\Red, \Green, \Blue, \Cyan, \Magenta, \Yellow, \Black, and \White
    +
    +
    + are +recognized internally by TTH. You can use the user-defined CMYK numeric +style + +
    +\Color{0. .5 .5 0.}{pale red}
    +
    +
    +without the colordvi +file. It gives the result "pale red" but the +notation becomes cumbersome unless you define your color +e.g. like + +
    +\def\redcolor{0. .5 .5 0.}
    +\Color{\redcolor}{The stuff that is red.}
    +
    +
    + +
    +Another difficulty with the colordvi +command \textColor (which is the color switch - LATEX +syntax reversed that usage and changed to comma-delimited arguments +just to confuse us) is that it is a global setting. It then +becomes almost impossible to maintain proper nesting of the closure of +the font commands used for colors in HTML. As a result, use of +\textColor often gives HTML files that won't pass HTML validation. + +
    +

    +10.3  Limitations

    +Color commands do not propagate into different cells of HTML tables +because of what may be regarded as a browser bug +[13.5]. For that reason, tables and equations will not color +correctly if the color commands enclose more than one cell (for +tables) or equation element. Remember also that some computers may be +limited in their color display capability, so the subtleties of colors +will be lost in some circumstances. + +
    + +
    +

    +11  Producing output split into different files.

    + +
    +

    +11.1  Overview

    + +
    +Because the TTH program itself always produces just one output file, +the division of the output into different files takes place in two +steps. First, TTH is run on the LATEX file with the switch +-s (for "split"). This switch tells TTH to produce output +that is in multipart MIME format. Incidentally, this format is +used for sending multipart mail messages with attachments over the +internet. For present purposes it is simply a convenient standard for +TTH to use to show how to split the output and what the names of the +final files should be. If we wanted to keep this MIME file, then for +example the command + +
    +tth -s -Ltexdocument <texdocument.tex >mimedocument.html
    +
    +
    + +
    + would produce such a file called mimedocument.html from a +LATEX file called texdocument.tex. The switch -L +tells TTH to use auxiliary files that were produced when LATEX  +was previously run on it. Alternatively if you want the output file to +have the same name as the texdocument but with the extension +html, you can use just + +
    +tth -s texdocument
    +
    +
    + +
    +There are available standard tools for unpacking multipart mime files +into their individual files, notably the mpack tools available from +the "Andrew" distribution, which may be available on some +systems. However the executable tthsplit (whose source is in +the tthgold directory) is a more specific +program that will unpack MIME files produced by TTH. (tthsplit +will not handle general MIME files.) To unpack the multipart +file into its individual files requires the simple command: + +
    + +
    +tthsplit <mimedocument.html
    +
    +
    + +
    + This will inform the user of the files produced, for +example + +
    + +
    +index.html
    +chap1.html
    +chap2.html
    +refs.html
    +footnote.html
    +
    +
    + +
    + the file index.html is always the topmost file with +links to succeeding files, and cross-links from any table of contents +or list of figures, etc. + +
    +It is unnecessary to save the intermediate file. Instead, the output +of tth can be piped to tthsplit to produce the split +files directly by the command line: + +
    + +
    +tth -s -Ltexdocument <texdocument.tex | tthsplit
    +
    +
    + +
    +Since the names of the split parts of the document are predetermined, +it is strongly advisable to make a separate directory for each +different LATEX document to keep the parts of the document in. The +conversion and splitting must then be performed in that directory to +ensure the files end up there. This task is left to the user. + +
    +The Windows graphical user interface tth-gui offers an option for +the translated file to "split it here". If this button is checked, +the file will be split in the same folder as the tex file, producing +the HTML files as above. + +
    +

    +11.2  Navigation Controls at File Top and Tail

    + +
    +By default TTH places navigation links labelled "PREVIOUS" and +"NEXT" at the top and tail of the split pages, and a link "HEAD" +to the first section of the file at both places. These do not use cute +little images because images have to be in separate files, which would +defeat the principle of TTH always outputing just one file. However, +authors might want their own images or indeed far more elaborate +navigation links. The links can be customized straightforwardly by +redefining two special macros that are used for the navigation +section. By default these macros are defined as + +
    +\def\tthsplittail{
    + \special{html:\n<hr><table width=\"100\%\"><tr><td>
    + <a href=\"}\tthfilenext\special{html:\">}NEXT
    + \special{html:</a></td><td align=\"right\">
    + <a href=\"index.html\">HEAD</a></td></tr></table>\n</html>}}
    +\def\tthsplittop{
    + \special{html:<table width=\"100\%\"><tr><td>
    + <a href=\"}\tthfilechar\special{html:\">}PREVIOUS
    + \special{html:</a></td><td align=\"right\">
    + <a href=\"index.html\">HEAD</a></td></tr></table>}}
    +
    +
    + +
    +The macro \tthsplittail is called when splitting, as soon as a +chapter or section command is detected. Then after the split is +completed and the HTML header has been inserted for the next file, +\tthsplittop is called. Note that these macros use the +builtins \tthfilenext and \tthfilechar to access the +names of the next and the previous HTML files respectively. + +
    +These splitting macros can be redefined to whatever style of +navigation the author prefers. But careful attention should be paid to +the use of raw HTML output, for example using the HTML special. + +
    +

    +11.3  Special Precautions when Splitting Output

    + +
    +

    +11.3.1  Floats such as figures or tables

    +If you are splitting an article-style file that has a lot of +floating bodies (i.e. figures or tables) in it, these may be moved by +LATEX beyond the end of their corresponding section. This is a +familiar problem with LATEX. The result of this float misplacement +is that TTH may become confused and generate incorrect +cross-references to these floats in the list of figures and or list of +tables, because the only way that TTH can tell the section of float +placement is by the order of lines in the auxiliary files. If this +happens, some special precautions will prevent it. + +
    +All that is required is to add to the LATEX source file, in the +preamble between the documentclass and the begin{document} commands, +the extra command: + +
    + +
    +\input /usr/local/tth/tthprep.sty
    +
    +
    + +
    + where the path should be to wherever you unpacked or are +keeping the tth distribution file tthprep.sty. Then LATEX should +be run twice on the file to create the auxiliary files that tth will +use in its translation. Because of the extra definitions in +tthprep.sty, the auxiliary files so produced can be interpreted by +tth to give correctly linked split files. If you want to produce +dvi output from your LATEX then you should remove this extra +input command. None of this is needed unless splitting by +sections (not chapters) is to be performed or floats are +problematic. + +
    +To make it easier for the user, a script is provided called +tthprep which automates the process of producing satisfactory +auxiliary files through the single command + +
    + +
    +tthprep texdocument.tex
    +
    +
    + +
    + The script will leave the LATEX file in its original condition, +but the auxiliary files in appropriate form for TTH. + +
    +

    +11.3.2  Multiple Bibliographies

    +Multiple bibliographies in split files are a problem. All the +citations in the rest of the text link to a single file +refs.html because there is no way for TtHgold know the name of other +files to refer to. However, each time a bibliography is started, +when splitting, TtHgold starts a new file. TtHgold numbers reference +files after the first as refs1.html refs2.html +etc. + +
    +After splitting the output using tthsplit, the user has then to +concatenate the reference files into a single html file if the +cross-references are all to be correct. The utility program +tthrfcat will do this if run in the directory where the split +files reside. It destroys all the refsx.html files. But since those +were generated by TtHgold, they can always be generated again. Some +spurious file navigation buttons will remain in the resulting +refs.html file. They can be removed by hand if desired. + +
    +Things go much more smoothly if there is only one bibliography per TeX +document and it is at the end of the TeX file. + +
    +

    +12  HTML and output

    + +

    +12.1  Formal HTML validation

    + TTH takes as its standard HTML that +can be rendered by Netscape and IE browsers versions 4 and higher +(with the caveats above). The formal standard that TTH-translated +documents follow is strictly HTML4.0[1]8 +Transitional. However, TTH does +not formally validate its documents, and can be made to violate the +standard by some TEX usage. + +
    +One reason for violation +arises because HTML4.0 requires a +<title>...</title> for every document. +A title is constructed from LATEX files that contain the \title{...} +command, in which case HTML conformance is ensured by putting the +\title command before any text (i.e. in the preamble, where it +belongs). If the \title command is not desired in the TEX +file, for example because it is a plain TEX document, +a title can be provided by the author for the HTML document by putting +a line like this at the top of the TEX file. + +
    +%%tth:\begin{html}<title>Put the title here</title>\end{html}
    +
    +
    +This line will be ignored by TEX. Actually, any raw HTML output at the +start of the file is assumed by TTH to indicate that the author has +explicitly output a title. If no title indication of any of the above +types is present, TTH attempts to construct a title from the first few +plain words in the document, in much the way that the first line can +become the title of a hymn. + +
    +If commands like +\item, that output material to the HTML file occur +before the title has been constructed, the HTML title command will be +out of order and the formal standard will be violated. + +
    +In the case where the title construction fails, or if some other TEX +usage causes a violation of the formal standard, browsers will +still render the output correctly if this manual is followed. + +
    +

    +12.2  HTML Styles

    + + +There are good reasons why the <head> and <body> tags +are by default omitted by TTH. See the FAQ [B.3] for a +brief discussion. However, the evolution of HTML standards (not yet +browsers) is towards imposing more restrictions on the freedom to omit +tags. For example XHTML requires that containers have both +opening and closing tags. Therefore TTH has a switch -w? +(where the question mark denotes an optional integer) that controls +its writing style as follows. + +
    +
    Default
    +
    Construct title. Do not enter head and body tags.
    +
    -w -w0
    +
    Do not construct title or enter head/body tags.
    +
    -w1
    +
    Enter head and body tags assuming that the title is the +dividing point.
    +
    -w2
    +
    Use XHTML syntax.
    +
    -w4
    +
    Don't use block level font size commands between paragraphs.
    +
    +At present, in addition to the default style that +attempts to construct a title but does not enter head and body tags, +-w or equivalently -w0 prevents TTH from attempting to construct a +title or anything else in the way of head/body divisions. This style +is best used for documents where the author has explicitly entered the +required HTML tags. The switch -w1 invokes pedantic HTML style which +enters head and body tags under the assumption that the title +(possibly constructed automatically) is the last thing in the head +section. A style -w2 produces XHTML documents but requires +cascading style sheet (CSS) support in the browser otherwise the +rendering will not be as satisfactory as the default. + +
    +Addition of four to the writing style index (e.g. -w4) prevents + TTH employing block-level font size commands if the size is changed + immediately after a \par or implied paragraph. The additional + CSS style sheet is not inserted and, of course, the browser need not + support CSS. The (now) default writing style is to accommodate tables + and equations inside sections of larger or smaller text in a manner + that will pass standards validation. According to the standard, HTML + font changing commands like most others, are either of + inline type, in which case they are forbidden + to contain block level constructs like + tables, or block type, in which case they force a new line and so + can't be used within a paragraph. The default can't universally fix + this unnecessarily restrictive requirement of the standard (which + most browsers wisely do not honor). There are situations where + TEX usage is simply impossible to express in HTML. However, it does + fix the vast majority of sensible usages. The switch -w4 turns off + this approach, reverting to less standards-compatible style. + +
    +

    +13  Browser and Server Problems

    + +
    +TTH translates TEX into standard HTML and takes account as far as +possible of the idiosyncrasies of the major browsers. Nevertheless, +there are several problems that are associated with the browsers, and +a few that are associated with web servers. Authors and publishers +should recognize that these are not TTH bugs. Font-related +problems are complicated. If you don't need all the gory details, you +might want to read section 13.1 and then skip to +13.3. + +
    +

    +13.1  Accessing Symbol Fonts: Overview

    + + +
    +Many of the most serious difficulties of Mathematics rendering in HTML +are associated with the need for extra symbols. In addition to various +Greek letters and mathematical operators, one needs access to the +glyphs used to build up from parts the large brackets matching the +height of built-up fractions. These symbols are almost universally +present on systems with graphical browsers, which all have a +"Symbol" font, generally based on that made freely available by +Adobe. The problem lies in accessing the font because of +shortcomings in the browsers and the HTML standards that relate to +font use. + +
    +In brief, there are three ways to access the symbol fonts; these will +be described in more detail below. The following table indicates which of +these approaches to accessing the symbol fonts works with which +browser. It also outlines which of the mathematics rendering +improvements via CSS positioning are satisfactory. + +
    + + + + + + + + + + + + + + +
    Symbol Encoding CSS Positioning
    8-bit numeric Adobe Private Unicode 3.2 relative height +compress
    TTH switch -u0-u1-u2 -y2-y1
    Browser:
    MSIE 5.0 Yes No No Yes Buggy
    Mozilla 1.x X Alias/Font Buggy Buggy Yes Yes
    Firefox 1.x X Alias/Font Buggy Buggy Yes Yes
    Firefox 1.x Win Yes Buggy Buggy Yes Yes
    Konqueror 1.9.8Alias No No Yes Yes
    Firefox 3.5 X No Buggy Ugly Yes Yes
    Chrome 4.0 X No Buggy Ugly Yes Yes
    Firefox 3.5 Win Yes No Buggy Yes Yes
    MSIE 8.0 Win Yes No Ugly Yes Yes
    + +
    + +
    +This situation is painful. The 8-bit numeric style symbol access + method, which was the approach originally pioneered by TTH, used to + work with a significant number of browsers but needed additional font + settings for X-window systems. This is the approach that TTH used +to use + by default. However Mozilla and Firefox have systematically moved + towards disabling this method under linux and OSX, presumably because + they consider it not standards-compliant. They have not properly + implemented the unicode 3.2 alternative, because the glyphs they use + for built-up delimiters are incorrectly sized and leave ugly gaps. In + some cases the spacing is completely erroneous. One is left with the + choice between the traditional 8-bit approach, which works well with all + MSWindows systems up to Vista, but does not work with most recent + X-based operating systems; or Unicode 3.2 which works with most + browsers, but is badly buggy in Windows Firefox and ugly everywhere. + +
    +In the interests of an eventual rationalization of this situation, TtH + has changed to make the Unicode 3.2 coding its default from the 2010 + version 3.87 on, but this by no means universally satisfactory. + +
    +

    +13.2  Accessing Symbol Fonts: Details

    + +
    +Prior to HTML4.0, that is, during the major phase of the evolution of +HTML, the default encoding for HTML documents was ISO-8859-1 +(sometimes called ISO Latin-1). The document encoding defines a +mapping between the bytes of the file itself and characters. The +HTML4.0 standard draws a strict (but often confused) distinction +between the document "character set", sometimes referred to more +recently as the character "repertoire"(which refers to all the +characters that might be used in it) and the "document encoding" +(which encodes a subset of the character set by mapping them to +bytes). The confusion is compounded by the entrenched usage of the term +"charset" to refer to the "document encoding" (not the character +set). This usage is presumably a reflection of the prior lack of any +significant distinction between the two. + +
    +Purists since the adoption of HMTL4.0 regard the selection of a glyph +as governed by the process: (byte) code →glyph-name → font-glyph. In this view, even +though the font contains the glyphs in a well defined order, the +glyph is accessed not by its position in the font but by its name. For +example, in a document with ISO-8859-1 encoding, the byte with decimal +value 97 maps to the "latin small letter a" which is accessed from +the font on that basis. On this view, it is not possible, or rather +ought not to be possible, to access the Greek letter alpha by +specifying that the font is Symbol and the byte coding decimal value +is 97, despite the fact that the Greek alpha is indeed in the same +position in the Symbol font as the lower case a in its font. This is +because (the story goes) 97 means "latin small letter a" and the +Symbol font simply does not contain the latin small letter a. + +
    +In practice, of course, most browsers, including Internet Explorer (to +8.x), have not taken so pedantic an approach. In a document that is +encoded in the same order as the fonts on the system, as is the case +for ISO-8859 on systems other than the (old) MacIntosh, the browser maps +code to glyph directly on the basis of numeric position in the +font. Therefore it is perfectly sensible to specify eight-bit code 97 +and Symbol font to obtain alpha. In other words, the browsers treat +the Symbol font as if it were an ISO-8859 font even though, as far as +the glyph names are concerned, it is not. It can be argued, even +within the world-view of standards lawyers, that a document that does +not explicitly specify its encoding (and TTH documents do not) could +be considered to obey its own font encoding or some unspecified +encoding, in which case, bytes ought to be permitted to refer directly +to numeric font positions, in just this fashion, regardless of whether +the font is identified as ISO 8859. But such arguments are usually a +waste of breath. In any case, recent versions of Mozilla and its +derivatives on the Windows operating system will properly render +symbols provided they are told that the DOCTYPE is HTML 4.0, not HTML +4.01. This is the reason why TTH has reverted to giving its +documents this rather out of date DOCTYPE. + +
    +On the X-windows system, a distinction between fonts is provided +directly in the system via the font naming conventions. Mozilla takes +notice of this font allocation by permitting access only to fonts +whose names end 8859-1, for default encoded documents. The symbol font +is not one of those fonts unless additional steps are taken. The +enabling of the symbol font requires specification of some system font +aliases, or installation of a specially encoded Symbol font, which +then ensures that the Symbol font is treated as if it were ISO-8859-1 +encoded. Notice that this type of problem arises for any document that +wants to access more than one language of font. Thus, any document +desiring a mixture of, for example, western and cyrilic characters +would face the same problem. + +
    +To summarise, the symbol font is present on practically every computer +on the planet that runs a graphical browser. Under the MSWindows +operating system, IE to version 8.x, and Mozilla (gecko)-based +browsers treat the symbol font as if it were a numerically encoded +font and compatible with ISO 8859-1 encoding, provided the DOCTYPE is +HTML 4.0 Transitional. Treating the font as such enables the glyphs to be +accessed using either eight-bit codes in just the same way as standard +ASCII characters. This is the way that documents have accessed these +glyphs for years. + +
    +The HTML4.01 standard says that unicode (ISO 10646, also called UCS) is +the character set of HTML, and that the way characters outside the +current document encoding should be accessed is through unicode +points. Unicode is backwardly compatible with ISO 8859-1 in a way that +we need not dwell on. Unicode is supposed to fix all the font problems +that are described here, and with luck eventually it will indeed +help. The problem is that (1) Unicode is enormous, so only a tiny +fraction of it is so far supported, and (2) in its original incarnation +unicode does not even assign points to the parts of large delimiters +that are needed for mathematics. They are present in the new +version of unicode, 3.2, becoming current. However, as the +table above shows, no browser cleanly supports the new unicode +assignments. Mozilla used to support some assignments of points in +unicode's designated "private usage area" to the glyphs we +need. Apparently these assignments have become de-facto standards for +the Adobe Symbol font in typographic circles. No other browser +supports them. They are not and, according to unicode principles, +never will be part of the unicode standard, and appear to be on the +way out. + +
    +The option that mathematics web publishing currently has, then, is + either an approach that works with Windows browsers but which purists + say is not consistent with latest standards, or a representation that + is consistent with the standard but useless with some browsers. It +would be really nice if the browsers would get their act together on +mathematical symbols. + +
    +

    +13.3  Printing

    + + + +
    +In many browsers, the printing fonts are hard coded into the browser +and the font-changing commands are ignored when printing. For that +reason, visitors viewing TTH documents will often not be able to +print readable versions of documents with lots of mathematics. This +problem could, and should, be fixed in the browsers. However, if you +want your readers to be able to print a high-quality paper copy of the +file, then you probably want to make available to them either the +TEX source or a common page-description format such as Postscript or +PDF. Since HTML documents download and display so much faster and +better than these other formats on the screen, TTH's translation +provides the natural medium for people to browse, but not +necessarily the best medium for paper production. + +
    +

    +13.4  Netscape/Mozilla Composer

    + + +Netscape Composer and Mozilla Composer is +too clever for its own good. If you run an HTML document produced by TTH +through Netscape Composer, all sorts of internal translations are +performed that are detrimental to its eventual display. For example, +if you subsequently save the document with the usual encoding set +(Western), the eightbit codes that work with Macs are replaced with +HTML4.0 entities such as [&]ograve; or [&]pound;. This effectively +breaks the document for viewing on Macs because it undoes everything +just explained. Even if you use User-Defined encoding, which prevents +this particular substitution, Composer will rearrange the document in +various ways that it thinks are better, but that make the display of +the document worse. The moral is, don't run TTH documents through +Netscape Composer. + You therefore cannot use the "publish" facility +of Composer. Transfering the document to the server with plain old ftp +will keep it away from Composer's clutches. + +
    +

    +13.5  Other Browser Bugs

    + +
    + +Font changing commands do not propagate from cell to cell of HTML +tables. In rendering equations (using tables) TTH circumvents this +bug (excuse me, feature) at the cost of significant extra effort and +slightly verbose HTML. However, for tables generated by +\halign or \begin{tabular} TTH takes no special steps +to avoid this problem. A change of font face in a cell, for example by +\it will not carry over to the next cell. A document +containing this problem will not pass some HTML validations. It is +prevented if every cell of a TEX table is enclosed in braces and the +required style applied separately to every cell - a serious +annoyance. + +
    + +Tables are incapable of being properly embedded within a line of text. +They generally force a new line. This is quite a significant handicap +when translating in-line material that could use a table. It can be +argued that this behaviour is required by the HTML +standard. Specifically, the <p> element is defined as having +in-line attributes which prevent it from containing any elements +defined as being block type, of which <table> or +actually strictly <td> is one. However, even if you ensure that +text is not inside a <p>, most browsers force a new line. + +
    +

    +13.6  Web server problems

    + + +
    +The HTML files that TTH produces are encoded using the charset +ISO-8859-1, like most web files. In newer linux systems the default +file encoding on the computer is in many cases now UTF-8. For the +characters with codes above 128, this can cause problems with the web +server. The web server may wrongly assume that the HTML file is a +UTF-8-encoded file, and declare this assumption in the http content-type +header that it sends to browsers when they access the file. For +gecko-based browsers, the http content-type declaration overrides any +internal file declaration of the encoding of the file. Consequently, +the browser treats this file as if it is UTF-8 encoded, with the +result that codes higher than 128 are misinterpreted. This is an +inadequacy in the web server (apache is known to behave this way in +some situations). + +
    +There are several options to work around this problem. + +
    +It is possible to convert all files from ISO-8859-1 to UTF-8 encoding, +using a utility called iconv, present on most modern linux +installations. This is not an attractive solution because then when +the files are browsed locally (via file://...) they will display +incorrectly. Locally, the browser does not have the http content-type +declaration to guide (or misguide) it, and it thinks the files are +ISO-8859-1 encoded. But if they've been converted, they are not. + +
    +The better approach seems to be to fix the web server so that it gets +the file content-type right. This can be done on a per-directory basis +by creating a file called .htaccess in the directory. This file +should contain the line: + +
    +  AddType text/html;charset=ISO-8859-1 html
    +
    +
    +This tells the server that all files in this directory and its +subdirectories that have extension html are to be considered of +type HTML and encoded with the ISO-8859-1 charset. + +
    +Unfortunately some web servers are configured not to pay attention to +the .htaccess file. If yours is one, you have to get the web +master to edit the server configuration file +(/etc/httpd/conf/httpd.conf). The lines that read +AllowOverride None must read instead +AllowOverride FileInfo. Alternatively, get the webmaster to +change the line in that configuration file that reads +AddDefaultCharset UTF-8 to read instead + +
    +AddDefaultCharset ISO-8859-1
    +
    +
    + and once the server is restarted all your troubles will be over +without any of those pesky .htaccess files. + +
    +There are other ways of accomplishing the same thing in the web +server, if you are a guru. Information is available at +the + W3C FAQ. + +
    +

    +14  Code Critique

    + +
    +If you think you have found a bug, you can report it to +tth(at)hutchinson.belmont.ma.us (with the usual character +substituted in the email address). You are most likely to get help if +your report is accompanied by the brief section of TEX code that +causes the problem. Let me repeat, in addition to a brief description +of the problem, send the TEX code, preferably a short +section isolating the problem, in a document that can be processed +by TEX. It is the only way for me to establish +what the problem is. But please don't send LATEX2.09 files or files +that do not conform to the (1994) LATEX users' guide. And +please check this TTH manual and especially the FAQ (B) first. + +
    +The code has been compiled and run on Linux, MSDOS, Wind*ws, Open VMS, +and sundry other operating systems. See +http://hutchinson.belmont.ma.us/tth/platform.html. + +
    +

    +15  License

    + +
    +TTH is copyright © Ian Hutchinson, 1997-2011. + +
    +You are hereby freely licensed to use this software under the terms of +the GNU General Public License, version 2, published by the Free +Software Foundation, a copy of which is enclosed in the file +license.txt. + +
    +The software comes WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +
    + +

    +16  Acknowledgements

    + +
    +Many thanks for useful discussions and input to Robert Curtis, Ken +Yap, Paul Gomme, Michael Sanders, Michael Patra, Bryan Anderson, +Wolfram Gloger, Ray Mines, John Murdie, David Johnson, Jonathan +Barron, Michael Hirsch, Jon Nimmo, Alan Flavell, Ron Kumon, Magne +Rudshaug, Rick Mabry, Andrew Trevorrow, Guy Albertelli II, Steve +Schaefer and for bug +reports from others too numerous to mention. + +
    +

    +A  Appendix: Non-Standard TEX Macros

    + +
    +The following macro definitions, although not needed for TTH, will +enable a TEX file that uses the non-standard TTH commands to be +correctly parsed by Plain TEX. + +
    + +
    +\def\hyperlink#1#2{\special{html:<a href="\##1">}#2\special{html:</a>}}
    +  % Incorrect link name in \TeX\ because # can't be passed properly to a special.
    +\def\hypertarget#1#2{\special{html:<a name="#1">}#2\special{html:</a>}}
    +\long\def\tthdump#1{#1} % Do nothing. The following are not done for TtH.
    +\tthdump{%
    +\def\title#1{\bgroup\leftskip 0 pt plus1fill \rightskip 0 pt plus1fill
    +\pretolerance=100000 \lefthyphenmin=20 \righthyphenmin=20
    +\noindent #1 \par\egroup}% Centers a possibly multi-line title.
    + \let\author=\title % Actually smaller font than title in \LaTeX.
    + \input epsf     % PD package defines \epsfbox for figure inclusion
    +  % Macro for http reference inclusion, per hypertex.
    + \def\href#1#2{\special{html:<a href="#1">}#2\special{html:</a>}}
    + \def\urlend#1{#1\endgroup}
    + \def\url{\begingroup \tt 
    +  \catcode`\_=13 % Don't know why this works.
    +  \catcode`\~=11 \catcode`\#=11 \catcode`\^=11 
    +  \catcode`\$=11 \catcode`\&=11 \catcode`\%=11
    +\urlend}% \url for plain \TeX.
    +}
    +
    +
    + +
    +

    +B  Appendix: Frequently Asked Questions

    + + + +
    +

    +B.1  Building and Running TTH

    + +
    + +Why does my compiler crash when compiling TTH?   +
    TTH comes in the form of a single C source file +because it is mostly one very large function which is produced by +flex. It is completely standard C code but the size challenges +compilers' capabilities, especially if you try to optimize using the +-O switch. With gcc under linux it is possible to compile an optimized +version, but optimization hardly affects the speed and reduces the +disk size of the already modest executable only by about +20%. Therefore it is no significant loss to compile without +optimization. Under DOS, even unoptimized compilation can cause DJGPP +to crash if its stack size is less than about 1024k. The fix (using +stubedit on cc1.exe) for this DJGPP bug is described in its FAQ. + +
    + +Why does my TTH executable, which I compiled myself, crash?   +
    Assuming that this is not a problem caused by invalid +TEX, or by you poking around inside the C code, it is probably a +compiler shortcoming. Some default settings of some compilers give +TTH too little stack space and cause it to crash. Most +self-respecting compilers have switches or settings to increase that +space. Try increasing it, or get one of the binary distributions. + +
    + +Why won't TTH run from Program Manager in Wind*ws?  
    +You need a command line. Call up the DOS prompt. If you feel the need +for a drag and drop facility, get TTHgold. + +
    +

    +B.2  [La]TeX constructs TTH does not seem to recognize

    + +
    + +TTH does not recognize tableofcontents, backward +references, listoffigures, ...  
    +Yes it does, see section 6.1, and use the -L switch. + +
    + +TTH does not insert my picture environments.  
    +If picture environment pictures are to be included, conversion to a gif file +is needed. See 6.5. + +
    + +TTH messes up my tabbing environment.  
    +Tabbing is not currently supported. It is alien to the HTML document +mark-up approach. See section 7. + +
    + +Why doesn't \frac work in equations?  
    +It does, but only in LATEX documents because \frac is not a +plain TEX command. The document you are presenting to TTH doubtless +has no \documentclass command and other LATEX blurb at the top. +If you insist on having LATEX commands available in such a document, +you can use the -L switch. But note that other changes in +interpretation (e.g. in footnotes) are implied by using this switch to +tell TTH that this is a LATEX file. + +
    + +Why does TTH not recognize ... command from ... style +package?  
    +Let's be perfectly clear here. TTH does not currently recognize +\usepackage and, with the exception of commands explicitly +mentioned in this manual, does not support any of the zillions +of extensions to LATEX that exist, even if they are part of the +"standard distribution". TTH does support macro definitions, see +section 9.2, and +you might find that if you explicitly \input the style file +that you need it will recognize the macro. However, many LATEX extension packages are written in a complicated manner such that they +depend on changes in catcodes, which TTH does not +support. Therefore no guarantee can be given. This is one reason why +TTH deliberately does not recognize \usepackage. + +
    + +Why does TTH not recognize my ends of lines properly?  
    +If you transfer a file from one operating system to another as a +binary file, the line-end codes are likely to be messed up. They use +different codes on Un*x, DOS, and Mac. Usually TEX is not bothered by +this. TTH is somewhat more sensitive. Use ASCII transfer. + +
    + +Why does TTH complain about my skip, space, ... command?  
    +Dimensions are often inappropriate for HTML. TTH +tries do something sensible with dimension, space, and glue +commands. Usually it is successful. If so, you need do nothing. In +some rare cases, you might see some irrelevant left-over characters +from the dimension command that have to be removed by hand. + +
    + +Can TTH be made to support BibTEX bibliographies?  
    +It already does; see 6.2. If TTH is not finding the .bbl file +even though you used the -L switch, then you probably forgot to +generate it using LATEX and BibTEX, or perhaps it is in the +wrong place. Try using the TTH switch -a. + +
    + +Does TTH support ...?  
    Probably yes if it is part +of LATEX. But if you want a specific additional capability, and find +that it is not supported, why not write a TeX macro to support it and +translate it into suitable HTML using the functions described in this +manual. Then you will have your support and if you send it to +tth(at)hutchinson.belmont.ma.us (with the usual character +substituted in the email address), it may be possible to include it +into the standard TTH executable and you'll have helped all the +other users of TTH. + +
    +

    +B.3  HTML output that does not satisfy

    + +
    + + +Why doesn't TTH automatically generate   <head> +and <body> HTML tags?
    + First, the <head> and +<body> tags are optional in the HTML specification. There is +no need for TTH to generate them to statisfy the standard. Second, TEX +and LATEX files do not have a corresponding structural division into +separate head and body sections. It might seem as if LATEX does, with +\begin{document} being the divider, but there are many cases +where this mapping is incorrect. For example title may not be defined +until after \begin{document}, corresponding to the HTML body +section, whereas it must be in the head section. Finally, if TTH +automatically entered <head> and <body> tags, then the +thoughtful author would not be able to enter them where they ought to +be by using, for example:
    +%%tth: \begin{html} <head> \end{html}
    +Therefore, the choice not to produce these tags automatically +is a deliberate one based on a careful consideration of the advantages +and disadvantages. An author can always adjust their TEX code to +include them, if they wish to be pedantic about the division. See also +the section on HTML style [12.2]. + +
    + +Why don't TEX commands get expanded in the HTML title?  
    +In HTML, the stuff that goes in the <title>...</title> of a +page is not permitted by the specification to contain HTML tags - +things in angle brackets - and tags are not interpreted. If an +equation or some other command that TTH translates into HTML +formatting is in the title, then the title will break when +expanded. Therefore TTH deals with commands differently in the +title. By default it leaves them in the TEX form that they started +as, since that is about as easy to read as any unformatted +mathematics. Using the -n? switch enables control of the precise +behaviour. See 3. + +
    + +How do I make TTH border my tabular table?  
    +TTH looks in the format string argument of the begin{tabular} +environment and if it begins with a | (vertical bar) then the HTML +table is bordered. + +
    + +TTH inserts the title and author even without the +maketitle command  
    +True, TTH inserts them when you define them. This gives you a chance +to fine-tune the presentation if you wish. + +
    + +What is this strange result using \dot +\hat \tilde \frac +\vec ... in in-line equations?  
    +Neither over and under accents nor built-up constructs such as +fractions can be rendered in-line (i.e. in a textstyle equation +produced by $ ... $) in HTML. Therefore, TTH outputs something that is +not elegant but reasonably indicates the original +intention. Additional brackets are inserted to ensure that fractions +are unambiguous. TTH will render all these built-up constructs +correctly in a display equation. See also 5.2 and +5.3 for alternatives. + + +
    + +Why does the large square root sign look so ugly?  
    +There are some things that browser symbol fonts can't do well. + +
    + +Why does a dagger sign come out strange?  
    +Browsers don't generally have a dagger sign in their fonts. TTH uses a +kludge. + +
    + +The file I "published" using Netscape Composer looks +messed up when viewed on a Mac.  
    +Don't use Composer on TTH documents. See section 13.4. + +
    + +Why does TTH mess up my \fbox, +minipage, etc?  
    The whole concept of a "box" is not really +translatable into HTML. TTH tries to mimic the box using tables. But +in some cases, especially in equations, it can't cope. + +
    + +How do I get caligraphic fonts, {\cal E}, AMS +fonts, etc?  
    +You can't because browsers don't have access to them. TTH can only +support fonts that are available on the browsers that eventually visit +the page. By default TTH tells the browser to render caligraphic as +italic helvetica font. You may, if you wish, define \cal to be +something different, such as %%tth:\def\cal{\it\color{red}}. + +
    + +Why does TTH turn double-quotes into an accent +instead of quotes?  
    In basic TEX the double quotes character +" is not defined, and hence may do anything that the local +installation feels like. Double quotes must be inserted by using two +quote " or back-quote " characters. In German TEX implementations, +the double-quotes character is used to provide the umlaut over accent +and for some other special needs. TTH supports these German uses in +some appropriate contexts. English speakers should adopt proper TEX +quote usage. There is essentially never a situation in LATEX where +it is advisable to use a double quote to represent itself outside of a +verbatim section (where it will naturally be treated literally). In +Plain TEX you might need it. If so, \char`" is an +absolutely fool-proof way to insert it. Here it is:". +You can also just enclose it in braces thus:{"}. + +
    + +Why doesn't TtH output use < p > for paragraphs?  
    + For the first years of its existence it +did. However, standards of HTML interpretation have grown tighter to +the point where <p> is a great liability. In XHTML (the latest +HTML standard) <p> is a container element. It must have a +closing </p>; so that every paragraph must be its own +group. This compulsion is contrary to TEX usage. Therefore TtH +changed to dispense completely with any use of <p>, using an +empty <div> with an associated CSS style instead. This has the +significant benefit of ensuring that for standards-compliant browsers, +font changes propagate even into the cells of tables. (NS4 is not +compliant, Mozilla, NS7 etc are, in this respect.) + +
    +

    +B.4  How to write TEX designed for Web publishing

    + +
    + +How do I insert code that is used only by TTH, not TEX?  
    +Use %%tth: followed by the material you wish to pass to TTH. +TEX omits this line as a comment. Alternatively, insert \newif\iftth +at the top of your document, then use a conditional: +\iftth \TtH\ material \fi. TtH recognizes \iftth as a +special `if' that is always true, whereas to TEX it is simply a +new `if', which by default is false when defined. + +
    + +How do I insert HTML tags into my file without TEX knowing?  
    +Use %%tth: then on this line put +\begin{html} tags \end{html}. Do not try to continue this +html onto a second line with a second %%tth: before the +\end{html} because the html environment will output the +%%tth:, which it probably not what you want. Another way to +pass codes directly to the output is the \special{html: ... } +command. Do +not use \begin{verbatim} to pass HTML tags. It will +convert the greater than and less than signs to make them appear in +the display and not be interpreted as tags. + +
    + +How do I insert code that is used only by TEX, not TTH?  
    +Insert \newif\iftth at the top of the file and then use +the conditional constr +uction: + +
    \iftth\beginsection{The \TtH\ Header}\par\else\beginsection{The \TeX\ Header}\fi
    +
    +
    +The `else' clause may also be used with a blank first clause, of +course: \iftth\else ... \fi. +Alternatively, insert the definition \def\tthdump#1{#1} at the +top of the file and then use \tthdump{\TeX\ material} to pass +stuff only to TEX. The command \tthdump is an internal command +for TTH (which cannot be redefined) that simply discards its argument. +Thus, for example, the following will output +alternate versions from TEX and TTH. +
    +\def\tthdump#1{#1}
    +%%tth:\begin{html}<H1>The HTML Header</H1>\end{html}
    +\tthdump{\beginsection{The \TeX\ Header}\par}
    +
    +
    + +
    + +How do I include the style file ...sty for the TEX paper I prepared for... journal?  
    + If you must, put it in the same directory as your .tex file and see + if it works. If it crashes, you may have to write a simpler one. + Remove the old style file. Look at your TEX file, or the + TTH messages telling you which commands are unknown. Decide which of + the journal's specific commands or environments you used or + need. Write a little style file that defines them to do something + simple and sensible, or translates them into standard LATEX +commands. Or ask the journal to provide such a style file! If you are + a journal publisher, distribute your simplified style file to your + authors. + +
    + +In bordered tables I want an empty cell to look +empty. How do I make TTH do that?  
    +HTML tables by default "fill in" an empty cell, so that it gives the +visual impression of being absent. This is sometimes useful, so TTH +does not prevent it. If you want it to look like an empty cell, put a +non-break space in it by &~& in the TEX. + +
    + +How do I include into a macro I am defining a # sign +for an HTML reference?  
    +When you do \special{html:<a href="#reference">} +TTH just puts the html tag in the output verbatim. TEX does essentially the +same for its dvi file and the dvi processor later may or may not complain +about not understanding it; but generally it is ignored. However if you try +to define a macro like +\def\localhref{\special{html:<a href="#reference">}} then TEX +will complain as follows: +
    +! Illegal parameter number in definition of \localref.
    +<to be read again> 
    +                   r
    +l.3 \def\localref{\special{html:<a href="#r
    +                                            eference">}}
    +?
    +
    This problem is caused by TEX's syntax analysis of +the contents of the definition. One solution is to hide the +definition from TEX using %%tth:. An alternative definition +that avoids this problem must also be included for TEX's benefit, for +example thus: +
    +\def\tthdump#1{#1}
    +\tthdump{\edef\localref{[a hyperreference]}}
    +%%tth:\def\localhref{\special{html:<a href="#reference">}}
    +
    +
    +Alternatively, use \# in place of # in the hypertex +reference. TTH specifically recognizes this as a literal and does +appropriate translation. For example + +
    +\def\localhref#1#2{\special{html:<a href="\##1">}#2\special{html:</a>}}
    +
    +
    +will use its first parameter as a local anchor reference, preceded by #, +and its second as the text of the anchor. The sequences \% and +\\ are also treated as escaped literals, inserting their second +character, inside a raw html section. + +
    + +How do I construct a macro to take as a single +argument a URL, which may contain special TEX characters like   +_ ~ @ & +etc, that makes TTH construct a hyperreference but TEX just enter it in the +text?
    Use the built-in command \url{...}. This behaves in +essentially the same way as the command defined in LATEX's +url.sty. The reference will appear verbatim in the text (in teletype +font). + +
    +

    +B.5  Formerly Frequently Asked Now Rarely Asked

    + +
    + +Why does TTH only manage to input a limited number +of files, perhaps 15 or so, then report "file not found" after +that?  
    +This is a limitation of the operating system. It has only a limited +number of file handles available. In MSDOS this number is set by a command +FILES=... in the operating system configuration file +config.sys. It needs to be set to a number large enough to +accommodate all the input or include files that your TEX document +uses, plus whatever other file overhead the operating system is +using. Under OS/2 a similar limitation exists and is avoided by +increasing the number of allowable file handles in the emx run-time +system (e.g. SET EMXOPT=-c -h400 in config.sys). + +
    + +TTH seems not to work on WinNT when converting +included PostScript   files, even though my ps2gif program works fine +from the command line. What is the problem?
    +The problem is not TTH. It appears to be an operating system +problem. The batch program ps2gif is breaking for some strange reason +when called from TTH. See footnote 5. + +
    + +TTH does not recognize evironment ... even though it +claims to.  
    +Probably you left a spurious space, e.g. \begin {enumerate} +between the \begin and the following brace. TTH occasionally won't +accept that, even though LATEX does. It is bad style. + +
    + + +

    Index (showing section)

    + +

    +
    +
    +
    -a switch, 6.1, 6.2, + 6.5, B.2
    +
    +
    auxiliary files, 6.1

    +
    +
    BibTEX, 6.2
    +
    +
    bibtex, B.2
    +
    +
    block level elements, 12.2
    +
    +
    <body>, B.3
    +
    +
    bugs, 14.0

    +
    +
    calligraphic, B.3
    +
    +
    catcodes, 9.1
    +
    +
    CGI script, 3.0
    +
    +
    character set, 13.2
    +
    +
    color, 10.0
    +
    +
    colordvi, 10.0
    +
    +
    commands
    +
         LATEX supported, + 1.2
    +
         alternative files, + 9.2
    +
         handling unsupported, + 1.4
    +
         redefining, 9.4
    +
         renaming, 9.4
    +
         unknown, 9.3
    +
         unsupported, 1.4
    +
    +
    compile, 2.0
    +
    +
    Composer, B.3
    +
    +
    compression
    +
         vertical, 5.3
    +
    +
    conditionals, see \if
    +
    +
    CSS, 5.3
    +

    +
    +
    +
    dagger, B.3
    +
    +
    definitions
    +
         delimited, 9.1
    +
    +
    double-quotes, B.3

    +
    +
    encoding, 13.2
    +
    +
    environment
    +
         not recognized, + B.5
    +
    +
    environments, 1.2
    +
    +
    equations
    +
         textstyle, see in-line equations, overaccents
    +
    +
    Error, 4.0
    +
    +
    extensions to LATEX, B.2

    +
    +
    fbox, B.3
    +
    +
    file not found, B.5
    +
    +
    FILES, B.5
    +
    +
    flex, 2.0
    +
    +
    font
    +
         face="symbol", 5.1
    +
    +
    fonts, 1.1
    +
         accessing, 13.0
    +
         details, 13.2
    +
    +
    footnotes, 9.4
    +
    +
    frac command
    +
         see switch -L, + B.2
    +

    +
    +
    +
    gif, 6.4
    +
    +
    glossary, 6.3
    +
    +
    graphics files, 6.4

    +
    +
    \halign, 7.2
    +
    +
    hash sign, B.4
    +
    +
    <head>, B.3
    +
    +
    \headline, 1.1
    +
    +
    HTML
    +
         3.2, 5.1
    +
         4.0, 5.1
    +
         insertion, 1.3
    +
         tags, B.4

    +
    +
    icons, 6.4
    +
    +
    \if, 1.1, 9.1
    +
    +
    iftth, B.4
    +
    +
    in-line equations
    +
         arrays, 5.2
    +
         built-up display, + 5.2
    +
         fractions, 5.2
    +
         overaccents, + 5.2
    +
    +
    \includegraphics, 6.4
    +
    +
    index
    +
         layout in one or two columns and the equivalent page length, + 6.3
    +
    +
    indexing, 6.3
    +
    +
    inline elements, 12.2
    +
    +
    \input
    +
         "file not found" error, B.5
    +
         disabling, 9.2
    +
         TEXINPUTS, 9.2
    +
         TTHINPUTS, 9.2
    +
    +
    italic
    +
         equation style, 5.1
    +

    +
    +
    +
    jpeg, 6.4

    +
    +
    LATEX extension packages, B.2
    +
    +
    LaTeX2HTML
    +
         differences, 5.1, + 6.1
    +
    +
    license, 15.0
    +
    +
    limitations, 5.2
    +
    +
    line-ends, B.2
    +
    +
    longtable, 7.3

    +
    +
    macro files, 9.2
    +
    +
    macros
    +
         alternate, 9.2
    +
         special use, A.0
    +
    +
    makeindex, 6.3
    +
    +
    mathematics, 1.1
    +
         layout style, 5.3
    +
    +
    messages, 4.0

    +
    +
    Netscape/Mozilla Composer, + 13.4

    +
    +
    <p>, B.3
    +
    +
    picture environment, 6.5
    +
    +
    portability, 6.1
    +
    +
    postscript, 6.4
    +
    +
    printing, 13.3
    +
    +
    ps2gif, 6.4
    +
    +
    ps2png, 6.4
    +
    +
    publish
    +
         through composer disallowed, + 13.4
    +

    +
    +
    +
    references
    +
         forward, 6.1
    +
    +
    \rm, 1.1

    +
    +
    skip space and dimension commands, + B.2
    +
    +
    spacing, 5.1
    +
    +
    square root, B.3
    +
    +
    stderr, 3.0
    +
    +
    stdin, 3.0
    +
    +
    stdout, 3.0
    +
    +
    Style Sheets, 5.3
    +
    +
    styles, B.4
    +
    +
    support, B.2
    +
    +
    switches, 6.2, B.2
    +
         -L, 3.0, + 6.1, + B.2
    +
         -a, 6.1, + 6.5
    +
         -j, 6.3
    +
         -u, 13.1
    +
         -y1, 5.3, + 13.1
    +
         -y2, 5.3, + 13.1
    +
         TTH, 3.0
    +
    +
    symbol font
    +
         accessing, 13.0
    +

    +
    +
    +
    Table of Contents
    +
         Index entry, + 6.3
    +
    +
    tables
    +
         bordered cells filled in, + B.4
    +
    +
    TEX-only code, B.4
    +
    +
    texinputs path, 9.2
    +
    +
    title
    +
         HTML construction, + 12.1
    +
         TeX commands not expanded in, + B.3
    +
    +
    TTH-only code, B.4

    +
    +
    unknown commands, see commands, unknown
    +
    +
    URL, B.4
    +
    +
    \usepackage, B.2
    +
    +
    UTF-8, 13.6

    +
    +
    warning, 4.0
    +
    +
    web-server, 13.6
    +
    +
    WinNT, B.5
    +
    + + +
    +

    Footnotes:

    + +
    +1The problem with \rm in text is that HTML +has no < rm > tag, and relies on cancelling all previous (e.g.) + < i > or < b > tags. By default (using style -y1) +TTH uses Cascading Style Sheets to solve this problem. However not +all older browsers support CSS and even in those that do, the user can +turn off the CSS support. The best solution is to avoid +\rm by using proper grouping of non-roman text. (In +equations \rm is essential, but TTH has a +work-around in equations.) +
    +2Conditionals \if + and \ifx are not 100% TEX compatible for cases +where they refer to internal TEX commands because TTH internals are +not identical. Catcodes are also unknown to TTH. +
    +3See appendix for TEX macros supporting these commands +
    +4The PNG graphics file format is an improved +replacement for the GIF standard. Netscape has built in rendering for +PNG. The GIF standard is plagued with legal problems related to a +ridiculous patent on the type of file compression it uses. +
    +5May 1999 reports indicated that there is a +batch program in circulation bearing the comment ":#batchified by +cschenk@snafu.de" that tries to implement the functionality of ps2gif +and gives errors on WinNT when called by TTH but not when called from +the command line. I have not had recent reports of problems, so I +think this problem has been fixed. +
    +6The alignment argument of the +math array environment was ignored in TTH versions earlier than 2.20 +but is now honored. +
    +7See the file colordvi.tex for a list of +the named colors. +
    +8It proves to be + better to specify 4.0 as the HTML Doctype because on some operating + systems symbol font rendering is not honored for 4.01 documents. +


    File translated from +TEX +by +TTH, +version 4.04.
    On 22 Jun 2014, 18:00.
    + diff --git a/code-postprocessing/bbob_pproc/tth_C/tthsplit.c b/code-postprocessing/bbob_pproc/tth_C/tthsplit.c new file mode 100644 index 000000000..72d590faa --- /dev/null +++ b/code-postprocessing/bbob_pproc/tth_C/tthsplit.c @@ -0,0 +1,60 @@ +/* +Split a tth-produced MIME file into its consituent files. +Copyright 1997 I.H.Hutchinson. +*/ + +#define LINELEN 256 +#include +#include +main(argc,argv) +int argc; +char *argv[]; +{ +int slen; +char *ch,*ch2; +char bound[LINELEN]={0}; +char buff[LINELEN]={0}; +FILE *file; +if(argc > 1){ + printf( "Usage: tthsplit Date: Tue, 12 Jul 2016 16:42:13 +0200 Subject: [PATCH 287/446] Uncomment 'testtestmod(interface)' for tracking a segmentation fault --- code-experiments/build/python/coco_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/build/python/coco_test.py b/code-experiments/build/python/coco_test.py index 0af67f1f0..001fe9d97 100755 --- a/code-experiments/build/python/coco_test.py +++ b/code-experiments/build/python/coco_test.py @@ -90,7 +90,7 @@ def run_doctests(): if not sys.version.startswith('3'): print(" CAVEAT: doctest OF cocoex.interface IS, FOR SOME REASON, " + "INEFFECTIVE IN PYTHON 2 ") - #testmod(interface) + testmod(interface) testmod(example_experiment) def _clean_up(folder, start_matches, protected): From 77a95a65e89a97b2aeeb2d63ca5f46c5913b6cee Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 12 Jul 2016 16:42:13 +0200 Subject: [PATCH 288/446] Uncomment 'testtestmod(interface)' for tracking a segmentation fault --- code-experiments/build/python/coco_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/build/python/coco_test.py b/code-experiments/build/python/coco_test.py index 0af67f1f0..001fe9d97 100755 --- a/code-experiments/build/python/coco_test.py +++ b/code-experiments/build/python/coco_test.py @@ -90,7 +90,7 @@ def run_doctests(): if not sys.version.startswith('3'): print(" CAVEAT: doctest OF cocoex.interface IS, FOR SOME REASON, " + "INEFFECTIVE IN PYTHON 2 ") - #testmod(interface) + testmod(interface) testmod(example_experiment) def _clean_up(folder, start_matches, protected): From fd16708ba95a8f4193b2e9b74dd5f452b478a88b Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 2 Aug 2016 20:13:37 +0200 Subject: [PATCH 289/446] Set best_parameter manually --- code-experiments/src/f_griewank_rosenbrock.c | 26 ++++++++++++++++++-- code-experiments/src/f_rosenbrock.c | 25 +++++++++++++++++-- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 7d2377cdb..643fdfb14 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -140,7 +140,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all double fopt; coco_problem_t *problem = NULL; double *shift, scales; - size_t i; + size_t i, j, k, next_bs_change;; double **B; const double *const *B_copy; @@ -150,6 +150,9 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all size_t nb_blocks; size_t swap_range; size_t nb_swaps; + double tmp; /* Manh: will serve to set the optimal solution "manually"*/ + double *best_parameter = coco_allocate_vector(dimension); /* Manh: will serve to set the optimal solution "manually"*/ + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); @@ -182,11 +185,30 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: already normalized in the raw function. Should probably be changed so that the raw function is limited to the sum */ problem = transform_obj_shift(problem, fopt); - + + /* Manh: manually set xopt = rot1^T ones(dimension)/(2*scales) */ + next_bs_change = 0; + for (k = 0; k < nb_blocks; ++k){ + for (j = 0; j < block_sizes[k]; ++j) { /* Manh: firstly, set xopt_1 = (B^T)*(P_2^T)*ones(dimension)/(2*scales) */ + tmp = 0; + for (i = 0; i < block_sizes[k]; ++i) { + tmp += B[next_bs_change + i][j]; + } + best_parameter[next_bs_change + j] = tmp / (2. * scales); + } + next_bs_change += block_sizes[k]; + } + + for (j = 0; j < dimension; ++j) { /* Manh: secondly, set xopt = (P_1^T)* xopt_1 */ + problem->best_parameter[P1[j]] = best_parameter[j]; + } + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "block-rotated_multi-modal"); + coco_free_memory(best_parameter); coco_free_memory(shift); coco_free_block_matrix(B, dimension); coco_free_memory(P1); diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index a0dac7869..84abdb5da 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -181,7 +181,7 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si double fopt; coco_problem_t *problem = NULL; double *minus_half, factor; - size_t i; + size_t i, j, k, next_bs_change; double **B; const double *const *B_copy; @@ -191,6 +191,8 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si size_t nb_blocks; size_t swap_range; size_t nb_swaps; + double tmp; /* Wassim: will serve to set the optimal solution "manually"*/ + double *best_parameter = coco_allocate_vector(dimension); /* Manh: will serve to set the optimal solution "manually"*/ block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); @@ -219,11 +221,30 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); + + /* Manh: manually set xopt = rot1^T ones(dimension)/(2*factor) */ + next_bs_change = 0; + for (k = 0; k < nb_blocks; ++k){ + for (j = 0; j < block_sizes[k]; ++j) { /* Manh: firstly, set xopt_1 = (B^T)*(P_2^T)*ones(dimension)/(2*factor) */ + tmp = 0; + for (i = 0; i < block_sizes[k]; ++i) { + tmp += B[next_bs_change + i][j]; + } + best_parameter[next_bs_change + j] = tmp / (2. * factor); + } + next_bs_change += block_sizes[k]; + } + + for (j = 0; j < dimension; ++j) { /* Manh: secondly, set xopt = (P_1^T)* xopt_1 */ + problem->best_parameter[P1[j]] = best_parameter[j]; + } + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "block-rotated_moderate"); - + + coco_free_memory(best_parameter); coco_free_memory(minus_half); coco_free_block_matrix(B, dimension); coco_free_memory(P1); From ac6000fd9e7f5cd14c759c54e419899e04d3bb4e Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 2 Aug 2016 20:13:37 +0200 Subject: [PATCH 290/446] Set best_parameter manually --- code-experiments/src/f_griewank_rosenbrock.c | 26 ++++++++++++++++++-- code-experiments/src/f_rosenbrock.c | 25 +++++++++++++++++-- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 7d2377cdb..643fdfb14 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -140,7 +140,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all double fopt; coco_problem_t *problem = NULL; double *shift, scales; - size_t i; + size_t i, j, k, next_bs_change;; double **B; const double *const *B_copy; @@ -150,6 +150,9 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all size_t nb_blocks; size_t swap_range; size_t nb_swaps; + double tmp; /* Manh: will serve to set the optimal solution "manually"*/ + double *best_parameter = coco_allocate_vector(dimension); /* Manh: will serve to set the optimal solution "manually"*/ + block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); @@ -182,11 +185,30 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: already normalized in the raw function. Should probably be changed so that the raw function is limited to the sum */ problem = transform_obj_shift(problem, fopt); - + + /* Manh: manually set xopt = rot1^T ones(dimension)/(2*scales) */ + next_bs_change = 0; + for (k = 0; k < nb_blocks; ++k){ + for (j = 0; j < block_sizes[k]; ++j) { /* Manh: firstly, set xopt_1 = (B^T)*(P_2^T)*ones(dimension)/(2*scales) */ + tmp = 0; + for (i = 0; i < block_sizes[k]; ++i) { + tmp += B[next_bs_change + i][j]; + } + best_parameter[next_bs_change + j] = tmp / (2. * scales); + } + next_bs_change += block_sizes[k]; + } + + for (j = 0; j < dimension; ++j) { /* Manh: secondly, set xopt = (P_1^T)* xopt_1 */ + problem->best_parameter[P1[j]] = best_parameter[j]; + } + + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "block-rotated_multi-modal"); + coco_free_memory(best_parameter); coco_free_memory(shift); coco_free_block_matrix(B, dimension); coco_free_memory(P1); diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index a0dac7869..84abdb5da 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -181,7 +181,7 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si double fopt; coco_problem_t *problem = NULL; double *minus_half, factor; - size_t i; + size_t i, j, k, next_bs_change; double **B; const double *const *B_copy; @@ -191,6 +191,8 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si size_t nb_blocks; size_t swap_range; size_t nb_swaps; + double tmp; /* Wassim: will serve to set the optimal solution "manually"*/ + double *best_parameter = coco_allocate_vector(dimension); /* Manh: will serve to set the optimal solution "manually"*/ block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); @@ -219,11 +221,30 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); + + /* Manh: manually set xopt = rot1^T ones(dimension)/(2*factor) */ + next_bs_change = 0; + for (k = 0; k < nb_blocks; ++k){ + for (j = 0; j < block_sizes[k]; ++j) { /* Manh: firstly, set xopt_1 = (B^T)*(P_2^T)*ones(dimension)/(2*factor) */ + tmp = 0; + for (i = 0; i < block_sizes[k]; ++i) { + tmp += B[next_bs_change + i][j]; + } + best_parameter[next_bs_change + j] = tmp / (2. * factor); + } + next_bs_change += block_sizes[k]; + } + + for (j = 0; j < dimension; ++j) { /* Manh: secondly, set xopt = (P_1^T)* xopt_1 */ + problem->best_parameter[P1[j]] = best_parameter[j]; + } + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "block-rotated_moderate"); - + + coco_free_memory(best_parameter); coco_free_memory(minus_half); coco_free_block_matrix(B, dimension); coco_free_memory(P1); From d2b9d9c47f56ed33edc071630bb0cdf7cdc392e5 Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 2 Aug 2016 20:18:22 +0200 Subject: [PATCH 291/446] Change f_lunacek_bi_rastrigin in large scale --- code-experiments/src/f_lunacek_bi_rastrigin.c | 51 +++++++++---------- .../src/transform_vars_x_hat_generic.c | 11 ++++ 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index 200398b94..95d7b6a9c 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -13,6 +13,7 @@ #include "f_sphere.c" #include "transform_vars_x_hat_generic.c" #include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Data type for the Lunacek bi-Rastrigin problem. @@ -183,14 +184,6 @@ static coco_problem_t *f_lunacek_bi_rastrigin_bbob_problem_allocate(const size_t /* Functions used in/related to the large scale suite are below. Eventually either merge with above after the standard version is updated with the new approach or put what's below in a separate file*/ -/** - * @brief Data type for the versatile_data_t - */ -typedef struct { - coco_problem_t *sub_problem_mu0; - coco_problem_t *sub_problem_mu1; -} f_lunacek_bi_rastrigin_versatile_data_t; - /** * @brief allows to free the versatile_data part of the problem. @@ -205,6 +198,8 @@ static void f_lunacek_bi_rastrigin_versatile_data_free(coco_problem_t *problem) if (versatile_data->sub_problem_mu1 != NULL) { coco_problem_free(versatile_data->sub_problem_mu1); } + /*Manh: free the x_hat*/ + coco_free_memory(versatile_data->x_hat); coco_free_memory(versatile_data); problem->versatile_data = NULL; problem->problem_free_function = NULL; @@ -246,12 +241,15 @@ static double f_lunacek_bi_rastrigin_core(const double *x, const size_t number_o size_t i; double result = 0.0; double y0, y1; - + double *x_hat; + + x_hat = f_lunacek_bi_rastrigin_versatile_data->x_hat; + problem_sub_mu0 = f_lunacek_bi_rastrigin_versatile_data->sub_problem_mu0; - problem_sub_mu0->evaluate_function(problem_sub_mu0, x, &y0); + problem_sub_mu0->evaluate_function(problem_sub_mu0, x_hat, &y0); problem_sub_mu1 = f_lunacek_bi_rastrigin_versatile_data->sub_problem_mu1; - problem_sub_mu1->evaluate_function(problem_sub_mu1, x, &y1); + problem_sub_mu1->evaluate_function(problem_sub_mu1, x_hat, &y1); result += (double) number_of_variables; @@ -281,11 +279,12 @@ static coco_problem_t *f_lunacek_bi_rastrigin_problem_allocate(const size_t numb coco_problem_t *problem = coco_problem_allocate_from_scalars("lunacek_bi_rastrigin function", f_lunacek_bi_rastrigin_evaluate_core, f_lunacek_bi_rastrigin_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); - + problem->versatile_data = (f_lunacek_bi_rastrigin_versatile_data_t *) coco_allocate_memory(sizeof(f_lunacek_bi_rastrigin_versatile_data_t)); + ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->x_hat = coco_allocate_vector(number_of_variables); /* Manh: Allocate x_hat in versatile_data */ coco_problem_set_id(problem, "%s_d%04lu", "lunacek_bi_rastrigin", number_of_variables); - /* Compute the best solution later once the sub-problems are well defined */ + *(problem->best_value) = 0; /* Manh: set default value to avoid assert() in transformation later*/ return problem; } @@ -357,9 +356,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); - /* set fopt on the non transformed version.*/ - f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); - + /* set sign_vector */ sign_vector = coco_allocate_vector(dimension); for ( i = 0; i < dimension; i++) { /* set sign(x_opt)*/ if ( coco_random_normal(rng) < 0.0) {/* Wassim: noraml is used here but unif for Schweffel!!! */ @@ -372,25 +369,17 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat /* apply transformations to sub-problems */ sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0; *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu0_vector, 0); - *sub_problem_tmp = transform_vars_x_hat_generic(*sub_problem_tmp, sign_vector); sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1; - *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu1_vector, 0); - *sub_problem_tmp = transform_vars_x_hat_generic(*sub_problem_tmp, sign_vector); - + *sub_problem_tmp = transform_obj_scale(*sub_problem_tmp, s); /* Manh: need to use s */ *sub_problem_tmp = transform_obj_shift(*sub_problem_tmp, d * (double) dimension); - *sub_problem_tmp = transform_obj_norm_by_dim(*sub_problem_tmp); - + /* transformations on main problem */ problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_conditioning(problem, condition); - - for ( i = 0; i < dimension; i++) { /* Wassim: to silence warning about best_parameter*/ - problem->best_parameter[i] = 0.5 * mu0 * sign_vector[i]; /* TODO: Documentation no 0.5 in documentation! */ - } problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); @@ -401,10 +390,16 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat problem = transform_obj_norm_by_dim(problem); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); - - /*f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); + + /* set best_parameter and best value*/ + for ( i = 0; i < dimension; i++) { /* Wassim: to silence warning about best_parameter*/ + problem->best_parameter[i] = 0.5 * mu0 * sign_vector[i]; /* TODO: Documentation no 0.5 in documentation! */ + } + + /* f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); printf("\n %f , x_opt[0]= %f\n", problem->best_value[0], problem->best_parameter[0]);*//* Wassim: for testing purposes, might end up being the one kept though*/ + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "block-rotated_weakly-structured"); diff --git a/code-experiments/src/transform_vars_x_hat_generic.c b/code-experiments/src/transform_vars_x_hat_generic.c index 3c24894d4..e9bf97857 100644 --- a/code-experiments/src/transform_vars_x_hat_generic.c +++ b/code-experiments/src/transform_vars_x_hat_generic.c @@ -19,6 +19,16 @@ typedef struct { coco_problem_free_function_t old_free_problem; } transform_vars_x_hat_generic_data_t; +/** + * @brief Data type for the versatile_data_t + */ +typedef struct { + coco_problem_t *sub_problem_mu0; + coco_problem_t *sub_problem_mu1; + double *x_hat; +} f_lunacek_bi_rastrigin_versatile_data_t; + + /** * @brief Evaluates the transformation. */ @@ -31,6 +41,7 @@ static void transform_vars_x_hat_generic_evaluate(coco_problem_t *problem, const for (i = 0; i < problem->number_of_variables; ++i) { data->x[i] = 2.0 * data->sign_vector[i] * x[i]; + ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->x_hat[i] = data->x[i]; } coco_evaluate_function(inner_problem, data->x, y); assert(y[0] + 1e-13 >= problem->best_value[0]); From 83d3b9fef84f4eda585dccbc983ae55aa1f8c54f Mon Sep 17 00:00:00 2001 From: NDManh Date: Tue, 2 Aug 2016 20:18:22 +0200 Subject: [PATCH 292/446] Change f_lunacek_bi_rastrigin in large scale --- code-experiments/src/f_lunacek_bi_rastrigin.c | 51 +++++++++---------- .../src/transform_vars_x_hat_generic.c | 11 ++++ 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index 200398b94..95d7b6a9c 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -13,6 +13,7 @@ #include "f_sphere.c" #include "transform_vars_x_hat_generic.c" #include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Data type for the Lunacek bi-Rastrigin problem. @@ -183,14 +184,6 @@ static coco_problem_t *f_lunacek_bi_rastrigin_bbob_problem_allocate(const size_t /* Functions used in/related to the large scale suite are below. Eventually either merge with above after the standard version is updated with the new approach or put what's below in a separate file*/ -/** - * @brief Data type for the versatile_data_t - */ -typedef struct { - coco_problem_t *sub_problem_mu0; - coco_problem_t *sub_problem_mu1; -} f_lunacek_bi_rastrigin_versatile_data_t; - /** * @brief allows to free the versatile_data part of the problem. @@ -205,6 +198,8 @@ static void f_lunacek_bi_rastrigin_versatile_data_free(coco_problem_t *problem) if (versatile_data->sub_problem_mu1 != NULL) { coco_problem_free(versatile_data->sub_problem_mu1); } + /*Manh: free the x_hat*/ + coco_free_memory(versatile_data->x_hat); coco_free_memory(versatile_data); problem->versatile_data = NULL; problem->problem_free_function = NULL; @@ -246,12 +241,15 @@ static double f_lunacek_bi_rastrigin_core(const double *x, const size_t number_o size_t i; double result = 0.0; double y0, y1; - + double *x_hat; + + x_hat = f_lunacek_bi_rastrigin_versatile_data->x_hat; + problem_sub_mu0 = f_lunacek_bi_rastrigin_versatile_data->sub_problem_mu0; - problem_sub_mu0->evaluate_function(problem_sub_mu0, x, &y0); + problem_sub_mu0->evaluate_function(problem_sub_mu0, x_hat, &y0); problem_sub_mu1 = f_lunacek_bi_rastrigin_versatile_data->sub_problem_mu1; - problem_sub_mu1->evaluate_function(problem_sub_mu1, x, &y1); + problem_sub_mu1->evaluate_function(problem_sub_mu1, x_hat, &y1); result += (double) number_of_variables; @@ -281,11 +279,12 @@ static coco_problem_t *f_lunacek_bi_rastrigin_problem_allocate(const size_t numb coco_problem_t *problem = coco_problem_allocate_from_scalars("lunacek_bi_rastrigin function", f_lunacek_bi_rastrigin_evaluate_core, f_lunacek_bi_rastrigin_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); - + problem->versatile_data = (f_lunacek_bi_rastrigin_versatile_data_t *) coco_allocate_memory(sizeof(f_lunacek_bi_rastrigin_versatile_data_t)); + ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->x_hat = coco_allocate_vector(number_of_variables); /* Manh: Allocate x_hat in versatile_data */ coco_problem_set_id(problem, "%s_d%04lu", "lunacek_bi_rastrigin", number_of_variables); - /* Compute the best solution later once the sub-problems are well defined */ + *(problem->best_value) = 0; /* Manh: set default value to avoid assert() in transformation later*/ return problem; } @@ -357,9 +356,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); - /* set fopt on the non transformed version.*/ - f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); - + /* set sign_vector */ sign_vector = coco_allocate_vector(dimension); for ( i = 0; i < dimension; i++) { /* set sign(x_opt)*/ if ( coco_random_normal(rng) < 0.0) {/* Wassim: noraml is used here but unif for Schweffel!!! */ @@ -372,25 +369,17 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat /* apply transformations to sub-problems */ sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0; *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu0_vector, 0); - *sub_problem_tmp = transform_vars_x_hat_generic(*sub_problem_tmp, sign_vector); sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1; - *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu1_vector, 0); - *sub_problem_tmp = transform_vars_x_hat_generic(*sub_problem_tmp, sign_vector); - + *sub_problem_tmp = transform_obj_scale(*sub_problem_tmp, s); /* Manh: need to use s */ *sub_problem_tmp = transform_obj_shift(*sub_problem_tmp, d * (double) dimension); - *sub_problem_tmp = transform_obj_norm_by_dim(*sub_problem_tmp); - + /* transformations on main problem */ problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_conditioning(problem, condition); - - for ( i = 0; i < dimension; i++) { /* Wassim: to silence warning about best_parameter*/ - problem->best_parameter[i] = 0.5 * mu0 * sign_vector[i]; /* TODO: Documentation no 0.5 in documentation! */ - } problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); @@ -401,10 +390,16 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat problem = transform_obj_norm_by_dim(problem); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); - - /*f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); + + /* set best_parameter and best value*/ + for ( i = 0; i < dimension; i++) { /* Wassim: to silence warning about best_parameter*/ + problem->best_parameter[i] = 0.5 * mu0 * sign_vector[i]; /* TODO: Documentation no 0.5 in documentation! */ + } + + /* f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); printf("\n %f , x_opt[0]= %f\n", problem->best_value[0], problem->best_parameter[0]);*//* Wassim: for testing purposes, might end up being the one kept though*/ + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "block-rotated_weakly-structured"); diff --git a/code-experiments/src/transform_vars_x_hat_generic.c b/code-experiments/src/transform_vars_x_hat_generic.c index 3c24894d4..e9bf97857 100644 --- a/code-experiments/src/transform_vars_x_hat_generic.c +++ b/code-experiments/src/transform_vars_x_hat_generic.c @@ -19,6 +19,16 @@ typedef struct { coco_problem_free_function_t old_free_problem; } transform_vars_x_hat_generic_data_t; +/** + * @brief Data type for the versatile_data_t + */ +typedef struct { + coco_problem_t *sub_problem_mu0; + coco_problem_t *sub_problem_mu1; + double *x_hat; +} f_lunacek_bi_rastrigin_versatile_data_t; + + /** * @brief Evaluates the transformation. */ @@ -31,6 +41,7 @@ static void transform_vars_x_hat_generic_evaluate(coco_problem_t *problem, const for (i = 0; i < problem->number_of_variables; ++i) { data->x[i] = 2.0 * data->sign_vector[i] * x[i]; + ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->x_hat[i] = data->x[i]; } coco_evaluate_function(inner_problem, data->x, y); assert(y[0] + 1e-13 >= problem->best_value[0]); From 2a26e5830cc104f0bc74ee1e1fcb4419295c0423 Mon Sep 17 00:00:00 2001 From: NDManh Date: Wed, 3 Aug 2016 18:11:35 +0200 Subject: [PATCH 293/446] back to original --- code-experiments/build/python/cython/interface.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code-experiments/build/python/cython/interface.c b/code-experiments/build/python/cython/interface.c index b0c7afab7..cc134c3bc 100644 --- a/code-experiments/build/python/cython/interface.c +++ b/code-experiments/build/python/cython/interface.c @@ -1623,8 +1623,7 @@ static char __pyx_k_get_problem_self_id_observer_No[] = "`get_problem(self, id, static char __pyx_k_has_never_been_tested_incomment[] = "has never been tested, incomment this to start testing"; static char __pyx_k_ids_id_snippets_get_problem_Fal[] = "`ids(*id_snippets, get_problem=False, verbose=False)`\n return all problem IDs that contain all of the `id_snippets`.\n\n An ID can be used for indexing, that is, when calling the method\n `get_problem(id)`.\n\n If `get_problem is True`, the problem for the first matching ID is\n returned.\n\n >>> import cocoex as ex\n >>> s = ex.Suite(\"bbob\", \"\", \"\")\n >>> s.ids(\"f001\", \"d10\", \"i01\")\n ['bbob_f001_i01_d10']\n\n We can sweep through all instances of the ellipsoidal function f10\n in 20-D of the BBOB suite like this::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> ids = suite.ids(\"f010\", \"d20\")\n >>> used_indices = []\n >>> for p in suite:\n ... if p.id in ids:\n ... # work work work with problem `p`\n ... used_indices.append(p.index)\n >>> print(used_indices)\n [1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589]\n\n A desired problem can also be filtered out during creation::\n\n >>> import cocoex as ex\n >>> f9 = ex.Suite(\"bbob\", \"\",\n ... \"function_indices:9 dimensions:20 instance_indices:1-5\")[0]\n >>> print(f9.id)\n bbob_f009_i01_d20\n\n "; static char __pyx_k_not_match_the_problem_dimension[] = "not match the problem dimension `number_of_variables==%d`."; -static char __pyx_k_observe_problem_let_self_observ[] = ""; //Manh -#static char __pyx_k_observe_problem_let_self_observ[] = "`observe(problem)` let `self` observe the `problem: Problem` by\n calling `problem.add_observer(self)`.\n\n The typical observer records data to be used in the COCO post-processing\n afterwards.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> assert len(suite) == 2160\n >>> f = suite.get_problem(33)\n >>> assert isinstance(f, Problem)\n >>> assert f.id.endswith('f003_i04_d02')\n >>> observer = ex.Observer(\"bbob\", \"\").observe(f)\n >>> # work work work with f\n >>> f.free()\n\n Details:\n - `f.free()` in the above example must be called before to observe\n another problem with the \"bbob\" observer. Otherwise the Python\n interpreter will crash due to an error raised from the C code.\n - Due to technical sublties between Python/Cython/C, the pointer to the\n underlying C observer is passed by global assignment with\n `_update_current_observer_global()`\n\n "; +static char __pyx_k_observe_problem_let_self_observ[] = "`observe(problem)` let `self` observe the `problem: Problem` by\n calling `problem.add_observer(self)`.\n\n The typical observer records data to be used in the COCO post-processing\n afterwards.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> assert len(suite) == 2160\n >>> f = suite.get_problem(33)\n >>> assert isinstance(f, Problem)\n >>> assert f.id.endswith('f003_i04_d02')\n >>> observer = ex.Observer(\"bbob\", \"\").observe(f)\n >>> # work work work with f\n >>> f.free()\n\n Details:\n - `f.free()` in the above example must be called before to observe\n another problem with the \"bbob\" observer. Otherwise the Python\n interpreter will crash due to an error raised from the C code.\n - Due to technical sublties between Python/Cython/C, the pointer to the\n underlying C observer is passed by global assignment with\n `_update_current_observer_global()`\n\n "; static char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)"; static char __pyx_k_C_Users_Tea_Documents_Work_GitHu[] = "C:\\Users\\Tea\\Documents\\Work\\GitHub\\coco-ttusar\\code-experiments\\build\\python\\cython\\interface.pyx"; static char __pyx_k_Dimension_np_size_x_d_of_input_x[] = "Dimension, `np.size(x)==%d`, of input `x` does "; From c48de0fca49f5121192ce83d0bcfc7a7879a2809 Mon Sep 17 00:00:00 2001 From: NDManh Date: Wed, 3 Aug 2016 18:11:35 +0200 Subject: [PATCH 294/446] back to original --- code-experiments/build/python/cython/interface.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code-experiments/build/python/cython/interface.c b/code-experiments/build/python/cython/interface.c index b0c7afab7..cc134c3bc 100644 --- a/code-experiments/build/python/cython/interface.c +++ b/code-experiments/build/python/cython/interface.c @@ -1623,8 +1623,7 @@ static char __pyx_k_get_problem_self_id_observer_No[] = "`get_problem(self, id, static char __pyx_k_has_never_been_tested_incomment[] = "has never been tested, incomment this to start testing"; static char __pyx_k_ids_id_snippets_get_problem_Fal[] = "`ids(*id_snippets, get_problem=False, verbose=False)`\n return all problem IDs that contain all of the `id_snippets`.\n\n An ID can be used for indexing, that is, when calling the method\n `get_problem(id)`.\n\n If `get_problem is True`, the problem for the first matching ID is\n returned.\n\n >>> import cocoex as ex\n >>> s = ex.Suite(\"bbob\", \"\", \"\")\n >>> s.ids(\"f001\", \"d10\", \"i01\")\n ['bbob_f001_i01_d10']\n\n We can sweep through all instances of the ellipsoidal function f10\n in 20-D of the BBOB suite like this::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> ids = suite.ids(\"f010\", \"d20\")\n >>> used_indices = []\n >>> for p in suite:\n ... if p.id in ids:\n ... # work work work with problem `p`\n ... used_indices.append(p.index)\n >>> print(used_indices)\n [1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589]\n\n A desired problem can also be filtered out during creation::\n\n >>> import cocoex as ex\n >>> f9 = ex.Suite(\"bbob\", \"\",\n ... \"function_indices:9 dimensions:20 instance_indices:1-5\")[0]\n >>> print(f9.id)\n bbob_f009_i01_d20\n\n "; static char __pyx_k_not_match_the_problem_dimension[] = "not match the problem dimension `number_of_variables==%d`."; -static char __pyx_k_observe_problem_let_self_observ[] = ""; //Manh -#static char __pyx_k_observe_problem_let_self_observ[] = "`observe(problem)` let `self` observe the `problem: Problem` by\n calling `problem.add_observer(self)`.\n\n The typical observer records data to be used in the COCO post-processing\n afterwards.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> assert len(suite) == 2160\n >>> f = suite.get_problem(33)\n >>> assert isinstance(f, Problem)\n >>> assert f.id.endswith('f003_i04_d02')\n >>> observer = ex.Observer(\"bbob\", \"\").observe(f)\n >>> # work work work with f\n >>> f.free()\n\n Details:\n - `f.free()` in the above example must be called before to observe\n another problem with the \"bbob\" observer. Otherwise the Python\n interpreter will crash due to an error raised from the C code.\n - Due to technical sublties between Python/Cython/C, the pointer to the\n underlying C observer is passed by global assignment with\n `_update_current_observer_global()`\n\n "; +static char __pyx_k_observe_problem_let_self_observ[] = "`observe(problem)` let `self` observe the `problem: Problem` by\n calling `problem.add_observer(self)`.\n\n The typical observer records data to be used in the COCO post-processing\n afterwards.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> assert len(suite) == 2160\n >>> f = suite.get_problem(33)\n >>> assert isinstance(f, Problem)\n >>> assert f.id.endswith('f003_i04_d02')\n >>> observer = ex.Observer(\"bbob\", \"\").observe(f)\n >>> # work work work with f\n >>> f.free()\n\n Details:\n - `f.free()` in the above example must be called before to observe\n another problem with the \"bbob\" observer. Otherwise the Python\n interpreter will crash due to an error raised from the C code.\n - Due to technical sublties between Python/Cython/C, the pointer to the\n underlying C observer is passed by global assignment with\n `_update_current_observer_global()`\n\n "; static char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)"; static char __pyx_k_C_Users_Tea_Documents_Work_GitHu[] = "C:\\Users\\Tea\\Documents\\Work\\GitHub\\coco-ttusar\\code-experiments\\build\\python\\cython\\interface.pyx"; static char __pyx_k_Dimension_np_size_x_d_of_input_x[] = "Dimension, `np.size(x)==%d`, of input `x` does "; From edcaf962bbb81988c1171840f50a4c10cb145c64 Mon Sep 17 00:00:00 2001 From: NDManh Date: Thu, 11 Aug 2016 15:45:10 +0200 Subject: [PATCH 295/446] Modify the f_schwefel_generalized --- code-experiments/src/f_schwefel_generalized.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code-experiments/src/f_schwefel_generalized.c b/code-experiments/src/f_schwefel_generalized.c index 5e378a4bc..981723620 100644 --- a/code-experiments/src/f_schwefel_generalized.c +++ b/code-experiments/src/f_schwefel_generalized.c @@ -41,7 +41,7 @@ static double f_schwefel_generalized_raw(const double *x, const size_t number_of for (i = 0; i < number_of_variables; ++i) { sum += x[i] * sin(sqrt(fabs(x[i]))); } - result = 0.01 * (penalty - sum); + result = 0.01 * (penalty + 418.9828872724339 - sum/(double) number_of_variables ); return result; } @@ -81,7 +81,6 @@ static coco_problem_t *f_schwefel_generalized_bbob_problem_allocate(const size_t double *xopt, fopt; coco_problem_t *problem = NULL; size_t i; - const double Schwefel_constant = 4.189828872724339; double *tmp1 = coco_allocate_vector(dimension); double *tmp2 = coco_allocate_vector(dimension); @@ -109,7 +108,6 @@ static coco_problem_t *f_schwefel_generalized_bbob_problem_allocate(const size_t problem = transform_vars_scale(problem, 2); problem = transform_vars_x_hat(problem, rseed); problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_shift(problem, Schwefel_constant); /* We could add the Schwefel_constant before normalizing */ problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); From 56132391d50eefe91ce43517c21b4bd27d8d42bb Mon Sep 17 00:00:00 2001 From: NDManh Date: Thu, 11 Aug 2016 15:45:10 +0200 Subject: [PATCH 296/446] Modify the f_schwefel_generalized --- code-experiments/src/f_schwefel_generalized.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code-experiments/src/f_schwefel_generalized.c b/code-experiments/src/f_schwefel_generalized.c index 5e378a4bc..981723620 100644 --- a/code-experiments/src/f_schwefel_generalized.c +++ b/code-experiments/src/f_schwefel_generalized.c @@ -41,7 +41,7 @@ static double f_schwefel_generalized_raw(const double *x, const size_t number_of for (i = 0; i < number_of_variables; ++i) { sum += x[i] * sin(sqrt(fabs(x[i]))); } - result = 0.01 * (penalty - sum); + result = 0.01 * (penalty + 418.9828872724339 - sum/(double) number_of_variables ); return result; } @@ -81,7 +81,6 @@ static coco_problem_t *f_schwefel_generalized_bbob_problem_allocate(const size_t double *xopt, fopt; coco_problem_t *problem = NULL; size_t i; - const double Schwefel_constant = 4.189828872724339; double *tmp1 = coco_allocate_vector(dimension); double *tmp2 = coco_allocate_vector(dimension); @@ -109,7 +108,6 @@ static coco_problem_t *f_schwefel_generalized_bbob_problem_allocate(const size_t problem = transform_vars_scale(problem, 2); problem = transform_vars_x_hat(problem, rseed); problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_shift(problem, Schwefel_constant); /* We could add the Schwefel_constant before normalizing */ problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); From e363f8fae59c9ba7f0228e14d581d9a62acbfb2c Mon Sep 17 00:00:00 2001 From: NDManh Date: Thu, 11 Aug 2016 16:38:26 +0200 Subject: [PATCH 297/446] A redundant character ';' --- code-experiments/src/f_griewank_rosenbrock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 643fdfb14..aedfe918c 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -140,7 +140,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all double fopt; coco_problem_t *problem = NULL; double *shift, scales; - size_t i, j, k, next_bs_change;; + size_t i, j, k, next_bs_change; double **B; const double *const *B_copy; From 61990cfeabc37baa56df21606e99ae31db0bf96f Mon Sep 17 00:00:00 2001 From: NDManh Date: Thu, 11 Aug 2016 16:38:26 +0200 Subject: [PATCH 298/446] A redundant character ';' --- code-experiments/src/f_griewank_rosenbrock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 643fdfb14..aedfe918c 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -140,7 +140,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all double fopt; coco_problem_t *problem = NULL; double *shift, scales; - size_t i, j, k, next_bs_change;; + size_t i, j, k, next_bs_change; double **B; const double *const *B_copy; From 826727a1c6857301e422429ff0e810a1efcac6e6 Mon Sep 17 00:00:00 2001 From: NDManh Date: Fri, 26 Aug 2016 13:44:10 +0200 Subject: [PATCH 299/446] fix issue of segmentation fault #1103 --- code-experiments/src/logger_bbob.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 77f8ecfdc..35c4834ff 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -359,9 +359,6 @@ static void logger_bbob_finalize(const logger_bbob_data_t *logger){ coco_debug("best f=%e after %ld fevals (done observing)\n", logger->best_fvalue, (unsigned long) logger->number_of_evaluations); } - /* log the final information of the run in the info file*/ - fprintf(logger->index_file, ":%ld|%.1e", logger->number_of_evaluations, - logger->best_fvalue - logger->optimal_fvalue); /* log the last evaluation (if not logged) in the *.tdata file*/ if (!logger->written_last_eval) { @@ -386,10 +383,9 @@ static void logger_bbob_free(void *stuff) { logger_bbob_finalize(logger); if (logger->index_file != NULL) { - - /*fprintf(logger->index_file, ":%lu|%.1e", (unsigned long) logger->number_of_evaluations, - logger->best_fvalue - logger->optimal_fvalue);*/ - fclose(logger->index_file); /*Wassim: now done in logger_bbob_finalize*/ + fprintf(logger->index_file, ":%lu|%.1e", (unsigned long) logger->number_of_evaluations, + logger->best_fvalue - logger->optimal_fvalue); + fclose(logger->index_file); logger->index_file = NULL; } if (logger->fdata_file != NULL) { From b8cc0e3c20ab3d017c3d1a0dd6aa90f2b8f1ca16 Mon Sep 17 00:00:00 2001 From: NDManh Date: Fri, 26 Aug 2016 13:44:10 +0200 Subject: [PATCH 300/446] fix issue of segmentation fault #1103 --- code-experiments/src/logger_bbob.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 77f8ecfdc..35c4834ff 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -359,9 +359,6 @@ static void logger_bbob_finalize(const logger_bbob_data_t *logger){ coco_debug("best f=%e after %ld fevals (done observing)\n", logger->best_fvalue, (unsigned long) logger->number_of_evaluations); } - /* log the final information of the run in the info file*/ - fprintf(logger->index_file, ":%ld|%.1e", logger->number_of_evaluations, - logger->best_fvalue - logger->optimal_fvalue); /* log the last evaluation (if not logged) in the *.tdata file*/ if (!logger->written_last_eval) { @@ -386,10 +383,9 @@ static void logger_bbob_free(void *stuff) { logger_bbob_finalize(logger); if (logger->index_file != NULL) { - - /*fprintf(logger->index_file, ":%lu|%.1e", (unsigned long) logger->number_of_evaluations, - logger->best_fvalue - logger->optimal_fvalue);*/ - fclose(logger->index_file); /*Wassim: now done in logger_bbob_finalize*/ + fprintf(logger->index_file, ":%lu|%.1e", (unsigned long) logger->number_of_evaluations, + logger->best_fvalue - logger->optimal_fvalue); + fclose(logger->index_file); logger->index_file = NULL; } if (logger->fdata_file != NULL) { From 9ab4672e68029b7f6eaff312b8fb371f40edf325 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Tue, 4 Oct 2016 15:41:44 +0200 Subject: [PATCH 301/446] bbob-largescale suite name added to interface, try to make it run without errors modified: code-experiments/build/python/cython/interface.pyx modified: code-experiments/build/python/example_experiment.py --- code-experiments/build/python/cython/interface.pyx | 2 +- code-experiments/build/python/example_experiment.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code-experiments/build/python/cython/interface.pyx b/code-experiments/build/python/cython/interface.pyx index 18862b4ad..6b8156c6d 100755 --- a/code-experiments/build/python/cython/interface.pyx +++ b/code-experiments/build/python/cython/interface.pyx @@ -8,7 +8,7 @@ cimport numpy as np from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException known_suite_names = [b"bbob", b"bbob-biobj"] -_known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-largescale"] +known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-largescale"] # _test_assignment = "seems to prevent an 'export' error (i.e. induce export) to make this module known under Linux and Windows (possibly because of the leading underscore of _interface)" # __all__ = ['Problem', 'Benchmark'] diff --git a/code-experiments/build/python/example_experiment.py b/code-experiments/build/python/example_experiment.py index b43e05b11..b25838cdd 100755 --- a/code-experiments/build/python/example_experiment.py +++ b/code-experiments/build/python/example_experiment.py @@ -280,7 +280,7 @@ def coco_optimize(solver, fun, max_evals, max_runs=1e9): #SOLVER = my_solver # fmin_slsqp # SOLVER = cma.fmin suite_name = "bbob-biobj" # suite_name = "bbob" -suite_instance = "year:2016" +suite_instance = "" # "year:2016" # incommented as it seems not to work with bbob-largescale suite_options = "" # "dimensions: 2,3,5,10,20 " # if 40 is not desired observer_name = default_observers()[suite_name] observer_options = ( From 5577428083d5defc6deaeeef3158ecd255a54770 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 12 Oct 2016 18:07:29 +0200 Subject: [PATCH 302/446] re-activated test(interface) --- code-experiments/build/python/coco_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/build/python/coco_test.py b/code-experiments/build/python/coco_test.py index 0af67f1f0..001fe9d97 100755 --- a/code-experiments/build/python/coco_test.py +++ b/code-experiments/build/python/coco_test.py @@ -90,7 +90,7 @@ def run_doctests(): if not sys.version.startswith('3'): print(" CAVEAT: doctest OF cocoex.interface IS, FOR SOME REASON, " + "INEFFECTIVE IN PYTHON 2 ") - #testmod(interface) + testmod(interface) testmod(example_experiment) def _clean_up(folder, start_matches, protected): From ce946e6a5268ed920352f61d19ebfa0c7a4c1bd8 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 12 Oct 2016 18:37:19 +0200 Subject: [PATCH 303/446] updating --- code-experiments/src/f_gallagher.c | 2 +- code-experiments/src/f_griewank_rosenbrock.c | 2 +- code-experiments/src/f_lunacek_bi_rastrigin.c | 47 ++++++++----------- code-experiments/src/f_schaffers.c | 2 +- code-experiments/src/f_schwefel_generalized.c | 10 ++-- code-experiments/src/f_weierstrass.c | 2 +- code-experiments/src/logger_bbob.c | 8 ++-- .../src/transform_vars_x_hat_generic.c | 13 +++++ .../bbob_pproc/compall/ppfigs.py | 19 ++++---- .../bbob_pproc/compall/pptables.py | 6 +-- code-postprocessing/bbob_pproc/ppfig.py | 2 +- 11 files changed, 61 insertions(+), 52 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index fee240439..170c73ccd 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -513,7 +513,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz *problem_i = transform_vars_permutation(*problem_i, P1, dimension); *problem_i = transform_vars_shift(*problem_i, y_i, 0); - *problem_i = transform_obj_norm_by_dim(*problem_i);/* for the scalar product */ + /* *problem_i = transform_obj_norm_by_dim(*problem_i);*//* for the scalar product *//* Wassim: there is already a normalization by dimension*/ coco_free_memory(P_Lambda); coco_free_memory(y_i); diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 7d2377cdb..aaa4da1ea 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -180,7 +180,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: already normalized in the raw function. Should probably be changed so that the raw function is limited to the sum */ + /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: there is already a normalization by dimension*/ problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index 200398b94..2bc818108 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -13,6 +13,7 @@ #include "f_sphere.c" #include "transform_vars_x_hat_generic.c" #include "transform_obj_norm_by_dim.c" +#include "transform_obj_scale.c" /** * @brief Data type for the Lunacek bi-Rastrigin problem. @@ -183,14 +184,6 @@ static coco_problem_t *f_lunacek_bi_rastrigin_bbob_problem_allocate(const size_t /* Functions used in/related to the large scale suite are below. Eventually either merge with above after the standard version is updated with the new approach or put what's below in a separate file*/ -/** - * @brief Data type for the versatile_data_t - */ -typedef struct { - coco_problem_t *sub_problem_mu0; - coco_problem_t *sub_problem_mu1; -} f_lunacek_bi_rastrigin_versatile_data_t; - /** * @brief allows to free the versatile_data part of the problem. @@ -205,6 +198,8 @@ static void f_lunacek_bi_rastrigin_versatile_data_free(coco_problem_t *problem) if (versatile_data->sub_problem_mu1 != NULL) { coco_problem_free(versatile_data->sub_problem_mu1); } + + coco_free_memory(versatile_data->x_hat); /*Manh: free the x_hat*/ coco_free_memory(versatile_data); problem->versatile_data = NULL; problem->problem_free_function = NULL; @@ -246,12 +241,15 @@ static double f_lunacek_bi_rastrigin_core(const double *x, const size_t number_o size_t i; double result = 0.0; double y0, y1; + double *x_hat; + + x_hat = f_lunacek_bi_rastrigin_versatile_data->x_hat; problem_sub_mu0 = f_lunacek_bi_rastrigin_versatile_data->sub_problem_mu0; - problem_sub_mu0->evaluate_function(problem_sub_mu0, x, &y0); + problem_sub_mu0->evaluate_function(problem_sub_mu0, x_hat, &y0); problem_sub_mu1 = f_lunacek_bi_rastrigin_versatile_data->sub_problem_mu1; - problem_sub_mu1->evaluate_function(problem_sub_mu1, x, &y1); + problem_sub_mu1->evaluate_function(problem_sub_mu1, x_hat, &y1); result += (double) number_of_variables; @@ -283,9 +281,10 @@ static coco_problem_t *f_lunacek_bi_rastrigin_problem_allocate(const size_t numb f_lunacek_bi_rastrigin_evaluate_core, f_lunacek_bi_rastrigin_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); problem->versatile_data = (f_lunacek_bi_rastrigin_versatile_data_t *) coco_allocate_memory(sizeof(f_lunacek_bi_rastrigin_versatile_data_t)); + ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->x_hat = coco_allocate_vector(number_of_variables); /* Manh: Allocate x_hat in versatile_data */ coco_problem_set_id(problem, "%s_d%04lu", "lunacek_bi_rastrigin", number_of_variables); - /* Compute the best solution later once the sub-problems are well defined */ + *(problem->best_value) = 0; /* Manh: set default value to avoid assert() in transformation later*/ return problem; } @@ -357,9 +356,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); - /* set fopt on the non transformed version.*/ - f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); - + /* set sign_vector */ sign_vector = coco_allocate_vector(dimension); for ( i = 0; i < dimension; i++) { /* set sign(x_opt)*/ if ( coco_random_normal(rng) < 0.0) {/* Wassim: noraml is used here but unif for Schweffel!!! */ @@ -372,25 +369,17 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat /* apply transformations to sub-problems */ sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu0; *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu0_vector, 0); - *sub_problem_tmp = transform_vars_x_hat_generic(*sub_problem_tmp, sign_vector); - + sub_problem_tmp = &((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1; - *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu1_vector, 0); - *sub_problem_tmp = transform_vars_x_hat_generic(*sub_problem_tmp, sign_vector); - + *sub_problem_tmp = transform_obj_scale(*sub_problem_tmp, s); /* Manh: need to use s */ *sub_problem_tmp = transform_obj_shift(*sub_problem_tmp, d * (double) dimension); - *sub_problem_tmp = transform_obj_norm_by_dim(*sub_problem_tmp); - + /* transformations on main problem */ problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_conditioning(problem, condition); - - for ( i = 0; i < dimension; i++) { /* Wassim: to silence warning about best_parameter*/ - problem->best_parameter[i] = 0.5 * mu0 * sign_vector[i]; /* TODO: Documentation no 0.5 in documentation! */ - } problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); @@ -402,7 +391,12 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); - /*f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); + /* set best_parameter and best value*/ + for ( i = 0; i < dimension; i++) { /* Wassim: to silence warning about best_parameter*/ + problem->best_parameter[i] = 0.5 * mu0 * sign_vector[i]; /* TODO: Documentation no 0.5 in documentation! */ + } + + /* f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); printf("\n %f , x_opt[0]= %f\n", problem->best_value[0], problem->best_parameter[0]);*//* Wassim: for testing purposes, might end up being the one kept though*/ coco_problem_set_id(problem, problem_id_template, function, instance, dimension); @@ -424,4 +418,3 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat return problem; } - diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index d56a65959..e36da6f4f 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -190,7 +190,7 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: there is already a normalization by dimension*/ problem = transform_obj_penalize(problem, penalty_factor / (double) dimension); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_schwefel_generalized.c b/code-experiments/src/f_schwefel_generalized.c index 5e378a4bc..cd68c46cf 100644 --- a/code-experiments/src/f_schwefel_generalized.c +++ b/code-experiments/src/f_schwefel_generalized.c @@ -27,6 +27,7 @@ static double f_schwefel_generalized_raw(const double *x, const size_t number_of size_t i = 0; double result; double penalty, sum; + const double Schwefel_constant = 4.189828872724339; /* Boundary handling*/ penalty = 0.0; @@ -41,7 +42,8 @@ static double f_schwefel_generalized_raw(const double *x, const size_t number_of for (i = 0; i < number_of_variables; ++i) { sum += x[i] * sin(sqrt(fabs(x[i]))); } - result = 0.01 * (penalty - sum); + result = 0.01 * (penalty + Schwefel_constant*100. - sum / (double) number_of_variables); + /*result = 0.01 * (penalty - sum);*/ return result; } @@ -81,7 +83,7 @@ static coco_problem_t *f_schwefel_generalized_bbob_problem_allocate(const size_t double *xopt, fopt; coco_problem_t *problem = NULL; size_t i; - const double Schwefel_constant = 4.189828872724339; + /*const double Schwefel_constant = 4.189828872724339;*//* Wassim: now inside the raw function*/ double *tmp1 = coco_allocate_vector(dimension); double *tmp2 = coco_allocate_vector(dimension); @@ -108,8 +110,8 @@ static coco_problem_t *f_schwefel_generalized_bbob_problem_allocate(const size_t problem = transform_vars_z_hat(problem, xopt); problem = transform_vars_scale(problem, 2); problem = transform_vars_x_hat(problem, rseed); - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_shift(problem, Schwefel_constant); /* We could add the Schwefel_constant before normalizing */ + /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: there is already a normalization by dimension*/ + /*problem = transform_obj_shift(problem, Schwefel_constant);*/ /* Wassim: now in the raw definition */ problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index e1793b98e..c6f2638c3 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -220,7 +220,7 @@ static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const s problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - problem = transform_obj_norm_by_dim(problem); + /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: there is already a normalization by dimension*/ problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 77f8ecfdc..ac80d6e8d 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -360,8 +360,8 @@ static void logger_bbob_finalize(const logger_bbob_data_t *logger){ (unsigned long) logger->number_of_evaluations); } /* log the final information of the run in the info file*/ - fprintf(logger->index_file, ":%ld|%.1e", logger->number_of_evaluations, - logger->best_fvalue - logger->optimal_fvalue); + //fprintf(logger->index_file, ":%ld|%.1e", logger->number_of_evaluations, + // logger->best_fvalue - logger->optimal_fvalue); /* log the last evaluation (if not logged) in the *.tdata file*/ if (!logger->written_last_eval) { @@ -387,8 +387,8 @@ static void logger_bbob_free(void *stuff) { logger_bbob_finalize(logger); if (logger->index_file != NULL) { - /*fprintf(logger->index_file, ":%lu|%.1e", (unsigned long) logger->number_of_evaluations, - logger->best_fvalue - logger->optimal_fvalue);*/ + fprintf(logger->index_file, ":%lu|%.1e", (unsigned long) logger->number_of_evaluations, + logger->best_fvalue - logger->optimal_fvalue); fclose(logger->index_file); /*Wassim: now done in logger_bbob_finalize*/ logger->index_file = NULL; } diff --git a/code-experiments/src/transform_vars_x_hat_generic.c b/code-experiments/src/transform_vars_x_hat_generic.c index 3c24894d4..fb9555b8b 100644 --- a/code-experiments/src/transform_vars_x_hat_generic.c +++ b/code-experiments/src/transform_vars_x_hat_generic.c @@ -19,6 +19,16 @@ typedef struct { coco_problem_free_function_t old_free_problem; } transform_vars_x_hat_generic_data_t; +/** + * @brief Data type for the versatile_data_t + */ +typedef struct { + coco_problem_t *sub_problem_mu0; + coco_problem_t *sub_problem_mu1; + double *x_hat; +} f_lunacek_bi_rastrigin_versatile_data_t; + + /** * @brief Evaluates the transformation. */ @@ -31,6 +41,7 @@ static void transform_vars_x_hat_generic_evaluate(coco_problem_t *problem, const for (i = 0; i < problem->number_of_variables; ++i) { data->x[i] = 2.0 * data->sign_vector[i] * x[i]; + ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->x_hat[i] = data->x[i]; } coco_evaluate_function(inner_problem, data->x, y); assert(y[0] + 1e-13 >= problem->best_value[0]); @@ -65,3 +76,5 @@ static coco_problem_t *transform_vars_x_hat_generic(coco_problem_t *inner_proble return problem; } + + diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index 48d9a5342..4a44299f4 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -526,7 +526,7 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd ) handles.append(tmp) - if show_significance: # plot significance-stars + if show_significance and 0: # plot significance-stars # Wassim: TODO: put back xstar, ystar = [], [] dims = sorted(pproc.dictAlgByDim(dictFunc[f])) for i, dim in enumerate(dims): @@ -560,14 +560,15 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd # bottom labels with #instances and type of targets: infotext = '' algorithms_with_data = [a for a in dictAlg.keys() if dictAlg[a] != []] - for alg in algorithms_with_data: - infotext += '%d, ' % len((dictFunc[f][alg])[0].instancenumbers) - infotext = infotext.rstrip(', ') - infotext += ' instances' - plt.text(plt.xlim()[0], plt.ylim()[0]+0.5, infotext, fontsize=14) # TODO: check - plt.text(plt.xlim()[0], plt.ylim()[0], - 'target ' + target.label_name() + ': ' + target.label(0), - fontsize=14) # TODO: check + # Wassim: TODO: put back + #for alg in algorithms_with_data: + # infotext += '%d, ' % len((dictFunc[f][alg])[0].instancenumbers) + #infotext = infotext.rstrip(', ') + #infotext += ' instances' + #plt.text(plt.xlim()[0], plt.ylim()[0]+0.5, infotext, fontsize=14) # TODO: check + #plt.text(plt.xlim()[0], plt.ylim()[0], + # 'target ' + target.label_name() + ': ' + target.label(0), + # fontsize=14) # TODO: check saveFigure(filename, verbose=verbose) diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index 3218b6975..773ddec89 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -394,7 +394,7 @@ def main(dictAlg, sortedAlgs, outputdir='.', verbose=True, function_targets_line # significance test of best given algorithm against all others best_alg_idx = numpy.array(algerts).argsort(0)[0, :] # indexed by target index - significance_versus_others = significance_all_best_vs_other(algentries, targetsOfInterest, best_alg_idx)[0] # Wassim: seems to crash when data is incomplete + #significance_versus_others = significance_all_best_vs_other(algentries, targetsOfInterest, best_alg_idx)[0] # Wassim: seems to crash when data is incomplete # Create the table table = [] tableHtml = [] @@ -543,8 +543,8 @@ def main(dictAlg, sortedAlgs, outputdir='.', verbose=True, function_targets_line # write star for significance against all other algorithms str_significance_subsup = '' str_significance_subsup_html = '' - if (len(best_alg_idx) > 0 and len(significance_versus_others) > 0 and - i == best_alg_idx[j] and nbtests * significance_versus_others[j][1] < 0.05): + if len(best_alg_idx) > 0 and 0: #len(significance_versus_others) > 0 and Wassim: TODO: uncomment + #i == best_alg_idx[j] and nbtests * significance_versus_others[j][1] < 0.05): logp = -numpy.ceil(numpy.log10(nbtests * significance_versus_others[j][1])) logp = numpy.min((9, logp)) # not messing up the format and handling inf str_significance_subsup = r"^{%s%s}" % ( diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index fa8ef0a72..b83271880 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -429,7 +429,7 @@ def save_single_functions_html(filename, def write_tables(f, caption_string_format, best_alg_exists, html_key, legend_key): currentHeader = 'Table showing the aRT in number of function evaluations' if best_alg_exists: - currentHeader += ' divided by the best aRT measured during BBOB-2009' + currentHeader += ' divided by the best aRT measured during BBOB-2009' f.write("\n

    %s

    \n" % currentHeader) f.write("\n\n" % html_key) From 6c62ccde054d5e3d3f5b7269a9a34436621bdbed Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 19 Oct 2016 18:45:05 +0200 Subject: [PATCH 304/446] re-activating significance tests in pproc --- code-postprocessing/bbob_pproc/compall/ppfigs.py | 11 +---------- code-postprocessing/bbob_pproc/compall/pptables.py | 6 +++--- code-postprocessing/bbob_pproc/ppfig.py | 2 +- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/code-postprocessing/bbob_pproc/compall/ppfigs.py b/code-postprocessing/bbob_pproc/compall/ppfigs.py index c45f87c8e..90b674ddd 100644 --- a/code-postprocessing/bbob_pproc/compall/ppfigs.py +++ b/code-postprocessing/bbob_pproc/compall/ppfigs.py @@ -519,7 +519,7 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd ) handles.append(tmp) - if show_significance and 0: # plot significance-stars # Wassim: TODO: put back + if show_significance: # plot significance-stars xstar, ystar = [], [] dims = sorted(pproc.dictAlgByDim(dictFunc[f])) for i, dim in enumerate(dims): @@ -554,15 +554,6 @@ def main(dictAlg, htmlFilePrefix, isBiobjective, sortedAlgs=None, outputdir='ppd infotext = '' algorithms_with_data = [a for a in dictAlg.keys() if dictAlg[a] != []] - # Wassim: TODO: put back - #for alg in algorithms_with_data: - # infotext += '%d, ' % len((dictFunc[f][alg])[0].instancenumbers) - #infotext = infotext.rstrip(', ') - #infotext += ' instances' - #plt.text(plt.xlim()[0], plt.ylim()[0]+0.5, infotext, fontsize=14) # TODO: check - #plt.text(plt.xlim()[0], plt.ylim()[0], - # 'target ' + target.label_name() + ': ' + target.label(0), - # fontsize=14) # TODO: check num_of_instances = [] for alg in algorithms_with_data: if len(dictFunc[f][alg]) > 0: diff --git a/code-postprocessing/bbob_pproc/compall/pptables.py b/code-postprocessing/bbob_pproc/compall/pptables.py index fa56ac024..02640d7fe 100644 --- a/code-postprocessing/bbob_pproc/compall/pptables.py +++ b/code-postprocessing/bbob_pproc/compall/pptables.py @@ -385,7 +385,7 @@ def main(dictAlg, sortedAlgs, outputdir='.', verbose=True, function_targets_line # significance test of best given algorithm against all others best_alg_idx = numpy.array(algerts).argsort(0)[0, :] # indexed by target index - #significance_versus_others = significance_all_best_vs_other(algentries, targetsOfInterest, best_alg_idx)[0] # Wassim: seems to crash when data is incomplete + significance_versus_others = significance_all_best_vs_other(algentries, targetsOfInterest, best_alg_idx)[0] # Wassim: seems to crash when data is incomplete # Create the table table = [] tableHtml = [] @@ -541,8 +541,8 @@ def main(dictAlg, sortedAlgs, outputdir='.', verbose=True, function_targets_line # write star for significance against all other algorithms str_significance_subsup = '' str_significance_subsup_html = '' - if len(best_alg_idx) > 0 and 0: #len(significance_versus_others) > 0 and Wassim: TODO: uncomment - #i == best_alg_idx[j] and nbtests * significance_versus_others[j][1] < 0.05): + if (len(best_alg_idx) > 0 and len(significance_versus_others) > 0 and + i == best_alg_idx[j] and nbtests * significance_versus_others[j][1] < 0.05): logp = -numpy.ceil(numpy.log10(nbtests * significance_versus_others[j][1])) logp = numpy.min((9, logp)) # not messing up the format and handling inf str_significance_subsup = r"^{%s%s}" % ( diff --git a/code-postprocessing/bbob_pproc/ppfig.py b/code-postprocessing/bbob_pproc/ppfig.py index eb678ccc1..5914bc4b5 100644 --- a/code-postprocessing/bbob_pproc/ppfig.py +++ b/code-postprocessing/bbob_pproc/ppfig.py @@ -166,7 +166,7 @@ def getRldLink(htmlPage, current_dir, isBiobjective): folder = 'pprldmany-single-functions' ignoreFileExists = genericsettings.isRldOnSingleFcts - # Wassim: why is this set to True? We shouldn't generate pages for nonn-existing plots or at least the pages should just be clickable to get the next one + # Wassim: why is this set to True? We shouldn't generate pages for non-existing plots or at least the pages should just be clickable to get the next one if htmlPage in (HtmlPage.ONE, HtmlPage.TWO, HtmlPage.MANY): if htmlPage == HtmlPage.ONE: fileName = '%s.html' % genericsettings.pprldmany_file_name From 5429018c8ba9f10a1c954380d17ccd2dce3ecd68 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 9 Nov 2016 16:46:57 +0100 Subject: [PATCH 305/446] added bbob-largescae to known_suite_names --- .../build/python/cython/interface.c | 15696 +++++++--------- 1 file changed, 7024 insertions(+), 8672 deletions(-) diff --git a/code-experiments/build/python/cython/interface.c b/code-experiments/build/python/cython/interface.c index 7624a4ef0..c2dc56131 100644 --- a/code-experiments/build/python/cython/interface.c +++ b/code-experiments/build/python/cython/interface.c @@ -1,16 +1,27 @@ -/* Generated by Cython 0.24.1 */ +/* Generated by Cython 0.19 on Fri Nov 4 15:56:09 2016 */ #define PY_SSIZE_T_CLEAN +#ifndef CYTHON_USE_PYLONG_INTERNALS +#ifdef PYLONG_BITS_IN_DIGIT +#define CYTHON_USE_PYLONG_INTERNALS 0 +#else +#include "pyconfig.h" +#ifdef PYLONG_BITS_IN_DIGIT +#define CYTHON_USE_PYLONG_INTERNALS 1 +#else +#define CYTHON_USE_PYLONG_INTERNALS 0 +#endif +#endif +#endif #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) - #error Cython requires Python 2.6+ or Python 3.2+. +#elif PY_VERSION_HEX < 0x02040000 + #error Cython requires Python 2.4+. #else -#define CYTHON_ABI "0_24_1" -#include +#include /* For offsetof */ #ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall @@ -36,100 +47,103 @@ #define Py_HUGE_VAL HUGE_VAL #endif #ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 +#define CYTHON_COMPILING_IN_PYPY 1 +#define CYTHON_COMPILING_IN_CPYTHON 0 #else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 -#endif -#if !defined(CYTHON_USE_PYLONG_INTERNALS) && CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000 - #define CYTHON_USE_PYLONG_INTERNALS 1 +#define CYTHON_COMPILING_IN_PYPY 0 +#define CYTHON_COMPILING_IN_CPYTHON 1 #endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK +#if PY_VERSION_HEX < 0x02050000 + typedef int Py_ssize_t; + #define PY_SSIZE_T_MAX INT_MAX + #define PY_SSIZE_T_MIN INT_MIN + #define PY_FORMAT_SIZE_T "" + #define CYTHON_FORMAT_SSIZE_T "" + #define PyInt_FromSsize_t(z) PyInt_FromLong(z) + #define PyInt_AsSsize_t(o) __Pyx_PyInt_AsInt(o) + #define PyNumber_Index(o) ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \ + (PyErr_Format(PyExc_TypeError, \ + "expected index value, got %.200s", Py_TYPE(o)->tp_name), \ + (PyObject*)0)) + #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \ + !PyComplex_Check(o)) + #define PyIndex_Check __Pyx_PyIndex_Check + #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message) + #define __PYX_BUILD_PY_SSIZE_T "i" +#else + #define __PYX_BUILD_PY_SSIZE_T "n" + #define CYTHON_FORMAT_SSIZE_T "z" + #define __Pyx_PyIndex_Check PyIndex_Check #endif -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 +#if PY_VERSION_HEX < 0x02060000 + #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt) + #define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) + #define Py_SIZE(ob) (((PyVarObject*)(ob))->ob_size) + #define PyVarObject_HEAD_INIT(type, size) \ + PyObject_HEAD_INIT(type) size, + #define PyType_Modified(t) + typedef struct { + void *buf; + PyObject *obj; + Py_ssize_t len; + Py_ssize_t itemsize; + int readonly; + int ndim; + char *format; + Py_ssize_t *shape; + Py_ssize_t *strides; + Py_ssize_t *suboffsets; + void *internal; + } Py_buffer; + #define PyBUF_SIMPLE 0 + #define PyBUF_WRITABLE 0x0001 + #define PyBUF_FORMAT 0x0004 + #define PyBUF_ND 0x0008 + #define PyBUF_STRIDES (0x0010 | PyBUF_ND) + #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES) + #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES) + #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES) + #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES) + #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE) + #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE) + typedef int (*getbufferproc)(PyObject *, Py_buffer *, int); + typedef void (*releasebufferproc)(PyObject *, Py_buffer *); #endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \ + PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type #endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 +#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6 + #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict") #endif -#ifndef Py_TPFLAGS_HAVE_INDEX +#if PY_MAJOR_VERSION >= 3 + #define Py_TPFLAGS_CHECKTYPES 0 #define Py_TPFLAGS_HAVE_INDEX 0 #endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER +#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3) #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 +#if PY_VERSION_HEX < 0x02060000 + #define Py_TPFLAGS_HAVE_VERSION_TAG 0 #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ? \ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #else #define CYTHON_PEP393_ENABLED 0 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) + #define __Pyx_PyUnicode_READ(k, d, i) ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type @@ -138,12 +152,35 @@ #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #endif +#if PY_VERSION_HEX < 0x02060000 + #define PyBytesObject PyStringObject + #define PyBytes_Type PyString_Type + #define PyBytes_Check PyString_Check + #define PyBytes_CheckExact PyString_CheckExact + #define PyBytes_FromString PyString_FromString + #define PyBytes_FromStringAndSize PyString_FromStringAndSize + #define PyBytes_FromFormat PyString_FromFormat + #define PyBytes_DecodeEscape PyString_DecodeEscape + #define PyBytes_AsString PyString_AsString + #define PyBytes_AsStringAndSize PyString_AsStringAndSize + #define PyBytes_Size PyString_Size + #define PyBytes_AS_STRING PyString_AS_STRING + #define PyBytes_GET_SIZE PyString_GET_SIZE + #define PyBytes_Repr PyString_Repr + #define PyBytes_Concat PyString_Concat + #define PyBytes_ConcatAndDel PyString_ConcatAndDel +#endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) #else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) + #define __Pyx_PyBaseString_Check(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj) || \ + PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (Py_TYPE(obj) == &PyBaseString_Type) +#endif +#if PY_VERSION_HEX < 0x02060000 + #define PySet_Check(obj) PyObject_TypeCheck(obj, &PySet_Type) + #define PyFrozenSet_Check(obj) PyObject_TypeCheck(obj, &PyFrozenSet_Type) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) @@ -164,17 +201,11 @@ #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 +#if PY_VERSION_HEX < 0x03020000 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t PyInt_AsLong @@ -182,37 +213,43 @@ #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t #endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) +#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300) + #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b) + #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value) + #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b) #else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) + #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \ + (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \ + (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \ + (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0))) + #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \ + (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \ + (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \ + (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1))) + #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \ + (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \ + (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \ + (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1))) #endif -#if PY_VERSION_HEX >= 0x030500B1 -#define __Pyx_PyAsyncMethodsStruct PyAsyncMethods -#define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) -#elif CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; -} __Pyx_PyAsyncMethodsStruct; -#define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) +#if PY_MAJOR_VERSION >= 3 + #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) +#endif +#if PY_VERSION_HEX < 0x02050000 + #define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),((char *)(n))) + #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a)) + #define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),((char *)(n))) #else -#define __Pyx_PyType_AsAsync(obj) NULL + #define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),(n)) + #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a)) + #define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),(n)) #endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif +#if PY_VERSION_HEX < 0x02050000 + #define __Pyx_NAMESTR(n) ((char *)(n)) + #define __Pyx_DOCSTR(n) ((char *)(n)) +#else + #define __Pyx_NAMESTR(n) (n) + #define __Pyx_DOCSTR(n) (n) #endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) - #ifndef CYTHON_INLINE #if defined(__GNUC__) #define CYTHON_INLINE __inline__ @@ -224,31 +261,19 @@ typedef struct { #define CYTHON_INLINE #endif #endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { + /* Initialize NaN. The sign is irrelevant, an exponent with all bits 1 and + a nonzero mantissa means NaN. If the first bit in the mantissa is 1, it is + a quiet NaN. */ float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) @@ -266,6 +291,10 @@ static CYTHON_INLINE float __PYX_NAN() { #endif #endif +#if defined(WIN32) || defined(MS_WINDOWS) +#define _USE_MATH_DEFINES +#endif +#include #define __PYX_HAVE__cocoex__interface #define __PYX_HAVE_API__cocoex__interface #include "string.h" @@ -295,56 +324,19 @@ static CYTHON_INLINE float __PYX_NAN() { # define CYTHON_UNUSED # endif #endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; +typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/ #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 1 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 #define __PYX_DEFAULT_STRING_ENCODING "ascii" #define __Pyx_PyObject_FromString __Pyx_PyStr_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyStr_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) && defined (_M_X64) - #define __Pyx_sst_abs(value) _abs64(value) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char*); #if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize @@ -352,19 +344,17 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif -#define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyObject_FromUString(s) __Pyx_PyObject_FromString((char*)s) +#define __Pyx_PyBytes_FromUString(s) __Pyx_PyBytes_FromString((char*)s) +#define __Pyx_PyStr_FromUString(s) __Pyx_PyStr_FromString((char*)s) +#define __Pyx_PyUnicode_FromUString(s) __Pyx_PyUnicode_FromString((char*)s) #if PY_MAJOR_VERSION < 3 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { const Py_UNICODE *u_end = u; while (*u_end++) ; - return (size_t)(u_end - u - 1); + return u_end - u - 1; } #else #define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen @@ -372,43 +362,34 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) +#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None) +#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*); #if CYTHON_COMPILING_IN_CPYTHON #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; +static int __Pyx_init_sys_getdefaultencoding_params() { + PyObject* sys = NULL; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { + if (sys == NULL) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + if (default_encoding == NULL) goto bad; + if (strcmp(PyBytes_AsString(default_encoding), "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { + const char* default_encoding_c = PyBytes_AS_STRING(default_encoding); char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { @@ -416,21 +397,23 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) { } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; + if (ascii_chars_u == NULL) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + if (ascii_chars_b == NULL || strncmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + "This module compiled with c_string_encoding=ascii, but default encoding '%s' is not a superset of ascii.", default_encoding_c); goto bad; } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); } - Py_DECREF(default_encoding); + Py_XDECREF(sys); + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); return 0; bad: + Py_XDECREF(sys); Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); @@ -443,23 +426,22 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) { #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; +static int __Pyx_init_sys_getdefaultencoding_params() { + PyObject* sys = NULL; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; + if (sys == NULL) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; + if (default_encoding == NULL) goto bad; + default_encoding_c = PyBytes_AS_STRING(default_encoding); __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(sys); Py_DECREF(default_encoding); return 0; bad: + Py_XDECREF(sys); Py_XDECREF(default_encoding); return -1; } @@ -467,11 +449,16 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) { #endif -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ +#ifdef __GNUC__ + /* Test for GCC > 2.95 */ + #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) + #else /* __GNUC__ > 2 ... */ + #define likely(x) (x) + #define unlikely(x) (x) + #endif /* __GNUC__ > 2 ... */ +#else /* __GNUC__ */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ @@ -481,13 +468,11 @@ static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm= __FILE__; static const char *__pyx_filename; -/* None.proto */ #if !defined(CYTHON_CCOMPLEX) #if defined(__cplusplus) #define CYTHON_CCOMPLEX 1 @@ -511,21 +496,20 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { - "cython/interface.pyx", - "__init__.pxd", + "interface.pyx", + "numpy.pxd", "type.pxd", }; -/* BufferFormatStructs.proto */ #define IS_UNSIGNED(type) (((type) -1) > 0) struct __Pyx_StructField_; #define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0) typedef struct { - const char* name; + const char* name; /* for error messages only */ struct __Pyx_StructField_* fields; - size_t size; - size_t arraysize[8]; + size_t size; /* sizeof(type) */ + size_t arraysize[8]; /* length of array in each dimension */ int ndim; - char typegroup; + char typegroup; /* _R_eal, _C_omplex, Signed _I_nt, _U_nsigned int, _S_truct, _P_ointer, _O_bject, c_H_ar */ char is_unsigned; int flags; } __Pyx_TypeInfo; @@ -552,7 +536,7 @@ typedef struct { } __Pyx_BufFmt_Context; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "numpy.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -561,7 +545,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "numpy.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -570,7 +554,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":727 +/* "numpy.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -579,7 +563,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":728 +/* "numpy.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -588,7 +572,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "numpy.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -597,7 +581,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "numpy.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -606,7 +590,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":734 +/* "numpy.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -615,7 +599,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":735 +/* "numpy.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -624,7 +608,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":739 +/* "numpy.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -633,7 +617,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":740 +/* "numpy.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -642,7 +626,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "numpy.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -651,7 +635,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":750 +/* "numpy.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -660,7 +644,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "numpy.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -669,7 +653,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "numpy.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -678,7 +662,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":754 +/* "numpy.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -687,7 +671,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "numpy.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -696,7 +680,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":757 +/* "numpy.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -705,7 +689,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "numpy.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -714,7 +698,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "numpy.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -723,7 +707,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":761 +/* "numpy.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -732,7 +716,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "numpy.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -740,7 +724,6 @@ typedef npy_double __pyx_t_5numpy_double_t; * ctypedef npy_cfloat cfloat_t */ typedef npy_longdouble __pyx_t_5numpy_longdouble_t; -/* None.proto */ #if CYTHON_CCOMPLEX #ifdef __cplusplus typedef ::std::complex< float > __pyx_t_float_complex; @@ -751,7 +734,6 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t; typedef struct { float real, imag; } __pyx_t_float_complex; #endif -/* None.proto */ #if CYTHON_CCOMPLEX #ifdef __cplusplus typedef ::std::complex< double > __pyx_t_double_complex; @@ -764,12 +746,12 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t; /*--- Type declarations ---*/ -struct __pyx_obj_6cocoex_9interface_Suite; struct __pyx_obj_6cocoex_9interface_Observer; struct __pyx_obj_6cocoex_9interface_Problem; struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__; +struct __pyx_obj_6cocoex_9interface_Suite; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "numpy.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -778,7 +760,7 @@ struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":765 +/* "numpy.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -787,7 +769,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "numpy.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -796,7 +778,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "numpy.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -832,32 +814,6 @@ struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize { PyObject *free; }; -/* "cython/interface.pyx":74 - * cdef coco_observer_t* _current_observer - * - * cdef class Suite: # <<<<<<<<<<<<<< - * """Suite of benchmark problems. - * - */ -struct __pyx_obj_6cocoex_9interface_Suite { - PyObject_HEAD - struct __pyx_vtabstruct_6cocoex_9interface_Suite *__pyx_vtab; - coco_suite_t *suite; - coco_problem_t *_current_problem; - PyObject *_name; - PyObject *_instance; - PyObject *_options; - PyObject *current_problem_; - PyObject *_current_index; - PyObject *_ids; - PyObject *_indices; - PyObject *_names; - PyObject *_dimensions; - PyObject *_number_of_objectives; - PyObject *initialized; -}; - - /* "cython/interface.pyx":528 * s is self or s.free() * @@ -919,7 +875,6 @@ struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ { }; - /* "cython/interface.pyx":74 * cdef coco_observer_t* _current_observer * @@ -927,6 +882,25 @@ struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ { * """Suite of benchmark problems. * */ +struct __pyx_obj_6cocoex_9interface_Suite { + PyObject_HEAD + struct __pyx_vtabstruct_6cocoex_9interface_Suite *__pyx_vtab; + coco_suite_t *suite; + coco_problem_t *_current_problem; + PyObject *_name; + PyObject *_instance; + PyObject *_options; + PyObject *current_problem_; + PyObject *_current_index; + PyObject *_ids; + PyObject *_indices; + PyObject *_names; + PyObject *_dimensions; + PyObject *_number_of_objectives; + PyObject *initialized; +}; + + struct __pyx_vtabstruct_6cocoex_9interface_Suite { PyObject *(*_initialize)(struct __pyx_obj_6cocoex_9interface_Suite *); @@ -946,9 +920,6 @@ struct __pyx_vtabstruct_6cocoex_9interface_Problem { PyObject *(*_initialize)(struct __pyx_obj_6cocoex_9interface_Problem *, coco_problem_t *, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args); }; static struct __pyx_vtabstruct_6cocoex_9interface_Problem *__pyx_vtabptr_6cocoex_9interface_Problem; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif @@ -962,22 +933,22 @@ static struct __pyx_vtabstruct_6cocoex_9interface_Problem *__pyx_vtabptr_6cocoex void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/ #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + #define __Pyx_RefNannySetupContext(name, acquire_gil) \ + if (acquire_gil) { \ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \ + PyGILState_Release(__pyx_gilstate_save); \ + } else { \ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \ } #else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + #define __Pyx_RefNannySetupContext(name, acquire_gil) \ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) #endif - #define __Pyx_RefNannyFinishContext()\ + #define __Pyx_RefNannyFinishContext() \ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) @@ -999,19 +970,10 @@ static struct __pyx_vtabstruct_6cocoex_9interface_Problem *__pyx_vtabptr_6cocoex #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) +#endif /* CYTHON_REFNANNY */ #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) -/* PyObjectGetAttrStr.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); @@ -1027,74 +989,24 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyThreadStateGet.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET(); -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#endif +static PyObject *__Pyx_GetBuiltinName(PyObject *name); /*proto*/ -/* PyErrFetchRestore.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif +static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ +static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/ -/* RaiseArgTupleInvalid.proto */ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/ -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/ -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \ + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \ + const char* function_name); /*proto*/ -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); +static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /*proto*/ -/* ListCompAppend.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; @@ -1111,32 +1023,13 @@ static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { #define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) #endif -/* PySequenceContains.proto */ -static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { +static CYTHON_INLINE int __Pyx_PySequence_Contains(PyObject* item, PyObject* seq, int eq) { int result = PySequence_Contains(seq, item); return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); } -/* SaveResetException.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* GetException.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ -/* ListAppend.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; @@ -1153,167 +1046,123 @@ static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { #define __Pyx_PyList_Append(L,x) PyList_Append(L,x) #endif -/* PyObjectCallMethod1.proto */ -static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); - -/* append.proto */ -static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x); - -/* PyIntBinop.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace); -#else -#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\ - (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) -#endif - -/* KeywordStringCheck.proto */ -static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); - -/* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ - __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static PyObject* __Pyx_PyObject_CallMethodTuple(PyObject* obj, PyObject* method_name, PyObject* args) { + PyObject *method, *result = NULL; + if (unlikely(!args)) return NULL; + method = __Pyx_PyObject_GetAttrStr(obj, method_name); + if (unlikely(!method)) goto bad; + result = PyObject_Call(method, args, NULL); + Py_DECREF(method); +bad: + Py_DECREF(args); + return result; +} +#define __Pyx_PyObject_CallMethod3(obj, name, arg1, arg2, arg3) \ + __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(3, arg1, arg2, arg3)) +#define __Pyx_PyObject_CallMethod2(obj, name, arg1, arg2) \ + __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(2, arg1, arg2)) +#define __Pyx_PyObject_CallMethod1(obj, name, arg1) \ + __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(1, arg1)) +#define __Pyx_PyObject_CallMethod0(obj, name) \ + __Pyx_PyObject_CallMethodTuple(obj, name, (Py_INCREF(__pyx_empty_tuple), __pyx_empty_tuple)) + +static CYTHON_INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x); /*proto*/ + +static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/ + +#define __Pyx_GetItemInt(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ + (((size) <= sizeof(Py_ssize_t)) ? \ + __Pyx_GetItemInt_Fast(o, i, is_list, wraparound, boundscheck) : \ + __Pyx_GetItemInt_Generic(o, to_py_func(i))) +#define __Pyx_GetItemInt_List(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ + (((size) <= sizeof(Py_ssize_t)) ? \ + __Pyx_GetItemInt_List_Fast(o, i, wraparound, boundscheck) : \ + __Pyx_GetItemInt_Generic(o, to_py_func(i))) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ + (((size) <= sizeof(Py_ssize_t)) ? \ + __Pyx_GetItemInt_Tuple_Fast(o, i, wraparound, boundscheck) : \ + __Pyx_GetItemInt_Generic(o, to_py_func(i))) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, int wraparound, int boundscheck); -/* PyErrExceptionMatches.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* SwapException.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* ExtTypeTest.proto */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - -/* SetItemInt.proto */ -#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\ - __Pyx_SetItemInt_Generic(o, to_py_func(i), v))) +#if PY_VERSION_HEX < 0x02050000 +#ifndef PyAnySet_CheckExact +#define PyAnySet_CheckExact(ob) \ + ((ob)->ob_type == &PySet_Type || \ + (ob)->ob_type == &PyFrozenSet_Type) +#define PySet_New(iterable) \ + PyObject_CallFunctionObjArgs((PyObject *)&PySet_Type, (iterable), NULL) +#define Pyx_PyFrozenSet_New(iterable) \ + PyObject_CallFunctionObjArgs((PyObject *)&PyFrozenSet_Type, (iterable), NULL) +#define PySet_Size(anyset) \ + PyObject_Size((anyset)) +#define PySet_Contains(anyset, key) \ + PySequence_Contains((anyset), (key)) +#define PySet_Pop(set) \ + PyObject_CallMethod(set, (char *)"pop", NULL) +static CYTHON_INLINE int PySet_Clear(PyObject *set) { + PyObject *ret = PyObject_CallMethod(set, (char *)"clear", NULL); + if (!ret) return -1; + Py_DECREF(ret); return 0; +} +static CYTHON_INLINE int PySet_Discard(PyObject *set, PyObject *key) { + PyObject *ret = PyObject_CallMethod(set, (char *)"discard", (char *)"O", key); + if (!ret) return -1; + Py_DECREF(ret); return 0; +} +static CYTHON_INLINE int PySet_Add(PyObject *set, PyObject *key) { + PyObject *ret = PyObject_CallMethod(set, (char *)"add", (char *)"O", key); + if (!ret) return -1; + Py_DECREF(ret); return 0; +} +#endif /* PyAnySet_CheckExact (<= Py2.4) */ +#endif /* < Py2.5 */ + +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/ + +#define __Pyx_SetItemInt(o, i, v, size, to_py_func, is_list, wraparound, boundscheck) \ + (((size) <= sizeof(Py_ssize_t)) ? \ + __Pyx_SetItemInt_Fast(o, i, v, is_list, wraparound, boundscheck) : \ + __Pyx_SetItemInt_Generic(o, to_py_func(i), v)) static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v); static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, int wraparound, int boundscheck); -/* BufferFormatCheck.proto */ static CYTHON_INLINE int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); -static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts); -static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, - __Pyx_BufFmt_StackElem* stack, - __Pyx_TypeInfo* type); // PROTO - -/* BufferFallbackError.proto */ -static void __Pyx_RaiseBufferFallbackError(void); - -/* WriteUnraisableException.proto */ -static void __Pyx_WriteUnraisable(const char *name, int clineno, - int lineno, const char *filename, - int full_traceback, int nogil); -/* PyIntBinop.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace); -#else -#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\ - PyObject_RichCompare(op1, op2, Py_EQ) - #endif +static void __Pyx_RaiseBufferFallbackError(void); /*proto*/ -/* SliceObject.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, PyObject** py_start, PyObject** py_stop, PyObject** py_slice, int has_cstart, int has_cstop, int wraparound); -/* DictGetItem.proto */ -#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY -static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { - PyObject *value; - value = PyDict_GetItemWithError(d, key); - if (unlikely(!value)) { - if (!PyErr_Occurred()) { - PyObject* args = PyTuple_Pack(1, key); - if (likely(args)) - PyErr_SetObject(PyExc_KeyError, args); - Py_XDECREF(args); - } - return NULL; - } - Py_INCREF(value); - return value; -} -#else - #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) -#endif - -/* RaiseTooManyValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); -/* RaiseNeedMoreValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); -/* RaiseNoneIterError.proto */ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); -/* IncludeStringH.proto */ -#include +static CYTHON_INLINE int __Pyx_IterFinish(void); /*proto*/ -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /*proto*/ -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); +#include -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /*proto*/ -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); +static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name); /*proto*/ -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); +static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ +static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ -/* BufferStructDeclare.proto */ typedef struct { Py_ssize_t shape, strides, suboffsets; } __Pyx_Buf_DimInfo; @@ -1336,17 +1185,11 @@ typedef struct { #endif -/* None.proto */ static Py_ssize_t __Pyx_zeros[] = {0, 0, 0, 0, 0, 0, 0, 0}; static Py_ssize_t __Pyx_minusones[] = {-1, -1, -1, -1, -1, -1, -1, -1}; -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/ -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - -/* None.proto */ #if CYTHON_CCOMPLEX #ifdef __cplusplus #define __Pyx_CREAL(z) ((z).real()) @@ -1359,7 +1202,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); #define __Pyx_CREAL(z) ((z).real) #define __Pyx_CIMAG(z) ((z).imag) #endif -#if defined(__cplusplus) && CYTHON_CCOMPLEX && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103) +#if defined(_WIN32) && defined(__cplusplus) && CYTHON_CCOMPLEX #define __Pyx_SET_CREAL(z,x) ((z).real(x)) #define __Pyx_SET_CIMAG(z,y) ((z).imag(y)) #else @@ -1367,10 +1210,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y) #endif -/* None.proto */ static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float); -/* None.proto */ #if CYTHON_CCOMPLEX #define __Pyx_c_eqf(a, b) ((a)==(b)) #define __Pyx_c_sumf(a, b) ((a)+(b)) @@ -1408,10 +1249,8 @@ static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(floa #endif #endif -/* None.proto */ static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double); -/* None.proto */ #if CYTHON_CCOMPLEX #define __Pyx_c_eq(a, b) ((a)==(b)) #define __Pyx_c_sum(a, b) ((a)+(b)) @@ -1449,26 +1288,47 @@ static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(do #endif #endif -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value); +static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *); + +static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *); + +static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *); + +static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *); + +static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *); + +static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *); + +static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *); + +static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *); + +static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *); + +static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *); + +static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *); + +static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *); -/* CIntFromPy.proto */ -static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *); +static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *); -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); +static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *); -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); +static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *); -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); +static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *); -/* CoroutineBase.proto */ -typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyObject *); +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ + +#define __Pyx_Generator_USED +#include +#include +typedef PyObject *(*__pyx_generator_body_t)(PyObject *, PyObject *); typedef struct { PyObject_HEAD - __pyx_coroutine_body_t body; + __pyx_generator_body_t body; PyObject *closure; PyObject *exc_type; PyObject *exc_value; @@ -1476,41 +1336,23 @@ typedef struct { PyObject *gi_weakreflist; PyObject *classobj; PyObject *yieldfrom; - PyObject *gi_name; - PyObject *gi_qualname; - PyObject *gi_modulename; int resume_label; - char is_running; -} __pyx_CoroutineObject; -static __pyx_CoroutineObject *__Pyx__Coroutine_New( - PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *closure, - PyObject *name, PyObject *qualname, PyObject *module_name); -static int __Pyx_Coroutine_clear(PyObject *self); + char is_running; // using T_BOOL for property below requires char value +} __pyx_GeneratorObject; +static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body, + PyObject *closure); +static int __pyx_Generator_init(void); +static int __Pyx_Generator_clear(PyObject* self); #if 1 || PY_VERSION_HEX < 0x030300B0 static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue); #else #define __Pyx_PyGen_FetchStopIterationValue(pvalue) PyGen_FetchStopIterationValue(pvalue) #endif -/* PatchModuleWithCoroutine.proto */ -static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); - -/* PatchGeneratorABC.proto */ -static int __Pyx_patch_abc(void); - -/* Generator.proto */ -#define __Pyx_Generator_USED -static PyTypeObject *__pyx_GeneratorType = 0; -#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType) -#define __Pyx_Generator_New(body, closure, name, qualname, module_name)\ - __Pyx__Coroutine_New(__pyx_GeneratorType, body, closure, name, qualname, module_name) -static PyObject *__Pyx_Generator_Next(PyObject *self); -static int __pyx_Generator_init(void); - -/* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(void); -/* PyIdentifierFromString.proto */ +static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/ + #if !defined(__Pyx_PyIdentifier_FromString) #if PY_MAJOR_VERSION < 3 #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) @@ -1519,35 +1361,45 @@ static int __Pyx_check_binary_version(void); #endif #endif -/* ModuleImport.proto */ -static PyObject *__Pyx_ImportModule(const char *name); +static PyObject *__Pyx_ImportModule(const char *name); /*proto*/ + +static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); /*proto*/ + +typedef struct { + int code_line; + PyCodeObject* code_object; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); -/* TypeImport.proto */ -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); /*proto*/ -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ -static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto*/ -static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, coco_problem_t *__pyx_v_problem, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args); /* proto*/ /* Module declarations from 'cpython.buffer' */ +/* Module declarations from 'cpython.ref' */ + /* Module declarations from 'libc.string' */ /* Module declarations from 'libc.stdio' */ +/* Module declarations from 'cpython.object' */ + /* Module declarations from '__builtin__' */ /* Module declarations from 'cpython.type' */ static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; -/* Module declarations from 'cpython' */ - -/* Module declarations from 'cpython.object' */ - -/* Module declarations from 'cpython.ref' */ - /* Module declarations from 'libc.stdlib' */ /* Module declarations from 'numpy' */ @@ -1573,295 +1425,19 @@ static __Pyx_TypeInfo __Pyx_TypeInfo_double = { "double", NULL, sizeof(double), int __pyx_module_is_main_cocoex__interface = 0; /* Implementation of 'cocoex.interface' */ +static PyObject *__pyx_builtin_property; static PyObject *__pyx_builtin_TypeError; static PyObject *__pyx_builtin_ValueError; static PyObject *__pyx_builtin_NotImplementedError; static PyObject *__pyx_builtin_enumerate; static PyObject *__pyx_builtin_all; static PyObject *__pyx_builtin_print; +static PyObject *__pyx_builtin_sorted; static PyObject *__pyx_builtin_min; static PyObject *__pyx_builtin_max; static PyObject *__pyx_builtin_StopIteration; static PyObject *__pyx_builtin_RuntimeError; static PyObject *__pyx_builtin_range; -static const char __pyx_k_C[] = "C"; -static const char __pyx_k_d[] = "(%d)"; -static const char __pyx_k_s[] = "s"; -static const char __pyx_k_u[] = "u'"; -static const char __pyx_k_x[] = "x"; -static const char __pyx_k_y[] = "y"; -static const char __pyx_k__2[] = ""; -static const char __pyx_k__8[] = ","; -static const char __pyx_k__9[] = " "; -static const char __pyx_k_id[] = "id"; -static const char __pyx_k_np[] = "np"; -static const char __pyx_k__11[] = "'"; -static const char __pyx_k__12[] = "\""; -static const char __pyx_k__13[] = "{"; -static const char __pyx_k__14[] = "}"; -static const char __pyx_k_all[] = "all"; -static const char __pyx_k_d_d[] = "%d=%d"; -static const char __pyx_k_inf[] = "inf"; -static const char __pyx_k_max[] = "max"; -static const char __pyx_k_min[] = "min"; -static const char __pyx_k_sys[] = "sys"; -static const char __pyx_k_u_2[] = "u\""; -static const char __pyx_k_args[] = "args"; -static const char __pyx_k_bbob[] = "bbob"; -static const char __pyx_k_copy[] = "copy"; -static const char __pyx_k_find[] = "find"; -static const char __pyx_k_free[] = "free"; -static const char __pyx_k_iter[] = "__iter__"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_name[] = "name"; -static const char __pyx_k_ones[] = "ones"; -static const char __pyx_k_send[] = "send"; -static const char __pyx_k_size[] = "size"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_array[] = "array"; -static const char __pyx_k_ascii[] = "ascii"; -static const char __pyx_k_class[] = "__class__"; -static const char __pyx_k_close[] = "close"; -static const char __pyx_k_dtype[] = "dtype"; -static const char __pyx_k_force[] = "force"; -static const char __pyx_k_index[] = "index"; -static const char __pyx_k_level[] = "level"; -static const char __pyx_k_numpy[] = "numpy"; -static const char __pyx_k_order[] = "order"; -static const char __pyx_k_print[] = "print"; -static const char __pyx_k_range[] = "range"; -static const char __pyx_k_reset[] = "reset"; -static const char __pyx_k_split[] = "split"; -static const char __pyx_k_throw[] = "throw"; -static const char __pyx_k_zeros[] = "zeros"; -static const char __pyx_k_append[] = "append"; -static const char __pyx_k_double[] = "double"; -static const char __pyx_k_encode[] = "encode"; -static const char __pyx_k_format[] = "format"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_s_id_r[] = "<%s(), id=%r>"; -static const char __pyx_k_single[] = "single"; -static const char __pyx_k_dealloc[] = "__dealloc__"; -static const char __pyx_k_indices[] = "indices"; -static const char __pyx_k_level_2[] = "_level"; -static const char __pyx_k_options[] = "options"; -static const char __pyx_k_replace[] = "replace"; -static const char __pyx_k_verbose[] = "verbose"; -static const char __pyx_k_warning[] = "warning"; -static const char __pyx_k_function[] = "function"; -static const char __pyx_k_instance[] = "instance"; -static const char __pyx_k_observer[] = "observer"; -static const char __pyx_k_TypeError[] = "TypeError"; -static const char __pyx_k_dimension[] = "dimension"; -static const char __pyx_k_enumerate[] = "enumerate"; -static const char __pyx_k_log_level[] = "log_level"; -static const char __pyx_k_traceback[] = "traceback"; -static const char __pyx_k_ValueError[] = "ValueError"; -static const char __pyx_k_bbob_biobj[] = "bbob-biobj"; -static const char __pyx_k_dimensions[] = "dimensions"; -static const char __pyx_k_evaluation[] = "evaluation"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_suite_name[] = "suite_name"; -static const char __pyx_k_Suite_r_r_r[] = "Suite(%r, %r, %r)"; -static const char __pyx_k_deactivated[] = "deactivated"; -static const char __pyx_k_get_problem[] = "get_problem"; -static const char __pyx_k_initialized[] = "initialized"; -static const char __pyx_k_s_objective[] = "%s-objective"; -static const char __pyx_k_RuntimeError[] = "RuntimeError"; -static const char __pyx_k_Suite___iter[] = "Suite.__iter__"; -static const char __pyx_k_id_s_index_d[] = " id=%s, index=%d"; -static const char __pyx_k_next_problem[] = "next_problem"; -static const char __pyx_k_observe_with[] = "observe_with"; -static const char __pyx_k_StopIteration[] = "StopIteration"; -static const char __pyx_k_s_s_problem_s[] = "%s %s problem (%s)"; -static const char __pyx_k_suite_options[] = "suite_options"; -static const char __pyx_k_exception_type[] = "exception_type"; -static const char __pyx_k_suite_instance[] = "suite_instance"; -static const char __pyx_k_bbob_largescale[] = "bbob-largescale"; -static const char __pyx_k_exception_value[] = "exception_value"; -static const char __pyx_k_bbob_constrained[] = "bbob-constrained"; -static const char __pyx_k_cocoex_interface[] = "cocoex.interface"; -static const char __pyx_k_cocoex_exceptions[] = "cocoex.exceptions"; -static const char __pyx_k_known_suite_names[] = "known_suite_names"; -static const char __pyx_k_Suite_ids_line_384[] = "Suite.ids (line 384)"; -static const char __pyx_k_NotImplementedError[] = "NotImplementedError"; -static const char __pyx_k_known_suite_names_2[] = "_known_suite_names"; -static const char __pyx_k_number_of_variables[] = "number_of_variables"; -static const char __pyx_k_NoSuchSuiteException[] = "NoSuchSuiteException"; -static const char __pyx_k_final_target_fvalue1[] = "final_target_fvalue1"; -static const char __pyx_k_number_of_objectives[] = "number_of_objectives"; -static const char __pyx_k_expect_a_string_got_s[] = "expect a string, got %s"; -static const char __pyx_k_NoSuchProblemException[] = "NoSuchProblemException"; -static const char __pyx_k_InvalidProblemException[] = "InvalidProblemException"; -static const char __pyx_k_finalized_invalid_problem[] = "finalized/invalid problem"; -static const char __pyx_k_No_suite_with_name_s_found[] = "No suite with name '%s' found"; -static const char __pyx_k_Suite_get_problem_line_281[] = "Suite.get_problem (line 281)"; -static const char __pyx_k_Problem_already_initialized[] = "Problem already initialized"; -static const char __pyx_k_finalized_invalid_problem_2[] = ""; -static const char __pyx_k_function_dimension_instance[] = "function: {}, dimension: {}, instance: {}"; -static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous"; -static const char __pyx_k_update_current_observer_global[] = "_update_current_observer_global"; -static const char __pyx_k_Suite_s_s_s_with_d_problem_s_in[] = "Suite(\"%s\", \"%s\", \"%s\") with %d problem%s in dimension%s %s"; -static const char __pyx_k_Users_hansen_git_coco_code_expe[] = "/Users/hansen/git/coco/code-experiments/build/python/cython/interface.pyx"; -static const char __pyx_k_find_problem_ids_has_been_renam[] = "`find_problem_ids()` has been renamed to `ids()`"; -static const char __pyx_k_get_problem_self_id_observer_No[] = "`get_problem(self, id, observer=None)` returns a `Problem` instance,\n by default unobserved, using `id: str` or index (where `id: int`) to\n identify the desired problem.\n\n All values between zero and `len(self) - 1` are valid index values::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> for index in range(len(suite)):\n ... problem = suite.get_problem(index)\n ... # work work work using problem\n ... problem.free()\n\n A shortcut for `suite.get_problem(index)` is `suite[index]`, they are\n synonym.\n\n Details:\n - Here an `index` takes values between 0 and `len(self) - 1` and can in\n principle be different from the problem index in the benchmark suite.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of `get_problem`. Otherwise Python\n might just silently die, which is e.g. a known issue of the \"bbob\"\n observer.\n\n See also `ids`.\n "; -static const char __pyx_k_has_never_been_tested_incomment[] = "has never been tested, incomment this to start testing"; -static const char __pyx_k_ids_id_snippets_get_problem_Fal[] = "`ids(*id_snippets, get_problem=False, verbose=False)`\n return all problem IDs that contain all of the `id_snippets`.\n\n An ID can be used for indexing, that is, when calling the method\n `get_problem(id)`.\n\n If `get_problem is True`, the problem for the first matching ID is\n returned.\n\n >>> import cocoex as ex\n >>> s = ex.Suite(\"bbob\", \"\", \"\")\n >>> s.ids(\"f001\", \"d10\", \"i01\")\n ['bbob_f001_i01_d10']\n\n We can sweep through all instances of the ellipsoidal function f10\n in 20-D of the BBOB suite like this::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> ids = suite.ids(\"f010\", \"d20\")\n >>> used_indices = []\n >>> for p in suite:\n ... if p.id in ids:\n ... # work work work with problem `p`\n ... used_indices.append(p.index)\n >>> print(used_indices)\n [1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589]\n\n A desired problem can also be filtered out during creation::\n\n >>> import cocoex as ex\n >>> f9 = ex.Suite(\"bbob\", \"\",\n ... \"function_indices:9 dimensions:20 instance_indices:1-5\")[0]\n >>> print(f9.id)\n bbob_f009_i01_d20\n\n "; -static const char __pyx_k_not_match_the_problem_dimension[] = "not match the problem dimension `number_of_variables==%d`."; -static const char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)"; -static const char __pyx_k_Dimension_np_size_x_d_of_input_x[] = "Dimension, `np.size(x)==%d`, of input `x` does "; -static const char __pyx_k_Dimension_np_size_y_d_of_input_y[] = "Dimension, `np.size(y)==%d`, of input `y` does "; -static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd"; -static const char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported"; -static const char __pyx_k_Suite_current_index___get___line[] = "Suite.current_index.__get__ (line 437)"; -static const char __pyx_k_Suite_get_problem_by_function_di[] = "Suite.get_problem_by_function_dimension_instance (line 325)"; -static const char __pyx_k_Suite_has_been_finalized_free_ed[] = "Suite has been finalized/free'ed"; -static const char __pyx_k_Unkown_benchmark_suite_name_s_Kn[] = "Unkown benchmark suite name \"%s\".\nKnown suite names are %s.\nIf \"%s\" was not a typo, you can add the desired name to `known_suite_names`::\n\n >> import cocoex as ex\n >> ex.known_suite_names.append(b\"my_name\") # must be a byte string\n >> suite = ex.Suite(\"my_name\", \"\", \"\")\n COCO FATAL ERROR: coco_suite(): unknow problem suite\n\nThis will crash Python, if the suite \"my_name\" does in fact not exist. You might\nalso report back a missing name to https://github.com/numbbo/coco/issues\n"; -static const char __pyx_k_in_Problem__initialize_problem_p[] = "in Problem._initialize(problem,...): problem is NULL"; -static const char __pyx_k_index_in_the_enumerator_of_all_p[] = "index in the enumerator of all problems in this suite.\n\n Details: To get the index in the underlying C implementation, which\n usually matches `current_index` one-to-one, use::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> suite.current_index is None\n True\n >>> suite.next_problem().id[-17:].lower()\n 'bbob_f001_i01_d02'\n >>> suite.current_index, suite.indices[suite.current_index]\n (0, 0)\n\n "; -static const char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous"; -static const char __pyx_k_not_match_the_number_of_objectiv[] = "not match the number of objectives `number_of_objectives==%d`."; -static const char __pyx_k_returns_a_Problem_instance_by_de[] = "returns a `Problem` instance, by default unobserved, using function,\n dimension and instance to identify the desired problem.\n\n If a suite contains multiple problems with the same function, dimension\n and instance, the first corresponding problem is returned.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> problem = suite.get_problem_by_function_dimension_instance(1, 2, 3)\n >>> # work work work using problem\n >>> problem.free()\n\n Details:\n - Function, dimension and instance are integer values from 1 on.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of\n `get_problem_by_function_dimension_instance`. Otherwise Python might\n just silently die, which is e.g. a known issue of the \"bbob\" observer.\n "; -static const char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short."; -static PyObject *__pyx_n_u_C; -static PyObject *__pyx_kp_u_Dimension_np_size_x_d_of_input_x; -static PyObject *__pyx_kp_u_Dimension_np_size_y_d_of_input_y; -static PyObject *__pyx_kp_u_Format_string_allocated_too_shor; -static PyObject *__pyx_kp_u_Format_string_allocated_too_shor_2; -static PyObject *__pyx_n_s_InvalidProblemException; -static PyObject *__pyx_n_s_NoSuchProblemException; -static PyObject *__pyx_n_s_NoSuchSuiteException; -static PyObject *__pyx_kp_u_No_suite_with_name_s_found; -static PyObject *__pyx_kp_u_Non_native_byte_order_not_suppor; -static PyObject *__pyx_n_s_NotImplementedError; -static PyObject *__pyx_kp_u_Problem_already_initialized; -static PyObject *__pyx_n_s_RuntimeError; -static PyObject *__pyx_n_s_StopIteration; -static PyObject *__pyx_n_s_Suite___iter; -static PyObject *__pyx_kp_u_Suite_current_index___get___line; -static PyObject *__pyx_kp_u_Suite_get_problem_by_function_di; -static PyObject *__pyx_kp_u_Suite_get_problem_line_281; -static PyObject *__pyx_kp_u_Suite_has_been_finalized_free_ed; -static PyObject *__pyx_kp_u_Suite_ids_line_384; -static PyObject *__pyx_kp_u_Suite_r_r_r; -static PyObject *__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in; -static PyObject *__pyx_n_s_TypeError; -static PyObject *__pyx_kp_u_Unkown_benchmark_suite_name_s_Kn; -static PyObject *__pyx_kp_s_Users_hansen_git_coco_code_expe; -static PyObject *__pyx_n_s_ValueError; -static PyObject *__pyx_kp_u__11; -static PyObject *__pyx_kp_u__12; -static PyObject *__pyx_kp_u__13; -static PyObject *__pyx_kp_u__14; -static PyObject *__pyx_kp_u__2; -static PyObject *__pyx_kp_u__8; -static PyObject *__pyx_kp_u__9; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_append; -static PyObject *__pyx_n_s_args; -static PyObject *__pyx_n_s_array; -static PyObject *__pyx_n_u_ascii; -static PyObject *__pyx_n_b_bbob; -static PyObject *__pyx_kp_b_bbob_biobj; -static PyObject *__pyx_kp_b_bbob_constrained; -static PyObject *__pyx_kp_b_bbob_largescale; -static PyObject *__pyx_n_s_class; -static PyObject *__pyx_n_s_close; -static PyObject *__pyx_n_s_cocoex_exceptions; -static PyObject *__pyx_n_s_cocoex_interface; -static PyObject *__pyx_n_s_copy; -static PyObject *__pyx_kp_u_d; -static PyObject *__pyx_kp_u_d_d; -static PyObject *__pyx_n_u_deactivated; -static PyObject *__pyx_n_s_dealloc; -static PyObject *__pyx_n_s_dimension; -static PyObject *__pyx_n_s_dimensions; -static PyObject *__pyx_n_s_double; -static PyObject *__pyx_n_s_dtype; -static PyObject *__pyx_n_s_encode; -static PyObject *__pyx_n_s_enumerate; -static PyObject *__pyx_n_s_evaluation; -static PyObject *__pyx_n_s_exception_type; -static PyObject *__pyx_n_s_exception_value; -static PyObject *__pyx_kp_u_expect_a_string_got_s; -static PyObject *__pyx_n_s_final_target_fvalue1; -static PyObject *__pyx_kp_u_finalized_invalid_problem; -static PyObject *__pyx_kp_u_finalized_invalid_problem_2; -static PyObject *__pyx_n_s_find; -static PyObject *__pyx_kp_u_find_problem_ids_has_been_renam; -static PyObject *__pyx_n_s_force; -static PyObject *__pyx_n_s_format; -static PyObject *__pyx_n_s_free; -static PyObject *__pyx_n_s_function; -static PyObject *__pyx_kp_u_function_dimension_instance; -static PyObject *__pyx_n_s_get_problem; -static PyObject *__pyx_kp_u_get_problem_self_id_observer_No; -static PyObject *__pyx_kp_u_has_never_been_tested_incomment; -static PyObject *__pyx_n_s_id; -static PyObject *__pyx_kp_u_id_s_index_d; -static PyObject *__pyx_kp_u_ids_id_snippets_get_problem_Fal; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_kp_u_in_Problem__initialize_problem_p; -static PyObject *__pyx_n_s_index; -static PyObject *__pyx_kp_u_index_in_the_enumerator_of_all_p; -static PyObject *__pyx_n_s_indices; -static PyObject *__pyx_n_s_inf; -static PyObject *__pyx_n_u_initialized; -static PyObject *__pyx_n_s_instance; -static PyObject *__pyx_n_s_iter; -static PyObject *__pyx_n_s_known_suite_names; -static PyObject *__pyx_n_s_known_suite_names_2; -static PyObject *__pyx_n_s_level; -static PyObject *__pyx_n_s_level_2; -static PyObject *__pyx_n_s_log_level; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_max; -static PyObject *__pyx_n_s_min; -static PyObject *__pyx_n_s_name; -static PyObject *__pyx_kp_u_ndarray_is_not_C_contiguous; -static PyObject *__pyx_kp_u_ndarray_is_not_Fortran_contiguou; -static PyObject *__pyx_n_s_next_problem; -static PyObject *__pyx_kp_u_not_match_the_number_of_objectiv; -static PyObject *__pyx_kp_u_not_match_the_problem_dimension; -static PyObject *__pyx_n_s_np; -static PyObject *__pyx_n_s_number_of_objectives; -static PyObject *__pyx_n_s_number_of_variables; -static PyObject *__pyx_n_s_numpy; -static PyObject *__pyx_n_s_observe_with; -static PyObject *__pyx_n_s_observer; -static PyObject *__pyx_n_s_ones; -static PyObject *__pyx_n_s_options; -static PyObject *__pyx_n_s_order; -static PyObject *__pyx_n_s_print; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_n_s_range; -static PyObject *__pyx_n_s_replace; -static PyObject *__pyx_n_s_reset; -static PyObject *__pyx_kp_u_returns_a_Problem_instance_by_de; -static PyObject *__pyx_n_u_s; -static PyObject *__pyx_kp_u_s_id_r; -static PyObject *__pyx_kp_u_s_objective; -static PyObject *__pyx_kp_u_s_s_problem_s; -static PyObject *__pyx_n_s_send; -static PyObject *__pyx_n_u_single; -static PyObject *__pyx_n_s_size; -static PyObject *__pyx_n_s_split; -static PyObject *__pyx_n_s_suite_instance; -static PyObject *__pyx_n_s_suite_name; -static PyObject *__pyx_n_s_suite_options; -static PyObject *__pyx_n_s_sys; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_throw; -static PyObject *__pyx_n_s_traceback; -static PyObject *__pyx_kp_u_u; -static PyObject *__pyx_kp_u_u_2; -static PyObject *__pyx_kp_u_unknown_dtype_code_in_numpy_pxd; -static PyObject *__pyx_n_s_update_current_observer_global; -static PyObject *__pyx_n_s_verbose; -static PyObject *__pyx_n_u_warning; -static PyObject *__pyx_n_s_x; -static PyObject *__pyx_n_s_y; -static PyObject *__pyx_n_s_zeros; static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, PyObject *__pyx_v_suite_name, PyObject *__pyx_v_suite_instance, PyObject *__pyx_v_suite_options); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, PyObject *__pyx_v_observer); /* proto */ @@ -1872,28 +1448,28 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, PyObject *__pyx_v_get_problem, PyObject *__pyx_v_verbose, PyObject *__pyx_v_id_snippets); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20current_problem(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22current_index(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_24problem_names(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26dimensions(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_28number_of_objectives(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_30indices(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_32name(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_34instance(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_36options(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_38info(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_40__repr__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_42__str__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_44__len__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_46__iter__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_options); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer_global(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self, PyObject *__pyx_v_problem); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ -static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6name(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_8options(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_10state(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_12free(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ +static void __pyx_pf_6cocoex_9interface_8Observer_14__dealloc__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_arx); /* proto */ @@ -1901,30 +1477,30 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_observer); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_observer); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_x); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_17list_of_observers___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16list_of_observers(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20final_target_fvalue1___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14free(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_force); /* proto */ -static void __pyx_pf_6cocoex_9interface_7Problem_16__dealloc__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_x); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__repr__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__enter__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__exit__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18dimension(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22number_of_constraints(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24lower_bounds(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26upper_bounds(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28evaluations(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30final_target_hit(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32final_target_fvalue1(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_34best_observed_fvalue1(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36free(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_force); /* proto */ +static void __pyx_pf_6cocoex_9interface_7Problem_38__dealloc__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_x); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_42id(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_44name(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_46index(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_48suite(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_50info(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_52__str__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_54__repr__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_56__enter__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_58__exit__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ static int __pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds_2__set__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ static int __pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds_4__del__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ @@ -1938,31 +1514,363 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Suite(PyTypeObject *t, PyObject static PyObject *__pyx_tp_new_6cocoex_9interface_Observer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_6cocoex_9interface_Problem(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_6cocoex_9interface___pyx_scope_struct____iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static char __pyx_k_2[] = "expect a string, got %s"; +static char __pyx_k_3[] = ""; +static char __pyx_k_4[] = "NoSuchSuiteException"; +static char __pyx_k_5[] = "Unkown benchmark suite name \"%s\".\nKnown suite names are %s.\nIf \"%s\" was not a typo, you can add the desired name to `known_suite_names`::\n\n >> import cocoex as ex\n >> ex.known_suite_names.append(b\"my_name\") # must be a byte string\n >> suite = ex.Suite(\"my_name\", \"\", \"\")\n COCO FATAL ERROR: coco_suite(): unknow problem suite\n\nThis will crash Python, if the suite \"my_name\" does in fact not exist. You might\nalso report back a missing name to https://github.com/numbbo/coco/issues\n"; +static char __pyx_k_6[] = "No suite with name '%s' found"; +static char __pyx_k_8[] = "Suite has been finalized/free'ed"; +static char __pyx_k_11[] = "NoSuchProblemException"; +static char __pyx_k_13[] = "function: {}, dimension: {}, instance: {}"; +static char __pyx_k_14[] = "`find_problem_ids()` has been renamed to `ids()`"; +static char __pyx_k_18[] = " id=%s, index=%d"; +static char __pyx_k_19[] = "Suite(%r, %r, %r)"; +static char __pyx_k_20[] = "Suite(\"%s\", \"%s\", \"%s\") with %d problem%s in dimension%s %s"; +static char __pyx_k_21[] = "%d=%d"; +static char __pyx_k_22[] = ","; +static char __pyx_k_23[] = " "; +static char __pyx_k_25[] = "u'"; +static char __pyx_k_26[] = "u\""; +static char __pyx_k_27[] = "'"; +static char __pyx_k_28[] = "\""; +static char __pyx_k_29[] = "{"; +static char __pyx_k_30[] = "}"; +static char __pyx_k_34[] = "Problem already initialized"; +static char __pyx_k_36[] = "in Problem._initialize(problem,...): problem is NULL"; +static char __pyx_k_38[] = "has never been tested, incomment this to start testing"; +static char __pyx_k_41[] = "number_of_objectives"; +static char __pyx_k_42[] = "Dimension, `np.size(y)==%d`, of input `y` does "; +static char __pyx_k_43[] = "not match the number of objectives `number_of_objectives==%d`."; +static char __pyx_k_44[] = "InvalidProblemException"; +static char __pyx_k_45[] = "_update_current_observer_global"; +static char __pyx_k_46[] = "final_target_fvalue1"; +static char __pyx_k_48[] = "Dimension, `np.size(x)==%d`, of input `x` does "; +static char __pyx_k_49[] = "not match the problem dimension `number_of_variables==%d`."; +static char __pyx_k_50[] = "%s-objective"; +static char __pyx_k_51[] = "%s %s problem (%s)"; +static char __pyx_k_52[] = "(%d)"; +static char __pyx_k_53[] = "finalized/invalid problem"; +static char __pyx_k_54[] = "<%s(), id=%r>"; +static char __pyx_k_56[] = ""; +static char __pyx_k_57[] = "ndarray is not C contiguous"; +static char __pyx_k_59[] = "ndarray is not Fortran contiguous"; +static char __pyx_k_61[] = "Non-native byte order not supported"; +static char __pyx_k_63[] = "unknown dtype code in numpy.pxd (%d)"; +static char __pyx_k_64[] = "Format string allocated too short, see comment in numpy.pxd"; +static char __pyx_k_67[] = "Format string allocated too short."; +static char __pyx_k_69[] = "Number of variables this problem instance expects as input."; +static char __pyx_k_70[] = "cocoex.exceptions"; +static char __pyx_k_71[] = "bbob-biobj"; +static char __pyx_k_72[] = "bbob-largescale"; +static char __pyx_k_73[] = "bbob-constrained"; +static char __pyx_k_74[] = "number_of_constraints"; +static char __pyx_k_75[] = "best_observed_fvalue1"; +static char __pyx_k_78[] = "/Users/wassimaitelhara/svn/numbbo_github/numbbo/code-experiments/build/python/cython/interface.pyx"; +static char __pyx_k_79[] = "cocoex.interface"; +static char __pyx_k_80[] = "Suite.get_problem (line 281)"; +static char __pyx_k_81[] = "`get_problem(self, id, observer=None)` returns a `Problem` instance,\n by default unobserved, using `id: str` or index (where `id: int`) to\n identify the desired problem.\n\n All values between zero and `len(self) - 1` are valid index values::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> for index in range(len(suite)):\n ... problem = suite.get_problem(index)\n ... # work work work using problem\n ... problem.free()\n\n A shortcut for `suite.get_problem(index)` is `suite[index]`, they are\n synonym.\n\n Details:\n - Here an `index` takes values between 0 and `len(self) - 1` and can in\n principle be different from the problem index in the benchmark suite.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of `get_problem`. Otherwise Python\n might just silently die, which is e.g. a known issue of the \"bbob\"\n observer.\n\n See also `ids`.\n "; +static char __pyx_k_82[] = "Suite.get_problem_by_function_dimension_instance (line 325)"; +static char __pyx_k_83[] = "returns a `Problem` instance, by default unobserved, using function,\n dimension and instance to identify the desired problem.\n\n If a suite contains multiple problems with the same function, dimension\n and instance, the first corresponding problem is returned.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> problem = suite.get_problem_by_function_dimension_instance(1, 2, 3)\n >>> # work work work using problem\n >>> problem.free()\n\n Details:\n - Function, dimension and instance are integer values from 1 on.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of\n `get_problem_by_function_dimension_instance`. Otherwise Python might\n just silently die, which is e.g. a known issue of the \"bbob\" observer.\n "; +static char __pyx_k_84[] = "Suite.ids (line 384)"; +static char __pyx_k_85[] = "`ids(*id_snippets, get_problem=False, verbose=False)`\n return all problem IDs that contain all of the `id_snippets`.\n\n An ID can be used for indexing, that is, when calling the method\n `get_problem(id)`.\n\n If `get_problem is True`, the problem for the first matching ID is\n returned.\n\n >>> import cocoex as ex\n >>> s = ex.Suite(\"bbob\", \"\", \"\")\n >>> s.ids(\"f001\", \"d10\", \"i01\")\n ['bbob_f001_i01_d10']\n\n We can sweep through all instances of the ellipsoidal function f10\n in 20-D of the BBOB suite like this::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> ids = suite.ids(\"f010\", \"d20\")\n >>> used_indices = []\n >>> for p in suite:\n ... if p.id in ids:\n ... # work work work with problem `p`\n ... used_indices.append(p.index)\n >>> print(used_indices)\n [1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589]\n\n A desired problem can also be filtered out during creation::\n\n >>> import cocoex as ex\n >>> f9 = ex.Suite(\"bbob\", \"\",\n ... \"function_indices:9 dimensions:20 instance_indices:1-5\")[0]\n >>> print(f9.id)\n bbob_f009_i01_d20\n\n "; +static char __pyx_k_86[] = "Suite.current_index (line 437)"; +static char __pyx_k_87[] = "index in the enumerator of all problems in this suite.\n\n Details: To get the index in the underlying C implementation, which\n usually matches `current_index` one-to-one, use::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> suite.current_index is None\n True\n >>> suite.next_problem().id[-17:].lower()\n 'bbob_f001_i01_d02'\n >>> suite.current_index, suite.indices[suite.current_index]\n (0, 0)\n\n "; +static char __pyx_k__B[] = "B"; +static char __pyx_k__C[] = "C"; +static char __pyx_k__H[] = "H"; +static char __pyx_k__I[] = "I"; +static char __pyx_k__L[] = "L"; +static char __pyx_k__O[] = "O"; +static char __pyx_k__Q[] = "Q"; +static char __pyx_k__b[] = "b"; +static char __pyx_k__d[] = "d"; +static char __pyx_k__f[] = "f"; +static char __pyx_k__g[] = "g"; +static char __pyx_k__h[] = "h"; +static char __pyx_k__i[] = "i"; +static char __pyx_k__l[] = "l"; +static char __pyx_k__q[] = "q"; +static char __pyx_k__s[] = "s"; +static char __pyx_k__x[] = "x"; +static char __pyx_k__y[] = "y"; +static char __pyx_k__Zd[] = "Zd"; +static char __pyx_k__Zf[] = "Zf"; +static char __pyx_k__Zg[] = "Zg"; +static char __pyx_k__id[] = "id"; +static char __pyx_k__np[] = "np"; +static char __pyx_k__all[] = "all"; +static char __pyx_k__inf[] = "inf"; +static char __pyx_k__max[] = "max"; +static char __pyx_k__min[] = "min"; +static char __pyx_k__sys[] = "sys"; +static char __pyx_k__args[] = "args"; +static char __pyx_k__bbob[] = "bbob"; +static char __pyx_k__copy[] = "copy"; +static char __pyx_k__find[] = "find"; +static char __pyx_k__free[] = "free"; +static char __pyx_k__info[] = "info"; +static char __pyx_k__name[] = "name"; +static char __pyx_k__ones[] = "ones"; +static char __pyx_k__send[] = "send"; +static char __pyx_k__size[] = "size"; +static char __pyx_k__array[] = "array"; +static char __pyx_k__ascii[] = "ascii"; +static char __pyx_k__close[] = "close"; +static char __pyx_k__dtype[] = "dtype"; +static char __pyx_k__force[] = "force"; +static char __pyx_k__index[] = "index"; +static char __pyx_k__level[] = "level"; +static char __pyx_k__numpy[] = "numpy"; +static char __pyx_k__order[] = "order"; +static char __pyx_k__print[] = "print"; +static char __pyx_k__range[] = "range"; +static char __pyx_k__reset[] = "reset"; +static char __pyx_k__split[] = "split"; +static char __pyx_k__state[] = "state"; +static char __pyx_k__suite[] = "suite"; +static char __pyx_k__throw[] = "throw"; +static char __pyx_k__zeros[] = "zeros"; +static char __pyx_k___level[] = "_level"; +static char __pyx_k__append[] = "append"; +static char __pyx_k__double[] = "double"; +static char __pyx_k__encode[] = "encode"; +static char __pyx_k__format[] = "format"; +static char __pyx_k__single[] = "single"; +static char __pyx_k__sorted[] = "sorted"; +static char __pyx_k__indices[] = "indices"; +static char __pyx_k__options[] = "options"; +static char __pyx_k__replace[] = "replace"; +static char __pyx_k__verbose[] = "verbose"; +static char __pyx_k__warning[] = "warning"; +static char __pyx_k____main__[] = "__main__"; +static char __pyx_k____test__[] = "__test__"; +static char __pyx_k__function[] = "function"; +static char __pyx_k__instance[] = "instance"; +static char __pyx_k__observer[] = "observer"; +static char __pyx_k__property[] = "property"; +static char __pyx_k__TypeError[] = "TypeError"; +static char __pyx_k____class__[] = "__class__"; +static char __pyx_k__dimension[] = "dimension"; +static char __pyx_k__enumerate[] = "enumerate"; +static char __pyx_k__log_level[] = "log_level"; +static char __pyx_k__traceback[] = "traceback"; +static char __pyx_k__ValueError[] = "ValueError"; +static char __pyx_k____import__[] = "__import__"; +static char __pyx_k__dimensions[] = "dimensions"; +static char __pyx_k__evaluation[] = "evaluation"; +static char __pyx_k__suite_name[] = "suite_name"; +static char __pyx_k____dealloc__[] = "__dealloc__"; +static char __pyx_k__deactivated[] = "deactivated"; +static char __pyx_k__evaluations[] = "evaluations"; +static char __pyx_k__get_problem[] = "get_problem"; +static char __pyx_k__initialized[] = "initialized"; +static char __pyx_k__RuntimeError[] = "RuntimeError"; +static char __pyx_k__lower_bounds[] = "lower_bounds"; +static char __pyx_k__next_problem[] = "next_problem"; +static char __pyx_k__observe_with[] = "observe_with"; +static char __pyx_k__upper_bounds[] = "upper_bounds"; +static char __pyx_k__StopIteration[] = "StopIteration"; +static char __pyx_k__current_index[] = "current_index"; +static char __pyx_k__problem_names[] = "problem_names"; +static char __pyx_k__suite_options[] = "suite_options"; +static char __pyx_k__exception_type[] = "exception_type"; +static char __pyx_k__suite_instance[] = "suite_instance"; +static char __pyx_k____pyx_getbuffer[] = "__pyx_getbuffer"; +static char __pyx_k__current_problem[] = "current_problem"; +static char __pyx_k__exception_value[] = "exception_value"; +static char __pyx_k__final_target_hit[] = "final_target_hit"; +static char __pyx_k__initial_solution[] = "initial_solution"; +static char __pyx_k__known_suite_names[] = "known_suite_names"; +static char __pyx_k__list_of_observers[] = "list_of_observers"; +static char __pyx_k___known_suite_names[] = "_known_suite_names"; +static char __pyx_k__NotImplementedError[] = "NotImplementedError"; +static char __pyx_k____pyx_releasebuffer[] = "__pyx_releasebuffer"; +static char __pyx_k__number_of_variables[] = "number_of_variables"; +static PyObject *__pyx_n_s_11; +static PyObject *__pyx_kp_u_13; +static PyObject *__pyx_kp_u_14; +static PyObject *__pyx_kp_u_18; +static PyObject *__pyx_kp_u_19; +static PyObject *__pyx_kp_u_2; +static PyObject *__pyx_kp_u_20; +static PyObject *__pyx_kp_u_21; +static PyObject *__pyx_kp_u_22; +static PyObject *__pyx_kp_u_23; +static PyObject *__pyx_kp_u_25; +static PyObject *__pyx_kp_u_26; +static PyObject *__pyx_kp_u_27; +static PyObject *__pyx_kp_u_28; +static PyObject *__pyx_kp_u_29; +static PyObject *__pyx_kp_u_3; +static PyObject *__pyx_kp_u_30; +static PyObject *__pyx_kp_u_34; +static PyObject *__pyx_kp_u_36; +static PyObject *__pyx_kp_u_38; +static PyObject *__pyx_n_s_4; +static PyObject *__pyx_n_s_41; +static PyObject *__pyx_kp_u_42; +static PyObject *__pyx_kp_u_43; +static PyObject *__pyx_n_s_44; +static PyObject *__pyx_n_s_45; +static PyObject *__pyx_n_s_46; +static PyObject *__pyx_kp_u_48; +static PyObject *__pyx_kp_u_49; +static PyObject *__pyx_kp_u_5; +static PyObject *__pyx_kp_u_50; +static PyObject *__pyx_kp_u_51; +static PyObject *__pyx_kp_u_52; +static PyObject *__pyx_kp_u_53; +static PyObject *__pyx_kp_u_54; +static PyObject *__pyx_kp_u_56; +static PyObject *__pyx_kp_u_57; +static PyObject *__pyx_kp_u_59; +static PyObject *__pyx_kp_u_6; +static PyObject *__pyx_kp_u_61; +static PyObject *__pyx_kp_u_63; +static PyObject *__pyx_kp_u_64; +static PyObject *__pyx_kp_u_67; +static PyObject *__pyx_n_s_70; +static PyObject *__pyx_kp_b_71; +static PyObject *__pyx_kp_b_72; +static PyObject *__pyx_kp_b_73; +static PyObject *__pyx_n_s_74; +static PyObject *__pyx_n_s_75; +static PyObject *__pyx_kp_s_78; +static PyObject *__pyx_n_s_79; +static PyObject *__pyx_kp_u_8; +static PyObject *__pyx_kp_u_80; +static PyObject *__pyx_kp_u_81; +static PyObject *__pyx_kp_u_82; +static PyObject *__pyx_kp_u_83; +static PyObject *__pyx_kp_u_84; +static PyObject *__pyx_kp_u_85; +static PyObject *__pyx_kp_u_86; +static PyObject *__pyx_kp_u_87; +static PyObject *__pyx_n_u__C; +static PyObject *__pyx_n_s__NotImplementedError; +static PyObject *__pyx_n_s__RuntimeError; +static PyObject *__pyx_n_s__StopIteration; +static PyObject *__pyx_n_s__TypeError; +static PyObject *__pyx_n_s__ValueError; +static PyObject *__pyx_n_s____class__; +static PyObject *__pyx_n_s____dealloc__; +static PyObject *__pyx_n_s____import__; +static PyObject *__pyx_n_s____main__; +static PyObject *__pyx_n_s____pyx_getbuffer; +static PyObject *__pyx_n_s____pyx_releasebuffer; +static PyObject *__pyx_n_s____test__; +static PyObject *__pyx_n_s___known_suite_names; +static PyObject *__pyx_n_s___level; +static PyObject *__pyx_n_s__all; +static PyObject *__pyx_n_s__append; +static PyObject *__pyx_n_s__args; +static PyObject *__pyx_n_s__array; +static PyObject *__pyx_n_u__ascii; +static PyObject *__pyx_n_b__bbob; +static PyObject *__pyx_n_s__close; +static PyObject *__pyx_n_s__copy; +static PyObject *__pyx_n_s__current_index; +static PyObject *__pyx_n_s__current_problem; +static PyObject *__pyx_n_u__deactivated; +static PyObject *__pyx_n_s__dimension; +static PyObject *__pyx_n_s__dimensions; +static PyObject *__pyx_n_s__double; +static PyObject *__pyx_n_s__dtype; +static PyObject *__pyx_n_s__encode; +static PyObject *__pyx_n_s__enumerate; +static PyObject *__pyx_n_s__evaluation; +static PyObject *__pyx_n_s__evaluations; +static PyObject *__pyx_n_s__exception_type; +static PyObject *__pyx_n_s__exception_value; +static PyObject *__pyx_n_s__final_target_hit; +static PyObject *__pyx_n_s__find; +static PyObject *__pyx_n_s__force; +static PyObject *__pyx_n_s__format; +static PyObject *__pyx_n_s__free; +static PyObject *__pyx_n_s__function; +static PyObject *__pyx_n_s__get_problem; +static PyObject *__pyx_n_s__id; +static PyObject *__pyx_n_s__index; +static PyObject *__pyx_n_s__indices; +static PyObject *__pyx_n_s__inf; +static PyObject *__pyx_n_s__info; +static PyObject *__pyx_n_s__initial_solution; +static PyObject *__pyx_n_u__initialized; +static PyObject *__pyx_n_s__instance; +static PyObject *__pyx_n_s__known_suite_names; +static PyObject *__pyx_n_s__level; +static PyObject *__pyx_n_s__list_of_observers; +static PyObject *__pyx_n_s__log_level; +static PyObject *__pyx_n_s__lower_bounds; +static PyObject *__pyx_n_s__max; +static PyObject *__pyx_n_s__min; +static PyObject *__pyx_n_s__name; +static PyObject *__pyx_n_s__next_problem; +static PyObject *__pyx_n_s__np; +static PyObject *__pyx_n_s__number_of_variables; +static PyObject *__pyx_n_s__numpy; +static PyObject *__pyx_n_s__observe_with; +static PyObject *__pyx_n_s__observer; +static PyObject *__pyx_n_s__ones; +static PyObject *__pyx_n_s__options; +static PyObject *__pyx_n_s__order; +static PyObject *__pyx_n_s__print; +static PyObject *__pyx_n_s__problem_names; +static PyObject *__pyx_n_s__property; +static PyObject *__pyx_n_s__range; +static PyObject *__pyx_n_s__replace; +static PyObject *__pyx_n_s__reset; +static PyObject *__pyx_n_u__s; +static PyObject *__pyx_n_s__send; +static PyObject *__pyx_n_u__single; +static PyObject *__pyx_n_s__size; +static PyObject *__pyx_n_s__sorted; +static PyObject *__pyx_n_s__split; +static PyObject *__pyx_n_s__state; +static PyObject *__pyx_n_s__suite; +static PyObject *__pyx_n_s__suite_instance; +static PyObject *__pyx_n_s__suite_name; +static PyObject *__pyx_n_s__suite_options; +static PyObject *__pyx_n_s__sys; +static PyObject *__pyx_n_s__throw; +static PyObject *__pyx_n_s__traceback; +static PyObject *__pyx_n_s__upper_bounds; +static PyObject *__pyx_n_s__verbose; +static PyObject *__pyx_n_u__warning; +static PyObject *__pyx_n_s__x; +static PyObject *__pyx_n_s__y; +static PyObject *__pyx_n_s__zeros; static PyObject *__pyx_int_0; static PyObject *__pyx_int_1; static PyObject *__pyx_int_neg_1; static PyObject *__pyx_int_neg_2; -static PyObject *__pyx_tuple_; -static PyObject *__pyx_tuple__3; -static PyObject *__pyx_tuple__4; -static PyObject *__pyx_tuple__5; -static PyObject *__pyx_tuple__6; -static PyObject *__pyx_tuple__7; -static PyObject *__pyx_slice__20; -static PyObject *__pyx_tuple__10; -static PyObject *__pyx_tuple__15; -static PyObject *__pyx_tuple__16; -static PyObject *__pyx_tuple__17; -static PyObject *__pyx_tuple__18; -static PyObject *__pyx_tuple__19; -static PyObject *__pyx_tuple__21; -static PyObject *__pyx_tuple__22; -static PyObject *__pyx_tuple__23; -static PyObject *__pyx_tuple__24; -static PyObject *__pyx_tuple__25; -static PyObject *__pyx_tuple__26; -static PyObject *__pyx_tuple__27; -static PyObject *__pyx_codeobj__28; +static PyObject *__pyx_int_15; +static PyObject *__pyx_k_16; +static PyObject *__pyx_k_17; +static PyObject *__pyx_k_32; +static PyObject *__pyx_k_33; +static PyObject *__pyx_k_47; +static PyObject *__pyx_k_tuple_1; +static PyObject *__pyx_k_tuple_7; +static PyObject *__pyx_k_tuple_9; +static PyObject *__pyx_k_slice_55; +static PyObject *__pyx_k_tuple_10; +static PyObject *__pyx_k_tuple_12; +static PyObject *__pyx_k_tuple_15; +static PyObject *__pyx_k_tuple_24; +static PyObject *__pyx_k_tuple_31; +static PyObject *__pyx_k_tuple_35; +static PyObject *__pyx_k_tuple_37; +static PyObject *__pyx_k_tuple_39; +static PyObject *__pyx_k_tuple_40; +static PyObject *__pyx_k_tuple_58; +static PyObject *__pyx_k_tuple_60; +static PyObject *__pyx_k_tuple_62; +static PyObject *__pyx_k_tuple_65; +static PyObject *__pyx_k_tuple_66; +static PyObject *__pyx_k_tuple_68; +static PyObject *__pyx_k_tuple_76; +static PyObject *__pyx_k_codeobj_77; /* "cython/interface.pyx":64 * int coco_problem_final_target_hit(const coco_problem_t *problem) @@ -1976,9 +1884,11 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; - int __pyx_t_2; + PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_bstring", 0); /* "cython/interface.pyx":65 @@ -1988,9 +1898,8 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * return s * elif isinstance(s, unicode): */ - __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_s)) == ((PyObject *)(&PyBytes_Type))); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { + __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_s)) == ((PyObject *)((PyObject*)(&PyBytes_Type)))); + if (__pyx_t_1) { /* "cython/interface.pyx":66 * cdef bytes _bstring(s): @@ -1999,19 +1908,12 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * elif isinstance(s, unicode): * return s.encode('ascii') */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject*)__pyx_v_s)); + __Pyx_XDECREF(((PyObject *)__pyx_r)); + __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_v_s))); __pyx_r = ((PyObject*)__pyx_v_s); goto __pyx_L0; - - /* "cython/interface.pyx":65 - * - * cdef bytes _bstring(s): - * if type(s) is bytes: # <<<<<<<<<<<<<< - * return s - * elif isinstance(s, unicode): - */ - } + goto __pyx_L3; + } /* "cython/interface.pyx":67 * if type(s) is bytes: @@ -2020,8 +1922,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * return s.encode('ascii') * else: */ - __pyx_t_2 = PyUnicode_Check(__pyx_v_s); - __pyx_t_1 = (__pyx_t_2 != 0); + __pyx_t_1 = PyUnicode_Check(__pyx_v_s); if (__pyx_t_1) { /* "cython/interface.pyx":68 @@ -2031,70 +1932,57 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * else: * raise TypeError("expect a string, got %s" % str(type(s))) */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_XDECREF(((PyObject *)__pyx_r)); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s__encode); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 68, __pyx_L1_error) - __pyx_r = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_r = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; goto __pyx_L0; - - /* "cython/interface.pyx":67 - * if type(s) is bytes: - * return s - * elif isinstance(s, unicode): # <<<<<<<<<<<<<< - * return s.encode('ascii') - * else: - */ + goto __pyx_L3; } + /*else*/ { - /* "cython/interface.pyx":70 + /* "cython/interface.pyx":70 * return s.encode('ascii') * else: * raise TypeError("expect a string, got %s" % str(type(s))) # <<<<<<<<<<<<<< * * cdef coco_observer_t* _current_observer */ - /*else*/ { - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_s))); + PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(__pyx_v_s))); __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_s))); - PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(__pyx_v_s))); - __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_expect_a_string_got_s, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) + __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_2), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_3)); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_3)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); + __pyx_t_3 = 0; + __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 70, __pyx_L1_error) + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } + __pyx_L3:; - /* "cython/interface.pyx":64 - * int coco_problem_final_target_hit(const coco_problem_t *problem) - * - * cdef bytes _bstring(s): # <<<<<<<<<<<<<< - * if type(s) is bytes: - * return s - */ - - /* function exit code */ + __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface._bstring", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -2103,25 +1991,20 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { return __pyx_r; } -/* "cython/interface.pyx":186 - * cdef initialized - * - * def __cinit__(self, suite_name, suite_instance, suite_options): # <<<<<<<<<<<<<< - * cdef np.npy_intp shape[1] # probably completely useless - * self._name = _bstring(suite_name) - */ - /* Python wrapper */ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_suite_name = 0; PyObject *__pyx_v_suite_instance = 0; PyObject *__pyx_v_suite_options = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_suite_name,&__pyx_n_s_suite_instance,&__pyx_n_s_suite_options,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__suite_name,&__pyx_n_s__suite_instance,&__pyx_n_s__suite_options,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -2136,21 +2019,21 @@ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_name)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__suite_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_instance)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__suite_instance)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(0, 186, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: - if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_options)) != 0)) kw_args--; + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__suite_options)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(0, 186, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 186, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -2165,25 +2048,34 @@ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 186, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_5Suite___cinit__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), __pyx_v_suite_name, __pyx_v_suite_instance, __pyx_v_suite_options); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":186 + * cdef initialized + * + * def __cinit__(self, suite_name, suite_instance, suite_options): # <<<<<<<<<<<<<< + * cdef np.npy_intp shape[1] # probably completely useless + * self._name = _bstring(suite_name) + */ + static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, PyObject *__pyx_v_suite_name, PyObject *__pyx_v_suite_instance, PyObject *__pyx_v_suite_options) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__cinit__", 0); /* "cython/interface.pyx":188 @@ -2193,11 +2085,11 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex * self._instance = _bstring(suite_instance if suite_instance is not None else "") * self._options = _bstring(suite_options if suite_options is not None else "") */ - __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_suite_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error) + __pyx_t_1 = ((PyObject *)__pyx_f_6cocoex_9interface__bstring(__pyx_v_suite_name)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_name); - __Pyx_DECREF(__pyx_v_self->_name); + __Pyx_DECREF(((PyObject *)__pyx_v_self->_name)); __pyx_v_self->_name = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; @@ -2209,19 +2101,19 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex * self._current_problem = NULL */ __pyx_t_2 = (__pyx_v_suite_instance != Py_None); - if ((__pyx_t_2 != 0)) { + if (__pyx_t_2) { __Pyx_INCREF(__pyx_v_suite_instance); __pyx_t_1 = __pyx_v_suite_instance; } else { - __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_1 = __pyx_kp_u__2; + __Pyx_INCREF(((PyObject *)__pyx_kp_u_3)); + __pyx_t_1 = ((PyObject *)__pyx_kp_u_3); } - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 189, __pyx_L1_error) + __pyx_t_3 = ((PyObject *)__pyx_f_6cocoex_9interface__bstring(__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_instance); - __Pyx_DECREF(__pyx_v_self->_instance); + __Pyx_DECREF(((PyObject *)__pyx_v_self->_instance)); __pyx_v_self->_instance = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; @@ -2233,19 +2125,19 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex * self.current_problem_ = None */ __pyx_t_2 = (__pyx_v_suite_options != Py_None); - if ((__pyx_t_2 != 0)) { + if (__pyx_t_2) { __Pyx_INCREF(__pyx_v_suite_options); __pyx_t_3 = __pyx_v_suite_options; } else { - __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_3 = __pyx_kp_u__2; + __Pyx_INCREF(((PyObject *)__pyx_kp_u_3)); + __pyx_t_3 = ((PyObject *)__pyx_kp_u_3); } - __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error) + __pyx_t_1 = ((PyObject *)__pyx_f_6cocoex_9interface__bstring(__pyx_t_3)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_options); - __Pyx_DECREF(__pyx_v_self->_options); + __Pyx_DECREF(((PyObject *)__pyx_v_self->_options)); __pyx_v_self->_options = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; @@ -2291,11 +2183,13 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex * self._initialize() * assert self.initialized */ - __Pyx_INCREF(Py_False); - __Pyx_GIVEREF(Py_False); + __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->initialized); __Pyx_DECREF(__pyx_v_self->initialized); - __pyx_v_self->initialized = Py_False; + __pyx_v_self->initialized = __pyx_t_1; + __pyx_t_1 = 0; /* "cython/interface.pyx":195 * self._current_index = None @@ -2304,7 +2198,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex * assert self.initialized * cdef _initialize(self): */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Suite *)__pyx_v_self->__pyx_vtab)->_initialize(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Suite *)__pyx_v_self->__pyx_vtab)->_initialize(__pyx_v_self); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -2316,24 +2210,13 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex * """sweeps through `suite` to collect indices and id's to operate by */ #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 196, __pyx_L1_error) - if (unlikely(!__pyx_t_2)) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 196, __pyx_L1_error) - } + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_2)) { + PyErr_SetNone(PyExc_AssertionError); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #endif - /* "cython/interface.pyx":186 - * cdef initialized - * - * def __cinit__(self, suite_name, suite_instance, suite_options): # <<<<<<<<<<<<<< - * cdef np.npy_intp shape[1] # probably completely useless - * self._name = _bstring(suite_name) - */ - - /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; @@ -2369,17 +2252,16 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ Py_ssize_t __pyx_t_6; PyObject *(*__pyx_t_7)(PyObject *); PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; + PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; + char const *__pyx_t_12; char const *__pyx_t_13; char const *__pyx_t_14; - char const *__pyx_t_15; - PyObject *__pyx_t_16 = NULL; - PyObject *__pyx_t_17 = NULL; - PyObject *__pyx_t_18 = NULL; - int __pyx_t_19; + PyObject *__pyx_t_15 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_initialize", 0); /* "cython/interface.pyx":205 @@ -2389,7 +2271,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self.reset() * self._ids = [] */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 205, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_1) { /* "cython/interface.pyx":206 @@ -2399,36 +2281,15 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._ids = [] * self._indices = [] */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 206, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L1_error) - } + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__reset); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "cython/interface.pyx":205 - * cdef bytes _old_level - * - * if self.initialized: # <<<<<<<<<<<<<< - * self.reset() - * self._ids = [] - */ + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L3; } + __pyx_L3:; /* "cython/interface.pyx":207 * if self.initialized: @@ -2437,13 +2298,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._indices = [] * self._names = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 207, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __Pyx_GOTREF(__pyx_v_self->_ids); __Pyx_DECREF(__pyx_v_self->_ids); - __pyx_v_self->_ids = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_v_self->_ids = ((PyObject *)__pyx_t_3); + __pyx_t_3 = 0; /* "cython/interface.pyx":208 * self.reset() @@ -2452,13 +2313,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._names = [] * self._dimensions = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 208, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __Pyx_GOTREF(__pyx_v_self->_indices); __Pyx_DECREF(__pyx_v_self->_indices); - __pyx_v_self->_indices = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_v_self->_indices = ((PyObject *)__pyx_t_3); + __pyx_t_3 = 0; /* "cython/interface.pyx":209 * self._ids = [] @@ -2467,13 +2328,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._dimensions = [] * self._number_of_objectives = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 209, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __Pyx_GOTREF(__pyx_v_self->_names); __Pyx_DECREF(__pyx_v_self->_names); - __pyx_v_self->_names = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_v_self->_names = ((PyObject *)__pyx_t_3); + __pyx_t_3 = 0; /* "cython/interface.pyx":210 * self._indices = [] @@ -2482,13 +2343,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._number_of_objectives = [] * if str(self._name) not in [str(n) for n in known_suite_names]: */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 210, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __Pyx_GOTREF(__pyx_v_self->_dimensions); __Pyx_DECREF(__pyx_v_self->_dimensions); - __pyx_v_self->_dimensions = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_v_self->_dimensions = ((PyObject *)__pyx_t_3); + __pyx_t_3 = 0; /* "cython/interface.pyx":211 * self._names = [] @@ -2497,13 +2358,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * if str(self._name) not in [str(n) for n in known_suite_names]: * raise NoSuchSuiteException("""Unkown benchmark suite name "%s". */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __Pyx_GOTREF(__pyx_v_self->_number_of_objectives); __Pyx_DECREF(__pyx_v_self->_number_of_objectives); - __pyx_v_self->_number_of_objectives = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_v_self->_number_of_objectives = ((PyObject *)__pyx_t_3); + __pyx_t_3 = 0; /* "cython/interface.pyx":212 * self._dimensions = [] @@ -2512,77 +2373,72 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * raise NoSuchSuiteException("""Unkown benchmark suite name "%s". * Known suite names are %s. */ - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 212, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_self->_name); - __Pyx_GIVEREF(__pyx_v_self->_name); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->_name); - __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 212, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_INCREF(((PyObject *)__pyx_v_self->_name)); + PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->_name)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_name)); + __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__known_suite_names); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) { + if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) { __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { - __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 212, __pyx_L1_error) + __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 212, __pyx_L1_error) + __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; for (;;) { - if (likely(!__pyx_t_7)) { - if (likely(PyList_CheckExact(__pyx_t_5))) { - if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break; - #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 212, __pyx_L1_error) - #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 212, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - } else { - if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break; - #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 212, __pyx_L1_error) - #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 212, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - } + if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_5)) { + if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break; + #if CYTHON_COMPILING_IN_CPYTHON + __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #endif + } else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_5)) { + if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break; + #if CYTHON_COMPILING_IN_CPYTHON + __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #endif } else { __pyx_t_4 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_4)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 212, __pyx_L1_error) + if (PyErr_Occurred()) { + if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); + else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } break; } __Pyx_GOTREF(__pyx_t_4); } - __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_4); + __Pyx_XDECREF(__pyx_v_n); + __pyx_v_n = __pyx_t_4; __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 212, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_n); - __Pyx_GIVEREF(__pyx_v_n); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_n); - __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_v_n); + __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; + if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_t_2, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 212, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_t_2, ((PyObject *)__pyx_t_3), Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = (__pyx_t_1 != 0); - if (__pyx_t_9) { + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + if (__pyx_t_1) { /* "cython/interface.pyx":213 * self._number_of_objectives = [] @@ -2591,7 +2447,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * Known suite names are %s. * If "%s" was not a typo, you can add the desired name to `known_suite_names`:: */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 213, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); /* "cython/interface.pyx":224 @@ -2601,68 +2457,45 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * try: * suite = coco_suite(self._name, self._instance, self._options) */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 224, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__known_suite_names); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 224, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 224, __pyx_L1_error) + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 224, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_INCREF(__pyx_v_self->_name); - __Pyx_GIVEREF(__pyx_v_self->_name); - PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_self->_name); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_5); - __Pyx_INCREF(__pyx_v_self->_name); - __Pyx_GIVEREF(__pyx_v_self->_name); - PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_self->_name); - __pyx_t_5 = 0; - __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_Unkown_benchmark_suite_name_s_Kn, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_INCREF(((PyObject *)__pyx_v_self->_name)); + PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_self->_name)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_name)); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_INCREF(((PyObject *)__pyx_v_self->_name)); + PyTuple_SET_ITEM(__pyx_t_5, 2, ((PyObject *)__pyx_v_self->_name)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_name)); + __pyx_t_2 = 0; + __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_5), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_2)); + __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_8) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 213, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL; - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } + PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_2)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 213, __pyx_L1_error) - - /* "cython/interface.pyx":212 - * self._dimensions = [] - * self._number_of_objectives = [] - * if str(self._name) not in [str(n) for n in known_suite_names]: # <<<<<<<<<<<<<< - * raise NoSuchSuiteException("""Unkown benchmark suite name "%s". - * Known suite names are %s. - */ + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L4; } + __pyx_L4:; /* "cython/interface.pyx":225 * also report back a missing name to https://github.com/numbbo/coco/issues @@ -2672,12 +2505,10 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * except: */ { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); + __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); /*try:*/ { /* "cython/interface.pyx":226 @@ -2687,29 +2518,20 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) */ - __pyx_t_13 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 226, __pyx_L7_error) - __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 226, __pyx_L7_error) - __pyx_t_15 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 226, __pyx_L7_error) - __pyx_v_suite = coco_suite(__pyx_t_13, __pyx_t_14, __pyx_t_15); - - /* "cython/interface.pyx":225 - * also report back a missing name to https://github.com/numbbo/coco/issues - * """ % (self._name, str(known_suite_names), self._name)) - * try: # <<<<<<<<<<<<<< - * suite = coco_suite(self._name, self._instance, self._options) - * except: - */ + __pyx_t_12 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_name)); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_13 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_instance)); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_14 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_options)); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_v_suite = coco_suite(__pyx_t_12, __pyx_t_13, __pyx_t_14); } + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L14_try_end; __pyx_L7_error:; - __Pyx_PyThreadState_assign - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":227 @@ -2721,10 +2543,10 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite._initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 227, __pyx_L9_except_error) + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_5, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} __Pyx_GOTREF(__pyx_t_2); + __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_t_4); /* "cython/interface.pyx":228 * suite = coco_suite(self._name, self._instance, self._options) @@ -2733,55 +2555,38 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * if suite == NULL: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) */ - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 228, __pyx_L9_except_error) + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_16 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 228, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_16); - __pyx_t_17 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_17)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_17); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - } - } - if (!__pyx_t_17) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 228, __pyx_L9_except_error) - __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; - __Pyx_GOTREF(__pyx_t_5); - } else { - __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 228, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_18); - __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL; - __Pyx_GIVEREF(__pyx_t_16); - PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_16); - __pyx_t_16 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_18, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 228, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - } + __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_6), ((PyObject *)__pyx_v_self->_name)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + __Pyx_GOTREF(__pyx_t_15); + PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_t_4)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); + __pyx_t_4 = 0; + __pyx_t_4 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(0, 228, __pyx_L9_except_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_exception_handled; } __pyx_L9_except_error:; - - /* "cython/interface.pyx":225 - * also report back a missing name to https://github.com/numbbo/coco/issues - * """ % (self._name, str(known_suite_names), self._name)) - * try: # <<<<<<<<<<<<<< - * suite = coco_suite(self._name, self._instance, self._options) - * except: - */ - __Pyx_PyThreadState_assign + __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); goto __pyx_L1_error; + __pyx_L8_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); __pyx_L14_try_end:; } @@ -2792,8 +2597,8 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * while True: */ - __pyx_t_9 = ((__pyx_v_suite == NULL) != 0); - if (__pyx_t_9) { + __pyx_t_1 = (__pyx_v_suite == NULL); + if (__pyx_t_1) { /* "cython/interface.pyx":230 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) @@ -2802,48 +2607,25 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * while True: * old_level = log_level('warning') */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 230, __pyx_L1_error) + __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_6), ((PyObject *)__pyx_v_self->_name)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_5)); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_5) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 230, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } + PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_5)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_5)); + __pyx_t_5 = 0; + __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 230, __pyx_L1_error) - - /* "cython/interface.pyx":229 - * except: - * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) - * if suite == NULL: # <<<<<<<<<<<<<< - * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) - * while True: - */ + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L17; } + __pyx_L17:; /* "cython/interface.pyx":231 * if suite == NULL: @@ -2853,6 +2635,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * p = coco_suite_get_next_problem(suite, NULL) */ while (1) { + if (!1) break; /* "cython/interface.pyx":232 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) @@ -2861,13 +2644,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF_SET(__pyx_v_old_level, __pyx_t_3); - __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__log_level); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_k_tuple_7), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_v_old_level); + __pyx_v_old_level = __pyx_t_2; + __pyx_t_2 = 0; /* "cython/interface.pyx":233 * while True: @@ -2885,33 +2669,17 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * if not p: * break */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 234, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_8 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (!__pyx_t_8) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_old_level); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - } else { - __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 234, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL; - __Pyx_INCREF(__pyx_v_old_level); - __Pyx_GIVEREF(__pyx_v_old_level); - PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_old_level); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__log_level); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __Pyx_INCREF(__pyx_v_old_level); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_old_level); + __Pyx_GIVEREF(__pyx_v_old_level); + __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":235 @@ -2921,8 +2689,8 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * break * self._indices.append(coco_problem_get_suite_dep_index(p)) */ - __pyx_t_9 = ((!(__pyx_v_p != 0)) != 0); - if (__pyx_t_9) { + __pyx_t_1 = (!(__pyx_v_p != 0)); + if (__pyx_t_1) { /* "cython/interface.pyx":236 * log_level(old_level) @@ -2932,15 +2700,9 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._ids.append(coco_problem_get_id(p)) */ goto __pyx_L19_break; - - /* "cython/interface.pyx":235 - * p = coco_suite_get_next_problem(suite, NULL) - * log_level(old_level) - * if not p: # <<<<<<<<<<<<<< - * break - * self._indices.append(coco_problem_get_suite_dep_index(p)) - */ + goto __pyx_L20; } + __pyx_L20:; /* "cython/interface.pyx":237 * if not p: @@ -2949,10 +2711,12 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._ids.append(coco_problem_get_id(p)) * self._names.append(coco_problem_get_name(p)) */ - __pyx_t_3 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_p)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_p)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_indices, __pyx_t_3); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 237, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_indices, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "cython/interface.pyx":238 * break @@ -2961,9 +2725,11 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._names.append(coco_problem_get_name(p)) * self._dimensions.append(coco_problem_get_dimension(p)) */ - __pyx_t_3 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_p)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_p)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_5)); + __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_self->_ids, ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_ids, __pyx_t_3); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 238, __pyx_L1_error) + __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":239 @@ -2973,10 +2739,12 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._dimensions.append(coco_problem_get_dimension(p)) * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) */ - __pyx_t_3 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_p)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_names, __pyx_t_3); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 239, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_p)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_3)); + __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_names, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "cython/interface.pyx":240 * self._ids.append(coco_problem_get_id(p)) @@ -2985,9 +2753,11 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) * coco_suite_free(suite) */ - __pyx_t_3 = __Pyx_PyInt_FromSize_t(coco_problem_get_dimension(__pyx_v_p)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 240, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_FromSize_t(coco_problem_get_dimension(__pyx_v_p)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_self->_dimensions, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_dimensions, __pyx_t_3); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":241 @@ -2997,10 +2767,12 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * coco_suite_free(suite) * self.suite = coco_suite(self._name, self._instance, self._options) */ - __pyx_t_3 = __Pyx_PyInt_FromSize_t(coco_problem_get_number_of_objectives(__pyx_v_p)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 241, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(coco_problem_get_number_of_objectives(__pyx_v_p)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_number_of_objectives, __pyx_t_3); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 241, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_number_of_objectives, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_L19_break:; @@ -3020,10 +2792,10 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self.initialized = True * return self */ - __pyx_t_13 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 243, __pyx_L1_error) - __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 243, __pyx_L1_error) - __pyx_t_15 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 243, __pyx_L1_error) - __pyx_v_self->suite = coco_suite(__pyx_t_13, __pyx_t_14, __pyx_t_15); + __pyx_t_12 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_name)); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_instance)); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_options)); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_v_self->suite = coco_suite(__pyx_t_12, __pyx_t_13, __pyx_t_14); /* "cython/interface.pyx":244 * coco_suite_free(suite) @@ -3032,11 +2804,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * return self * def reset(self): */ - __Pyx_INCREF(Py_True); - __Pyx_GIVEREF(Py_True); + __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); __Pyx_GOTREF(__pyx_v_self->initialized); __Pyx_DECREF(__pyx_v_self->initialized); - __pyx_v_self->initialized = Py_True; + __pyx_v_self->initialized = __pyx_t_5; + __pyx_t_5 = 0; /* "cython/interface.pyx":245 * self.suite = coco_suite(self._name, self._instance, self._options) @@ -3050,24 +2824,15 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":197 - * self._initialize() - * assert self.initialized - * cdef _initialize(self): # <<<<<<<<<<<<<< - * """sweeps through `suite` to collect indices and id's to operate by - * direct access in the remainder""" - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_16); - __Pyx_XDECREF(__pyx_t_17); - __Pyx_XDECREF(__pyx_t_18); + __Pyx_XDECREF(__pyx_t_15); __Pyx_AddTraceback("cocoex.interface.Suite._initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -3078,14 +2843,6 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ return __pyx_r; } -/* "cython/interface.pyx":246 - * self.initialized = True - * return self - * def reset(self): # <<<<<<<<<<<<<< - * """reset to original state, affecting `next_problem()`, - * `current_problem`, `current_index`""" - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_3reset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_2reset[] = "reset to original state, affecting `next_problem()`,\n `current_problem`, `current_index`"; @@ -3094,19 +2851,27 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_3reset(PyObject *__pyx_v_sel __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reset (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_2reset(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":246 + * self.initialized = True + * return self + * def reset(self): # <<<<<<<<<<<<<< + * """reset to original state, affecting `next_problem()`, + * `current_problem`, `current_index`""" + */ + static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("reset", 0); /* "cython/interface.pyx":249 @@ -3129,7 +2894,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc * self.current_problem_.free() * self.current_problem_ = None */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 250, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_1) { /* "cython/interface.pyx":251 @@ -3139,36 +2904,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc * self.current_problem_ = None * self._current_problem = NULL */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error) - } + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s__free); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "cython/interface.pyx":250 - * `current_problem`, `current_index`""" - * self._current_index = None - * if self.current_problem_: # <<<<<<<<<<<<<< - * self.current_problem_.free() - * self.current_problem_ = None - */ + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L3; } + __pyx_L3:; /* "cython/interface.pyx":252 * if self.current_problem_: @@ -3192,21 +2936,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc */ __pyx_v_self->_current_problem = NULL; - /* "cython/interface.pyx":246 - * self.initialized = True - * return self - * def reset(self): # <<<<<<<<<<<<<< - * """reset to original state, affecting `next_problem()`, - * `current_problem`, `current_index`""" - */ - - /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface.Suite.reset", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -3215,25 +2949,28 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":254 - * self.current_problem_ = None - * self._current_problem = NULL - * def next_problem(self, observer=None): # <<<<<<<<<<<<<< - * """`next_problem(observer=None)` returns the "next" problem in the - * `Suite`, on the first call or after `reset()` the first problem. - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_4next_problem[] = "`next_problem(observer=None)` returns the \"next\" problem in the\n `Suite`, on the first call or after `reset()` the first problem.\n\n `next_problem` serves to sweep through the `Suite` smoothly.\n "; static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_observer = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("next_problem (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_observer,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__observer,0}; PyObject* values[1] = {0}; + + /* "cython/interface.pyx":254 + * self.current_problem_ = None + * self._current_problem = NULL + * def next_problem(self, observer=None): # <<<<<<<<<<<<<< + * """`next_problem(observer=None)` returns the "next" problem in the + * `Suite`, on the first call or after `reset()` the first problem. + */ values[0] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -3247,12 +2984,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__py switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_observer); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__observer); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "next_problem") < 0)) __PYX_ERR(0, 254, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "next_problem") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3265,15 +3002,13 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("next_problem", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 254, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("next_problem", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.next_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_4next_problem(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), __pyx_v_observer); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -3286,11 +3021,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - Py_ssize_t __pyx_t_6; - size_t __pyx_t_7; + Py_ssize_t __pyx_t_5; + size_t __pyx_t_6; + PyObject *__pyx_t_7 = NULL; struct __pyx_opt_args_6cocoex_9interface_Problem_init __pyx_t_8; - PyObject *__pyx_t_9 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("next_problem", 0); /* "cython/interface.pyx":262 @@ -3300,8 +3037,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 262, __pyx_L1_error) - __pyx_t_2 = ((!__pyx_t_1) != 0); + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { /* "cython/interface.pyx":263 @@ -3311,20 +3048,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * if self.current_problem_: * self.current_problem_.free() */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 263, __pyx_L1_error) + __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 263, __pyx_L1_error) - - /* "cython/interface.pyx":262 - * cdef size_t index - * global _current_observer - * if not self.initialized: # <<<<<<<<<<<<<< - * raise ValueError("Suite has been finalized/free'ed") - * if self.current_problem_: - */ + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L3; } + __pyx_L3:; /* "cython/interface.pyx":264 * if not self.initialized: @@ -3333,7 +3064,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * self.current_problem_.free() * if self._current_index is None: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 264, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_2) { /* "cython/interface.pyx":265 @@ -3343,36 +3074,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * if self._current_index is None: * self._current_index = -1 */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 265, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 265, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 265, __pyx_L1_error) - } + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s__free); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "cython/interface.pyx":264 - * if not self.initialized: - * raise ValueError("Suite has been finalized/free'ed") - * if self.current_problem_: # <<<<<<<<<<<<<< - * self.current_problem_.free() - * if self._current_index is None: - */ + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L4; } + __pyx_L4:; /* "cython/interface.pyx":266 * if self.current_problem_: @@ -3382,8 +3092,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * self._current_index += 1 */ __pyx_t_2 = (__pyx_v_self->_current_index == Py_None); - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { + if (__pyx_t_2) { /* "cython/interface.pyx":267 * self.current_problem_.free() @@ -3397,15 +3106,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __Pyx_GOTREF(__pyx_v_self->_current_index); __Pyx_DECREF(__pyx_v_self->_current_index); __pyx_v_self->_current_index = __pyx_int_neg_1; - - /* "cython/interface.pyx":266 - * if self.current_problem_: - * self.current_problem_.free() - * if self._current_index is None: # <<<<<<<<<<<<<< - * self._current_index = -1 - * self._current_index += 1 - */ + goto __pyx_L5; } + __pyx_L5:; /* "cython/interface.pyx":268 * if self._current_index is None: @@ -3414,13 +3117,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * if self._current_index >= len(self): * self._current_problem = NULL */ - __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_current_index, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_self->_current_index, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->_current_index); __Pyx_DECREF(__pyx_v_self->_current_index); - __pyx_v_self->_current_index = __pyx_t_3; - __pyx_t_3 = 0; + __pyx_v_self->_current_index = __pyx_t_4; + __pyx_t_4 = 0; /* "cython/interface.pyx":269 * self._current_index = -1 @@ -3429,14 +3132,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * self._current_problem = NULL * self.current_problem_ = None */ - __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 269, __pyx_L1_error) - __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 269, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->_current_index, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 269, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 269, __pyx_L1_error) + __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_self->_current_index, __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__pyx_t_1) { + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { /* "cython/interface.pyx":270 * self._current_index += 1 @@ -3459,33 +3162,25 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __Pyx_GOTREF(__pyx_v_self->current_problem_); __Pyx_DECREF(__pyx_v_self->current_problem_); __pyx_v_self->current_problem_ = Py_None; - - /* "cython/interface.pyx":269 - * self._current_index = -1 - * self._current_index += 1 - * if self._current_index >= len(self): # <<<<<<<<<<<<<< - * self._current_problem = NULL - * self.current_problem_ = None - */ goto __pyx_L6; } + /*else*/ { - /* "cython/interface.pyx":274 + /* "cython/interface.pyx":274 * # self._current_index = -1 # or use reset? * else: * index = self.indices[self._current_index] # "conversion" to size_t # <<<<<<<<<<<<<< * self._current_problem = coco_suite_get_problem( * self.suite, index) */ - /*else*/ { - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 274, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_v_self->_current_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__indices); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 274, __pyx_L1_error) + __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_v_self->_current_index); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_index = __pyx_t_7; + __pyx_t_6 = __Pyx_PyInt_AsSize_t(__pyx_t_4); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_index = __pyx_t_6; /* "cython/interface.pyx":275 * else: @@ -3503,8 +3198,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * self.current_problem_.observe_with(observer) * return self.current_problem_ */ - __pyx_t_3 = __pyx_v_self->_name; + __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = ((PyObject *)__pyx_v_self->_name); __Pyx_INCREF(__pyx_t_3); + __pyx_t_8.__pyx_n = 2; + __pyx_t_8.free = __pyx_t_4; + __pyx_t_8.suite_name = __pyx_t_3; + __pyx_t_7 = __pyx_f_6cocoex_9interface_Problem_init(__pyx_v_self->_current_problem, &__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":277 * self._current_problem = coco_suite_get_problem( @@ -3513,17 +3217,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * True, self._name) * self.current_problem_.observe_with(observer) */ - __pyx_t_8.__pyx_n = 2; - __pyx_t_8.free = Py_True; - __pyx_t_8.suite_name = __pyx_t_3; - __pyx_t_4 = __pyx_f_6cocoex_9interface_Problem_init(__pyx_v_self->_current_problem, &__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GIVEREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_self->current_problem_); __Pyx_DECREF(__pyx_v_self->current_problem_); - __pyx_v_self->current_problem_ = __pyx_t_4; - __pyx_t_4 = 0; + __pyx_v_self->current_problem_ = __pyx_t_7; + __pyx_t_7 = 0; /* "cython/interface.pyx":279 * self.current_problem_ = Problem_init(self._current_problem, @@ -3532,33 +3230,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * return self.current_problem_ * def get_problem(self, id, observer=None): */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 279, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s__observe_with); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_5) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - } else { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_INCREF(__pyx_v_observer); - __Pyx_GIVEREF(__pyx_v_observer); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_v_observer); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_observer); + __Pyx_GIVEREF(__pyx_v_observer); + __pyx_t_4 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_L6:; @@ -3575,20 +3257,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_r = __pyx_v_self->current_problem_; goto __pyx_L0; - /* "cython/interface.pyx":254 - * self.current_problem_ = None - * self._current_problem = NULL - * def next_problem(self, observer=None): # <<<<<<<<<<<<<< - * """`next_problem(observer=None)` returns the "next" problem in the - * `Suite`, on the first call or after `reset()` the first problem. - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("cocoex.interface.Suite.next_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -3597,26 +3271,29 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":281 - * self.current_problem_.observe_with(observer) - * return self.current_problem_ - * def get_problem(self, id, observer=None): # <<<<<<<<<<<<<< - * """`get_problem(self, id, observer=None)` returns a `Problem` instance, - * by default unobserved, using `id: str` or index (where `id: int`) to - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_6get_problem[] = "`get_problem(self, id, observer=None)` returns a `Problem` instance,\n by default unobserved, using `id: str` or index (where `id: int`) to\n identify the desired problem.\n\n All values between zero and `len(self) - 1` are valid index values::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> for index in range(len(suite)):\n ... problem = suite.get_problem(index)\n ... # work work work using problem\n ... problem.free()\n\n A shortcut for `suite.get_problem(index)` is `suite[index]`, they are\n synonym.\n\n Details:\n - Here an `index` takes values between 0 and `len(self) - 1` and can in\n principle be different from the problem index in the benchmark suite.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of `get_problem`. Otherwise Python\n might just silently die, which is e.g. a known issue of the \"bbob\"\n observer.\n\n See also `ids`.\n "; static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_id = 0; PyObject *__pyx_v_observer = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_problem (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_id,&__pyx_n_s_observer,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__id,&__pyx_n_s__observer,0}; PyObject* values[2] = {0,0}; + + /* "cython/interface.pyx":281 + * self.current_problem_.observe_with(observer) + * return self.current_problem_ + * def get_problem(self, id, observer=None): # <<<<<<<<<<<<<< + * """`get_problem(self, id, observer=None)` returns a `Problem` instance, + * by default unobserved, using `id: str` or index (where `id: int`) to + */ values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -3630,16 +3307,16 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_id)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__id)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_observer); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__observer); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem") < 0)) __PYX_ERR(0, 281, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3654,15 +3331,13 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_problem", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 281, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_6get_problem(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), __pyx_v_id, __pyx_v_observer); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -3682,12 +3357,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - size_t __pyx_t_13; - struct __pyx_opt_args_6cocoex_9interface_Problem_init __pyx_t_14; - PyObject *__pyx_t_15 = NULL; - Py_ssize_t __pyx_t_16; - PyObject *__pyx_t_17 = NULL; + size_t __pyx_t_12; + struct __pyx_opt_args_6cocoex_9interface_Problem_init __pyx_t_13; + PyObject *__pyx_t_14 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_problem", 0); /* "cython/interface.pyx":312 @@ -3697,8 +3372,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * raise ValueError("Suite has been finalized/free'ed") * index = id */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 312, __pyx_L1_error) - __pyx_t_2 = ((!__pyx_t_1) != 0); + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { /* "cython/interface.pyx":313 @@ -3708,20 +3383,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * index = id * try: */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 313, __pyx_L1_error) + __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_10), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 313, __pyx_L1_error) - - /* "cython/interface.pyx":312 - * See also `ids`. - * """ - * if not self.initialized: # <<<<<<<<<<<<<< - * raise ValueError("Suite has been finalized/free'ed") - * index = id - */ + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L3; } + __pyx_L3:; /* "cython/interface.pyx":314 * if not self.initialized: @@ -3741,8 +3410,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * except: */ { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); @@ -3756,31 +3423,28 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * except: * index = self._ids.index(id) */ - __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 316, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = PyObject_RichCompare(__pyx_v_id, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 316, __pyx_L4_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 316, __pyx_L4_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_id); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_id); + __Pyx_GIVEREF(__pyx_v_id); + __pyx_t_7 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_RichCompare(__pyx_v_id, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "cython/interface.pyx":315 - * raise ValueError("Suite has been finalized/free'ed") - * index = id - * try: # <<<<<<<<<<<<<< - * 1 / (id == int(id)) # int(id) might raise an exception - * except: - */ + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L11_try_end; __pyx_L4_error:; - __Pyx_PyThreadState_assign - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; /* "cython/interface.pyx":317 * try: @@ -3791,9 +3455,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 317, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} __Pyx_GOTREF(__pyx_t_7); + __Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_8); /* "cython/interface.pyx":318 @@ -3803,57 +3467,32 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), */ - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ids, __pyx_n_s_index); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 318, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ids, __pyx_n_s__index); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} __Pyx_GOTREF(__pyx_t_10); - __pyx_t_11 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) { - __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); - if (likely(__pyx_t_11)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); - __Pyx_INCREF(__pyx_t_11); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_10, function); - } - } - if (!__pyx_t_11) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 318, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_9); - } else { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 318, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL; - __Pyx_INCREF(__pyx_v_id); - __Pyx_GIVEREF(__pyx_v_id); - PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_id); - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 318, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - } - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_9); - __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_v_id); + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_id); + __Pyx_GIVEREF(__pyx_v_id); + __pyx_t_11 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_v_index); + __pyx_v_index = __pyx_t_11; + __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L5_exception_handled; } __pyx_L6_except_error:; - - /* "cython/interface.pyx":315 - * raise ValueError("Suite has been finalized/free'ed") - * index = id - * try: # <<<<<<<<<<<<<< - * 1 / (id == int(id)) # int(id) might raise an exception - * except: - */ - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L1_error; __pyx_L5_exception_handled:; - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); @@ -3869,8 +3508,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * True, self._name).observe_with(observer) */ { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_5); @@ -3893,97 +3530,52 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * except: * raise NoSuchProblemException(self.name, str(id)) */ - __pyx_t_7 = PyObject_GetItem(__pyx_v_self->_indices, __pyx_v_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 320, __pyx_L14_error) + __pyx_t_8 = PyObject_GetItem(__pyx_v_self->_indices, __pyx_v_index); if (!__pyx_t_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L14_error;} + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_12 = __Pyx_PyInt_AsSize_t(__pyx_t_8); if (unlikely((__pyx_t_12 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L14_error;} + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L14_error;} + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_3 = ((PyObject *)__pyx_v_self->_name); + __Pyx_INCREF(__pyx_t_3); + __pyx_t_13.__pyx_n = 2; + __pyx_t_13.free = __pyx_t_8; + __pyx_t_13.suite_name = __pyx_t_3; + __pyx_t_7 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem(__pyx_v_self->suite, __pyx_t_12), &__pyx_t_13); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L14_error;} __Pyx_GOTREF(__pyx_t_7); - - /* "cython/interface.pyx":320 - * index = self._ids.index(id) - * try: - * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< - * True, self._name).observe_with(observer) - * except: - */ - __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_7); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 320, __pyx_L14_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "cython/interface.pyx":321 - * try: - * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), - * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< - * except: - * raise NoSuchProblemException(self.name, str(id)) - */ - __pyx_t_7 = __pyx_v_self->_name; - __Pyx_INCREF(__pyx_t_7); - - /* "cython/interface.pyx":320 - * index = self._ids.index(id) - * try: - * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< - * True, self._name).observe_with(observer) - * except: - */ - __pyx_t_14.__pyx_n = 2; - __pyx_t_14.free = Py_True; - __pyx_t_14.suite_name = __pyx_t_7; - __pyx_t_3 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem(__pyx_v_self->suite, __pyx_t_13), &__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L14_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s__observe_with); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L14_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "cython/interface.pyx":321 - * try: - * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), - * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< - * except: - * raise NoSuchProblemException(self.name, str(id)) - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 321, __pyx_L14_error) + __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L14_error;} __Pyx_GOTREF(__pyx_t_7); + __Pyx_INCREF(__pyx_v_observer); + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_observer); + __Pyx_GIVEREF(__pyx_v_observer); + __pyx_t_8 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L14_error;} + __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - } - } - if (!__pyx_t_3) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_observer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 321, __pyx_L14_error) - __Pyx_GOTREF(__pyx_t_8); - } else { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 321, __pyx_L14_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_observer); - __Pyx_GIVEREF(__pyx_v_observer); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 321, __pyx_L14_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L18_try_return; - - /* "cython/interface.pyx":319 - * except: - * index = self._ids.index(id) - * try: # <<<<<<<<<<<<<< - * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), - * True, self._name).observe_with(observer) - */ } + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L21_try_end; + __pyx_L18_try_return:; + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4); + goto __pyx_L0; __pyx_L14_error:; - __Pyx_PyThreadState_assign - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; @@ -3996,10 +3588,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(0, 322, __pyx_L16_except_error) + if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_7); - __Pyx_GOTREF(__pyx_t_9); + __Pyx_GOTREF(__pyx_t_3); /* "cython/interface.pyx":323 * True, self._name).observe_with(observer) @@ -4008,82 +3600,54 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): */ - __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 323, __pyx_L16_except_error) - __Pyx_GOTREF(__pyx_t_10); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 323, __pyx_L16_except_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 323, __pyx_L16_except_error) + __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} __Pyx_GOTREF(__pyx_t_11); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__name); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} + __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_id); + PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_id); __Pyx_GIVEREF(__pyx_v_id); - PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_id); - __pyx_t_15 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 323, __pyx_L16_except_error) - __Pyx_GOTREF(__pyx_t_15); + __pyx_t_14 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; + __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} + __Pyx_GOTREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); + __Pyx_GIVEREF(__pyx_t_10); + PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_14); + __Pyx_GIVEREF(__pyx_t_14); + __pyx_t_10 = 0; + __pyx_t_14 = 0; + __pyx_t_14 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} + __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = NULL; - __pyx_t_16 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) { - __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); - if (likely(__pyx_t_11)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); - __Pyx_INCREF(__pyx_t_11); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_10, function); - __pyx_t_16 = 1; - } - } - __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 323, __pyx_L16_except_error) - __Pyx_GOTREF(__pyx_t_17); - if (__pyx_t_11) { - __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_11); __pyx_t_11 = NULL; - } - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_16, __pyx_t_12); - __Pyx_GIVEREF(__pyx_t_15); - PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_t_15); - __pyx_t_12 = 0; - __pyx_t_15 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L16_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; + __Pyx_Raise(__pyx_t_14, 0, 0, 0); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 323, __pyx_L16_except_error) + goto __pyx_L15_exception_handled; } __pyx_L16_except_error:; - - /* "cython/interface.pyx":319 - * except: - * index = self._ids.index(id) - * try: # <<<<<<<<<<<<<< - * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), - * True, self._name).observe_with(observer) - */ - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4); goto __pyx_L1_error; - __pyx_L18_try_return:; - __Pyx_PyThreadState_assign + __pyx_L15_exception_handled:; __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4); - goto __pyx_L0; + __pyx_L21_try_end:; } - /* "cython/interface.pyx":281 - * self.current_problem_.observe_with(observer) - * return self.current_problem_ - * def get_problem(self, id, observer=None): # <<<<<<<<<<<<<< - * """`get_problem(self, id, observer=None)` returns a `Problem` instance, - * by default unobserved, using `id: str` or index (where `id: int`) to - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_7); @@ -4091,9 +3655,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_XDECREF(__pyx_t_15); - __Pyx_XDECREF(__pyx_t_17); + __Pyx_XDECREF(__pyx_t_14); __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -4103,14 +3665,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":325 - * raise NoSuchProblemException(self.name, str(id)) - * - * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): # <<<<<<<<<<<<<< - * """returns a `Problem` instance, by default unobserved, using function, - * dimension and instance to identify the desired problem. - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dimension_instance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_8get_problem_by_function_dimension_instance[] = "returns a `Problem` instance, by default unobserved, using function,\n dimension and instance to identify the desired problem.\n\n If a suite contains multiple problems with the same function, dimension\n and instance, the first corresponding problem is returned.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> problem = suite.get_problem_by_function_dimension_instance(1, 2, 3)\n >>> # work work work using problem\n >>> problem.free()\n\n Details:\n - Function, dimension and instance are integer values from 1 on.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of\n `get_problem_by_function_dimension_instance`. Otherwise Python might\n just silently die, which is e.g. a known issue of the \"bbob\" observer.\n "; @@ -4119,12 +3673,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim PyObject *__pyx_v_dimension = 0; PyObject *__pyx_v_instance = 0; PyObject *__pyx_v_observer = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_problem_by_function_dimension_instance (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_function,&__pyx_n_s_dimension,&__pyx_n_s_instance,&__pyx_n_s_observer,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__function,&__pyx_n_s__dimension,&__pyx_n_s__instance,&__pyx_n_s__observer,0}; PyObject* values[4] = {0,0,0,0}; + + /* "cython/interface.pyx":325 + * raise NoSuchProblemException(self.name, str(id)) + * + * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): # <<<<<<<<<<<<<< + * """returns a `Problem` instance, by default unobserved, using function, + * dimension and instance to identify the desired problem. + */ values[3] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -4140,26 +3705,26 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_function)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__function)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimension)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dimension)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 1); __PYX_ERR(0, 325, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: - if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_instance)) != 0)) kw_args--; + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__instance)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 2); __PYX_ERR(0, 325, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_observer); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__observer); if (value) { values[3] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem_by_function_dimension_instance") < 0)) __PYX_ERR(0, 325, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem_by_function_dimension_instance") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -4178,15 +3743,13 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 325, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.get_problem_by_function_dimension_instance", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dimension_instance(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), __pyx_v_function, __pyx_v_dimension, __pyx_v_instance, __pyx_v_observer); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -4212,9 +3775,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - Py_ssize_t __pyx_t_17; - PyObject *__pyx_t_18 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_problem_by_function_dimension_instance", 0); /* "cython/interface.pyx":349 @@ -4224,7 +3787,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * cdef size_t _dimension = dimension # "conversion" to size_t * cdef size_t _instance = instance # "conversion" to size_t */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_function); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 349, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_AsSize_t(__pyx_v_function); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v__function = __pyx_t_1; /* "cython/interface.pyx":350 @@ -4234,7 +3797,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * cdef size_t _instance = instance # "conversion" to size_t * */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_dimension); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 350, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_AsSize_t(__pyx_v_dimension); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v__dimension = __pyx_t_1; /* "cython/interface.pyx":351 @@ -4244,7 +3807,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * * if not self.initialized: */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_instance); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 351, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_AsSize_t(__pyx_v_instance); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v__instance = __pyx_t_1; /* "cython/interface.pyx":353 @@ -4254,8 +3817,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * raise ValueError("Suite has been finalized/free'ed") * try: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 353, __pyx_L1_error) - __pyx_t_3 = ((!__pyx_t_2) != 0); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = (!__pyx_t_2); if (__pyx_t_3) { /* "cython/interface.pyx":354 @@ -4265,20 +3828,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, */ - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 354, __pyx_L1_error) + __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_12), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 354, __pyx_L1_error) - - /* "cython/interface.pyx":353 - * cdef size_t _instance = instance # "conversion" to size_t - * - * if not self.initialized: # <<<<<<<<<<<<<< - * raise ValueError("Suite has been finalized/free'ed") - * try: - */ + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L3; } + __pyx_L3:; /* "cython/interface.pyx":355 * if not self.initialized: @@ -4288,8 +3845,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * _dimension, _instance), */ { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); @@ -4312,75 +3867,46 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * except: * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, */ - __pyx_t_8 = __pyx_v_self->_name; + __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = ((PyObject *)__pyx_v_self->_name); __Pyx_INCREF(__pyx_t_8); - - /* "cython/interface.pyx":356 - * raise ValueError("Suite has been finalized/free'ed") - * try: - * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, # <<<<<<<<<<<<<< - * _dimension, _instance), - * True, self._name).observe_with(observer) - */ __pyx_t_10.__pyx_n = 2; - __pyx_t_10.free = Py_True; + __pyx_t_10.free = __pyx_t_4; __pyx_t_10.suite_name = __pyx_t_8; - __pyx_t_9 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem_by_function_dimension_instance(__pyx_v_self->suite, __pyx_v__function, __pyx_v__dimension, __pyx_v__instance), &__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 356, __pyx_L4_error) + __pyx_t_9 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem_by_function_dimension_instance(__pyx_v_self->suite, __pyx_v__function, __pyx_v__dimension, __pyx_v__instance), &__pyx_t_10); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - - /* "cython/interface.pyx":358 - * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, - * _dimension, _instance), - * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< - * except: - * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, - */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 358, __pyx_L4_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s__observe_with); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - } - } - if (!__pyx_t_9) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 358, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_4); - } else { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 358, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; - __Pyx_INCREF(__pyx_v_observer); - __Pyx_GIVEREF(__pyx_v_observer); - PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_observer); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 358, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __Pyx_GOTREF(__pyx_t_9); + __Pyx_INCREF(__pyx_v_observer); + PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_observer); + __Pyx_GIVEREF(__pyx_v_observer); + __pyx_t_4 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L8_try_return; - - /* "cython/interface.pyx":355 - * if not self.initialized: - * raise ValueError("Suite has been finalized/free'ed") - * try: # <<<<<<<<<<<<<< - * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, - * _dimension, _instance), - */ } + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L11_try_end; + __pyx_L8_try_return:; + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); + goto __pyx_L0; __pyx_L4_error:; - __Pyx_PyThreadState_assign - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; /* "cython/interface.pyx":359 @@ -4392,10 +3918,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem_by_function_dimension_instance", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_11) < 0) __PYX_ERR(0, 359, __pyx_L6_except_error) + if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_9, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} __Pyx_GOTREF(__pyx_t_4); + __Pyx_GOTREF(__pyx_t_9); __Pyx_GOTREF(__pyx_t_8); - __Pyx_GOTREF(__pyx_t_11); /* "cython/interface.pyx":360 * True, self._name).observe_with(observer) @@ -4404,12 +3930,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * dimension, * instance)) */ - __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__name); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} __Pyx_GOTREF(__pyx_t_12); - __pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_u_13), __pyx_n_s__format); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} __Pyx_GOTREF(__pyx_t_13); - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_function_dimension_instance, __pyx_n_s_format); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 360, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_15); /* "cython/interface.pyx":362 * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, @@ -4418,100 +3944,57 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * * def __getitem__(self, key): */ - __pyx_t_16 = NULL; - __pyx_t_17 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_15))) { - __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_15); - if (likely(__pyx_t_16)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); - __Pyx_INCREF(__pyx_t_16); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_15, function); - __pyx_t_17 = 1; - } - } - __pyx_t_18 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 360, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_18); - if (__pyx_t_16) { - __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_16); __pyx_t_16 = NULL; - } + __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + __Pyx_GOTREF(__pyx_t_14); __Pyx_INCREF(__pyx_v_function); + PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v_function); __Pyx_GIVEREF(__pyx_v_function); - PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_17, __pyx_v_function); __Pyx_INCREF(__pyx_v_dimension); + PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_v_dimension); __Pyx_GIVEREF(__pyx_v_dimension); - PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_v_dimension); __Pyx_INCREF(__pyx_v_instance); + PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_v_instance); __Pyx_GIVEREF(__pyx_v_instance); - PyTuple_SET_ITEM(__pyx_t_18, 2+__pyx_t_17, __pyx_v_instance); - __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_18, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __pyx_t_15 = PyObject_Call(__pyx_t_13, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0; + __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; + PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_15); + __Pyx_GIVEREF(__pyx_t_15); + __pyx_t_12 = 0; + __pyx_t_15 = 0; + __pyx_t_15 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0; + __Pyx_Raise(__pyx_t_15, 0, 0, 0); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = NULL; - __pyx_t_17 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) { - __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_12); - if (likely(__pyx_t_15)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); - __Pyx_INCREF(__pyx_t_15); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_12, function); - __pyx_t_17 = 1; - } - } - __pyx_t_18 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 360, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_18); - if (__pyx_t_15) { - __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_15); __pyx_t_15 = NULL; - } - __Pyx_GIVEREF(__pyx_t_13); - PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_17, __pyx_t_13); - __Pyx_GIVEREF(__pyx_t_14); - PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_t_14); - __pyx_t_13 = 0; - __pyx_t_14 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_18, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 360, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_Raise(__pyx_t_9, 0, 0, 0); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_ERR(0, 360, __pyx_L6_except_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L5_exception_handled; } __pyx_L6_except_error:; - - /* "cython/interface.pyx":355 - * if not self.initialized: - * raise ValueError("Suite has been finalized/free'ed") - * try: # <<<<<<<<<<<<<< - * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, - * _dimension, _instance), - */ - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); goto __pyx_L1_error; - __pyx_L8_try_return:; - __Pyx_PyThreadState_assign + __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); - goto __pyx_L0; + __pyx_L11_try_end:; } - /* "cython/interface.pyx":325 - * raise NoSuchProblemException(self.name, str(id)) - * - * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): # <<<<<<<<<<<<<< - * """returns a `Problem` instance, by default unobserved, using function, - * dimension and instance to identify the desired problem. - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_8); @@ -4521,8 +4004,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_XDECREF(__pyx_t_13); __Pyx_XDECREF(__pyx_t_14); __Pyx_XDECREF(__pyx_t_15); - __Pyx_XDECREF(__pyx_t_16); - __Pyx_XDECREF(__pyx_t_18); __Pyx_AddTraceback("cocoex.interface.Suite.get_problem_by_function_dimension_instance", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -4531,14 +4012,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim return __pyx_r; } -/* "cython/interface.pyx":364 - * instance)) - * - * def __getitem__(self, key): # <<<<<<<<<<<<<< - * """`self[i]` is a synonym for `self.get_problem(i)`, see `get_problem` - * """ - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_10__getitem__[] = "`self[i]` is a synonym for `self.get_problem(i)`, see `get_problem`\n "; @@ -4550,19 +4023,27 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_11__getitem__(PyObject *__py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_10__getitem__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), ((PyObject *)__pyx_v_key)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":364 + * instance)) + * + * def __getitem__(self, key): # <<<<<<<<<<<<<< + * """`self[i]` is a synonym for `self.get_problem(i)`, see `get_problem` + * """ + */ + static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, PyObject *__pyx_v_key) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getitem__", 0); /* "cython/interface.pyx":367 @@ -4573,51 +4054,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o * def free(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 367, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_problem); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 367, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 367, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_key); - __Pyx_GIVEREF(__pyx_v_key); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_key); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 367, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; + __Pyx_INCREF(__pyx_v_key); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key); + __Pyx_GIVEREF(__pyx_v_key); + __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":364 - * instance)) - * - * def __getitem__(self, key): # <<<<<<<<<<<<<< - * """`self[i]` is a synonym for `self.get_problem(i)`, see `get_problem` - * """ - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface.Suite.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -4626,14 +4083,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":369 - * return self.get_problem(key) - * - * def free(self): # <<<<<<<<<<<<<< - * """free underlying C structures""" - * self.__dealloc__() - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_13free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_12free[] = "free underlying C structures"; @@ -4642,18 +4091,26 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_13free(PyObject *__pyx_v_sel __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("free (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_12free(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":369 + * return self.get_problem(key) + * + * def free(self): # <<<<<<<<<<<<<< + * """free underlying C structures""" + * self.__dealloc__() + */ + static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("free", 0); /* "cython/interface.pyx":371 @@ -4663,27 +4120,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc * self.suite = NULL * self.initialized = False # not (yet) visible from outside */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dealloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error) - } + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s____dealloc__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":372 * """free underlying C structures""" @@ -4701,27 +4143,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc * def __dealloc__(self): * if self.suite: */ - __Pyx_INCREF(Py_False); - __Pyx_GIVEREF(Py_False); + __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->initialized); __Pyx_DECREF(__pyx_v_self->initialized); - __pyx_v_self->initialized = Py_False; - - /* "cython/interface.pyx":369 - * return self.get_problem(key) - * - * def free(self): # <<<<<<<<<<<<<< - * """free underlying C structures""" - * self.__dealloc__() - */ + __pyx_v_self->initialized = __pyx_t_2; + __pyx_t_2 = 0; - /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cocoex.interface.Suite.free", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -4730,25 +4164,23 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":374 - * self.suite = NULL - * self.initialized = False # not (yet) visible from outside - * def __dealloc__(self): # <<<<<<<<<<<<<< - * if self.suite: - * coco_suite_free(self.suite) - */ - /* Python wrapper */ static void __pyx_pw_6cocoex_9interface_5Suite_15__dealloc__(PyObject *__pyx_v_self); /*proto*/ static void __pyx_pw_6cocoex_9interface_5Suite_15__dealloc__(PyObject *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); } +/* "cython/interface.pyx":374 + * self.suite = NULL + * self.initialized = False # not (yet) visible from outside + * def __dealloc__(self): # <<<<<<<<<<<<<< + * if self.suite: + * coco_suite_free(self.suite) + */ + static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -4772,36 +4204,13 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c * def find_problem_ids(self, *args, **kwargs): */ coco_suite_free(__pyx_v_self->suite); - - /* "cython/interface.pyx":375 - * self.initialized = False # not (yet) visible from outside - * def __dealloc__(self): - * if self.suite: # <<<<<<<<<<<<<< - * coco_suite_free(self.suite) - * - */ + goto __pyx_L3; } + __pyx_L3:; - /* "cython/interface.pyx":374 - * self.suite = NULL - * self.initialized = False # not (yet) visible from outside - * def __dealloc__(self): # <<<<<<<<<<<<<< - * if self.suite: - * coco_suite_free(self.suite) - */ - - /* function exit code */ __Pyx_RefNannyFinishContext(); } -/* "cython/interface.pyx":378 - * coco_suite_free(self.suite) - * - * def find_problem_ids(self, *args, **kwargs): # <<<<<<<<<<<<<< - * """has been renamed to `ids`""" - * raise NotImplementedError( - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_17find_problem_ids(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_16find_problem_ids[] = "has been renamed to `ids`"; @@ -4812,21 +4221,33 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_17find_problem_ids(PyObject __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("find_problem_ids (wrapper)", 0); if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "find_problem_ids", 1))) return NULL; + __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); + if (unlikely(!__pyx_v_kwargs)) return NULL; + __Pyx_GOTREF(__pyx_v_kwargs); __Pyx_INCREF(__pyx_args); __pyx_v_args = __pyx_args; __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs); - - /* function exit code */ __Pyx_XDECREF(__pyx_v_args); __Pyx_XDECREF(__pyx_v_kwargs); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":378 + * coco_suite_free(self.suite) + * + * def find_problem_ids(self, *args, **kwargs): # <<<<<<<<<<<<<< + * """has been renamed to `ids`""" + * raise NotImplementedError( + */ + static PyObject *__pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("find_problem_ids", 0); /* "cython/interface.pyx":380 @@ -4836,38 +4257,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(CYTHON_UN * "`find_problem_ids()` has been renamed to `ids()`") * */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error) + __pyx_t_1 = PyObject_Call(__pyx_builtin_NotImplementedError, ((PyObject *)__pyx_k_tuple_15), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 380, __pyx_L1_error) - - /* "cython/interface.pyx":378 - * coco_suite_free(self.suite) - * - * def find_problem_ids(self, *args, **kwargs): # <<<<<<<<<<<<<< - * """has been renamed to `ids`""" - * raise NotImplementedError( - */ + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Suite.find_problem_ids", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; + __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":384 - * - * - * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< - * """`ids(*id_snippets, get_problem=False, verbose=False)` - * return all problem IDs that contain all of the `id_snippets`. - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_18ids[] = "`ids(*id_snippets, get_problem=False, verbose=False)`\n return all problem IDs that contain all of the `id_snippets`.\n\n An ID can be used for indexing, that is, when calling the method\n `get_problem(id)`.\n\n If `get_problem is True`, the problem for the first matching ID is\n returned.\n\n >>> import cocoex as ex\n >>> s = ex.Suite(\"bbob\", \"\", \"\")\n >>> s.ids(\"f001\", \"d10\", \"i01\")\n ['bbob_f001_i01_d10']\n\n We can sweep through all instances of the ellipsoidal function f10\n in 20-D of the BBOB suite like this::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> ids = suite.ids(\"f010\", \"d20\")\n >>> used_indices = []\n >>> for p in suite:\n ... if p.id in ids:\n ... # work work work with problem `p`\n ... used_indices.append(p.index)\n >>> print(used_indices)\n [1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589]\n\n A desired problem can also be filtered out during creation::\n\n >>> import cocoex as ex\n >>> f9 = ex.Suite(\"bbob\", \"\",\n ... \"function_indices:9 dimensions:20 instance_indices:1-5\")[0]\n >>> print(f9.id)\n bbob_f009_i01_d20\n\n "; @@ -4875,6 +4282,9 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self PyObject *__pyx_v_get_problem = 0; PyObject *__pyx_v_verbose = 0; PyObject *__pyx_v_id_snippets = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("ids (wrapper)", 0); @@ -4889,10 +4299,10 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self __pyx_v_id_snippets = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); } { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_get_problem,&__pyx_n_s_verbose,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__get_problem,&__pyx_n_s__verbose,0}; PyObject* values[2] = {0,0}; - values[0] = ((PyObject *)Py_False); - values[1] = ((PyObject *)Py_False); + values[0] = __pyx_k_16; + values[1] = __pyx_k_17; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); @@ -4909,7 +4319,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "ids") < 0)) __PYX_ERR(0, 384, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "ids") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) < 0) { goto __pyx_L5_argtuple_error; @@ -4920,7 +4330,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("ids", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 384, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("ids", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_DECREF(__pyx_v_id_snippets); __pyx_v_id_snippets = 0; __Pyx_AddTraceback("cocoex.interface.Suite.ids", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -4928,13 +4338,19 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_18ids(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), __pyx_v_get_problem, __pyx_v_verbose, __pyx_v_id_snippets); - - /* function exit code */ __Pyx_XDECREF(__pyx_v_id_snippets); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":384 + * + * + * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< + * """`ids(*id_snippets, get_problem=False, verbose=False)` + * return all problem IDs that contain all of the `id_snippets`. + */ + static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, PyObject *__pyx_v_get_problem, PyObject *__pyx_v_verbose, PyObject *__pyx_v_id_snippets) { PyObject *__pyx_v_res = NULL; PyObject *__pyx_v_idx = NULL; @@ -4952,9 +4368,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; + int __pyx_t_11; int __pyx_t_12; - int __pyx_t_13; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("ids", 0); /* "cython/interface.pyx":422 @@ -4964,7 +4382,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 422, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_res = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; @@ -4978,50 +4396,47 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco */ __Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; - if (likely(PyList_CheckExact(__pyx_v_self->_ids)) || PyTuple_CheckExact(__pyx_v_self->_ids)) { + if (PyList_CheckExact(__pyx_v_self->_ids) || PyTuple_CheckExact(__pyx_v_self->_ids)) { __pyx_t_2 = __pyx_v_self->_ids; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 423, __pyx_L1_error) + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_ids); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 423, __pyx_L1_error) + __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; } for (;;) { - if (likely(!__pyx_t_4)) { - if (likely(PyList_CheckExact(__pyx_t_2))) { - if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 423, __pyx_L1_error) - #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 423, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - } else { - if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 423, __pyx_L1_error) - #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 423, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - } + if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_2)) { + if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_COMPILING_IN_CPYTHON + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #endif + } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_2)) { + if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_COMPILING_IN_CPYTHON + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #endif } else { __pyx_t_5 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_5)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 423, __pyx_L1_error) + if (PyErr_Occurred()) { + if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); + else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } break; } __Pyx_GOTREF(__pyx_t_5); } - __Pyx_XDECREF_SET(__pyx_v_id, __pyx_t_5); + __Pyx_XDECREF(__pyx_v_id); + __pyx_v_id = __pyx_t_5; __pyx_t_5 = 0; __Pyx_INCREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_1); - __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 423, __pyx_L1_error) + __Pyx_XDECREF(__pyx_v_idx); + __pyx_v_idx = __pyx_t_1; + __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; @@ -5034,63 +4449,47 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * if verbose: * print(" id=%s, index=%d" % (id, idx)) */ - __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 424, __pyx_L1_error) + __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __pyx_v_id_snippets; __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0; + __pyx_t_6 = ((PyObject *)__pyx_v_id_snippets); __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0; for (;;) { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 424, __pyx_L1_error) + __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); + __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_8); + __Pyx_XDECREF(__pyx_v_i); + __pyx_v_i = __pyx_t_8; __pyx_t_8 = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_id, __pyx_n_s_find); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 424, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_id, __pyx_n_s__find); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_10)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_10); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - if (!__pyx_t_10) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_i); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - } else { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL; - __Pyx_INCREF(__pyx_v_i); - __Pyx_GIVEREF(__pyx_v_i); - PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_i); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 424, __pyx_L1_error) + __Pyx_INCREF(__pyx_v_i); + PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_i); + __Pyx_GIVEREF(__pyx_v_i); + __pyx_t_10 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 424, __pyx_L1_error) + __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; + __pyx_t_9 = PyObject_RichCompare(__pyx_t_10, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_9))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 424, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_5)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 424, __pyx_L1_error) + __pyx_t_5 = PyObject_Call(__pyx_builtin_all, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 424, __pyx_L1_error) + __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; + __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_12) { + if (__pyx_t_11) { /* "cython/interface.pyx":425 * for idx, id in enumerate(self._ids): @@ -5099,8 +4498,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * print(" id=%s, index=%d" % (id, idx)) * res.append(id) */ - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_verbose); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 425, __pyx_L1_error) - if (__pyx_t_12) { + __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_verbose); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_11) { /* "cython/interface.pyx":426 * if all([id.find(i) >= 0 for i in id_snippets]): @@ -5109,35 +4508,29 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * res.append(id) * if get_problem: */ - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 426, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_id); - __Pyx_GIVEREF(__pyx_v_id); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_id); + __Pyx_GIVEREF(__pyx_v_id); __Pyx_INCREF(__pyx_v_idx); - __Pyx_GIVEREF(__pyx_v_idx); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_idx); - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_id_s_index_d, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 426, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 426, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_v_idx); + __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_18), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_6)); + __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 426, __pyx_L1_error) + __pyx_t_6 = PyObject_Call(__pyx_builtin_print, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "cython/interface.pyx":425 - * for idx, id in enumerate(self._ids): - * if all([id.find(i) >= 0 for i in id_snippets]): - * if verbose: # <<<<<<<<<<<<<< - * print(" id=%s, index=%d" % (id, idx)) - * res.append(id) - */ + goto __pyx_L8; } + __pyx_L8:; /* "cython/interface.pyx":427 * if verbose: @@ -5146,24 +4539,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * if get_problem: * return self.get_problem(res[0]) */ - __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_res, __pyx_v_id); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 427, __pyx_L1_error) - - /* "cython/interface.pyx":424 - * res = [] - * for idx, id in enumerate(self._ids): - * if all([id.find(i) >= 0 for i in id_snippets]): # <<<<<<<<<<<<<< - * if verbose: - * print(" id=%s, index=%d" % (id, idx)) - */ + __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_res, __pyx_v_id); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L5; } - - /* "cython/interface.pyx":423 - * """ - * res = [] - * for idx, id in enumerate(self._ids): # <<<<<<<<<<<<<< - * if all([id.find(i) >= 0 for i in id_snippets]): - * if verbose: - */ + __pyx_L5:; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -5175,8 +4554,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * return self.get_problem(res[0]) * return res */ - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_get_problem); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 428, __pyx_L1_error) - if (__pyx_t_12) { + __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_get_problem); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_11) { /* "cython/interface.pyx":429 * res.append(id) @@ -5186,48 +4565,25 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 429, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_problem); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_res), 0, sizeof(long), PyInt_FromLong, 1, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 429, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 429, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6); - __pyx_t_6 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; goto __pyx_L0; - - /* "cython/interface.pyx":428 - * print(" id=%s, index=%d" % (id, idx)) - * res.append(id) - * if get_problem: # <<<<<<<<<<<<<< - * return self.get_problem(res[0]) - * return res - */ + goto __pyx_L9; } + __pyx_L9:; /* "cython/interface.pyx":430 * if get_problem: @@ -5237,19 +4593,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * @property */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_res); - __pyx_r = __pyx_v_res; + __Pyx_INCREF(((PyObject *)__pyx_v_res)); + __pyx_r = ((PyObject *)__pyx_v_res); goto __pyx_L0; - /* "cython/interface.pyx":384 - * - * - * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< - * """`ids(*id_snippets, get_problem=False, verbose=False)` - * return all problem IDs that contain all of the `id_snippets`. - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); @@ -5258,7 +4607,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("cocoex.interface.Suite.ids", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -5271,6 +4619,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_21current_problem(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_5Suite_20current_problem[] = "current \"open/active\" problem to be benchmarked"; +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_21current_problem(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("current_problem (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_20current_problem(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":433 * * @property @@ -5279,23 +4639,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * return self.current_problem_ */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_15current_problem_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_15current_problem_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20current_problem(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { + PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_RefNannySetupContext("current_problem", 0); /* "cython/interface.pyx":435 * def current_problem(self): @@ -5309,21 +4656,25 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(st __pyx_r = __pyx_v_self->current_problem_; goto __pyx_L0; - /* "cython/interface.pyx":433 - * - * @property - * def current_problem(self): # <<<<<<<<<<<<<< - * """current "open/active" problem to be benchmarked""" - * return self.current_problem_ - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_23current_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_5Suite_22current_index[] = "index in the enumerator of all problems in this suite.\n\n Details: To get the index in the underlying C implementation, which\n usually matches `current_index` one-to-one, use::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> suite.current_index is None\n True\n >>> suite.next_problem().id[-17:].lower()\n 'bbob_f001_i01_d02'\n >>> suite.current_index, suite.indices[suite.current_index]\n (0, 0)\n\n "; +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_23current_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("current_index (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_22current_index(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":437 * return self.current_problem_ * @property @@ -5332,23 +4683,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(st * */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_13current_index_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_13current_index_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22current_index(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_RefNannySetupContext("current_index", 0); /* "cython/interface.pyx":453 * @@ -5362,21 +4700,25 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(stru __pyx_r = __pyx_v_self->_current_index; goto __pyx_L0; - /* "cython/interface.pyx":437 - * return self.current_problem_ - * @property - * def current_index(self): # <<<<<<<<<<<<<< - * """index in the enumerator of all problems in this suite. - * - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_25problem_names(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_5Suite_24problem_names[] = "list of problem names in this `Suite`, see also `ids`"; +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_25problem_names(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("problem_names (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_24problem_names(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":455 * return self._current_index * @property @@ -5385,24 +4727,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(stru * return list(self._names) */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_13problem_names_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_13problem_names_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_24problem_names(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("problem_names", 0); /* "cython/interface.pyx":457 * def problem_names(self): @@ -5412,24 +4745,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru * def dimensions(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PySequence_List(__pyx_v_self->_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 457, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; + __Pyx_INCREF(__pyx_v_self->_names); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->_names); + __Pyx_GIVEREF(__pyx_v_self->_names); + __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":455 - * return self._current_index - * @property - * def problem_names(self): # <<<<<<<<<<<<<< - * """list of problem names in this `Suite`, see also `ids`""" - * return list(self._names) - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Suite.problem_names.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("cocoex.interface.Suite.problem_names", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -5437,6 +4770,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_27dimensions(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_5Suite_26dimensions[] = "list of problem dimensions occuring at least once in this `Suite`"; +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_27dimensions(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("dimensions (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_26dimensions(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":459 * return list(self._names) * @property @@ -5445,27 +4790,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru * return sorted(set(self._dimensions)) */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_10dimensions_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_10dimensions_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26dimensions(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - __Pyx_RefNannySetupContext("__get__", 0); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("dimensions", 0); /* "cython/interface.pyx":461 * def dimensions(self): @@ -5475,32 +4808,32 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct * def number_of_objectives(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PySet_New(__pyx_v_self->_dimensions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 461, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_self->_dimensions); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->_dimensions); + __Pyx_GIVEREF(__pyx_v_self->_dimensions); + __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PySet_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_1 = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 461, __pyx_L1_error) - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":459 - * return list(self._names) - * @property - * def dimensions(self): # <<<<<<<<<<<<<< - * """list of problem dimensions occuring at least once in this `Suite`""" - * return sorted(set(self._dimensions)) - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("cocoex.interface.Suite.dimensions.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Suite.dimensions", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -5508,6 +4841,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_29number_of_objectives(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_5Suite_28number_of_objectives[] = "list of number of objectives occuring in this `Suite`"; +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_29number_of_objectives(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("number_of_objectives (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_28number_of_objectives(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":463 * return sorted(set(self._dimensions)) * @property @@ -5516,27 +4861,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct * return sorted(set(self._number_of_objectives)) */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_20number_of_objectives_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_20number_of_objectives_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_28number_of_objectives(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - __Pyx_RefNannySetupContext("__get__", 0); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("number_of_objectives", 0); /* "cython/interface.pyx":465 * def number_of_objectives(self): @@ -5546,32 +4879,32 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get * def indices(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PySet_New(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 465, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_self->_number_of_objectives); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->_number_of_objectives); + __Pyx_GIVEREF(__pyx_v_self->_number_of_objectives); + __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PySet_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 465, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_1 = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 465, __pyx_L1_error) - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":463 - * return sorted(set(self._dimensions)) - * @property - * def number_of_objectives(self): # <<<<<<<<<<<<<< - * """list of number of objectives occuring in this `Suite`""" - * return sorted(set(self._number_of_objectives)) - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("cocoex.interface.Suite.number_of_objectives.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Suite.number_of_objectives", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -5579,6 +4912,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_31indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_5Suite_30indices[] = "list of all problem indices, deprecated.\n \n These values are (only) used to call the underlying C structures.\n Indices used in the Python interface run between 0 and `len(self)`.\n "; +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_31indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("indices (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_30indices(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":467 * return sorted(set(self._number_of_objectives)) * @property @@ -5587,24 +4932,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get * */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7indices_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7indices_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_7indices___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_30indices(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("indices", 0); /* "cython/interface.pyx":473 * Indices used in the Python interface run between 0 and `len(self)`. @@ -5614,24 +4950,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py * def name(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PySequence_List(__pyx_v_self->_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; + __Pyx_INCREF(__pyx_v_self->_indices); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->_indices); + __Pyx_GIVEREF(__pyx_v_self->_indices); + __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":467 - * return sorted(set(self._number_of_objectives)) - * @property - * def indices(self): # <<<<<<<<<<<<<< - * """list of all problem indices, deprecated. - * - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Suite.indices.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("cocoex.interface.Suite.indices", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -5639,6 +4975,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_33name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_5Suite_32name[] = "name of this suite as used to instantiate the suite via `Suite(name, ...)`"; +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_33name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("name (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_32name(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":475 * return list(self._indices) * @property @@ -5647,23 +4995,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py * return self._name */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_4name_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_4name___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_32name(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_RefNannySetupContext("name", 0); /* "cython/interface.pyx":477 * def name(self): @@ -5673,25 +5008,29 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_o * def instance(self): */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_name); - __pyx_r = __pyx_v_self->_name; + __Pyx_INCREF(((PyObject *)__pyx_v_self->_name)); + __pyx_r = ((PyObject *)__pyx_v_self->_name); goto __pyx_L0; - /* "cython/interface.pyx":475 - * return list(self._indices) - * @property - * def name(self): # <<<<<<<<<<<<<< - * """name of this suite as used to instantiate the suite via `Suite(name, ...)`""" - * return self._name - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_35instance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_5Suite_34instance[] = "instance of this suite as used to instantiate the suite via\n `Suite(name, instance, ...)`"; +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_35instance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("instance (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_34instance(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":479 * return self._name * @property @@ -5700,23 +5039,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_o * `Suite(name, instance, ...)`""" */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_8instance_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_8instance_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_8instance___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_34instance(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_RefNannySetupContext("instance", 0); /* "cython/interface.pyx":482 * """instance of this suite as used to instantiate the suite via @@ -5726,25 +5052,29 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __p * def options(self): */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_instance); - __pyx_r = __pyx_v_self->_instance; + __Pyx_INCREF(((PyObject *)__pyx_v_self->_instance)); + __pyx_r = ((PyObject *)__pyx_v_self->_instance); goto __pyx_L0; - /* "cython/interface.pyx":479 - * return self._name - * @property - * def instance(self): # <<<<<<<<<<<<<< - * """instance of this suite as used to instantiate the suite via - * `Suite(name, instance, ...)`""" - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_37options(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_5Suite_36options[] = "options for this suite as used to instantiate the suite via\n `Suite(name, instance, options)`"; +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_37options(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("options (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_36options(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":484 * return self._instance * @property @@ -5753,23 +5083,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __p * `Suite(name, instance, options)`""" */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7options_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7options_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_36options(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { + PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_7options___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_RefNannySetupContext("options", 0); /* "cython/interface.pyx":487 * """options for this suite as used to instantiate the suite via @@ -5779,25 +5096,28 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __py * @property */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_options); - __pyx_r = __pyx_v_self->_options; + __Pyx_INCREF(((PyObject *)__pyx_v_self->_options)); + __pyx_r = ((PyObject *)__pyx_v_self->_options); goto __pyx_L0; - /* "cython/interface.pyx":484 - * return self._instance - * @property - * def options(self): # <<<<<<<<<<<<<< - * """options for this suite as used to instantiate the suite via - * `Suite(name, instance, options)`""" - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_39info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_39info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("info (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_38info(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":490 * * @property @@ -5806,25 +5126,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __py * def __repr__(self): */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_4info_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_4info_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_4info___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_38info(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("info", 0); /* "cython/interface.pyx":491 * @property @@ -5834,31 +5144,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 491, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 491, __pyx_L1_error) + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":490 - * - * @property - * def info(self): # <<<<<<<<<<<<<< - * return str(self) - * def __repr__(self): - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("cocoex.interface.Suite.info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Suite.info", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -5866,34 +5169,35 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":492 - * def info(self): - * return str(self) - * def __repr__(self): # <<<<<<<<<<<<<< - * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets - * def __str__(self): - */ - /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_21__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_21__repr__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_41__repr__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_41__repr__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_20__repr__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_40__repr__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* "cython/interface.pyx":492 + * def info(self): + * return str(self) + * def __repr__(self): # <<<<<<<<<<<<<< + * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets + * def __str__(self): + */ + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_40__repr__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); /* "cython/interface.pyx":493 @@ -5904,39 +5208,32 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 493, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 493, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__instance); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 493, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__options); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 493, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Suite_r_r_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 493, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_3; + __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_19), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_3)); + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; + __pyx_r = ((PyObject *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":492 - * def info(self): - * return str(self) - * def __repr__(self): # <<<<<<<<<<<<<< - * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets - * def __str__(self): - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); @@ -5950,28 +5247,26 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ return __pyx_r; } -/* "cython/interface.pyx":494 - * def __repr__(self): - * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets - * def __str__(self): # <<<<<<<<<<<<<< - * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ - * % (self.name, self.instance, self.options, - */ - /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_23__str__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_23__str__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_43__str__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_43__str__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_22__str__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_42__str__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* "cython/interface.pyx":494 + * def __repr__(self): + * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets + * def __str__(self): # <<<<<<<<<<<<<< + * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ + * % (self.name, self.instance, self.options, + */ + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_42__str__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -5984,6 +5279,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__str__", 0); /* "cython/interface.pyx":495 @@ -6002,11 +5300,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 496, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 496, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__instance); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__options); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); /* "cython/interface.pyx":497 @@ -6016,16 +5314,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) */ - __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 497, __pyx_L1_error) - __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 497, __pyx_L1_error) + __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 497, __pyx_L1_error) - if (((__pyx_t_4 == 1) != 0)) { - __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_6 = __pyx_kp_u__2; + __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if ((__pyx_t_4 == 1)) { + __Pyx_INCREF(((PyObject *)__pyx_kp_u_3)); + __pyx_t_6 = ((PyObject *)__pyx_kp_u_3); } else { - __Pyx_INCREF(__pyx_n_u_s); - __pyx_t_6 = __pyx_n_u_s; + __Pyx_INCREF(((PyObject *)__pyx_n_u__s)); + __pyx_t_6 = ((PyObject *)__pyx_n_u__s); } /* "cython/interface.pyx":498 @@ -6035,16 +5333,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 498, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__dimensions); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_4 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 498, __pyx_L1_error) + __pyx_t_4 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (((__pyx_t_4 == 1) != 0)) { - __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_7 = __pyx_kp_u__2; + if ((__pyx_t_4 == 1)) { + __Pyx_INCREF(((PyObject *)__pyx_kp_u_3)); + __pyx_t_7 = ((PyObject *)__pyx_kp_u_3); } else { - __Pyx_INCREF(__pyx_n_u_s); - __pyx_t_7 = __pyx_n_u_s; + __Pyx_INCREF(((PyObject *)__pyx_n_u__s)); + __pyx_t_7 = ((PyObject *)__pyx_n_u__s); } /* "cython/interface.pyx":499 @@ -6054,61 +5352,53 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 * def __len__(self): * return len(self._indices) */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__dimensions); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); + __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_min, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_t_8 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 499, __pyx_L1_error) + __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__dimensions); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); + __Pyx_GIVEREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_t_9 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 499, __pyx_L1_error) + __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0; + __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); - __Pyx_GIVEREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); + __Pyx_GIVEREF(__pyx_t_9); __pyx_t_8 = 0; __pyx_t_9 = 0; - __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 499, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - - /* "cython/interface.pyx":496 - * def __str__(self): - * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ - * % (self.name, self.instance, self.options, # <<<<<<<<<<<<<< - * len(self), '' if len(self) == 1 else 's', - * '' if len(self.dimensions) == 1 else 's', - */ - __pyx_t_10 = PyTuple_New(7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 496, __pyx_L1_error) + __pyx_t_9 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_21), ((PyObject *)__pyx_t_10)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_9)); + __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0; + __pyx_t_10 = PyTuple_New(7); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 4, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 5, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_10, 6, __pyx_t_9); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_10, 6, ((PyObject *)__pyx_t_9)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_9)); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; @@ -6116,22 +5406,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_9 = 0; - __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 496, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_r = __pyx_t_9; + __pyx_t_9 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_20), ((PyObject *)__pyx_t_10)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_9)); + __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0; + __pyx_r = ((PyObject *)__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L0; - /* "cython/interface.pyx":494 - * def __repr__(self): - * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets - * def __str__(self): # <<<<<<<<<<<<<< - * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ - * % (self.name, self.instance, self.options, - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); @@ -6150,32 +5433,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 return __pyx_r; } -/* "cython/interface.pyx":500 - * '' if len(self.dimensions) == 1 else 's', - * '%d=%d' % (min(self.dimensions), max(self.dimensions))) - * def __len__(self): # <<<<<<<<<<<<<< - * return len(self._indices) - * - */ - /* Python wrapper */ -static Py_ssize_t __pyx_pw_6cocoex_9interface_5Suite_25__len__(PyObject *__pyx_v_self); /*proto*/ -static Py_ssize_t __pyx_pw_6cocoex_9interface_5Suite_25__len__(PyObject *__pyx_v_self) { +static Py_ssize_t __pyx_pw_6cocoex_9interface_5Suite_45__len__(PyObject *__pyx_v_self); /*proto*/ +static Py_ssize_t __pyx_pw_6cocoex_9interface_5Suite_45__len__(PyObject *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_24__len__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_44__len__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* "cython/interface.pyx":500 + * '' if len(self.dimensions) == 1 else 's', + * '%d=%d' % (min(self.dimensions), max(self.dimensions))) + * def __len__(self): # <<<<<<<<<<<<<< + * return len(self._indices) + * + */ + +static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_44__len__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__len__", 0); /* "cython/interface.pyx":501 @@ -6187,20 +5471,13 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ */ __pyx_t_1 = __pyx_v_self->_indices; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 501, __pyx_L1_error) + __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; goto __pyx_L0; - /* "cython/interface.pyx":500 - * '' if len(self.dimensions) == 1 else 's', - * '%d=%d' % (min(self.dimensions), max(self.dimensions))) - * def __len__(self): # <<<<<<<<<<<<<< - * return len(self._indices) - * - */ - - /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Suite.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -6209,37 +5486,38 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ - -/* "cython/interface.pyx":503 - * return len(self._indices) - * - * def __iter__(self): # <<<<<<<<<<<<<< - * """iterator over self. - * - */ +static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_27__iter__(PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_6cocoex_9interface_5Suite_26__iter__[] = "iterator over self.\n\n CAVEAT: this function uses `next_problem` and has a side effect on the\n state of the `current_problem` and `current_index` attributes. `reset()`\n rewinds the suite to the initial state. "; +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_47__iter__(PyObject *__pyx_v_self); /*proto*/ +static char __pyx_doc_6cocoex_9interface_5Suite_46__iter__[] = "iterator over self.\n\n CAVEAT: this function uses `next_problem` and has a side effect on the\n state of the `current_problem` and `current_index` attributes. `reset()`\n rewinds the suite to the initial state. "; #if CYTHON_COMPILING_IN_CPYTHON -struct wrapperbase __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__; +struct wrapperbase __pyx_wrapperbase_6cocoex_9interface_5Suite_46__iter__; #endif -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_27__iter__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_47__iter__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_26__iter__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - - /* function exit code */ + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_46__iter__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* "cython/interface.pyx":503 + * return len(self._indices) + * + * def __iter__(self): # <<<<<<<<<<<<<< + * """iterator over self. + * + */ + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_46__iter__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__iter__", 0); __pyx_cur_scope = (struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)__pyx_tp_new_6cocoex_9interface___pyx_scope_struct____iter__(__pyx_ptype_6cocoex_9interface___pyx_scope_struct____iter__, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { @@ -6251,23 +5529,25 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_ __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); { - __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6cocoex_9interface_5Suite_28generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_Suite___iter, __pyx_n_s_cocoex_interface); if (unlikely(!gen)) __PYX_ERR(0, 503, __pyx_L1_error) + __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_6cocoex_9interface_5Suite_48generator, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; + __pyx_L0:; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */ +static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *__pyx_cur_scope = ((struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)__pyx_generator->closure); PyObject *__pyx_r = NULL; @@ -6279,13 +5559,12 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; + int __pyx_t_9; int __pyx_t_10; - int __pyx_t_11; - int __pyx_t_12; - PyObject *__pyx_t_13 = NULL; - int __pyx_t_14; - char const *__pyx_t_15; + PyObject *__pyx_t_11 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("None", 0); switch (__pyx_generator->resume_label) { @@ -6296,7 +5575,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO return NULL; } __pyx_L3_first_run:; - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 503, __pyx_L1_error) + if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "cython/interface.pyx":510 * rewinds the suite to the initial state. """ @@ -6316,27 +5595,12 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * else: * s = Suite(self.name, self.instance, self.options) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_reset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 511, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 511, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 511, __pyx_L1_error) - } + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s__reset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":514 * else: @@ -6347,12 +5611,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ /*try:*/ { { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); + __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_6); /*try:*/ { /* "cython/interface.pyx":515 @@ -6363,6 +5625,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * problem = s.next_problem() */ while (1) { + if (!1) break; /* "cython/interface.pyx":516 * try: @@ -6372,12 +5635,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * if problem is None: */ { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); + __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_9); /*try:*/ { /* "cython/interface.pyx":517 @@ -6387,29 +5648,15 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * if problem is None: * raise StopIteration */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_next_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L17_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s__next_problem); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L17_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L17_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L17_error) - } + __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L17_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_problem); - __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_problem, __pyx_t_1); + __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_problem); __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_problem = __pyx_t_1; __pyx_t_1 = 0; /* "cython/interface.pyx":518 @@ -6419,9 +5666,8 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * raise StopIteration * except NoSuchProblemException: */ - __pyx_t_10 = (__pyx_cur_scope->__pyx_v_problem == Py_None); - __pyx_t_11 = (__pyx_t_10 != 0); - if (__pyx_t_11) { + __pyx_t_9 = (__pyx_cur_scope->__pyx_v_problem == Py_None); + if (__pyx_t_9) { /* "cython/interface.pyx":519 * problem = s.next_problem() @@ -6431,32 +5677,16 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * raise StopIteration */ __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0); - __PYX_ERR(0, 519, __pyx_L17_error) - - /* "cython/interface.pyx":518 - * try: - * problem = s.next_problem() - * if problem is None: # <<<<<<<<<<<<<< - * raise StopIteration - * except NoSuchProblemException: - */ + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L17_error;} + goto __pyx_L25; } - - /* "cython/interface.pyx":516 - * try: - * while True: - * try: # <<<<<<<<<<<<<< - * problem = s.next_problem() - * if problem is None: - */ + __pyx_L25:; } + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L24_try_end; __pyx_L17_error:; - __Pyx_PyThreadState_assign - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -6467,16 +5697,16 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * raise StopIteration * yield problem */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 520, __pyx_L19_except_error) + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_11); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_t_1); + __pyx_t_10 = PyErr_ExceptionMatches(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_12) { + if (__pyx_t_10) { __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 520, __pyx_L19_except_error) + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_t_11); /* "cython/interface.pyx":521 * raise StopIteration @@ -6486,24 +5716,23 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * except: */ __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0); - __PYX_ERR(0, 521, __pyx_L19_except_error) + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + goto __pyx_L18_exception_handled; } - goto __pyx_L19_except_error; __pyx_L19_except_error:; - - /* "cython/interface.pyx":516 - * try: - * while True: - * try: # <<<<<<<<<<<<<< - * problem = s.next_problem() - * if problem is None: - */ - __Pyx_PyThreadState_assign + __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); goto __pyx_L7_error; + __pyx_L18_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); __pyx_L24_try_end:; } @@ -6516,47 +5745,38 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ __Pyx_INCREF(__pyx_cur_scope->__pyx_v_problem); __pyx_r = __pyx_cur_scope->__pyx_v_problem; + __Pyx_XGIVEREF(__pyx_t_3); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); - __pyx_cur_scope->__pyx_t_0 = __pyx_t_4; + __pyx_cur_scope->__pyx_t_1 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_t_5); - __pyx_cur_scope->__pyx_t_1 = __pyx_t_5; - __Pyx_XGIVEREF(__pyx_t_6); - __pyx_cur_scope->__pyx_t_2 = __pyx_t_6; + __pyx_cur_scope->__pyx_t_2 = __pyx_t_5; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L28_resume_from_yield:; - __pyx_t_4 = __pyx_cur_scope->__pyx_t_0; + __pyx_t_3 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; - __Pyx_XGOTREF(__pyx_t_4); - __pyx_t_5 = __pyx_cur_scope->__pyx_t_1; + __Pyx_XGOTREF(__pyx_t_3); + __pyx_t_4 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; - __Pyx_XGOTREF(__pyx_t_5); - __pyx_t_6 = __pyx_cur_scope->__pyx_t_2; + __Pyx_XGOTREF(__pyx_t_4); + __pyx_t_5 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; - __Pyx_XGOTREF(__pyx_t_6); - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 522, __pyx_L7_error) + __Pyx_XGOTREF(__pyx_t_5); + if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L7_error;} } - - /* "cython/interface.pyx":514 - * else: - * s = Suite(self.name, self.instance, self.options) - * try: # <<<<<<<<<<<<<< - * while True: - * try: - */ } + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L14_try_end; __pyx_L7_error:; - __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; /* "cython/interface.pyx":523 * raise StopIteration @@ -6567,8 +5787,8 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 523, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_2, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + __Pyx_GOTREF(__pyx_t_11); __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_1); @@ -6579,29 +5799,29 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * finally: # makes this ctrl-c safe, at least it should * s is self or s.free() */ - __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_1); - __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; - __PYX_ERR(0, 524, __pyx_L9_except_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_ErrRestore(__pyx_t_11, __pyx_t_2, __pyx_t_1); + __pyx_t_11 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L8_exception_handled; } __pyx_L9_except_error:; - - /* "cython/interface.pyx":514 - * else: - * s = Suite(self.name, self.instance, self.options) - * try: # <<<<<<<<<<<<<< - * while True: - * try: - */ - __Pyx_PyThreadState_assign + __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); - goto __pyx_L5_error; - __pyx_L14_try_end:; + __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); + goto __pyx_L5; + __pyx_L8_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); + __pyx_L14_try_end:; } } @@ -6613,170 +5833,87 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * cdef class Observer: */ /*finally:*/ { - /*normal exit:*/{ - __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); - if (!__pyx_t_11) { - } else { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L31_bool_binop_done; - } - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 526, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_13 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_13)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_13); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_13) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L1_error) - } + int __pyx_why; + PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb; + int __pyx_exc_lineno; + __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0; + __pyx_why = 0; goto __pyx_L6; + __pyx_L5: { + __pyx_why = 4; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb); + __pyx_exc_lineno = __pyx_lineno; + goto __pyx_L6; + } + __pyx_L6:; + __pyx_t_9 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L31_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L31_error;} + if (!__pyx_t_9) { + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s__free); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L31_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_INCREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; + __pyx_t_11 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L31_error;} + __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_L31_bool_binop_done:; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L6; + __pyx_t_2 = __pyx_t_11; + __pyx_t_11 = 0; + } else { + __pyx_t_2 = __pyx_t_1; + __pyx_t_1 = 0; } - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __pyx_L5_error:; - __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; - __Pyx_PyThreadState_assign - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_7); - __pyx_t_12 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename; - { - __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); - if (!__pyx_t_11) { - } else { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L34_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L35_bool_binop_done; - } - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 526, __pyx_L34_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_13 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_13)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_13); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_13) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L34_error) - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L34_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_INCREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_L35_bool_binop_done:; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __Pyx_PyThreadState_assign - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7); - } - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_ErrRestore(__pyx_t_6, __pyx_t_5, __pyx_t_4); - __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; - __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15; - goto __pyx_L1_error; - __pyx_L34_error:; - __Pyx_PyThreadState_assign - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + goto __pyx_L32; + __pyx_L31_error:; + if (__pyx_why == 4) { + Py_XDECREF(__pyx_exc_type); + Py_XDECREF(__pyx_exc_value); + Py_XDECREF(__pyx_exc_tb); + } + goto __pyx_L1_error; + __pyx_L32:; + switch (__pyx_why) { + case 4: { + __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb); + __pyx_lineno = __pyx_exc_lineno; + __pyx_exc_type = 0; + __pyx_exc_value = 0; + __pyx_exc_tb = 0; + goto __pyx_L1_error; } - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; - goto __pyx_L1_error; } - __pyx_L6:; } - - /* "cython/interface.pyx":503 - * return len(self._indices) - * - * def __iter__(self): # <<<<<<<<<<<<<< - * """iterator over self. - * - */ - - /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; - __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + __Pyx_XDECREF(__pyx_r); __pyx_generator->resume_label = -1; - __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_Generator_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); - return __pyx_r; + return NULL; } -/* "cython/interface.pyx":562 - * cdef _state - * - * def __cinit__(self, name, options): # <<<<<<<<<<<<<< - * if isinstance(options, dict): - * s = str(options).replace(',', ' ') - */ - /* Python wrapper */ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; PyObject *__pyx_v_options = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_options,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,&__pyx_n_s__options,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -6790,16 +5927,16 @@ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_se kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__options)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(0, 562, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 562, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -6812,35 +5949,41 @@ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_se } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 562, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Observer.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_8Observer___cinit__(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self), __pyx_v_name, __pyx_v_options); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":562 + * cdef _state + * + * def __cinit__(self, name, options): # <<<<<<<<<<<<<< + * if isinstance(options, dict): + * s = str(options).replace(',', ' ') + */ + static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_options) { PyObject *__pyx_v_s = NULL; PyObject *__pyx_v_c = NULL; int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; - int __pyx_t_2; + PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; + Py_ssize_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - Py_ssize_t __pyx_t_8; - PyObject *__pyx_t_9 = NULL; - char const *__pyx_t_10; - char const *__pyx_t_11; + char const *__pyx_t_7; + char const *__pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__cinit__", 0); __Pyx_INCREF(__pyx_v_options); @@ -6852,8 +5995,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * for c in ["u'", 'u"', "'", '"', "{", "}"]: */ __pyx_t_1 = PyDict_Check(__pyx_v_options); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { + if (__pyx_t_1) { /* "cython/interface.pyx":564 * def __cinit__(self, name, options): @@ -6862,22 +6004,22 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') */ - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 564, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_options); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_options); __Pyx_GIVEREF(__pyx_v_options); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_options); - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 564, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 564, __pyx_L1_error) + __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 564, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__replace); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_s = __pyx_t_4; - __pyx_t_4 = 0; + __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_24), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_s = __pyx_t_3; + __pyx_t_3 = 0; /* "cython/interface.pyx":565 * if isinstance(options, dict): @@ -6886,17 +6028,17 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * s = s.replace(c, '') * options = s */ - __pyx_t_4 = __pyx_tuple__15; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; + __pyx_t_3 = ((PyObject *)__pyx_k_tuple_31); __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; for (;;) { - if (__pyx_t_5 >= 6) break; + if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 565, __pyx_L1_error) + __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 565, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - __Pyx_XDECREF_SET(__pyx_v_c, ((PyObject*)__pyx_t_3)); - __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_v_c); + __pyx_v_c = __pyx_t_2; + __pyx_t_2 = 0; /* "cython/interface.pyx":566 * s = str(options).replace(',', ' ') @@ -6905,47 +6047,25 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * options = s * self._name = _bstring(name) */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 566, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - __pyx_t_8 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - __pyx_t_8 = 1; - } - } - __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 566, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - if (__pyx_t_7) { - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; - } + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s__replace); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_c); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_c); __Pyx_GIVEREF(__pyx_v_c); - PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_c); - __Pyx_INCREF(__pyx_kp_u__2); - __Pyx_GIVEREF(__pyx_kp_u__2); - PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_kp_u__2); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 566, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_3); - __pyx_t_3 = 0; - - /* "cython/interface.pyx":565 - * if isinstance(options, dict): - * s = str(options).replace(',', ' ') - * for c in ["u'", 'u"', "'", '"', "{", "}"]: # <<<<<<<<<<<<<< - * s = s.replace(c, '') - * options = s - */ + __Pyx_INCREF(((PyObject *)__pyx_kp_u_3)); + PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_kp_u_3)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_3)); + __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_v_s); + __pyx_v_s = __pyx_t_6; + __pyx_t_6 = 0; } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":567 * for c in ["u'", 'u"', "'", '"', "{", "}"]: @@ -6955,16 +6075,11 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * self._options = _bstring(options if options is not None else "") */ __Pyx_INCREF(__pyx_v_s); - __Pyx_DECREF_SET(__pyx_v_options, __pyx_v_s); - - /* "cython/interface.pyx":563 - * - * def __cinit__(self, name, options): - * if isinstance(options, dict): # <<<<<<<<<<<<<< - * s = str(options).replace(',', ' ') - * for c in ["u'", 'u"', "'", '"', "{", "}"]: - */ + __Pyx_DECREF(__pyx_v_options); + __pyx_v_options = __pyx_v_s; + goto __pyx_L3; } + __pyx_L3:; /* "cython/interface.pyx":568 * s = s.replace(c, '') @@ -6973,13 +6088,13 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * self._options = _bstring(options if options is not None else "") * self._observer = coco_observer(self._name, self._options) */ - __pyx_t_4 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 568, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); + __pyx_t_3 = ((PyObject *)__pyx_f_6cocoex_9interface__bstring(__pyx_v_name)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_name); - __Pyx_DECREF(__pyx_v_self->_name); - __pyx_v_self->_name = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; + __Pyx_DECREF(((PyObject *)__pyx_v_self->_name)); + __pyx_v_self->_name = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; /* "cython/interface.pyx":569 * options = s @@ -6988,22 +6103,22 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * self._observer = coco_observer(self._name, self._options) * self._state = 'initialized' */ - __pyx_t_2 = (__pyx_v_options != Py_None); - if ((__pyx_t_2 != 0)) { + __pyx_t_1 = (__pyx_v_options != Py_None); + if (__pyx_t_1) { __Pyx_INCREF(__pyx_v_options); - __pyx_t_4 = __pyx_v_options; + __pyx_t_3 = __pyx_v_options; } else { - __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_4 = __pyx_kp_u__2; + __Pyx_INCREF(((PyObject *)__pyx_kp_u_3)); + __pyx_t_3 = ((PyObject *)__pyx_kp_u_3); } - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 569, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_6 = ((PyObject *)__pyx_f_6cocoex_9interface__bstring(__pyx_t_3)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GIVEREF(__pyx_t_6); __Pyx_GOTREF(__pyx_v_self->_options); - __Pyx_DECREF(__pyx_v_self->_options); - __pyx_v_self->_options = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; + __Pyx_DECREF(((PyObject *)__pyx_v_self->_options)); + __pyx_v_self->_options = ((PyObject*)__pyx_t_6); + __pyx_t_6 = 0; /* "cython/interface.pyx":570 * self._name = _bstring(name) @@ -7012,9 +6127,9 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * self._state = 'initialized' * */ - __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L1_error) - __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L1_error) - __pyx_v_self->_observer = coco_observer(__pyx_t_10, __pyx_t_11); + __pyx_t_7 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_name)); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_options)); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_v_self->_observer = coco_observer(__pyx_t_7, __pyx_t_8); /* "cython/interface.pyx":571 * self._options = _bstring(options if options is not None else "") @@ -7023,29 +6138,19 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * * def _update_current_observer_global(self): */ - __Pyx_INCREF(__pyx_n_u_initialized); - __Pyx_GIVEREF(__pyx_n_u_initialized); + __Pyx_INCREF(((PyObject *)__pyx_n_u__initialized)); + __Pyx_GIVEREF(((PyObject *)__pyx_n_u__initialized)); __Pyx_GOTREF(__pyx_v_self->_state); __Pyx_DECREF(__pyx_v_self->_state); - __pyx_v_self->_state = __pyx_n_u_initialized; - - /* "cython/interface.pyx":562 - * cdef _state - * - * def __cinit__(self, name, options): # <<<<<<<<<<<<<< - * if isinstance(options, dict): - * s = str(options).replace(',', ' ') - */ + __pyx_v_self->_state = ((PyObject *)__pyx_n_u__initialized); - /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("cocoex.interface.Observer.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; @@ -7056,14 +6161,6 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":573 - * self._state = 'initialized' - * - * def _update_current_observer_global(self): # <<<<<<<<<<<<<< - * """assign the global _current_observer variable to self._observer, - * for purely technical reasons""" - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_8Observer_3_update_current_observer_global(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_6cocoex_9interface_8Observer_2_update_current_observer_global[] = "assign the global _current_observer variable to self._observer, \n for purely technical reasons"; @@ -7072,12 +6169,18 @@ static PyObject *__pyx_pw_6cocoex_9interface_8Observer_3_update_current_observer __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_update_current_observer_global (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer_global(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":573 + * self._state = 'initialized' + * + * def _update_current_observer_global(self): # <<<<<<<<<<<<<< + * """assign the global _current_observer variable to self._observer, + * for purely technical reasons""" + */ + static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer_global(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -7094,29 +6197,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer __pyx_t_1 = __pyx_v_self->_observer; __pyx_v_6cocoex_9interface__current_observer = __pyx_t_1; - /* "cython/interface.pyx":573 - * self._state = 'initialized' - * - * def _update_current_observer_global(self): # <<<<<<<<<<<<<< - * """assign the global _current_observer variable to self._observer, - * for purely technical reasons""" - */ - - /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":579 - * _current_observer = self._observer - * - * def observe(self, problem): # <<<<<<<<<<<<<< - * """`observe(problem)` let `self` observe the `problem: Problem` by - * calling `problem.observe_with(self)`. - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_8Observer_5observe(PyObject *__pyx_v_self, PyObject *__pyx_v_problem); /*proto*/ static char __pyx_doc_6cocoex_9interface_8Observer_4observe[] = "`observe(problem)` let `self` observe the `problem: Problem` by\n calling `problem.observe_with(self)`.\n "; @@ -7125,19 +6211,27 @@ static PyObject *__pyx_pw_6cocoex_9interface_8Observer_5observe(PyObject *__pyx_ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("observe (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_4observe(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self), ((PyObject *)__pyx_v_problem)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":579 + * _current_observer = self._observer + * + * def observe(self, problem): # <<<<<<<<<<<<<< + * """`observe(problem)` let `self` observe the `problem: Problem` by + * calling `problem.observe_with(self)`. + */ + static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self, PyObject *__pyx_v_problem) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("observe", 0); /* "cython/interface.pyx":583 @@ -7147,34 +6241,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj * return self * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 583, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s__observe_with); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 583, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":584 * """ @@ -7188,20 +6266,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":579 - * _current_observer = self._observer - * - * def observe(self, problem): # <<<<<<<<<<<<<< - * """`observe(problem)` let `self` observe the `problem: Problem` by - * calling `problem.observe_with(self)`. - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface.Observer.observe", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -7210,6 +6280,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_7name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_8Observer_6name[] = "name of the observer as used with `Observer(name, ...)` to instantiate\n `self` before.\n "; +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_7name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("name (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_6name(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":587 * * @property @@ -7218,23 +6300,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj * `self` before. */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_4name_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_4name___get__(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6name(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_RefNannySetupContext("name", 0); /* "cython/interface.pyx":591 * `self` before. @@ -7244,25 +6313,28 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __py * def options(self): */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_name); - __pyx_r = __pyx_v_self->_name; + __Pyx_INCREF(((PyObject *)__pyx_v_self->_name)); + __pyx_r = ((PyObject *)__pyx_v_self->_name); goto __pyx_L0; - /* "cython/interface.pyx":587 - * - * @property - * def name(self): # <<<<<<<<<<<<<< - * """name of the observer as used with `Observer(name, ...)` to instantiate - * `self` before. - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_9options(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_9options(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("options (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_8options(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":593 * return self._name * @property @@ -7271,23 +6343,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __py * @property */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_7options_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_7options_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_7options___get__(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_8options(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_RefNannySetupContext("options", 0); /* "cython/interface.pyx":594 * @property @@ -7297,25 +6356,28 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct _ * def state(self): */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_options); - __pyx_r = __pyx_v_self->_options; + __Pyx_INCREF(((PyObject *)__pyx_v_self->_options)); + __pyx_r = ((PyObject *)__pyx_v_self->_options); goto __pyx_L0; - /* "cython/interface.pyx":593 - * return self._name - * @property - * def options(self): # <<<<<<<<<<<<<< - * return self._options - * @property - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_11state(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_11state(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("state (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_10state(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":596 * return self._options * @property @@ -7324,23 +6386,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct _ * */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_5state_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_5state_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_5state___get__(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_10state(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_RefNannySetupContext("state", 0); /* "cython/interface.pyx":597 * @property @@ -7354,48 +6403,40 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __p __pyx_r = __pyx_v_self->_state; goto __pyx_L0; - /* "cython/interface.pyx":596 - * return self._options - * @property - * def state(self): # <<<<<<<<<<<<<< - * return self._state - * - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":599 - * return self._state - * - * def free(self): # <<<<<<<<<<<<<< - * self.__dealloc__() - * self._observer = NULL - */ - /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_7free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_7free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_13free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_13free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("free (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_6free(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); - - /* function exit code */ + __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_12free(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { +/* "cython/interface.pyx":599 + * return self._state + * + * def free(self): # <<<<<<<<<<<<<< + * self.__dealloc__() + * self._observer = NULL + */ + +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_12free(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("free", 0); /* "cython/interface.pyx":600 @@ -7405,27 +6446,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c * self._observer = NULL * self._state = 'deactivated' */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dealloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 600, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error) - } + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s____dealloc__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":601 * def free(self): @@ -7443,27 +6469,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c * def __dealloc__(self): * if self._observer != NULL: */ - __Pyx_INCREF(__pyx_n_u_deactivated); - __Pyx_GIVEREF(__pyx_n_u_deactivated); + __Pyx_INCREF(((PyObject *)__pyx_n_u__deactivated)); + __Pyx_GIVEREF(((PyObject *)__pyx_n_u__deactivated)); __Pyx_GOTREF(__pyx_v_self->_state); __Pyx_DECREF(__pyx_v_self->_state); - __pyx_v_self->_state = __pyx_n_u_deactivated; - - /* "cython/interface.pyx":599 - * return self._state - * - * def free(self): # <<<<<<<<<<<<<< - * self.__dealloc__() - * self._observer = NULL - */ + __pyx_v_self->_state = ((PyObject *)__pyx_n_u__deactivated); - /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cocoex.interface.Observer.free", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -7472,6 +6488,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c return __pyx_r; } +/* Python wrapper */ +static void __pyx_pw_6cocoex_9interface_8Observer_15__dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_pw_6cocoex_9interface_8Observer_15__dealloc__(PyObject *__pyx_v_self) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_pf_6cocoex_9interface_8Observer_14__dealloc__(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); +} + /* "cython/interface.pyx":603 * self._observer = NULL * self._state = 'deactivated' @@ -7480,18 +6505,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c * coco_observer_free(self._observer) */ -/* Python wrapper */ -static void __pyx_pw_6cocoex_9interface_8Observer_9__dealloc__(PyObject *__pyx_v_self); /*proto*/ -static void __pyx_pw_6cocoex_9interface_8Observer_9__dealloc__(PyObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); - __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { +static void __pyx_pf_6cocoex_9interface_8Observer_14__dealloc__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("__dealloc__", 0); @@ -7503,7 +6517,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ * coco_observer_free(self._observer) * */ - __pyx_t_1 = ((__pyx_v_self->_observer != NULL) != 0); + __pyx_t_1 = (__pyx_v_self->_observer != NULL); if (__pyx_t_1) { /* "cython/interface.pyx":605 @@ -7514,25 +6528,10 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): */ coco_observer_free(__pyx_v_self->_observer); - - /* "cython/interface.pyx":604 - * self._state = 'deactivated' - * def __dealloc__(self): - * if self._observer != NULL: # <<<<<<<<<<<<<< - * coco_observer_free(self._observer) - * - */ + goto __pyx_L3; } + __pyx_L3:; - /* "cython/interface.pyx":603 - * self._observer = NULL - * self._state = 'deactivated' - * def __dealloc__(self): # <<<<<<<<<<<<<< - * if self._observer != NULL: - * coco_observer_free(self._observer) - */ - - /* function exit code */ __Pyx_RefNannyFinishContext(); } @@ -7545,13 +6544,16 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ */ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v_problem, struct __pyx_opt_args_6cocoex_9interface_Problem_init *__pyx_optional_args) { - PyObject *__pyx_v_free = ((PyObject *)Py_True); + PyObject *__pyx_v_free = __pyx_k_32; PyObject *__pyx_v_suite_name = ((PyObject *)Py_None); struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_res = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("Problem_init", 0); if (__pyx_optional_args) { if (__pyx_optional_args->__pyx_n > 0) { @@ -7569,7 +6571,7 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v * res._suite_name = suite_name * return res._initialize(problem, free) */ - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6cocoex_9interface_Problem), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 613, __pyx_L1_error) + __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6cocoex_9interface_Problem)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_res = ((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_t_1); __pyx_t_1 = 0; @@ -7597,21 +6599,14 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v __Pyx_XDECREF(__pyx_r); __pyx_t_2.__pyx_n = 1; __pyx_t_2.free = __pyx_v_free; - __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Problem *)__pyx_v_res->__pyx_vtab)->_initialize(__pyx_v_res, __pyx_v_problem, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Problem *)__pyx_v_res->__pyx_vtab)->_initialize(__pyx_v_res, __pyx_v_problem, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":607 - * coco_observer_free(self._observer) - * - * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< - * """`Problem` class instance initialization wrapper passing - * a `problem_t*` C-variable to `__init__`. - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Problem_init", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -7623,14 +6618,6 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v return __pyx_r; } -/* "cython/interface.pyx":639 - * cdef _do_free - * cdef initialized - * def __cinit__(self): # <<<<<<<<<<<<<< - * cdef np.npy_intp shape[1] - * self.initialized = False # all done in _initialize - */ - /* Python wrapper */ static int __pyx_pw_6cocoex_9interface_7Problem_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_6cocoex_9interface_7Problem_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { @@ -7641,15 +6628,25 @@ static int __pyx_pw_6cocoex_9interface_7Problem_1__cinit__(PyObject *__pyx_v_sel __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; __pyx_r = __pyx_pf_6cocoex_9interface_7Problem___cinit__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":639 + * cdef _do_free + * cdef initialized + * def __cinit__(self): # <<<<<<<<<<<<<< + * cdef np.npy_intp shape[1] + * self.initialized = False # all done in _initialize + */ + static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__cinit__", 0); /* "cython/interface.pyx":641 @@ -7659,22 +6656,21 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco * cdef _initialize(self, coco_problem_t* problem, free=True): * cdef np.npy_intp shape[1] */ - __Pyx_INCREF(Py_False); - __Pyx_GIVEREF(Py_False); + __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->initialized); __Pyx_DECREF(__pyx_v_self->initialized); - __pyx_v_self->initialized = Py_False; - - /* "cython/interface.pyx":639 - * cdef _do_free - * cdef initialized - * def __cinit__(self): # <<<<<<<<<<<<<< - * cdef np.npy_intp shape[1] - * self.initialized = False # all done in _initialize - */ + __pyx_v_self->initialized = __pyx_t_1; + __pyx_t_1 = 0; - /* function exit code */ __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("cocoex.interface.Problem.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -7688,7 +6684,7 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco */ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, coco_problem_t *__pyx_v_problem, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args) { - PyObject *__pyx_v_free = ((PyObject *)Py_True); + PyObject *__pyx_v_free = __pyx_k_33; size_t __pyx_v_i; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -7697,10 +6693,11 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - size_t __pyx_t_8; - size_t __pyx_t_9; + size_t __pyx_t_6; + size_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_initialize", 0); if (__pyx_optional_args) { if (__pyx_optional_args->__pyx_n > 0) { @@ -7715,7 +6712,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * raise RuntimeError("Problem already initialized") * if problem == NULL: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 644, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_1) { /* "cython/interface.pyx":645 @@ -7725,20 +6722,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 645, __pyx_L1_error) + __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_35), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 645, __pyx_L1_error) - - /* "cython/interface.pyx":644 - * cdef _initialize(self, coco_problem_t* problem, free=True): - * cdef np.npy_intp shape[1] - * if self.initialized: # <<<<<<<<<<<<<< - * raise RuntimeError("Problem already initialized") - * if problem == NULL: - */ + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L3; } + __pyx_L3:; /* "cython/interface.pyx":646 * if self.initialized: @@ -7747,7 +6738,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * raise ValueError("in Problem._initialize(problem,...): problem is NULL") * self.problem = problem */ - __pyx_t_1 = ((__pyx_v_problem == NULL) != 0); + __pyx_t_1 = (__pyx_v_problem == NULL); if (__pyx_t_1) { /* "cython/interface.pyx":647 @@ -7757,20 +6748,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error) + __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_37), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 647, __pyx_L1_error) - - /* "cython/interface.pyx":646 - * if self.initialized: - * raise RuntimeError("Problem already initialized") - * if problem == NULL: # <<<<<<<<<<<<<< - * raise ValueError("in Problem._initialize(problem,...): problem is NULL") - * self.problem = problem - */ + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L4; } + __pyx_L4:; /* "cython/interface.pyx":648 * if problem == NULL: @@ -7788,7 +6773,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self._do_free = free * self._list_of_observers = [] */ - __pyx_t_2 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 649, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 649; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_problem_index); @@ -7816,12 +6801,12 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * # _problem_suite = _bstring(problem_suite) * # self.problem_suite = _problem_suite */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 651, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); __Pyx_GOTREF(__pyx_v_self->_list_of_observers); __Pyx_DECREF(__pyx_v_self->_list_of_observers); - __pyx_v_self->_list_of_observers = __pyx_t_2; + __pyx_v_self->_list_of_observers = ((PyObject *)__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":656 @@ -7858,40 +6843,23 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self.constraint_values = np.zeros(self._number_of_constraints) * self.x_initial = np.zeros(self._number_of_variables) */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 659, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 659, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 659, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (!__pyx_t_5) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 659, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 659, __pyx_L1_error) + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->y_values); __Pyx_DECREF(((PyObject *)__pyx_v_self->y_values)); @@ -7905,40 +6873,23 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self.x_initial = np.zeros(self._number_of_variables) * ## FIXME: Inefficient because we copy the bounds instead of */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 660, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 660, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 660, __pyx_L1_error) + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->constraint_values); __Pyx_DECREF(((PyObject *)__pyx_v_self->constraint_values)); @@ -7952,40 +6903,23 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * ## FIXME: Inefficient because we copy the bounds instead of * ## sharing the data. */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_6); - __pyx_t_6 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 661, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->x_initial); __Pyx_DECREF(((PyObject *)__pyx_v_self->x_initial)); @@ -7999,57 +6933,40 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self._upper_bounds = np.inf * np.ones(self._number_of_variables) * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 664, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__inf); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 664, __pyx_L1_error) + __pyx_t_2 = PyNumber_Negative(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 664, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__ones); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (!__pyx_t_4) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_5); - } else { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; + __pyx_t_5 = PyNumber_Multiply(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_GIVEREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GIVEREF(__pyx_t_5); __Pyx_GOTREF(__pyx_v_self->_lower_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_lower_bounds)); - __pyx_v_self->_lower_bounds = ((PyArrayObject *)__pyx_t_6); - __pyx_t_6 = 0; + __pyx_v_self->_lower_bounds = ((PyArrayObject *)__pyx_t_5); + __pyx_t_5 = 0; /* "cython/interface.pyx":665 * ## sharing the data. @@ -8058,54 +6975,37 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 665, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 665, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s__inf); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s__ones); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - } - } - if (!__pyx_t_3) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_6); - } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyNumber_Multiply(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GIVEREF(__pyx_t_7); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_upper_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_upper_bounds)); - __pyx_v_self->_upper_bounds = ((PyArrayObject *)__pyx_t_7); - __pyx_t_7 = 0; + __pyx_v_self->_upper_bounds = ((PyArrayObject *)__pyx_t_3); + __pyx_t_3 = 0; /* "cython/interface.pyx":667 * self._upper_bounds = np.inf * np.ones(self._number_of_variables) @@ -8114,9 +7014,9 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] */ - __pyx_t_8 = __pyx_v_self->_number_of_variables; - for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { - __pyx_v_i = __pyx_t_9; + __pyx_t_6 = __pyx_v_self->_number_of_variables; + for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { + __pyx_v_i = __pyx_t_7; /* "cython/interface.pyx":668 * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails @@ -8125,7 +7025,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: */ - __pyx_t_1 = ((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem) != NULL) != 0); + __pyx_t_1 = (coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem) != NULL); if (__pyx_t_1) { /* "cython/interface.pyx":669 @@ -8135,19 +7035,13 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] */ - __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 669, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_lower_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 669, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "cython/interface.pyx":668 - * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails - * for i in range(self._number_of_variables): - * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< - * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] - * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: - */ + __pyx_t_3 = PyFloat_FromDouble((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_lower_bounds), __pyx_v_i, __pyx_t_3, sizeof(size_t)+1, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L7; } + __pyx_L7:; /* "cython/interface.pyx":670 * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: @@ -8156,7 +7050,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] * self.initialized = True */ - __pyx_t_1 = ((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem) != NULL) != 0); + __pyx_t_1 = (coco_problem_get_largest_values_of_interest(__pyx_v_self->problem) != NULL); if (__pyx_t_1) { /* "cython/interface.pyx":671 @@ -8166,19 +7060,13 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self.initialized = True * return self */ - __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 671, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_upper_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 671, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "cython/interface.pyx":670 - * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: - * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] - * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< - * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] - * self.initialized = True - */ + __pyx_t_3 = PyFloat_FromDouble((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_upper_bounds), __pyx_v_i, __pyx_t_3, sizeof(size_t)+1, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8; } + __pyx_L8:; } /* "cython/interface.pyx":672 @@ -8188,11 +7076,13 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * return self * def constraint(self, x): */ - __Pyx_INCREF(Py_True); - __Pyx_GIVEREF(Py_True); + __pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->initialized); __Pyx_DECREF(__pyx_v_self->initialized); - __pyx_v_self->initialized = Py_True; + __pyx_v_self->initialized = __pyx_t_3; + __pyx_t_3 = 0; /* "cython/interface.pyx":673 * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] @@ -8206,22 +7096,13 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":642 - * cdef np.npy_intp shape[1] - * self.initialized = False # all done in _initialize - * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< - * cdef np.npy_intp shape[1] - * if self.initialized: - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("cocoex.interface.Problem._initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -8230,14 +7111,6 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":674 - * self.initialized = True - * return self - * def constraint(self, x): # <<<<<<<<<<<<<< - * """return constraint values for `x`. - * - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_3constraint(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/ static char __pyx_doc_6cocoex_9interface_7Problem_2constraint[] = "return constraint values for `x`. \n\n By convention, constraints with values >= 0 are satisfied.\n "; @@ -8246,16 +7119,25 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_3constraint(PyObject *__py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("constraint (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_2constraint(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_x)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":674 + * self.initialized = True + * return self + * def constraint(self, x): # <<<<<<<<<<<<<< + * """return constraint values for `x`. + * + */ + static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("constraint", 0); /* "cython/interface.pyx":679 @@ -8265,38 +7147,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(CYTHON_UNUSED * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error) + __pyx_t_1 = PyObject_Call(__pyx_builtin_NotImplementedError, ((PyObject *)__pyx_k_tuple_39), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 679, __pyx_L1_error) - - /* "cython/interface.pyx":674 - * self.initialized = True - * return self - * def constraint(self, x): # <<<<<<<<<<<<<< - * """return constraint values for `x`. - * - */ + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Problem.constraint", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; + __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":694 - * np.PyArray_DATA(self.constraint_values)) - * return np.array(self.constraint_values, copy=True) - * def recommend(self, arx): # <<<<<<<<<<<<<< - * """Recommend a solution, return `None`. - * - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_5recommend(PyObject *__pyx_v_self, PyObject *__pyx_v_arx); /*proto*/ static char __pyx_doc_6cocoex_9interface_7Problem_4recommend[] = "Recommend a solution, return `None`.\n\n The recommendation replaces the last evaluation or recommendation\n for the assessment of the algorithm.\n "; @@ -8305,16 +7173,25 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_5recommend(PyObject *__pyx __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("recommend (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_4recommend(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_arx)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":694 + * np.PyArray_DATA(self.constraint_values)) + * return np.array(self.constraint_values, copy=True) + * def recommend(self, arx): # <<<<<<<<<<<<<< + * """Recommend a solution, return `None`. + * + */ + static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_arx) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("recommend", 0); /* "cython/interface.pyx":700 @@ -8324,49 +7201,38 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED s * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 700, __pyx_L1_error) + __pyx_t_1 = PyObject_Call(__pyx_builtin_NotImplementedError, ((PyObject *)__pyx_k_tuple_40), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 700, __pyx_L1_error) - - /* "cython/interface.pyx":694 - * np.PyArray_DATA(self.constraint_values)) - * return np.array(self.constraint_values, copy=True) - * def recommend(self, arx): # <<<<<<<<<<<<<< - * """Recommend a solution, return `None`. - * - */ + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Problem.recommend", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; + __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":713 - * coco_recommend_solution(self.problem, np.PyArray_DATA(_x)) - * - * def logger_biobj_feed_solution(self, evaluation, y): # <<<<<<<<<<<<<< - * """Feed the given solution to logger_biobj in order to reconstruct its - * output. - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solution(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_6cocoex_9interface_7Problem_6logger_biobj_feed_solution[] = "Feed the given solution to logger_biobj in order to reconstruct its\n output.\n\n Return 1 if the given solution updated the archive and 0 otherwise.\n\n Used by preprocessing when updating the .info, .dat and .tdat files\n with new indicator reference values.\n "; static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solution(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_evaluation = 0; PyObject *__pyx_v_y = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("logger_biobj_feed_solution (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_evaluation,&__pyx_n_s_y,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__evaluation,&__pyx_n_s__y,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -8380,16 +7246,16 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solutio kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_evaluation)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__evaluation)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, 1); __PYX_ERR(0, 713, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "logger_biobj_feed_solution") < 0)) __PYX_ERR(0, 713, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "logger_biobj_feed_solution") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -8402,19 +7268,25 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solutio } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 713, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.logger_biobj_feed_solution", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solution(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), __pyx_v_evaluation, __pyx_v_y); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":713 + * coco_recommend_solution(self.problem, np.PyArray_DATA(_x)) + * + * def logger_biobj_feed_solution(self, evaluation, y): # <<<<<<<<<<<<<< + * """Feed the given solution to logger_biobj in order to reconstruct its + * output. + */ + static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solution(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_evaluation, PyObject *__pyx_v_y) { size_t __pyx_v__evaluation; PyArrayObject *__pyx_v__y = 0; @@ -8429,10 +7301,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; - int __pyx_t_8; - PyObject *__pyx_t_9 = NULL; + PyArrayObject *__pyx_t_8 = NULL; + int __pyx_t_9; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("logger_biobj_feed_solution", 0); __Pyx_INCREF(__pyx_v_y); __pyx_pybuffer__y.pybuffer.buf = NULL; @@ -8447,7 +7323,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_evaluation); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 722, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_AsSize_t(__pyx_v_evaluation); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v__evaluation = __pyx_t_1; /* "cython/interface.pyx":724 @@ -8457,33 +7333,37 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * if np.size(y) != self.number_of_objectives: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 724, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 724, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 724, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_y); - __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 724, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 724, __pyx_L1_error) - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 724, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_v_y); + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__copy), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 724, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s__double); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 724, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 724, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 724, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__order), ((PyObject *)__pyx_n_u__C)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF_SET(__pyx_v_y, __pyx_t_6); + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_v_y); + __pyx_v_y = __pyx_t_6; __pyx_t_6 = 0; /* "cython/interface.pyx":725 @@ -8493,43 +7373,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * raise ValueError( * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 725, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s__size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 725, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_v_y); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_y); + __Pyx_GIVEREF(__pyx_v_y); + __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 725, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - } else { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 725, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_y); - __Pyx_GIVEREF(__pyx_v_y); - PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_y); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 725, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } + __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_41); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 725, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 725, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_7) { /* "cython/interface.pyx":727 @@ -8539,39 +7403,23 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 727, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 727, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (!__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 727, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 727, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; - __Pyx_INCREF(__pyx_v_y); - __Pyx_GIVEREF(__pyx_v_y); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_y); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 727, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF(__pyx_v_y); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_y); + __Pyx_GIVEREF(__pyx_v_y); + __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 727, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; + __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_42), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":729 * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + @@ -8580,80 +7428,58 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * _y = y # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 729, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_number_of_objectiv, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 729, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_41); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_43), __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_6)); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_2)); + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_2)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L3; + } + __pyx_L3:; - /* "cython/interface.pyx":727 - * if np.size(y) != self.number_of_objectives: - * raise ValueError( - * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + # <<<<<<<<<<<<<< + /* "cython/interface.pyx":730 * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) + * _y = y # this is the final type conversion # <<<<<<<<<<<<<< + * if self.problem is NULL: + * raise InvalidProblemException() */ - __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 727, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "cython/interface.pyx":726 - * y = np.array(y, copy=False, dtype=np.double, order='C') - * if np.size(y) != self.number_of_objectives: - * raise ValueError( # <<<<<<<<<<<<<< - * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + - * "not match the number of objectives `number_of_objectives==%d`." - */ - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 726, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 726, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 726, __pyx_L1_error) - - /* "cython/interface.pyx":725 - * cdef np.ndarray[double, ndim=1, mode="c"] _y - * y = np.array(y, copy=False, dtype=np.double, order='C') - * if np.size(y) != self.number_of_objectives: # <<<<<<<<<<<<<< - * raise ValueError( - * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + - */ - } - - /* "cython/interface.pyx":730 - * "not match the number of objectives `number_of_objectives==%d`." - * % self.number_of_objectives) - * _y = y # this is the final type conversion # <<<<<<<<<<<<<< - * if self.problem is NULL: - * raise InvalidProblemException() - */ - if (!(likely(((__pyx_v_y) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_y, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 730, __pyx_L1_error) - __pyx_t_3 = __pyx_v_y; - __Pyx_INCREF(__pyx_t_3); + if (!(likely(((__pyx_v_y) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_y, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = ((PyArrayObject *)__pyx_v_y); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__y.rcbuffer->pybuffer); - __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__y.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_3), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); - if (unlikely(__pyx_t_8 < 0)) { - PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); + __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__y.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); + if (unlikely(__pyx_t_9 < 0)) { + PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd__y.rcbuffer->pybuffer, (PyObject*)__pyx_v__y, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) { - Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); + Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); __Pyx_RaiseBufferFallbackError(); } else { - PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); + PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12); } } __pyx_pybuffernd__y.diminfo[0].strides = __pyx_pybuffernd__y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__y.diminfo[0].shape = __pyx_pybuffernd__y.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 730, __pyx_L1_error) + if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_v__y = ((PyArrayObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_t_8 = 0; + __Pyx_INCREF(__pyx_v_y); + __pyx_v__y = ((PyArrayObject *)__pyx_v_y); /* "cython/interface.pyx":731 * % self.number_of_objectives) @@ -8662,7 +7488,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * raise InvalidProblemException() * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) */ - __pyx_t_7 = ((__pyx_v_self->problem == NULL) != 0); + __pyx_t_7 = (__pyx_v_self->problem == NULL); if (__pyx_t_7) { /* "cython/interface.pyx":732 @@ -8672,38 +7498,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) * */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 732, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 732, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 732, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 732, __pyx_L1_error) - - /* "cython/interface.pyx":731 - * % self.number_of_objectives) - * _y = y # this is the final type conversion - * if self.problem is NULL: # <<<<<<<<<<<<<< - * raise InvalidProblemException() - * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) - */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_44); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_6, 0, 0, 0); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L4; } + __pyx_L4:; /* "cython/interface.pyx":733 * if self.problem is NULL: @@ -8713,21 +7518,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyInt_From_int(coco_logger_biobj_feed_solution(__pyx_v_self->problem, __pyx_v__evaluation, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__y))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 733, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; + __pyx_t_6 = PyInt_FromLong(coco_logger_biobj_feed_solution(__pyx_v_self->problem, __pyx_v__evaluation, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__y))))); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; goto __pyx_L0; - /* "cython/interface.pyx":713 - * coco_recommend_solution(self.problem, np.PyArray_DATA(_x)) - * - * def logger_biobj_feed_solution(self, evaluation, y): # <<<<<<<<<<<<<< - * """Feed the given solution to logger_biobj in order to reconstruct its - * output. - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); @@ -8735,8 +7533,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__y.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} @@ -8753,14 +7549,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio return __pyx_r; } -/* "cython/interface.pyx":736 - * - * - * def add_observer(self, observer): # <<<<<<<<<<<<<< - * """`add_observer(self, observer: Observer)`, see `observe_with`. - * """ - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_9add_observer(PyObject *__pyx_v_self, PyObject *__pyx_v_observer); /*proto*/ static char __pyx_doc_6cocoex_9interface_7Problem_8add_observer[] = "`add_observer(self, observer: Observer)`, see `observe_with`.\n "; @@ -8769,19 +7557,27 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_9add_observer(PyObject *__ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("add_observer (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_8add_observer(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_observer)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":736 + * + * + * def add_observer(self, observer): # <<<<<<<<<<<<<< + * """`add_observer(self, observer: Observer)`, see `observe_with`. + * """ + */ + static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_observer) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("add_observer", 0); /* "cython/interface.pyx":739 @@ -8792,51 +7588,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx * def observe_with(self, observer): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 739, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__observe_with); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_observer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 739, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_observer); - __Pyx_GIVEREF(__pyx_v_observer); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_observer); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; + __Pyx_INCREF(__pyx_v_observer); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_observer); + __Pyx_GIVEREF(__pyx_v_observer); + __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":736 - * - * - * def add_observer(self, observer): # <<<<<<<<<<<<<< - * """`add_observer(self, observer: Observer)`, see `observe_with`. - * """ - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface.Problem.add_observer", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -8845,14 +7617,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx return __pyx_r; } -/* "cython/interface.pyx":741 - * return self.observe_with(observer) - * - * def observe_with(self, observer): # <<<<<<<<<<<<<< - * """`observe_with(self, observer: Observer)` attaches an observer - * to this problem. - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_11observe_with(PyObject *__pyx_v_self, PyObject *__pyx_v_observer); /*proto*/ static char __pyx_doc_6cocoex_9interface_7Problem_10observe_with[] = "`observe_with(self, observer: Observer)` attaches an observer\n to this problem.\n\n Attaching an observer can be considered as wrapping the observer\n around the problem. For the observer to be finalized, the problem\n must be free'd (implictly or explicitly).\n\n Details: `observer` can be `None`, in which case nothing is done.\n\n See also: class `Observer`\n "; @@ -8861,20 +7625,27 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_11observe_with(PyObject *_ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("observe_with (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_10observe_with(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_observer)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":741 + * return self.observe_with(observer) + * + * def observe_with(self, observer): # <<<<<<<<<<<<<< + * """`observe_with(self, observer: Observer)` attaches an observer + * to this problem. + */ + static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_observer) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("observe_with", 0); /* "cython/interface.pyx":753 @@ -8884,7 +7655,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py * assert self.problem * observer._update_current_observer_global() */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_observer); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 753, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_observer); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_1) { /* "cython/interface.pyx":754 @@ -8895,11 +7666,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py * self.problem = coco_problem_add_observer(self.problem, _current_observer) */ #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->problem != 0))) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 754, __pyx_L1_error) - } + if (unlikely(!(__pyx_v_self->problem != 0))) { + PyErr_SetNone(PyExc_AssertionError); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 754; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #endif @@ -8910,27 +7679,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py * self.problem = coco_problem_add_observer(self.problem, _current_observer) * self._list_of_observers.append(observer) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_observer, __pyx_n_s_update_current_observer_global); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 755, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 755, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 755, __pyx_L1_error) - } + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_observer, __pyx_n_s_45); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 755; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 755; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":756 * assert self.problem @@ -8948,16 +7702,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py * return self * */ - __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_list_of_observers, __pyx_v_observer); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 757, __pyx_L1_error) - - /* "cython/interface.pyx":753 - * See also: class `Observer` - * """ - * if observer: # <<<<<<<<<<<<<< - * assert self.problem - * observer._update_current_observer_global() - */ + __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_self->_list_of_observers, __pyx_v_observer); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L3; } + __pyx_L3:; /* "cython/interface.pyx":758 * self.problem = coco_problem_add_observer(self.problem, _current_observer) @@ -8971,19 +7721,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":741 - * return self.observe_with(observer) - * - * def observe_with(self, observer): # <<<<<<<<<<<<<< - * """`observe_with(self, observer: Observer)` attaches an observer - * to this problem. - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface.Problem.observe_with", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -8992,14 +7734,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py return __pyx_r; } -/* "cython/interface.pyx":760 - * return self - * - * def _f0(self, x): # <<<<<<<<<<<<<< - * """"inofficial" interface to `self` with target f-value of zero. """ - * return self(x) - self.final_target_fvalue1 - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_f0(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/ static char __pyx_doc_6cocoex_9interface_7Problem_12_f0[] = "\"inofficial\" interface to `self` with target f-value of zero. "; @@ -9008,19 +7742,27 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_f0(PyObject *__pyx_v_se __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_f0 (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_12_f0(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_x)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":760 + * return self + * + * def _f0(self, x): # <<<<<<<<<<<<<< + * """"inofficial" interface to `self` with target f-value of zero. """ + * return self(x) - self.final_target_fvalue1 + */ + static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_x) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_f0", 0); /* "cython/interface.pyx":762 @@ -9031,56 +7773,30 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co * @property */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __pyx_t_2 = ((PyObject *)__pyx_v_self); __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 762, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 762, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_x); - __Pyx_GIVEREF(__pyx_v_x); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 762, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_final_target_fvalue1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 762, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 762; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_x); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_x); + __Pyx_GIVEREF(__pyx_v_x); + __pyx_t_2 = PyObject_Call(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 762; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 762, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_46); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 762; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyNumber_Subtract(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 762; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":760 - * return self - * - * def _f0(self, x): # <<<<<<<<<<<<<< - * """"inofficial" interface to `self` with target f-value of zero. """ - * return self(x) - self.final_target_fvalue1 - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface.Problem._f0", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -9089,6 +7805,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_14initial_solution[] = "return feasible initial solution"; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("initial_solution (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_14initial_solution(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":765 * * @property @@ -9097,27 +7825,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co * coco_problem_get_initial_solution(self.problem, */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_16initial_solution_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_16initial_solution_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("initial_solution", 0); /* "cython/interface.pyx":768 * """return feasible initial solution""" @@ -9128,14 +7846,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ */ __pyx_t_1 = ((PyObject *)__pyx_v_self->x_initial); __Pyx_INCREF(__pyx_t_1); - - /* "cython/interface.pyx":767 - * def initial_solution(self): - * """return feasible initial solution""" - * coco_problem_get_initial_solution(self.problem, # <<<<<<<<<<<<<< - * np.PyArray_DATA(self.x_initial)) - * return np.array(self.x_initial, copy=True) - */ coco_problem_get_initial_solution(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_1)))); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -9147,43 +7857,39 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ * def list_of_observers(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 769, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 769, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 769, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self->x_initial)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->x_initial)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->x_initial)); - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 769, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 769, __pyx_L1_error) - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 769, __pyx_L1_error) + __Pyx_GIVEREF(((PyObject *)__pyx_v_self->x_initial)); + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_3)); + __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__copy), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":765 - * - * @property - * def initial_solution(self): # <<<<<<<<<<<<<< - * """return feasible initial solution""" - * coco_problem_get_initial_solution(self.problem, - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("cocoex.interface.Problem.initial_solution.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.initial_solution", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -9191,31 +7897,29 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ return __pyx_r; } -/* "cython/interface.pyx":771 - * return np.array(self.x_initial, copy=True) - * @property - * def list_of_observers(self): # <<<<<<<<<<<<<< - * return self._list_of_observers - * property number_of_variables: # this is cython syntax, not known in Python - */ - /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17list_of_observers_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17list_of_observers_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17list_of_observers(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17list_of_observers(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_17list_of_observers___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ + __Pyx_RefNannySetupContext("list_of_observers (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_16list_of_observers(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_17list_of_observers___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* "cython/interface.pyx":771 + * return np.array(self.x_initial, copy=True) + * @property + * def list_of_observers(self): # <<<<<<<<<<<<<< + * return self._list_of_observers + * property number_of_variables: # this is cython syntax, not known in Python + */ + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16list_of_observers(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_RefNannySetupContext("list_of_observers", 0); /* "cython/interface.pyx":772 * @property @@ -9229,29 +7933,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_17list_of_observers___get_ __pyx_r = __pyx_v_self->_list_of_observers; goto __pyx_L0; - /* "cython/interface.pyx":771 - * return np.array(self.x_initial, copy=True) - * @property - * def list_of_observers(self): # <<<<<<<<<<<<<< - * return self._list_of_observers - * property number_of_variables: # this is cython syntax, not known in Python - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":776 - * # this is a class definition which is instantiated automatically!? - * """Number of variables this problem instance expects as input.""" - * def __get__(self): # <<<<<<<<<<<<<< - * return self._number_of_variables - * @property - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19number_of_variables_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19number_of_variables_1__get__(PyObject *__pyx_v_self) { @@ -9259,16 +7947,25 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19number_of_variables_1__g __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":776 + * # this is a class definition which is instantiated automatically!? + * """Number of variables this problem instance expects as input.""" + * def __get__(self): # <<<<<<<<<<<<<< + * return self._number_of_variables + * @property + */ + static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":777 @@ -9279,21 +7976,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge * def dimension(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 777, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":776 - * # this is a class definition which is instantiated automatically!? - * """Number of variables this problem instance expects as input.""" - * def __get__(self): # <<<<<<<<<<<<<< - * return self._number_of_variables - * @property - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Problem.number_of_variables.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -9304,6 +7994,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19dimension(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_18dimension[] = "alias for `number_of_variables` of the input space"; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19dimension(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("dimension (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_18dimension(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":779 * return self._number_of_variables * @property @@ -9312,24 +8014,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge * return self._number_of_variables */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_9dimension_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_9dimension_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18dimension(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("dimension", 0); /* "cython/interface.pyx":781 * def dimension(self): @@ -9339,24 +8031,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct * def number_of_objectives(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 781, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":779 - * return self._number_of_variables - * @property - * def dimension(self): # <<<<<<<<<<<<<< - * """alias for `number_of_variables` of the input space""" - * return self._number_of_variables - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.dimension.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.dimension", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -9364,6 +8049,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21number_of_objectives(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_20number_of_objectives[] = "number of objectives, if equal to 1, call returns a scalar"; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21number_of_objectives(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("number_of_objectives (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":783 * return self._number_of_variables * @property @@ -9372,24 +8069,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct * return self._number_of_objectives */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_20number_of_objectives_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_20number_of_objectives_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("number_of_objectives", 0); /* "cython/interface.pyx":785 * def number_of_objectives(self): @@ -9399,24 +8086,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g * def number_of_constraints(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 785, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":783 - * return self._number_of_variables - * @property - * def number_of_objectives(self): # <<<<<<<<<<<<<< - * "number of objectives, if equal to 1, call returns a scalar" - * return self._number_of_objectives - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.number_of_objectives.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.number_of_objectives", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -9424,6 +8104,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23number_of_constraints(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_22number_of_constraints[] = "number of constraints"; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23number_of_constraints(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("number_of_constraints (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_22number_of_constraints(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":787 * return self._number_of_objectives * @property @@ -9432,24 +8124,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g * return self._number_of_constraints */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21number_of_constraints_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21number_of_constraints_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22number_of_constraints(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("number_of_constraints", 0); /* "cython/interface.pyx":789 * def number_of_constraints(self): @@ -9459,24 +8141,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___ * def lower_bounds(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 789, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":787 - * return self._number_of_objectives - * @property - * def number_of_constraints(self): # <<<<<<<<<<<<<< - * "number of constraints" - * return self._number_of_constraints - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.number_of_constraints.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.number_of_constraints", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -9484,6 +8159,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___ return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_25lower_bounds(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_24lower_bounds[] = "depending on the test bed, these are not necessarily strict bounds\n "; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_25lower_bounds(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("lower_bounds (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_24lower_bounds(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":791 * return self._number_of_constraints * @property @@ -9492,23 +8179,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___ * """ */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_12lower_bounds_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_12lower_bounds_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24lower_bounds(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_RefNannySetupContext("lower_bounds", 0); /* "cython/interface.pyx":794 * """depending on the test bed, these are not necessarily strict bounds @@ -9522,21 +8196,25 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(str __pyx_r = ((PyObject *)__pyx_v_self->_lower_bounds); goto __pyx_L0; - /* "cython/interface.pyx":791 - * return self._number_of_constraints - * @property - * def lower_bounds(self): # <<<<<<<<<<<<<< - * """depending on the test bed, these are not necessarily strict bounds - * """ - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_27upper_bounds(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_26upper_bounds[] = "depending on the test bed, these are not necessarily strict bounds\n "; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_27upper_bounds(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("upper_bounds (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_26upper_bounds(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":796 * return self._lower_bounds * @property @@ -9545,23 +8223,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(str * """ */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_12upper_bounds_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_12upper_bounds_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26upper_bounds(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_RefNannySetupContext("upper_bounds", 0); /* "cython/interface.pyx":799 * """depending on the test bed, these are not necessarily strict bounds @@ -9575,21 +8240,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(str __pyx_r = ((PyObject *)__pyx_v_self->_upper_bounds); goto __pyx_L0; - /* "cython/interface.pyx":796 - * return self._lower_bounds - * @property - * def upper_bounds(self): # <<<<<<<<<<<<<< - * """depending on the test bed, these are not necessarily strict bounds - * """ - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_29evaluations(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_29evaluations(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("evaluations (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_28evaluations(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":801 * return self._upper_bounds * @property @@ -9598,24 +8266,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(str * @property */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_11evaluations_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_11evaluations_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28evaluations(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("evaluations", 0); /* "cython/interface.pyx":802 * @property @@ -9625,24 +8283,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru * def final_target_hit(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 802, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":801 - * return self._upper_bounds - * @property - * def evaluations(self): # <<<<<<<<<<<<<< - * return coco_problem_get_evaluations(self.problem) - * @property - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.evaluations.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.evaluations", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -9650,6 +8301,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_31final_target_hit(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_30final_target_hit[] = "return 1 if the final target is known and has been hit, 0 otherwise\n "; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_31final_target_hit(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("final_target_hit (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_30final_target_hit(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":804 * return coco_problem_get_evaluations(self.problem) * @property @@ -9658,24 +8321,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru * """ */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_16final_target_hit_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_16final_target_hit_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30final_target_hit(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("final_target_hit", 0); /* "cython/interface.pyx":807 * """return 1 if the final target is known and has been hit, 0 otherwise @@ -9685,11 +8338,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ * @property */ #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->problem != 0))) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 807, __pyx_L1_error) - } + if (unlikely(!(__pyx_v_self->problem != 0))) { + PyErr_SetNone(PyExc_AssertionError); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #endif @@ -9701,24 +8352,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ * def final_target_fvalue1(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(coco_problem_final_target_hit(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 808, __pyx_L1_error) + __pyx_t_1 = PyInt_FromLong(coco_problem_final_target_hit(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":804 - * return coco_problem_get_evaluations(self.problem) - * @property - * def final_target_hit(self): # <<<<<<<<<<<<<< - * """return 1 if the final target is known and has been hit, 0 otherwise - * """ - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.final_target_hit.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.final_target_hit", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -9726,6 +8370,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_33final_target_fvalue1(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_33final_target_fvalue1(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("final_target_fvalue1 (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_32final_target_fvalue1(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":810 * return coco_problem_final_target_hit(self.problem) * @property @@ -9734,24 +8389,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ * return coco_problem_get_final_target_fvalue1(self.problem) */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_20final_target_fvalue1_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_20final_target_fvalue1_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32final_target_fvalue1(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { + PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_20final_target_fvalue1___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20final_target_fvalue1___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("final_target_fvalue1", 0); /* "cython/interface.pyx":811 * @property @@ -9761,11 +8406,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20final_target_fvalue1___g * @property */ #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->problem != 0))) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 811, __pyx_L1_error) - } + if (unlikely(!(__pyx_v_self->problem != 0))) { + PyErr_SetNone(PyExc_AssertionError); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #endif @@ -9777,24 +8420,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20final_target_fvalue1___g * def best_observed_fvalue1(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_final_target_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 812, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_final_target_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":810 - * return coco_problem_final_target_hit(self.problem) - * @property - * def final_target_fvalue1(self): # <<<<<<<<<<<<<< - * assert(self.problem) - * return coco_problem_get_final_target_fvalue1(self.problem) - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.final_target_fvalue1.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.final_target_fvalue1", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -9802,6 +8438,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20final_target_fvalue1___g return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_35best_observed_fvalue1(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_35best_observed_fvalue1(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("best_observed_fvalue1 (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_34best_observed_fvalue1(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":814 * return coco_problem_get_final_target_fvalue1(self.problem) * @property @@ -9810,24 +8457,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20final_target_fvalue1___g * return coco_problem_get_best_observed_fvalue1(self.problem) */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21best_observed_fvalue1_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21best_observed_fvalue1_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_34best_observed_fvalue1(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("best_observed_fvalue1", 0); /* "cython/interface.pyx":815 * @property @@ -9837,11 +8474,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ * */ #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->problem != 0))) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 815, __pyx_L1_error) - } + if (unlikely(!(__pyx_v_self->problem != 0))) { + PyErr_SetNone(PyExc_AssertionError); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #endif @@ -9853,24 +8488,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ * def free(self, force=False): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_best_observed_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_best_observed_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":814 - * return coco_problem_get_final_target_fvalue1(self.problem) - * @property - * def best_observed_fvalue1(self): # <<<<<<<<<<<<<< - * assert(self.problem) - * return coco_problem_get_best_observed_fvalue1(self.problem) - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.best_observed_fvalue1.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.best_observed_fvalue1", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -9878,26 +8506,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ return __pyx_r; } -/* "cython/interface.pyx":818 - * return coco_problem_get_best_observed_fvalue1(self.problem) - * - * def free(self, force=False): # <<<<<<<<<<<<<< - * """Free the given test problem. - * - */ - /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_14free[] = "Free the given test problem.\n\n Not strictly necessary (unless, possibly, for the observer). `free`\n ensures that all files associated with the problem are closed as\n soon as possible and any memory is freed. After free()ing the\n problem, all other operations are invalid and will raise an\n exception.\n "; -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_37free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_36free[] = "Free the given test problem.\n\n Not strictly necessary (unless, possibly, for the observer). `free`\n ensures that all files associated with the problem are closed as\n soon as possible and any memory is freed. After free()ing the\n problem, all other operations are invalid and will raise an\n exception.\n "; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_37free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_force = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("free (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_force,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__force,0}; PyObject* values[1] = {0}; - values[0] = ((PyObject *)Py_False); + values[0] = __pyx_k_47; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); @@ -9910,12 +8533,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15free(PyObject *__pyx_v_s switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_force); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__force); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "free") < 0)) __PYX_ERR(0, 818, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "free") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -9928,24 +8551,35 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15free(PyObject *__pyx_v_s } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("free", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 818, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("free", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.free", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_14free(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), __pyx_v_force); - - /* function exit code */ + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_36free(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), __pyx_v_force); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14free(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_force) { +/* "cython/interface.pyx":818 + * return coco_problem_get_best_observed_fvalue1(self.problem) + * + * def free(self, force=False): # <<<<<<<<<<<<<< + * """Free the given test problem. + * + */ + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36free(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_force) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; + int __pyx_t_3; + int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("free", 0); /* "cython/interface.pyx":827 @@ -9955,22 +8589,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14free(struct __pyx_obj_6c * coco_problem_free(self.problem) * self.problem = NULL */ - __pyx_t_2 = ((__pyx_v_self->problem != NULL) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 827, __pyx_L1_error) - if (!__pyx_t_2) { + __pyx_t_1 = (__pyx_v_self->problem != NULL); + if (__pyx_t_1) { + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!__pyx_t_2) { + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __pyx_t_3; + } else { + __pyx_t_4 = __pyx_t_2; + } + __pyx_t_2 = __pyx_t_4; } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; + __pyx_t_2 = __pyx_t_1; } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 827, __pyx_L1_error) - __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; - if (__pyx_t_1) { + if (__pyx_t_2) { /* "cython/interface.pyx":828 * """ @@ -9989,25 +8621,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14free(struct __pyx_obj_6c * def __dealloc__(self): */ __pyx_v_self->problem = NULL; - - /* "cython/interface.pyx":827 - * exception. - * """ - * if self.problem != NULL and (self._do_free or force): # <<<<<<<<<<<<<< - * coco_problem_free(self.problem) - * self.problem = NULL - */ + goto __pyx_L3; } + __pyx_L3:; - /* "cython/interface.pyx":818 - * return coco_problem_get_best_observed_fvalue1(self.problem) - * - * def free(self, force=False): # <<<<<<<<<<<<<< - * """Free the given test problem. - * - */ - - /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; @@ -10019,6 +8636,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14free(struct __pyx_obj_6c return __pyx_r; } +/* Python wrapper */ +static void __pyx_pw_6cocoex_9interface_7Problem_39__dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_pw_6cocoex_9interface_7Problem_39__dealloc__(PyObject *__pyx_v_self) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_pf_6cocoex_9interface_7Problem_38__dealloc__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); +} + /* "cython/interface.pyx":831 * self.problem = NULL * @@ -10027,21 +8653,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14free(struct __pyx_obj_6c * # free let the problem_free() call(s) in coco_suite_t crash, hence */ -/* Python wrapper */ -static void __pyx_pw_6cocoex_9interface_7Problem_17__dealloc__(PyObject *__pyx_v_self); /*proto*/ -static void __pyx_pw_6cocoex_9interface_7Problem_17__dealloc__(PyObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); - __pyx_pf_6cocoex_9interface_7Problem_16__dealloc__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -static void __pyx_pf_6cocoex_9interface_7Problem_16__dealloc__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static void __pyx_pf_6cocoex_9interface_7Problem_38__dealloc__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; + int __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__dealloc__", 0); /* "cython/interface.pyx":835 @@ -10051,16 +8670,14 @@ static void __pyx_pf_6cocoex_9interface_7Problem_16__dealloc__(struct __pyx_obj_ * coco_problem_free(self.problem) * */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 835, __pyx_L1_error) - if (__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_1) { + __pyx_t_2 = (__pyx_v_self->problem != NULL); + __pyx_t_3 = __pyx_t_2; } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; + __pyx_t_3 = __pyx_t_1; } - __pyx_t_2 = ((__pyx_v_self->problem != NULL) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; - if (__pyx_t_1) { + if (__pyx_t_3) { /* "cython/interface.pyx":836 * # the possibility to set _do_free = False @@ -10070,53 +8687,33 @@ static void __pyx_pf_6cocoex_9interface_7Problem_16__dealloc__(struct __pyx_obj_ * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): */ coco_problem_free(__pyx_v_self->problem); - - /* "cython/interface.pyx":835 - * # free let the problem_free() call(s) in coco_suite_t crash, hence - * # the possibility to set _do_free = False - * if self._do_free and self.problem != NULL: # this is not guaranteed to work, see above link # <<<<<<<<<<<<<< - * coco_problem_free(self.problem) - * - */ + goto __pyx_L3; } + __pyx_L3:; - /* "cython/interface.pyx":831 - * self.problem = NULL - * - * def __dealloc__(self): # <<<<<<<<<<<<<< - * # see http://docs.cython.org/src/userguide/special_methods.html - * # free let the problem_free() call(s) in coco_suite_t crash, hence - */ - - /* function exit code */ goto __pyx_L0; __pyx_L1_error:; - __Pyx_WriteUnraisable("cocoex.interface.Problem.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); + __Pyx_AddTraceback("cocoex.interface.Problem.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_RefNannyFinishContext(); } -/* "cython/interface.pyx":839 - * - * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): - * def __call__(self, x): # <<<<<<<<<<<<<< - * """return objective function value of input `x`""" - * cdef np.ndarray[double, ndim=1, mode="c"] _x - */ - /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_18__call__[] = "return objective function value of input `x`"; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_41__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_40__call__[] = "return objective function value of input `x`"; #if CYTHON_COMPILING_IN_CPYTHON -struct wrapperbase __pyx_wrapperbase_6cocoex_9interface_7Problem_18__call__; +struct wrapperbase __pyx_wrapperbase_6cocoex_9interface_7Problem_40__call__; #endif -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_41__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_x = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__call__ (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__x,0}; PyObject* values[1] = {0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -10129,11 +8726,11 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19__call__(PyObject *__pyx kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 839, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { goto __pyx_L5_argtuple_error; @@ -10144,20 +8741,26 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19__call__(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 839, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_18__call__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), __pyx_v_x); - - /* function exit code */ + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_40__call__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), __pyx_v_x); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_x) { +/* "cython/interface.pyx":839 + * + * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): + * def __call__(self, x): # <<<<<<<<<<<<<< + * """return objective function value of input `x`""" + * cdef np.ndarray[double, ndim=1, mode="c"] _x + */ + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_x) { PyArrayObject *__pyx_v__x = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd__x; __Pyx_Buffer __pyx_pybuffer__x; @@ -10169,10 +8772,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; + PyArrayObject *__pyx_t_7 = NULL; + int __pyx_t_8; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__call__", 0); __Pyx_INCREF(__pyx_v_x); __pyx_pybuffer__x.pybuffer.buf = NULL; @@ -10188,12 +8795,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob * if np.size(x) != self.number_of_variables: */ #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 842, __pyx_L1_error) - if (unlikely(!__pyx_t_1)) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 842, __pyx_L1_error) - } + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_1)) { + PyErr_SetNone(PyExc_AssertionError); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #endif @@ -10204,33 +8809,37 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob * if np.size(x) != self.number_of_variables: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 843, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 843, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 843, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); - __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 843, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 843, __pyx_L1_error) - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 843, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_v_x); + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__copy), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 843, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s__double); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 843, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 843, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 843, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__order), ((PyObject *)__pyx_n_u__C)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_6); + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_v_x); + __pyx_v_x = __pyx_t_6; __pyx_t_6 = 0; /* "cython/interface.pyx":844 @@ -10240,43 +8849,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 844, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s__size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 844, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_v_x); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_x); + __Pyx_GIVEREF(__pyx_v_x); + __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - } else { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_x); - __Pyx_GIVEREF(__pyx_v_x); - PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_x); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } + __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__number_of_variables); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 844, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 844, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_1) { /* "cython/interface.pyx":846 @@ -10286,39 +8879,23 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 846, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 846, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (!__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 846, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 846, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; - __Pyx_INCREF(__pyx_v_x); - __Pyx_GIVEREF(__pyx_v_x); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 846, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF(__pyx_v_x); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x); + __Pyx_GIVEREF(__pyx_v_x); + __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 846, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; + __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_48), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":848 * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + @@ -10327,51 +8904,29 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob * _x = x # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 848, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 848, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "cython/interface.pyx":846 - * if np.size(x) != self.number_of_variables: - * raise ValueError( - * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< - * "not match the problem dimension `number_of_variables==%d`." - * % self.number_of_variables) - */ - __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 846, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "cython/interface.pyx":845 - * x = np.array(x, copy=False, dtype=np.double, order='C') - * if np.size(x) != self.number_of_variables: - * raise ValueError( # <<<<<<<<<<<<<< - * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + - * "not match the problem dimension `number_of_variables==%d`." - */ - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 845, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 845, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 845, __pyx_L1_error) - - /* "cython/interface.pyx":844 - * assert self.initialized - * x = np.array(x, copy=False, dtype=np.double, order='C') - * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< - * raise ValueError( - * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + - */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__number_of_variables); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_49), __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_6)); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_2)); + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_2)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L3; } + __pyx_L3:; /* "cython/interface.pyx":849 * "not match the problem dimension `number_of_variables==%d`." @@ -10380,27 +8935,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 849, __pyx_L1_error) - __pyx_t_3 = __pyx_v_x; - __Pyx_INCREF(__pyx_t_3); + if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = ((PyArrayObject *)__pyx_v_x); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__x.rcbuffer->pybuffer); - __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_3), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); - if (unlikely(__pyx_t_7 < 0)) { - PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); + __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); + if (unlikely(__pyx_t_8 < 0)) { + PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)__pyx_v__x, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) { - Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); + Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); __Pyx_RaiseBufferFallbackError(); } else { - PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10); + PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); } } __pyx_pybuffernd__x.diminfo[0].strides = __pyx_pybuffernd__x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__x.diminfo[0].shape = __pyx_pybuffernd__x.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 849, __pyx_L1_error) + if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_v__x = ((PyArrayObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_t_7 = 0; + __Pyx_INCREF(__pyx_v_x); + __pyx_v__x = ((PyArrayObject *)__pyx_v_x); /* "cython/interface.pyx":850 * % self.number_of_variables) @@ -10409,7 +8964,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob * raise InvalidProblemException() * coco_evaluate_function(self.problem, */ - __pyx_t_1 = ((__pyx_v_self->problem == NULL) != 0); + __pyx_t_1 = (__pyx_v_self->problem == NULL); if (__pyx_t_1) { /* "cython/interface.pyx":851 @@ -10419,38 +8974,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob * coco_evaluate_function(self.problem, * np.PyArray_DATA(_x), */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 851, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 851, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 851, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 851, __pyx_L1_error) - - /* "cython/interface.pyx":850 - * % self.number_of_variables) - * _x = x # this is the final type conversion - * if self.problem is NULL: # <<<<<<<<<<<<<< - * raise InvalidProblemException() - * coco_evaluate_function(self.problem, - */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_44); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_6, 0, 0, 0); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L4; } + __pyx_L4:; /* "cython/interface.pyx":854 * coco_evaluate_function(self.problem, @@ -10459,18 +8993,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob * if self._number_of_objectives == 1: * return self.y_values[0] */ - __pyx_t_3 = ((PyObject *)__pyx_v_self->y_values); - __Pyx_INCREF(__pyx_t_3); - - /* "cython/interface.pyx":852 - * if self.problem is NULL: - * raise InvalidProblemException() - * coco_evaluate_function(self.problem, # <<<<<<<<<<<<<< - * np.PyArray_DATA(_x), - * np.PyArray_DATA(self.y_values)) - */ - coco_evaluate_function(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_3)))); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = ((PyObject *)__pyx_v_self->y_values); + __Pyx_INCREF(__pyx_t_6); + coco_evaluate_function(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_6)))); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "cython/interface.pyx":855 * np.PyArray_DATA(_x), @@ -10479,7 +9005,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob * return self.y_values[0] * return np.array(self.y_values, copy=True) */ - __pyx_t_1 = ((__pyx_v_self->_number_of_objectives == 1) != 0); + __pyx_t_1 = (__pyx_v_self->_number_of_objectives == 1); if (__pyx_t_1) { /* "cython/interface.pyx":856 @@ -10490,20 +9016,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->y_values), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 856, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->y_values), 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 856; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; goto __pyx_L0; - - /* "cython/interface.pyx":855 - * np.PyArray_DATA(_x), - * np.PyArray_DATA(self.y_values)) - * if self._number_of_objectives == 1: # <<<<<<<<<<<<<< - * return self.y_values[0] - * return np.array(self.y_values, copy=True) - */ + goto __pyx_L5; } + __pyx_L5:; /* "cython/interface.pyx":857 * if self._number_of_objectives == 1: @@ -10513,37 +9033,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 857, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 857, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 857, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(((PyObject *)__pyx_v_self->y_values)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->y_values)); - PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->y_values)); - __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 857, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 857, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 857, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s__array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(((PyObject *)__pyx_v_self->y_values)); + PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_v_self->y_values)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self->y_values)); + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + __pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__copy), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":839 - * - * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): - * def __call__(self, x): # <<<<<<<<<<<<<< - * """return objective function value of input `x`""" - * cdef np.ndarray[double, ndim=1, mode="c"] _x - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); @@ -10551,8 +9067,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__x.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} @@ -10569,6 +9083,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_43id(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_42id[] = "id as string without spaces or weird characters"; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_43id(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("id (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_42id(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":860 * * @property @@ -10577,25 +9103,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob * if self.problem is not NULL: */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_2id_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_2id_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_2id___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_42id(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("id", 0); /* "cython/interface.pyx":862 * def id(self): @@ -10604,7 +9120,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o * return coco_problem_get_id(self.problem) * */ - __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); + __pyx_t_1 = (__pyx_v_self->problem != NULL); if (__pyx_t_1) { /* "cython/interface.pyx":863 @@ -10615,35 +9131,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 863, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; + __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_2)); + __pyx_r = ((PyObject *)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0; - - /* "cython/interface.pyx":862 - * def id(self): - * "id as string without spaces or weird characters" - * if self.problem is not NULL: # <<<<<<<<<<<<<< - * return coco_problem_get_id(self.problem) - * - */ + goto __pyx_L3; } + __pyx_L3:; - /* "cython/interface.pyx":860 - * - * @property - * def id(self): # <<<<<<<<<<<<<< - * "id as string without spaces or weird characters" - * if self.problem is not NULL: - */ - - /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("cocoex.interface.Problem.id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.id", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -10651,6 +9152,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_45name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_45name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("name (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_44name(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":866 * * @property @@ -10659,25 +9171,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o * return coco_problem_get_name(self.problem) */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_4name_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_4name___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_44name(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("name", 0); /* "cython/interface.pyx":867 * @property @@ -10686,7 +9188,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx * return coco_problem_get_name(self.problem) * */ - __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); + __pyx_t_1 = (__pyx_v_self->problem != NULL); if (__pyx_t_1) { /* "cython/interface.pyx":868 @@ -10697,35 +9199,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 868, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; + __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_2)); + __pyx_r = ((PyObject *)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0; - - /* "cython/interface.pyx":867 - * @property - * def name(self): - * if self.problem is not NULL: # <<<<<<<<<<<<<< - * return coco_problem_get_name(self.problem) - * - */ + goto __pyx_L3; } + __pyx_L3:; - /* "cython/interface.pyx":866 - * - * @property - * def name(self): # <<<<<<<<<<<<<< - * if self.problem is not NULL: - * return coco_problem_get_name(self.problem) - */ - - /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("cocoex.interface.Problem.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.name", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -10733,6 +9220,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_47index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_46index[] = "problem index in the benchmark `Suite` of origin"; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_47index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("index (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_46index(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":871 * * @property @@ -10741,23 +9240,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx * return self._problem_index */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_5index_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_5index_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_5index___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_46index(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_RefNannySetupContext("index", 0); /* "cython/interface.pyx":873 * def index(self): @@ -10771,21 +9257,25 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __py __pyx_r = __pyx_v_self->_problem_index; goto __pyx_L0; - /* "cython/interface.pyx":871 - * - * @property - * def index(self): # <<<<<<<<<<<<<< - * """problem index in the benchmark `Suite` of origin""" - * return self._problem_index - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_49suite(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_48suite[] = "benchmark suite this problem is from"; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_49suite(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("suite (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_48suite(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":876 * * @property @@ -10794,23 +9284,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __py * return self._suite_name */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_5suite_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_5suite_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_5suite___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_48suite(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_RefNannySetupContext("suite", 0); /* "cython/interface.pyx":878 * def suite(self): @@ -10824,21 +9301,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __py __pyx_r = __pyx_v_self->_suite_name; goto __pyx_L0; - /* "cython/interface.pyx":876 - * - * @property - * def suite(self): # <<<<<<<<<<<<<< - * """benchmark suite this problem is from""" - * return self._suite_name - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_51info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_51info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("info (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_50info(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":881 * * @property @@ -10847,25 +9327,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __py * */ -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_4info_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_4info_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_4info___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_50info(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("info", 0); /* "cython/interface.pyx":882 * @property @@ -10875,31 +9345,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx * def __str__(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 882, __pyx_L1_error) + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":881 - * - * @property - * def info(self): # <<<<<<<<<<<<<< - * return str(self) - * - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("cocoex.interface.Problem.info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.info", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -10907,28 +9370,26 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx return __pyx_r; } -/* "cython/interface.pyx":884 - * return str(self) - * - * def __str__(self): # <<<<<<<<<<<<<< - * if self.problem is not NULL: - * objective = "%s-objective" % ('single' - */ - /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21__str__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21__str__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_53__str__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_53__str__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_20__str__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_52__str__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* "cython/interface.pyx":884 + * return str(self) + * + * def __str__(self): # <<<<<<<<<<<<<< + * if self.problem is not NULL: + * objective = "%s-objective" % ('single' + */ + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_52__str__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_v_objective = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -10939,8 +9400,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - Py_ssize_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__str__", 0); /* "cython/interface.pyx":885 @@ -10950,7 +9412,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj * objective = "%s-objective" % ('single' * if self.number_of_objectives == 1 */ - __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); + __pyx_t_1 = (__pyx_v_self->problem != NULL); if (__pyx_t_1) { /* "cython/interface.pyx":887 @@ -10960,16 +9422,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj * else str(self.number_of_objectives)) * return "%s %s problem (%s)" % (self.id, objective, */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 887, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_41); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 887, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_int_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 887, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_1) { - __Pyx_INCREF(__pyx_n_u_single); - __pyx_t_2 = __pyx_n_u_single; + __Pyx_INCREF(((PyObject *)__pyx_n_u__single)); + __pyx_t_2 = ((PyObject *)__pyx_n_u__single); } else { /* "cython/interface.pyx":888 @@ -10979,29 +9440,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj * return "%s %s problem (%s)" % (self.id, objective, * self.name.replace(self.name.split()[0], */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 888, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_41); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 888, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 888, __pyx_L1_error) + __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_4; __pyx_t_4 = 0; } - - /* "cython/interface.pyx":886 - * def __str__(self): - * if self.problem is not NULL: - * objective = "%s-objective" % ('single' # <<<<<<<<<<<<<< - * if self.number_of_objectives == 1 - * else str(self.number_of_objectives)) - */ - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_s_objective, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 886, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_50), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_objective = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; @@ -11014,7 +9467,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj * self.name.split()[0] + "(%d)" */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 889, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__id); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); /* "cython/interface.pyx":890 @@ -11024,37 +9477,22 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj * self.name.split()[0] + "(%d)" * % (self.index if self.index is not None else -2))) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 890, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__replace); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_replace); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 890, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__split); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 890, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_split); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 890, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - } - } - if (__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 890, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 890, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 890, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":891 * return "%s %s problem (%s)" % (self.id, objective, @@ -11063,32 +9501,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj * % (self.index if self.index is not None else -2))) * else: */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 891, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__split); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_split); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 891, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - } - } - if (__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 891, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 891, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 891, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":892 * self.name.replace(self.name.split()[0], @@ -11097,119 +9520,75 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj * else: * return "finalized/invalid problem" */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_index); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 892, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = (__pyx_t_6 != Py_None); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if ((__pyx_t_1 != 0)) { - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_index); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 892, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_3 = __pyx_t_6; - __pyx_t_6 = 0; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__index); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_1 = (__pyx_t_7 != Py_None); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (__pyx_t_1) { + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__index); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_2 = __pyx_t_7; + __pyx_t_7 = 0; } else { __Pyx_INCREF(__pyx_int_neg_2); - __pyx_t_3 = __pyx_int_neg_2; + __pyx_t_2 = __pyx_int_neg_2; } - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_d, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 892, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "cython/interface.pyx":891 - * return "%s %s problem (%s)" % (self.id, objective, - * self.name.replace(self.name.split()[0], - * self.name.split()[0] + "(%d)" # <<<<<<<<<<<<<< - * % (self.index if self.index is not None else -2))) - * else: - */ - __pyx_t_3 = PyNumber_Add(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 891, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_7 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_52), __pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_7)); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyNumber_Add(__pyx_t_6, ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = NULL; - __pyx_t_9 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - __pyx_t_9 = 1; - } - } - __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 890, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - if (__pyx_t_6) { - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; - } - __Pyx_GIVEREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_9, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_t_3); - __pyx_t_7 = 0; - __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 890, __pyx_L1_error) + __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_5 = 0; + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "cython/interface.pyx":889 - * if self.number_of_objectives == 1 - * else str(self.number_of_objectives)) - * return "%s %s problem (%s)" % (self.id, objective, # <<<<<<<<<<<<<< - * self.name.replace(self.name.split()[0], - * self.name.split()[0] + "(%d)" - */ - __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 889, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; + __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); - __Pyx_INCREF(__pyx_v_objective); - __Pyx_GIVEREF(__pyx_v_objective); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_objective); + __Pyx_INCREF(((PyObject *)__pyx_v_objective)); + PyTuple_SET_ITEM(__pyx_t_7, 1, ((PyObject *)__pyx_v_objective)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_objective)); + PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_2); __pyx_t_4 = 0; __pyx_t_2 = 0; - __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_s_s_problem_s, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 889, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_r = __pyx_t_2; + __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_51), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_2)); + __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; + __pyx_r = ((PyObject *)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0; - - /* "cython/interface.pyx":885 - * - * def __str__(self): - * if self.problem is not NULL: # <<<<<<<<<<<<<< - * objective = "%s-objective" % ('single' - * if self.number_of_objectives == 1 - */ + goto __pyx_L3; } + /*else*/ { - /* "cython/interface.pyx":894 + /* "cython/interface.pyx":894 * % (self.index if self.index is not None else -2))) * else: * return "finalized/invalid problem" # <<<<<<<<<<<<<< * * def __repr__(self): */ - /*else*/ { __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_kp_u_finalized_invalid_problem); - __pyx_r = __pyx_kp_u_finalized_invalid_problem; + __Pyx_INCREF(((PyObject *)__pyx_kp_u_53)); + __pyx_r = ((PyObject *)__pyx_kp_u_53); goto __pyx_L0; } + __pyx_L3:; - /* "cython/interface.pyx":884 - * return str(self) - * - * def __str__(self): # <<<<<<<<<<<<<< - * if self.problem is not NULL: - * objective = "%s-objective" % ('single' - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); @@ -11217,7 +9596,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("cocoex.interface.Problem.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -11227,34 +9605,35 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj return __pyx_r; } -/* "cython/interface.pyx":896 - * return "finalized/invalid problem" - * - * def __repr__(self): # <<<<<<<<<<<<<< - * if self.problem is not NULL: - * return "<%s(), id=%r>" % ( - */ - /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23__repr__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_55__repr__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_55__repr__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_22__repr__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_54__repr__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__repr__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* "cython/interface.pyx":896 + * return "finalized/invalid problem" + * + * def __repr__(self): # <<<<<<<<<<<<<< + * if self.problem is not NULL: + * return "<%s(), id=%r>" % ( + */ + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_54__repr__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); /* "cython/interface.pyx":897 @@ -11264,7 +9643,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__repr__(struct __pyx_ob * return "<%s(), id=%r>" % ( * repr(self.__class__).split()[1][1:-2], */ - __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); + __pyx_t_1 = (__pyx_v_self->problem != NULL); if (__pyx_t_1) { /* "cython/interface.pyx":898 @@ -11283,38 +9662,23 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__repr__(struct __pyx_ob * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 899, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_Repr(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 899, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 899, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s____class__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyObject_Repr(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 899, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 899, __pyx_L1_error) - } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__split); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 899, __pyx_L1_error) + __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, -2L, NULL, NULL, &__pyx_slice__20, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 899, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 1, -2, NULL, NULL, &__pyx_k_slice_55, 1, 1, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":901 * repr(self.__class__).split()[1][1:-2], @@ -11323,71 +9687,42 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__repr__(struct __pyx_ob * else: * return "" */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 901, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - - /* "cython/interface.pyx":899 - * if self.problem is not NULL: - * return "<%s(), id=%r>" % ( - * repr(self.__class__).split()[1][1:-2], # <<<<<<<<<<<<<< - * # self.problem_suite, self.problem_index, - * self.id) - */ - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 899, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__id); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); - __pyx_t_2 = 0; - __pyx_t_3 = 0; - - /* "cython/interface.pyx":898 - * def __repr__(self): - * if self.problem is not NULL: - * return "<%s(), id=%r>" % ( # <<<<<<<<<<<<<< - * repr(self.__class__).split()[1][1:-2], - * # self.problem_suite, self.problem_index, - */ - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_s_id_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 898, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_3; + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __pyx_t_3 = 0; + __pyx_t_2 = 0; + __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_54), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_2)); + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; + __pyx_r = ((PyObject *)__pyx_t_2); + __pyx_t_2 = 0; goto __pyx_L0; - - /* "cython/interface.pyx":897 - * - * def __repr__(self): - * if self.problem is not NULL: # <<<<<<<<<<<<<< - * return "<%s(), id=%r>" % ( - * repr(self.__class__).split()[1][1:-2], - */ + goto __pyx_L3; } + /*else*/ { - /* "cython/interface.pyx":903 + /* "cython/interface.pyx":903 * self.id) * else: * return "" # <<<<<<<<<<<<<< * * def __enter__(self): */ - /*else*/ { __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_kp_u_finalized_invalid_problem_2); - __pyx_r = __pyx_kp_u_finalized_invalid_problem_2; + __Pyx_INCREF(((PyObject *)__pyx_kp_u_56)); + __pyx_r = ((PyObject *)__pyx_kp_u_56); goto __pyx_L0; } + __pyx_L3:; - /* "cython/interface.pyx":896 - * return "finalized/invalid problem" - * - * def __repr__(self): # <<<<<<<<<<<<<< - * if self.problem is not NULL: - * return "<%s(), id=%r>" % ( - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); @@ -11400,29 +9735,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__repr__(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":905 - * return "" - * - * def __enter__(self): # <<<<<<<<<<<<<< - * """Allows ``with Benchmark(...).get_problem(...) as problem:``""" - * return self - */ - /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_25__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_24__enter__[] = "Allows ``with Benchmark(...).get_problem(...) as problem:``"; -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_25__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_57__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_56__enter__[] = "Allows ``with Benchmark(...).get_problem(...) as problem:``"; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_57__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__enter__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_24__enter__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_56__enter__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__enter__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* "cython/interface.pyx":905 + * return "" + * + * def __enter__(self): # <<<<<<<<<<<<<< + * """Allows ``with Benchmark(...).get_problem(...) as problem:``""" + * return self + */ + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_56__enter__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__enter__", 0); @@ -11439,40 +9772,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__enter__(struct __pyx_o __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":905 - * return "" - * - * def __enter__(self): # <<<<<<<<<<<<<< - * """Allows ``with Benchmark(...).get_problem(...) as problem:``""" - * return self - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":908 - * """Allows ``with Benchmark(...).get_problem(...) as problem:``""" - * return self - * def __exit__(self, exception_type, exception_value, traceback): # <<<<<<<<<<<<<< - * try: - * self.free() - */ - /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_27__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_27__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_59__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_59__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { CYTHON_UNUSED PyObject *__pyx_v_exception_type = 0; CYTHON_UNUSED PyObject *__pyx_v_exception_value = 0; CYTHON_UNUSED PyObject *__pyx_v_traceback = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__exit__ (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_exception_type,&__pyx_n_s_exception_value,&__pyx_n_s_traceback,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__exception_type,&__pyx_n_s__exception_value,&__pyx_n_s__traceback,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -11487,21 +9807,21 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_27__exit__(PyObject *__pyx kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_type)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__exception_type)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_value)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__exception_value)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 908, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: - if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--; + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__traceback)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 908, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 908, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -11516,20 +9836,26 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_27__exit__(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 908, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_26__exit__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), __pyx_v_exception_type, __pyx_v_exception_value, __pyx_v_traceback); - - /* function exit code */ + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_58__exit__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), __pyx_v_exception_type, __pyx_v_exception_value, __pyx_v_traceback); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__exit__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback) { +/* "cython/interface.pyx":908 + * """Allows ``with Benchmark(...).get_problem(...) as problem:``""" + * return self + * def __exit__(self, exception_type, exception_value, traceback): # <<<<<<<<<<<<<< + * try: + * self.free() + */ + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_58__exit__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -11537,7 +9863,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__exit__(struct __pyx_ob PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__exit__", 0); /* "cython/interface.pyx":909 @@ -11548,8 +9876,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__exit__(struct __pyx_ob * except: */ { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); @@ -11563,45 +9889,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__exit__(struct __pyx_ob * except: * pass */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_free); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 910, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 910, __pyx_L3_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 910, __pyx_L3_error) - } + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__free); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "cython/interface.pyx":909 - * return self - * def __exit__(self, exception_type, exception_value, traceback): - * try: # <<<<<<<<<<<<<< - * self.free() - * except: - */ + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L10_try_end; __pyx_L3_error:; - __Pyx_PyThreadState_assign - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; /* "cython/interface.pyx":911 * try: @@ -11611,11 +9912,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__exit__(struct __pyx_ob * */ /*except:*/ { - __Pyx_ErrRestore(0,0,0); + PyErr_Restore(0,0,0); goto __pyx_L4_exception_handled; } __pyx_L4_exception_handled:; - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); @@ -11623,29 +9923,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__exit__(struct __pyx_ob __pyx_L10_try_end:; } - /* "cython/interface.pyx":908 - * """Allows ``with Benchmark(...).get_problem(...) as problem:``""" - * return self - * def __exit__(self, exception_type, exception_value, traceback): # <<<<<<<<<<<<<< - * try: - * self.free() - */ - - /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":629 - * # cdef public np.ndarray lower_bounds - * # cdef public np.ndarray upper_bounds - * cdef public np.ndarray _lower_bounds # <<<<<<<<<<<<<< - * cdef public np.ndarray _upper_bounds - * cdef size_t _number_of_variables - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_1__get__(PyObject *__pyx_v_self) { @@ -11653,12 +9936,18 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_1__get__(P __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":629 + * # cdef public np.ndarray lower_bounds + * # cdef public np.ndarray upper_bounds + * cdef public np.ndarray _lower_bounds # <<<<<<<<<<<<<< + * cdef public np.ndarray _upper_bounds + * cdef size_t _number_of_variables + */ + static PyObject *__pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -11668,7 +9957,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds___get__(st __pyx_r = ((PyObject *)__pyx_v_self->_lower_bounds); goto __pyx_L0; - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); @@ -11682,8 +9971,6 @@ static int __pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_3__set__(PyObjec __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds_2__set__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -11691,22 +9978,20 @@ static int __pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_3__set__(PyObjec static int __pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds_2__set__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__set__", 0); - if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 629, __pyx_L1_error) - __pyx_t_1 = __pyx_v_value; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); + if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); __Pyx_GOTREF(__pyx_v_self->_lower_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_lower_bounds)); - __pyx_v_self->_lower_bounds = ((PyArrayObject *)__pyx_t_1); - __pyx_t_1 = 0; + __pyx_v_self->_lower_bounds = ((PyArrayObject *)__pyx_v_value); - /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Problem._lower_bounds.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; @@ -11721,8 +10006,6 @@ static int __pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_5__del__(PyObjec __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds_4__del__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -11737,20 +10020,11 @@ static int __pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds_4__del__(struct __Pyx_DECREF(((PyObject *)__pyx_v_self->_lower_bounds)); __pyx_v_self->_lower_bounds = ((PyArrayObject *)Py_None); - /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":630 - * # cdef public np.ndarray upper_bounds - * cdef public np.ndarray _lower_bounds - * cdef public np.ndarray _upper_bounds # <<<<<<<<<<<<<< - * cdef size_t _number_of_variables - * cdef size_t _number_of_objectives - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_1__get__(PyObject *__pyx_v_self) { @@ -11758,12 +10032,18 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_1__get__(P __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_13_upper_bounds___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":630 + * # cdef public np.ndarray upper_bounds + * cdef public np.ndarray _lower_bounds + * cdef public np.ndarray _upper_bounds # <<<<<<<<<<<<<< + * cdef size_t _number_of_variables + * cdef size_t _number_of_objectives + */ + static PyObject *__pyx_pf_6cocoex_9interface_7Problem_13_upper_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -11773,7 +10053,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_13_upper_bounds___get__(st __pyx_r = ((PyObject *)__pyx_v_self->_upper_bounds); goto __pyx_L0; - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); @@ -11787,8 +10067,6 @@ static int __pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_3__set__(PyObjec __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_13_upper_bounds_2__set__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -11796,22 +10074,20 @@ static int __pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_3__set__(PyObjec static int __pyx_pf_6cocoex_9interface_7Problem_13_upper_bounds_2__set__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__set__", 0); - if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 630, __pyx_L1_error) - __pyx_t_1 = __pyx_v_value; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); + if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 630; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); __Pyx_GOTREF(__pyx_v_self->_upper_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_upper_bounds)); - __pyx_v_self->_upper_bounds = ((PyArrayObject *)__pyx_t_1); - __pyx_t_1 = 0; + __pyx_v_self->_upper_bounds = ((PyArrayObject *)__pyx_v_value); - /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Problem._upper_bounds.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; @@ -11826,8 +10102,6 @@ static int __pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_5__del__(PyObjec __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_13_upper_bounds_4__del__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -11842,32 +10116,34 @@ static int __pyx_pf_6cocoex_9interface_7Problem_13_upper_bounds_4__del__(struct __Pyx_DECREF(((PyObject *)__pyx_v_self->_upper_bounds)); __pyx_v_self->_upper_bounds = ((PyArrayObject *)Py_None); - /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":914 - * pass - * - * def log_level(level=None): # <<<<<<<<<<<<<< - * """`log_level(level=None)` return current log level and - * set new log level if `level is not None and level`. - */ - /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_6cocoex_9interface_log_level[] = "`log_level(level=None)` return current log level and\n set new log level if `level is not None and level`.\n \n `level` must be 'error' or 'warning' or 'info' or 'debug', listed\n with increasing verbosity, or '' which doesn't change anything.\n "; -static PyMethodDef __pyx_mdef_6cocoex_9interface_1log_level = {"log_level", (PyCFunction)__pyx_pw_6cocoex_9interface_1log_level, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_log_level}; +static PyMethodDef __pyx_mdef_6cocoex_9interface_1log_level = {__Pyx_NAMESTR("log_level"), (PyCFunction)__pyx_pw_6cocoex_9interface_1log_level, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_log_level)}; static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_level = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("log_level (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_level,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__level,0}; PyObject* values[1] = {0}; + + /* "cython/interface.pyx":914 + * pass + * + * def log_level(level=None): # <<<<<<<<<<<<<< + * """`log_level(level=None)` return current log level and + * set new log level if `level is not None and level`. + */ values[0] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -11881,12 +10157,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, Py switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_level); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__level); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log_level") < 0)) __PYX_ERR(0, 914, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log_level") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -11899,15 +10175,13 @@ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, Py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("log_level", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 914, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("log_level", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.log_level", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_log_level(__pyx_self, __pyx_v_level); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -11920,6 +10194,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ int __pyx_t_2; PyObject *__pyx_t_3 = NULL; char const *__pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("log_level", 0); /* "cython/interface.pyx":921 @@ -11930,14 +10207,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ * */ __pyx_t_2 = (__pyx_v_level != Py_None); - if ((__pyx_t_2 != 0)) { + if (__pyx_t_2) { __Pyx_INCREF(__pyx_v_level); __pyx_t_1 = __pyx_v_level; } else { - __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_1 = __pyx_kp_u__2; + __Pyx_INCREF(((PyObject *)__pyx_kp_u_3)); + __pyx_t_1 = ((PyObject *)__pyx_kp_u_3); } - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 921, __pyx_L1_error) + __pyx_t_3 = ((PyObject *)__pyx_f_6cocoex_9interface__bstring(__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v__level = ((PyObject*)__pyx_t_3); @@ -11950,22 +10227,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v__level); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 922, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyStr_FromString(coco_set_log_level(__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 922, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; + __pyx_t_4 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v__level)); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyStr_FromString(coco_set_log_level(__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_3)); + __pyx_r = ((PyObject *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":914 - * pass - * - * def log_level(level=None): # <<<<<<<<<<<<<< - * """`log_level(level=None)` return current log level and - * set new log level if `level is not None and level`. - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); @@ -11978,14 +10248,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":197 - * # experimental exception made for __getbuffer__ and __releasebuffer__ - * # -- the details of this may change. - * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< - * # This implementation of getbuffer is geared towards Cython - * # requirements, and does not yet fullfill the PEP. - */ - /* Python wrapper */ static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { @@ -11993,12 +10255,18 @@ static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); __pyx_r = __pyx_pf_5numpy_7ndarray___getbuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "numpy.pxd":194 + * # experimental exception made for __getbuffer__ and __releasebuffer__ + * # -- the details of this may change. + * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< + * # This implementation of getbuffer is geared towards Cython + * # requirements, and does not yet fullfill the PEP. + */ + static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { int __pyx_v_copy_shape; int __pyx_v_i; @@ -12014,31 +10282,38 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - char *__pyx_t_7; + int __pyx_t_6; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + char *__pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getbuffer__", 0); if (__pyx_v_info != NULL) { __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "numpy.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< * * cdef int copy_shape, i, ndim */ - __pyx_t_1 = ((__pyx_v_info == NULL) != 0); + __pyx_t_1 = (__pyx_v_info == NULL); if (__pyx_t_1) { __pyx_r = 0; goto __pyx_L0; + goto __pyx_L3; } + __pyx_L3:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "numpy.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -12047,7 +10322,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":207 + /* "numpy.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -12056,7 +10331,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "numpy.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -12065,17 +10340,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "numpy.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< * copy_shape = 1 * else: */ - __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); + __pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t))); if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":212 + /* "numpy.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -12083,142 +10358,102 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * copy_shape = 0 */ __pyx_v_copy_shape = 1; - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":211 - * ndim = PyArray_NDIM(self) - * - * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< - * copy_shape = 1 - * else: - */ goto __pyx_L4; } + /*else*/ { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "numpy.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) */ - /*else*/ { __pyx_v_copy_shape = 0; } __pyx_L4:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":216 + /* "numpy.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") */ - __pyx_t_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L6_bool_binop_done; - } + __pyx_t_1 = ((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS); + if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "numpy.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< * raise ValueError(u"ndarray is not C contiguous") * */ - __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L6_bool_binop_done:; - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":216 - * copy_shape = 0 - * - * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< - * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): - * raise ValueError(u"ndarray is not C contiguous") - */ - if (__pyx_t_1) { + __pyx_t_2 = (!PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS)); + __pyx_t_3 = __pyx_t_2; + } else { + __pyx_t_3 = __pyx_t_1; + } + if (__pyx_t_3) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "numpy.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 218, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 218, __pyx_L1_error) - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":216 - * copy_shape = 0 - * - * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< - * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): - * raise ValueError(u"ndarray is not C contiguous") - */ + __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_58), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L5; } + __pyx_L5:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":220 + /* "numpy.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") */ - __pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L9_bool_binop_done; - } + __pyx_t_3 = ((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS); + if (__pyx_t_3) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "numpy.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< * raise ValueError(u"ndarray is not Fortran contiguous") * */ - __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L9_bool_binop_done:; - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":220 - * raise ValueError(u"ndarray is not C contiguous") - * - * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< - * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): - * raise ValueError(u"ndarray is not Fortran contiguous") - */ - if (__pyx_t_1) { + __pyx_t_1 = (!PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS)); + __pyx_t_2 = __pyx_t_1; + } else { + __pyx_t_2 = __pyx_t_3; + } + if (__pyx_t_2) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "numpy.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< * * info.buf = PyArray_DATA(self) */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 222, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 222, __pyx_L1_error) - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":220 - * raise ValueError(u"ndarray is not C contiguous") - * - * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< - * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): - * raise ValueError(u"ndarray is not Fortran contiguous") - */ + __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_60), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L6; } + __pyx_L6:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":224 + /* "numpy.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -12227,7 +10462,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":225 + /* "numpy.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -12236,17 +10471,16 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "numpy.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. */ - __pyx_t_1 = (__pyx_v_copy_shape != 0); - if (__pyx_t_1) { + if (__pyx_v_copy_shape) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "numpy.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -12255,7 +10489,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "numpy.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -12264,18 +10498,18 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":231 + /* "numpy.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] */ - __pyx_t_4 = __pyx_v_ndim; - for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { - __pyx_v_i = __pyx_t_5; + __pyx_t_5 = __pyx_v_ndim; + for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { + __pyx_v_i = __pyx_t_6; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "numpy.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -12284,7 +10518,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "numpy.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -12293,28 +10527,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]); } - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":226 - * info.buf = PyArray_DATA(self) - * info.ndim = ndim - * if copy_shape: # <<<<<<<<<<<<<< - * # Allocate new buffer for strides and shape info. - * # This is allocated as one block, strides first. - */ - goto __pyx_L11; + goto __pyx_L7; } + /*else*/ { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "numpy.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL */ - /*else*/ { __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "numpy.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -12323,9 +10549,9 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(__pyx_v_self)); } - __pyx_L11:; + __pyx_L7:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":237 + /* "numpy.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -12334,7 +10560,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":238 + /* "numpy.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -12343,37 +10569,37 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "numpy.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< * * cdef int t */ - __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); + __pyx_v_info->readonly = (!PyArray_ISWRITEABLE(__pyx_v_self)); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":242 + /* "numpy.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< * cdef dtype descr = self.descr - * cdef int offset + * cdef list stack */ __pyx_v_f = NULL; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":243 + /* "numpy.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< + * cdef list stack * cdef int offset - * */ - __pyx_t_3 = ((PyObject *)__pyx_v_self->descr); - __Pyx_INCREF(__pyx_t_3); - __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_t_4 = ((PyObject *)__pyx_v_self->descr); + __Pyx_INCREF(__pyx_t_4); + __pyx_v_descr = ((PyArray_Descr *)__pyx_t_4); + __pyx_t_4 = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "numpy.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -12382,25 +10608,23 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "numpy.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< * # do not call releasebuffer * info.obj = None */ - __pyx_t_2 = ((!(__pyx_v_hasfields != 0)) != 0); + __pyx_t_2 = (!__pyx_v_hasfields); if (__pyx_t_2) { + __pyx_t_3 = (!__pyx_v_copy_shape); + __pyx_t_1 = __pyx_t_3; } else { __pyx_t_1 = __pyx_t_2; - goto __pyx_L15_bool_binop_done; } - __pyx_t_2 = ((!(__pyx_v_copy_shape != 0)) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":250 + /* "numpy.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -12412,134 +10636,117 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GOTREF(__pyx_v_info->obj); __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = Py_None; - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":248 - * cdef bint hasfields = PyDataType_HASFIELDS(descr) - * - * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< - * # do not call releasebuffer - * info.obj = None - */ - goto __pyx_L14; + goto __pyx_L10; } + /*else*/ { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "numpy.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< * * if not hasfields: */ - /*else*/ { __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); __Pyx_GOTREF(__pyx_v_info->obj); __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = ((PyObject *)__pyx_v_self); } - __pyx_L14:; + __pyx_L10:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "numpy.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or */ - __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); + __pyx_t_1 = (!__pyx_v_hasfields); if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "numpy.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): */ - __pyx_t_4 = __pyx_v_descr->type_num; - __pyx_v_t = __pyx_t_4; + __pyx_t_5 = __pyx_v_descr->type_num; + __pyx_v_t = __pyx_t_5; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "numpy.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") */ - __pyx_t_2 = ((__pyx_v_descr->byteorder == '>') != 0); - if (!__pyx_t_2) { - goto __pyx_L20_next_or; + __pyx_t_1 = (__pyx_v_descr->byteorder == '>'); + if (__pyx_t_1) { + __pyx_t_2 = __pyx_v_little_endian; } else { + __pyx_t_2 = __pyx_t_1; } - __pyx_t_2 = (__pyx_v_little_endian != 0); if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L19_bool_binop_done; - } - __pyx_L20_next_or:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "numpy.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" */ - __pyx_t_2 = ((__pyx_v_descr->byteorder == '<') != 0); - if (__pyx_t_2) { + __pyx_t_1 = (__pyx_v_descr->byteorder == '<'); + if (__pyx_t_1) { + __pyx_t_3 = (!__pyx_v_little_endian); + __pyx_t_7 = __pyx_t_3; + } else { + __pyx_t_7 = __pyx_t_1; + } + __pyx_t_1 = __pyx_t_7; } else { __pyx_t_1 = __pyx_t_2; - goto __pyx_L19_bool_binop_done; } - __pyx_t_2 = ((!(__pyx_v_little_endian != 0)) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L19_bool_binop_done:; - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":257 - * if not hasfields: - * t = descr.type_num - * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< - * (descr.byteorder == c'<' and not little_endian)): - * raise ValueError(u"Non-native byte order not supported") - */ if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "numpy.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 259, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 259, __pyx_L1_error) + __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_62), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L12; + } + __pyx_L12:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":257 - * if not hasfields: - * t = descr.type_num - * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< - * (descr.byteorder == c'<' and not little_endian)): - * raise ValueError(u"Non-native byte order not supported") + /* "numpy.pxd":274 + * elif t == NPY_CDOUBLE: f = "Zd" + * elif t == NPY_CLONGDOUBLE: f = "Zg" + * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< + * else: + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) */ - } + switch (__pyx_v_t) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "numpy.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" */ - switch (__pyx_v_t) { case NPY_BYTE: - __pyx_v_f = ((char *)"b"); + __pyx_v_f = __pyx_k__b; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "numpy.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -12547,10 +10754,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_USHORT: f = "H" */ case NPY_UBYTE: - __pyx_v_f = ((char *)"B"); + __pyx_v_f = __pyx_k__B; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "numpy.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -12558,10 +10765,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_INT: f = "i" */ case NPY_SHORT: - __pyx_v_f = ((char *)"h"); + __pyx_v_f = __pyx_k__h; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "numpy.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -12569,10 +10776,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_UINT: f = "I" */ case NPY_USHORT: - __pyx_v_f = ((char *)"H"); + __pyx_v_f = __pyx_k__H; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "numpy.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -12580,10 +10787,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_LONG: f = "l" */ case NPY_INT: - __pyx_v_f = ((char *)"i"); + __pyx_v_f = __pyx_k__i; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "numpy.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -12591,10 +10798,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_ULONG: f = "L" */ case NPY_UINT: - __pyx_v_f = ((char *)"I"); + __pyx_v_f = __pyx_k__I; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "numpy.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -12602,10 +10809,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_LONGLONG: f = "q" */ case NPY_LONG: - __pyx_v_f = ((char *)"l"); + __pyx_v_f = __pyx_k__l; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "numpy.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -12613,10 +10820,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_ULONGLONG: f = "Q" */ case NPY_ULONG: - __pyx_v_f = ((char *)"L"); + __pyx_v_f = __pyx_k__L; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "numpy.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -12624,10 +10831,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_FLOAT: f = "f" */ case NPY_LONGLONG: - __pyx_v_f = ((char *)"q"); + __pyx_v_f = __pyx_k__q; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "numpy.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -12635,10 +10842,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_DOUBLE: f = "d" */ case NPY_ULONGLONG: - __pyx_v_f = ((char *)"Q"); + __pyx_v_f = __pyx_k__Q; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "numpy.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -12646,10 +10853,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_LONGDOUBLE: f = "g" */ case NPY_FLOAT: - __pyx_v_f = ((char *)"f"); + __pyx_v_f = __pyx_k__f; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "numpy.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -12657,10 +10864,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_CFLOAT: f = "Zf" */ case NPY_DOUBLE: - __pyx_v_f = ((char *)"d"); + __pyx_v_f = __pyx_k__d; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "numpy.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -12668,10 +10875,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_CDOUBLE: f = "Zd" */ case NPY_LONGDOUBLE: - __pyx_v_f = ((char *)"g"); + __pyx_v_f = __pyx_k__g; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "numpy.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -12679,10 +10886,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_CLONGDOUBLE: f = "Zg" */ case NPY_CFLOAT: - __pyx_v_f = ((char *)"Zf"); + __pyx_v_f = __pyx_k__Zf; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "numpy.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -12690,10 +10897,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_OBJECT: f = "O" */ case NPY_CDOUBLE: - __pyx_v_f = ((char *)"Zd"); + __pyx_v_f = __pyx_k__Zd; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":275 + /* "numpy.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -12701,10 +10908,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * else: */ case NPY_CLONGDOUBLE: - __pyx_v_f = ((char *)"Zg"); + __pyx_v_f = __pyx_k__Zg; break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "numpy.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -12712,37 +10919,37 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) */ case NPY_OBJECT: - __pyx_v_f = ((char *)"O"); + __pyx_v_f = __pyx_k__O; break; default: - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "numpy.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< * info.format = f * return */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 278, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 278, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 278, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); - __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 278, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_6, 0, 0, 0); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __PYX_ERR(1, 278, __pyx_L1_error) + __pyx_t_4 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_63), __pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_8)); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_8)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_8)); + __pyx_t_8 = 0; + __pyx_t_8 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + {__pyx_filename = __pyx_f[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} break; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":279 + /* "numpy.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -12751,7 +10958,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "numpy.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -12760,27 +10967,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_r = 0; goto __pyx_L0; - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":255 - * info.obj = self - * - * if not hasfields: # <<<<<<<<<<<<<< - * t = descr.type_num - * if ((descr.byteorder == c'>' and little_endian) or - */ + goto __pyx_L11; } + /*else*/ { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "numpy.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 */ - /*else*/ { - __pyx_v_info->format = ((char *)malloc(0xFF)); + __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "numpy.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -12789,7 +10989,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":284 + /* "numpy.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -12798,17 +10998,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":285 - * info.format[0] = c'^' # Native data types, manual alignment - * offset = 0 - * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< + /* "numpy.pxd":285 + * f = _util_dtypestring(descr, info.format + 1, * info.format + _buffer_format_string_len, - * &offset) + * &offset) # <<<<<<<<<<<<<< + * f[0] = c'\0' # Terminate format string + * */ - __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(1, 285, __pyx_L1_error) - __pyx_v_f = __pyx_t_7; + __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_v_f = __pyx_t_9; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "numpy.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -12817,21 +11017,13 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_f[0]) = '\x00'; } + __pyx_L11:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":197 - * # experimental exception made for __getbuffer__ and __releasebuffer__ - * # -- the details of this may change. - * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< - * # This implementation of getbuffer is geared towards Cython - * # requirements, and does not yet fullfill the PEP. - */ - - /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; if (__pyx_v_info != NULL && __pyx_v_info->obj != NULL) { @@ -12850,41 +11042,39 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":290 - * f[0] = c'\0' # Terminate format string - * - * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< - * if PyArray_HASFIELDS(self): - * stdlib.free(info.format) - */ - /* Python wrapper */ static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/ static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__releasebuffer__ (wrapper)", 0); __pyx_pf_5numpy_7ndarray_2__releasebuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info)); - - /* function exit code */ __Pyx_RefNannyFinishContext(); } +/* "numpy.pxd":288 + * f[0] = c'\0' # Terminate format string + * + * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< + * if PyArray_HASFIELDS(self): + * stdlib.free(info.format) + */ + static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info) { __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "numpy.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): */ - __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); + __pyx_t_1 = PyArray_HASFIELDS(__pyx_v_self); if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "numpy.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -12892,27 +11082,21 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s * stdlib.free(info.strides) */ free(__pyx_v_info->format); - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":291 - * - * def __releasebuffer__(ndarray self, Py_buffer* info): - * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< - * stdlib.free(info.format) - * if sizeof(npy_intp) != sizeof(Py_ssize_t): - */ + goto __pyx_L3; } + __pyx_L3:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":293 + /* "numpy.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< * stdlib.free(info.strides) * # info.shape was stored after info.strides in the same block */ - __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); + __pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t))); if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":294 + /* "numpy.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -12920,29 +11104,14 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s * */ free(__pyx_v_info->strides); - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":293 - * if PyArray_HASFIELDS(self): - * stdlib.free(info.format) - * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< - * stdlib.free(info.strides) - * # info.shape was stored after info.strides in the same block - */ + goto __pyx_L4; } + __pyx_L4:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":290 - * f[0] = c'\0' # Terminate format string - * - * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< - * if PyArray_HASFIELDS(self): - * stdlib.free(info.format) - */ - - /* function exit code */ __Pyx_RefNannyFinishContext(); } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":770 +/* "numpy.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -12954,9 +11123,12 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "numpy.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -12964,21 +11136,14 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ * cdef inline object PyArray_MultiIterNew2(a, b): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 771, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":770 - * ctypedef npy_cdouble complex_t - * - * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(1, a) - * - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -12989,7 +11154,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":773 +/* "numpy.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -13001,9 +11166,12 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "numpy.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -13011,21 +11179,14 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ * cdef inline object PyArray_MultiIterNew3(a, b, c): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 774, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":773 - * return PyArray_MultiIterNew(1, a) - * - * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(2, a, b) - * - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -13036,7 +11197,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":776 +/* "numpy.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -13048,9 +11209,12 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "numpy.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -13058,21 +11222,14 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ * cdef inline object PyArray_MultiIterNew4(a, b, c, d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 777, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":776 - * return PyArray_MultiIterNew(2, a, b) - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(3, a, b, c) - * - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -13083,7 +11240,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":779 +/* "numpy.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -13095,9 +11252,12 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "numpy.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -13105,21 +11265,14 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 780, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":779 - * return PyArray_MultiIterNew(3, a, b, c) - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(4, a, b, c, d) - * - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -13130,7 +11283,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":782 +/* "numpy.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -13142,9 +11295,12 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "numpy.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -13152,21 +11308,14 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 783, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":782 - * return PyArray_MultiIterNew(4, a, b, c, d) - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -13177,7 +11326,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":785 +/* "numpy.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -13199,24 +11348,30 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx Py_ssize_t __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; + PyObject *__pyx_t_5 = NULL; + PyObject *(*__pyx_t_6)(PyObject *); int __pyx_t_7; - long __pyx_t_8; - char *__pyx_t_9; + int __pyx_t_8; + int __pyx_t_9; + int __pyx_t_10; + long __pyx_t_11; + char *__pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":790 - * - * cdef dtype child + /* "numpy.pxd":790 + * cdef int delta_offset + * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< * cdef bint little_endian = ((&endian_detector)[0] != 0) * cdef tuple fields */ __pyx_v_endian_detector = 1; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":791 - * cdef dtype child + /* "numpy.pxd":791 + * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< * cdef tuple fields @@ -13224,55 +11379,52 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "numpy.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< * fields = descr.fields[childname] * child, new_offset = fields */ - if (unlikely(__pyx_v_descr->names == Py_None)) { + if (unlikely(((PyObject *)__pyx_v_descr->names) == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(1, 794, __pyx_L1_error) + {__pyx_filename = __pyx_f[1]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; + __pyx_t_1 = ((PyObject *)__pyx_v_descr->names); __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; for (;;) { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 794, __pyx_L1_error) + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 794, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); + __Pyx_XDECREF(__pyx_v_childname); + __pyx_v_childname = __pyx_t_3; __pyx_t_3 = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "numpy.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< * child, new_offset = fields * */ - if (unlikely(__pyx_v_descr->fields == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 795, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 795, __pyx_L1_error) + __pyx_t_3 = PyObject_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (!__pyx_t_3) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 795, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); + if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_XDECREF(((PyObject *)__pyx_v_fields)); + __pyx_v_fields = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "numpy.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< * - * if (end - f) - (new_offset - offset[0]) < 15: + * if (end - f) - (new_offset - offset[0]) < 15: */ - if (likely(__pyx_v_fields != Py_None)) { - PyObject* sequence = __pyx_v_fields; + if (likely(PyTuple_CheckExact(((PyObject *)__pyx_v_fields)))) { + PyObject* sequence = ((PyObject *)__pyx_v_fields); #if CYTHON_COMPILING_IN_CPYTHON Py_ssize_t size = Py_SIZE(sequence); #else @@ -13281,7 +11433,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(1, 796, __pyx_L1_error) + {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); @@ -13289,128 +11441,134 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); #else - __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 796, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 796, __pyx_L1_error) + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); #endif - } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 796, __pyx_L1_error) + } else if (1) { + __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + } else + { + Py_ssize_t index = -1; + __pyx_t_5 = PyObject_GetIter(((PyObject *)__pyx_v_fields)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; + index = 0; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L5_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + index = 1; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = NULL; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L6_unpacking_done; + __pyx_L5_unpacking_failed:; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_L6_unpacking_done:; } - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(1, 796, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3)); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_XDECREF(((PyObject *)__pyx_v_child)); + __pyx_v_child = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); + __Pyx_XDECREF(__pyx_v_new_offset); + __pyx_v_new_offset = __pyx_t_4; __pyx_t_4 = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "numpy.pxd":798 * child, new_offset = fields * - * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< + * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * */ - __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 798, __pyx_L1_error) + __pyx_t_4 = PyInt_FromLong((__pyx_v_end - __pyx_v_f)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 798, __pyx_L1_error) + __pyx_t_3 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_Subtract(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 798, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_int_15, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); - if (__pyx_t_6) { + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_7) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "numpy.pxd":799 * - * if (end - f) - (new_offset - offset[0]) < 15: + * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< * * if ((child.byteorder == c'>' and little_endian) or */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 799, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 799, __pyx_L1_error) - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":798 - * child, new_offset = fields - * - * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< - * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") - * - */ + __pyx_t_5 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_65), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L7; } + __pyx_L7:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "numpy.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") */ - __pyx_t_7 = ((__pyx_v_child->byteorder == '>') != 0); - if (!__pyx_t_7) { - goto __pyx_L8_next_or; - } else { - } - __pyx_t_7 = (__pyx_v_little_endian != 0); - if (!__pyx_t_7) { + __pyx_t_7 = (__pyx_v_child->byteorder == '>'); + if (__pyx_t_7) { + __pyx_t_8 = __pyx_v_little_endian; } else { - __pyx_t_6 = __pyx_t_7; - goto __pyx_L7_bool_binop_done; + __pyx_t_8 = __pyx_t_7; } - __pyx_L8_next_or:; + if (!__pyx_t_8) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "numpy.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< * raise ValueError(u"Non-native byte order not supported") * # One could encode it in the format string and have Cython */ - __pyx_t_7 = ((__pyx_v_child->byteorder == '<') != 0); - if (__pyx_t_7) { + __pyx_t_7 = (__pyx_v_child->byteorder == '<'); + if (__pyx_t_7) { + __pyx_t_9 = (!__pyx_v_little_endian); + __pyx_t_10 = __pyx_t_9; + } else { + __pyx_t_10 = __pyx_t_7; + } + __pyx_t_7 = __pyx_t_10; } else { - __pyx_t_6 = __pyx_t_7; - goto __pyx_L7_bool_binop_done; + __pyx_t_7 = __pyx_t_8; } - __pyx_t_7 = ((!(__pyx_v_little_endian != 0)) != 0); - __pyx_t_6 = __pyx_t_7; - __pyx_L7_bool_binop_done:; - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":801 - * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") - * - * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< - * (child.byteorder == c'<' and not little_endian)): - * raise ValueError(u"Non-native byte order not supported") - */ - if (__pyx_t_6) { + if (__pyx_t_7) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "numpy.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * # One could encode it in the format string and have Cython * # complain instead, BUT: < and > in format strings also imply */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 803, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 803, __pyx_L1_error) - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":801 - * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") - * - * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< - * (child.byteorder == c'<' and not little_endian)): - * raise ValueError(u"Non-native byte order not supported") - */ + __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_66), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L8; } + __pyx_L8:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "numpy.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -13418,24 +11576,24 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * f += 1 */ while (1) { - __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 813, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 813, __pyx_L1_error) + __pyx_t_5 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 813, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!__pyx_t_6) break; + if (!__pyx_t_7) break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "numpy.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< * f += 1 * offset[0] += 1 */ - (__pyx_v_f[0]) = 0x78; + (__pyx_v_f[0]) = 120; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "numpy.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -13444,418 +11602,413 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "numpy.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< * * offset[0] += child.itemsize */ - __pyx_t_8 = 0; - (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); + __pyx_t_11 = 0; + (__pyx_v_offset[__pyx_t_11]) = ((__pyx_v_offset[__pyx_t_11]) + 1); } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "numpy.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< * * if not PyDataType_HASFIELDS(child): */ - __pyx_t_8 = 0; - (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); + __pyx_t_11 = 0; + (__pyx_v_offset[__pyx_t_11]) = ((__pyx_v_offset[__pyx_t_11]) + __pyx_v_child->elsize); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "numpy.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< * t = child.type_num * if end - f < 5: */ - __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); - if (__pyx_t_6) { + __pyx_t_7 = (!PyDataType_HASFIELDS(__pyx_v_child)); + if (__pyx_t_7) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "numpy.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") */ - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 821, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); - __pyx_t_4 = 0; + __pyx_t_3 = PyInt_FromLong(__pyx_v_child->type_num); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_v_t); + __pyx_v_t = __pyx_t_3; + __pyx_t_3 = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "numpy.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< * raise RuntimeError(u"Format string allocated too short.") * */ - __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); - if (__pyx_t_6) { + __pyx_t_7 = ((__pyx_v_end - __pyx_v_f) < 5); + if (__pyx_t_7) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "numpy.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< * * # Until ticket #99 is fixed, use integers to avoid warnings */ - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 823, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(1, 823, __pyx_L1_error) - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":822 - * if not PyDataType_HASFIELDS(child): - * t = child.type_num - * if end - f < 5: # <<<<<<<<<<<<<< - * raise RuntimeError(u"Format string allocated too short.") - * - */ + __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_68), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L12; } + __pyx_L12:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "numpy.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 826, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 826, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 826, __pyx_L1_error) + __pyx_t_3 = PyInt_FromLong(NPY_BYTE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_6) { + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_7) { (__pyx_v_f[0]) = 98; - goto __pyx_L15; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "numpy.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 827, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 827, __pyx_L1_error) + __pyx_t_5 = PyInt_FromLong(NPY_UBYTE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 827, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__pyx_t_6) { + if (__pyx_t_7) { (__pyx_v_f[0]) = 66; - goto __pyx_L15; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "numpy.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 828, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 828, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 828, __pyx_L1_error) + __pyx_t_3 = PyInt_FromLong(NPY_SHORT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_6) { - (__pyx_v_f[0]) = 0x68; - goto __pyx_L15; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_7) { + (__pyx_v_f[0]) = 104; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "numpy.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 829, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 829, __pyx_L1_error) + __pyx_t_5 = PyInt_FromLong(NPY_USHORT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 829, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__pyx_t_6) { + if (__pyx_t_7) { (__pyx_v_f[0]) = 72; - goto __pyx_L15; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "numpy.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 830, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 830, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 830, __pyx_L1_error) + __pyx_t_3 = PyInt_FromLong(NPY_INT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_6) { - (__pyx_v_f[0]) = 0x69; - goto __pyx_L15; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_7) { + (__pyx_v_f[0]) = 105; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "numpy.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 831, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 831, __pyx_L1_error) + __pyx_t_5 = PyInt_FromLong(NPY_UINT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 831, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__pyx_t_6) { + if (__pyx_t_7) { (__pyx_v_f[0]) = 73; - goto __pyx_L15; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "numpy.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 832, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 832, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 832, __pyx_L1_error) + __pyx_t_3 = PyInt_FromLong(NPY_LONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_6) { - (__pyx_v_f[0]) = 0x6C; - goto __pyx_L15; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_7) { + (__pyx_v_f[0]) = 108; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "numpy.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 833, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 833, __pyx_L1_error) + __pyx_t_5 = PyInt_FromLong(NPY_ULONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 833, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__pyx_t_6) { + if (__pyx_t_7) { (__pyx_v_f[0]) = 76; - goto __pyx_L15; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "numpy.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 834, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 834, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 834, __pyx_L1_error) + __pyx_t_3 = PyInt_FromLong(NPY_LONGLONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_6) { - (__pyx_v_f[0]) = 0x71; - goto __pyx_L15; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_7) { + (__pyx_v_f[0]) = 113; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "numpy.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 835, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 835, __pyx_L1_error) + __pyx_t_5 = PyInt_FromLong(NPY_ULONGLONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 835, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__pyx_t_6) { + if (__pyx_t_7) { (__pyx_v_f[0]) = 81; - goto __pyx_L15; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "numpy.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 836, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 836, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 836, __pyx_L1_error) + __pyx_t_3 = PyInt_FromLong(NPY_FLOAT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_6) { - (__pyx_v_f[0]) = 0x66; - goto __pyx_L15; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_7) { + (__pyx_v_f[0]) = 102; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "numpy.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 837, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 837, __pyx_L1_error) + __pyx_t_5 = PyInt_FromLong(NPY_DOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 837, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__pyx_t_6) { - (__pyx_v_f[0]) = 0x64; - goto __pyx_L15; + if (__pyx_t_7) { + (__pyx_v_f[0]) = 100; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "numpy.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 838, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 838, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 838, __pyx_L1_error) + __pyx_t_3 = PyInt_FromLong(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_6) { - (__pyx_v_f[0]) = 0x67; - goto __pyx_L15; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_7) { + (__pyx_v_f[0]) = 103; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "numpy.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 839, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 839, __pyx_L1_error) + __pyx_t_5 = PyInt_FromLong(NPY_CFLOAT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 839, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__pyx_t_6) { + if (__pyx_t_7) { (__pyx_v_f[0]) = 90; - (__pyx_v_f[1]) = 0x66; + (__pyx_v_f[1]) = 102; __pyx_v_f = (__pyx_v_f + 1); - goto __pyx_L15; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "numpy.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 840, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 840, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 840, __pyx_L1_error) + __pyx_t_3 = PyInt_FromLong(NPY_CDOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_6) { + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_7) { (__pyx_v_f[0]) = 90; - (__pyx_v_f[1]) = 0x64; + (__pyx_v_f[1]) = 100; __pyx_v_f = (__pyx_v_f + 1); - goto __pyx_L15; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "numpy.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 841, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 841, __pyx_L1_error) + __pyx_t_5 = PyInt_FromLong(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 841, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__pyx_t_6) { + if (__pyx_t_7) { (__pyx_v_f[0]) = 90; - (__pyx_v_f[1]) = 0x67; + (__pyx_v_f[1]) = 103; __pyx_v_f = (__pyx_v_f + 1); - goto __pyx_L15; + goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "numpy.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 842, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 842, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 842, __pyx_L1_error) + __pyx_t_3 = PyInt_FromLong(NPY_OBJECT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_6) { + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_7) { (__pyx_v_f[0]) = 79; - goto __pyx_L15; + goto __pyx_L13; } + /*else*/ { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "numpy.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< * f += 1 * else: */ - /*else*/ { - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error) + __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_63), __pyx_v_t); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_5)); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 844, __pyx_L1_error) + PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_5)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_5)); + __pyx_t_5 = 0; + __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + {__pyx_filename = __pyx_f[1]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_L15:; + __pyx_L13:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "numpy.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -13863,41 +12016,25 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * # Cython ignores struct boundary information ("T{...}"), */ __pyx_v_f = (__pyx_v_f + 1); - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":820 - * offset[0] += child.itemsize - * - * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< - * t = child.type_num - * if end - f < 5: - */ - goto __pyx_L13; + goto __pyx_L11; } + /*else*/ { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "numpy.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< * return f * */ - /*else*/ { - __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == NULL)) __PYX_ERR(1, 849, __pyx_L1_error) - __pyx_v_f = __pyx_t_9; + __pyx_t_12 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_v_f = __pyx_t_12; } - __pyx_L13:; - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":794 - * cdef tuple fields - * - * for childname in descr.names: # <<<<<<<<<<<<<< - * fields = descr.fields[childname] - * child, new_offset = fields - */ + __pyx_L11:; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "numpy.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -13907,19 +12044,13 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":785 - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< - * # Recursive utility function used in __getbuffer__ to get format - * # string. The new location in the format string is returned. - */ - - /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("numpy._util_dtypestring", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -13932,7 +12063,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "numpy.pxd":965 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -13944,10 +12075,9 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a PyObject *__pyx_v_baseptr; __Pyx_RefNannyDeclarations int __pyx_t_1; - int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "numpy.pxd":967 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -13955,10 +12085,9 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a * else: */ __pyx_t_1 = (__pyx_v_base == Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { + if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "numpy.pxd":968 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -13966,28 +12095,20 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a * Py_INCREF(base) # important to do this before decref below! */ __pyx_v_baseptr = NULL; - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":968 - * cdef inline void set_array_base(ndarray arr, object base): - * cdef PyObject* baseptr - * if base is None: # <<<<<<<<<<<<<< - * baseptr = NULL - * else: - */ goto __pyx_L3; } + /*else*/ { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "numpy.pxd":970 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< * baseptr = base * Py_XDECREF(arr.base) */ - /*else*/ { Py_INCREF(__pyx_v_base); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "numpy.pxd":971 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -13998,7 +12119,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "numpy.pxd":972 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -14007,7 +12128,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "numpy.pxd":973 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -14016,19 +12137,10 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":966 - * - * - * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< - * cdef PyObject* baseptr - * if base is None: - */ - - /* function exit code */ __Pyx_RefNannyFinishContext(); } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "numpy.pxd":975 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -14042,17 +12154,17 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "numpy.pxd":976 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< * return None * else: */ - __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); + __pyx_t_1 = (__pyx_v_arr->base == NULL); if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "numpy.pxd":977 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -14063,37 +12175,23 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __Pyx_INCREF(Py_None); __pyx_r = Py_None; goto __pyx_L0; - - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":977 - * - * cdef inline object get_array_base(ndarray arr): - * if arr.base is NULL: # <<<<<<<<<<<<<< - * return None - * else: - */ + goto __pyx_L3; } + /*else*/ { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "numpy.pxd":979 * return None * else: * return arr.base # <<<<<<<<<<<<<< */ - /*else*/ { __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_arr->base)); __pyx_r = ((PyObject *)__pyx_v_arr->base); goto __pyx_L0; } + __pyx_L3:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":976 - * arr.base = baseptr - * - * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< - * if arr.base is NULL: - * return None - */ - - /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); @@ -14104,11 +12202,7 @@ static struct __pyx_vtabstruct_6cocoex_9interface_Suite __pyx_vtable_6cocoex_9in static PyObject *__pyx_tp_new_6cocoex_9interface_Suite(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_6cocoex_9interface_Suite *p; PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } + o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_6cocoex_9interface_Suite *)o); p->__pyx_vtab = __pyx_vtabptr_6cocoex_9interface_Suite; @@ -14131,17 +12225,13 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Suite(PyTypeObject *t, PyObject static void __pyx_tp_dealloc_6cocoex_9interface_Suite(PyObject *o) { struct __pyx_obj_6cocoex_9interface_Suite *p = (struct __pyx_obj_6cocoex_9interface_Suite *)o; - #if PY_VERSION_HEX >= 0x030400a1 - if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif PyObject_GC_UnTrack(o); { PyObject *etype, *eval, *etb; PyErr_Fetch(&etype, &eval, &etb); ++Py_REFCNT(o); __pyx_pw_6cocoex_9interface_5Suite_15__dealloc__(o); + if (PyErr_Occurred()) PyErr_WriteUnraisable(o); --Py_REFCNT(o); PyErr_Restore(etype, eval, etb); } @@ -14162,6 +12252,15 @@ static void __pyx_tp_dealloc_6cocoex_9interface_Suite(PyObject *o) { static int __pyx_tp_traverse_6cocoex_9interface_Suite(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_6cocoex_9interface_Suite *p = (struct __pyx_obj_6cocoex_9interface_Suite *)o; + if (p->_name) { + e = (*v)(p->_name, a); if (e) return e; + } + if (p->_instance) { + e = (*v)(p->_instance, a); if (e) return e; + } + if (p->_options) { + e = (*v)(p->_options, a); if (e) return e; + } if (p->current_problem_) { e = (*v)(p->current_problem_, a); if (e) return e; } @@ -14190,8 +12289,17 @@ static int __pyx_tp_traverse_6cocoex_9interface_Suite(PyObject *o, visitproc v, } static int __pyx_tp_clear_6cocoex_9interface_Suite(PyObject *o) { - PyObject* tmp; struct __pyx_obj_6cocoex_9interface_Suite *p = (struct __pyx_obj_6cocoex_9interface_Suite *)o; + PyObject* tmp; + tmp = ((PyObject*)p->_name); + p->_name = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->_instance); + p->_instance = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->_options); + p->_options = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); tmp = ((PyObject*)p->current_problem_); p->current_problem_ = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); @@ -14226,73 +12334,87 @@ static PyObject *__pyx_sq_item_6cocoex_9interface_Suite(PyObject *o, Py_ssize_t return r; } -static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_current_problem(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_5Suite_15current_problem_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_current_index(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_5Suite_13current_index_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_problem_names(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_5Suite_13problem_names_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_dimensions(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_5Suite_10dimensions_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_number_of_objectives(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_5Suite_20number_of_objectives_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_indices(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_5Suite_7indices_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_name(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_5Suite_4name_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_instance(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_5Suite_8instance_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_options(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_5Suite_7options_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_info(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_5Suite_4info_1__get__(o); -} - static PyMethodDef __pyx_methods_6cocoex_9interface_Suite[] = { - {"reset", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_3reset, METH_NOARGS, __pyx_doc_6cocoex_9interface_5Suite_2reset}, - {"next_problem", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_5next_problem, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_5Suite_4next_problem}, - {"get_problem", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_7get_problem, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_5Suite_6get_problem}, - {"get_problem_by_function_dimension_instance", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dimension_instance, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_5Suite_8get_problem_by_function_dimension_instance}, - {"free", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_13free, METH_NOARGS, __pyx_doc_6cocoex_9interface_5Suite_12free}, - {"find_problem_ids", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_17find_problem_ids, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_5Suite_16find_problem_ids}, - {"ids", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_19ids, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_5Suite_18ids}, + {__Pyx_NAMESTR("reset"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_3reset, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_2reset)}, + {__Pyx_NAMESTR("next_problem"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_5next_problem, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_4next_problem)}, + {__Pyx_NAMESTR("get_problem"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_7get_problem, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_6get_problem)}, + {__Pyx_NAMESTR("get_problem_by_function_dimension_instance"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dimension_instance, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_8get_problem_by_function_dimension_instance)}, + {__Pyx_NAMESTR("free"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_13free, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_12free)}, + {__Pyx_NAMESTR("find_problem_ids"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_17find_problem_ids, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_16find_problem_ids)}, + {__Pyx_NAMESTR("ids"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_19ids, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_18ids)}, + {__Pyx_NAMESTR("current_problem"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_21current_problem, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_20current_problem)}, + {__Pyx_NAMESTR("current_index"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_23current_index, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_22current_index)}, + {__Pyx_NAMESTR("problem_names"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_25problem_names, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_24problem_names)}, + {__Pyx_NAMESTR("dimensions"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_27dimensions, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_26dimensions)}, + {__Pyx_NAMESTR("number_of_objectives"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_29number_of_objectives, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_28number_of_objectives)}, + {__Pyx_NAMESTR("indices"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_31indices, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_30indices)}, + {__Pyx_NAMESTR("name"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_33name, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_32name)}, + {__Pyx_NAMESTR("instance"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_35instance, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_34instance)}, + {__Pyx_NAMESTR("options"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_37options, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_36options)}, + {__Pyx_NAMESTR("info"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_39info, METH_NOARGS, __Pyx_DOCSTR(0)}, {0, 0, 0, 0} }; -static struct PyGetSetDef __pyx_getsets_6cocoex_9interface_Suite[] = { - {(char *)"current_problem", __pyx_getprop_6cocoex_9interface_5Suite_current_problem, 0, (char *)"current \"open/active\" problem to be benchmarked", 0}, - {(char *)"current_index", __pyx_getprop_6cocoex_9interface_5Suite_current_index, 0, (char *)"index in the enumerator of all problems in this suite.\n\n Details: To get the index in the underlying C implementation, which\n usually matches `current_index` one-to-one, use::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> suite.current_index is None\n True\n >>> suite.next_problem().id[-17:].lower()\n 'bbob_f001_i01_d02'\n >>> suite.current_index, suite.indices[suite.current_index]\n (0, 0)\n\n ", 0}, - {(char *)"problem_names", __pyx_getprop_6cocoex_9interface_5Suite_problem_names, 0, (char *)"list of problem names in this `Suite`, see also `ids`", 0}, - {(char *)"dimensions", __pyx_getprop_6cocoex_9interface_5Suite_dimensions, 0, (char *)"list of problem dimensions occuring at least once in this `Suite`", 0}, - {(char *)"number_of_objectives", __pyx_getprop_6cocoex_9interface_5Suite_number_of_objectives, 0, (char *)"list of number of objectives occuring in this `Suite`", 0}, - {(char *)"indices", __pyx_getprop_6cocoex_9interface_5Suite_indices, 0, (char *)"list of all problem indices, deprecated.\n \n These values are (only) used to call the underlying C structures.\n Indices used in the Python interface run between 0 and `len(self)`.\n ", 0}, - {(char *)"name", __pyx_getprop_6cocoex_9interface_5Suite_name, 0, (char *)"name of this suite as used to instantiate the suite via `Suite(name, ...)`", 0}, - {(char *)"instance", __pyx_getprop_6cocoex_9interface_5Suite_instance, 0, (char *)"instance of this suite as used to instantiate the suite via\n `Suite(name, instance, ...)`", 0}, - {(char *)"options", __pyx_getprop_6cocoex_9interface_5Suite_options, 0, (char *)"options for this suite as used to instantiate the suite via\n `Suite(name, instance, options)`", 0}, - {(char *)"info", __pyx_getprop_6cocoex_9interface_5Suite_info, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} +static PyNumberMethods __pyx_tp_as_number_Suite = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_divide*/ + #endif + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_coerce*/ + #endif + 0, /*nb_int*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_long*/ + #else + 0, /*reserved*/ + #endif + 0, /*nb_float*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_oct*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*nb_hex*/ + #endif + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_inplace_divide*/ + #endif + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + #if PY_VERSION_HEX >= 0x02050000 + 0, /*nb_index*/ + #endif }; static PySequenceMethods __pyx_tp_as_sequence_Suite = { - __pyx_pw_6cocoex_9interface_5Suite_25__len__, /*sq_length*/ + __pyx_pw_6cocoex_9interface_5Suite_45__len__, /*sq_length*/ 0, /*sq_concat*/ 0, /*sq_repeat*/ __pyx_sq_item_6cocoex_9interface_Suite, /*sq_item*/ @@ -14305,14 +12427,35 @@ static PySequenceMethods __pyx_tp_as_sequence_Suite = { }; static PyMappingMethods __pyx_tp_as_mapping_Suite = { - __pyx_pw_6cocoex_9interface_5Suite_25__len__, /*mp_length*/ + __pyx_pw_6cocoex_9interface_5Suite_45__len__, /*mp_length*/ __pyx_pw_6cocoex_9interface_5Suite_11__getitem__, /*mp_subscript*/ 0, /*mp_ass_subscript*/ }; +static PyBufferProcs __pyx_tp_as_buffer_Suite = { + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getreadbuffer*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getwritebuffer*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getsegcount*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getcharbuffer*/ + #endif + #if PY_VERSION_HEX >= 0x02060000 + 0, /*bf_getbuffer*/ + #endif + #if PY_VERSION_HEX >= 0x02060000 + 0, /*bf_releasebuffer*/ + #endif +}; + static PyTypeObject __pyx_type_6cocoex_9interface_Suite = { PyVarObject_HEAD_INIT(0, 0) - "cocoex.interface.Suite", /*tp_name*/ + __Pyx_NAMESTR("cocoex.interface.Suite"), /*tp_name*/ sizeof(struct __pyx_obj_6cocoex_9interface_Suite), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6cocoex_9interface_Suite, /*tp_dealloc*/ @@ -14321,31 +12464,30 @@ static PyTypeObject __pyx_type_6cocoex_9interface_Suite = { 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ + #else + 0, /*reserved*/ #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - __pyx_pw_6cocoex_9interface_5Suite_21__repr__, /*tp_repr*/ - 0, /*tp_as_number*/ + __pyx_pw_6cocoex_9interface_5Suite_41__repr__, /*tp_repr*/ + &__pyx_tp_as_number_Suite, /*tp_as_number*/ &__pyx_tp_as_sequence_Suite, /*tp_as_sequence*/ &__pyx_tp_as_mapping_Suite, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ - __pyx_pw_6cocoex_9interface_5Suite_23__str__, /*tp_str*/ + __pyx_pw_6cocoex_9interface_5Suite_43__str__, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ + &__pyx_tp_as_buffer_Suite, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "Suite of benchmark problems.\n\n Input arguments to `Suite` are `name: str`, `instance: str`, `options: str`,\n and passed to the respective C code (see `coco.h`).\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> f = suite.next_problem()\n >>> assert f.number_of_objectives == 1\n >>> print(\"f([1,2]) = %.11f\" % f([1,2]))\n f([1,2]) = 90.00369408000\n\n Sweeping through all problems is as simple as::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> observer = ex.Observer(\"bbob-biobj\", \"result_folder:doctest\")\n >>> for fun in suite:\n ... if fun.index == 0:\n ... print(\"Number of objectives %d, %d, %d\" %\n ... (fun.number_of_objectives,\n ... suite.number_of_objectives[0],\n ... suite.number_of_objectives[-1]))\n ... fun.observe_with(observer)\n ... assert fun.number_of_objectives == suite.number_of_objectives[0]\n ... # run run run using fun # doctest: +ELLIPSIS\n Number of objectives 2, 2, 2...\n\n In the example, an observer was added to produce output data for the\n COCO post-processing.\n\n The following example runs the entire bbob2009 benchmark suite\n on random search::\n\n >>> import numpy as np\n >>> from cocoex import Suite, Observer\n ...\n >>> MAX_FE = 22 # max f-evaluations\n >>> def random_search(f, lb, ub, m): # don't use m >> 1e5 with this implementation\n ... candidates = lb + (ub - lb) * np.random.rand(m, len(lb))\n ... return candidates[np.argmin([f(x) for x in candidates])]\n ...\n >>> solver = random_search\n >>> suite = Suite(\"bbob\", \"year:2009\", \"\")\n >>> observer = Observer(\"bbob\",\n ... \"result_folder: %s_on_%s\" % (solver.__name__, \"bbob2009\"))\n >>> for fun in suite:\n ... if fun.dimension > 10:\n ... break\n ... print('C""urrent problem index = %d' % fun.index)\n ... fun.observe_with(observer)\n ... solver(fun, fun.lower_bounds, fun.upper_bounds, MAX_FE)\n ... # data should be now in the \"exdata/random_search_on_bbob2009\" folder\n ... # doctest: +ELLIPSIS\n Current problem index = 0...\n >>> #\n >>> # Exactly the same using another looping technique:\n >>> for id in suite.ids():\n ... fun = suite.get_problem(id, observer)\n ... _ = solver(fun, fun.lower_bounds, fun.upper_bounds, MAX_FE)\n ... print(\"Evaluations on %s: %d\" % (fun.name, fun.evaluations))\n ... fun.free() # this is absolutely necessary here\n ... # doctest: +ELLIPSIS\n Evaluations on ...\n\n We can select a single function, say BBOB f9 in 20D, of a given suite like::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"dimensions:20 instance_indices:1\")\n >>> len(suite)\n 24\n >>> f9 = suite.get_problem(8)\n >>> x = f9.initial_solution # a copy of a feasible point\n >>> all(x == 0)\n True\n\n See module attribute `cocoex.known_suite_names` for known suite names::\n\n >>> import cocoex as ex\n >>> for suite_name in ex.known_suite_names:\n ... suite = ex.Suite(suite_name, \"\", \"\")\n ... print(suite.dimensions)\n ... for f in suite:\n ... assert f.dimension in suite.dimensions\n ... # doctest: +ELLIPSIS\n [2, 3, 5, 10, 20, 40]...\n\n See file `example_experiment.py` for a full example use case.\n\n Details: depending on the benchmark suite and observer, only one problem can\n be open at a time. Using `get_problem` without `free` or mixing the use of\n `next_problem` and `get_problem` may not be possible. For example, in this\n case the \"bbob\" observer is known to lead to a crash of the Python\n interpreter.\n\n See also `Observer` and `example_experiment.py`.\n ", /*tp_doc*/ + __Pyx_DOCSTR("Suite of benchmark problems.\n\n Input arguments to `Suite` are `name: str`, `instance: str`, `options: str`,\n and passed to the respective C code (see `coco.h`).\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> f = suite.next_problem()\n >>> assert f.number_of_objectives == 1\n >>> print(\"f([1,2]) = %.11f\" % f([1,2]))\n f([1,2]) = 90.00369408000\n\n Sweeping through all problems is as simple as::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> observer = ex.Observer(\"bbob-biobj\", \"result_folder:doctest\")\n >>> for fun in suite:\n ... if fun.index == 0:\n ... print(\"Number of objectives %d, %d, %d\" %\n ... (fun.number_of_objectives,\n ... suite.number_of_objectives[0],\n ... suite.number_of_objectives[-1]))\n ... fun.observe_with(observer)\n ... assert fun.number_of_objectives == suite.number_of_objectives[0]\n ... # run run run using fun # doctest: +ELLIPSIS\n Number of objectives 2, 2, 2...\n\n In the example, an observer was added to produce output data for the\n COCO post-processing.\n\n The following example runs the entire bbob2009 benchmark suite\n on random search::\n\n >>> import numpy as np\n >>> from cocoex import Suite, Observer\n ...\n >>> MAX_FE = 22 # max f-evaluations\n >>> def random_search(f, lb, ub, m): # don't use m >> 1e5 with this implementation\n ... candidates = lb + (ub - lb) * np.random.rand(m, len(lb))\n ... return candidates[np.argmin([f(x) for x in candidates])]\n ...\n >>> solver = random_search\n >>> suite = Suite(\"bbob\", \"year:2009\", \"\")\n >>> observer = Observer(\"bbob\",\n ... \"result_folder: %s_on_%s\" % (solver.__name__, \"bbob2009\"))\n >>> for fun in suite:\n ... if fun.dimension > 10:\n ... break\n ... print('Current problem index = %d' % fun.index)\n ... fun.observe_with(observer)\n ... solver(fun, fun.lower_bounds, fun.upper_bounds, MAX_FE)\n ... # data should be now in the \"exdata/random_search_on_bbob2009\" folder\n ... # doctest: +ELLIPSIS\n Current problem index = 0...\n >>> #\n >>> # Exactly the same using another looping technique:\n >>> for id in suite.ids():\n ... fun = suite.get_problem(id, observer)\n ... _ = solver(fun, fun.lower_bounds, fun.upper_bounds, MAX_FE)\n ... print(\"Evaluations on %s: %d\" % (fun.name, fun.evaluations))\n ... fun.free() # this is absolutely necessary here\n ... # doctest: +ELLIPSIS\n Evaluations on ...\n\n We can select a single function, say BBOB f9 in 20D, of a given suite like::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"dimensions:20 instance_indices:1\")\n >>> len(suite)\n 24\n >>> f9 = suite.get_problem(8)\n >>> x = f9.initial_solution # a copy of a feasible point\n >>> all(x == 0)\n True\n\n See module attribute `cocoex.known_suite_names` for known suite names::\n\n >>> import cocoex as ex\n >>> for suite_name in ex.known_suite_names:\n ... suite = ex.Suite(suite_name, \"\", \"\")\n ... print(suite.dimensions)\n ... for f in suite:\n ... assert f.dimension in suite.dimensions\n ... # doctest: +ELLIPSIS\n [2, 3, 5, 10, 20, 40]...\n\n See file `example_experiment.py` for a full example use case.\n\n Details: depending on the benchmark suite and observer, only one problem can\n be open at a time. Using `get_problem` without `free` or mixing the use of\n `next_problem` and `get_problem` may not be possible. For example, in this\n case the \"bbob\" observer is known to lead to a crash of the Python\n interpreter.\n\n See also `Observer` and `example_experiment.py`.\n "), /*tp_doc*/ __pyx_tp_traverse_6cocoex_9interface_Suite, /*tp_traverse*/ __pyx_tp_clear_6cocoex_9interface_Suite, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ - __pyx_pw_6cocoex_9interface_5Suite_27__iter__, /*tp_iter*/ + __pyx_pw_6cocoex_9interface_5Suite_47__iter__, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_6cocoex_9interface_Suite, /*tp_methods*/ 0, /*tp_members*/ - __pyx_getsets_6cocoex_9interface_Suite, /*tp_getset*/ + 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ @@ -14362,20 +12504,15 @@ static PyTypeObject __pyx_type_6cocoex_9interface_Suite = { 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ + #if PY_VERSION_HEX >= 0x02060000 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ #endif }; static PyObject *__pyx_tp_new_6cocoex_9interface_Observer(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_6cocoex_9interface_Observer *p; PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } + o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_6cocoex_9interface_Observer *)o); p->_name = ((PyObject*)Py_None); Py_INCREF(Py_None); @@ -14389,17 +12526,13 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Observer(PyTypeObject *t, PyObj static void __pyx_tp_dealloc_6cocoex_9interface_Observer(PyObject *o) { struct __pyx_obj_6cocoex_9interface_Observer *p = (struct __pyx_obj_6cocoex_9interface_Observer *)o; - #if PY_VERSION_HEX >= 0x030400a1 - if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif PyObject_GC_UnTrack(o); { PyObject *etype, *eval, *etb; PyErr_Fetch(&etype, &eval, &etb); ++Py_REFCNT(o); - __pyx_pw_6cocoex_9interface_8Observer_9__dealloc__(o); + __pyx_pw_6cocoex_9interface_8Observer_15__dealloc__(o); + if (PyErr_Occurred()) PyErr_WriteUnraisable(o); --Py_REFCNT(o); PyErr_Restore(etype, eval, etb); } @@ -14412,6 +12545,12 @@ static void __pyx_tp_dealloc_6cocoex_9interface_Observer(PyObject *o) { static int __pyx_tp_traverse_6cocoex_9interface_Observer(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_6cocoex_9interface_Observer *p = (struct __pyx_obj_6cocoex_9interface_Observer *)o; + if (p->_name) { + e = (*v)(p->_name, a); if (e) return e; + } + if (p->_options) { + e = (*v)(p->_options, a); if (e) return e; + } if (p->_state) { e = (*v)(p->_state, a); if (e) return e; } @@ -14419,43 +12558,131 @@ static int __pyx_tp_traverse_6cocoex_9interface_Observer(PyObject *o, visitproc } static int __pyx_tp_clear_6cocoex_9interface_Observer(PyObject *o) { - PyObject* tmp; struct __pyx_obj_6cocoex_9interface_Observer *p = (struct __pyx_obj_6cocoex_9interface_Observer *)o; + PyObject* tmp; + tmp = ((PyObject*)p->_name); + p->_name = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->_options); + p->_options = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); tmp = ((PyObject*)p->_state); p->_state = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } -static PyObject *__pyx_getprop_6cocoex_9interface_8Observer_name(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_8Observer_4name_1__get__(o); -} +static PyMethodDef __pyx_methods_6cocoex_9interface_Observer[] = { + {__Pyx_NAMESTR("_update_current_observer_global"), (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_3_update_current_observer_global, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_8Observer_2_update_current_observer_global)}, + {__Pyx_NAMESTR("observe"), (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_5observe, METH_O, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_8Observer_4observe)}, + {__Pyx_NAMESTR("name"), (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_7name, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_8Observer_6name)}, + {__Pyx_NAMESTR("options"), (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_9options, METH_NOARGS, __Pyx_DOCSTR(0)}, + {__Pyx_NAMESTR("state"), (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_11state, METH_NOARGS, __Pyx_DOCSTR(0)}, + {__Pyx_NAMESTR("free"), (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_13free, METH_NOARGS, __Pyx_DOCSTR(0)}, + {0, 0, 0, 0} +}; -static PyObject *__pyx_getprop_6cocoex_9interface_8Observer_options(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_8Observer_7options_1__get__(o); -} +static PyNumberMethods __pyx_tp_as_number_Observer = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_divide*/ + #endif + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_coerce*/ + #endif + 0, /*nb_int*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_long*/ + #else + 0, /*reserved*/ + #endif + 0, /*nb_float*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_oct*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*nb_hex*/ + #endif + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_inplace_divide*/ + #endif + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + #if PY_VERSION_HEX >= 0x02050000 + 0, /*nb_index*/ + #endif +}; -static PyObject *__pyx_getprop_6cocoex_9interface_8Observer_state(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_8Observer_5state_1__get__(o); -} +static PySequenceMethods __pyx_tp_as_sequence_Observer = { + 0, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + 0, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; -static PyMethodDef __pyx_methods_6cocoex_9interface_Observer[] = { - {"_update_current_observer_global", (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_3_update_current_observer_global, METH_NOARGS, __pyx_doc_6cocoex_9interface_8Observer_2_update_current_observer_global}, - {"observe", (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_5observe, METH_O, __pyx_doc_6cocoex_9interface_8Observer_4observe}, - {"free", (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_7free, METH_NOARGS, 0}, - {0, 0, 0, 0} +static PyMappingMethods __pyx_tp_as_mapping_Observer = { + 0, /*mp_length*/ + 0, /*mp_subscript*/ + 0, /*mp_ass_subscript*/ }; -static struct PyGetSetDef __pyx_getsets_6cocoex_9interface_Observer[] = { - {(char *)"name", __pyx_getprop_6cocoex_9interface_8Observer_name, 0, (char *)"name of the observer as used with `Observer(name, ...)` to instantiate\n `self` before.\n ", 0}, - {(char *)"options", __pyx_getprop_6cocoex_9interface_8Observer_options, 0, (char *)0, 0}, - {(char *)"state", __pyx_getprop_6cocoex_9interface_8Observer_state, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} +static PyBufferProcs __pyx_tp_as_buffer_Observer = { + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getreadbuffer*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getwritebuffer*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getsegcount*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getcharbuffer*/ + #endif + #if PY_VERSION_HEX >= 0x02060000 + 0, /*bf_getbuffer*/ + #endif + #if PY_VERSION_HEX >= 0x02060000 + 0, /*bf_releasebuffer*/ + #endif }; static PyTypeObject __pyx_type_6cocoex_9interface_Observer = { PyVarObject_HEAD_INIT(0, 0) - "cocoex.interface.Observer", /*tp_name*/ + __Pyx_NAMESTR("cocoex.interface.Observer"), /*tp_name*/ sizeof(struct __pyx_obj_6cocoex_9interface_Observer), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6cocoex_9interface_Observer, /*tp_dealloc*/ @@ -14464,22 +12691,21 @@ static PyTypeObject __pyx_type_6cocoex_9interface_Observer = { 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ + #else + 0, /*reserved*/ #endif 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ + &__pyx_tp_as_number_Observer, /*tp_as_number*/ + &__pyx_tp_as_sequence_Observer, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_Observer, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ + &__pyx_tp_as_buffer_Observer, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "Observer which can be \"attached to\" one or several problems, however not\n necessarily at the same time.\n\n The typical observer records data to be used in the COCO post-processing\n module `cocopp` afterwards.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> assert len(suite) == 2160\n >>> f = suite.get_problem(33)\n >>> assert f.id.endswith('f003_i04_d02')\n >>> observer = ex.Observer(\"bbob\",\n ... \"result_folder: doctest\")\n >>> f.observe_with(observer) # the same as observer.observe(f) # doctest: +ELLIPSIS\n >> # work work work with observed f\n >>> f.free()\n\n Details:\n - `f.free()` in the above example must be called before to observe\n another problem with the \"bbob\" observer. Otherwise the Python\n interpreter will crash due to an error raised from the C code.\n - Due to technical sublties between Python/Cython/C, the pointer to the\n underlying C observer is passed by global assignment with\n `_update_current_observer_global()`\n\n\n ", /*tp_doc*/ + __Pyx_DOCSTR("Observer which can be \"attached to\" one or several problems, however not\n necessarily at the same time.\n\n The typical observer records data to be used in the COCO post-processing\n module `cocopp` afterwards.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> assert len(suite) == 2160\n >>> f = suite.get_problem(33)\n >>> assert f.id.endswith('f003_i04_d02')\n >>> observer = ex.Observer(\"bbob\",\n ... \"result_folder: doctest\")\n >>> f.observe_with(observer) # the same as observer.observe(f) # doctest: +ELLIPSIS\n >> # work work work with observed f\n >>> f.free()\n\n Details:\n - `f.free()` in the above example must be called before to observe\n another problem with the \"bbob\" observer. Otherwise the Python\n interpreter will crash due to an error raised from the C code.\n - Due to technical sublties between Python/Cython/C, the pointer to the\n underlying C observer is passed by global assignment with\n `_update_current_observer_global()`\n\n\n "), /*tp_doc*/ __pyx_tp_traverse_6cocoex_9interface_Observer, /*tp_traverse*/ __pyx_tp_clear_6cocoex_9interface_Observer, /*tp_clear*/ 0, /*tp_richcompare*/ @@ -14488,7 +12714,7 @@ static PyTypeObject __pyx_type_6cocoex_9interface_Observer = { 0, /*tp_iternext*/ __pyx_methods_6cocoex_9interface_Observer, /*tp_methods*/ 0, /*tp_members*/ - __pyx_getsets_6cocoex_9interface_Observer, /*tp_getset*/ + 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ @@ -14505,9 +12731,8 @@ static PyTypeObject __pyx_type_6cocoex_9interface_Observer = { 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ + #if PY_VERSION_HEX >= 0x02060000 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ #endif }; static struct __pyx_vtabstruct_6cocoex_9interface_Problem __pyx_vtable_6cocoex_9interface_Problem; @@ -14515,11 +12740,7 @@ static struct __pyx_vtabstruct_6cocoex_9interface_Problem __pyx_vtable_6cocoex_9 static PyObject *__pyx_tp_new_6cocoex_9interface_Problem(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { struct __pyx_obj_6cocoex_9interface_Problem *p; PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } + o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_6cocoex_9interface_Problem *)o); p->__pyx_vtab = __pyx_vtabptr_6cocoex_9interface_Problem; @@ -14541,17 +12762,13 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Problem(PyTypeObject *t, CYTHON static void __pyx_tp_dealloc_6cocoex_9interface_Problem(PyObject *o) { struct __pyx_obj_6cocoex_9interface_Problem *p = (struct __pyx_obj_6cocoex_9interface_Problem *)o; - #if PY_VERSION_HEX >= 0x030400a1 - if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif PyObject_GC_UnTrack(o); { PyObject *etype, *eval, *etb; PyErr_Fetch(&etype, &eval, &etb); ++Py_REFCNT(o); - __pyx_pw_6cocoex_9interface_7Problem_17__dealloc__(o); + __pyx_pw_6cocoex_9interface_7Problem_39__dealloc__(o); + if (PyErr_Occurred()) PyErr_WriteUnraisable(o); --Py_REFCNT(o); PyErr_Restore(etype, eval, etb); } @@ -14605,8 +12822,8 @@ static int __pyx_tp_traverse_6cocoex_9interface_Problem(PyObject *o, visitproc v } static int __pyx_tp_clear_6cocoex_9interface_Problem(PyObject *o) { - PyObject* tmp; struct __pyx_obj_6cocoex_9interface_Problem *p = (struct __pyx_obj_6cocoex_9interface_Problem *)o; + PyObject* tmp; tmp = ((PyObject*)p->y_values); p->y_values = ((PyArrayObject *)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); @@ -14640,74 +12857,10 @@ static int __pyx_tp_clear_6cocoex_9interface_Problem(PyObject *o) { return 0; } -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_initial_solution(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_16initial_solution_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_list_of_observers(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_17list_of_observers_1__get__(o); -} - static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_number_of_variables(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_6cocoex_9interface_7Problem_19number_of_variables_1__get__(o); } -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_dimension(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_9dimension_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_number_of_objectives(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_20number_of_objectives_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_number_of_constraints(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_21number_of_constraints_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_lower_bounds(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_12lower_bounds_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_upper_bounds(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_12upper_bounds_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_evaluations(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_11evaluations_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_final_target_hit(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_16final_target_hit_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_final_target_fvalue1(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_20final_target_fvalue1_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_best_observed_fvalue1(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_21best_observed_fvalue1_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_id(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_2id_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_name(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_4name_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_index(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_5index_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_suite(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_5suite_1__get__(o); -} - -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_info(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_4info_1__get__(o); -} - static PyObject *__pyx_getprop_6cocoex_9interface_7Problem__lower_bounds(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_1__get__(o); } @@ -14735,68 +12888,165 @@ static int __pyx_setprop_6cocoex_9interface_7Problem__upper_bounds(PyObject *o, } static PyMethodDef __pyx_methods_6cocoex_9interface_Problem[] = { - {"constraint", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_3constraint, METH_O, __pyx_doc_6cocoex_9interface_7Problem_2constraint}, - {"recommend", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_5recommend, METH_O, __pyx_doc_6cocoex_9interface_7Problem_4recommend}, - {"logger_biobj_feed_solution", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solution, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_7Problem_6logger_biobj_feed_solution}, - {"add_observer", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_9add_observer, METH_O, __pyx_doc_6cocoex_9interface_7Problem_8add_observer}, - {"observe_with", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_11observe_with, METH_O, __pyx_doc_6cocoex_9interface_7Problem_10observe_with}, - {"_f0", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_13_f0, METH_O, __pyx_doc_6cocoex_9interface_7Problem_12_f0}, - {"free", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_15free, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_7Problem_14free}, - {"__enter__", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_25__enter__, METH_NOARGS, __pyx_doc_6cocoex_9interface_7Problem_24__enter__}, - {"__exit__", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_27__exit__, METH_VARARGS|METH_KEYWORDS, 0}, + {__Pyx_NAMESTR("constraint"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_3constraint, METH_O, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_2constraint)}, + {__Pyx_NAMESTR("recommend"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_5recommend, METH_O, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_4recommend)}, + {__Pyx_NAMESTR("logger_biobj_feed_solution"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solution, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_6logger_biobj_feed_solution)}, + {__Pyx_NAMESTR("add_observer"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_9add_observer, METH_O, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_8add_observer)}, + {__Pyx_NAMESTR("observe_with"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_11observe_with, METH_O, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_10observe_with)}, + {__Pyx_NAMESTR("_f0"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_13_f0, METH_O, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_12_f0)}, + {__Pyx_NAMESTR("initial_solution"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_15initial_solution, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_14initial_solution)}, + {__Pyx_NAMESTR("list_of_observers"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_17list_of_observers, METH_NOARGS, __Pyx_DOCSTR(0)}, + {__Pyx_NAMESTR("dimension"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_19dimension, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_18dimension)}, + {__Pyx_NAMESTR("number_of_objectives"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_21number_of_objectives, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_20number_of_objectives)}, + {__Pyx_NAMESTR("number_of_constraints"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_23number_of_constraints, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_22number_of_constraints)}, + {__Pyx_NAMESTR("lower_bounds"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_25lower_bounds, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_24lower_bounds)}, + {__Pyx_NAMESTR("upper_bounds"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_27upper_bounds, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_26upper_bounds)}, + {__Pyx_NAMESTR("evaluations"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_29evaluations, METH_NOARGS, __Pyx_DOCSTR(0)}, + {__Pyx_NAMESTR("final_target_hit"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_31final_target_hit, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_30final_target_hit)}, + {__Pyx_NAMESTR("final_target_fvalue1"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_33final_target_fvalue1, METH_NOARGS, __Pyx_DOCSTR(0)}, + {__Pyx_NAMESTR("best_observed_fvalue1"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_35best_observed_fvalue1, METH_NOARGS, __Pyx_DOCSTR(0)}, + {__Pyx_NAMESTR("free"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_37free, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_36free)}, + {__Pyx_NAMESTR("id"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_43id, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_42id)}, + {__Pyx_NAMESTR("name"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_45name, METH_NOARGS, __Pyx_DOCSTR(0)}, + {__Pyx_NAMESTR("index"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_47index, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_46index)}, + {__Pyx_NAMESTR("suite"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_49suite, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_48suite)}, + {__Pyx_NAMESTR("info"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_51info, METH_NOARGS, __Pyx_DOCSTR(0)}, + {__Pyx_NAMESTR("__enter__"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_57__enter__, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_56__enter__)}, + {__Pyx_NAMESTR("__exit__"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_59__exit__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, {0, 0, 0, 0} }; static struct PyGetSetDef __pyx_getsets_6cocoex_9interface_Problem[] = { - {(char *)"initial_solution", __pyx_getprop_6cocoex_9interface_7Problem_initial_solution, 0, (char *)"return feasible initial solution", 0}, - {(char *)"list_of_observers", __pyx_getprop_6cocoex_9interface_7Problem_list_of_observers, 0, (char *)0, 0}, - {(char *)"number_of_variables", __pyx_getprop_6cocoex_9interface_7Problem_number_of_variables, 0, (char *)"Number of variables this problem instance expects as input.", 0}, - {(char *)"dimension", __pyx_getprop_6cocoex_9interface_7Problem_dimension, 0, (char *)"alias for `number_of_variables` of the input space", 0}, - {(char *)"number_of_objectives", __pyx_getprop_6cocoex_9interface_7Problem_number_of_objectives, 0, (char *)"number of objectives, if equal to 1, call returns a scalar", 0}, - {(char *)"number_of_constraints", __pyx_getprop_6cocoex_9interface_7Problem_number_of_constraints, 0, (char *)"number of constraints", 0}, - {(char *)"lower_bounds", __pyx_getprop_6cocoex_9interface_7Problem_lower_bounds, 0, (char *)"depending on the test bed, these are not necessarily strict bounds\n ", 0}, - {(char *)"upper_bounds", __pyx_getprop_6cocoex_9interface_7Problem_upper_bounds, 0, (char *)"depending on the test bed, these are not necessarily strict bounds\n ", 0}, - {(char *)"evaluations", __pyx_getprop_6cocoex_9interface_7Problem_evaluations, 0, (char *)0, 0}, - {(char *)"final_target_hit", __pyx_getprop_6cocoex_9interface_7Problem_final_target_hit, 0, (char *)"return 1 if the final target is known and has been hit, 0 otherwise\n ", 0}, - {(char *)"final_target_fvalue1", __pyx_getprop_6cocoex_9interface_7Problem_final_target_fvalue1, 0, (char *)0, 0}, - {(char *)"best_observed_fvalue1", __pyx_getprop_6cocoex_9interface_7Problem_best_observed_fvalue1, 0, (char *)0, 0}, - {(char *)"id", __pyx_getprop_6cocoex_9interface_7Problem_id, 0, (char *)"id as string without spaces or weird characters", 0}, - {(char *)"name", __pyx_getprop_6cocoex_9interface_7Problem_name, 0, (char *)0, 0}, - {(char *)"index", __pyx_getprop_6cocoex_9interface_7Problem_index, 0, (char *)"problem index in the benchmark `Suite` of origin", 0}, - {(char *)"suite", __pyx_getprop_6cocoex_9interface_7Problem_suite, 0, (char *)"benchmark suite this problem is from", 0}, - {(char *)"info", __pyx_getprop_6cocoex_9interface_7Problem_info, 0, (char *)0, 0}, - {(char *)"_lower_bounds", __pyx_getprop_6cocoex_9interface_7Problem__lower_bounds, __pyx_setprop_6cocoex_9interface_7Problem__lower_bounds, (char *)0, 0}, - {(char *)"_upper_bounds", __pyx_getprop_6cocoex_9interface_7Problem__upper_bounds, __pyx_setprop_6cocoex_9interface_7Problem__upper_bounds, (char *)0, 0}, + {(char *)"number_of_variables", __pyx_getprop_6cocoex_9interface_7Problem_number_of_variables, 0, __Pyx_DOCSTR(__pyx_k_69), 0}, + {(char *)"_lower_bounds", __pyx_getprop_6cocoex_9interface_7Problem__lower_bounds, __pyx_setprop_6cocoex_9interface_7Problem__lower_bounds, 0, 0}, + {(char *)"_upper_bounds", __pyx_getprop_6cocoex_9interface_7Problem__upper_bounds, __pyx_setprop_6cocoex_9interface_7Problem__upper_bounds, 0, 0}, {0, 0, 0, 0, 0} }; -static PyTypeObject __pyx_type_6cocoex_9interface_Problem = { - PyVarObject_HEAD_INIT(0, 0) - "cocoex.interface.Problem", /*tp_name*/ - sizeof(struct __pyx_obj_6cocoex_9interface_Problem), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6cocoex_9interface_Problem, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ +static PyNumberMethods __pyx_tp_as_number_Problem = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ + 0, /*nb_divide*/ #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_coerce*/ + #endif + 0, /*nb_int*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_long*/ + #else + 0, /*reserved*/ + #endif + 0, /*nb_float*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_oct*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*nb_hex*/ + #endif + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_inplace_divide*/ + #endif + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + #if PY_VERSION_HEX >= 0x02050000 + 0, /*nb_index*/ + #endif +}; + +static PySequenceMethods __pyx_tp_as_sequence_Problem = { + 0, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + 0, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping_Problem = { + 0, /*mp_length*/ + 0, /*mp_subscript*/ + 0, /*mp_ass_subscript*/ +}; + +static PyBufferProcs __pyx_tp_as_buffer_Problem = { + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getreadbuffer*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getwritebuffer*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getsegcount*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getcharbuffer*/ + #endif + #if PY_VERSION_HEX >= 0x02060000 + 0, /*bf_getbuffer*/ + #endif + #if PY_VERSION_HEX >= 0x02060000 + 0, /*bf_releasebuffer*/ + #endif +}; + +static PyTypeObject __pyx_type_6cocoex_9interface_Problem = { + PyVarObject_HEAD_INIT(0, 0) + __Pyx_NAMESTR("cocoex.interface.Problem"), /*tp_name*/ + sizeof(struct __pyx_obj_6cocoex_9interface_Problem), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_6cocoex_9interface_Problem, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #else + 0, /*reserved*/ #endif - __pyx_pw_6cocoex_9interface_7Problem_23__repr__, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ + __pyx_pw_6cocoex_9interface_7Problem_55__repr__, /*tp_repr*/ + &__pyx_tp_as_number_Problem, /*tp_as_number*/ + &__pyx_tp_as_sequence_Problem, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_Problem, /*tp_as_mapping*/ 0, /*tp_hash*/ - __pyx_pw_6cocoex_9interface_7Problem_19__call__, /*tp_call*/ - __pyx_pw_6cocoex_9interface_7Problem_21__str__, /*tp_str*/ + __pyx_pw_6cocoex_9interface_7Problem_41__call__, /*tp_call*/ + __pyx_pw_6cocoex_9interface_7Problem_53__str__, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ + &__pyx_tp_as_buffer_Problem, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "`Problem` instances are usually generated using `Suite`.\n \n The main feature of a problem instance is that it is callable, returning the\n objective function value when called with a candidate solution as input.\n ", /*tp_doc*/ + __Pyx_DOCSTR("`Problem` instances are usually generated using `Suite`.\n \n The main feature of a problem instance is that it is callable, returning the\n objective function value when called with a candidate solution as input.\n "), /*tp_doc*/ __pyx_tp_traverse_6cocoex_9interface_Problem, /*tp_traverse*/ __pyx_tp_clear_6cocoex_9interface_Problem, /*tp_clear*/ 0, /*tp_richcompare*/ @@ -14822,9 +13072,8 @@ static PyTypeObject __pyx_type_6cocoex_9interface_Problem = { 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ + #if PY_VERSION_HEX >= 0x02060000 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ #endif }; @@ -14832,16 +13081,24 @@ static struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *__pyx_f static int __pyx_freecount_6cocoex_9interface___pyx_scope_struct____iter__ = 0; static PyObject *__pyx_tp_new_6cocoex_9interface___pyx_scope_struct____iter__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *p; PyObject *o; - if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6cocoex_9interface___pyx_scope_struct____iter__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__)))) { + if (likely((__pyx_freecount_6cocoex_9interface___pyx_scope_struct____iter__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__)))) { o = (PyObject*)__pyx_freelist_6cocoex_9interface___pyx_scope_struct____iter__[--__pyx_freecount_6cocoex_9interface___pyx_scope_struct____iter__]; memset(o, 0, sizeof(struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__)); - (void) PyObject_INIT(o, t); + PyObject_INIT(o, t); PyObject_GC_Track(o); } else { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } + p = ((struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)o); + p->__pyx_v_problem = 0; + p->__pyx_v_s = 0; + p->__pyx_v_self = 0; + p->__pyx_t_0 = 0; + p->__pyx_t_1 = 0; + p->__pyx_t_2 = 0; return o; } @@ -14854,7 +13111,7 @@ static void __pyx_tp_dealloc_6cocoex_9interface___pyx_scope_struct____iter__(PyO Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); - if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6cocoex_9interface___pyx_scope_struct____iter__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__)))) { + if ((__pyx_freecount_6cocoex_9interface___pyx_scope_struct____iter__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__))) { __pyx_freelist_6cocoex_9interface___pyx_scope_struct____iter__[__pyx_freecount_6cocoex_9interface___pyx_scope_struct____iter__++] = ((struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)o); } else { (*Py_TYPE(o)->tp_free)(o); @@ -14886,8 +13143,8 @@ static int __pyx_tp_traverse_6cocoex_9interface___pyx_scope_struct____iter__(PyO } static int __pyx_tp_clear_6cocoex_9interface___pyx_scope_struct____iter__(PyObject *o) { - PyObject* tmp; struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *p = (struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)o; + PyObject* tmp; tmp = ((PyObject*)p->__pyx_v_problem); p->__pyx_v_problem = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); @@ -14909,9 +13166,111 @@ static int __pyx_tp_clear_6cocoex_9interface___pyx_scope_struct____iter__(PyObje return 0; } +static PyMethodDef __pyx_methods_6cocoex_9interface___pyx_scope_struct____iter__[] = { + {0, 0, 0, 0} +}; + +static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct____iter__ = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_divide*/ + #endif + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_coerce*/ + #endif + 0, /*nb_int*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_long*/ + #else + 0, /*reserved*/ + #endif + 0, /*nb_float*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_oct*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*nb_hex*/ + #endif + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + #if PY_MAJOR_VERSION < 3 + 0, /*nb_inplace_divide*/ + #endif + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + #if PY_VERSION_HEX >= 0x02050000 + 0, /*nb_index*/ + #endif +}; + +static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct____iter__ = { + 0, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + 0, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping___pyx_scope_struct____iter__ = { + 0, /*mp_length*/ + 0, /*mp_subscript*/ + 0, /*mp_ass_subscript*/ +}; + +static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct____iter__ = { + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getreadbuffer*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getwritebuffer*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getsegcount*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getcharbuffer*/ + #endif + #if PY_VERSION_HEX >= 0x02060000 + 0, /*bf_getbuffer*/ + #endif + #if PY_VERSION_HEX >= 0x02060000 + 0, /*bf_releasebuffer*/ + #endif +}; + static PyTypeObject __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__ = { PyVarObject_HEAD_INIT(0, 0) - "cocoex.interface.__pyx_scope_struct____iter__", /*tp_name*/ + __Pyx_NAMESTR("cocoex.interface.__pyx_scope_struct____iter__"), /*tp_name*/ sizeof(struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6cocoex_9interface___pyx_scope_struct____iter__, /*tp_dealloc*/ @@ -14920,20 +13279,19 @@ static PyTypeObject __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__ = 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ + #else + 0, /*reserved*/ #endif 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ + &__pyx_tp_as_number___pyx_scope_struct____iter__, /*tp_as_number*/ + &__pyx_tp_as_sequence___pyx_scope_struct____iter__, /*tp_as_sequence*/ + &__pyx_tp_as_mapping___pyx_scope_struct____iter__, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ + &__pyx_tp_as_buffer___pyx_scope_struct____iter__, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_6cocoex_9interface___pyx_scope_struct____iter__, /*tp_traverse*/ @@ -14942,7 +13300,7 @@ static PyTypeObject __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__ = 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ - 0, /*tp_methods*/ + __pyx_methods_6cocoex_9interface___pyx_scope_struct____iter__, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ @@ -14961,9 +13319,8 @@ static PyTypeObject __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__ = 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ + #if PY_VERSION_HEX >= 0x02060000 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ #endif }; @@ -14978,7 +13335,7 @@ static struct PyModuleDef __pyx_moduledef = { #else PyModuleDef_HEAD_INIT, #endif - "interface", + __Pyx_NAMESTR("interface"), 0, /* m_doc */ -1, /* m_size */ __pyx_methods /* m_methods */, @@ -14990,159 +13347,176 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_u_C, __pyx_k_C, sizeof(__pyx_k_C), 0, 1, 0, 1}, - {&__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_k_Dimension_np_size_x_d_of_input_x, sizeof(__pyx_k_Dimension_np_size_x_d_of_input_x), 0, 1, 0, 0}, - {&__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_k_Dimension_np_size_y_d_of_input_y, sizeof(__pyx_k_Dimension_np_size_y_d_of_input_y), 0, 1, 0, 0}, - {&__pyx_kp_u_Format_string_allocated_too_shor, __pyx_k_Format_string_allocated_too_shor, sizeof(__pyx_k_Format_string_allocated_too_shor), 0, 1, 0, 0}, - {&__pyx_kp_u_Format_string_allocated_too_shor_2, __pyx_k_Format_string_allocated_too_shor_2, sizeof(__pyx_k_Format_string_allocated_too_shor_2), 0, 1, 0, 0}, - {&__pyx_n_s_InvalidProblemException, __pyx_k_InvalidProblemException, sizeof(__pyx_k_InvalidProblemException), 0, 0, 1, 1}, - {&__pyx_n_s_NoSuchProblemException, __pyx_k_NoSuchProblemException, sizeof(__pyx_k_NoSuchProblemException), 0, 0, 1, 1}, - {&__pyx_n_s_NoSuchSuiteException, __pyx_k_NoSuchSuiteException, sizeof(__pyx_k_NoSuchSuiteException), 0, 0, 1, 1}, - {&__pyx_kp_u_No_suite_with_name_s_found, __pyx_k_No_suite_with_name_s_found, sizeof(__pyx_k_No_suite_with_name_s_found), 0, 1, 0, 0}, - {&__pyx_kp_u_Non_native_byte_order_not_suppor, __pyx_k_Non_native_byte_order_not_suppor, sizeof(__pyx_k_Non_native_byte_order_not_suppor), 0, 1, 0, 0}, - {&__pyx_n_s_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 0, 1, 1}, - {&__pyx_kp_u_Problem_already_initialized, __pyx_k_Problem_already_initialized, sizeof(__pyx_k_Problem_already_initialized), 0, 1, 0, 0}, - {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1}, - {&__pyx_n_s_StopIteration, __pyx_k_StopIteration, sizeof(__pyx_k_StopIteration), 0, 0, 1, 1}, - {&__pyx_n_s_Suite___iter, __pyx_k_Suite___iter, sizeof(__pyx_k_Suite___iter), 0, 0, 1, 1}, - {&__pyx_kp_u_Suite_current_index___get___line, __pyx_k_Suite_current_index___get___line, sizeof(__pyx_k_Suite_current_index___get___line), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_get_problem_by_function_di, __pyx_k_Suite_get_problem_by_function_di, sizeof(__pyx_k_Suite_get_problem_by_function_di), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_get_problem_line_281, __pyx_k_Suite_get_problem_line_281, sizeof(__pyx_k_Suite_get_problem_line_281), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_has_been_finalized_free_ed, __pyx_k_Suite_has_been_finalized_free_ed, sizeof(__pyx_k_Suite_has_been_finalized_free_ed), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_ids_line_384, __pyx_k_Suite_ids_line_384, sizeof(__pyx_k_Suite_ids_line_384), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_r_r_r, __pyx_k_Suite_r_r_r, sizeof(__pyx_k_Suite_r_r_r), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_k_Suite_s_s_s_with_d_problem_s_in, sizeof(__pyx_k_Suite_s_s_s_with_d_problem_s_in), 0, 1, 0, 0}, - {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, - {&__pyx_kp_u_Unkown_benchmark_suite_name_s_Kn, __pyx_k_Unkown_benchmark_suite_name_s_Kn, sizeof(__pyx_k_Unkown_benchmark_suite_name_s_Kn), 0, 1, 0, 0}, - {&__pyx_kp_s_Users_hansen_git_coco_code_expe, __pyx_k_Users_hansen_git_coco_code_expe, sizeof(__pyx_k_Users_hansen_git_coco_code_expe), 0, 0, 1, 0}, - {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, - {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0}, - {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0}, - {&__pyx_kp_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 0}, - {&__pyx_kp_u__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0, 0}, - {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0}, - {&__pyx_kp_u__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0, 0}, - {&__pyx_kp_u__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 1, 0, 0}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, - {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, - {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1}, - {&__pyx_n_u_ascii, __pyx_k_ascii, sizeof(__pyx_k_ascii), 0, 1, 0, 1}, - {&__pyx_n_b_bbob, __pyx_k_bbob, sizeof(__pyx_k_bbob), 0, 0, 0, 1}, - {&__pyx_kp_b_bbob_biobj, __pyx_k_bbob_biobj, sizeof(__pyx_k_bbob_biobj), 0, 0, 0, 0}, - {&__pyx_kp_b_bbob_constrained, __pyx_k_bbob_constrained, sizeof(__pyx_k_bbob_constrained), 0, 0, 0, 0}, - {&__pyx_kp_b_bbob_largescale, __pyx_k_bbob_largescale, sizeof(__pyx_k_bbob_largescale), 0, 0, 0, 0}, - {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1}, - {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, - {&__pyx_n_s_cocoex_exceptions, __pyx_k_cocoex_exceptions, sizeof(__pyx_k_cocoex_exceptions), 0, 0, 1, 1}, - {&__pyx_n_s_cocoex_interface, __pyx_k_cocoex_interface, sizeof(__pyx_k_cocoex_interface), 0, 0, 1, 1}, - {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1}, - {&__pyx_kp_u_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 1, 0, 0}, - {&__pyx_kp_u_d_d, __pyx_k_d_d, sizeof(__pyx_k_d_d), 0, 1, 0, 0}, - {&__pyx_n_u_deactivated, __pyx_k_deactivated, sizeof(__pyx_k_deactivated), 0, 1, 0, 1}, - {&__pyx_n_s_dealloc, __pyx_k_dealloc, sizeof(__pyx_k_dealloc), 0, 0, 1, 1}, - {&__pyx_n_s_dimension, __pyx_k_dimension, sizeof(__pyx_k_dimension), 0, 0, 1, 1}, - {&__pyx_n_s_dimensions, __pyx_k_dimensions, sizeof(__pyx_k_dimensions), 0, 0, 1, 1}, - {&__pyx_n_s_double, __pyx_k_double, sizeof(__pyx_k_double), 0, 0, 1, 1}, - {&__pyx_n_s_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 0, 1, 1}, - {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, - {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, - {&__pyx_n_s_evaluation, __pyx_k_evaluation, sizeof(__pyx_k_evaluation), 0, 0, 1, 1}, - {&__pyx_n_s_exception_type, __pyx_k_exception_type, sizeof(__pyx_k_exception_type), 0, 0, 1, 1}, - {&__pyx_n_s_exception_value, __pyx_k_exception_value, sizeof(__pyx_k_exception_value), 0, 0, 1, 1}, - {&__pyx_kp_u_expect_a_string_got_s, __pyx_k_expect_a_string_got_s, sizeof(__pyx_k_expect_a_string_got_s), 0, 1, 0, 0}, - {&__pyx_n_s_final_target_fvalue1, __pyx_k_final_target_fvalue1, sizeof(__pyx_k_final_target_fvalue1), 0, 0, 1, 1}, - {&__pyx_kp_u_finalized_invalid_problem, __pyx_k_finalized_invalid_problem, sizeof(__pyx_k_finalized_invalid_problem), 0, 1, 0, 0}, - {&__pyx_kp_u_finalized_invalid_problem_2, __pyx_k_finalized_invalid_problem_2, sizeof(__pyx_k_finalized_invalid_problem_2), 0, 1, 0, 0}, - {&__pyx_n_s_find, __pyx_k_find, sizeof(__pyx_k_find), 0, 0, 1, 1}, - {&__pyx_kp_u_find_problem_ids_has_been_renam, __pyx_k_find_problem_ids_has_been_renam, sizeof(__pyx_k_find_problem_ids_has_been_renam), 0, 1, 0, 0}, - {&__pyx_n_s_force, __pyx_k_force, sizeof(__pyx_k_force), 0, 0, 1, 1}, - {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1}, - {&__pyx_n_s_free, __pyx_k_free, sizeof(__pyx_k_free), 0, 0, 1, 1}, - {&__pyx_n_s_function, __pyx_k_function, sizeof(__pyx_k_function), 0, 0, 1, 1}, - {&__pyx_kp_u_function_dimension_instance, __pyx_k_function_dimension_instance, sizeof(__pyx_k_function_dimension_instance), 0, 1, 0, 0}, - {&__pyx_n_s_get_problem, __pyx_k_get_problem, sizeof(__pyx_k_get_problem), 0, 0, 1, 1}, - {&__pyx_kp_u_get_problem_self_id_observer_No, __pyx_k_get_problem_self_id_observer_No, sizeof(__pyx_k_get_problem_self_id_observer_No), 0, 1, 0, 0}, - {&__pyx_kp_u_has_never_been_tested_incomment, __pyx_k_has_never_been_tested_incomment, sizeof(__pyx_k_has_never_been_tested_incomment), 0, 1, 0, 0}, - {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, - {&__pyx_kp_u_id_s_index_d, __pyx_k_id_s_index_d, sizeof(__pyx_k_id_s_index_d), 0, 1, 0, 0}, - {&__pyx_kp_u_ids_id_snippets_get_problem_Fal, __pyx_k_ids_id_snippets_get_problem_Fal, sizeof(__pyx_k_ids_id_snippets_get_problem_Fal), 0, 1, 0, 0}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_kp_u_in_Problem__initialize_problem_p, __pyx_k_in_Problem__initialize_problem_p, sizeof(__pyx_k_in_Problem__initialize_problem_p), 0, 1, 0, 0}, - {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1}, - {&__pyx_kp_u_index_in_the_enumerator_of_all_p, __pyx_k_index_in_the_enumerator_of_all_p, sizeof(__pyx_k_index_in_the_enumerator_of_all_p), 0, 1, 0, 0}, - {&__pyx_n_s_indices, __pyx_k_indices, sizeof(__pyx_k_indices), 0, 0, 1, 1}, - {&__pyx_n_s_inf, __pyx_k_inf, sizeof(__pyx_k_inf), 0, 0, 1, 1}, - {&__pyx_n_u_initialized, __pyx_k_initialized, sizeof(__pyx_k_initialized), 0, 1, 0, 1}, - {&__pyx_n_s_instance, __pyx_k_instance, sizeof(__pyx_k_instance), 0, 0, 1, 1}, - {&__pyx_n_s_iter, __pyx_k_iter, sizeof(__pyx_k_iter), 0, 0, 1, 1}, - {&__pyx_n_s_known_suite_names, __pyx_k_known_suite_names, sizeof(__pyx_k_known_suite_names), 0, 0, 1, 1}, - {&__pyx_n_s_known_suite_names_2, __pyx_k_known_suite_names_2, sizeof(__pyx_k_known_suite_names_2), 0, 0, 1, 1}, - {&__pyx_n_s_level, __pyx_k_level, sizeof(__pyx_k_level), 0, 0, 1, 1}, - {&__pyx_n_s_level_2, __pyx_k_level_2, sizeof(__pyx_k_level_2), 0, 0, 1, 1}, - {&__pyx_n_s_log_level, __pyx_k_log_level, sizeof(__pyx_k_log_level), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1}, - {&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1}, - {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, - {&__pyx_kp_u_ndarray_is_not_C_contiguous, __pyx_k_ndarray_is_not_C_contiguous, sizeof(__pyx_k_ndarray_is_not_C_contiguous), 0, 1, 0, 0}, - {&__pyx_kp_u_ndarray_is_not_Fortran_contiguou, __pyx_k_ndarray_is_not_Fortran_contiguou, sizeof(__pyx_k_ndarray_is_not_Fortran_contiguou), 0, 1, 0, 0}, - {&__pyx_n_s_next_problem, __pyx_k_next_problem, sizeof(__pyx_k_next_problem), 0, 0, 1, 1}, - {&__pyx_kp_u_not_match_the_number_of_objectiv, __pyx_k_not_match_the_number_of_objectiv, sizeof(__pyx_k_not_match_the_number_of_objectiv), 0, 1, 0, 0}, - {&__pyx_kp_u_not_match_the_problem_dimension, __pyx_k_not_match_the_problem_dimension, sizeof(__pyx_k_not_match_the_problem_dimension), 0, 1, 0, 0}, - {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1}, - {&__pyx_n_s_number_of_objectives, __pyx_k_number_of_objectives, sizeof(__pyx_k_number_of_objectives), 0, 0, 1, 1}, - {&__pyx_n_s_number_of_variables, __pyx_k_number_of_variables, sizeof(__pyx_k_number_of_variables), 0, 0, 1, 1}, - {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1}, - {&__pyx_n_s_observe_with, __pyx_k_observe_with, sizeof(__pyx_k_observe_with), 0, 0, 1, 1}, - {&__pyx_n_s_observer, __pyx_k_observer, sizeof(__pyx_k_observer), 0, 0, 1, 1}, - {&__pyx_n_s_ones, __pyx_k_ones, sizeof(__pyx_k_ones), 0, 0, 1, 1}, - {&__pyx_n_s_options, __pyx_k_options, sizeof(__pyx_k_options), 0, 0, 1, 1}, - {&__pyx_n_s_order, __pyx_k_order, sizeof(__pyx_k_order), 0, 0, 1, 1}, - {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, - {&__pyx_n_s_replace, __pyx_k_replace, sizeof(__pyx_k_replace), 0, 0, 1, 1}, - {&__pyx_n_s_reset, __pyx_k_reset, sizeof(__pyx_k_reset), 0, 0, 1, 1}, - {&__pyx_kp_u_returns_a_Problem_instance_by_de, __pyx_k_returns_a_Problem_instance_by_de, sizeof(__pyx_k_returns_a_Problem_instance_by_de), 0, 1, 0, 0}, - {&__pyx_n_u_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 1, 0, 1}, - {&__pyx_kp_u_s_id_r, __pyx_k_s_id_r, sizeof(__pyx_k_s_id_r), 0, 1, 0, 0}, - {&__pyx_kp_u_s_objective, __pyx_k_s_objective, sizeof(__pyx_k_s_objective), 0, 1, 0, 0}, - {&__pyx_kp_u_s_s_problem_s, __pyx_k_s_s_problem_s, sizeof(__pyx_k_s_s_problem_s), 0, 1, 0, 0}, - {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, - {&__pyx_n_u_single, __pyx_k_single, sizeof(__pyx_k_single), 0, 1, 0, 1}, - {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1}, - {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, - {&__pyx_n_s_suite_instance, __pyx_k_suite_instance, sizeof(__pyx_k_suite_instance), 0, 0, 1, 1}, - {&__pyx_n_s_suite_name, __pyx_k_suite_name, sizeof(__pyx_k_suite_name), 0, 0, 1, 1}, - {&__pyx_n_s_suite_options, __pyx_k_suite_options, sizeof(__pyx_k_suite_options), 0, 0, 1, 1}, - {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, - {&__pyx_n_s_traceback, __pyx_k_traceback, sizeof(__pyx_k_traceback), 0, 0, 1, 1}, - {&__pyx_kp_u_u, __pyx_k_u, sizeof(__pyx_k_u), 0, 1, 0, 0}, - {&__pyx_kp_u_u_2, __pyx_k_u_2, sizeof(__pyx_k_u_2), 0, 1, 0, 0}, - {&__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_k_unknown_dtype_code_in_numpy_pxd, sizeof(__pyx_k_unknown_dtype_code_in_numpy_pxd), 0, 1, 0, 0}, - {&__pyx_n_s_update_current_observer_global, __pyx_k_update_current_observer_global, sizeof(__pyx_k_update_current_observer_global), 0, 0, 1, 1}, - {&__pyx_n_s_verbose, __pyx_k_verbose, sizeof(__pyx_k_verbose), 0, 0, 1, 1}, - {&__pyx_n_u_warning, __pyx_k_warning, sizeof(__pyx_k_warning), 0, 1, 0, 1}, - {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1}, - {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1}, - {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1}, + {&__pyx_n_s_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 0, 1, 1}, + {&__pyx_kp_u_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 1, 0, 0}, + {&__pyx_kp_u_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 1, 0, 0}, + {&__pyx_kp_u_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 1, 0, 0}, + {&__pyx_kp_u_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 1, 0, 0}, + {&__pyx_kp_u_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 1, 0, 0}, + {&__pyx_kp_u_20, __pyx_k_20, sizeof(__pyx_k_20), 0, 1, 0, 0}, + {&__pyx_kp_u_21, __pyx_k_21, sizeof(__pyx_k_21), 0, 1, 0, 0}, + {&__pyx_kp_u_22, __pyx_k_22, sizeof(__pyx_k_22), 0, 1, 0, 0}, + {&__pyx_kp_u_23, __pyx_k_23, sizeof(__pyx_k_23), 0, 1, 0, 0}, + {&__pyx_kp_u_25, __pyx_k_25, sizeof(__pyx_k_25), 0, 1, 0, 0}, + {&__pyx_kp_u_26, __pyx_k_26, sizeof(__pyx_k_26), 0, 1, 0, 0}, + {&__pyx_kp_u_27, __pyx_k_27, sizeof(__pyx_k_27), 0, 1, 0, 0}, + {&__pyx_kp_u_28, __pyx_k_28, sizeof(__pyx_k_28), 0, 1, 0, 0}, + {&__pyx_kp_u_29, __pyx_k_29, sizeof(__pyx_k_29), 0, 1, 0, 0}, + {&__pyx_kp_u_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 1, 0, 0}, + {&__pyx_kp_u_30, __pyx_k_30, sizeof(__pyx_k_30), 0, 1, 0, 0}, + {&__pyx_kp_u_34, __pyx_k_34, sizeof(__pyx_k_34), 0, 1, 0, 0}, + {&__pyx_kp_u_36, __pyx_k_36, sizeof(__pyx_k_36), 0, 1, 0, 0}, + {&__pyx_kp_u_38, __pyx_k_38, sizeof(__pyx_k_38), 0, 1, 0, 0}, + {&__pyx_n_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 1}, + {&__pyx_n_s_41, __pyx_k_41, sizeof(__pyx_k_41), 0, 0, 1, 1}, + {&__pyx_kp_u_42, __pyx_k_42, sizeof(__pyx_k_42), 0, 1, 0, 0}, + {&__pyx_kp_u_43, __pyx_k_43, sizeof(__pyx_k_43), 0, 1, 0, 0}, + {&__pyx_n_s_44, __pyx_k_44, sizeof(__pyx_k_44), 0, 0, 1, 1}, + {&__pyx_n_s_45, __pyx_k_45, sizeof(__pyx_k_45), 0, 0, 1, 1}, + {&__pyx_n_s_46, __pyx_k_46, sizeof(__pyx_k_46), 0, 0, 1, 1}, + {&__pyx_kp_u_48, __pyx_k_48, sizeof(__pyx_k_48), 0, 1, 0, 0}, + {&__pyx_kp_u_49, __pyx_k_49, sizeof(__pyx_k_49), 0, 1, 0, 0}, + {&__pyx_kp_u_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 1, 0, 0}, + {&__pyx_kp_u_50, __pyx_k_50, sizeof(__pyx_k_50), 0, 1, 0, 0}, + {&__pyx_kp_u_51, __pyx_k_51, sizeof(__pyx_k_51), 0, 1, 0, 0}, + {&__pyx_kp_u_52, __pyx_k_52, sizeof(__pyx_k_52), 0, 1, 0, 0}, + {&__pyx_kp_u_53, __pyx_k_53, sizeof(__pyx_k_53), 0, 1, 0, 0}, + {&__pyx_kp_u_54, __pyx_k_54, sizeof(__pyx_k_54), 0, 1, 0, 0}, + {&__pyx_kp_u_56, __pyx_k_56, sizeof(__pyx_k_56), 0, 1, 0, 0}, + {&__pyx_kp_u_57, __pyx_k_57, sizeof(__pyx_k_57), 0, 1, 0, 0}, + {&__pyx_kp_u_59, __pyx_k_59, sizeof(__pyx_k_59), 0, 1, 0, 0}, + {&__pyx_kp_u_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 1, 0, 0}, + {&__pyx_kp_u_61, __pyx_k_61, sizeof(__pyx_k_61), 0, 1, 0, 0}, + {&__pyx_kp_u_63, __pyx_k_63, sizeof(__pyx_k_63), 0, 1, 0, 0}, + {&__pyx_kp_u_64, __pyx_k_64, sizeof(__pyx_k_64), 0, 1, 0, 0}, + {&__pyx_kp_u_67, __pyx_k_67, sizeof(__pyx_k_67), 0, 1, 0, 0}, + {&__pyx_n_s_70, __pyx_k_70, sizeof(__pyx_k_70), 0, 0, 1, 1}, + {&__pyx_kp_b_71, __pyx_k_71, sizeof(__pyx_k_71), 0, 0, 0, 0}, + {&__pyx_kp_b_72, __pyx_k_72, sizeof(__pyx_k_72), 0, 0, 0, 0}, + {&__pyx_kp_b_73, __pyx_k_73, sizeof(__pyx_k_73), 0, 0, 0, 0}, + {&__pyx_n_s_74, __pyx_k_74, sizeof(__pyx_k_74), 0, 0, 1, 1}, + {&__pyx_n_s_75, __pyx_k_75, sizeof(__pyx_k_75), 0, 0, 1, 1}, + {&__pyx_kp_s_78, __pyx_k_78, sizeof(__pyx_k_78), 0, 0, 1, 0}, + {&__pyx_n_s_79, __pyx_k_79, sizeof(__pyx_k_79), 0, 0, 1, 1}, + {&__pyx_kp_u_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 1, 0, 0}, + {&__pyx_kp_u_80, __pyx_k_80, sizeof(__pyx_k_80), 0, 1, 0, 0}, + {&__pyx_kp_u_81, __pyx_k_81, sizeof(__pyx_k_81), 0, 1, 0, 0}, + {&__pyx_kp_u_82, __pyx_k_82, sizeof(__pyx_k_82), 0, 1, 0, 0}, + {&__pyx_kp_u_83, __pyx_k_83, sizeof(__pyx_k_83), 0, 1, 0, 0}, + {&__pyx_kp_u_84, __pyx_k_84, sizeof(__pyx_k_84), 0, 1, 0, 0}, + {&__pyx_kp_u_85, __pyx_k_85, sizeof(__pyx_k_85), 0, 1, 0, 0}, + {&__pyx_kp_u_86, __pyx_k_86, sizeof(__pyx_k_86), 0, 1, 0, 0}, + {&__pyx_kp_u_87, __pyx_k_87, sizeof(__pyx_k_87), 0, 1, 0, 0}, + {&__pyx_n_u__C, __pyx_k__C, sizeof(__pyx_k__C), 0, 1, 0, 1}, + {&__pyx_n_s__NotImplementedError, __pyx_k__NotImplementedError, sizeof(__pyx_k__NotImplementedError), 0, 0, 1, 1}, + {&__pyx_n_s__RuntimeError, __pyx_k__RuntimeError, sizeof(__pyx_k__RuntimeError), 0, 0, 1, 1}, + {&__pyx_n_s__StopIteration, __pyx_k__StopIteration, sizeof(__pyx_k__StopIteration), 0, 0, 1, 1}, + {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1}, + {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1}, + {&__pyx_n_s____class__, __pyx_k____class__, sizeof(__pyx_k____class__), 0, 0, 1, 1}, + {&__pyx_n_s____dealloc__, __pyx_k____dealloc__, sizeof(__pyx_k____dealloc__), 0, 0, 1, 1}, + {&__pyx_n_s____import__, __pyx_k____import__, sizeof(__pyx_k____import__), 0, 0, 1, 1}, + {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1}, + {&__pyx_n_s____pyx_getbuffer, __pyx_k____pyx_getbuffer, sizeof(__pyx_k____pyx_getbuffer), 0, 0, 1, 1}, + {&__pyx_n_s____pyx_releasebuffer, __pyx_k____pyx_releasebuffer, sizeof(__pyx_k____pyx_releasebuffer), 0, 0, 1, 1}, + {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1}, + {&__pyx_n_s___known_suite_names, __pyx_k___known_suite_names, sizeof(__pyx_k___known_suite_names), 0, 0, 1, 1}, + {&__pyx_n_s___level, __pyx_k___level, sizeof(__pyx_k___level), 0, 0, 1, 1}, + {&__pyx_n_s__all, __pyx_k__all, sizeof(__pyx_k__all), 0, 0, 1, 1}, + {&__pyx_n_s__append, __pyx_k__append, sizeof(__pyx_k__append), 0, 0, 1, 1}, + {&__pyx_n_s__args, __pyx_k__args, sizeof(__pyx_k__args), 0, 0, 1, 1}, + {&__pyx_n_s__array, __pyx_k__array, sizeof(__pyx_k__array), 0, 0, 1, 1}, + {&__pyx_n_u__ascii, __pyx_k__ascii, sizeof(__pyx_k__ascii), 0, 1, 0, 1}, + {&__pyx_n_b__bbob, __pyx_k__bbob, sizeof(__pyx_k__bbob), 0, 0, 0, 1}, + {&__pyx_n_s__close, __pyx_k__close, sizeof(__pyx_k__close), 0, 0, 1, 1}, + {&__pyx_n_s__copy, __pyx_k__copy, sizeof(__pyx_k__copy), 0, 0, 1, 1}, + {&__pyx_n_s__current_index, __pyx_k__current_index, sizeof(__pyx_k__current_index), 0, 0, 1, 1}, + {&__pyx_n_s__current_problem, __pyx_k__current_problem, sizeof(__pyx_k__current_problem), 0, 0, 1, 1}, + {&__pyx_n_u__deactivated, __pyx_k__deactivated, sizeof(__pyx_k__deactivated), 0, 1, 0, 1}, + {&__pyx_n_s__dimension, __pyx_k__dimension, sizeof(__pyx_k__dimension), 0, 0, 1, 1}, + {&__pyx_n_s__dimensions, __pyx_k__dimensions, sizeof(__pyx_k__dimensions), 0, 0, 1, 1}, + {&__pyx_n_s__double, __pyx_k__double, sizeof(__pyx_k__double), 0, 0, 1, 1}, + {&__pyx_n_s__dtype, __pyx_k__dtype, sizeof(__pyx_k__dtype), 0, 0, 1, 1}, + {&__pyx_n_s__encode, __pyx_k__encode, sizeof(__pyx_k__encode), 0, 0, 1, 1}, + {&__pyx_n_s__enumerate, __pyx_k__enumerate, sizeof(__pyx_k__enumerate), 0, 0, 1, 1}, + {&__pyx_n_s__evaluation, __pyx_k__evaluation, sizeof(__pyx_k__evaluation), 0, 0, 1, 1}, + {&__pyx_n_s__evaluations, __pyx_k__evaluations, sizeof(__pyx_k__evaluations), 0, 0, 1, 1}, + {&__pyx_n_s__exception_type, __pyx_k__exception_type, sizeof(__pyx_k__exception_type), 0, 0, 1, 1}, + {&__pyx_n_s__exception_value, __pyx_k__exception_value, sizeof(__pyx_k__exception_value), 0, 0, 1, 1}, + {&__pyx_n_s__final_target_hit, __pyx_k__final_target_hit, sizeof(__pyx_k__final_target_hit), 0, 0, 1, 1}, + {&__pyx_n_s__find, __pyx_k__find, sizeof(__pyx_k__find), 0, 0, 1, 1}, + {&__pyx_n_s__force, __pyx_k__force, sizeof(__pyx_k__force), 0, 0, 1, 1}, + {&__pyx_n_s__format, __pyx_k__format, sizeof(__pyx_k__format), 0, 0, 1, 1}, + {&__pyx_n_s__free, __pyx_k__free, sizeof(__pyx_k__free), 0, 0, 1, 1}, + {&__pyx_n_s__function, __pyx_k__function, sizeof(__pyx_k__function), 0, 0, 1, 1}, + {&__pyx_n_s__get_problem, __pyx_k__get_problem, sizeof(__pyx_k__get_problem), 0, 0, 1, 1}, + {&__pyx_n_s__id, __pyx_k__id, sizeof(__pyx_k__id), 0, 0, 1, 1}, + {&__pyx_n_s__index, __pyx_k__index, sizeof(__pyx_k__index), 0, 0, 1, 1}, + {&__pyx_n_s__indices, __pyx_k__indices, sizeof(__pyx_k__indices), 0, 0, 1, 1}, + {&__pyx_n_s__inf, __pyx_k__inf, sizeof(__pyx_k__inf), 0, 0, 1, 1}, + {&__pyx_n_s__info, __pyx_k__info, sizeof(__pyx_k__info), 0, 0, 1, 1}, + {&__pyx_n_s__initial_solution, __pyx_k__initial_solution, sizeof(__pyx_k__initial_solution), 0, 0, 1, 1}, + {&__pyx_n_u__initialized, __pyx_k__initialized, sizeof(__pyx_k__initialized), 0, 1, 0, 1}, + {&__pyx_n_s__instance, __pyx_k__instance, sizeof(__pyx_k__instance), 0, 0, 1, 1}, + {&__pyx_n_s__known_suite_names, __pyx_k__known_suite_names, sizeof(__pyx_k__known_suite_names), 0, 0, 1, 1}, + {&__pyx_n_s__level, __pyx_k__level, sizeof(__pyx_k__level), 0, 0, 1, 1}, + {&__pyx_n_s__list_of_observers, __pyx_k__list_of_observers, sizeof(__pyx_k__list_of_observers), 0, 0, 1, 1}, + {&__pyx_n_s__log_level, __pyx_k__log_level, sizeof(__pyx_k__log_level), 0, 0, 1, 1}, + {&__pyx_n_s__lower_bounds, __pyx_k__lower_bounds, sizeof(__pyx_k__lower_bounds), 0, 0, 1, 1}, + {&__pyx_n_s__max, __pyx_k__max, sizeof(__pyx_k__max), 0, 0, 1, 1}, + {&__pyx_n_s__min, __pyx_k__min, sizeof(__pyx_k__min), 0, 0, 1, 1}, + {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1}, + {&__pyx_n_s__next_problem, __pyx_k__next_problem, sizeof(__pyx_k__next_problem), 0, 0, 1, 1}, + {&__pyx_n_s__np, __pyx_k__np, sizeof(__pyx_k__np), 0, 0, 1, 1}, + {&__pyx_n_s__number_of_variables, __pyx_k__number_of_variables, sizeof(__pyx_k__number_of_variables), 0, 0, 1, 1}, + {&__pyx_n_s__numpy, __pyx_k__numpy, sizeof(__pyx_k__numpy), 0, 0, 1, 1}, + {&__pyx_n_s__observe_with, __pyx_k__observe_with, sizeof(__pyx_k__observe_with), 0, 0, 1, 1}, + {&__pyx_n_s__observer, __pyx_k__observer, sizeof(__pyx_k__observer), 0, 0, 1, 1}, + {&__pyx_n_s__ones, __pyx_k__ones, sizeof(__pyx_k__ones), 0, 0, 1, 1}, + {&__pyx_n_s__options, __pyx_k__options, sizeof(__pyx_k__options), 0, 0, 1, 1}, + {&__pyx_n_s__order, __pyx_k__order, sizeof(__pyx_k__order), 0, 0, 1, 1}, + {&__pyx_n_s__print, __pyx_k__print, sizeof(__pyx_k__print), 0, 0, 1, 1}, + {&__pyx_n_s__problem_names, __pyx_k__problem_names, sizeof(__pyx_k__problem_names), 0, 0, 1, 1}, + {&__pyx_n_s__property, __pyx_k__property, sizeof(__pyx_k__property), 0, 0, 1, 1}, + {&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1}, + {&__pyx_n_s__replace, __pyx_k__replace, sizeof(__pyx_k__replace), 0, 0, 1, 1}, + {&__pyx_n_s__reset, __pyx_k__reset, sizeof(__pyx_k__reset), 0, 0, 1, 1}, + {&__pyx_n_u__s, __pyx_k__s, sizeof(__pyx_k__s), 0, 1, 0, 1}, + {&__pyx_n_s__send, __pyx_k__send, sizeof(__pyx_k__send), 0, 0, 1, 1}, + {&__pyx_n_u__single, __pyx_k__single, sizeof(__pyx_k__single), 0, 1, 0, 1}, + {&__pyx_n_s__size, __pyx_k__size, sizeof(__pyx_k__size), 0, 0, 1, 1}, + {&__pyx_n_s__sorted, __pyx_k__sorted, sizeof(__pyx_k__sorted), 0, 0, 1, 1}, + {&__pyx_n_s__split, __pyx_k__split, sizeof(__pyx_k__split), 0, 0, 1, 1}, + {&__pyx_n_s__state, __pyx_k__state, sizeof(__pyx_k__state), 0, 0, 1, 1}, + {&__pyx_n_s__suite, __pyx_k__suite, sizeof(__pyx_k__suite), 0, 0, 1, 1}, + {&__pyx_n_s__suite_instance, __pyx_k__suite_instance, sizeof(__pyx_k__suite_instance), 0, 0, 1, 1}, + {&__pyx_n_s__suite_name, __pyx_k__suite_name, sizeof(__pyx_k__suite_name), 0, 0, 1, 1}, + {&__pyx_n_s__suite_options, __pyx_k__suite_options, sizeof(__pyx_k__suite_options), 0, 0, 1, 1}, + {&__pyx_n_s__sys, __pyx_k__sys, sizeof(__pyx_k__sys), 0, 0, 1, 1}, + {&__pyx_n_s__throw, __pyx_k__throw, sizeof(__pyx_k__throw), 0, 0, 1, 1}, + {&__pyx_n_s__traceback, __pyx_k__traceback, sizeof(__pyx_k__traceback), 0, 0, 1, 1}, + {&__pyx_n_s__upper_bounds, __pyx_k__upper_bounds, sizeof(__pyx_k__upper_bounds), 0, 0, 1, 1}, + {&__pyx_n_s__verbose, __pyx_k__verbose, sizeof(__pyx_k__verbose), 0, 0, 1, 1}, + {&__pyx_n_u__warning, __pyx_k__warning, sizeof(__pyx_k__warning), 0, 1, 0, 1}, + {&__pyx_n_s__x, __pyx_k__x, sizeof(__pyx_k__x), 0, 0, 1, 1}, + {&__pyx_n_s__y, __pyx_k__y, sizeof(__pyx_k__y), 0, 0, 1, 1}, + {&__pyx_n_s__zeros, __pyx_k__zeros, sizeof(__pyx_k__zeros), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 70, __pyx_L1_error) - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 263, __pyx_L1_error) - __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 380, __pyx_L1_error) - __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 423, __pyx_L1_error) - __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 424, __pyx_L1_error) - __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 426, __pyx_L1_error) - __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(0, 499, __pyx_L1_error) - __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 499, __pyx_L1_error) - __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s_StopIteration); if (!__pyx_builtin_StopIteration) __PYX_ERR(0, 519, __pyx_L1_error) - __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 645, __pyx_L1_error) - __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 667, __pyx_L1_error) + __pyx_builtin_property = __Pyx_GetBuiltinName(__pyx_n_s__property); if (!__pyx_builtin_property) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s__NotImplementedError); if (!__pyx_builtin_NotImplementedError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s__enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s__all); if (!__pyx_builtin_all) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s__print); if (!__pyx_builtin_print) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_sorted = __Pyx_GetBuiltinName(__pyx_n_s__sorted); if (!__pyx_builtin_sorted) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s__min); if (!__pyx_builtin_min) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s__max); if (!__pyx_builtin_max) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s__StopIteration); if (!__pyx_builtin_StopIteration) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;} return 0; __pyx_L1_error:; return -1; @@ -15159,9 +13533,9 @@ static int __Pyx_InitCachedConstants(void) { * else: * raise TypeError("expect a string, got %s" % str(type(s))) */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_u_ascii); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); + __pyx_k_tuple_1 = PyTuple_Pack(1, ((PyObject *)__pyx_n_u__ascii)); if (unlikely(!__pyx_k_tuple_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_1); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_1)); /* "cython/interface.pyx":232 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) @@ -15170,9 +13544,9 @@ static int __Pyx_InitCachedConstants(void) { * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) */ - __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_u_warning); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__3); - __Pyx_GIVEREF(__pyx_tuple__3); + __pyx_k_tuple_7 = PyTuple_Pack(1, ((PyObject *)__pyx_n_u__warning)); if (unlikely(!__pyx_k_tuple_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_7); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_7)); /* "cython/interface.pyx":263 * global _current_observer @@ -15181,9 +13555,9 @@ static int __Pyx_InitCachedConstants(void) { * if self.current_problem_: * self.current_problem_.free() */ - __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 263, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__4); - __Pyx_GIVEREF(__pyx_tuple__4); + __pyx_k_tuple_9 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_8)); if (unlikely(!__pyx_k_tuple_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_9); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_9)); /* "cython/interface.pyx":313 * """ @@ -15192,9 +13566,9 @@ static int __Pyx_InitCachedConstants(void) { * index = id * try: */ - __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__5); - __Pyx_GIVEREF(__pyx_tuple__5); + __pyx_k_tuple_10 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_8)); if (unlikely(!__pyx_k_tuple_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_10); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_10)); /* "cython/interface.pyx":354 * @@ -15203,9 +13577,9 @@ static int __Pyx_InitCachedConstants(void) { * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, */ - __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 354, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__6); - __Pyx_GIVEREF(__pyx_tuple__6); + __pyx_k_tuple_12 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_8)); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_12); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12)); /* "cython/interface.pyx":380 * def find_problem_ids(self, *args, **kwargs): @@ -15214,9 +13588,9 @@ static int __Pyx_InitCachedConstants(void) { * "`find_problem_ids()` has been renamed to `ids()`") * */ - __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_find_problem_ids_has_been_renam); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 380, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__7); - __Pyx_GIVEREF(__pyx_tuple__7); + __pyx_k_tuple_15 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_14)); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_15); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15)); /* "cython/interface.pyx":564 * def __cinit__(self, name, options): @@ -15225,9 +13599,9 @@ static int __Pyx_InitCachedConstants(void) { * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') */ - __pyx_tuple__10 = PyTuple_Pack(2, __pyx_kp_u__8, __pyx_kp_u__9); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 564, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__10); - __Pyx_GIVEREF(__pyx_tuple__10); + __pyx_k_tuple_24 = PyTuple_Pack(2, ((PyObject *)__pyx_kp_u_22), ((PyObject *)__pyx_kp_u_23)); if (unlikely(!__pyx_k_tuple_24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_24); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_24)); /* "cython/interface.pyx":565 * if isinstance(options, dict): @@ -15236,9 +13610,9 @@ static int __Pyx_InitCachedConstants(void) { * s = s.replace(c, '') * options = s */ - __pyx_tuple__15 = PyTuple_Pack(6, __pyx_kp_u_u, __pyx_kp_u_u_2, __pyx_kp_u__11, __pyx_kp_u__12, __pyx_kp_u__13, __pyx_kp_u__14); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 565, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__15); - __Pyx_GIVEREF(__pyx_tuple__15); + __pyx_k_tuple_31 = PyTuple_Pack(6, ((PyObject *)__pyx_kp_u_25), ((PyObject *)__pyx_kp_u_26), ((PyObject *)__pyx_kp_u_27), ((PyObject *)__pyx_kp_u_28), ((PyObject *)__pyx_kp_u_29), ((PyObject *)__pyx_kp_u_30)); if (unlikely(!__pyx_k_tuple_31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_31); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_31)); /* "cython/interface.pyx":645 * cdef np.npy_intp shape[1] @@ -15247,9 +13621,9 @@ static int __Pyx_InitCachedConstants(void) { * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") */ - __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_u_Problem_already_initialized); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 645, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__16); - __Pyx_GIVEREF(__pyx_tuple__16); + __pyx_k_tuple_35 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_34)); if (unlikely(!__pyx_k_tuple_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_35); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_35)); /* "cython/interface.pyx":647 * raise RuntimeError("Problem already initialized") @@ -15258,9 +13632,9 @@ static int __Pyx_InitCachedConstants(void) { * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) */ - __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_u_in_Problem__initialize_problem_p); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 647, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__17); - __Pyx_GIVEREF(__pyx_tuple__17); + __pyx_k_tuple_37 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_36)); if (unlikely(!__pyx_k_tuple_37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_37); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_37)); /* "cython/interface.pyx":679 * By convention, constraints with values >= 0 are satisfied. @@ -15269,9 +13643,9 @@ static int __Pyx_InitCachedConstants(void) { * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_has_never_been_tested_incomment); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 679, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__18); - __Pyx_GIVEREF(__pyx_tuple__18); + __pyx_k_tuple_39 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_38)); if (unlikely(!__pyx_k_tuple_39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_39); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_39)); /* "cython/interface.pyx":700 * for the assessment of the algorithm. @@ -15280,9 +13654,9 @@ static int __Pyx_InitCachedConstants(void) { * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_u_has_never_been_tested_incomment); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 700, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__19); - __Pyx_GIVEREF(__pyx_tuple__19); + __pyx_k_tuple_40 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_38)); if (unlikely(!__pyx_k_tuple_40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_40); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_40)); /* "cython/interface.pyx":899 * if self.problem is not NULL: @@ -15291,75 +13665,75 @@ static int __Pyx_InitCachedConstants(void) { * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_slice__20 = PySlice_New(__pyx_int_1, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__20)) __PYX_ERR(0, 899, __pyx_L1_error) - __Pyx_GOTREF(__pyx_slice__20); - __Pyx_GIVEREF(__pyx_slice__20); + __pyx_k_slice_55 = PySlice_New(__pyx_int_1, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_k_slice_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_slice_55); + __Pyx_GIVEREF(__pyx_k_slice_55); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "numpy.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) */ - __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 218, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__21); - __Pyx_GIVEREF(__pyx_tuple__21); + __pyx_k_tuple_58 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_57)); if (unlikely(!__pyx_k_tuple_58)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_58); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_58)); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "numpy.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< * * info.buf = PyArray_DATA(self) */ - __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 222, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__22); - __Pyx_GIVEREF(__pyx_tuple__22); + __pyx_k_tuple_60 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_59)); if (unlikely(!__pyx_k_tuple_60)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_60); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_60)); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "numpy.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" */ - __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 259, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__23); - __Pyx_GIVEREF(__pyx_tuple__23); + __pyx_k_tuple_62 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_61)); if (unlikely(!__pyx_k_tuple_62)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_62); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_62)); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "numpy.pxd":799 * - * if (end - f) - (new_offset - offset[0]) < 15: + * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< * * if ((child.byteorder == c'>' and little_endian) or */ - __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 799, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__24); - __Pyx_GIVEREF(__pyx_tuple__24); + __pyx_k_tuple_65 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_64)); if (unlikely(!__pyx_k_tuple_65)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_65); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_65)); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "numpy.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * # One could encode it in the format string and have Cython * # complain instead, BUT: < and > in format strings also imply */ - __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 803, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__25); - __Pyx_GIVEREF(__pyx_tuple__25); + __pyx_k_tuple_66 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_61)); if (unlikely(!__pyx_k_tuple_66)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_66); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_66)); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "numpy.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< * * # Until ticket #99 is fixed, use integers to avoid warnings */ - __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 823, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__26); - __Pyx_GIVEREF(__pyx_tuple__26); + __pyx_k_tuple_68 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_67)); if (unlikely(!__pyx_k_tuple_68)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_68); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_68)); /* "cython/interface.pyx":914 * pass @@ -15368,10 +13742,10 @@ static int __Pyx_InitCachedConstants(void) { * """`log_level(level=None)` return current log level and * set new log level if `level is not None and level`. */ - __pyx_tuple__27 = PyTuple_Pack(2, __pyx_n_s_level, __pyx_n_s_level_2); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 914, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__27); - __Pyx_GIVEREF(__pyx_tuple__27); - __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_hansen_git_coco_code_expe, __pyx_n_s_log_level, 914, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 914, __pyx_L1_error) + __pyx_k_tuple_76 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__level), ((PyObject *)__pyx_n_s___level)); if (unlikely(!__pyx_k_tuple_76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_k_tuple_76); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_76)); + __pyx_k_codeobj_77 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_76, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_78, __pyx_n_s__log_level, 914, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_77)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -15380,11 +13754,12 @@ static int __Pyx_InitCachedConstants(void) { } static int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_neg_2 = PyInt_FromLong(-2); if (unlikely(!__pyx_int_neg_2)) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_neg_2 = PyInt_FromLong(-2); if (unlikely(!__pyx_int_neg_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; return 0; __pyx_L1_error:; return -1; @@ -15400,6 +13775,9 @@ PyMODINIT_FUNC PyInit_interface(void) { PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); @@ -15411,24 +13789,17 @@ PyMODINIT_FUNC PyInit_interface(void) } #endif __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_interface(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ @@ -15439,49 +13810,48 @@ PyMODINIT_FUNC PyInit_interface(void) #endif /*--- Module creation code ---*/ #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("interface", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + __pyx_m = Py_InitModule4(__Pyx_NAMESTR("interface"), __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!PyDict_GetItemString(modules, "cocoex.interface")) { + if (unlikely(PyDict_SetItemString(modules, "cocoex.interface", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + } + } + #endif + __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #if CYTHON_COMPILING_IN_PYPY Py_INCREF(__pyx_b); #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif if (__pyx_module_is_main_cocoex__interface) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "cocoex.interface")) { - if (unlikely(PyDict_SetItemString(modules, "cocoex.interface", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } + if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; } - #endif /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /*--- Global init code ---*/ /*--- Variable export code ---*/ /*--- Function export code ---*/ /*--- Type init code ---*/ __pyx_vtabptr_6cocoex_9interface_Suite = &__pyx_vtable_6cocoex_9interface_Suite; __pyx_vtable_6cocoex_9interface_Suite._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Suite *))__pyx_f_6cocoex_9interface_5Suite__initialize; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 74, __pyx_L1_error) - __pyx_type_6cocoex_9interface_Suite.tp_print = 0; + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Suite) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #if CYTHON_COMPILING_IN_CPYTHON { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 74, __pyx_L1_error) + PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__getitem__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base; __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__.doc = __pyx_doc_6cocoex_9interface_5Suite_10__getitem__; @@ -15491,40 +13861,37 @@ PyMODINIT_FUNC PyInit_interface(void) #endif #if CYTHON_COMPILING_IN_CPYTHON { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__iter__"); if (unlikely(!wrapper)) __PYX_ERR(0, 74, __pyx_L1_error) + PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__iter__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { - __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base; - __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__.doc = __pyx_doc_6cocoex_9interface_5Suite_26__iter__; - ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__; + __pyx_wrapperbase_6cocoex_9interface_5Suite_46__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_6cocoex_9interface_5Suite_46__iter__.doc = __pyx_doc_6cocoex_9interface_5Suite_46__iter__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_5Suite_46__iter__; } } #endif - if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Suite.tp_dict, __pyx_vtabptr_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 74, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Suite", (PyObject *)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 74, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Suite.tp_dict, __pyx_vtabptr_6cocoex_9interface_Suite) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_SetAttrString(__pyx_m, "Suite", (PyObject *)&__pyx_type_6cocoex_9interface_Suite) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_6cocoex_9interface_Suite = &__pyx_type_6cocoex_9interface_Suite; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 528, __pyx_L1_error) - __pyx_type_6cocoex_9interface_Observer.tp_print = 0; - if (PyObject_SetAttrString(__pyx_m, "Observer", (PyObject *)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 528, __pyx_L1_error) + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Observer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_SetAttrString(__pyx_m, "Observer", (PyObject *)&__pyx_type_6cocoex_9interface_Observer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_6cocoex_9interface_Observer = &__pyx_type_6cocoex_9interface_Observer; __pyx_vtabptr_6cocoex_9interface_Problem = &__pyx_vtable_6cocoex_9interface_Problem; __pyx_vtable_6cocoex_9interface_Problem._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Problem *, coco_problem_t *, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args))__pyx_f_6cocoex_9interface_7Problem__initialize; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 616, __pyx_L1_error) - __pyx_type_6cocoex_9interface_Problem.tp_print = 0; + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Problem) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #if CYTHON_COMPILING_IN_CPYTHON { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Problem, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 616, __pyx_L1_error) + PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Problem, "__call__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { - __pyx_wrapperbase_6cocoex_9interface_7Problem_18__call__ = *((PyWrapperDescrObject *)wrapper)->d_base; - __pyx_wrapperbase_6cocoex_9interface_7Problem_18__call__.doc = __pyx_doc_6cocoex_9interface_7Problem_18__call__; - ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_7Problem_18__call__; + __pyx_wrapperbase_6cocoex_9interface_7Problem_40__call__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_6cocoex_9interface_7Problem_40__call__.doc = __pyx_doc_6cocoex_9interface_7Problem_40__call__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_7Problem_40__call__; } } #endif - if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Problem.tp_dict, __pyx_vtabptr_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 616, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Problem", (PyObject *)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 616, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Problem.tp_dict, __pyx_vtabptr_6cocoex_9interface_Problem) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_SetAttrString(__pyx_m, "Problem", (PyObject *)&__pyx_type_6cocoex_9interface_Problem) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_6cocoex_9interface_Problem = &__pyx_type_6cocoex_9interface_Problem; - if (PyType_Ready(&__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__) < 0) __PYX_ERR(0, 503, __pyx_L1_error) - __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_print = 0; + if (PyType_Ready(&__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_6cocoex_9interface___pyx_scope_struct____iter__ = &__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__; /*--- Type import code ---*/ __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", @@ -15533,18 +13900,15 @@ PyMODINIT_FUNC PyInit_interface(void) #else sizeof(PyHeapTypeObject), #endif - 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(2, 9, __pyx_L1_error) - __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(1, 155, __pyx_L1_error) - __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(1, 168, __pyx_L1_error) - __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(1, 172, __pyx_L1_error) - __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(1, 181, __pyx_L1_error) - __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(1, 861, __pyx_L1_error) + 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /*--- Variable import code ---*/ /*--- Function import code ---*/ /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif /* "cython/interface.pyx":4 * #cython: c_string_type=str, c_string_encoding=ascii @@ -15553,9 +13917,9 @@ PyMODINIT_FUNC PyInit_interface(void) * import numpy as np * cimport numpy as np */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) + __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__sys), 0, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s__sys, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "cython/interface.pyx":5 @@ -15565,9 +13929,9 @@ PyMODINIT_FUNC PyInit_interface(void) * cimport numpy as np * */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) + __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s__np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "cython/interface.pyx":8 @@ -15575,77 +13939,80 @@ PyMODINIT_FUNC PyInit_interface(void) * * from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException # <<<<<<<<<<<<<< * - * known_suite_names = [b"bbob", b"bbob-biobj"] + * known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-largescale"] */ - __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) + __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_InvalidProblemException); - __Pyx_GIVEREF(__pyx_n_s_InvalidProblemException); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_InvalidProblemException); - __Pyx_INCREF(__pyx_n_s_NoSuchProblemException); - __Pyx_GIVEREF(__pyx_n_s_NoSuchProblemException); - PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_NoSuchProblemException); - __Pyx_INCREF(__pyx_n_s_NoSuchSuiteException); - __Pyx_GIVEREF(__pyx_n_s_NoSuchSuiteException); - PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_NoSuchSuiteException); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_cocoex_exceptions, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_INCREF(((PyObject *)__pyx_n_s_44)); + PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s_44)); + __Pyx_GIVEREF(((PyObject *)__pyx_n_s_44)); + __Pyx_INCREF(((PyObject *)__pyx_n_s_11)); + PyList_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_n_s_11)); + __Pyx_GIVEREF(((PyObject *)__pyx_n_s_11)); + __Pyx_INCREF(((PyObject *)__pyx_n_s_4)); + PyList_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_n_s_4)); + __Pyx_GIVEREF(((PyObject *)__pyx_n_s_4)); + __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s_70), ((PyObject *)__pyx_t_1), 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_44); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_InvalidProblemException, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_44, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_11); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_NoSuchProblemException, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_11, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_NoSuchSuiteException, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_4, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":10 * from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException * - * known_suite_names = [b"bbob", b"bbob-biobj"] # <<<<<<<<<<<<<< + * known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-largescale"] # <<<<<<<<<<<<<< * _known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-constrained", b"bbob-largescale"] * */ - __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_b_bbob); - __Pyx_GIVEREF(__pyx_n_b_bbob); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_b_bbob); - __Pyx_INCREF(__pyx_kp_b_bbob_biobj); - __Pyx_GIVEREF(__pyx_kp_b_bbob_biobj); - PyList_SET_ITEM(__pyx_t_2, 1, __pyx_kp_b_bbob_biobj); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_INCREF(((PyObject *)__pyx_n_b__bbob)); + PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_b__bbob)); + __Pyx_GIVEREF(((PyObject *)__pyx_n_b__bbob)); + __Pyx_INCREF(((PyObject *)__pyx_kp_b_71)); + PyList_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_kp_b_71)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_b_71)); + __Pyx_INCREF(((PyObject *)__pyx_kp_b_72)); + PyList_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_kp_b_72)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_b_72)); + if (PyDict_SetItem(__pyx_d, __pyx_n_s__known_suite_names, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; /* "cython/interface.pyx":11 * - * known_suite_names = [b"bbob", b"bbob-biobj"] + * known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-largescale"] * _known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-constrained", b"bbob-largescale"] # <<<<<<<<<<<<<< * * # _test_assignment = "seems to prevent an 'export' error (i.e. induce export) to make this module known under Linux and Windows (possibly because of the leading underscore of _interface)" */ - __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) + __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_b_bbob); - __Pyx_GIVEREF(__pyx_n_b_bbob); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_b_bbob); - __Pyx_INCREF(__pyx_kp_b_bbob_biobj); - __Pyx_GIVEREF(__pyx_kp_b_bbob_biobj); - PyList_SET_ITEM(__pyx_t_2, 1, __pyx_kp_b_bbob_biobj); - __Pyx_INCREF(__pyx_kp_b_bbob_constrained); - __Pyx_GIVEREF(__pyx_kp_b_bbob_constrained); - PyList_SET_ITEM(__pyx_t_2, 2, __pyx_kp_b_bbob_constrained); - __Pyx_INCREF(__pyx_kp_b_bbob_largescale); - __Pyx_GIVEREF(__pyx_kp_b_bbob_largescale); - PyList_SET_ITEM(__pyx_t_2, 3, __pyx_kp_b_bbob_largescale); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names_2, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_INCREF(((PyObject *)__pyx_n_b__bbob)); + PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_b__bbob)); + __Pyx_GIVEREF(((PyObject *)__pyx_n_b__bbob)); + __Pyx_INCREF(((PyObject *)__pyx_kp_b_71)); + PyList_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_kp_b_71)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_b_71)); + __Pyx_INCREF(((PyObject *)__pyx_kp_b_73)); + PyList_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_kp_b_73)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_b_73)); + __Pyx_INCREF(((PyObject *)__pyx_kp_b_72)); + PyList_SET_ITEM(__pyx_t_2, 3, ((PyObject *)__pyx_kp_b_72)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_b_72)); + if (PyDict_SetItem(__pyx_d, __pyx_n_s___known_suite_names, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; /* "cython/interface.pyx":17 * @@ -15656,119 +14023,758 @@ PyMODINIT_FUNC PyInit_interface(void) */ import_array(); - /* "cython/interface.pyx":914 - * pass + /* "cython/interface.pyx":384 * - * def log_level(level=None): # <<<<<<<<<<<<<< - * """`log_level(level=None)` return current log level and - * set new log level if `level is not None and level`. + * + * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< + * """`ids(*id_snippets, get_problem=False, verbose=False)` + * return all problem IDs that contain all of the `id_snippets`. */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6cocoex_9interface_1log_level, NULL, __pyx_n_s_cocoex_interface); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 914, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_log_level, __pyx_t_2) < 0) __PYX_ERR(0, 914, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_k_16 = __pyx_t_2; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_k_17 = __pyx_t_2; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; - /* "cython/interface.pyx":1 - * # -*- mode: cython -*- # <<<<<<<<<<<<<< - * #cython: c_string_type=str, c_string_encoding=ascii - * from __future__ import absolute_import, division, print_function, unicode_literals + /* "cython/interface.pyx":433 + * + * @property + * def current_problem(self): # <<<<<<<<<<<<<< + * """current "open/active" problem to be benchmarked""" + * return self.current_problem_ */ - __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__current_problem); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_line_281, __pyx_kp_u_get_problem_self_id_observer_No) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_by_function_di, __pyx_kp_u_returns_a_Problem_instance_by_de) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_ids_line_384, __pyx_kp_u_ids_id_snippets_get_problem_Fal) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_current_index___get___line, __pyx_kp_u_index_in_the_enumerator_of_all_p) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__current_problem, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":976 - * arr.base = baseptr + /* "cython/interface.pyx":437 + * return self.current_problem_ + * @property + * def current_index(self): # <<<<<<<<<<<<<< + * """index in the enumerator of all problems in this suite. * - * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< - * if arr.base is NULL: - * return None */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__current_index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__current_index, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init cocoex.interface", __pyx_clineno, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init cocoex.interface"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if PY_MAJOR_VERSION < 3 - return; - #else - return __pyx_m; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif + /* "cython/interface.pyx":455 + * return self._current_index + * @property + * def problem_names(self): # <<<<<<<<<<<<<< + * """list of problem names in this `Suite`, see also `ids`""" + * return list(self._names) + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__problem_names); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__problem_names, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} + /* "cython/interface.pyx":459 + * return list(self._names) + * @property + * def dimensions(self): # <<<<<<<<<<<<<< + * """list of problem dimensions occuring at least once in this `Suite`""" + * return sorted(set(self._dimensions)) + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__dimensions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__dimensions, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif + /* "cython/interface.pyx":463 + * return sorted(set(self._dimensions)) + * @property + * def number_of_objectives(self): # <<<<<<<<<<<<<< + * """list of number of objectives occuring in this `Suite`""" + * return sorted(set(self._number_of_objectives)) + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s_41); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s_41, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); -/* PyErrFetchRestore */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + /* "cython/interface.pyx":467 + * return sorted(set(self._number_of_objectives)) + * @property + * def indices(self): # <<<<<<<<<<<<<< + * """list of all problem indices, deprecated. + * + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__indices); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__indices, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); + + /* "cython/interface.pyx":475 + * return list(self._indices) + * @property + * def name(self): # <<<<<<<<<<<<<< + * """name of this suite as used to instantiate the suite via `Suite(name, ...)`""" + * return self._name + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__name, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); + + /* "cython/interface.pyx":479 + * return self._name + * @property + * def instance(self): # <<<<<<<<<<<<<< + * """instance of this suite as used to instantiate the suite via + * `Suite(name, instance, ...)`""" + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__instance); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__instance, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); + + /* "cython/interface.pyx":484 + * return self._instance + * @property + * def options(self): # <<<<<<<<<<<<<< + * """options for this suite as used to instantiate the suite via + * `Suite(name, instance, options)`""" + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__options); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__options, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); + + /* "cython/interface.pyx":490 + * + * @property + * def info(self): # <<<<<<<<<<<<<< + * return str(self) + * def __repr__(self): + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__info, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); + + /* "cython/interface.pyx":587 + * + * @property + * def name(self): # <<<<<<<<<<<<<< + * """name of the observer as used with `Observer(name, ...)` to instantiate + * `self` before. + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Observer, __pyx_n_s__name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Observer->tp_dict, __pyx_n_s__name, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Observer); + + /* "cython/interface.pyx":593 + * return self._name + * @property + * def options(self): # <<<<<<<<<<<<<< + * return self._options + * @property + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Observer, __pyx_n_s__options); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Observer->tp_dict, __pyx_n_s__options, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Observer); + + /* "cython/interface.pyx":596 + * return self._options + * @property + * def state(self): # <<<<<<<<<<<<<< + * return self._state + * + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Observer, __pyx_n_s__state); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Observer->tp_dict, __pyx_n_s__state, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Observer); + + /* "cython/interface.pyx":607 + * coco_observer_free(self._observer) + * + * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< + * """`Problem` class instance initialization wrapper passing + * a `problem_t*` C-variable to `__init__`. + */ + __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_k_32 = __pyx_t_2; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "cython/interface.pyx":642 + * cdef np.npy_intp shape[1] + * self.initialized = False # all done in _initialize + * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< + * cdef np.npy_intp shape[1] + * if self.initialized: + */ + __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_k_33 = __pyx_t_2; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "cython/interface.pyx":765 + * + * @property + * def initial_solution(self): # <<<<<<<<<<<<<< + * """return feasible initial solution""" + * coco_problem_get_initial_solution(self.problem, + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__initial_solution); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__initial_solution, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":771 + * return np.array(self.x_initial, copy=True) + * @property + * def list_of_observers(self): # <<<<<<<<<<<<<< + * return self._list_of_observers + * property number_of_variables: # this is cython syntax, not known in Python + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__list_of_observers); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__list_of_observers, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":779 + * return self._number_of_variables + * @property + * def dimension(self): # <<<<<<<<<<<<<< + * """alias for `number_of_variables` of the input space""" + * return self._number_of_variables + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__dimension); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__dimension, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":783 + * return self._number_of_variables + * @property + * def number_of_objectives(self): # <<<<<<<<<<<<<< + * "number of objectives, if equal to 1, call returns a scalar" + * return self._number_of_objectives + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s_41); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s_41, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":787 + * return self._number_of_objectives + * @property + * def number_of_constraints(self): # <<<<<<<<<<<<<< + * "number of constraints" + * return self._number_of_constraints + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s_74); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s_74, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":791 + * return self._number_of_constraints + * @property + * def lower_bounds(self): # <<<<<<<<<<<<<< + * """depending on the test bed, these are not necessarily strict bounds + * """ + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__lower_bounds); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__lower_bounds, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":796 + * return self._lower_bounds + * @property + * def upper_bounds(self): # <<<<<<<<<<<<<< + * """depending on the test bed, these are not necessarily strict bounds + * """ + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__upper_bounds); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__upper_bounds, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":801 + * return self._upper_bounds + * @property + * def evaluations(self): # <<<<<<<<<<<<<< + * return coco_problem_get_evaluations(self.problem) + * @property + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__evaluations); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__evaluations, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":804 + * return coco_problem_get_evaluations(self.problem) + * @property + * def final_target_hit(self): # <<<<<<<<<<<<<< + * """return 1 if the final target is known and has been hit, 0 otherwise + * """ + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__final_target_hit); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__final_target_hit, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":810 + * return coco_problem_final_target_hit(self.problem) + * @property + * def final_target_fvalue1(self): # <<<<<<<<<<<<<< + * assert(self.problem) + * return coco_problem_get_final_target_fvalue1(self.problem) + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s_46); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s_46, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":814 + * return coco_problem_get_final_target_fvalue1(self.problem) + * @property + * def best_observed_fvalue1(self): # <<<<<<<<<<<<<< + * assert(self.problem) + * return coco_problem_get_best_observed_fvalue1(self.problem) + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s_75); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s_75, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":818 + * return coco_problem_get_best_observed_fvalue1(self.problem) + * + * def free(self, force=False): # <<<<<<<<<<<<<< + * """Free the given test problem. + * + */ + __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_k_47 = __pyx_t_2; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "cython/interface.pyx":860 + * + * @property + * def id(self): # <<<<<<<<<<<<<< + * "id as string without spaces or weird characters" + * if self.problem is not NULL: + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__id); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__id, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":866 + * + * @property + * def name(self): # <<<<<<<<<<<<<< + * if self.problem is not NULL: + * return coco_problem_get_name(self.problem) + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__name, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":871 + * + * @property + * def index(self): # <<<<<<<<<<<<<< + * """problem index in the benchmark `Suite` of origin""" + * return self._problem_index + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__index, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":876 + * + * @property + * def suite(self): # <<<<<<<<<<<<<< + * """benchmark suite this problem is from""" + * return self._suite_name + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__suite); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__suite, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":881 + * + * @property + * def info(self): # <<<<<<<<<<<<<< + * return str(self) + * + */ + __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__info, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); + + /* "cython/interface.pyx":914 + * pass + * + * def log_level(level=None): # <<<<<<<<<<<<<< + * """`log_level(level=None)` return current log level and + * set new log level if `level is not None and level`. + */ + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6cocoex_9interface_1log_level, NULL, __pyx_n_s_79); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s__log_level, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "cython/interface.pyx":1 + * # -*- mode: cython -*- # <<<<<<<<<<<<<< + * #cython: c_string_type=str, c_string_encoding=ascii + * from __future__ import absolute_import, division, print_function, unicode_literals + */ + __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_2)); + if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_80), ((PyObject *)__pyx_kp_u_81)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_82), ((PyObject *)__pyx_kp_u_83)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_84), ((PyObject *)__pyx_kp_u_85)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_86), ((PyObject *)__pyx_kp_u_87)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; + + /* "numpy.pxd":975 + * arr.base = baseptr + * + * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< + * if arr.base is NULL: + * return None + */ + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + if (__pyx_m) { + __Pyx_AddTraceback("init cocoex.interface", __pyx_clineno, __pyx_lineno, __pyx_filename); + Py_DECREF(__pyx_m); __pyx_m = 0; + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init cocoex.interface"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if PY_MAJOR_VERSION < 3 + return; + #else + return __pyx_m; + #endif +} + +/* Runtime support code */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule((char *)modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif /* CYTHON_REFNANNY */ + +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); + if (unlikely(!result)) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { +#if CYTHON_COMPILING_IN_CPYTHON PyObject *tmp_type, *tmp_value, *tmp_tb; + PyThreadState *tstate = PyThreadState_GET(); tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; @@ -15778,22 +14784,27 @@ static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObjec Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); +#else + PyErr_Restore(type, value, tb); +#endif } -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) { +#if CYTHON_COMPILING_IN_CPYTHON + PyThreadState *tstate = PyThreadState_GET(); *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; -} +#else + PyErr_Fetch(type, value, tb); #endif +} -/* RaiseException */ #if PY_MAJOR_VERSION < 3 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare Py_XINCREF(type); if (!value || value == Py_None) value = NULL; @@ -15809,7 +14820,11 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, goto raise_error; } } + #if PY_VERSION_HEX < 0x02050000 + if (PyClass_Check(type)) { + #else if (PyType_Check(type)) { + #endif #if CYTHON_COMPILING_IN_PYPY if (!value) { Py_INCREF(Py_None); @@ -15824,6 +14839,17 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, goto raise_error; } value = type; + #if PY_VERSION_HEX < 0x02050000 + if (PyInstance_Check(type)) { + type = (PyObject*) ((PyInstanceObject*)type)->in_class; + Py_INCREF(type); + } else { + type = 0; + PyErr_SetString(PyExc_TypeError, + "raise: exception must be an old-style class or instance"); + goto raise_error; + } + #else type = (PyObject*) Py_TYPE(type); Py_INCREF(type); if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { @@ -15831,8 +14857,8 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, "raise: exception class must be a subclass of BaseException"); goto raise_error; } + #endif } - __Pyx_PyThreadState_assign __Pyx_ErrRestore(type, value, tb); return; raise_error: @@ -15841,7 +14867,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, Py_XDECREF(tb); return; } -#else +#else /* Python 3+ */ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { PyObject* owned_instance = NULL; if (tb == Py_None) { @@ -15862,43 +14888,27 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject value = type; type = (PyObject*) Py_TYPE(value); } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyEval_CallObject(type, args); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; } } else { PyErr_SetString(PyExc_TypeError, @@ -15930,13 +14940,6 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject } PyErr_SetObject(type, value); if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else PyThreadState *tstate = PyThreadState_GET(); PyObject* tmp_tb = tstate->curexc_traceback; if (tb != tmp_tb) { @@ -15944,7 +14947,6 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject tstate->curexc_traceback = tb; Py_XDECREF(tmp_tb); } -#endif } bad: Py_XDECREF(owned_instance); @@ -15952,8 +14954,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject } #endif -/* RaiseArgTupleInvalid */ - static void __Pyx_RaiseArgtupleInvalid( +static void __Pyx_RaiseArgtupleInvalid( const char* func_name, int exact, Py_ssize_t num_min, @@ -15973,13 +14974,12 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject more_or_less = "exactly"; } PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", + "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)", func_name, more_or_less, num_expected, (num_expected == 1) ? "" : "s", num_found); } -/* RaiseDoubleKeywords */ - static void __Pyx_RaiseDoubleKeywordsError( +static void __Pyx_RaiseDoubleKeywordsError( const char* func_name, PyObject* kw_name) { @@ -15992,8 +14992,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject #endif } -/* ParseKeywords */ - static int __Pyx_ParseOptionalKeywords( +static int __Pyx_ParseOptionalKeywords( PyObject *kwds, PyObject **argnames[], PyObject *kwds2, @@ -16079,12 +15078,12 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject goto bad; invalid_keyword_type: PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); + "%s() keywords must be strings", function_name); goto bad; invalid_keyword: PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", + "%s() got an unexpected keyword argument '%s'", function_name, PyString_AsString(key)); #else "%s() got an unexpected keyword argument '%U'", @@ -16094,83 +15093,11 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject return -1; } -/* PyObjectCallMethO */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ - #if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyObjectCallNoArg */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* GetModuleGlobalName */ - static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { +static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { PyObject *result; #if CYTHON_COMPILING_IN_CPYTHON result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { + if (result) { Py_INCREF(result); } else { #else @@ -16183,39 +15110,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { return result; } -/* SaveResetException */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* GetException */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -#endif PyObject *local_type, *local_value, *local_tb; #if CYTHON_COMPILING_IN_CPYTHON PyObject *tmp_type, *tmp_value, *tmp_tb; + PyThreadState *tstate = PyThreadState_GET(); local_type = tstate->curexc_type; local_value = tstate->curexc_value; local_tb = tstate->curexc_traceback; @@ -16233,14 +15132,12 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) #endif goto bad; #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); + Py_INCREF(local_type); + Py_INCREF(local_value); + Py_INCREF(local_tb); *type = local_type; *value = local_value; *tb = local_tb; @@ -16251,6 +15148,8 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) tstate->exc_type = local_type; tstate->exc_value = local_value; tstate->exc_traceback = local_tb; + /* Make sure tstate is in a consistent state when we XDECREF + these objects (DECREF may run arbitrary code). */ Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); @@ -16268,158 +15167,24 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) return -1; } -/* PyObjectCallMethod1 */ - static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { - PyObject *method, *result = NULL; - method = __Pyx_PyObject_GetAttrStr(obj, method_name); - if (unlikely(!method)) goto bad; -#if CYTHON_COMPILING_IN_CPYTHON - if (likely(PyMethod_Check(method))) { - PyObject *self = PyMethod_GET_SELF(method); - if (likely(self)) { - PyObject *args; - PyObject *function = PyMethod_GET_FUNCTION(method); - args = PyTuple_New(2); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 1, arg); - Py_INCREF(function); - Py_DECREF(method); method = NULL; - result = __Pyx_PyObject_Call(function, args, NULL); - Py_DECREF(args); - Py_DECREF(function); - return result; - } - } -#endif - result = __Pyx_PyObject_CallOneArg(method, arg); -bad: - Py_XDECREF(method); - return result; -} - -/* append */ - static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { +static CYTHON_INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x) { if (likely(PyList_CheckExact(L))) { - if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; + if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return NULL; + Py_INCREF(Py_None); + return Py_None; /* this is just to have an accurate signature */ } else { - PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x); - if (unlikely(!retval)) - return -1; - Py_DECREF(retval); - } - return 0; -} - -/* PyIntBinop */ - #if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op1))) { - const long b = intval; - long x; - long a = PyInt_AS_LONG(op1); - x = (long)((unsigned long)a + b); - if (likely((x^a) >= 0 || (x^b) >= 0)) - return PyInt_FromLong(x); - return PyLong_Type.tp_as_number->nb_add(op1, op2); - } - #endif - #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3 - if (likely(PyLong_CheckExact(op1))) { - const long b = intval; - long a, x; - const PY_LONG_LONG llb = intval; - PY_LONG_LONG lla, llx; - const digit* digits = ((PyLongObject*)op1)->ob_digit; - const Py_ssize_t size = Py_SIZE(op1); - if (likely(__Pyx_sst_abs(size) <= 1)) { - a = likely(size) ? digits[0] : 0; - if (size == -1) a = -a; - } else { - switch (size) { - case -2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { - lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - } - case 2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { - lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - } - case -3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { - lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - } - case 3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { - lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - } - case -4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { - lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - } - case 4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { - lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - } - default: return PyLong_Type.tp_as_number->nb_add(op1, op2); - } - } - x = a + b; - return PyLong_FromLong(x); - long_long: - llx = lla + llb; - return PyLong_FromLongLong(llx); + return __Pyx_PyObject_CallMethod1(L, __pyx_n_s__append, x); } - #endif - if (PyFloat_CheckExact(op1)) { - const long b = intval; - double a = PyFloat_AS_DOUBLE(op1); - double result; - PyFPE_START_PROTECT("add", return NULL) - result = ((double)a) + (double)b; - PyFPE_END_PROTECT(result) - return PyFloat_FromDouble(result); - } - return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); } -#endif -/* KeywordStringCheck */ - static CYTHON_INLINE int __Pyx_CheckKeywordStrings( +static CYTHON_INLINE int __Pyx_CheckKeywordStrings( PyObject *kwdict, const char* function_name, int kw_allowed) { PyObject* key = 0; Py_ssize_t pos = 0; -#if CYTHON_COMPILING_IN_PYPY +#if CPYTHON_COMPILING_IN_PYPY if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) goto invalid_keyword; return 1; @@ -16436,13 +15201,13 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED return 1; invalid_keyword_type: PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); + "%s() keywords must be strings", function_name); return 0; #endif invalid_keyword: PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", + "%s() got an unexpected keyword argument '%s'", function_name, PyString_AsString(key)); #else "%s() got an unexpected keyword argument '%U'", @@ -16451,8 +15216,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED return 0; } -/* GetItemInt */ - static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; if (!j) return NULL; r = PyObject_GetItem(o, j); @@ -16460,8 +15224,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED return r; } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { + int wraparound, int boundscheck) { #if CYTHON_COMPILING_IN_CPYTHON if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { @@ -16475,8 +15238,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_ #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { + int wraparound, int boundscheck) { #if CYTHON_COMPILING_IN_CPYTHON if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { @@ -16489,9 +15251,8 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize return PySequence_GetItem(o, i); #endif } -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck) { #if CYTHON_COMPILING_IN_CPYTHON if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); @@ -16516,9 +15277,10 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, if (likely(l >= 0)) { i += l; } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + if (PyErr_ExceptionMatches(PyExc_OverflowError)) + PyErr_Clear(); + else return NULL; - PyErr_Clear(); } } return m->sq_item(o, i); @@ -16532,45 +15294,9 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); } -/* PyErrExceptionMatches */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { - PyObject *exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - return PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* SwapException */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = *type; - tstate->exc_value = *value; - tstate->exc_traceback = *tb; - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); - PyErr_SetExcInfo(*type, *value, *tb); - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#endif - -/* ExtTypeTest */ - static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); + PyErr_Format(PyExc_SystemError, "Missing type object"); return 0; } if (likely(PyObject_TypeCheck(obj, type))) @@ -16580,16 +15306,15 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, return 0; } -/* SetItemInt */ - static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { +static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { int r; if (!j) return -1; r = PyObject_SetItem(o, j, v); Py_DECREF(j); return r; } -static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, - CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { +static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, + int is_list, int wraparound, int boundscheck) { #if CYTHON_COMPILING_IN_CPYTHON if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); @@ -16608,9 +15333,10 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje if (likely(l >= 0)) { i += l; } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + if (PyErr_ExceptionMatches(PyExc_OverflowError)) + PyErr_Clear(); + else return -1; - PyErr_Clear(); } } return m->sq_ass_item(o, i, v); @@ -16628,8 +15354,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); } -/* BufferFormatCheck */ - static CYTHON_INLINE int __Pyx_IsLittleEndian(void) { +static CYTHON_INLINE int __Pyx_IsLittleEndian(void) { unsigned int n = 1; return *(unsigned char*)(&n) != 0; } @@ -16677,7 +15402,7 @@ static int __Pyx_BufFmt_ParseNumber(const char** ts) { } static int __Pyx_BufFmt_ExpectNumber(const char **ts) { int number = __Pyx_BufFmt_ParseNumber(ts); - if (number == -1) + if (number == -1) /* First char was not a digit */ PyErr_Format(PyExc_ValueError,\ "Does not understand character buffer dtype format string ('%c')", **ts); return number; @@ -16922,7 +15647,7 @@ static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) { ctx->fmt_offset += size; if (arraysize) ctx->fmt_offset += (arraysize - 1) * size; - --ctx->enc_count; + --ctx->enc_count; /* Consume from buffer string */ while (1) { if (field == &ctx->root) { ctx->head = NULL; @@ -16930,7 +15655,7 @@ static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) { __Pyx_BufFmt_RaiseExpected(ctx); return -1; } - break; + break; /* breaks both loops as ctx->enc_count == 0 */ } ctx->head->field = ++field; if (field->type == NULL) { @@ -16939,7 +15664,7 @@ static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) { continue; } else if (field->type->typegroup == 'S') { size_t parent_offset = ctx->head->parent_offset + field->offset; - if (field->type->fields->type == NULL) continue; + if (field->type->fields->type == NULL) continue; /* empty struct */ field = field->type->fields; ++ctx->head; ctx->head->field = field; @@ -16969,10 +15694,8 @@ __pyx_buffmt_parse_array(__Pyx_BufFmt_Context* ctx, const char** tsp) } if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; while (*ts && *ts != ')') { - switch (*ts) { - case ' ': case '\f': case '\r': case '\n': case '\t': case '\v': continue; - default: break; - } + if (isspace(*ts)) + continue; number = __Pyx_BufFmt_ExpectNumber(&ts); if (number == -1) return NULL; if (i < ndim && (size_t) number != ctx->head->field->type->arraysize[i]) @@ -17012,10 +15735,10 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha __Pyx_BufFmt_RaiseExpected(ctx); return NULL; } - return ts; + return ts; case ' ': - case '\r': - case '\n': + case 10: + case 13: ++ts; break; case '<': @@ -17040,7 +15763,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha case '^': ctx->new_packmode = *ts++; break; - case 'T': + case 'T': /* substruct */ { const char* ts_after_sub; size_t i, struct_count = ctx->new_count; @@ -17052,7 +15775,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha return NULL; } if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_type = 0; + ctx->enc_type = 0; /* Erase processed last struct element */ ctx->enc_count = 0; ctx->struct_alignment = 0; ++ts; @@ -17065,12 +15788,12 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha if (struct_alignment) ctx->struct_alignment = struct_alignment; } break; - case '}': + case '}': /* end of substruct; either repeat or move on */ { size_t alignment = ctx->struct_alignment; ++ts; if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_type = 0; + ctx->enc_type = 0; /* Erase processed last struct element */ if (alignment && ctx->fmt_offset % alignment) { ctx->fmt_offset += alignment - (ctx->fmt_offset % alignment); } @@ -17091,25 +15814,21 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha if (*ts != 'f' && *ts != 'd' && *ts != 'g') { __Pyx_BufFmt_RaiseUnexpectedChar('Z'); return NULL; - } + } /* fall through */ case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I': case 'l': case 'L': case 'q': case 'Q': case 'f': case 'd': case 'g': - case 'O': case 'p': + case 'O': case 's': case 'p': if (ctx->enc_type == *ts && got_Z == ctx->is_complex && ctx->enc_packmode == ctx->new_packmode) { ctx->enc_count += ctx->new_count; - ctx->new_count = 1; - got_Z = 0; - ++ts; - break; + } else { + if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; + ctx->enc_count = ctx->new_count; + ctx->enc_packmode = ctx->new_packmode; + ctx->enc_type = *ts; + ctx->is_complex = got_Z; } - case 's': - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_count = ctx->new_count; - ctx->enc_packmode = ctx->new_packmode; - ctx->enc_type = *ts; - ctx->is_complex = got_Z; ++ts; ctx->new_count = 1; got_Z = 0; @@ -17178,142 +15897,13 @@ static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { __Pyx_ReleaseBuffer(info); } -/* BufferFallbackError */ - static void __Pyx_RaiseBufferFallbackError(void) { - PyErr_SetString(PyExc_ValueError, +static void __Pyx_RaiseBufferFallbackError(void) { + PyErr_Format(PyExc_ValueError, "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); } -/* WriteUnraisableException */ - static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, - CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, - int full_traceback, CYTHON_UNUSED int nogil) { - PyObject *old_exc, *old_val, *old_tb; - PyObject *ctx; - __Pyx_PyThreadState_declare -#ifdef WITH_THREAD - PyGILState_STATE state; - if (nogil) - state = PyGILState_Ensure(); -#ifdef _MSC_VER - else state = (PyGILState_STATE)-1; -#endif -#endif - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); - if (full_traceback) { - Py_XINCREF(old_exc); - Py_XINCREF(old_val); - Py_XINCREF(old_tb); - __Pyx_ErrRestore(old_exc, old_val, old_tb); - PyErr_PrintEx(1); - } - #if PY_MAJOR_VERSION < 3 - ctx = PyString_FromString(name); - #else - ctx = PyUnicode_FromString(name); - #endif - __Pyx_ErrRestore(old_exc, old_val, old_tb); - if (!ctx) { - PyErr_WriteUnraisable(Py_None); - } else { - PyErr_WriteUnraisable(ctx); - Py_DECREF(ctx); - } -#ifdef WITH_THREAD - if (nogil) - PyGILState_Release(state); -#endif -} - -/* PyIntBinop */ - #if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { - if (op1 == op2) { - Py_RETURN_TRUE; - } - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op1))) { - const long b = intval; - long a = PyInt_AS_LONG(op1); - if (a == b) { - Py_RETURN_TRUE; - } else { - Py_RETURN_FALSE; - } - } - #endif - #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3 - if (likely(PyLong_CheckExact(op1))) { - const long b = intval; - long a; - const digit* digits = ((PyLongObject*)op1)->ob_digit; - const Py_ssize_t size = Py_SIZE(op1); - if (likely(__Pyx_sst_abs(size) <= 1)) { - a = likely(size) ? digits[0] : 0; - if (size == -1) a = -a; - } else { - switch (size) { - case -2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - case 2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - case -3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - case 3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - case -4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - case 4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15 - default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ); - #else - default: Py_RETURN_FALSE; - #endif - } - } - if (a == b) { - Py_RETURN_TRUE; - } else { - Py_RETURN_FALSE; - } - } - #endif - if (PyFloat_CheckExact(op1)) { - const long b = intval; - double a = PyFloat_AS_DOUBLE(op1); - if ((double)a == (double)b) { - Py_RETURN_TRUE; - } else { - Py_RETURN_FALSE; - } - } - return PyObject_RichCompare(op1, op2, Py_EQ); -} -#endif - -/* SliceObject */ - static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, - Py_ssize_t cstart, Py_ssize_t cstop, +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( + PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) { #if CYTHON_COMPILING_IN_CPYTHON @@ -17347,9 +15937,10 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED if (cstart < 0) cstart = 0; } } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + if (PyErr_ExceptionMatches(PyExc_OverflowError)) + PyErr_Clear(); + else goto bad; - PyErr_Clear(); } } return ms->sq_slice(obj, cstart, cstop); @@ -17408,118 +15999,67 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED return NULL; } -/* RaiseTooManyValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { PyErr_Format(PyExc_ValueError, "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); } -/* RaiseNeedMoreValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { PyErr_Format(PyExc_ValueError, - "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%s to unpack", index, (index == 1) ? "" : "s"); } -/* RaiseNoneIterError */ - static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { +static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); } -/* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 - PyObject *ob = PyCapsule_New(vtable, 0, 0); +static CYTHON_INLINE int __Pyx_IterFinish(void) { +#if CYTHON_COMPILING_IN_CPYTHON + PyThreadState *tstate = PyThreadState_GET(); + PyObject* exc_type = tstate->curexc_type; + if (unlikely(exc_type)) { + if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) { + PyObject *exc_value, *exc_tb; + exc_value = tstate->curexc_value; + exc_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + Py_DECREF(exc_type); + Py_XDECREF(exc_value); + Py_XDECREF(exc_tb); + return 0; + } else { + return -1; + } + } + return 0; #else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) - goto bad; - Py_DECREF(ob); + if (unlikely(PyErr_Occurred())) { + if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { + PyErr_Clear(); + return 0; + } else { + return -1; + } + } return 0; -bad: - Py_XDECREF(ob); - return -1; +#endif } -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_VERSION_HEX < 0x03030000 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - #if PY_VERSION_HEX < 0x03030000 - PyObject *py_level = PyInt_FromLong(1); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - #endif - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_VERSION_HEX < 0x03030000 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { + if (unlikely(retval)) { + Py_DECREF(retval); + __Pyx_RaiseTooManyValuesError(expected); + return -1; + } else { + return __Pyx_IterFinish(); } -bad: - #if PY_VERSION_HEX < 0x03030000 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; + return 0; } -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Format(PyExc_ImportError, @@ -17532,266 +16072,193 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED return value; } -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); +static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) { + PyObject *result; + result = __Pyx_PyObject_GetAttrStr(nmspace, name); + if (!result) + result = __Pyx_GetModuleGlobalName(name); + return result; } -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; +static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) { +#if CYTHON_COMPILING_IN_CPYTHON + PyThreadState *tstate = PyThreadState_GET(); + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); +#else + PyErr_GetExcInfo(type, value, tb); +#endif } -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - py_code = __pyx_find_code_object(c_line ? c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? c_line : py_line, py_code); - } - py_frame = PyFrame_New( - PyThreadState_GET(), /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - py_frame->f_lineno = py_line; - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); +static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) { +#if CYTHON_COMPILING_IN_CPYTHON + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyThreadState *tstate = PyThreadState_GET(); + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(type, value, tb); +#endif } #if PY_MAJOR_VERSION < 3 static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) { + #if PY_VERSION_HEX >= 0x02060000 if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags); + #endif if (PyObject_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) return __pyx_pw_5numpy_7ndarray_1__getbuffer__(obj, view, flags); - PyErr_Format(PyExc_TypeError, "'%.200s' does not have the buffer interface", Py_TYPE(obj)->tp_name); + #if PY_VERSION_HEX < 0x02060000 + if (obj->ob_type->tp_dict) { + PyObject *getbuffer_cobj = PyObject_GetItem( + obj->ob_type->tp_dict, __pyx_n_s____pyx_getbuffer); + if (getbuffer_cobj) { + getbufferproc func = (getbufferproc) PyCObject_AsVoidPtr(getbuffer_cobj); + Py_DECREF(getbuffer_cobj); + if (!func) + goto fail; + return func(obj, view, flags); + } else { + PyErr_Clear(); + } + } + #endif + PyErr_Format(PyExc_TypeError, "'%100s' does not have the buffer interface", Py_TYPE(obj)->tp_name); +#if PY_VERSION_HEX < 0x02060000 +fail: +#endif return -1; } static void __Pyx_ReleaseBuffer(Py_buffer *view) { PyObject *obj = view->obj; if (!obj) return; + #if PY_VERSION_HEX >= 0x02060000 if (PyObject_CheckBuffer(obj)) { PyBuffer_Release(view); return; } + #endif if (PyObject_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) { __pyx_pw_5numpy_7ndarray_3__releasebuffer__(obj, view); return; } + #if PY_VERSION_HEX < 0x02060000 + if (obj->ob_type->tp_dict) { + PyObject *releasebuffer_cobj = PyObject_GetItem( + obj->ob_type->tp_dict, __pyx_n_s____pyx_releasebuffer); + if (releasebuffer_cobj) { + releasebufferproc func = (releasebufferproc) PyCObject_AsVoidPtr(releasebuffer_cobj); + Py_DECREF(releasebuffer_cobj); + if (!func) + goto fail; + func(obj, view); + return; + } else { + PyErr_Clear(); + } + } + #endif + goto nofail; +#if PY_VERSION_HEX < 0x02060000 +fail: +#endif + PyErr_WriteUnraisable(obj); +nofail: Py_DECREF(obj); view->obj = NULL; } -#endif +#endif /* PY_MAJOR_VERSION < 3 */ - /* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); - } + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *empty_list = 0; + PyObject *module = 0; + PyObject *global_dict = 0; + PyObject *empty_dict = 0; + PyObject *list; + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s____import__); + if (!py_import) + goto bad; + #endif + if (from_list) + list = from_list; + else { + empty_list = PyList_New(0); + if (!empty_list) + goto bad; + list = empty_list; } + global_dict = PyModule_GetDict(__pyx_m); + if (!global_dict) + goto bad; + empty_dict = PyDict_New(); + if (!empty_dict) + goto bad; + #if PY_VERSION_HEX >= 0x02050000 { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.')) { + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_level = PyInt_FromLong(1); + if (!py_level) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, global_dict, empty_dict, list, py_level, NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, 1); + #endif + if (!module) { + if (!PyErr_ExceptionMatches(PyExc_ImportError)) + goto bad; + PyErr_Clear(); + } + } + level = 0; /* try absolute import on failure */ } - } else { - if (sizeof(int) <= sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); + #endif + if (!module) { + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_level = PyInt_FromLong(level); + if (!py_level) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, global_dict, empty_dict, list, py_level, NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, level); + #endif } } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); + #else + if (level>0) { + PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4."); + goto bad; } + module = PyObject_CallFunctionObjArgs(py_import, + name, global_dict, empty_dict, list, NULL); + #endif +bad: + #if PY_VERSION_HEX < 0x03030000 + Py_XDECREF(py_import); + #endif + Py_XDECREF(empty_list); + Py_XDECREF(empty_dict); + return module; } -/* None */ - #if CYTHON_CCOMPLEX +#if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { return ::std::complex< float >(x, y); @@ -17810,8 +16277,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } #endif -/* None */ - #if CYTHON_CCOMPLEX +#if CYTHON_CCOMPLEX #else static CYTHON_INLINE int __Pyx_c_eqf(__pyx_t_float_complex a, __pyx_t_float_complex b) { return (a.real == b.real) && (a.imag == b.imag); @@ -17912,8 +16378,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif #endif -/* None */ - #if CYTHON_CCOMPLEX +#if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { return ::std::complex< double >(x, y); @@ -17932,8 +16397,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } #endif -/* None */ - #if CYTHON_CCOMPLEX +#if CYTHON_CCOMPLEX #else static CYTHON_INLINE int __Pyx_c_eq(__pyx_t_double_complex a, __pyx_t_double_complex b) { return (a.real == b.real) && (a.imag == b.imag); @@ -18034,640 +16498,592 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif #endif -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) { - const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0; +static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) { + const unsigned char neg_one = (unsigned char)-1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; + if (sizeof(unsigned char) < sizeof(long)) { + long val = __Pyx_PyInt_AsLong(x); + if (unlikely(val != (long)(unsigned char)val)) { + if (!unlikely(val == -1 && PyErr_Occurred())) { + PyErr_SetString(PyExc_OverflowError, + (is_unsigned && unlikely(val < 0)) ? + "can't convert negative value to unsigned char" : + "value too large to convert to unsigned char"); + } + return (unsigned char)-1; + } + return (unsigned char)val; + } + return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x); +} + +static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) { + const unsigned short neg_one = (unsigned short)-1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; + if (sizeof(unsigned short) < sizeof(long)) { + long val = __Pyx_PyInt_AsLong(x); + if (unlikely(val != (long)(unsigned short)val)) { + if (!unlikely(val == -1 && PyErr_Occurred())) { + PyErr_SetString(PyExc_OverflowError, + (is_unsigned && unlikely(val < 0)) ? + "can't convert negative value to unsigned short" : + "value too large to convert to unsigned short"); + } + return (unsigned short)-1; + } + return (unsigned short)val; + } + return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x); +} + +static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) { + const unsigned int neg_one = (unsigned int)-1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; + if (sizeof(unsigned int) < sizeof(long)) { + long val = __Pyx_PyInt_AsLong(x); + if (unlikely(val != (long)(unsigned int)val)) { + if (!unlikely(val == -1 && PyErr_Occurred())) { + PyErr_SetString(PyExc_OverflowError, + (is_unsigned && unlikely(val < 0)) ? + "can't convert negative value to unsigned int" : + "value too large to convert to unsigned int"); + } + return (unsigned int)-1; + } + return (unsigned int)val; + } + return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x); +} + +static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) { + const char neg_one = (char)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(enum NPY_TYPES) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); - } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); + if (sizeof(char) < sizeof(long)) { + long val = __Pyx_PyInt_AsLong(x); + if (unlikely(val != (long)(char)val)) { + if (!unlikely(val == -1 && PyErr_Occurred())) { + PyErr_SetString(PyExc_OverflowError, + (is_unsigned && unlikely(val < 0)) ? + "can't convert negative value to char" : + "value too large to convert to char"); + } + return (char)-1; + } + return (char)val; + } + return (char)__Pyx_PyInt_AsLong(x); +} + +static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) { + const short neg_one = (short)-1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; + if (sizeof(short) < sizeof(long)) { + long val = __Pyx_PyInt_AsLong(x); + if (unlikely(val != (long)(short)val)) { + if (!unlikely(val == -1 && PyErr_Occurred())) { + PyErr_SetString(PyExc_OverflowError, + (is_unsigned && unlikely(val < 0)) ? + "can't convert negative value to short" : + "value too large to convert to short"); + } + return (short)-1; + } + return (short)val; + } + return (short)__Pyx_PyInt_AsLong(x); +} + +static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) { + const int neg_one = (int)-1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; + if (sizeof(int) < sizeof(long)) { + long val = __Pyx_PyInt_AsLong(x); + if (unlikely(val != (long)(int)val)) { + if (!unlikely(val == -1 && PyErr_Occurred())) { + PyErr_SetString(PyExc_OverflowError, + (is_unsigned && unlikely(val < 0)) ? + "can't convert negative value to int" : + "value too large to convert to int"); + } + return (int)-1; + } + return (int)val; + } + return (int)__Pyx_PyInt_AsLong(x); +} + +static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) { + const signed char neg_one = (signed char)-1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; + if (sizeof(signed char) < sizeof(long)) { + long val = __Pyx_PyInt_AsLong(x); + if (unlikely(val != (long)(signed char)val)) { + if (!unlikely(val == -1 && PyErr_Occurred())) { + PyErr_SetString(PyExc_OverflowError, + (is_unsigned && unlikely(val < 0)) ? + "can't convert negative value to signed char" : + "value too large to convert to signed char"); + } + return (signed char)-1; + } + return (signed char)val; + } + return (signed char)__Pyx_PyInt_AsSignedLong(x); +} + +static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) { + const signed short neg_one = (signed short)-1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; + if (sizeof(signed short) < sizeof(long)) { + long val = __Pyx_PyInt_AsLong(x); + if (unlikely(val != (long)(signed short)val)) { + if (!unlikely(val == -1 && PyErr_Occurred())) { + PyErr_SetString(PyExc_OverflowError, + (is_unsigned && unlikely(val < 0)) ? + "can't convert negative value to signed short" : + "value too large to convert to signed short"); + } + return (signed short)-1; + } + return (signed short)val; + } + return (signed short)__Pyx_PyInt_AsSignedLong(x); +} + +static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) { + const signed int neg_one = (signed int)-1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; + if (sizeof(signed int) < sizeof(long)) { + long val = __Pyx_PyInt_AsLong(x); + if (unlikely(val != (long)(signed int)val)) { + if (!unlikely(val == -1 && PyErr_Occurred())) { + PyErr_SetString(PyExc_OverflowError, + (is_unsigned && unlikely(val < 0)) ? + "can't convert negative value to signed int" : + "value too large to convert to signed int"); + } + return (signed int)-1; + } + return (signed int)val; + } + return (signed int)__Pyx_PyInt_AsSignedLong(x); +} + +static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) { + const int neg_one = (int)-1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; + if (sizeof(int) < sizeof(long)) { + long val = __Pyx_PyInt_AsLong(x); + if (unlikely(val != (long)(int)val)) { + if (!unlikely(val == -1 && PyErr_Occurred())) { + PyErr_SetString(PyExc_OverflowError, + (is_unsigned && unlikely(val < 0)) ? + "can't convert negative value to int" : + "value too large to convert to int"); + } + return (int)-1; + } + return (int)val; + } + return (int)__Pyx_PyInt_AsLong(x); +} + +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif +static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) { + const unsigned long neg_one = (unsigned long)-1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to unsigned long"); + return (unsigned long)-1; + } + return (unsigned long)val; + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(unsigned long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (unsigned long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif + if (unlikely(Py_SIZE(x) < 0)) { + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to unsigned long"); + return (unsigned long)-1; + } + return (unsigned long)PyLong_AsUnsignedLong(x); + } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(unsigned long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(unsigned long) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(unsigned long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif + return (unsigned long)PyLong_AsLong(x); } } else { - if (sizeof(enum NPY_TYPES) <= sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(enum NPY_TYPES) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); + unsigned long val; + PyObject *tmp = __Pyx_PyNumber_Int(x); + if (!tmp) return (unsigned long)-1; + val = __Pyx_PyInt_AsUnsignedLong(tmp); + Py_DECREF(tmp); + return val; + } +} + +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif +static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) { + const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to unsigned PY_LONG_LONG"); + return (unsigned PY_LONG_LONG)-1; + } + return (unsigned PY_LONG_LONG)val; + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(unsigned PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif + if (unlikely(Py_SIZE(x) < 0)) { + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to unsigned PY_LONG_LONG"); + return (unsigned PY_LONG_LONG)-1; + } + return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); + } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(unsigned PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif + return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x); } + } else { + unsigned PY_LONG_LONG val; + PyObject *tmp = __Pyx_PyNumber_Int(x); + if (!tmp) return (unsigned PY_LONG_LONG)-1; + val = __Pyx_PyInt_AsUnsignedLongLong(tmp); + Py_DECREF(tmp); + return val; } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(enum NPY_TYPES), - little, !is_unsigned); +} + +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif +static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) { + const long neg_one = (long)-1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long)-1; + } + return (long)val; + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif + if (unlikely(Py_SIZE(x) < 0)) { + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long)-1; + } + return (long)PyLong_AsUnsignedLong(x); + } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(long) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif + return (long)PyLong_AsLong(x); + } + } else { + long val; + PyObject *tmp = __Pyx_PyNumber_Int(x); + if (!tmp) return (long)-1; + val = __Pyx_PyInt_AsLong(tmp); + Py_DECREF(tmp); + return val; } } -/* CIntFromPy */ - static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { - const size_t neg_one = (size_t) -1, const_zero = (size_t) 0; +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif +static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) { + const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { - if (sizeof(size_t) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (size_t) val; + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to PY_LONG_LONG"); + return (PY_LONG_LONG)-1; } + return (PY_LONG_LONG)val; } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (size_t) 0; - case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, digits[0]) - case 2: - if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) >= 2 * PyLong_SHIFT) { - return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) >= 3 * PyLong_SHIFT) { - return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) >= 4 * PyLong_SHIFT) { - return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - } - break; + if (sizeof(digit) <= sizeof(PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } } #endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (size_t) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } #endif - if (sizeof(size_t) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x)) - } else if (sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + if (unlikely(Py_SIZE(x) < 0)) { + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to PY_LONG_LONG"); + return (PY_LONG_LONG)-1; } + return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (size_t) 0; - case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, +digits[0]) - case -2: - if (8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { - return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { - return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { - return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { - return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) { - return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) { - return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; + if (sizeof(digit) <= sizeof(PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } } #endif - if (sizeof(size_t) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x)) - } else if (sizeof(size_t) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x)) - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - size_t val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } #endif - return (size_t) -1; + return (PY_LONG_LONG)PyLong_AsLongLong(x); } } else { - size_t val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (size_t) -1; - val = __Pyx_PyInt_As_size_t(tmp); + PY_LONG_LONG val; + PyObject *tmp = __Pyx_PyNumber_Int(x); + if (!tmp) return (PY_LONG_LONG)-1; + val = __Pyx_PyInt_AsLongLong(tmp); Py_DECREF(tmp); return val; } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to size_t"); - return (size_t) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to size_t"); - return (size_t) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; +} + +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif +static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) { + const signed long neg_one = (signed long)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to signed long"); + return (signed long)-1; } + return (signed long)val; } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; + if (sizeof(digit) <= sizeof(signed long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (signed long) ((PyLongObject*)x)->ob_digit[0]; + } } #endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } #endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + if (unlikely(Py_SIZE(x) < 0)) { + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to signed long"); + return (signed long)-1; } + return (signed long)PyLong_AsUnsignedLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; + if (sizeof(digit) <= sizeof(signed long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(signed long) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(signed long) ((PyLongObject*)x)->ob_digit[0]; + } } #endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } #endif - return (int) -1; + return (signed long)PyLong_AsLong(x); } } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); + signed long val; + PyObject *tmp = __Pyx_PyNumber_Int(x); + if (!tmp) return (signed long)-1; + val = __Pyx_PyInt_AsSignedLong(tmp); Py_DECREF(tmp); return val; } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; +} + +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif +static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) { + const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to signed PY_LONG_LONG"); + return (signed PY_LONG_LONG)-1; } + return (signed PY_LONG_LONG)val; } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; + if (sizeof(digit) <= sizeof(signed PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } } #endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } #endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + if (unlikely(Py_SIZE(x) < 0)) { + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to signed PY_LONG_LONG"); + return (signed PY_LONG_LONG)-1; } + return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; + if (sizeof(digit) <= sizeof(signed PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } } #endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } #endif - return (long) -1; + return (signed PY_LONG_LONG)PyLong_AsLongLong(x); } } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); + signed PY_LONG_LONG val; + PyObject *tmp = __Pyx_PyNumber_Int(x); + if (!tmp) return (signed PY_LONG_LONG)-1; + val = __Pyx_PyInt_AsSignedLongLong(tmp); Py_DECREF(tmp); return val; } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; } -/* CoroutineBase */ - #include -#include -static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); -static PyObject *__Pyx_Coroutine_Close(PyObject *self); -static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); -#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; +#if CYTHON_COMPILING_IN_CPYTHON + PyThreadState *tstate = PyThreadState_GET(); + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; +#else + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); +#endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} + +static PyObject *__Pyx_Generator_Next(PyObject *self); +static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value); +static PyObject *__Pyx_Generator_Close(PyObject *self); +static PyObject *__Pyx_Generator_Throw(PyObject *gen, PyObject *args); +static PyTypeObject *__pyx_GeneratorType = 0; +#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType) +#define __Pyx_Generator_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) #if 1 || PY_VERSION_HEX < 0x030300B0 static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { PyObject *et, *ev, *tb; PyObject *value = NULL; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign __Pyx_ErrFetch(&et, &ev, &tb); if (!et) { Py_XDECREF(tb); @@ -18676,50 +17092,25 @@ static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { *pvalue = Py_None; return 0; } + if (unlikely(et != PyExc_StopIteration) && + unlikely(!PyErr_GivenExceptionMatches(et, PyExc_StopIteration))) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } if (likely(et == PyExc_StopIteration)) { -#if PY_VERSION_HEX >= 0x030300A0 - if (ev && Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) { - value = ((PyStopIterationObject *)ev)->value; - Py_INCREF(value); - Py_DECREF(ev); - Py_XDECREF(tb); - Py_DECREF(et); - *pvalue = value; - return 0; - } -#endif - if (!ev || !PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { + if (likely(!ev) || !PyObject_IsInstance(ev, PyExc_StopIteration)) { if (!ev) { Py_INCREF(Py_None); ev = Py_None; - } else if (PyTuple_Check(ev)) { - if (PyTuple_GET_SIZE(ev) >= 1) { - PyObject *value; -#if CYTHON_COMPILING_IN_CPYTHON - value = PySequence_ITEM(ev, 0); -#else - value = PyTuple_GET_ITEM(ev, 0); - Py_INCREF(value); -#endif - Py_DECREF(ev); - ev = value; - } else { - Py_INCREF(Py_None); - Py_DECREF(ev); - ev = Py_None; - } } Py_XDECREF(tb); Py_DECREF(et); *pvalue = ev; return 0; } - } else if (!PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { - __Pyx_ErrRestore(et, ev, tb); - return -1; } PyErr_NormalizeException(&et, &ev, &tb); - if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { + if (unlikely(!PyObject_IsInstance(ev, PyExc_StopIteration))) { __Pyx_ErrRestore(et, ev, tb); return -1; } @@ -18731,10 +17122,10 @@ static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { Py_DECREF(ev); #else { - PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args); + PyObject* args = PyObject_GetAttr(ev, __pyx_n_s__args); Py_DECREF(ev); if (likely(args)) { - value = PySequence_GetItem(args, 0); + value = PyObject_GetItem(args, 0); Py_DECREF(args); } if (unlikely(!value)) { @@ -18749,7 +17140,7 @@ static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { } #endif static CYTHON_INLINE -void __Pyx_Coroutine_ExceptionClear(__pyx_CoroutineObject *self) { +void __Pyx_Generator_ExceptionClear(__pyx_GeneratorObject *self) { PyObject *exc_type = self->exc_type; PyObject *exc_value = self->exc_value; PyObject *exc_traceback = self->exc_traceback; @@ -18761,7 +17152,7 @@ void __Pyx_Coroutine_ExceptionClear(__pyx_CoroutineObject *self) { Py_XDECREF(exc_traceback); } static CYTHON_INLINE -int __Pyx_Coroutine_CheckRunning(__pyx_CoroutineObject *gen) { +int __Pyx_Generator_CheckRunning(__pyx_GeneratorObject *gen) { if (unlikely(gen->is_running)) { PyErr_SetString(PyExc_ValueError, "generator already executing"); @@ -18770,9 +17161,8 @@ int __Pyx_Coroutine_CheckRunning(__pyx_CoroutineObject *gen) { return 0; } static CYTHON_INLINE -PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value) { +PyObject *__Pyx_Generator_SendEx(__pyx_GeneratorObject *self, PyObject *value) { PyObject *retval; - __Pyx_PyThreadState_declare assert(!self->is_running); if (unlikely(self->resume_label == 0)) { if (unlikely(value && value != Py_None)) { @@ -18786,22 +17176,24 @@ PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value) { PyErr_SetNone(PyExc_StopIteration); return NULL; } - __Pyx_PyThreadState_assign if (value) { #if CYTHON_COMPILING_IN_PYPY #else + /* Generators always return to their most recent caller, not + * necessarily their creator. */ if (self->exc_traceback) { + PyThreadState *tstate = PyThreadState_GET(); PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; PyFrameObject *f = tb->tb_frame; - Py_XINCREF(__pyx_tstate->frame); + Py_XINCREF(tstate->frame); assert(f->f_back == NULL); - f->f_back = __pyx_tstate->frame; + f->f_back = tstate->frame; } #endif __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value, &self->exc_traceback); } else { - __Pyx_Coroutine_ExceptionClear(self); + __Pyx_Generator_ExceptionClear(self); } self->is_running = 1; retval = self->body((PyObject *) self, value); @@ -18811,6 +17203,9 @@ PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value) { &self->exc_traceback); #if CYTHON_COMPILING_IN_PYPY #else + /* Don't keep the reference to f_back any longer than necessary. It + * may keep a chain of frames alive or it could create a reference + * cycle. */ if (self->exc_traceback) { PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; PyFrameObject *f = tb->tb_frame; @@ -18818,83 +17213,72 @@ PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value) { } #endif } else { - __Pyx_Coroutine_ExceptionClear(self); - } - return retval; -} -static CYTHON_INLINE -PyObject *__Pyx_Coroutine_MethodReturn(PyObject *retval) { - if (unlikely(!retval && !PyErr_Occurred())) { - PyErr_SetNone(PyExc_StopIteration); + __Pyx_Generator_ExceptionClear(self); } return retval; } static CYTHON_INLINE -PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { +PyObject *__Pyx_Generator_FinishDelegation(__pyx_GeneratorObject *gen) { PyObject *ret; PyObject *val = NULL; - __Pyx_Coroutine_Undelegate(gen); + __Pyx_Generator_Undelegate(gen); __Pyx_PyGen_FetchStopIterationValue(&val); - ret = __Pyx_Coroutine_SendEx(gen, val); + ret = __Pyx_Generator_SendEx(gen, val); Py_XDECREF(val); return ret; } -static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { - PyObject *retval; - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; +static PyObject *__Pyx_Generator_Next(PyObject *self) { + __pyx_GeneratorObject *gen = (__pyx_GeneratorObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(__Pyx_Generator_CheckRunning(gen))) + return NULL; + if (yf) { + PyObject *ret; + gen->is_running = 1; + ret = Py_TYPE(yf)->tp_iternext(yf); + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + return __Pyx_Generator_FinishDelegation(gen); + } + return __Pyx_Generator_SendEx(gen, Py_None); +} +static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value) { + __pyx_GeneratorObject *gen = (__pyx_GeneratorObject*) self; PyObject *yf = gen->yieldfrom; - if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) + if (unlikely(__Pyx_Generator_CheckRunning(gen))) return NULL; if (yf) { PyObject *ret; gen->is_running = 1; - #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { - ret = __Pyx_Coroutine_Send(yf, value); - } else - #endif - #ifdef __Pyx_Coroutine_USED - if (__Pyx_Coroutine_CheckExact(yf)) { - ret = __Pyx_Coroutine_Send(yf, value); - } else - #endif - { + ret = __Pyx_Generator_Send(yf, value); + } else { if (value == Py_None) - ret = Py_TYPE(yf)->tp_iternext(yf); + ret = PyIter_Next(yf); else - ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value); + ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s__send, value); } gen->is_running = 0; if (likely(ret)) { return ret; } - retval = __Pyx_Coroutine_FinishDelegation(gen); - } else { - retval = __Pyx_Coroutine_SendEx(gen, value); + return __Pyx_Generator_FinishDelegation(gen); } - return __Pyx_Coroutine_MethodReturn(retval); + return __Pyx_Generator_SendEx(gen, value); } -static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { +static int __Pyx_Generator_CloseIter(__pyx_GeneratorObject *gen, PyObject *yf) { PyObject *retval = NULL; int err = 0; - #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { - retval = __Pyx_Coroutine_Close(yf); - if (!retval) - return -1; - } else - #endif - #ifdef __Pyx_Coroutine_USED - if (__Pyx_Coroutine_CheckExact(yf)) { - retval = __Pyx_Coroutine_Close(yf); + retval = __Pyx_Generator_Close(yf); if (!retval) return -1; - } else - #endif - { + } else { PyObject *meth; gen->is_running = 1; - meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_close); + meth = PyObject_GetAttr(yf, __pyx_n_s__close); if (unlikely(!meth)) { if (!PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_WriteUnraisable(yf); @@ -18911,39 +17295,26 @@ static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { Py_XDECREF(retval); return err; } -static PyObject *__Pyx_Generator_Next(PyObject *self) { - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; - PyObject *yf = gen->yieldfrom; - if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) - return NULL; - if (yf) { - PyObject *ret; - gen->is_running = 1; - ret = Py_TYPE(yf)->tp_iternext(yf); - gen->is_running = 0; - if (likely(ret)) { - return ret; - } - return __Pyx_Coroutine_FinishDelegation(gen); - } - return __Pyx_Coroutine_SendEx(gen, Py_None); -} -static PyObject *__Pyx_Coroutine_Close(PyObject *self) { - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; +static PyObject *__Pyx_Generator_Close(PyObject *self) { + __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; PyObject *retval, *raised_exception; PyObject *yf = gen->yieldfrom; int err = 0; - if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) + if (unlikely(__Pyx_Generator_CheckRunning(gen))) return NULL; if (yf) { Py_INCREF(yf); - err = __Pyx_Coroutine_CloseIter(gen, yf); - __Pyx_Coroutine_Undelegate(gen); + err = __Pyx_Generator_CloseIter(gen, yf); + __Pyx_Generator_Undelegate(gen); Py_DECREF(yf); } if (err == 0) +#if PY_VERSION_HEX < 0x02050000 + PyErr_SetNone(PyExc_StopIteration); +#else PyErr_SetNone(PyExc_GeneratorExit); - retval = __Pyx_Coroutine_SendEx(gen, NULL); +#endif + retval = __Pyx_Generator_SendEx(gen, NULL); if (retval) { Py_DECREF(retval); PyErr_SetString(PyExc_RuntimeError, @@ -18953,50 +17324,46 @@ static PyObject *__Pyx_Coroutine_Close(PyObject *self) { raised_exception = PyErr_Occurred(); if (!raised_exception || raised_exception == PyExc_StopIteration +#if PY_VERSION_HEX >= 0x02050000 || raised_exception == PyExc_GeneratorExit || PyErr_GivenExceptionMatches(raised_exception, PyExc_GeneratorExit) +#endif || PyErr_GivenExceptionMatches(raised_exception, PyExc_StopIteration)) { - if (raised_exception) PyErr_Clear(); + if (raised_exception) PyErr_Clear(); /* ignore these errors */ Py_INCREF(Py_None); return Py_None; } return NULL; } -static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; +static PyObject *__Pyx_Generator_Throw(PyObject *self, PyObject *args) { + __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; PyObject *typ; PyObject *tb = NULL; PyObject *val = NULL; PyObject *yf = gen->yieldfrom; if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb)) return NULL; - if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) + if (unlikely(__Pyx_Generator_CheckRunning(gen))) return NULL; if (yf) { PyObject *ret; Py_INCREF(yf); +#if PY_VERSION_HEX >= 0x02050000 if (PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit)) { - int err = __Pyx_Coroutine_CloseIter(gen, yf); + int err = __Pyx_Generator_CloseIter(gen, yf); Py_DECREF(yf); - __Pyx_Coroutine_Undelegate(gen); + __Pyx_Generator_Undelegate(gen); if (err < 0) - return __Pyx_Coroutine_MethodReturn(__Pyx_Coroutine_SendEx(gen, NULL)); + return __Pyx_Generator_SendEx(gen, NULL); goto throw_here; } +#endif gen->is_running = 1; - #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { - ret = __Pyx_Coroutine_Throw(yf, args); - } else - #endif - #ifdef __Pyx_Coroutine_USED - if (__Pyx_Coroutine_CheckExact(yf)) { - ret = __Pyx_Coroutine_Throw(yf, args); - } else - #endif - { - PyObject *meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_throw); + ret = __Pyx_Generator_Throw(yf, args); + } else { + PyObject *meth = PyObject_GetAttr(yf, __pyx_n_s__throw); if (unlikely(!meth)) { Py_DECREF(yf); if (!PyErr_ExceptionMatches(PyExc_AttributeError)) { @@ -19004,7 +17371,7 @@ static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { return NULL; } PyErr_Clear(); - __Pyx_Coroutine_Undelegate(gen); + __Pyx_Generator_Undelegate(gen); gen->is_running = 0; goto throw_here; } @@ -19014,16 +17381,16 @@ static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { gen->is_running = 0; Py_DECREF(yf); if (!ret) { - ret = __Pyx_Coroutine_FinishDelegation(gen); + ret = __Pyx_Generator_FinishDelegation(gen); } - return __Pyx_Coroutine_MethodReturn(ret); + return ret; } throw_here: __Pyx_Raise(typ, val, tb, NULL); - return __Pyx_Coroutine_MethodReturn(__Pyx_Coroutine_SendEx(gen, NULL)); + return __Pyx_Generator_SendEx(gen, NULL); } -static int __Pyx_Coroutine_traverse(PyObject *self, visitproc visit, void *arg) { - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; +static int __Pyx_Generator_traverse(PyObject *self, visitproc visit, void *arg) { + __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; Py_VISIT(gen->closure); Py_VISIT(gen->classobj); Py_VISIT(gen->yieldfrom); @@ -19032,63 +17399,55 @@ static int __Pyx_Coroutine_traverse(PyObject *self, visitproc visit, void *arg) Py_VISIT(gen->exc_traceback); return 0; } -static int __Pyx_Coroutine_clear(PyObject *self) { - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; +static int __Pyx_Generator_clear(PyObject *self) { + __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; Py_CLEAR(gen->closure); Py_CLEAR(gen->classobj); Py_CLEAR(gen->yieldfrom); Py_CLEAR(gen->exc_type); Py_CLEAR(gen->exc_value); Py_CLEAR(gen->exc_traceback); - Py_CLEAR(gen->gi_name); - Py_CLEAR(gen->gi_qualname); return 0; } -static void __Pyx_Coroutine_dealloc(PyObject *self) { - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; +static void __Pyx_Generator_dealloc(PyObject *self) { + __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; PyObject_GC_UnTrack(gen); if (gen->gi_weakreflist != NULL) PyObject_ClearWeakRefs(self); + PyObject_GC_Track(self); if (gen->resume_label > 0) { - PyObject_GC_Track(self); -#if PY_VERSION_HEX >= 0x030400a1 - if (PyObject_CallFinalizerFromDealloc(self)) -#else Py_TYPE(gen)->tp_del(self); if (self->ob_refcnt > 0) -#endif - { - return; - } - PyObject_GC_UnTrack(self); + return; /* resurrected. :( */ } - __Pyx_Coroutine_clear(self); + PyObject_GC_UnTrack(self); + __Pyx_Generator_clear(self); PyObject_GC_Del(gen); } -static void __Pyx_Coroutine_del(PyObject *self) { +static void __Pyx_Generator_del(PyObject *self) { PyObject *res; PyObject *error_type, *error_value, *error_traceback; - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; - __Pyx_PyThreadState_declare + __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; if (gen->resume_label <= 0) return ; -#if PY_VERSION_HEX < 0x030400a1 assert(self->ob_refcnt == 0); self->ob_refcnt = 1; -#endif - __Pyx_PyThreadState_assign __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); - res = __Pyx_Coroutine_Close(self); + res = __Pyx_Generator_Close(self); if (res == NULL) PyErr_WriteUnraisable(self); else Py_DECREF(res); __Pyx_ErrRestore(error_type, error_value, error_traceback); -#if PY_VERSION_HEX < 0x030400a1 + /* Undo the temporary resurrection; can't use DECREF here, it would + * cause a recursive call. + */ assert(self->ob_refcnt > 0); - if (--self->ob_refcnt == 0) { - return; - } + if (--self->ob_refcnt == 0) + return; /* this is the normal path out */ + /* close() resurrected it! Make it look like the original Py_DECREF + * never happened. + */ { Py_ssize_t refcnt = self->ob_refcnt; _Py_NewReference(self); @@ -19097,68 +17456,98 @@ static void __Pyx_Coroutine_del(PyObject *self) { #if CYTHON_COMPILING_IN_CPYTHON assert(PyType_IS_GC(self->ob_type) && _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); + /* If Py_REF_DEBUG, _Py_NewReference bumped _Py_RefTotal, so + * we need to undo that. */ _Py_DEC_REFTOTAL; #endif -#ifdef COUNT_ALLOCS - --Py_TYPE(self)->tp_frees; - --Py_TYPE(self)->tp_allocs; -#endif -#endif -} -static PyObject * -__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self) -{ - Py_INCREF(self->gi_name); - return self->gi_name; -} -static int -__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = self->gi_name; - Py_INCREF(value); - self->gi_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self) -{ - Py_INCREF(self->gi_qualname); - return self->gi_qualname; + /* If Py_TRACE_REFS, _Py_NewReference re-added self to the object + * chain, so no more to do there. + * If COUNT_ALLOCS, the original decref bumped tp_frees, and + * _Py_NewReference bumped tp_allocs: both of those need to be + * undone. + */ +#ifdef COUNT_ALLOCS + --Py_TYPE(self)->tp_frees; + --Py_TYPE(self)->tp_allocs; +#endif } -static int -__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { +static PyMemberDef __pyx_Generator_memberlist[] = { + {(char *) "gi_running", +#if PY_VERSION_HEX >= 0x02060000 + T_BOOL, #else - if (unlikely(value == NULL || !PyString_Check(value))) { + T_BYTE, #endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = self->gi_qualname; - Py_INCREF(value); - self->gi_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static __pyx_CoroutineObject *__Pyx__Coroutine_New( - PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *closure, - PyObject *name, PyObject *qualname, PyObject *module_name) { - __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); + offsetof(__pyx_GeneratorObject, is_running), + READONLY, + NULL}, + {0, 0, 0, 0, 0} +}; +static PyMethodDef __pyx_Generator_methods[] = { + {__Pyx_NAMESTR("send"), (PyCFunction) __Pyx_Generator_Send, METH_O, 0}, + {__Pyx_NAMESTR("throw"), (PyCFunction) __Pyx_Generator_Throw, METH_VARARGS, 0}, + {__Pyx_NAMESTR("close"), (PyCFunction) __Pyx_Generator_Close, METH_NOARGS, 0}, + {0, 0, 0, 0} +}; +static PyTypeObject __pyx_GeneratorType_type = { + PyVarObject_HEAD_INIT(0, 0) + __Pyx_NAMESTR("generator"), /*tp_name*/ + sizeof(__pyx_GeneratorObject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + (destructor) __Pyx_Generator_dealloc,/*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ +#if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ +#else + 0, /*reserved*/ +#endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags*/ + 0, /*tp_doc*/ + (traverseproc) __Pyx_Generator_traverse, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + offsetof(__pyx_GeneratorObject, gi_weakreflist), /* tp_weaklistoffse */ + 0, /*tp_iter*/ + (iternextfunc) __Pyx_Generator_Next, /*tp_iternext*/ + __pyx_Generator_methods, /*tp_methods*/ + __pyx_Generator_memberlist, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + 0, /*tp_alloc*/ + 0, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + __Pyx_Generator_del, /*tp_del*/ +#if PY_VERSION_HEX >= 0x02060000 + 0, /*tp_version_tag*/ +#endif +}; +static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body, + PyObject *closure) { + __pyx_GeneratorObject *gen = + PyObject_GC_New(__pyx_GeneratorObject, &__pyx_GeneratorType_type); if (gen == NULL) return NULL; gen->body = body; @@ -19172,201 +17561,20 @@ static __pyx_CoroutineObject *__Pyx__Coroutine_New( gen->exc_value = NULL; gen->exc_traceback = NULL; gen->gi_weakreflist = NULL; - Py_XINCREF(qualname); - gen->gi_qualname = qualname; - Py_XINCREF(name); - gen->gi_name = name; - Py_XINCREF(module_name); - gen->gi_modulename = module_name; PyObject_GC_Track(gen); return gen; } - -/* PatchModuleWithCoroutine */ - static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { -#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - int result; - PyObject *globals, *result_obj; - globals = PyDict_New(); if (unlikely(!globals)) goto ignore; - result = PyDict_SetItemString(globals, "_cython_coroutine_type", - #ifdef __Pyx_Coroutine_USED - (PyObject*)__pyx_CoroutineType); - #else - Py_None); - #endif - if (unlikely(result < 0)) goto ignore; - result = PyDict_SetItemString(globals, "_cython_generator_type", - #ifdef __Pyx_Generator_USED - (PyObject*)__pyx_GeneratorType); - #else - Py_None); - #endif - if (unlikely(result < 0)) goto ignore; - if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore; - if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore; - result_obj = PyRun_String(py_code, Py_file_input, globals, globals); - if (unlikely(!result_obj)) goto ignore; - Py_DECREF(result_obj); - Py_DECREF(globals); - return module; -ignore: - Py_XDECREF(globals); - PyErr_WriteUnraisable(module); - if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) { - Py_DECREF(module); - module = NULL; - } -#else - py_code++; -#endif - return module; -} - -/* PatchGeneratorABC */ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) -static PyObject* __Pyx_patch_abc_module(PyObject *module); -static PyObject* __Pyx_patch_abc_module(PyObject *module) { - module = __Pyx_Coroutine_patch_module( - module, "" -"if _cython_generator_type is not None:\n" -" try: Generator = _module.Generator\n" -" except AttributeError: pass\n" -" else: Generator.register(_cython_generator_type)\n" -"if _cython_coroutine_type is not None:\n" -" try: Coroutine = _module.Coroutine\n" -" except AttributeError: pass\n" -" else: Coroutine.register(_cython_coroutine_type)\n" - ); - return module; -} -#endif -static int __Pyx_patch_abc(void) { -#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - static int abc_patched = 0; - if (!abc_patched) { - PyObject *module; - module = PyImport_ImportModule((PY_VERSION_HEX >= 0x03030000) ? "collections.abc" : "collections"); - if (!module) { - PyErr_WriteUnraisable(NULL); - if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, - ((PY_VERSION_HEX >= 0x03030000) ? - "Cython module failed to register with collections.abc module" : - "Cython module failed to register with collections module"), 1) < 0)) { - return -1; - } - } else { - module = __Pyx_patch_abc_module(module); - abc_patched = 1; - if (unlikely(!module)) - return -1; - Py_DECREF(module); - } - module = PyImport_ImportModule("backports_abc"); - if (module) { - module = __Pyx_patch_abc_module(module); - Py_XDECREF(module); - } - if (!module) { - PyErr_Clear(); - } - } -#else - if (0) __Pyx_Coroutine_patch_module(NULL, NULL); -#endif - return 0; -} - -/* Generator */ - static PyMethodDef __pyx_Generator_methods[] = { - {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, - (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")}, - {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, - (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")}, - {"close", (PyCFunction) __Pyx_Coroutine_Close, METH_NOARGS, - (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")}, - {0, 0, 0, 0} -}; -static PyMemberDef __pyx_Generator_memberlist[] = { - {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, - {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, - (char*) PyDoc_STR("object being iterated by 'yield from', or None")}, - {0, 0, 0, 0, 0} -}; -static PyGetSetDef __pyx_Generator_getsets[] = { - {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, - (char*) PyDoc_STR("name of the generator"), 0}, - {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, - (char*) PyDoc_STR("qualified name of the generator"), 0}, - {0, 0, 0, 0, 0} -}; -static PyTypeObject __pyx_GeneratorType_type = { - PyVarObject_HEAD_INIT(0, 0) - "generator", - sizeof(__pyx_CoroutineObject), - 0, - (destructor) __Pyx_Coroutine_dealloc, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, - 0, - (traverseproc) __Pyx_Coroutine_traverse, - 0, - 0, - offsetof(__pyx_CoroutineObject, gi_weakreflist), - 0, - (iternextfunc) __Pyx_Generator_Next, - __pyx_Generator_methods, - __pyx_Generator_memberlist, - __pyx_Generator_getsets, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#else - __Pyx_Coroutine_del, -#endif - 0, -#if PY_VERSION_HEX >= 0x030400a1 - __Pyx_Coroutine_del, -#endif -}; static int __pyx_Generator_init(void) { __pyx_GeneratorType_type.tp_getattro = PyObject_GenericGetAttr; __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter; - __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type); - if (unlikely(!__pyx_GeneratorType)) { + if (PyType_Ready(&__pyx_GeneratorType_type)) { return -1; } + __pyx_GeneratorType = &__pyx_GeneratorType_type; return 0; } -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { +static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); @@ -19376,13 +17584,33 @@ static int __pyx_Generator_init(void) { "compiletime version %s of module '%.100s' " "does not match runtime version %s", ctversion, __Pyx_MODULE_NAME, rtversion); + #if PY_VERSION_HEX < 0x02050000 + return PyErr_Warn(NULL, message); + #else return PyErr_WarnEx(NULL, message, 1); + #endif } return 0; } -/* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule +static int __Pyx_SetVtable(PyObject *dict, void *vtable) { +#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0) + PyObject *ob = PyCapsule_New(vtable, 0, 0); +#else + PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); +#endif + if (!ob) + goto bad; + if (PyDict_SetItemString(dict, "__pyx_vtable__", ob) < 0) + goto bad; + Py_DECREF(ob); + return 0; +bad: + Py_XDECREF(ob); + return -1; +} + +#ifndef __PYX_HAVE_RT_ImportModule #define __PYX_HAVE_RT_ImportModule static PyObject *__Pyx_ImportModule(const char *name) { PyObject *py_name = 0; @@ -19399,8 +17627,7 @@ static PyObject *__Pyx_ImportModule(const char *name) { } #endif -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType +#ifndef __PYX_HAVE_RT_ImportType #define __PYX_HAVE_RT_ImportType static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict) @@ -19428,7 +17655,7 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class goto bad; if (!PyType_Check(result)) { PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", + "%s.%s is not a type object", module_name, class_name); goto bad; } @@ -19446,14 +17673,18 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class #endif if (!strict && (size_t)basicsize > size) { PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", - module_name, class_name, basicsize, size); + "%s.%s size changed, may indicate binary incompatibility", + module_name, class_name); + #if PY_VERSION_HEX < 0x02050000 + if (PyErr_Warn(NULL, warning) < 0) goto bad; + #else if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; + #endif } else if ((size_t)basicsize != size) { PyErr_Format(PyExc_ValueError, - "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", - module_name, class_name, basicsize, size); + "%s.%s has the wrong size, try recompiling", + module_name, class_name); goto bad; } return (PyTypeObject *)result; @@ -19464,8 +17695,169 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class } #endif -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = (start + end) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} + +#include "compile.h" +#include "frameobject.h" +#include "traceback.h" +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyObject *py_srcfile = 0; + PyObject *py_funcname = 0; + #if PY_MAJOR_VERSION < 3 + py_srcfile = PyString_FromString(filename); + #else + py_srcfile = PyUnicode_FromString(filename); + #endif + if (!py_srcfile) goto bad; + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + #else + py_funcname = PyUnicode_FromString(funcname); + #endif + } + if (!py_funcname) goto bad; + py_code = __Pyx_PyCode_New( + 0, /*int argcount,*/ + 0, /*int kwonlyargcount,*/ + 0, /*int nlocals,*/ + 0, /*int stacksize,*/ + 0, /*int flags,*/ + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, /*int firstlineno,*/ + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + Py_DECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_srcfile); + Py_XDECREF(py_funcname); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyObject *py_globals = 0; + PyFrameObject *py_frame = 0; + py_code = __pyx_find_code_object(c_line ? c_line : py_line); + if (!py_code) { + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) goto bad; + __pyx_insert_code_object(c_line ? c_line : py_line, py_code); + } + py_globals = PyModule_GetDict(__pyx_m); + if (!py_globals) goto bad; + py_frame = PyFrame_New( + PyThreadState_GET(), /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + py_globals, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + py_frame->f_lineno = py_line; + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} + +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { @@ -19475,7 +17867,7 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } - #else + #else /* Python 3+ has unicode identifiers */ if (t->is_unicode | t->is_str) { if (t->intern) { *t->p = PyUnicode_InternFromString(t->s); @@ -19495,15 +17887,15 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class return 0; } -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char* c_str) { + return __Pyx_PyUnicode_FromStringAndSize(c_str, strlen(c_str)); } static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && @@ -19525,35 +17917,29 @@ static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_ } } } -#endif +#endif /*__PYX_DEFAULT_STRING_ENCODING_IS_ASCII*/ *length = PyBytes_GET_SIZE(defenc); return defenc_c; -#else - if (__Pyx_PyUnicode_READY(o) == -1) return NULL; +#else /* PY_VERSION_HEX < 0x03030000 */ + if (PyUnicode_READY(o) == -1) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (PyUnicode_IS_ASCII(o)) { - *length = PyUnicode_GET_LENGTH(o); + *length = PyUnicode_GET_DATA_SIZE(o); return PyUnicode_AsUTF8(o); } else { PyUnicode_AsASCIIString(o); return NULL; } -#else +#else /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */ return PyUnicode_AsUTF8AndSize(o, length); -#endif -#endif - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); +#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */ +#endif /* PY_VERSION_HEX < 0x03030000 */ } else -#endif +#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT */ { char* result; int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { + if (r < 0) { return NULL; } else { return result; @@ -19565,7 +17951,7 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) { PyNumberMethods *m; const char *name = NULL; PyObject *res = NULL; @@ -19574,7 +17960,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #else if (PyLong_Check(x)) #endif - return __Pyx_NewRef(x); + return Py_INCREF(x), x; m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { @@ -19598,7 +17984,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { if (!PyLong_Check(res)) { #endif PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", + "__%s__ returned non-%s (type %.200s)", name, name, Py_TYPE(res)->tp_name); Py_DECREF(res); return NULL; @@ -19612,68 +17998,34 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); + PyObject* x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); +#if PY_VERSION_HEX < 0x02050000 + if (ival <= LONG_MAX) + return PyInt_FromLong((long)ival); + else { + unsigned char *bytes = (unsigned char *) &ival; + int one = 1; int little = (int)*(unsigned char*)&one; + return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0); + } +#else + return PyInt_FromSize_t(ival); +#endif +} +static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) { + unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x); + if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) { + if ((val != (unsigned PY_LONG_LONG)-1) || !PyErr_Occurred()) + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to size_t"); + return (size_t)-1; + } + return (size_t)val; } From a4af1bc27d469d8080864542c4a7f8bd21a2cedb Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 9 Nov 2016 18:37:44 +0100 Subject: [PATCH 306/446] fixed some warnings, updated interface.c to the latest version --- .../build/python/cython/interface.c | 15682 +++++++++------- code-experiments/src/f_gallagher.c | 2 +- code-experiments/src/f_griewank_rosenbrock.c | 2 +- code-experiments/src/f_katsuura.c | 4 +- code-experiments/src/f_lunacek_bi_rastrigin.c | 2 +- code-experiments/src/f_schaffers.c | 2 +- code-experiments/src/f_schwefel_generalized.c | 4 +- code-experiments/src/f_sharp_ridge.c | 2 +- code-experiments/src/f_weierstrass.c | 2 +- .../src/large_scale_transformations.c | 2 +- code-experiments/src/logger_bbob.c | 4 +- .../transform_vars_blockrotation_helpers.c | 2 +- .../src/transform_vars_permblockdiag.c | 2 +- 13 files changed, 8680 insertions(+), 7032 deletions(-) diff --git a/code-experiments/build/python/cython/interface.c b/code-experiments/build/python/cython/interface.c index c2dc56131..7624a4ef0 100644 --- a/code-experiments/build/python/cython/interface.c +++ b/code-experiments/build/python/cython/interface.c @@ -1,27 +1,16 @@ -/* Generated by Cython 0.19 on Fri Nov 4 15:56:09 2016 */ +/* Generated by Cython 0.24.1 */ #define PY_SSIZE_T_CLEAN -#ifndef CYTHON_USE_PYLONG_INTERNALS -#ifdef PYLONG_BITS_IN_DIGIT -#define CYTHON_USE_PYLONG_INTERNALS 0 -#else -#include "pyconfig.h" -#ifdef PYLONG_BITS_IN_DIGIT -#define CYTHON_USE_PYLONG_INTERNALS 1 -#else -#define CYTHON_USE_PYLONG_INTERNALS 0 -#endif -#endif -#endif #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02040000 - #error Cython requires Python 2.4+. +#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) + #error Cython requires Python 2.6+ or Python 3.2+. #else -#include /* For offsetof */ +#define CYTHON_ABI "0_24_1" +#include #ifndef offsetof -#define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall @@ -47,103 +36,100 @@ #define Py_HUGE_VAL HUGE_VAL #endif #ifdef PYPY_VERSION -#define CYTHON_COMPILING_IN_PYPY 1 -#define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 #else -#define CYTHON_COMPILING_IN_PYPY 0 -#define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 #endif -#if PY_VERSION_HEX < 0x02050000 - typedef int Py_ssize_t; - #define PY_SSIZE_T_MAX INT_MAX - #define PY_SSIZE_T_MIN INT_MIN - #define PY_FORMAT_SIZE_T "" - #define CYTHON_FORMAT_SSIZE_T "" - #define PyInt_FromSsize_t(z) PyInt_FromLong(z) - #define PyInt_AsSsize_t(o) __Pyx_PyInt_AsInt(o) - #define PyNumber_Index(o) ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \ - (PyErr_Format(PyExc_TypeError, \ - "expected index value, got %.200s", Py_TYPE(o)->tp_name), \ - (PyObject*)0)) - #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \ - !PyComplex_Check(o)) - #define PyIndex_Check __Pyx_PyIndex_Check - #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message) - #define __PYX_BUILD_PY_SSIZE_T "i" -#else - #define __PYX_BUILD_PY_SSIZE_T "n" - #define CYTHON_FORMAT_SSIZE_T "z" - #define __Pyx_PyIndex_Check PyIndex_Check +#if !defined(CYTHON_USE_PYLONG_INTERNALS) && CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000 + #define CYTHON_USE_PYLONG_INTERNALS 1 #endif -#if PY_VERSION_HEX < 0x02060000 - #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt) - #define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) - #define Py_SIZE(ob) (((PyVarObject*)(ob))->ob_size) - #define PyVarObject_HEAD_INIT(type, size) \ - PyObject_HEAD_INIT(type) size, - #define PyType_Modified(t) - typedef struct { - void *buf; - PyObject *obj; - Py_ssize_t len; - Py_ssize_t itemsize; - int readonly; - int ndim; - char *format; - Py_ssize_t *shape; - Py_ssize_t *strides; - Py_ssize_t *suboffsets; - void *internal; - } Py_buffer; - #define PyBUF_SIMPLE 0 - #define PyBUF_WRITABLE 0x0001 - #define PyBUF_FORMAT 0x0004 - #define PyBUF_ND 0x0008 - #define PyBUF_STRIDES (0x0010 | PyBUF_ND) - #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES) - #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES) - #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES) - #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES) - #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE) - #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE) - typedef int (*getbufferproc)(PyObject *, Py_buffer *, int); - typedef void (*releasebufferproc)(PyObject *, Py_buffer *); +#if CYTHON_USE_PYLONG_INTERNALS + #include "longintrepr.h" + #undef SHIFT + #undef BASE + #undef MASK #endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) + #define Py_OptimizeFlag 0 +#endif +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \ - PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) + #define __Pyx_DefaultClassType PyClass_Type #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \ + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) + #define __Pyx_DefaultClassType PyType_Type #endif -#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6 - #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict") -#endif -#if PY_MAJOR_VERSION >= 3 +#ifndef Py_TPFLAGS_CHECKTYPES #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0 #endif -#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3) +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif -#if PY_VERSION_HEX < 0x02060000 - #define Py_TPFLAGS_HAVE_VERSION_TAG 0 +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ? \ + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #else #define CYTHON_PEP393_ENABLED 0 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_READ(k, d, i) ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type @@ -152,35 +138,12 @@ #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #endif -#if PY_VERSION_HEX < 0x02060000 - #define PyBytesObject PyStringObject - #define PyBytes_Type PyString_Type - #define PyBytes_Check PyString_Check - #define PyBytes_CheckExact PyString_CheckExact - #define PyBytes_FromString PyString_FromString - #define PyBytes_FromStringAndSize PyString_FromStringAndSize - #define PyBytes_FromFormat PyString_FromFormat - #define PyBytes_DecodeEscape PyString_DecodeEscape - #define PyBytes_AsString PyString_AsString - #define PyBytes_AsStringAndSize PyString_AsStringAndSize - #define PyBytes_Size PyString_Size - #define PyBytes_AS_STRING PyString_AS_STRING - #define PyBytes_GET_SIZE PyString_GET_SIZE - #define PyBytes_Repr PyString_Repr - #define PyBytes_Concat PyString_Concat - #define PyBytes_ConcatAndDel PyString_ConcatAndDel -#endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) #else - #define __Pyx_PyBaseString_Check(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj) || \ - PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (Py_TYPE(obj) == &PyBaseString_Type) -#endif -#if PY_VERSION_HEX < 0x02060000 - #define PySet_Check(obj) PyObject_TypeCheck(obj, &PySet_Type) - #define PyFrozenSet_Check(obj) PyObject_TypeCheck(obj, &PyFrozenSet_Type) + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) @@ -201,11 +164,17 @@ #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif -#if PY_VERSION_HEX < 0x03020000 +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t PyInt_AsLong @@ -213,43 +182,37 @@ #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t #endif -#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300) - #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b) - #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value) - #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b) -#else - #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \ - (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \ - (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \ - (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0))) - #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \ - (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \ - (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \ - (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1))) - #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \ - (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \ - (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \ - (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1))) -#endif #if PY_MAJOR_VERSION >= 3 - #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) -#endif -#if PY_VERSION_HEX < 0x02050000 - #define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),((char *)(n))) - #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a)) - #define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),((char *)(n))) + #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) #else - #define __Pyx_GetAttrString(o,n) PyObject_GetAttrString((o),(n)) - #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a)) - #define __Pyx_DelAttrString(o,n) PyObject_DelAttrString((o),(n)) + #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif -#if PY_VERSION_HEX < 0x02050000 - #define __Pyx_NAMESTR(n) ((char *)(n)) - #define __Pyx_DOCSTR(n) ((char *)(n)) +#if PY_VERSION_HEX >= 0x030500B1 +#define __Pyx_PyAsyncMethodsStruct PyAsyncMethods +#define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) +#elif CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; +} __Pyx_PyAsyncMethodsStruct; +#define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #else - #define __Pyx_NAMESTR(n) (n) - #define __Pyx_DOCSTR(n) (n) +#define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif #endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) + #ifndef CYTHON_INLINE #if defined(__GNUC__) #define CYTHON_INLINE __inline__ @@ -261,19 +224,31 @@ #define CYTHON_INLINE #endif #endif + +#if defined(WIN32) || defined(MS_WINDOWS) + #define _USE_MATH_DEFINES +#endif +#include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { - /* Initialize NaN. The sign is irrelevant, an exponent with all bits 1 and - a nonzero mantissa means NaN. If the first bit in the mantissa is 1, it is - a quiet NaN. */ float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_ERR(f_index, lineno, Ln_error) \ +{ \ + __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ +} #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) @@ -291,10 +266,6 @@ static CYTHON_INLINE float __PYX_NAN() { #endif #endif -#if defined(WIN32) || defined(MS_WINDOWS) -#define _USE_MATH_DEFINES -#endif -#include #define __PYX_HAVE__cocoex__interface #define __PYX_HAVE_API__cocoex__interface #include "string.h" @@ -324,19 +295,56 @@ static CYTHON_INLINE float __PYX_NAN() { # define CYTHON_UNUSED # endif #endif -typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/ +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 1 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 #define __PYX_DEFAULT_STRING_ENCODING "ascii" #define __Pyx_PyObject_FromString __Pyx_PyStr_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyStr_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) && defined (_M_X64) + #define __Pyx_sst_abs(value) _abs64(value) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char*); +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize @@ -344,17 +352,19 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char*); #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif +#define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromUString(s) __Pyx_PyObject_FromString((char*)s) -#define __Pyx_PyBytes_FromUString(s) __Pyx_PyBytes_FromString((char*)s) -#define __Pyx_PyStr_FromUString(s) __Pyx_PyStr_FromString((char*)s) -#define __Pyx_PyUnicode_FromUString(s) __Pyx_PyUnicode_FromString((char*)s) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) #if PY_MAJOR_VERSION < 3 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { const Py_UNICODE *u_end = u; while (*u_end++) ; - return u_end - u - 1; + return (size_t)(u_end - u - 1); } #else #define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen @@ -362,34 +372,43 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None) -#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False)) +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*); #if CYTHON_COMPILING_IN_CPYTHON #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params() { - PyObject* sys = NULL; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; sys = PyImport_ImportModule("sys"); - if (sys == NULL) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - if (default_encoding == NULL) goto bad; - if (strcmp(PyBytes_AsString(default_encoding), "ascii") == 0) { + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { - const char* default_encoding_c = PyBytes_AS_STRING(default_encoding); char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { @@ -397,23 +416,21 @@ static int __Pyx_init_sys_getdefaultencoding_params() { } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (ascii_chars_u == NULL) goto bad; + if (!ascii_chars_u) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (ascii_chars_b == NULL || strncmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%s' is not a superset of ascii.", + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", default_encoding_c); goto bad; } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); } - Py_XDECREF(sys); - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); + Py_DECREF(default_encoding); return 0; bad: - Py_XDECREF(sys); Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); @@ -426,22 +443,23 @@ static int __Pyx_init_sys_getdefaultencoding_params() { #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params() { - PyObject* sys = NULL; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); - if (sys == NULL) goto bad; + if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - if (default_encoding == NULL) goto bad; - default_encoding_c = PyBytes_AS_STRING(default_encoding); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(sys); Py_DECREF(default_encoding); return 0; bad: - Py_XDECREF(sys); Py_XDECREF(default_encoding); return -1; } @@ -449,16 +467,11 @@ static int __Pyx_init_sys_getdefaultencoding_params() { #endif -#ifdef __GNUC__ - /* Test for GCC > 2.95 */ - #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) - #else /* __GNUC__ > 2 ... */ - #define likely(x) (x) - #define unlikely(x) (x) - #endif /* __GNUC__ > 2 ... */ -#else /* __GNUC__ */ +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ @@ -468,11 +481,13 @@ static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; +static PyObject *__pyx_empty_unicode; static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm= __FILE__; static const char *__pyx_filename; +/* None.proto */ #if !defined(CYTHON_CCOMPLEX) #if defined(__cplusplus) #define CYTHON_CCOMPLEX 1 @@ -496,20 +511,21 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { - "interface.pyx", - "numpy.pxd", + "cython/interface.pyx", + "__init__.pxd", "type.pxd", }; +/* BufferFormatStructs.proto */ #define IS_UNSIGNED(type) (((type) -1) > 0) struct __Pyx_StructField_; #define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0) typedef struct { - const char* name; /* for error messages only */ + const char* name; struct __Pyx_StructField_* fields; - size_t size; /* sizeof(type) */ - size_t arraysize[8]; /* length of array in each dimension */ + size_t size; + size_t arraysize[8]; int ndim; - char typegroup; /* _R_eal, _C_omplex, Signed _I_nt, _U_nsigned int, _S_truct, _P_ointer, _O_bject, c_H_ar */ + char typegroup; char is_unsigned; int flags; } __Pyx_TypeInfo; @@ -536,7 +552,7 @@ typedef struct { } __Pyx_BufFmt_Context; -/* "numpy.pxd":723 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":725 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -545,7 +561,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "numpy.pxd":724 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":726 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -554,7 +570,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "numpy.pxd":725 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":727 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -563,7 +579,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "numpy.pxd":726 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":728 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -572,7 +588,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "numpy.pxd":730 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":732 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -581,7 +597,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "numpy.pxd":731 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":733 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -590,7 +606,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "numpy.pxd":732 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":734 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -599,7 +615,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "numpy.pxd":733 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":735 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -608,7 +624,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "numpy.pxd":737 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":739 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -617,7 +633,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "numpy.pxd":738 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":740 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -626,7 +642,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "numpy.pxd":747 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":749 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -635,7 +651,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "numpy.pxd":748 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":750 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -644,7 +660,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "numpy.pxd":749 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -653,7 +669,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "numpy.pxd":751 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -662,7 +678,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "numpy.pxd":752 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":754 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -671,7 +687,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "numpy.pxd":753 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -680,7 +696,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "numpy.pxd":755 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":757 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -689,7 +705,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "numpy.pxd":756 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":758 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -698,7 +714,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "numpy.pxd":758 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -707,7 +723,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "numpy.pxd":759 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":761 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -716,7 +732,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "numpy.pxd":760 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -724,6 +740,7 @@ typedef npy_double __pyx_t_5numpy_double_t; * ctypedef npy_cfloat cfloat_t */ typedef npy_longdouble __pyx_t_5numpy_longdouble_t; +/* None.proto */ #if CYTHON_CCOMPLEX #ifdef __cplusplus typedef ::std::complex< float > __pyx_t_float_complex; @@ -734,6 +751,7 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t; typedef struct { float real, imag; } __pyx_t_float_complex; #endif +/* None.proto */ #if CYTHON_CCOMPLEX #ifdef __cplusplus typedef ::std::complex< double > __pyx_t_double_complex; @@ -746,12 +764,12 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t; /*--- Type declarations ---*/ +struct __pyx_obj_6cocoex_9interface_Suite; struct __pyx_obj_6cocoex_9interface_Observer; struct __pyx_obj_6cocoex_9interface_Problem; struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__; -struct __pyx_obj_6cocoex_9interface_Suite; -/* "numpy.pxd":762 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -760,7 +778,7 @@ struct __pyx_obj_6cocoex_9interface_Suite; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "numpy.pxd":763 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":765 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -769,7 +787,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "numpy.pxd":764 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -778,7 +796,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "numpy.pxd":766 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -814,6 +832,32 @@ struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize { PyObject *free; }; +/* "cython/interface.pyx":74 + * cdef coco_observer_t* _current_observer + * + * cdef class Suite: # <<<<<<<<<<<<<< + * """Suite of benchmark problems. + * + */ +struct __pyx_obj_6cocoex_9interface_Suite { + PyObject_HEAD + struct __pyx_vtabstruct_6cocoex_9interface_Suite *__pyx_vtab; + coco_suite_t *suite; + coco_problem_t *_current_problem; + PyObject *_name; + PyObject *_instance; + PyObject *_options; + PyObject *current_problem_; + PyObject *_current_index; + PyObject *_ids; + PyObject *_indices; + PyObject *_names; + PyObject *_dimensions; + PyObject *_number_of_objectives; + PyObject *initialized; +}; + + /* "cython/interface.pyx":528 * s is self or s.free() * @@ -875,6 +919,7 @@ struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ { }; + /* "cython/interface.pyx":74 * cdef coco_observer_t* _current_observer * @@ -882,25 +927,6 @@ struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ { * """Suite of benchmark problems. * */ -struct __pyx_obj_6cocoex_9interface_Suite { - PyObject_HEAD - struct __pyx_vtabstruct_6cocoex_9interface_Suite *__pyx_vtab; - coco_suite_t *suite; - coco_problem_t *_current_problem; - PyObject *_name; - PyObject *_instance; - PyObject *_options; - PyObject *current_problem_; - PyObject *_current_index; - PyObject *_ids; - PyObject *_indices; - PyObject *_names; - PyObject *_dimensions; - PyObject *_number_of_objectives; - PyObject *initialized; -}; - - struct __pyx_vtabstruct_6cocoex_9interface_Suite { PyObject *(*_initialize)(struct __pyx_obj_6cocoex_9interface_Suite *); @@ -920,6 +946,9 @@ struct __pyx_vtabstruct_6cocoex_9interface_Problem { PyObject *(*_initialize)(struct __pyx_obj_6cocoex_9interface_Problem *, coco_problem_t *, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args); }; static struct __pyx_vtabstruct_6cocoex_9interface_Problem *__pyx_vtabptr_6cocoex_9interface_Problem; + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif @@ -933,22 +962,22 @@ static struct __pyx_vtabstruct_6cocoex_9interface_Problem *__pyx_vtabptr_6cocoex void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/ + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil) \ - if (acquire_gil) { \ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \ - PyGILState_Release(__pyx_gilstate_save); \ - } else { \ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \ + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ } #else - #define __Pyx_RefNannySetupContext(name, acquire_gil) \ + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) #endif - #define __Pyx_RefNannyFinishContext() \ + #define __Pyx_RefNannyFinishContext()\ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) @@ -970,10 +999,19 @@ static struct __pyx_vtabstruct_6cocoex_9interface_Problem *__pyx_vtabptr_6cocoex #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) -#endif /* CYTHON_REFNANNY */ +#endif +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) +/* PyObjectGetAttrStr.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); @@ -989,24 +1027,74 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif -static PyObject *__Pyx_GetBuiltinName(PyObject *name); /*proto*/ +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET(); +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#endif -static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ -static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ +/* PyErrFetchRestore.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/ +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); +/* RaiseArgTupleInvalid.proto */ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/ + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ + const char* function_name); -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/ +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \ - const char* function_name); /*proto*/ +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PyObjectCallNoArg.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); +#else +#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) +#endif -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /*proto*/ +/* GetModuleGlobalName.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); +/* ListCompAppend.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; @@ -1023,13 +1111,32 @@ static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { #define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) #endif -static CYTHON_INLINE int __Pyx_PySequence_Contains(PyObject* item, PyObject* seq, int eq) { +/* PySequenceContains.proto */ +static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { int result = PySequence_Contains(seq, item); return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); } -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ +/* SaveResetException.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* GetException.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif +/* ListAppend.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; @@ -1046,123 +1153,167 @@ static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { #define __Pyx_PyList_Append(L,x) PyList_Append(L,x) #endif -static PyObject* __Pyx_PyObject_CallMethodTuple(PyObject* obj, PyObject* method_name, PyObject* args) { - PyObject *method, *result = NULL; - if (unlikely(!args)) return NULL; - method = __Pyx_PyObject_GetAttrStr(obj, method_name); - if (unlikely(!method)) goto bad; - result = PyObject_Call(method, args, NULL); - Py_DECREF(method); -bad: - Py_DECREF(args); - return result; -} -#define __Pyx_PyObject_CallMethod3(obj, name, arg1, arg2, arg3) \ - __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(3, arg1, arg2, arg3)) -#define __Pyx_PyObject_CallMethod2(obj, name, arg1, arg2) \ - __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(2, arg1, arg2)) -#define __Pyx_PyObject_CallMethod1(obj, name, arg1) \ - __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(1, arg1)) -#define __Pyx_PyObject_CallMethod0(obj, name) \ - __Pyx_PyObject_CallMethodTuple(obj, name, (Py_INCREF(__pyx_empty_tuple), __pyx_empty_tuple)) - -static CYTHON_INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x); /*proto*/ - -static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/ - -#define __Pyx_GetItemInt(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ - (((size) <= sizeof(Py_ssize_t)) ? \ - __Pyx_GetItemInt_Fast(o, i, is_list, wraparound, boundscheck) : \ - __Pyx_GetItemInt_Generic(o, to_py_func(i))) -#define __Pyx_GetItemInt_List(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ - (((size) <= sizeof(Py_ssize_t)) ? \ - __Pyx_GetItemInt_List_Fast(o, i, wraparound, boundscheck) : \ - __Pyx_GetItemInt_Generic(o, to_py_func(i))) +/* PyObjectCallMethod1.proto */ +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); + +/* append.proto */ +static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x); + +/* PyIntBinop.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace); +#else +#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\ + (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) +#endif + +/* KeywordStringCheck.proto */ +static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ - (((size) <= sizeof(Py_ssize_t)) ? \ - __Pyx_GetItemInt_Tuple_Fast(o, i, wraparound, boundscheck) : \ - __Pyx_GetItemInt_Generic(o, to_py_func(i))) +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, int wraparound, int boundscheck); -#if PY_VERSION_HEX < 0x02050000 -#ifndef PyAnySet_CheckExact -#define PyAnySet_CheckExact(ob) \ - ((ob)->ob_type == &PySet_Type || \ - (ob)->ob_type == &PyFrozenSet_Type) -#define PySet_New(iterable) \ - PyObject_CallFunctionObjArgs((PyObject *)&PySet_Type, (iterable), NULL) -#define Pyx_PyFrozenSet_New(iterable) \ - PyObject_CallFunctionObjArgs((PyObject *)&PyFrozenSet_Type, (iterable), NULL) -#define PySet_Size(anyset) \ - PyObject_Size((anyset)) -#define PySet_Contains(anyset, key) \ - PySequence_Contains((anyset), (key)) -#define PySet_Pop(set) \ - PyObject_CallMethod(set, (char *)"pop", NULL) -static CYTHON_INLINE int PySet_Clear(PyObject *set) { - PyObject *ret = PyObject_CallMethod(set, (char *)"clear", NULL); - if (!ret) return -1; - Py_DECREF(ret); return 0; -} -static CYTHON_INLINE int PySet_Discard(PyObject *set, PyObject *key) { - PyObject *ret = PyObject_CallMethod(set, (char *)"discard", (char *)"O", key); - if (!ret) return -1; - Py_DECREF(ret); return 0; -} -static CYTHON_INLINE int PySet_Add(PyObject *set, PyObject *key) { - PyObject *ret = PyObject_CallMethod(set, (char *)"add", (char *)"O", key); - if (!ret) return -1; - Py_DECREF(ret); return 0; -} -#endif /* PyAnySet_CheckExact (<= Py2.4) */ -#endif /* < Py2.5 */ - -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/ - -#define __Pyx_SetItemInt(o, i, v, size, to_py_func, is_list, wraparound, boundscheck) \ - (((size) <= sizeof(Py_ssize_t)) ? \ - __Pyx_SetItemInt_Fast(o, i, v, is_list, wraparound, boundscheck) : \ - __Pyx_SetItemInt_Generic(o, to_py_func(i), v)) +/* PyErrExceptionMatches.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* SwapException.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* ExtTypeTest.proto */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); + +/* SetItemInt.proto */ +#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\ + __Pyx_SetItemInt_Generic(o, to_py_func(i), v))) static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v); static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, int wraparound, int boundscheck); +/* BufferFormatCheck.proto */ static CYTHON_INLINE int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); +static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts); +static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, + __Pyx_BufFmt_StackElem* stack, + __Pyx_TypeInfo* type); // PROTO + +/* BufferFallbackError.proto */ +static void __Pyx_RaiseBufferFallbackError(void); + +/* WriteUnraisableException.proto */ +static void __Pyx_WriteUnraisable(const char *name, int clineno, + int lineno, const char *filename, + int full_traceback, int nogil); -static void __Pyx_RaiseBufferFallbackError(void); /*proto*/ +/* PyIntBinop.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace); +#else +#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\ + PyObject_RichCompare(op1, op2, Py_EQ) + #endif +/* SliceObject.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, PyObject** py_start, PyObject** py_stop, PyObject** py_slice, int has_cstart, int has_cstop, int wraparound); +/* DictGetItem.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) + PyErr_SetObject(PyExc_KeyError, args); + Py_XDECREF(args); + } + return NULL; + } + Py_INCREF(value); + return value; +} +#else + #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#endif + +/* RaiseTooManyValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); +/* RaiseNeedMoreValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); +/* RaiseNoneIterError.proto */ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); -static CYTHON_INLINE int __Pyx_IterFinish(void); /*proto*/ +/* IncludeStringH.proto */ +#include -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /*proto*/ +/* SetVTable.proto */ +static int __Pyx_SetVtable(PyObject *dict, void *vtable); -#include +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /*proto*/ +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name); /*proto*/ +/* CodeObjectCache.proto */ +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); -static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ -static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); +/* BufferStructDeclare.proto */ typedef struct { Py_ssize_t shape, strides, suboffsets; } __Pyx_Buf_DimInfo; @@ -1185,11 +1336,17 @@ typedef struct { #endif +/* None.proto */ static Py_ssize_t __Pyx_zeros[] = {0, 0, 0, 0, 0, 0, 0, 0}; static Py_ssize_t __Pyx_minusones[] = {-1, -1, -1, -1, -1, -1, -1, -1}; -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/ +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); + +/* None.proto */ #if CYTHON_CCOMPLEX #ifdef __cplusplus #define __Pyx_CREAL(z) ((z).real()) @@ -1202,7 +1359,7 @@ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); / #define __Pyx_CREAL(z) ((z).real) #define __Pyx_CIMAG(z) ((z).imag) #endif -#if defined(_WIN32) && defined(__cplusplus) && CYTHON_CCOMPLEX +#if defined(__cplusplus) && CYTHON_CCOMPLEX && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103) #define __Pyx_SET_CREAL(z,x) ((z).real(x)) #define __Pyx_SET_CIMAG(z,y) ((z).imag(y)) #else @@ -1210,8 +1367,10 @@ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); / #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y) #endif +/* None.proto */ static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float); +/* None.proto */ #if CYTHON_CCOMPLEX #define __Pyx_c_eqf(a, b) ((a)==(b)) #define __Pyx_c_sumf(a, b) ((a)+(b)) @@ -1249,8 +1408,10 @@ static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(floa #endif #endif +/* None.proto */ static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double); +/* None.proto */ #if CYTHON_CCOMPLEX #define __Pyx_c_eq(a, b) ((a)==(b)) #define __Pyx_c_sum(a, b) ((a)+(b)) @@ -1288,47 +1449,26 @@ static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(do #endif #endif -static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *); - -static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *); - -static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *); - -static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *); - -static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *); - -static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *); - -static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *); - -static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *); - -static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *); - -static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *); - -static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *); - -static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *); +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value); -static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *); +/* CIntFromPy.proto */ +static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *); -static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *); +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); -static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *); +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); -static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *); +/* FetchCommonType.proto */ +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ - -#define __Pyx_Generator_USED -#include -#include -typedef PyObject *(*__pyx_generator_body_t)(PyObject *, PyObject *); +/* CoroutineBase.proto */ +typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyObject *); typedef struct { PyObject_HEAD - __pyx_generator_body_t body; + __pyx_coroutine_body_t body; PyObject *closure; PyObject *exc_type; PyObject *exc_value; @@ -1336,23 +1476,41 @@ typedef struct { PyObject *gi_weakreflist; PyObject *classobj; PyObject *yieldfrom; + PyObject *gi_name; + PyObject *gi_qualname; + PyObject *gi_modulename; int resume_label; - char is_running; // using T_BOOL for property below requires char value -} __pyx_GeneratorObject; -static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body, - PyObject *closure); -static int __pyx_Generator_init(void); -static int __Pyx_Generator_clear(PyObject* self); + char is_running; +} __pyx_CoroutineObject; +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static int __Pyx_Coroutine_clear(PyObject *self); #if 1 || PY_VERSION_HEX < 0x030300B0 static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue); #else #define __Pyx_PyGen_FetchStopIterationValue(pvalue) PyGen_FetchStopIterationValue(pvalue) #endif -static int __Pyx_check_binary_version(void); +/* PatchModuleWithCoroutine.proto */ +static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); + +/* PatchGeneratorABC.proto */ +static int __Pyx_patch_abc(void); + +/* Generator.proto */ +#define __Pyx_Generator_USED +static PyTypeObject *__pyx_GeneratorType = 0; +#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType) +#define __Pyx_Generator_New(body, closure, name, qualname, module_name)\ + __Pyx__Coroutine_New(__pyx_GeneratorType, body, closure, name, qualname, module_name) +static PyObject *__Pyx_Generator_Next(PyObject *self); +static int __pyx_Generator_init(void); -static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/ +/* CheckBinaryVersion.proto */ +static int __Pyx_check_binary_version(void); +/* PyIdentifierFromString.proto */ #if !defined(__Pyx_PyIdentifier_FromString) #if PY_MAJOR_VERSION < 3 #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) @@ -1361,45 +1519,35 @@ static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/ #endif #endif -static PyObject *__Pyx_ImportModule(const char *name); /*proto*/ - -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); /*proto*/ - -typedef struct { - int code_line; - PyCodeObject* code_object; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); +/* ModuleImport.proto */ +static PyObject *__Pyx_ImportModule(const char *name); -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); /*proto*/ +/* TypeImport.proto */ +static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); +static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto*/ +static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, coco_problem_t *__pyx_v_problem, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args); /* proto*/ /* Module declarations from 'cpython.buffer' */ -/* Module declarations from 'cpython.ref' */ - /* Module declarations from 'libc.string' */ /* Module declarations from 'libc.stdio' */ -/* Module declarations from 'cpython.object' */ - /* Module declarations from '__builtin__' */ /* Module declarations from 'cpython.type' */ static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; +/* Module declarations from 'cpython' */ + +/* Module declarations from 'cpython.object' */ + +/* Module declarations from 'cpython.ref' */ + /* Module declarations from 'libc.stdlib' */ /* Module declarations from 'numpy' */ @@ -1425,19 +1573,295 @@ static __Pyx_TypeInfo __Pyx_TypeInfo_double = { "double", NULL, sizeof(double), int __pyx_module_is_main_cocoex__interface = 0; /* Implementation of 'cocoex.interface' */ -static PyObject *__pyx_builtin_property; static PyObject *__pyx_builtin_TypeError; static PyObject *__pyx_builtin_ValueError; static PyObject *__pyx_builtin_NotImplementedError; static PyObject *__pyx_builtin_enumerate; static PyObject *__pyx_builtin_all; static PyObject *__pyx_builtin_print; -static PyObject *__pyx_builtin_sorted; static PyObject *__pyx_builtin_min; static PyObject *__pyx_builtin_max; static PyObject *__pyx_builtin_StopIteration; static PyObject *__pyx_builtin_RuntimeError; static PyObject *__pyx_builtin_range; +static const char __pyx_k_C[] = "C"; +static const char __pyx_k_d[] = "(%d)"; +static const char __pyx_k_s[] = "s"; +static const char __pyx_k_u[] = "u'"; +static const char __pyx_k_x[] = "x"; +static const char __pyx_k_y[] = "y"; +static const char __pyx_k__2[] = ""; +static const char __pyx_k__8[] = ","; +static const char __pyx_k__9[] = " "; +static const char __pyx_k_id[] = "id"; +static const char __pyx_k_np[] = "np"; +static const char __pyx_k__11[] = "'"; +static const char __pyx_k__12[] = "\""; +static const char __pyx_k__13[] = "{"; +static const char __pyx_k__14[] = "}"; +static const char __pyx_k_all[] = "all"; +static const char __pyx_k_d_d[] = "%d=%d"; +static const char __pyx_k_inf[] = "inf"; +static const char __pyx_k_max[] = "max"; +static const char __pyx_k_min[] = "min"; +static const char __pyx_k_sys[] = "sys"; +static const char __pyx_k_u_2[] = "u\""; +static const char __pyx_k_args[] = "args"; +static const char __pyx_k_bbob[] = "bbob"; +static const char __pyx_k_copy[] = "copy"; +static const char __pyx_k_find[] = "find"; +static const char __pyx_k_free[] = "free"; +static const char __pyx_k_iter[] = "__iter__"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_name[] = "name"; +static const char __pyx_k_ones[] = "ones"; +static const char __pyx_k_send[] = "send"; +static const char __pyx_k_size[] = "size"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_array[] = "array"; +static const char __pyx_k_ascii[] = "ascii"; +static const char __pyx_k_class[] = "__class__"; +static const char __pyx_k_close[] = "close"; +static const char __pyx_k_dtype[] = "dtype"; +static const char __pyx_k_force[] = "force"; +static const char __pyx_k_index[] = "index"; +static const char __pyx_k_level[] = "level"; +static const char __pyx_k_numpy[] = "numpy"; +static const char __pyx_k_order[] = "order"; +static const char __pyx_k_print[] = "print"; +static const char __pyx_k_range[] = "range"; +static const char __pyx_k_reset[] = "reset"; +static const char __pyx_k_split[] = "split"; +static const char __pyx_k_throw[] = "throw"; +static const char __pyx_k_zeros[] = "zeros"; +static const char __pyx_k_append[] = "append"; +static const char __pyx_k_double[] = "double"; +static const char __pyx_k_encode[] = "encode"; +static const char __pyx_k_format[] = "format"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_s_id_r[] = "<%s(), id=%r>"; +static const char __pyx_k_single[] = "single"; +static const char __pyx_k_dealloc[] = "__dealloc__"; +static const char __pyx_k_indices[] = "indices"; +static const char __pyx_k_level_2[] = "_level"; +static const char __pyx_k_options[] = "options"; +static const char __pyx_k_replace[] = "replace"; +static const char __pyx_k_verbose[] = "verbose"; +static const char __pyx_k_warning[] = "warning"; +static const char __pyx_k_function[] = "function"; +static const char __pyx_k_instance[] = "instance"; +static const char __pyx_k_observer[] = "observer"; +static const char __pyx_k_TypeError[] = "TypeError"; +static const char __pyx_k_dimension[] = "dimension"; +static const char __pyx_k_enumerate[] = "enumerate"; +static const char __pyx_k_log_level[] = "log_level"; +static const char __pyx_k_traceback[] = "traceback"; +static const char __pyx_k_ValueError[] = "ValueError"; +static const char __pyx_k_bbob_biobj[] = "bbob-biobj"; +static const char __pyx_k_dimensions[] = "dimensions"; +static const char __pyx_k_evaluation[] = "evaluation"; +static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; +static const char __pyx_k_suite_name[] = "suite_name"; +static const char __pyx_k_Suite_r_r_r[] = "Suite(%r, %r, %r)"; +static const char __pyx_k_deactivated[] = "deactivated"; +static const char __pyx_k_get_problem[] = "get_problem"; +static const char __pyx_k_initialized[] = "initialized"; +static const char __pyx_k_s_objective[] = "%s-objective"; +static const char __pyx_k_RuntimeError[] = "RuntimeError"; +static const char __pyx_k_Suite___iter[] = "Suite.__iter__"; +static const char __pyx_k_id_s_index_d[] = " id=%s, index=%d"; +static const char __pyx_k_next_problem[] = "next_problem"; +static const char __pyx_k_observe_with[] = "observe_with"; +static const char __pyx_k_StopIteration[] = "StopIteration"; +static const char __pyx_k_s_s_problem_s[] = "%s %s problem (%s)"; +static const char __pyx_k_suite_options[] = "suite_options"; +static const char __pyx_k_exception_type[] = "exception_type"; +static const char __pyx_k_suite_instance[] = "suite_instance"; +static const char __pyx_k_bbob_largescale[] = "bbob-largescale"; +static const char __pyx_k_exception_value[] = "exception_value"; +static const char __pyx_k_bbob_constrained[] = "bbob-constrained"; +static const char __pyx_k_cocoex_interface[] = "cocoex.interface"; +static const char __pyx_k_cocoex_exceptions[] = "cocoex.exceptions"; +static const char __pyx_k_known_suite_names[] = "known_suite_names"; +static const char __pyx_k_Suite_ids_line_384[] = "Suite.ids (line 384)"; +static const char __pyx_k_NotImplementedError[] = "NotImplementedError"; +static const char __pyx_k_known_suite_names_2[] = "_known_suite_names"; +static const char __pyx_k_number_of_variables[] = "number_of_variables"; +static const char __pyx_k_NoSuchSuiteException[] = "NoSuchSuiteException"; +static const char __pyx_k_final_target_fvalue1[] = "final_target_fvalue1"; +static const char __pyx_k_number_of_objectives[] = "number_of_objectives"; +static const char __pyx_k_expect_a_string_got_s[] = "expect a string, got %s"; +static const char __pyx_k_NoSuchProblemException[] = "NoSuchProblemException"; +static const char __pyx_k_InvalidProblemException[] = "InvalidProblemException"; +static const char __pyx_k_finalized_invalid_problem[] = "finalized/invalid problem"; +static const char __pyx_k_No_suite_with_name_s_found[] = "No suite with name '%s' found"; +static const char __pyx_k_Suite_get_problem_line_281[] = "Suite.get_problem (line 281)"; +static const char __pyx_k_Problem_already_initialized[] = "Problem already initialized"; +static const char __pyx_k_finalized_invalid_problem_2[] = ""; +static const char __pyx_k_function_dimension_instance[] = "function: {}, dimension: {}, instance: {}"; +static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous"; +static const char __pyx_k_update_current_observer_global[] = "_update_current_observer_global"; +static const char __pyx_k_Suite_s_s_s_with_d_problem_s_in[] = "Suite(\"%s\", \"%s\", \"%s\") with %d problem%s in dimension%s %s"; +static const char __pyx_k_Users_hansen_git_coco_code_expe[] = "/Users/hansen/git/coco/code-experiments/build/python/cython/interface.pyx"; +static const char __pyx_k_find_problem_ids_has_been_renam[] = "`find_problem_ids()` has been renamed to `ids()`"; +static const char __pyx_k_get_problem_self_id_observer_No[] = "`get_problem(self, id, observer=None)` returns a `Problem` instance,\n by default unobserved, using `id: str` or index (where `id: int`) to\n identify the desired problem.\n\n All values between zero and `len(self) - 1` are valid index values::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> for index in range(len(suite)):\n ... problem = suite.get_problem(index)\n ... # work work work using problem\n ... problem.free()\n\n A shortcut for `suite.get_problem(index)` is `suite[index]`, they are\n synonym.\n\n Details:\n - Here an `index` takes values between 0 and `len(self) - 1` and can in\n principle be different from the problem index in the benchmark suite.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of `get_problem`. Otherwise Python\n might just silently die, which is e.g. a known issue of the \"bbob\"\n observer.\n\n See also `ids`.\n "; +static const char __pyx_k_has_never_been_tested_incomment[] = "has never been tested, incomment this to start testing"; +static const char __pyx_k_ids_id_snippets_get_problem_Fal[] = "`ids(*id_snippets, get_problem=False, verbose=False)`\n return all problem IDs that contain all of the `id_snippets`.\n\n An ID can be used for indexing, that is, when calling the method\n `get_problem(id)`.\n\n If `get_problem is True`, the problem for the first matching ID is\n returned.\n\n >>> import cocoex as ex\n >>> s = ex.Suite(\"bbob\", \"\", \"\")\n >>> s.ids(\"f001\", \"d10\", \"i01\")\n ['bbob_f001_i01_d10']\n\n We can sweep through all instances of the ellipsoidal function f10\n in 20-D of the BBOB suite like this::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> ids = suite.ids(\"f010\", \"d20\")\n >>> used_indices = []\n >>> for p in suite:\n ... if p.id in ids:\n ... # work work work with problem `p`\n ... used_indices.append(p.index)\n >>> print(used_indices)\n [1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589]\n\n A desired problem can also be filtered out during creation::\n\n >>> import cocoex as ex\n >>> f9 = ex.Suite(\"bbob\", \"\",\n ... \"function_indices:9 dimensions:20 instance_indices:1-5\")[0]\n >>> print(f9.id)\n bbob_f009_i01_d20\n\n "; +static const char __pyx_k_not_match_the_problem_dimension[] = "not match the problem dimension `number_of_variables==%d`."; +static const char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)"; +static const char __pyx_k_Dimension_np_size_x_d_of_input_x[] = "Dimension, `np.size(x)==%d`, of input `x` does "; +static const char __pyx_k_Dimension_np_size_y_d_of_input_y[] = "Dimension, `np.size(y)==%d`, of input `y` does "; +static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd"; +static const char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported"; +static const char __pyx_k_Suite_current_index___get___line[] = "Suite.current_index.__get__ (line 437)"; +static const char __pyx_k_Suite_get_problem_by_function_di[] = "Suite.get_problem_by_function_dimension_instance (line 325)"; +static const char __pyx_k_Suite_has_been_finalized_free_ed[] = "Suite has been finalized/free'ed"; +static const char __pyx_k_Unkown_benchmark_suite_name_s_Kn[] = "Unkown benchmark suite name \"%s\".\nKnown suite names are %s.\nIf \"%s\" was not a typo, you can add the desired name to `known_suite_names`::\n\n >> import cocoex as ex\n >> ex.known_suite_names.append(b\"my_name\") # must be a byte string\n >> suite = ex.Suite(\"my_name\", \"\", \"\")\n COCO FATAL ERROR: coco_suite(): unknow problem suite\n\nThis will crash Python, if the suite \"my_name\" does in fact not exist. You might\nalso report back a missing name to https://github.com/numbbo/coco/issues\n"; +static const char __pyx_k_in_Problem__initialize_problem_p[] = "in Problem._initialize(problem,...): problem is NULL"; +static const char __pyx_k_index_in_the_enumerator_of_all_p[] = "index in the enumerator of all problems in this suite.\n\n Details: To get the index in the underlying C implementation, which\n usually matches `current_index` one-to-one, use::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> suite.current_index is None\n True\n >>> suite.next_problem().id[-17:].lower()\n 'bbob_f001_i01_d02'\n >>> suite.current_index, suite.indices[suite.current_index]\n (0, 0)\n\n "; +static const char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous"; +static const char __pyx_k_not_match_the_number_of_objectiv[] = "not match the number of objectives `number_of_objectives==%d`."; +static const char __pyx_k_returns_a_Problem_instance_by_de[] = "returns a `Problem` instance, by default unobserved, using function,\n dimension and instance to identify the desired problem.\n\n If a suite contains multiple problems with the same function, dimension\n and instance, the first corresponding problem is returned.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> problem = suite.get_problem_by_function_dimension_instance(1, 2, 3)\n >>> # work work work using problem\n >>> problem.free()\n\n Details:\n - Function, dimension and instance are integer values from 1 on.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of\n `get_problem_by_function_dimension_instance`. Otherwise Python might\n just silently die, which is e.g. a known issue of the \"bbob\" observer.\n "; +static const char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short."; +static PyObject *__pyx_n_u_C; +static PyObject *__pyx_kp_u_Dimension_np_size_x_d_of_input_x; +static PyObject *__pyx_kp_u_Dimension_np_size_y_d_of_input_y; +static PyObject *__pyx_kp_u_Format_string_allocated_too_shor; +static PyObject *__pyx_kp_u_Format_string_allocated_too_shor_2; +static PyObject *__pyx_n_s_InvalidProblemException; +static PyObject *__pyx_n_s_NoSuchProblemException; +static PyObject *__pyx_n_s_NoSuchSuiteException; +static PyObject *__pyx_kp_u_No_suite_with_name_s_found; +static PyObject *__pyx_kp_u_Non_native_byte_order_not_suppor; +static PyObject *__pyx_n_s_NotImplementedError; +static PyObject *__pyx_kp_u_Problem_already_initialized; +static PyObject *__pyx_n_s_RuntimeError; +static PyObject *__pyx_n_s_StopIteration; +static PyObject *__pyx_n_s_Suite___iter; +static PyObject *__pyx_kp_u_Suite_current_index___get___line; +static PyObject *__pyx_kp_u_Suite_get_problem_by_function_di; +static PyObject *__pyx_kp_u_Suite_get_problem_line_281; +static PyObject *__pyx_kp_u_Suite_has_been_finalized_free_ed; +static PyObject *__pyx_kp_u_Suite_ids_line_384; +static PyObject *__pyx_kp_u_Suite_r_r_r; +static PyObject *__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in; +static PyObject *__pyx_n_s_TypeError; +static PyObject *__pyx_kp_u_Unkown_benchmark_suite_name_s_Kn; +static PyObject *__pyx_kp_s_Users_hansen_git_coco_code_expe; +static PyObject *__pyx_n_s_ValueError; +static PyObject *__pyx_kp_u__11; +static PyObject *__pyx_kp_u__12; +static PyObject *__pyx_kp_u__13; +static PyObject *__pyx_kp_u__14; +static PyObject *__pyx_kp_u__2; +static PyObject *__pyx_kp_u__8; +static PyObject *__pyx_kp_u__9; +static PyObject *__pyx_n_s_all; +static PyObject *__pyx_n_s_append; +static PyObject *__pyx_n_s_args; +static PyObject *__pyx_n_s_array; +static PyObject *__pyx_n_u_ascii; +static PyObject *__pyx_n_b_bbob; +static PyObject *__pyx_kp_b_bbob_biobj; +static PyObject *__pyx_kp_b_bbob_constrained; +static PyObject *__pyx_kp_b_bbob_largescale; +static PyObject *__pyx_n_s_class; +static PyObject *__pyx_n_s_close; +static PyObject *__pyx_n_s_cocoex_exceptions; +static PyObject *__pyx_n_s_cocoex_interface; +static PyObject *__pyx_n_s_copy; +static PyObject *__pyx_kp_u_d; +static PyObject *__pyx_kp_u_d_d; +static PyObject *__pyx_n_u_deactivated; +static PyObject *__pyx_n_s_dealloc; +static PyObject *__pyx_n_s_dimension; +static PyObject *__pyx_n_s_dimensions; +static PyObject *__pyx_n_s_double; +static PyObject *__pyx_n_s_dtype; +static PyObject *__pyx_n_s_encode; +static PyObject *__pyx_n_s_enumerate; +static PyObject *__pyx_n_s_evaluation; +static PyObject *__pyx_n_s_exception_type; +static PyObject *__pyx_n_s_exception_value; +static PyObject *__pyx_kp_u_expect_a_string_got_s; +static PyObject *__pyx_n_s_final_target_fvalue1; +static PyObject *__pyx_kp_u_finalized_invalid_problem; +static PyObject *__pyx_kp_u_finalized_invalid_problem_2; +static PyObject *__pyx_n_s_find; +static PyObject *__pyx_kp_u_find_problem_ids_has_been_renam; +static PyObject *__pyx_n_s_force; +static PyObject *__pyx_n_s_format; +static PyObject *__pyx_n_s_free; +static PyObject *__pyx_n_s_function; +static PyObject *__pyx_kp_u_function_dimension_instance; +static PyObject *__pyx_n_s_get_problem; +static PyObject *__pyx_kp_u_get_problem_self_id_observer_No; +static PyObject *__pyx_kp_u_has_never_been_tested_incomment; +static PyObject *__pyx_n_s_id; +static PyObject *__pyx_kp_u_id_s_index_d; +static PyObject *__pyx_kp_u_ids_id_snippets_get_problem_Fal; +static PyObject *__pyx_n_s_import; +static PyObject *__pyx_kp_u_in_Problem__initialize_problem_p; +static PyObject *__pyx_n_s_index; +static PyObject *__pyx_kp_u_index_in_the_enumerator_of_all_p; +static PyObject *__pyx_n_s_indices; +static PyObject *__pyx_n_s_inf; +static PyObject *__pyx_n_u_initialized; +static PyObject *__pyx_n_s_instance; +static PyObject *__pyx_n_s_iter; +static PyObject *__pyx_n_s_known_suite_names; +static PyObject *__pyx_n_s_known_suite_names_2; +static PyObject *__pyx_n_s_level; +static PyObject *__pyx_n_s_level_2; +static PyObject *__pyx_n_s_log_level; +static PyObject *__pyx_n_s_main; +static PyObject *__pyx_n_s_max; +static PyObject *__pyx_n_s_min; +static PyObject *__pyx_n_s_name; +static PyObject *__pyx_kp_u_ndarray_is_not_C_contiguous; +static PyObject *__pyx_kp_u_ndarray_is_not_Fortran_contiguou; +static PyObject *__pyx_n_s_next_problem; +static PyObject *__pyx_kp_u_not_match_the_number_of_objectiv; +static PyObject *__pyx_kp_u_not_match_the_problem_dimension; +static PyObject *__pyx_n_s_np; +static PyObject *__pyx_n_s_number_of_objectives; +static PyObject *__pyx_n_s_number_of_variables; +static PyObject *__pyx_n_s_numpy; +static PyObject *__pyx_n_s_observe_with; +static PyObject *__pyx_n_s_observer; +static PyObject *__pyx_n_s_ones; +static PyObject *__pyx_n_s_options; +static PyObject *__pyx_n_s_order; +static PyObject *__pyx_n_s_print; +static PyObject *__pyx_n_s_pyx_vtable; +static PyObject *__pyx_n_s_range; +static PyObject *__pyx_n_s_replace; +static PyObject *__pyx_n_s_reset; +static PyObject *__pyx_kp_u_returns_a_Problem_instance_by_de; +static PyObject *__pyx_n_u_s; +static PyObject *__pyx_kp_u_s_id_r; +static PyObject *__pyx_kp_u_s_objective; +static PyObject *__pyx_kp_u_s_s_problem_s; +static PyObject *__pyx_n_s_send; +static PyObject *__pyx_n_u_single; +static PyObject *__pyx_n_s_size; +static PyObject *__pyx_n_s_split; +static PyObject *__pyx_n_s_suite_instance; +static PyObject *__pyx_n_s_suite_name; +static PyObject *__pyx_n_s_suite_options; +static PyObject *__pyx_n_s_sys; +static PyObject *__pyx_n_s_test; +static PyObject *__pyx_n_s_throw; +static PyObject *__pyx_n_s_traceback; +static PyObject *__pyx_kp_u_u; +static PyObject *__pyx_kp_u_u_2; +static PyObject *__pyx_kp_u_unknown_dtype_code_in_numpy_pxd; +static PyObject *__pyx_n_s_update_current_observer_global; +static PyObject *__pyx_n_s_verbose; +static PyObject *__pyx_n_u_warning; +static PyObject *__pyx_n_s_x; +static PyObject *__pyx_n_s_y; +static PyObject *__pyx_n_s_zeros; static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, PyObject *__pyx_v_suite_name, PyObject *__pyx_v_suite_instance, PyObject *__pyx_v_suite_options); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, PyObject *__pyx_v_observer); /* proto */ @@ -1448,28 +1872,28 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, PyObject *__pyx_v_get_problem, PyObject *__pyx_v_verbose, PyObject *__pyx_v_id_snippets); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20current_problem(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22current_index(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_24problem_names(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26dimensions(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_28number_of_objectives(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_30indices(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_32name(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_34instance(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_36options(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_38info(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_40__repr__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_42__str__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_44__len__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_46__iter__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_options); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer_global(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self, PyObject *__pyx_v_problem); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6name(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_8options(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_10state(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_12free(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ -static void __pyx_pf_6cocoex_9interface_8Observer_14__dealloc__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ +static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_arx); /* proto */ @@ -1477,30 +1901,30 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_observer); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_observer); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_x); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16list_of_observers(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_17list_of_observers___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18dimension(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22number_of_constraints(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24lower_bounds(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26upper_bounds(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28evaluations(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30final_target_hit(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32final_target_fvalue1(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_34best_observed_fvalue1(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36free(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_force); /* proto */ -static void __pyx_pf_6cocoex_9interface_7Problem_38__dealloc__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_x); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_42id(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_44name(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_46index(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_48suite(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_50info(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_52__str__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_54__repr__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_56__enter__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_58__exit__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20final_target_fvalue1___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14free(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_force); /* proto */ +static void __pyx_pf_6cocoex_9interface_7Problem_16__dealloc__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_x); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__repr__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__enter__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__exit__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ static int __pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds_2__set__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ static int __pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds_4__del__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ @@ -1514,363 +1938,31 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Suite(PyTypeObject *t, PyObject static PyObject *__pyx_tp_new_6cocoex_9interface_Observer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_6cocoex_9interface_Problem(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_6cocoex_9interface___pyx_scope_struct____iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static char __pyx_k_2[] = "expect a string, got %s"; -static char __pyx_k_3[] = ""; -static char __pyx_k_4[] = "NoSuchSuiteException"; -static char __pyx_k_5[] = "Unkown benchmark suite name \"%s\".\nKnown suite names are %s.\nIf \"%s\" was not a typo, you can add the desired name to `known_suite_names`::\n\n >> import cocoex as ex\n >> ex.known_suite_names.append(b\"my_name\") # must be a byte string\n >> suite = ex.Suite(\"my_name\", \"\", \"\")\n COCO FATAL ERROR: coco_suite(): unknow problem suite\n\nThis will crash Python, if the suite \"my_name\" does in fact not exist. You might\nalso report back a missing name to https://github.com/numbbo/coco/issues\n"; -static char __pyx_k_6[] = "No suite with name '%s' found"; -static char __pyx_k_8[] = "Suite has been finalized/free'ed"; -static char __pyx_k_11[] = "NoSuchProblemException"; -static char __pyx_k_13[] = "function: {}, dimension: {}, instance: {}"; -static char __pyx_k_14[] = "`find_problem_ids()` has been renamed to `ids()`"; -static char __pyx_k_18[] = " id=%s, index=%d"; -static char __pyx_k_19[] = "Suite(%r, %r, %r)"; -static char __pyx_k_20[] = "Suite(\"%s\", \"%s\", \"%s\") with %d problem%s in dimension%s %s"; -static char __pyx_k_21[] = "%d=%d"; -static char __pyx_k_22[] = ","; -static char __pyx_k_23[] = " "; -static char __pyx_k_25[] = "u'"; -static char __pyx_k_26[] = "u\""; -static char __pyx_k_27[] = "'"; -static char __pyx_k_28[] = "\""; -static char __pyx_k_29[] = "{"; -static char __pyx_k_30[] = "}"; -static char __pyx_k_34[] = "Problem already initialized"; -static char __pyx_k_36[] = "in Problem._initialize(problem,...): problem is NULL"; -static char __pyx_k_38[] = "has never been tested, incomment this to start testing"; -static char __pyx_k_41[] = "number_of_objectives"; -static char __pyx_k_42[] = "Dimension, `np.size(y)==%d`, of input `y` does "; -static char __pyx_k_43[] = "not match the number of objectives `number_of_objectives==%d`."; -static char __pyx_k_44[] = "InvalidProblemException"; -static char __pyx_k_45[] = "_update_current_observer_global"; -static char __pyx_k_46[] = "final_target_fvalue1"; -static char __pyx_k_48[] = "Dimension, `np.size(x)==%d`, of input `x` does "; -static char __pyx_k_49[] = "not match the problem dimension `number_of_variables==%d`."; -static char __pyx_k_50[] = "%s-objective"; -static char __pyx_k_51[] = "%s %s problem (%s)"; -static char __pyx_k_52[] = "(%d)"; -static char __pyx_k_53[] = "finalized/invalid problem"; -static char __pyx_k_54[] = "<%s(), id=%r>"; -static char __pyx_k_56[] = ""; -static char __pyx_k_57[] = "ndarray is not C contiguous"; -static char __pyx_k_59[] = "ndarray is not Fortran contiguous"; -static char __pyx_k_61[] = "Non-native byte order not supported"; -static char __pyx_k_63[] = "unknown dtype code in numpy.pxd (%d)"; -static char __pyx_k_64[] = "Format string allocated too short, see comment in numpy.pxd"; -static char __pyx_k_67[] = "Format string allocated too short."; -static char __pyx_k_69[] = "Number of variables this problem instance expects as input."; -static char __pyx_k_70[] = "cocoex.exceptions"; -static char __pyx_k_71[] = "bbob-biobj"; -static char __pyx_k_72[] = "bbob-largescale"; -static char __pyx_k_73[] = "bbob-constrained"; -static char __pyx_k_74[] = "number_of_constraints"; -static char __pyx_k_75[] = "best_observed_fvalue1"; -static char __pyx_k_78[] = "/Users/wassimaitelhara/svn/numbbo_github/numbbo/code-experiments/build/python/cython/interface.pyx"; -static char __pyx_k_79[] = "cocoex.interface"; -static char __pyx_k_80[] = "Suite.get_problem (line 281)"; -static char __pyx_k_81[] = "`get_problem(self, id, observer=None)` returns a `Problem` instance,\n by default unobserved, using `id: str` or index (where `id: int`) to\n identify the desired problem.\n\n All values between zero and `len(self) - 1` are valid index values::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> for index in range(len(suite)):\n ... problem = suite.get_problem(index)\n ... # work work work using problem\n ... problem.free()\n\n A shortcut for `suite.get_problem(index)` is `suite[index]`, they are\n synonym.\n\n Details:\n - Here an `index` takes values between 0 and `len(self) - 1` and can in\n principle be different from the problem index in the benchmark suite.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of `get_problem`. Otherwise Python\n might just silently die, which is e.g. a known issue of the \"bbob\"\n observer.\n\n See also `ids`.\n "; -static char __pyx_k_82[] = "Suite.get_problem_by_function_dimension_instance (line 325)"; -static char __pyx_k_83[] = "returns a `Problem` instance, by default unobserved, using function,\n dimension and instance to identify the desired problem.\n\n If a suite contains multiple problems with the same function, dimension\n and instance, the first corresponding problem is returned.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> problem = suite.get_problem_by_function_dimension_instance(1, 2, 3)\n >>> # work work work using problem\n >>> problem.free()\n\n Details:\n - Function, dimension and instance are integer values from 1 on.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of\n `get_problem_by_function_dimension_instance`. Otherwise Python might\n just silently die, which is e.g. a known issue of the \"bbob\" observer.\n "; -static char __pyx_k_84[] = "Suite.ids (line 384)"; -static char __pyx_k_85[] = "`ids(*id_snippets, get_problem=False, verbose=False)`\n return all problem IDs that contain all of the `id_snippets`.\n\n An ID can be used for indexing, that is, when calling the method\n `get_problem(id)`.\n\n If `get_problem is True`, the problem for the first matching ID is\n returned.\n\n >>> import cocoex as ex\n >>> s = ex.Suite(\"bbob\", \"\", \"\")\n >>> s.ids(\"f001\", \"d10\", \"i01\")\n ['bbob_f001_i01_d10']\n\n We can sweep through all instances of the ellipsoidal function f10\n in 20-D of the BBOB suite like this::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> ids = suite.ids(\"f010\", \"d20\")\n >>> used_indices = []\n >>> for p in suite:\n ... if p.id in ids:\n ... # work work work with problem `p`\n ... used_indices.append(p.index)\n >>> print(used_indices)\n [1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589]\n\n A desired problem can also be filtered out during creation::\n\n >>> import cocoex as ex\n >>> f9 = ex.Suite(\"bbob\", \"\",\n ... \"function_indices:9 dimensions:20 instance_indices:1-5\")[0]\n >>> print(f9.id)\n bbob_f009_i01_d20\n\n "; -static char __pyx_k_86[] = "Suite.current_index (line 437)"; -static char __pyx_k_87[] = "index in the enumerator of all problems in this suite.\n\n Details: To get the index in the underlying C implementation, which\n usually matches `current_index` one-to-one, use::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> suite.current_index is None\n True\n >>> suite.next_problem().id[-17:].lower()\n 'bbob_f001_i01_d02'\n >>> suite.current_index, suite.indices[suite.current_index]\n (0, 0)\n\n "; -static char __pyx_k__B[] = "B"; -static char __pyx_k__C[] = "C"; -static char __pyx_k__H[] = "H"; -static char __pyx_k__I[] = "I"; -static char __pyx_k__L[] = "L"; -static char __pyx_k__O[] = "O"; -static char __pyx_k__Q[] = "Q"; -static char __pyx_k__b[] = "b"; -static char __pyx_k__d[] = "d"; -static char __pyx_k__f[] = "f"; -static char __pyx_k__g[] = "g"; -static char __pyx_k__h[] = "h"; -static char __pyx_k__i[] = "i"; -static char __pyx_k__l[] = "l"; -static char __pyx_k__q[] = "q"; -static char __pyx_k__s[] = "s"; -static char __pyx_k__x[] = "x"; -static char __pyx_k__y[] = "y"; -static char __pyx_k__Zd[] = "Zd"; -static char __pyx_k__Zf[] = "Zf"; -static char __pyx_k__Zg[] = "Zg"; -static char __pyx_k__id[] = "id"; -static char __pyx_k__np[] = "np"; -static char __pyx_k__all[] = "all"; -static char __pyx_k__inf[] = "inf"; -static char __pyx_k__max[] = "max"; -static char __pyx_k__min[] = "min"; -static char __pyx_k__sys[] = "sys"; -static char __pyx_k__args[] = "args"; -static char __pyx_k__bbob[] = "bbob"; -static char __pyx_k__copy[] = "copy"; -static char __pyx_k__find[] = "find"; -static char __pyx_k__free[] = "free"; -static char __pyx_k__info[] = "info"; -static char __pyx_k__name[] = "name"; -static char __pyx_k__ones[] = "ones"; -static char __pyx_k__send[] = "send"; -static char __pyx_k__size[] = "size"; -static char __pyx_k__array[] = "array"; -static char __pyx_k__ascii[] = "ascii"; -static char __pyx_k__close[] = "close"; -static char __pyx_k__dtype[] = "dtype"; -static char __pyx_k__force[] = "force"; -static char __pyx_k__index[] = "index"; -static char __pyx_k__level[] = "level"; -static char __pyx_k__numpy[] = "numpy"; -static char __pyx_k__order[] = "order"; -static char __pyx_k__print[] = "print"; -static char __pyx_k__range[] = "range"; -static char __pyx_k__reset[] = "reset"; -static char __pyx_k__split[] = "split"; -static char __pyx_k__state[] = "state"; -static char __pyx_k__suite[] = "suite"; -static char __pyx_k__throw[] = "throw"; -static char __pyx_k__zeros[] = "zeros"; -static char __pyx_k___level[] = "_level"; -static char __pyx_k__append[] = "append"; -static char __pyx_k__double[] = "double"; -static char __pyx_k__encode[] = "encode"; -static char __pyx_k__format[] = "format"; -static char __pyx_k__single[] = "single"; -static char __pyx_k__sorted[] = "sorted"; -static char __pyx_k__indices[] = "indices"; -static char __pyx_k__options[] = "options"; -static char __pyx_k__replace[] = "replace"; -static char __pyx_k__verbose[] = "verbose"; -static char __pyx_k__warning[] = "warning"; -static char __pyx_k____main__[] = "__main__"; -static char __pyx_k____test__[] = "__test__"; -static char __pyx_k__function[] = "function"; -static char __pyx_k__instance[] = "instance"; -static char __pyx_k__observer[] = "observer"; -static char __pyx_k__property[] = "property"; -static char __pyx_k__TypeError[] = "TypeError"; -static char __pyx_k____class__[] = "__class__"; -static char __pyx_k__dimension[] = "dimension"; -static char __pyx_k__enumerate[] = "enumerate"; -static char __pyx_k__log_level[] = "log_level"; -static char __pyx_k__traceback[] = "traceback"; -static char __pyx_k__ValueError[] = "ValueError"; -static char __pyx_k____import__[] = "__import__"; -static char __pyx_k__dimensions[] = "dimensions"; -static char __pyx_k__evaluation[] = "evaluation"; -static char __pyx_k__suite_name[] = "suite_name"; -static char __pyx_k____dealloc__[] = "__dealloc__"; -static char __pyx_k__deactivated[] = "deactivated"; -static char __pyx_k__evaluations[] = "evaluations"; -static char __pyx_k__get_problem[] = "get_problem"; -static char __pyx_k__initialized[] = "initialized"; -static char __pyx_k__RuntimeError[] = "RuntimeError"; -static char __pyx_k__lower_bounds[] = "lower_bounds"; -static char __pyx_k__next_problem[] = "next_problem"; -static char __pyx_k__observe_with[] = "observe_with"; -static char __pyx_k__upper_bounds[] = "upper_bounds"; -static char __pyx_k__StopIteration[] = "StopIteration"; -static char __pyx_k__current_index[] = "current_index"; -static char __pyx_k__problem_names[] = "problem_names"; -static char __pyx_k__suite_options[] = "suite_options"; -static char __pyx_k__exception_type[] = "exception_type"; -static char __pyx_k__suite_instance[] = "suite_instance"; -static char __pyx_k____pyx_getbuffer[] = "__pyx_getbuffer"; -static char __pyx_k__current_problem[] = "current_problem"; -static char __pyx_k__exception_value[] = "exception_value"; -static char __pyx_k__final_target_hit[] = "final_target_hit"; -static char __pyx_k__initial_solution[] = "initial_solution"; -static char __pyx_k__known_suite_names[] = "known_suite_names"; -static char __pyx_k__list_of_observers[] = "list_of_observers"; -static char __pyx_k___known_suite_names[] = "_known_suite_names"; -static char __pyx_k__NotImplementedError[] = "NotImplementedError"; -static char __pyx_k____pyx_releasebuffer[] = "__pyx_releasebuffer"; -static char __pyx_k__number_of_variables[] = "number_of_variables"; -static PyObject *__pyx_n_s_11; -static PyObject *__pyx_kp_u_13; -static PyObject *__pyx_kp_u_14; -static PyObject *__pyx_kp_u_18; -static PyObject *__pyx_kp_u_19; -static PyObject *__pyx_kp_u_2; -static PyObject *__pyx_kp_u_20; -static PyObject *__pyx_kp_u_21; -static PyObject *__pyx_kp_u_22; -static PyObject *__pyx_kp_u_23; -static PyObject *__pyx_kp_u_25; -static PyObject *__pyx_kp_u_26; -static PyObject *__pyx_kp_u_27; -static PyObject *__pyx_kp_u_28; -static PyObject *__pyx_kp_u_29; -static PyObject *__pyx_kp_u_3; -static PyObject *__pyx_kp_u_30; -static PyObject *__pyx_kp_u_34; -static PyObject *__pyx_kp_u_36; -static PyObject *__pyx_kp_u_38; -static PyObject *__pyx_n_s_4; -static PyObject *__pyx_n_s_41; -static PyObject *__pyx_kp_u_42; -static PyObject *__pyx_kp_u_43; -static PyObject *__pyx_n_s_44; -static PyObject *__pyx_n_s_45; -static PyObject *__pyx_n_s_46; -static PyObject *__pyx_kp_u_48; -static PyObject *__pyx_kp_u_49; -static PyObject *__pyx_kp_u_5; -static PyObject *__pyx_kp_u_50; -static PyObject *__pyx_kp_u_51; -static PyObject *__pyx_kp_u_52; -static PyObject *__pyx_kp_u_53; -static PyObject *__pyx_kp_u_54; -static PyObject *__pyx_kp_u_56; -static PyObject *__pyx_kp_u_57; -static PyObject *__pyx_kp_u_59; -static PyObject *__pyx_kp_u_6; -static PyObject *__pyx_kp_u_61; -static PyObject *__pyx_kp_u_63; -static PyObject *__pyx_kp_u_64; -static PyObject *__pyx_kp_u_67; -static PyObject *__pyx_n_s_70; -static PyObject *__pyx_kp_b_71; -static PyObject *__pyx_kp_b_72; -static PyObject *__pyx_kp_b_73; -static PyObject *__pyx_n_s_74; -static PyObject *__pyx_n_s_75; -static PyObject *__pyx_kp_s_78; -static PyObject *__pyx_n_s_79; -static PyObject *__pyx_kp_u_8; -static PyObject *__pyx_kp_u_80; -static PyObject *__pyx_kp_u_81; -static PyObject *__pyx_kp_u_82; -static PyObject *__pyx_kp_u_83; -static PyObject *__pyx_kp_u_84; -static PyObject *__pyx_kp_u_85; -static PyObject *__pyx_kp_u_86; -static PyObject *__pyx_kp_u_87; -static PyObject *__pyx_n_u__C; -static PyObject *__pyx_n_s__NotImplementedError; -static PyObject *__pyx_n_s__RuntimeError; -static PyObject *__pyx_n_s__StopIteration; -static PyObject *__pyx_n_s__TypeError; -static PyObject *__pyx_n_s__ValueError; -static PyObject *__pyx_n_s____class__; -static PyObject *__pyx_n_s____dealloc__; -static PyObject *__pyx_n_s____import__; -static PyObject *__pyx_n_s____main__; -static PyObject *__pyx_n_s____pyx_getbuffer; -static PyObject *__pyx_n_s____pyx_releasebuffer; -static PyObject *__pyx_n_s____test__; -static PyObject *__pyx_n_s___known_suite_names; -static PyObject *__pyx_n_s___level; -static PyObject *__pyx_n_s__all; -static PyObject *__pyx_n_s__append; -static PyObject *__pyx_n_s__args; -static PyObject *__pyx_n_s__array; -static PyObject *__pyx_n_u__ascii; -static PyObject *__pyx_n_b__bbob; -static PyObject *__pyx_n_s__close; -static PyObject *__pyx_n_s__copy; -static PyObject *__pyx_n_s__current_index; -static PyObject *__pyx_n_s__current_problem; -static PyObject *__pyx_n_u__deactivated; -static PyObject *__pyx_n_s__dimension; -static PyObject *__pyx_n_s__dimensions; -static PyObject *__pyx_n_s__double; -static PyObject *__pyx_n_s__dtype; -static PyObject *__pyx_n_s__encode; -static PyObject *__pyx_n_s__enumerate; -static PyObject *__pyx_n_s__evaluation; -static PyObject *__pyx_n_s__evaluations; -static PyObject *__pyx_n_s__exception_type; -static PyObject *__pyx_n_s__exception_value; -static PyObject *__pyx_n_s__final_target_hit; -static PyObject *__pyx_n_s__find; -static PyObject *__pyx_n_s__force; -static PyObject *__pyx_n_s__format; -static PyObject *__pyx_n_s__free; -static PyObject *__pyx_n_s__function; -static PyObject *__pyx_n_s__get_problem; -static PyObject *__pyx_n_s__id; -static PyObject *__pyx_n_s__index; -static PyObject *__pyx_n_s__indices; -static PyObject *__pyx_n_s__inf; -static PyObject *__pyx_n_s__info; -static PyObject *__pyx_n_s__initial_solution; -static PyObject *__pyx_n_u__initialized; -static PyObject *__pyx_n_s__instance; -static PyObject *__pyx_n_s__known_suite_names; -static PyObject *__pyx_n_s__level; -static PyObject *__pyx_n_s__list_of_observers; -static PyObject *__pyx_n_s__log_level; -static PyObject *__pyx_n_s__lower_bounds; -static PyObject *__pyx_n_s__max; -static PyObject *__pyx_n_s__min; -static PyObject *__pyx_n_s__name; -static PyObject *__pyx_n_s__next_problem; -static PyObject *__pyx_n_s__np; -static PyObject *__pyx_n_s__number_of_variables; -static PyObject *__pyx_n_s__numpy; -static PyObject *__pyx_n_s__observe_with; -static PyObject *__pyx_n_s__observer; -static PyObject *__pyx_n_s__ones; -static PyObject *__pyx_n_s__options; -static PyObject *__pyx_n_s__order; -static PyObject *__pyx_n_s__print; -static PyObject *__pyx_n_s__problem_names; -static PyObject *__pyx_n_s__property; -static PyObject *__pyx_n_s__range; -static PyObject *__pyx_n_s__replace; -static PyObject *__pyx_n_s__reset; -static PyObject *__pyx_n_u__s; -static PyObject *__pyx_n_s__send; -static PyObject *__pyx_n_u__single; -static PyObject *__pyx_n_s__size; -static PyObject *__pyx_n_s__sorted; -static PyObject *__pyx_n_s__split; -static PyObject *__pyx_n_s__state; -static PyObject *__pyx_n_s__suite; -static PyObject *__pyx_n_s__suite_instance; -static PyObject *__pyx_n_s__suite_name; -static PyObject *__pyx_n_s__suite_options; -static PyObject *__pyx_n_s__sys; -static PyObject *__pyx_n_s__throw; -static PyObject *__pyx_n_s__traceback; -static PyObject *__pyx_n_s__upper_bounds; -static PyObject *__pyx_n_s__verbose; -static PyObject *__pyx_n_u__warning; -static PyObject *__pyx_n_s__x; -static PyObject *__pyx_n_s__y; -static PyObject *__pyx_n_s__zeros; static PyObject *__pyx_int_0; static PyObject *__pyx_int_1; static PyObject *__pyx_int_neg_1; static PyObject *__pyx_int_neg_2; -static PyObject *__pyx_int_15; -static PyObject *__pyx_k_16; -static PyObject *__pyx_k_17; -static PyObject *__pyx_k_32; -static PyObject *__pyx_k_33; -static PyObject *__pyx_k_47; -static PyObject *__pyx_k_tuple_1; -static PyObject *__pyx_k_tuple_7; -static PyObject *__pyx_k_tuple_9; -static PyObject *__pyx_k_slice_55; -static PyObject *__pyx_k_tuple_10; -static PyObject *__pyx_k_tuple_12; -static PyObject *__pyx_k_tuple_15; -static PyObject *__pyx_k_tuple_24; -static PyObject *__pyx_k_tuple_31; -static PyObject *__pyx_k_tuple_35; -static PyObject *__pyx_k_tuple_37; -static PyObject *__pyx_k_tuple_39; -static PyObject *__pyx_k_tuple_40; -static PyObject *__pyx_k_tuple_58; -static PyObject *__pyx_k_tuple_60; -static PyObject *__pyx_k_tuple_62; -static PyObject *__pyx_k_tuple_65; -static PyObject *__pyx_k_tuple_66; -static PyObject *__pyx_k_tuple_68; -static PyObject *__pyx_k_tuple_76; -static PyObject *__pyx_k_codeobj_77; +static PyObject *__pyx_tuple_; +static PyObject *__pyx_tuple__3; +static PyObject *__pyx_tuple__4; +static PyObject *__pyx_tuple__5; +static PyObject *__pyx_tuple__6; +static PyObject *__pyx_tuple__7; +static PyObject *__pyx_slice__20; +static PyObject *__pyx_tuple__10; +static PyObject *__pyx_tuple__15; +static PyObject *__pyx_tuple__16; +static PyObject *__pyx_tuple__17; +static PyObject *__pyx_tuple__18; +static PyObject *__pyx_tuple__19; +static PyObject *__pyx_tuple__21; +static PyObject *__pyx_tuple__22; +static PyObject *__pyx_tuple__23; +static PyObject *__pyx_tuple__24; +static PyObject *__pyx_tuple__25; +static PyObject *__pyx_tuple__26; +static PyObject *__pyx_tuple__27; +static PyObject *__pyx_codeobj__28; /* "cython/interface.pyx":64 * int coco_problem_final_target_hit(const coco_problem_t *problem) @@ -1884,11 +1976,9 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; + int __pyx_t_2; PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("_bstring", 0); /* "cython/interface.pyx":65 @@ -1898,8 +1988,9 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * return s * elif isinstance(s, unicode): */ - __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_s)) == ((PyObject *)((PyObject*)(&PyBytes_Type)))); - if (__pyx_t_1) { + __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_s)) == ((PyObject *)(&PyBytes_Type))); + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { /* "cython/interface.pyx":66 * cdef bytes _bstring(s): @@ -1908,21 +1999,29 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * elif isinstance(s, unicode): * return s.encode('ascii') */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_v_s))); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject*)__pyx_v_s)); __pyx_r = ((PyObject*)__pyx_v_s); goto __pyx_L0; - goto __pyx_L3; - } - /* "cython/interface.pyx":67 - * if type(s) is bytes: + /* "cython/interface.pyx":65 + * + * cdef bytes _bstring(s): + * if type(s) is bytes: # <<<<<<<<<<<<<< + * return s + * elif isinstance(s, unicode): + */ + } + + /* "cython/interface.pyx":67 + * if type(s) is bytes: * return s * elif isinstance(s, unicode): # <<<<<<<<<<<<<< * return s.encode('ascii') * else: */ - __pyx_t_1 = PyUnicode_Check(__pyx_v_s); + __pyx_t_2 = PyUnicode_Check(__pyx_v_s); + __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* "cython/interface.pyx":68 @@ -1932,57 +2031,70 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * else: * raise TypeError("expect a string, got %s" % str(type(s))) */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s__encode); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_r = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 68, __pyx_L1_error) + __pyx_r = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; goto __pyx_L0; - goto __pyx_L3; + + /* "cython/interface.pyx":67 + * if type(s) is bytes: + * return s + * elif isinstance(s, unicode): # <<<<<<<<<<<<<< + * return s.encode('ascii') + * else: + */ } - /*else*/ { - /* "cython/interface.pyx":70 + /* "cython/interface.pyx":70 * return s.encode('ascii') * else: * raise TypeError("expect a string, got %s" % str(type(s))) # <<<<<<<<<<<<<< * * cdef coco_observer_t* _current_observer */ - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); + /*else*/ { + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_s))); - PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(__pyx_v_s))); __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_s))); - __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_2), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_3)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); - __pyx_t_3 = 0; - __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(__pyx_v_s))); + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_expect_a_string_got_s, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(0, 70, __pyx_L1_error) } - __pyx_L3:; - __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":64 + * int coco_problem_final_target_hit(const coco_problem_t *problem) + * + * cdef bytes _bstring(s): # <<<<<<<<<<<<<< + * if type(s) is bytes: + * return s + */ + + /* function exit code */ __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface._bstring", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -1991,20 +2103,25 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { return __pyx_r; } +/* "cython/interface.pyx":186 + * cdef initialized + * + * def __cinit__(self, suite_name, suite_instance, suite_options): # <<<<<<<<<<<<<< + * cdef np.npy_intp shape[1] # probably completely useless + * self._name = _bstring(suite_name) + */ + /* Python wrapper */ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_suite_name = 0; PyObject *__pyx_v_suite_instance = 0; PyObject *__pyx_v_suite_options = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__suite_name,&__pyx_n_s__suite_instance,&__pyx_n_s__suite_options,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_suite_name,&__pyx_n_s_suite_instance,&__pyx_n_s_suite_options,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -2019,21 +2136,21 @@ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__suite_name)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__suite_instance)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_instance)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(0, 186, __pyx_L3_error) } case 2: - if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__suite_options)) != 0)) kw_args--; + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_options)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(0, 186, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 186, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -2048,34 +2165,25 @@ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 186, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_5Suite___cinit__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), __pyx_v_suite_name, __pyx_v_suite_instance, __pyx_v_suite_options); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":186 - * cdef initialized - * - * def __cinit__(self, suite_name, suite_instance, suite_options): # <<<<<<<<<<<<<< - * cdef np.npy_intp shape[1] # probably completely useless - * self._name = _bstring(suite_name) - */ - static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, PyObject *__pyx_v_suite_name, PyObject *__pyx_v_suite_instance, PyObject *__pyx_v_suite_options) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__cinit__", 0); /* "cython/interface.pyx":188 @@ -2085,11 +2193,11 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex * self._instance = _bstring(suite_instance if suite_instance is not None else "") * self._options = _bstring(suite_options if suite_options is not None else "") */ - __pyx_t_1 = ((PyObject *)__pyx_f_6cocoex_9interface__bstring(__pyx_v_suite_name)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_suite_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_name); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_name)); + __Pyx_DECREF(__pyx_v_self->_name); __pyx_v_self->_name = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; @@ -2101,19 +2209,19 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex * self._current_problem = NULL */ __pyx_t_2 = (__pyx_v_suite_instance != Py_None); - if (__pyx_t_2) { + if ((__pyx_t_2 != 0)) { __Pyx_INCREF(__pyx_v_suite_instance); __pyx_t_1 = __pyx_v_suite_instance; } else { - __Pyx_INCREF(((PyObject *)__pyx_kp_u_3)); - __pyx_t_1 = ((PyObject *)__pyx_kp_u_3); + __Pyx_INCREF(__pyx_kp_u__2); + __pyx_t_1 = __pyx_kp_u__2; } - __pyx_t_3 = ((PyObject *)__pyx_f_6cocoex_9interface__bstring(__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_instance); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_instance)); + __Pyx_DECREF(__pyx_v_self->_instance); __pyx_v_self->_instance = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; @@ -2125,19 +2233,19 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex * self.current_problem_ = None */ __pyx_t_2 = (__pyx_v_suite_options != Py_None); - if (__pyx_t_2) { + if ((__pyx_t_2 != 0)) { __Pyx_INCREF(__pyx_v_suite_options); __pyx_t_3 = __pyx_v_suite_options; } else { - __Pyx_INCREF(((PyObject *)__pyx_kp_u_3)); - __pyx_t_3 = ((PyObject *)__pyx_kp_u_3); + __Pyx_INCREF(__pyx_kp_u__2); + __pyx_t_3 = __pyx_kp_u__2; } - __pyx_t_1 = ((PyObject *)__pyx_f_6cocoex_9interface__bstring(__pyx_t_3)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_options); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_options)); + __Pyx_DECREF(__pyx_v_self->_options); __pyx_v_self->_options = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; @@ -2183,13 +2291,11 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex * self._initialize() * assert self.initialized */ - __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); + __Pyx_INCREF(Py_False); + __Pyx_GIVEREF(Py_False); __Pyx_GOTREF(__pyx_v_self->initialized); __Pyx_DECREF(__pyx_v_self->initialized); - __pyx_v_self->initialized = __pyx_t_1; - __pyx_t_1 = 0; + __pyx_v_self->initialized = Py_False; /* "cython/interface.pyx":195 * self._current_index = None @@ -2198,7 +2304,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex * assert self.initialized * cdef _initialize(self): */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Suite *)__pyx_v_self->__pyx_vtab)->_initialize(__pyx_v_self); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Suite *)__pyx_v_self->__pyx_vtab)->_initialize(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -2210,13 +2316,24 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex * """sweeps through `suite` to collect indices and id's to operate by */ #ifndef CYTHON_WITHOUT_ASSERTIONS - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__pyx_t_2)) { - PyErr_SetNone(PyExc_AssertionError); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!Py_OptimizeFlag)) { + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 196, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) { + PyErr_SetNone(PyExc_AssertionError); + __PYX_ERR(0, 196, __pyx_L1_error) + } } #endif + /* "cython/interface.pyx":186 + * cdef initialized + * + * def __cinit__(self, suite_name, suite_instance, suite_options): # <<<<<<<<<<<<<< + * cdef np.npy_intp shape[1] # probably completely useless + * self._name = _bstring(suite_name) + */ + + /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; @@ -2252,16 +2369,17 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ Py_ssize_t __pyx_t_6; PyObject *(*__pyx_t_7)(PyObject *); PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; + int __pyx_t_9; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; - char const *__pyx_t_12; + PyObject *__pyx_t_12 = NULL; char const *__pyx_t_13; char const *__pyx_t_14; - PyObject *__pyx_t_15 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + char const *__pyx_t_15; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + PyObject *__pyx_t_18 = NULL; + int __pyx_t_19; __Pyx_RefNannySetupContext("_initialize", 0); /* "cython/interface.pyx":205 @@ -2271,7 +2389,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self.reset() * self._ids = [] */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 205, __pyx_L1_error) if (__pyx_t_1) { /* "cython/interface.pyx":206 @@ -2281,15 +2399,36 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._ids = [] * self._indices = [] */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__reset); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_4) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L3; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "cython/interface.pyx":205 + * cdef bytes _old_level + * + * if self.initialized: # <<<<<<<<<<<<<< + * self.reset() + * self._ids = [] + */ } - __pyx_L3:; /* "cython/interface.pyx":207 * if self.initialized: @@ -2298,13 +2437,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._indices = [] * self._names = [] */ - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_ids); __Pyx_DECREF(__pyx_v_self->_ids); - __pyx_v_self->_ids = ((PyObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_v_self->_ids = __pyx_t_2; + __pyx_t_2 = 0; /* "cython/interface.pyx":208 * self.reset() @@ -2313,13 +2452,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._names = [] * self._dimensions = [] */ - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_indices); __Pyx_DECREF(__pyx_v_self->_indices); - __pyx_v_self->_indices = ((PyObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_v_self->_indices = __pyx_t_2; + __pyx_t_2 = 0; /* "cython/interface.pyx":209 * self._ids = [] @@ -2328,13 +2467,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._dimensions = [] * self._number_of_objectives = [] */ - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_names); __Pyx_DECREF(__pyx_v_self->_names); - __pyx_v_self->_names = ((PyObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_v_self->_names = __pyx_t_2; + __pyx_t_2 = 0; /* "cython/interface.pyx":210 * self._indices = [] @@ -2343,13 +2482,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._number_of_objectives = [] * if str(self._name) not in [str(n) for n in known_suite_names]: */ - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_dimensions); __Pyx_DECREF(__pyx_v_self->_dimensions); - __pyx_v_self->_dimensions = ((PyObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_v_self->_dimensions = __pyx_t_2; + __pyx_t_2 = 0; /* "cython/interface.pyx":211 * self._names = [] @@ -2358,13 +2497,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * if str(self._name) not in [str(n) for n in known_suite_names]: * raise NoSuchSuiteException("""Unkown benchmark suite name "%s". */ - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_number_of_objectives); __Pyx_DECREF(__pyx_v_self->_number_of_objectives); - __pyx_v_self->_number_of_objectives = ((PyObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_v_self->_number_of_objectives = __pyx_t_2; + __pyx_t_2 = 0; /* "cython/interface.pyx":212 * self._dimensions = [] @@ -2373,72 +2512,77 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * raise NoSuchSuiteException("""Unkown benchmark suite name "%s". * Known suite names are %s. */ - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(((PyObject *)__pyx_v_self->_name)); - PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->_name)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_name)); - __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_INCREF(__pyx_v_self->_name); + __Pyx_GIVEREF(__pyx_v_self->_name); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->_name); + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__known_suite_names); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) { + if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) { __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { - __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; + __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 212, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; for (;;) { - if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_5)) { - if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break; - #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - #endif - } else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_5)) { - if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break; - #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - #endif + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_5))) { + if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break; + #if CYTHON_COMPILING_IN_CPYTHON + __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 212, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } else { + if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break; + #if CYTHON_COMPILING_IN_CPYTHON + __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 212, __pyx_L1_error) + #else + __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } } else { __pyx_t_4 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_4)) { - if (PyErr_Occurred()) { - if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); - else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 212, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } - __Pyx_XDECREF(__pyx_v_n); - __pyx_v_n = __pyx_t_4; + __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_n); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_n); __Pyx_GIVEREF(__pyx_v_n); - __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_n); + __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_t_2, ((PyObject *)__pyx_t_3), Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_t_2, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; - if (__pyx_t_1) { + __pyx_t_9 = (__pyx_t_1 != 0); + if (__pyx_t_9) { /* "cython/interface.pyx":213 * self._number_of_objectives = [] @@ -2447,7 +2591,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * Known suite names are %s. * If "%s" was not a typo, you can add the desired name to `known_suite_names`:: */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); /* "cython/interface.pyx":224 @@ -2457,45 +2601,68 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * try: * suite = coco_suite(self._name, self._instance, self._options) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__known_suite_names); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(((PyObject *)__pyx_v_self->_name)); - PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_self->_name)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_name)); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_v_self->_name)); - PyTuple_SET_ITEM(__pyx_t_5, 2, ((PyObject *)__pyx_v_self->_name)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_name)); - __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_5), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_INCREF(__pyx_v_self->_name); + __Pyx_GIVEREF(__pyx_v_self->_name); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_self->_name); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_5); + __Pyx_INCREF(__pyx_v_self->_name); + __Pyx_GIVEREF(__pyx_v_self->_name); + PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_self->_name); + __pyx_t_5 = 0; + __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_Unkown_benchmark_suite_name_s_Kn, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_2)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_8) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL; + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L4; + __PYX_ERR(0, 213, __pyx_L1_error) + + /* "cython/interface.pyx":212 + * self._dimensions = [] + * self._number_of_objectives = [] + * if str(self._name) not in [str(n) for n in known_suite_names]: # <<<<<<<<<<<<<< + * raise NoSuchSuiteException("""Unkown benchmark suite name "%s". + * Known suite names are %s. + */ } - __pyx_L4:; /* "cython/interface.pyx":225 * also report back a missing name to https://github.com/numbbo/coco/issues @@ -2505,10 +2672,12 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * except: */ { - __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_9); + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_12); /*try:*/ { /* "cython/interface.pyx":226 @@ -2518,20 +2687,29 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) */ - __pyx_t_12 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_name)); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L7_error;} - __pyx_t_13 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_instance)); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L7_error;} - __pyx_t_14 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_options)); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L7_error;} - __pyx_v_suite = coco_suite(__pyx_t_12, __pyx_t_13, __pyx_t_14); + __pyx_t_13 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 226, __pyx_L7_error) + __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 226, __pyx_L7_error) + __pyx_t_15 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 226, __pyx_L7_error) + __pyx_v_suite = coco_suite(__pyx_t_13, __pyx_t_14, __pyx_t_15); + + /* "cython/interface.pyx":225 + * also report back a missing name to https://github.com/numbbo/coco/issues + * """ % (self._name, str(known_suite_names), self._name)) + * try: # <<<<<<<<<<<<<< + * suite = coco_suite(self._name, self._instance, self._options) + * except: + */ } - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L14_try_end; __pyx_L7_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":227 @@ -2543,10 +2721,10 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite._initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_5, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 227, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_t_4); /* "cython/interface.pyx":228 * suite = coco_suite(self._name, self._instance, self._options) @@ -2555,38 +2733,55 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * if suite == NULL: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) */ - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 228, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_6), ((PyObject *)__pyx_v_self->_name)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} - __Pyx_GOTREF(__pyx_t_15); - PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_t_4)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); - __pyx_t_4 = 0; - __pyx_t_4 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_16 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 228, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_16); + __pyx_t_17 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_17)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_17); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + } + } + if (!__pyx_t_17) { + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 228, __pyx_L9_except_error) + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_GOTREF(__pyx_t_5); + } else { + __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 228, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_18); + __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL; + __Pyx_GIVEREF(__pyx_t_16); + PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_16); + __pyx_t_16 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_18, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 228, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; + } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_exception_handled; + __PYX_ERR(0, 228, __pyx_L9_except_error) } __pyx_L9_except_error:; - __Pyx_XGIVEREF(__pyx_t_9); + + /* "cython/interface.pyx":225 + * also report back a missing name to https://github.com/numbbo/coco/issues + * """ % (self._name, str(known_suite_names), self._name)) + * try: # <<<<<<<<<<<<<< + * suite = coco_suite(self._name, self._instance, self._options) + * except: + */ + __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); goto __pyx_L1_error; - __pyx_L8_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); __pyx_L14_try_end:; } @@ -2597,8 +2792,8 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * while True: */ - __pyx_t_1 = (__pyx_v_suite == NULL); - if (__pyx_t_1) { + __pyx_t_9 = ((__pyx_v_suite == NULL) != 0); + if (__pyx_t_9) { /* "cython/interface.pyx":230 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) @@ -2607,25 +2802,48 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * while True: * old_level = log_level('warning') */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_6), ((PyObject *)__pyx_v_self->_name)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_5)); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_5)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_5)); - __pyx_t_5 = 0; - __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_5 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_5) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else { + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L17; + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(0, 230, __pyx_L1_error) + + /* "cython/interface.pyx":229 + * except: + * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) + * if suite == NULL: # <<<<<<<<<<<<<< + * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) + * while True: + */ } - __pyx_L17:; /* "cython/interface.pyx":231 * if suite == NULL: @@ -2635,7 +2853,6 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * p = coco_suite_get_next_problem(suite, NULL) */ while (1) { - if (!1) break; /* "cython/interface.pyx":232 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) @@ -2644,14 +2861,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__log_level); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_k_tuple_7), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_v_old_level); - __pyx_v_old_level = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF_SET(__pyx_v_old_level, __pyx_t_3); + __pyx_t_3 = 0; /* "cython/interface.pyx":233 * while True: @@ -2669,17 +2885,33 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * if not p: * break */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__log_level); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(__pyx_v_old_level); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_old_level); - __Pyx_GIVEREF(__pyx_v_old_level); - __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (!__pyx_t_8) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_old_level); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } else { + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL; + __Pyx_INCREF(__pyx_v_old_level); + __Pyx_GIVEREF(__pyx_v_old_level); + PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_old_level); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":235 @@ -2689,8 +2921,8 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * break * self._indices.append(coco_problem_get_suite_dep_index(p)) */ - __pyx_t_1 = (!(__pyx_v_p != 0)); - if (__pyx_t_1) { + __pyx_t_9 = ((!(__pyx_v_p != 0)) != 0); + if (__pyx_t_9) { /* "cython/interface.pyx":236 * log_level(old_level) @@ -2700,9 +2932,15 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._ids.append(coco_problem_get_id(p)) */ goto __pyx_L19_break; - goto __pyx_L20; + + /* "cython/interface.pyx":235 + * p = coco_suite_get_next_problem(suite, NULL) + * log_level(old_level) + * if not p: # <<<<<<<<<<<<<< + * break + * self._indices.append(coco_problem_get_suite_dep_index(p)) + */ } - __pyx_L20:; /* "cython/interface.pyx":237 * if not p: @@ -2711,12 +2949,10 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._ids.append(coco_problem_get_id(p)) * self._names.append(coco_problem_get_name(p)) */ - __pyx_t_3 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_p)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_p)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_indices, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_indices, __pyx_t_3); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 237, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "cython/interface.pyx":238 * break @@ -2725,11 +2961,9 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._names.append(coco_problem_get_name(p)) * self._dimensions.append(coco_problem_get_dimension(p)) */ - __pyx_t_5 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_p)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_5)); - __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_self->_ids, ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_p)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_ids, __pyx_t_3); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 238, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":239 @@ -2739,12 +2973,10 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._dimensions.append(coco_problem_get_dimension(p)) * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) */ - __pyx_t_3 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_p)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_names, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_3 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_p)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_names, __pyx_t_3); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":240 * self._ids.append(coco_problem_get_id(p)) @@ -2753,11 +2985,9 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) * coco_suite_free(suite) */ - __pyx_t_5 = __Pyx_PyInt_FromSize_t(coco_problem_get_dimension(__pyx_v_p)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_self->_dimensions, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_FromSize_t(coco_problem_get_dimension(__pyx_v_p)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_dimensions, __pyx_t_3); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 240, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":241 @@ -2767,12 +2997,10 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * coco_suite_free(suite) * self.suite = coco_suite(self._name, self._instance, self._options) */ - __pyx_t_3 = __Pyx_PyInt_FromSize_t(coco_problem_get_number_of_objectives(__pyx_v_p)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_FromSize_t(coco_problem_get_number_of_objectives(__pyx_v_p)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_number_of_objectives, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_number_of_objectives, __pyx_t_3); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 241, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_L19_break:; @@ -2792,10 +3020,10 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self.initialized = True * return self */ - __pyx_t_12 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_name)); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_13 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_instance)); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_14 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_options)); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_v_self->suite = coco_suite(__pyx_t_12, __pyx_t_13, __pyx_t_14); + __pyx_t_13 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 243, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 243, __pyx_L1_error) + __pyx_t_15 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 243, __pyx_L1_error) + __pyx_v_self->suite = coco_suite(__pyx_t_13, __pyx_t_14, __pyx_t_15); /* "cython/interface.pyx":244 * coco_suite_free(suite) @@ -2804,13 +3032,11 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * return self * def reset(self): */ - __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); + __Pyx_INCREF(Py_True); + __Pyx_GIVEREF(Py_True); __Pyx_GOTREF(__pyx_v_self->initialized); __Pyx_DECREF(__pyx_v_self->initialized); - __pyx_v_self->initialized = __pyx_t_5; - __pyx_t_5 = 0; + __pyx_v_self->initialized = Py_True; /* "cython/interface.pyx":245 * self.suite = coco_suite(self._name, self._instance, self._options) @@ -2824,15 +3050,24 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":197 + * self._initialize() + * assert self.initialized + * cdef _initialize(self): # <<<<<<<<<<<<<< + * """sweeps through `suite` to collect indices and id's to operate by + * direct access in the remainder""" + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_15); + __Pyx_XDECREF(__pyx_t_16); + __Pyx_XDECREF(__pyx_t_17); + __Pyx_XDECREF(__pyx_t_18); __Pyx_AddTraceback("cocoex.interface.Suite._initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -2843,6 +3078,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ return __pyx_r; } +/* "cython/interface.pyx":246 + * self.initialized = True + * return self + * def reset(self): # <<<<<<<<<<<<<< + * """reset to original state, affecting `next_problem()`, + * `current_problem`, `current_index`""" + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_3reset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_2reset[] = "reset to original state, affecting `next_problem()`,\n `current_problem`, `current_index`"; @@ -2851,27 +3094,19 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_3reset(PyObject *__pyx_v_sel __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reset (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_2reset(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":246 - * self.initialized = True - * return self - * def reset(self): # <<<<<<<<<<<<<< - * """reset to original state, affecting `next_problem()`, - * `current_problem`, `current_index`""" - */ - static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("reset", 0); /* "cython/interface.pyx":249 @@ -2894,7 +3129,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc * self.current_problem_.free() * self.current_problem_ = None */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 250, __pyx_L1_error) if (__pyx_t_1) { /* "cython/interface.pyx":251 @@ -2904,15 +3139,36 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc * self.current_problem_ = None * self._current_problem = NULL */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s__free); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_4) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L3; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "cython/interface.pyx":250 + * `current_problem`, `current_index`""" + * self._current_index = None + * if self.current_problem_: # <<<<<<<<<<<<<< + * self.current_problem_.free() + * self.current_problem_ = None + */ } - __pyx_L3:; /* "cython/interface.pyx":252 * if self.current_problem_: @@ -2936,11 +3192,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc */ __pyx_v_self->_current_problem = NULL; + /* "cython/interface.pyx":246 + * self.initialized = True + * return self + * def reset(self): # <<<<<<<<<<<<<< + * """reset to original state, affecting `next_problem()`, + * `current_problem`, `current_index`""" + */ + + /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface.Suite.reset", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -2949,28 +3215,25 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc return __pyx_r; } +/* "cython/interface.pyx":254 + * self.current_problem_ = None + * self._current_problem = NULL + * def next_problem(self, observer=None): # <<<<<<<<<<<<<< + * """`next_problem(observer=None)` returns the "next" problem in the + * `Suite`, on the first call or after `reset()` the first problem. + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_4next_problem[] = "`next_problem(observer=None)` returns the \"next\" problem in the\n `Suite`, on the first call or after `reset()` the first problem.\n\n `next_problem` serves to sweep through the `Suite` smoothly.\n "; static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_observer = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("next_problem (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__observer,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_observer,0}; PyObject* values[1] = {0}; - - /* "cython/interface.pyx":254 - * self.current_problem_ = None - * self._current_problem = NULL - * def next_problem(self, observer=None): # <<<<<<<<<<<<<< - * """`next_problem(observer=None)` returns the "next" problem in the - * `Suite`, on the first call or after `reset()` the first problem. - */ values[0] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -2984,12 +3247,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__py switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__observer); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_observer); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "next_problem") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "next_problem") < 0)) __PYX_ERR(0, 254, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3002,13 +3265,15 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("next_problem", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("next_problem", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 254, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.next_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_4next_problem(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), __pyx_v_observer); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -3021,13 +3286,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - size_t __pyx_t_6; - PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_5 = NULL; + Py_ssize_t __pyx_t_6; + size_t __pyx_t_7; struct __pyx_opt_args_6cocoex_9interface_Problem_init __pyx_t_8; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("next_problem", 0); /* "cython/interface.pyx":262 @@ -3037,8 +3300,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_2 = (!__pyx_t_1); + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 262, __pyx_L1_error) + __pyx_t_2 = ((!__pyx_t_1) != 0); if (__pyx_t_2) { /* "cython/interface.pyx":263 @@ -3048,14 +3311,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * if self.current_problem_: * self.current_problem_.free() */ - __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L3; + __PYX_ERR(0, 263, __pyx_L1_error) + + /* "cython/interface.pyx":262 + * cdef size_t index + * global _current_observer + * if not self.initialized: # <<<<<<<<<<<<<< + * raise ValueError("Suite has been finalized/free'ed") + * if self.current_problem_: + */ } - __pyx_L3:; /* "cython/interface.pyx":264 * if not self.initialized: @@ -3064,7 +3333,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * self.current_problem_.free() * if self._current_index is None: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 264, __pyx_L1_error) if (__pyx_t_2) { /* "cython/interface.pyx":265 @@ -3074,15 +3343,36 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * if self._current_index is None: * self._current_index = -1 */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s__free); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_5) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 265, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 265, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L4; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "cython/interface.pyx":264 + * if not self.initialized: + * raise ValueError("Suite has been finalized/free'ed") + * if self.current_problem_: # <<<<<<<<<<<<<< + * self.current_problem_.free() + * if self._current_index is None: + */ } - __pyx_L4:; /* "cython/interface.pyx":266 * if self.current_problem_: @@ -3092,7 +3382,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * self._current_index += 1 */ __pyx_t_2 = (__pyx_v_self->_current_index == Py_None); - if (__pyx_t_2) { + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { /* "cython/interface.pyx":267 * self.current_problem_.free() @@ -3106,9 +3397,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __Pyx_GOTREF(__pyx_v_self->_current_index); __Pyx_DECREF(__pyx_v_self->_current_index); __pyx_v_self->_current_index = __pyx_int_neg_1; - goto __pyx_L5; + + /* "cython/interface.pyx":266 + * if self.current_problem_: + * self.current_problem_.free() + * if self._current_index is None: # <<<<<<<<<<<<<< + * self._current_index = -1 + * self._current_index += 1 + */ } - __pyx_L5:; /* "cython/interface.pyx":268 * if self._current_index is None: @@ -3117,13 +3414,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * if self._current_index >= len(self): * self._current_problem = NULL */ - __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_self->_current_index, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_current_index, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_current_index); __Pyx_DECREF(__pyx_v_self->_current_index); - __pyx_v_self->_current_index = __pyx_t_4; - __pyx_t_4 = 0; + __pyx_v_self->_current_index = __pyx_t_3; + __pyx_t_3 = 0; /* "cython/interface.pyx":269 * self._current_index = -1 @@ -3132,14 +3429,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * self._current_problem = NULL * self.current_problem_ = None */ - __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_self->_current_index, __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 269, __pyx_L1_error) + __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 269, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->_current_index, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 269, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 269, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_1) { /* "cython/interface.pyx":270 * self._current_index += 1 @@ -3162,25 +3459,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __Pyx_GOTREF(__pyx_v_self->current_problem_); __Pyx_DECREF(__pyx_v_self->current_problem_); __pyx_v_self->current_problem_ = Py_None; + + /* "cython/interface.pyx":269 + * self._current_index = -1 + * self._current_index += 1 + * if self._current_index >= len(self): # <<<<<<<<<<<<<< + * self._current_problem = NULL + * self.current_problem_ = None + */ goto __pyx_L6; } - /*else*/ { - /* "cython/interface.pyx":274 + /* "cython/interface.pyx":274 * # self._current_index = -1 # or use reset? * else: * index = self.indices[self._current_index] # "conversion" to size_t # <<<<<<<<<<<<<< * self._current_problem = coco_suite_get_problem( * self.suite, index) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__indices); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_v_self->_current_index); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + /*else*/ { + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyInt_AsSize_t(__pyx_t_4); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_v_self->_current_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_index = __pyx_t_6; + __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 274, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_index = __pyx_t_7; /* "cython/interface.pyx":275 * else: @@ -3198,17 +3503,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * self.current_problem_.observe_with(observer) * return self.current_problem_ */ - __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = ((PyObject *)__pyx_v_self->_name); + __pyx_t_3 = __pyx_v_self->_name; __Pyx_INCREF(__pyx_t_3); - __pyx_t_8.__pyx_n = 2; - __pyx_t_8.free = __pyx_t_4; - __pyx_t_8.suite_name = __pyx_t_3; - __pyx_t_7 = __pyx_f_6cocoex_9interface_Problem_init(__pyx_v_self->_current_problem, &__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":277 * self._current_problem = coco_suite_get_problem( @@ -3217,11 +3513,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * True, self._name) * self.current_problem_.observe_with(observer) */ - __Pyx_GIVEREF(__pyx_t_7); + __pyx_t_8.__pyx_n = 2; + __pyx_t_8.free = Py_True; + __pyx_t_8.suite_name = __pyx_t_3; + __pyx_t_4 = __pyx_f_6cocoex_9interface_Problem_init(__pyx_v_self->_current_problem, &__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->current_problem_); __Pyx_DECREF(__pyx_v_self->current_problem_); - __pyx_v_self->current_problem_ = __pyx_t_7; - __pyx_t_7 = 0; + __pyx_v_self->current_problem_ = __pyx_t_4; + __pyx_t_4 = 0; /* "cython/interface.pyx":279 * self.current_problem_ = Problem_init(self._current_problem, @@ -3230,17 +3532,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * return self.current_problem_ * def get_problem(self, id, observer=None): */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s__observe_with); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_observer); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_observer); - __Pyx_GIVEREF(__pyx_v_observer); - __pyx_t_4 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __pyx_t_5 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_5) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } else { + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 279, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; + __Pyx_INCREF(__pyx_v_observer); + __Pyx_GIVEREF(__pyx_v_observer); + PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_L6:; @@ -3257,12 +3575,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_r = __pyx_v_self->current_problem_; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":254 + * self.current_problem_ = None + * self._current_problem = NULL + * def next_problem(self, observer=None): # <<<<<<<<<<<<<< + * """`next_problem(observer=None)` returns the "next" problem in the + * `Suite`, on the first call or after `reset()` the first problem. + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("cocoex.interface.Suite.next_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -3271,29 +3597,26 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o return __pyx_r; } +/* "cython/interface.pyx":281 + * self.current_problem_.observe_with(observer) + * return self.current_problem_ + * def get_problem(self, id, observer=None): # <<<<<<<<<<<<<< + * """`get_problem(self, id, observer=None)` returns a `Problem` instance, + * by default unobserved, using `id: str` or index (where `id: int`) to + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_6get_problem[] = "`get_problem(self, id, observer=None)` returns a `Problem` instance,\n by default unobserved, using `id: str` or index (where `id: int`) to\n identify the desired problem.\n\n All values between zero and `len(self) - 1` are valid index values::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> for index in range(len(suite)):\n ... problem = suite.get_problem(index)\n ... # work work work using problem\n ... problem.free()\n\n A shortcut for `suite.get_problem(index)` is `suite[index]`, they are\n synonym.\n\n Details:\n - Here an `index` takes values between 0 and `len(self) - 1` and can in\n principle be different from the problem index in the benchmark suite.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of `get_problem`. Otherwise Python\n might just silently die, which is e.g. a known issue of the \"bbob\"\n observer.\n\n See also `ids`.\n "; static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_id = 0; PyObject *__pyx_v_observer = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_problem (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__id,&__pyx_n_s__observer,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_id,&__pyx_n_s_observer,0}; PyObject* values[2] = {0,0}; - - /* "cython/interface.pyx":281 - * self.current_problem_.observe_with(observer) - * return self.current_problem_ - * def get_problem(self, id, observer=None): # <<<<<<<<<<<<<< - * """`get_problem(self, id, observer=None)` returns a `Problem` instance, - * by default unobserved, using `id: str` or index (where `id: int`) to - */ values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -3307,16 +3630,16 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__id)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_id)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__observer); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_observer); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem") < 0)) __PYX_ERR(0, 281, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3331,13 +3654,15 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_problem", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("get_problem", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 281, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_6get_problem(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), __pyx_v_id, __pyx_v_observer); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -3357,12 +3682,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; - size_t __pyx_t_12; - struct __pyx_opt_args_6cocoex_9interface_Problem_init __pyx_t_13; - PyObject *__pyx_t_14 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_12 = NULL; + size_t __pyx_t_13; + struct __pyx_opt_args_6cocoex_9interface_Problem_init __pyx_t_14; + PyObject *__pyx_t_15 = NULL; + Py_ssize_t __pyx_t_16; + PyObject *__pyx_t_17 = NULL; __Pyx_RefNannySetupContext("get_problem", 0); /* "cython/interface.pyx":312 @@ -3372,8 +3697,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * raise ValueError("Suite has been finalized/free'ed") * index = id */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_2 = (!__pyx_t_1); + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 312, __pyx_L1_error) + __pyx_t_2 = ((!__pyx_t_1) != 0); if (__pyx_t_2) { /* "cython/interface.pyx":313 @@ -3383,14 +3708,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * index = id * try: */ - __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_10), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L3; + __PYX_ERR(0, 313, __pyx_L1_error) + + /* "cython/interface.pyx":312 + * See also `ids`. + * """ + * if not self.initialized: # <<<<<<<<<<<<<< + * raise ValueError("Suite has been finalized/free'ed") + * index = id + */ } - __pyx_L3:; /* "cython/interface.pyx":314 * if not self.initialized: @@ -3410,6 +3741,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * except: */ { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); @@ -3423,28 +3756,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * except: * index = self._ids.index(id) */ - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 316, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_id); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_id); - __Pyx_GIVEREF(__pyx_v_id); - __pyx_t_7 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L4_error;} - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; - __pyx_t_3 = PyObject_RichCompare(__pyx_v_id, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L4_error;} - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L4_error;} - __Pyx_GOTREF(__pyx_t_7); + __pyx_t_7 = PyObject_RichCompare(__pyx_v_id, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 316, __pyx_L4_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 316, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "cython/interface.pyx":315 + * raise ValueError("Suite has been finalized/free'ed") + * index = id + * try: # <<<<<<<<<<<<<< + * 1 / (id == int(id)) # int(id) might raise an exception + * except: + */ } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L11_try_end; __pyx_L4_error:; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":317 * try: @@ -3455,9 +3791,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} - __Pyx_GOTREF(__pyx_t_7); + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 317, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_8); /* "cython/interface.pyx":318 @@ -3467,32 +3803,57 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ids, __pyx_n_s__index); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ids, __pyx_n_s_index); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 318, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_10); - __Pyx_INCREF(__pyx_v_id); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_id); - __Pyx_GIVEREF(__pyx_v_id); - __pyx_t_11 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0; - __Pyx_DECREF(__pyx_v_index); - __pyx_v_index = __pyx_t_11; - __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_11 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + } + } + if (!__pyx_t_11) { + __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 318, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_9); + } else { + __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 318, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL; + __Pyx_INCREF(__pyx_v_id); + __Pyx_GIVEREF(__pyx_v_id); + PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_id); + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 318, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_9); + __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L5_exception_handled; } __pyx_L6_except_error:; + + /* "cython/interface.pyx":315 + * raise ValueError("Suite has been finalized/free'ed") + * index = id + * try: # <<<<<<<<<<<<<< + * 1 / (id == int(id)) # int(id) might raise an exception + * except: + */ + __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L1_error; __pyx_L5_exception_handled:; + __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); @@ -3508,6 +3869,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * True, self._name).observe_with(observer) */ { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_5); @@ -3530,52 +3893,97 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * except: * raise NoSuchProblemException(self.name, str(id)) */ - __pyx_t_8 = PyObject_GetItem(__pyx_v_self->_indices, __pyx_v_index); if (!__pyx_t_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L14_error;} - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_12 = __Pyx_PyInt_AsSize_t(__pyx_t_8); if (unlikely((__pyx_t_12 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L14_error;} - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L14_error;} - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_3 = ((PyObject *)__pyx_v_self->_name); - __Pyx_INCREF(__pyx_t_3); - __pyx_t_13.__pyx_n = 2; - __pyx_t_13.free = __pyx_t_8; - __pyx_t_13.suite_name = __pyx_t_3; - __pyx_t_7 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem(__pyx_v_self->suite, __pyx_t_12), &__pyx_t_13); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L14_error;} + __pyx_t_7 = PyObject_GetItem(__pyx_v_self->_indices, __pyx_v_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 320, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s__observe_with); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L14_error;} + + /* "cython/interface.pyx":320 + * index = self._ids.index(id) + * try: + * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< + * True, self._name).observe_with(observer) + * except: + */ + __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_7); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 320, __pyx_L14_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "cython/interface.pyx":321 + * try: + * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), + * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< + * except: + * raise NoSuchProblemException(self.name, str(id)) + */ + __pyx_t_7 = __pyx_v_self->_name; + __Pyx_INCREF(__pyx_t_7); + + /* "cython/interface.pyx":320 + * index = self._ids.index(id) + * try: + * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< + * True, self._name).observe_with(observer) + * except: + */ + __pyx_t_14.__pyx_n = 2; + __pyx_t_14.free = Py_True; + __pyx_t_14.suite_name = __pyx_t_7; + __pyx_t_3 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem(__pyx_v_self->suite, __pyx_t_13), &__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L14_error;} + + /* "cython/interface.pyx":321 + * try: + * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), + * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< + * except: + * raise NoSuchProblemException(self.name, str(id)) + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 321, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_7); - __Pyx_INCREF(__pyx_v_observer); - PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_observer); - __Pyx_GIVEREF(__pyx_v_observer); - __pyx_t_8 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L14_error;} - __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; + __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + if (!__pyx_t_3) { + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_observer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 321, __pyx_L14_error) + __Pyx_GOTREF(__pyx_t_8); + } else { + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 321, __pyx_L14_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_observer); + __Pyx_GIVEREF(__pyx_v_observer); + PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 321, __pyx_L14_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L18_try_return; + + /* "cython/interface.pyx":319 + * except: + * index = self._ids.index(id) + * try: # <<<<<<<<<<<<<< + * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), + * True, self._name).observe_with(observer) + */ } - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L21_try_end; - __pyx_L18_try_return:; - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4); - goto __pyx_L0; __pyx_L14_error:; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; @@ -3588,10 +3996,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} + if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(0, 322, __pyx_L16_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_7); - __Pyx_GOTREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_t_9); /* "cython/interface.pyx":323 * True, self._name).observe_with(observer) @@ -3600,54 +4008,82 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): */ - __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__name); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 323, __pyx_L16_except_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} - __Pyx_GOTREF(__pyx_t_9); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 323, __pyx_L16_except_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 323, __pyx_L16_except_error) + __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_v_id); - PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_id); __Pyx_GIVEREF(__pyx_v_id); - __pyx_t_14 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; - __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} - __Pyx_GOTREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); - __Pyx_GIVEREF(__pyx_t_10); - PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_14); - __Pyx_GIVEREF(__pyx_t_14); - __pyx_t_10 = 0; - __pyx_t_14 = 0; - __pyx_t_14 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} - __Pyx_GOTREF(__pyx_t_14); + PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_id); + __pyx_t_15 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 323, __pyx_L16_except_error) + __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; - __Pyx_Raise(__pyx_t_14, 0, 0, 0); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;} - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_11 = NULL; + __pyx_t_16 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + __pyx_t_16 = 1; + } + } + __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 323, __pyx_L16_except_error) + __Pyx_GOTREF(__pyx_t_17); + if (__pyx_t_11) { + __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_11); __pyx_t_11 = NULL; + } + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_16, __pyx_t_12); + __Pyx_GIVEREF(__pyx_t_15); + PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_t_15); + __pyx_t_12 = 0; + __pyx_t_15 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L16_except_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L15_exception_handled; + __PYX_ERR(0, 323, __pyx_L16_except_error) } __pyx_L16_except_error:; + + /* "cython/interface.pyx":319 + * except: + * index = self._ids.index(id) + * try: # <<<<<<<<<<<<<< + * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), + * True, self._name).observe_with(observer) + */ + __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4); goto __pyx_L1_error; - __pyx_L15_exception_handled:; + __pyx_L18_try_return:; + __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4); - __pyx_L21_try_end:; + goto __pyx_L0; } - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":281 + * self.current_problem_.observe_with(observer) + * return self.current_problem_ + * def get_problem(self, id, observer=None): # <<<<<<<<<<<<<< + * """`get_problem(self, id, observer=None)` returns a `Problem` instance, + * by default unobserved, using `id: str` or index (where `id: int`) to + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_7); @@ -3655,7 +4091,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_14); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_15); + __Pyx_XDECREF(__pyx_t_17); __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -3665,6 +4103,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob return __pyx_r; } +/* "cython/interface.pyx":325 + * raise NoSuchProblemException(self.name, str(id)) + * + * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): # <<<<<<<<<<<<<< + * """returns a `Problem` instance, by default unobserved, using function, + * dimension and instance to identify the desired problem. + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dimension_instance(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_8get_problem_by_function_dimension_instance[] = "returns a `Problem` instance, by default unobserved, using function,\n dimension and instance to identify the desired problem.\n\n If a suite contains multiple problems with the same function, dimension\n and instance, the first corresponding problem is returned.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> problem = suite.get_problem_by_function_dimension_instance(1, 2, 3)\n >>> # work work work using problem\n >>> problem.free()\n\n Details:\n - Function, dimension and instance are integer values from 1 on.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of\n `get_problem_by_function_dimension_instance`. Otherwise Python might\n just silently die, which is e.g. a known issue of the \"bbob\" observer.\n "; @@ -3673,23 +4119,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim PyObject *__pyx_v_dimension = 0; PyObject *__pyx_v_instance = 0; PyObject *__pyx_v_observer = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_problem_by_function_dimension_instance (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__function,&__pyx_n_s__dimension,&__pyx_n_s__instance,&__pyx_n_s__observer,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_function,&__pyx_n_s_dimension,&__pyx_n_s_instance,&__pyx_n_s_observer,0}; PyObject* values[4] = {0,0,0,0}; - - /* "cython/interface.pyx":325 - * raise NoSuchProblemException(self.name, str(id)) - * - * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): # <<<<<<<<<<<<<< - * """returns a `Problem` instance, by default unobserved, using function, - * dimension and instance to identify the desired problem. - */ values[3] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -3705,26 +4140,26 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__function)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_function)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dimension)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimension)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 1); __PYX_ERR(0, 325, __pyx_L3_error) } case 2: - if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__instance)) != 0)) kw_args--; + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_instance)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 2); __PYX_ERR(0, 325, __pyx_L3_error) } case 3: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__observer); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_observer); if (value) { values[3] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem_by_function_dimension_instance") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem_by_function_dimension_instance") < 0)) __PYX_ERR(0, 325, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3743,13 +4178,15 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 325, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.get_problem_by_function_dimension_instance", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dimension_instance(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), __pyx_v_function, __pyx_v_dimension, __pyx_v_instance, __pyx_v_observer); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -3775,9 +4212,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_16 = NULL; + Py_ssize_t __pyx_t_17; + PyObject *__pyx_t_18 = NULL; __Pyx_RefNannySetupContext("get_problem_by_function_dimension_instance", 0); /* "cython/interface.pyx":349 @@ -3787,7 +4224,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * cdef size_t _dimension = dimension # "conversion" to size_t * cdef size_t _instance = instance # "conversion" to size_t */ - __pyx_t_1 = __Pyx_PyInt_AsSize_t(__pyx_v_function); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_function); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 349, __pyx_L1_error) __pyx_v__function = __pyx_t_1; /* "cython/interface.pyx":350 @@ -3797,7 +4234,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * cdef size_t _instance = instance # "conversion" to size_t * */ - __pyx_t_1 = __Pyx_PyInt_AsSize_t(__pyx_v_dimension); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_dimension); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 350, __pyx_L1_error) __pyx_v__dimension = __pyx_t_1; /* "cython/interface.pyx":351 @@ -3807,7 +4244,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * * if not self.initialized: */ - __pyx_t_1 = __Pyx_PyInt_AsSize_t(__pyx_v_instance); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_instance); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 351, __pyx_L1_error) __pyx_v__instance = __pyx_t_1; /* "cython/interface.pyx":353 @@ -3817,8 +4254,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * raise ValueError("Suite has been finalized/free'ed") * try: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_3 = (!__pyx_t_2); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 353, __pyx_L1_error) + __pyx_t_3 = ((!__pyx_t_2) != 0); if (__pyx_t_3) { /* "cython/interface.pyx":354 @@ -3828,14 +4265,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, */ - __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_12), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 354, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L3; + __PYX_ERR(0, 354, __pyx_L1_error) + + /* "cython/interface.pyx":353 + * cdef size_t _instance = instance # "conversion" to size_t + * + * if not self.initialized: # <<<<<<<<<<<<<< + * raise ValueError("Suite has been finalized/free'ed") + * try: + */ } - __pyx_L3:; /* "cython/interface.pyx":355 * if not self.initialized: @@ -3845,6 +4288,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * _dimension, _instance), */ { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); @@ -3867,46 +4312,75 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * except: * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, */ - __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_8 = ((PyObject *)__pyx_v_self->_name); + __pyx_t_8 = __pyx_v_self->_name; __Pyx_INCREF(__pyx_t_8); + + /* "cython/interface.pyx":356 + * raise ValueError("Suite has been finalized/free'ed") + * try: + * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, # <<<<<<<<<<<<<< + * _dimension, _instance), + * True, self._name).observe_with(observer) + */ __pyx_t_10.__pyx_n = 2; - __pyx_t_10.free = __pyx_t_4; + __pyx_t_10.free = Py_True; __pyx_t_10.suite_name = __pyx_t_8; - __pyx_t_9 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem_by_function_dimension_instance(__pyx_v_self->suite, __pyx_v__function, __pyx_v__dimension, __pyx_v__instance), &__pyx_t_10); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __pyx_t_9 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem_by_function_dimension_instance(__pyx_v_self->suite, __pyx_v__function, __pyx_v__dimension, __pyx_v__instance), &__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 356, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s__observe_with); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + + /* "cython/interface.pyx":358 + * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, + * _dimension, _instance), + * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< + * except: + * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 358, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;} - __Pyx_GOTREF(__pyx_t_9); - __Pyx_INCREF(__pyx_v_observer); - PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_observer); - __Pyx_GIVEREF(__pyx_v_observer); - __pyx_t_4 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;} - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + } + } + if (!__pyx_t_9) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 358, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + } else { + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 358, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; + __Pyx_INCREF(__pyx_v_observer); + __Pyx_GIVEREF(__pyx_v_observer); + PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_observer); + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 358, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L8_try_return; + + /* "cython/interface.pyx":355 + * if not self.initialized: + * raise ValueError("Suite has been finalized/free'ed") + * try: # <<<<<<<<<<<<<< + * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, + * _dimension, _instance), + */ } - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L11_try_end; - __pyx_L8_try_return:; - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); - goto __pyx_L0; __pyx_L4_error:; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; /* "cython/interface.pyx":359 @@ -3918,10 +4392,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem_by_function_dimension_instance", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_9, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_11) < 0) __PYX_ERR(0, 359, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_9); __Pyx_GOTREF(__pyx_t_8); + __Pyx_GOTREF(__pyx_t_11); /* "cython/interface.pyx":360 * True, self._name).observe_with(observer) @@ -3930,12 +4404,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * dimension, * instance)) */ - __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__name); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 360, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_12); - __pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_u_13), __pyx_n_s__format); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 360, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_13); + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_function_dimension_instance, __pyx_n_s_format); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_15); /* "cython/interface.pyx":362 * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, @@ -3944,57 +4418,100 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * * def __getitem__(self, key): */ - __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} - __Pyx_GOTREF(__pyx_t_14); + __pyx_t_16 = NULL; + __pyx_t_17 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_15))) { + __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_15); + if (likely(__pyx_t_16)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); + __Pyx_INCREF(__pyx_t_16); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_15, function); + __pyx_t_17 = 1; + } + } + __pyx_t_18 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_18); + if (__pyx_t_16) { + __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_16); __pyx_t_16 = NULL; + } __Pyx_INCREF(__pyx_v_function); - PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v_function); __Pyx_GIVEREF(__pyx_v_function); + PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_17, __pyx_v_function); __Pyx_INCREF(__pyx_v_dimension); - PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_v_dimension); __Pyx_GIVEREF(__pyx_v_dimension); + PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_v_dimension); __Pyx_INCREF(__pyx_v_instance); - PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_v_instance); __Pyx_GIVEREF(__pyx_v_instance); - __pyx_t_15 = PyObject_Call(__pyx_t_13, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} - __Pyx_GOTREF(__pyx_t_15); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0; - __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + PyTuple_SET_ITEM(__pyx_t_18, 2+__pyx_t_17, __pyx_v_instance); + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_18, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 360, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_14); - PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_15); - __Pyx_GIVEREF(__pyx_t_15); - __pyx_t_12 = 0; - __pyx_t_15 = 0; - __pyx_t_15 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} - __Pyx_GOTREF(__pyx_t_15); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0; - __Pyx_Raise(__pyx_t_15, 0, 0, 0); + __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_15 = NULL; + __pyx_t_17 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) { + __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_12); + if (likely(__pyx_t_15)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); + __Pyx_INCREF(__pyx_t_15); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_12, function); + __pyx_t_17 = 1; + } + } + __pyx_t_18 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_18); + if (__pyx_t_15) { + __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_15); __pyx_t_15 = NULL; + } + __Pyx_GIVEREF(__pyx_t_13); + PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_17, __pyx_t_13); + __Pyx_GIVEREF(__pyx_t_14); + PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_t_14); + __pyx_t_13 = 0; + __pyx_t_14 = 0; + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_18, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L5_exception_handled; + __PYX_ERR(0, 360, __pyx_L6_except_error) } __pyx_L6_except_error:; + + /* "cython/interface.pyx":355 + * if not self.initialized: + * raise ValueError("Suite has been finalized/free'ed") + * try: # <<<<<<<<<<<<<< + * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, + * _dimension, _instance), + */ + __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); goto __pyx_L1_error; - __pyx_L5_exception_handled:; + __pyx_L8_try_return:; + __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); - __pyx_L11_try_end:; + goto __pyx_L0; } - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":325 + * raise NoSuchProblemException(self.name, str(id)) + * + * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): # <<<<<<<<<<<<<< + * """returns a `Problem` instance, by default unobserved, using function, + * dimension and instance to identify the desired problem. + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_8); @@ -4004,6 +4521,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_XDECREF(__pyx_t_13); __Pyx_XDECREF(__pyx_t_14); __Pyx_XDECREF(__pyx_t_15); + __Pyx_XDECREF(__pyx_t_16); + __Pyx_XDECREF(__pyx_t_18); __Pyx_AddTraceback("cocoex.interface.Suite.get_problem_by_function_dimension_instance", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -4012,10 +4531,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/ -static char __pyx_doc_6cocoex_9interface_5Suite_10__getitem__[] = "`self[i]` is a synonym for `self.get_problem(i)`, see `get_problem`\n "; -#if CYTHON_COMPILING_IN_CPYTHON +/* "cython/interface.pyx":364 + * instance)) + * + * def __getitem__(self, key): # <<<<<<<<<<<<<< + * """`self[i]` is a synonym for `self.get_problem(i)`, see `get_problem` + * """ + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/ +static char __pyx_doc_6cocoex_9interface_5Suite_10__getitem__[] = "`self[i]` is a synonym for `self.get_problem(i)`, see `get_problem`\n "; +#if CYTHON_COMPILING_IN_CPYTHON struct wrapperbase __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__; #endif static PyObject *__pyx_pw_6cocoex_9interface_5Suite_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) { @@ -4023,27 +4550,19 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_11__getitem__(PyObject *__py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_10__getitem__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), ((PyObject *)__pyx_v_key)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":364 - * instance)) - * - * def __getitem__(self, key): # <<<<<<<<<<<<<< - * """`self[i]` is a synonym for `self.get_problem(i)`, see `get_problem` - * """ - */ - static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, PyObject *__pyx_v_key) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("__getitem__", 0); /* "cython/interface.pyx":367 @@ -4054,27 +4573,51 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o * def free(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_problem); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 367, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_key); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key); - __Pyx_GIVEREF(__pyx_v_key); - __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; + __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 367, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 367, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_key); + __Pyx_GIVEREF(__pyx_v_key); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_key); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 367, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":364 + * instance)) + * + * def __getitem__(self, key): # <<<<<<<<<<<<<< + * """`self[i]` is a synonym for `self.get_problem(i)`, see `get_problem` + * """ + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface.Suite.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -4083,6 +4626,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o return __pyx_r; } +/* "cython/interface.pyx":369 + * return self.get_problem(key) + * + * def free(self): # <<<<<<<<<<<<<< + * """free underlying C structures""" + * self.__dealloc__() + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_13free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_12free[] = "free underlying C structures"; @@ -4091,26 +4642,18 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_13free(PyObject *__pyx_v_sel __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("free (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_12free(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":369 - * return self.get_problem(key) - * - * def free(self): # <<<<<<<<<<<<<< - * """free underlying C structures""" - * self.__dealloc__() - */ - static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("free", 0); /* "cython/interface.pyx":371 @@ -4120,12 +4663,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc * self.suite = NULL * self.initialized = False # not (yet) visible from outside */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s____dealloc__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dealloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "cython/interface.pyx":372 * """free underlying C structures""" @@ -4143,19 +4701,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc * def __dealloc__(self): * if self.suite: */ - __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); + __Pyx_INCREF(Py_False); + __Pyx_GIVEREF(Py_False); __Pyx_GOTREF(__pyx_v_self->initialized); __Pyx_DECREF(__pyx_v_self->initialized); - __pyx_v_self->initialized = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_v_self->initialized = Py_False; + + /* "cython/interface.pyx":369 + * return self.get_problem(key) + * + * def free(self): # <<<<<<<<<<<<<< + * """free underlying C structures""" + * self.__dealloc__() + */ + /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cocoex.interface.Suite.free", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -4164,23 +4730,25 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc return __pyx_r; } +/* "cython/interface.pyx":374 + * self.suite = NULL + * self.initialized = False # not (yet) visible from outside + * def __dealloc__(self): # <<<<<<<<<<<<<< + * if self.suite: + * coco_suite_free(self.suite) + */ + /* Python wrapper */ static void __pyx_pw_6cocoex_9interface_5Suite_15__dealloc__(PyObject *__pyx_v_self); /*proto*/ static void __pyx_pw_6cocoex_9interface_5Suite_15__dealloc__(PyObject *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); } -/* "cython/interface.pyx":374 - * self.suite = NULL - * self.initialized = False # not (yet) visible from outside - * def __dealloc__(self): # <<<<<<<<<<<<<< - * if self.suite: - * coco_suite_free(self.suite) - */ - static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -4204,13 +4772,36 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c * def find_problem_ids(self, *args, **kwargs): */ coco_suite_free(__pyx_v_self->suite); - goto __pyx_L3; + + /* "cython/interface.pyx":375 + * self.initialized = False # not (yet) visible from outside + * def __dealloc__(self): + * if self.suite: # <<<<<<<<<<<<<< + * coco_suite_free(self.suite) + * + */ } - __pyx_L3:; + /* "cython/interface.pyx":374 + * self.suite = NULL + * self.initialized = False # not (yet) visible from outside + * def __dealloc__(self): # <<<<<<<<<<<<<< + * if self.suite: + * coco_suite_free(self.suite) + */ + + /* function exit code */ __Pyx_RefNannyFinishContext(); } +/* "cython/interface.pyx":378 + * coco_suite_free(self.suite) + * + * def find_problem_ids(self, *args, **kwargs): # <<<<<<<<<<<<<< + * """has been renamed to `ids`""" + * raise NotImplementedError( + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_17find_problem_ids(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_16find_problem_ids[] = "has been renamed to `ids`"; @@ -4221,33 +4812,21 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_17find_problem_ids(PyObject __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("find_problem_ids (wrapper)", 0); if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "find_problem_ids", 1))) return NULL; - __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); - if (unlikely(!__pyx_v_kwargs)) return NULL; - __Pyx_GOTREF(__pyx_v_kwargs); __Pyx_INCREF(__pyx_args); __pyx_v_args = __pyx_args; __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs); + + /* function exit code */ __Pyx_XDECREF(__pyx_v_args); __Pyx_XDECREF(__pyx_v_kwargs); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":378 - * coco_suite_free(self.suite) - * - * def find_problem_ids(self, *args, **kwargs): # <<<<<<<<<<<<<< - * """has been renamed to `ids`""" - * raise NotImplementedError( - */ - static PyObject *__pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("find_problem_ids", 0); /* "cython/interface.pyx":380 @@ -4257,24 +4836,38 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(CYTHON_UN * "`find_problem_ids()` has been renamed to `ids()`") * */ - __pyx_t_1 = PyObject_Call(__pyx_builtin_NotImplementedError, ((PyObject *)__pyx_k_tuple_15), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __PYX_ERR(0, 380, __pyx_L1_error) - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":378 + * coco_suite_free(self.suite) + * + * def find_problem_ids(self, *args, **kwargs): # <<<<<<<<<<<<<< + * """has been renamed to `ids`""" + * raise NotImplementedError( + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Suite.find_problem_ids", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":384 + * + * + * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< + * """`ids(*id_snippets, get_problem=False, verbose=False)` + * return all problem IDs that contain all of the `id_snippets`. + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_6cocoex_9interface_5Suite_18ids[] = "`ids(*id_snippets, get_problem=False, verbose=False)`\n return all problem IDs that contain all of the `id_snippets`.\n\n An ID can be used for indexing, that is, when calling the method\n `get_problem(id)`.\n\n If `get_problem is True`, the problem for the first matching ID is\n returned.\n\n >>> import cocoex as ex\n >>> s = ex.Suite(\"bbob\", \"\", \"\")\n >>> s.ids(\"f001\", \"d10\", \"i01\")\n ['bbob_f001_i01_d10']\n\n We can sweep through all instances of the ellipsoidal function f10\n in 20-D of the BBOB suite like this::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> ids = suite.ids(\"f010\", \"d20\")\n >>> used_indices = []\n >>> for p in suite:\n ... if p.id in ids:\n ... # work work work with problem `p`\n ... used_indices.append(p.index)\n >>> print(used_indices)\n [1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589]\n\n A desired problem can also be filtered out during creation::\n\n >>> import cocoex as ex\n >>> f9 = ex.Suite(\"bbob\", \"\",\n ... \"function_indices:9 dimensions:20 instance_indices:1-5\")[0]\n >>> print(f9.id)\n bbob_f009_i01_d20\n\n "; @@ -4282,9 +4875,6 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self PyObject *__pyx_v_get_problem = 0; PyObject *__pyx_v_verbose = 0; PyObject *__pyx_v_id_snippets = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("ids (wrapper)", 0); @@ -4299,10 +4889,10 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self __pyx_v_id_snippets = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); } { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__get_problem,&__pyx_n_s__verbose,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_get_problem,&__pyx_n_s_verbose,0}; PyObject* values[2] = {0,0}; - values[0] = __pyx_k_16; - values[1] = __pyx_k_17; + values[0] = ((PyObject *)Py_False); + values[1] = ((PyObject *)Py_False); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); @@ -4319,7 +4909,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "ids") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "ids") < 0)) __PYX_ERR(0, 384, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) < 0) { goto __pyx_L5_argtuple_error; @@ -4330,7 +4920,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("ids", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("ids", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 384, __pyx_L3_error) __pyx_L3_error:; __Pyx_DECREF(__pyx_v_id_snippets); __pyx_v_id_snippets = 0; __Pyx_AddTraceback("cocoex.interface.Suite.ids", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -4338,19 +4928,13 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_18ids(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), __pyx_v_get_problem, __pyx_v_verbose, __pyx_v_id_snippets); + + /* function exit code */ __Pyx_XDECREF(__pyx_v_id_snippets); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":384 - * - * - * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< - * """`ids(*id_snippets, get_problem=False, verbose=False)` - * return all problem IDs that contain all of the `id_snippets`. - */ - static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, PyObject *__pyx_v_get_problem, PyObject *__pyx_v_verbose, PyObject *__pyx_v_id_snippets) { PyObject *__pyx_v_res = NULL; PyObject *__pyx_v_idx = NULL; @@ -4368,11 +4952,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; - int __pyx_t_11; + PyObject *__pyx_t_11 = NULL; int __pyx_t_12; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + int __pyx_t_13; __Pyx_RefNannySetupContext("ids", 0); /* "cython/interface.pyx":422 @@ -4382,7 +4964,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_res = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; @@ -4396,47 +4978,50 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco */ __Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; - if (PyList_CheckExact(__pyx_v_self->_ids) || PyTuple_CheckExact(__pyx_v_self->_ids)) { + if (likely(PyList_CheckExact(__pyx_v_self->_ids)) || PyTuple_CheckExact(__pyx_v_self->_ids)) { __pyx_t_2 = __pyx_v_self->_ids; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_ids); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 423, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; + __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 423, __pyx_L1_error) } for (;;) { - if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_2)) { - if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - #endif - } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_2)) { - if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - #endif + if (likely(!__pyx_t_4)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_COMPILING_IN_CPYTHON + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 423, __pyx_L1_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 423, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } else { + if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_COMPILING_IN_CPYTHON + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 423, __pyx_L1_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 423, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } } else { __pyx_t_5 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_5)) { - if (PyErr_Occurred()) { - if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); - else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 423, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_5); } - __Pyx_XDECREF(__pyx_v_id); - __pyx_v_id = __pyx_t_5; + __Pyx_XDECREF_SET(__pyx_v_id, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_v_idx); - __pyx_v_idx = __pyx_t_1; - __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_1); + __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 423, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; @@ -4449,47 +5034,63 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * if verbose: * print(" id=%s, index=%d" % (id, idx)) */ - __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = ((PyObject *)__pyx_v_id_snippets); __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0; + __pyx_t_6 = __pyx_v_id_snippets; __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0; for (;;) { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 424, __pyx_L1_error) #else - __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 424, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); #endif - __Pyx_XDECREF(__pyx_v_i); - __pyx_v_i = __pyx_t_8; + __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_id, __pyx_n_s__find); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_id, __pyx_n_s_find); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __Pyx_INCREF(__pyx_v_i); - PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_i); - __Pyx_GIVEREF(__pyx_v_i); - __pyx_t_10 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_10); + __pyx_t_10 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + } + } + if (!__pyx_t_10) { + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_i); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 424, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + } else { + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 424, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL; + __Pyx_INCREF(__pyx_v_i); + __Pyx_GIVEREF(__pyx_v_i); + PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_i); + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 424, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 424, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; - __pyx_t_9 = PyObject_RichCompare(__pyx_t_10, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_9))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 424, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_5)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_5)); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyObject_Call(__pyx_builtin_all, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; - __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 424, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_11) { + if (__pyx_t_12) { /* "cython/interface.pyx":425 * for idx, id in enumerate(self._ids): @@ -4498,8 +5099,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * print(" id=%s, index=%d" % (id, idx)) * res.append(id) */ - __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_verbose); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__pyx_t_11) { + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_verbose); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 425, __pyx_L1_error) + if (__pyx_t_12) { /* "cython/interface.pyx":426 * if all([id.find(i) >= 0 for i in id_snippets]): @@ -4508,29 +5109,35 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * res.append(id) * if get_problem: */ - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_id); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_id); __Pyx_GIVEREF(__pyx_v_id); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_id); __Pyx_INCREF(__pyx_v_idx); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_idx); __Pyx_GIVEREF(__pyx_v_idx); - __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_18), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_6)); - __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_idx); + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_id_s_index_d, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 426, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_6)); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyObject_Call(__pyx_builtin_print, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L8; + + /* "cython/interface.pyx":425 + * for idx, id in enumerate(self._ids): + * if all([id.find(i) >= 0 for i in id_snippets]): + * if verbose: # <<<<<<<<<<<<<< + * print(" id=%s, index=%d" % (id, idx)) + * res.append(id) + */ } - __pyx_L8:; /* "cython/interface.pyx":427 * if verbose: @@ -4539,10 +5146,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * if get_problem: * return self.get_problem(res[0]) */ - __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_res, __pyx_v_id); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L5; + __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_res, __pyx_v_id); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 427, __pyx_L1_error) + + /* "cython/interface.pyx":424 + * res = [] + * for idx, id in enumerate(self._ids): + * if all([id.find(i) >= 0 for i in id_snippets]): # <<<<<<<<<<<<<< + * if verbose: + * print(" id=%s, index=%d" % (id, idx)) + */ } - __pyx_L5:; + + /* "cython/interface.pyx":423 + * """ + * res = [] + * for idx, id in enumerate(self._ids): # <<<<<<<<<<<<<< + * if all([id.find(i) >= 0 for i in id_snippets]): + * if verbose: + */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -4554,8 +5175,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * return self.get_problem(res[0]) * return res */ - __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_get_problem); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__pyx_t_11) { + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_get_problem); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 428, __pyx_L1_error) + if (__pyx_t_12) { /* "cython/interface.pyx":429 * res.append(id) @@ -4565,25 +5186,48 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_problem); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_res), 0, sizeof(long), PyInt_FromLong, 1, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_t_5 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_5) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 429, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; goto __pyx_L0; - goto __pyx_L9; + + /* "cython/interface.pyx":428 + * print(" id=%s, index=%d" % (id, idx)) + * res.append(id) + * if get_problem: # <<<<<<<<<<<<<< + * return self.get_problem(res[0]) + * return res + */ } - __pyx_L9:; /* "cython/interface.pyx":430 * if get_problem: @@ -4593,12 +5237,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * @property */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_res)); - __pyx_r = ((PyObject *)__pyx_v_res); + __Pyx_INCREF(__pyx_v_res); + __pyx_r = __pyx_v_res; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":384 + * + * + * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< + * """`ids(*id_snippets, get_problem=False, verbose=False)` + * return all problem IDs that contain all of the `id_snippets`. + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); @@ -4607,6 +5258,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("cocoex.interface.Suite.ids", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -4619,18 +5271,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_21current_problem(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_5Suite_20current_problem[] = "current \"open/active\" problem to be benchmarked"; -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_21current_problem(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("current_problem (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_20current_problem(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":433 * * @property @@ -4639,10 +5279,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_21current_problem(PyObject * * return self.current_problem_ */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20current_problem(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_15current_problem_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_15current_problem_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("current_problem", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":435 * def current_problem(self): @@ -4656,25 +5309,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20current_problem(struct __p __pyx_r = __pyx_v_self->current_problem_; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "cython/interface.pyx":433 + * + * @property + * def current_problem(self): # <<<<<<<<<<<<<< + * """current "open/active" problem to be benchmarked""" + * return self.current_problem_ + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_23current_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_5Suite_22current_index[] = "index in the enumerator of all problems in this suite.\n\n Details: To get the index in the underlying C implementation, which\n usually matches `current_index` one-to-one, use::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> suite.current_index is None\n True\n >>> suite.next_problem().id[-17:].lower()\n 'bbob_f001_i01_d02'\n >>> suite.current_index, suite.indices[suite.current_index]\n (0, 0)\n\n "; -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_23current_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("current_index (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_22current_index(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":437 * return self.current_problem_ * @property @@ -4683,10 +5332,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_23current_index(PyObject *__ * */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22current_index(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_13current_index_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_13current_index_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("current_index", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":453 * @@ -4700,25 +5362,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22current_index(struct __pyx __pyx_r = __pyx_v_self->_current_index; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "cython/interface.pyx":437 + * return self.current_problem_ + * @property + * def current_index(self): # <<<<<<<<<<<<<< + * """index in the enumerator of all problems in this suite. + * + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_25problem_names(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_5Suite_24problem_names[] = "list of problem names in this `Suite`, see also `ids`"; -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_25problem_names(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("problem_names (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_24problem_names(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":455 * return self._current_index * @property @@ -4727,15 +5385,24 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_25problem_names(PyObject *__ * return list(self._names) */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_24problem_names(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_13problem_names_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_13problem_names_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("problem_names", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":457 * def problem_names(self): @@ -4745,24 +5412,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_24problem_names(struct __pyx * def dimensions(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_List(__pyx_v_self->_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 457, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_self->_names); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->_names); - __Pyx_GIVEREF(__pyx_v_self->_names); - __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":455 + * return self._current_index + * @property + * def problem_names(self): # <<<<<<<<<<<<<< + * """list of problem names in this `Suite`, see also `ids`""" + * return list(self._names) + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("cocoex.interface.Suite.problem_names", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Suite.problem_names.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -4770,18 +5437,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_24problem_names(struct __pyx return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_27dimensions(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_5Suite_26dimensions[] = "list of problem dimensions occuring at least once in this `Suite`"; -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_27dimensions(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("dimensions (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_26dimensions(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":459 * return list(self._names) * @property @@ -4790,15 +5445,27 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_27dimensions(PyObject *__pyx * return sorted(set(self._dimensions)) */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26dimensions(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_10dimensions_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_10dimensions_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("dimensions", 0); + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":461 * def dimensions(self): @@ -4808,32 +5475,32 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26dimensions(struct __pyx_ob * def number_of_objectives(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_self->_dimensions); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->_dimensions); - __Pyx_GIVEREF(__pyx_v_self->_dimensions); - __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PySet_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PySet_New(__pyx_v_self->_dimensions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 461, __pyx_L1_error) + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":459 + * return list(self._names) + * @property + * def dimensions(self): # <<<<<<<<<<<<<< + * """list of problem dimensions occuring at least once in this `Suite`""" + * return sorted(set(self._dimensions)) + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("cocoex.interface.Suite.dimensions", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("cocoex.interface.Suite.dimensions.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -4841,18 +5508,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26dimensions(struct __pyx_ob return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_29number_of_objectives(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_5Suite_28number_of_objectives[] = "list of number of objectives occuring in this `Suite`"; -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_29number_of_objectives(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("number_of_objectives (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_28number_of_objectives(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":463 * return sorted(set(self._dimensions)) * @property @@ -4861,15 +5516,27 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_29number_of_objectives(PyObj * return sorted(set(self._number_of_objectives)) */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_28number_of_objectives(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_20number_of_objectives_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_20number_of_objectives_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("number_of_objectives", 0); + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":465 * def number_of_objectives(self): @@ -4879,32 +5546,32 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_28number_of_objectives(struc * def indices(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_self->_number_of_objectives); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->_number_of_objectives); - __Pyx_GIVEREF(__pyx_v_self->_number_of_objectives); - __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PySet_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PySet_New(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 465, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 465, __pyx_L1_error) + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":463 + * return sorted(set(self._dimensions)) + * @property + * def number_of_objectives(self): # <<<<<<<<<<<<<< + * """list of number of objectives occuring in this `Suite`""" + * return sorted(set(self._number_of_objectives)) + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("cocoex.interface.Suite.number_of_objectives", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("cocoex.interface.Suite.number_of_objectives.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -4912,18 +5579,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_28number_of_objectives(struc return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_31indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_5Suite_30indices[] = "list of all problem indices, deprecated.\n \n These values are (only) used to call the underlying C structures.\n Indices used in the Python interface run between 0 and `len(self)`.\n "; -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_31indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("indices (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_30indices(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":467 * return sorted(set(self._number_of_objectives)) * @property @@ -4932,15 +5587,24 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_31indices(PyObject *__pyx_v_ * */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_30indices(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7indices_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7indices_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_7indices___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("indices", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":473 * Indices used in the Python interface run between 0 and `len(self)`. @@ -4950,24 +5614,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_30indices(struct __pyx_obj_6 * def name(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_List(__pyx_v_self->_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_self->_indices); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->_indices); - __Pyx_GIVEREF(__pyx_v_self->_indices); - __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":467 + * return sorted(set(self._number_of_objectives)) + * @property + * def indices(self): # <<<<<<<<<<<<<< + * """list of all problem indices, deprecated. + * + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("cocoex.interface.Suite.indices", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Suite.indices.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -4975,18 +5639,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_30indices(struct __pyx_obj_6 return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_33name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_5Suite_32name[] = "name of this suite as used to instantiate the suite via `Suite(name, ...)`"; -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_33name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("name (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_32name(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":475 * return list(self._indices) * @property @@ -4995,10 +5647,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_33name(PyObject *__pyx_v_sel * return self._name */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_32name(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_4name_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_4name___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("name", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":477 * def name(self): @@ -5008,29 +5673,25 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_32name(struct __pyx_obj_6coc * def instance(self): */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self->_name)); - __pyx_r = ((PyObject *)__pyx_v_self->_name); + __Pyx_INCREF(__pyx_v_self->_name); + __pyx_r = __pyx_v_self->_name; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "cython/interface.pyx":475 + * return list(self._indices) + * @property + * def name(self): # <<<<<<<<<<<<<< + * """name of this suite as used to instantiate the suite via `Suite(name, ...)`""" + * return self._name + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_35instance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_5Suite_34instance[] = "instance of this suite as used to instantiate the suite via\n `Suite(name, instance, ...)`"; -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_35instance(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("instance (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_34instance(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":479 * return self._name * @property @@ -5039,10 +5700,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_35instance(PyObject *__pyx_v * `Suite(name, instance, ...)`""" */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_34instance(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_8instance_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_8instance_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_8instance___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("instance", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":482 * """instance of this suite as used to instantiate the suite via @@ -5052,29 +5726,25 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_34instance(struct __pyx_obj_ * def options(self): */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self->_instance)); - __pyx_r = ((PyObject *)__pyx_v_self->_instance); + __Pyx_INCREF(__pyx_v_self->_instance); + __pyx_r = __pyx_v_self->_instance; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "cython/interface.pyx":479 + * return self._name + * @property + * def instance(self): # <<<<<<<<<<<<<< + * """instance of this suite as used to instantiate the suite via + * `Suite(name, instance, ...)`""" + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_37options(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_5Suite_36options[] = "options for this suite as used to instantiate the suite via\n `Suite(name, instance, options)`"; -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_37options(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("options (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_36options(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":484 * return self._instance * @property @@ -5083,10 +5753,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_37options(PyObject *__pyx_v_ * `Suite(name, instance, options)`""" */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_36options(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7options_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7options_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_7options___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("options", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":487 * """options for this suite as used to instantiate the suite via @@ -5096,28 +5779,25 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_36options(struct __pyx_obj_6 * @property */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self->_options)); - __pyx_r = ((PyObject *)__pyx_v_self->_options); + __Pyx_INCREF(__pyx_v_self->_options); + __pyx_r = __pyx_v_self->_options; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "cython/interface.pyx":484 + * return self._instance + * @property + * def options(self): # <<<<<<<<<<<<<< + * """options for this suite as used to instantiate the suite via + * `Suite(name, instance, options)`""" + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_39info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_39info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("info (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_38info(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":490 * * @property @@ -5126,15 +5806,25 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_39info(PyObject *__pyx_v_sel * def __repr__(self): */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_38info(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_4info_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_4info_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_4info___get__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("info", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":491 * @property @@ -5144,24 +5834,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_38info(struct __pyx_obj_6coc * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":490 + * + * @property + * def info(self): # <<<<<<<<<<<<<< + * return str(self) + * def __repr__(self): + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("cocoex.interface.Suite.info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Suite.info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -5169,17 +5866,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_38info(struct __pyx_obj_6coc return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_41__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_41__repr__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_40__repr__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":492 * def info(self): * return str(self) @@ -5188,16 +5874,26 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_41__repr__(PyObject *__pyx_v * def __str__(self): */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_40__repr__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_21__repr__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_21__repr__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_20__repr__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); /* "cython/interface.pyx":493 @@ -5208,32 +5904,39 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_40__repr__(struct __pyx_obj_ * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__instance); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__options); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_19), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __pyx_r = ((PyObject *)__pyx_t_3); + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Suite_r_r_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 493, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":492 + * def info(self): + * return str(self) + * def __repr__(self): # <<<<<<<<<<<<<< + * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets + * def __str__(self): + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); @@ -5247,17 +5950,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_40__repr__(struct __pyx_obj_ return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_43__str__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_43__str__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_42__str__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":494 * def __repr__(self): * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets @@ -5266,7 +5958,20 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_43__str__(PyObject *__pyx_v_ * % (self.name, self.instance, self.options, */ -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_42__str__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_23__str__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_23__str__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_22__str__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -5279,9 +5984,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_42__str__(struct __pyx_obj_6 PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__str__", 0); /* "cython/interface.pyx":495 @@ -5300,11 +6002,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_42__str__(struct __pyx_obj_6 * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__instance); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__options); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); /* "cython/interface.pyx":497 @@ -5314,16 +6016,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_42__str__(struct __pyx_obj_6 * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) */ - __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 497, __pyx_L1_error) + __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if ((__pyx_t_4 == 1)) { - __Pyx_INCREF(((PyObject *)__pyx_kp_u_3)); - __pyx_t_6 = ((PyObject *)__pyx_kp_u_3); + __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 497, __pyx_L1_error) + if (((__pyx_t_4 == 1) != 0)) { + __Pyx_INCREF(__pyx_kp_u__2); + __pyx_t_6 = __pyx_kp_u__2; } else { - __Pyx_INCREF(((PyObject *)__pyx_n_u__s)); - __pyx_t_6 = ((PyObject *)__pyx_n_u__s); + __Pyx_INCREF(__pyx_n_u_s); + __pyx_t_6 = __pyx_n_u_s; } /* "cython/interface.pyx":498 @@ -5333,16 +6035,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_42__str__(struct __pyx_obj_6 * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__dimensions); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_4 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 498, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if ((__pyx_t_4 == 1)) { - __Pyx_INCREF(((PyObject *)__pyx_kp_u_3)); - __pyx_t_7 = ((PyObject *)__pyx_kp_u_3); + if (((__pyx_t_4 == 1) != 0)) { + __Pyx_INCREF(__pyx_kp_u__2); + __pyx_t_7 = __pyx_kp_u__2; } else { - __Pyx_INCREF(((PyObject *)__pyx_n_u__s)); - __pyx_t_7 = ((PyObject *)__pyx_n_u__s); + __Pyx_INCREF(__pyx_n_u_s); + __pyx_t_7 = __pyx_n_u_s; } /* "cython/interface.pyx":499 @@ -5352,53 +6054,61 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_42__str__(struct __pyx_obj_6 * def __len__(self): * return len(self._indices) */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__dimensions); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_min, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__dimensions); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0; - __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); - PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); __pyx_t_8 = 0; __pyx_t_9 = 0; - __pyx_t_9 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_21), ((PyObject *)__pyx_t_10)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_9)); - __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0; - __pyx_t_10 = PyTuple_New(7); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 499, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "cython/interface.pyx":496 + * def __str__(self): + * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ + * % (self.name, self.instance, self.options, # <<<<<<<<<<<<<< + * len(self), '' if len(self) == 1 else 's', + * '' if len(self.dimensions) == 1 else 's', + */ + __pyx_t_10 = PyTuple_New(7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_10, 4, __pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_10, 5, __pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_10, 4, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_10, 6, ((PyObject *)__pyx_t_9)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_9)); + PyTuple_SET_ITEM(__pyx_t_10, 5, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_10, 6, __pyx_t_9); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; @@ -5406,15 +6116,22 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_42__str__(struct __pyx_obj_6 __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_9 = 0; - __pyx_t_9 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_20), ((PyObject *)__pyx_t_10)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_9)); - __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0; - __pyx_r = ((PyObject *)__pyx_t_9); + __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 496, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_r = __pyx_t_9; __pyx_t_9 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":494 + * def __repr__(self): + * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets + * def __str__(self): # <<<<<<<<<<<<<< + * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ + * % (self.name, self.instance, self.options, + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); @@ -5433,17 +6150,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_42__str__(struct __pyx_obj_6 return __pyx_r; } -/* Python wrapper */ -static Py_ssize_t __pyx_pw_6cocoex_9interface_5Suite_45__len__(PyObject *__pyx_v_self); /*proto*/ -static Py_ssize_t __pyx_pw_6cocoex_9interface_5Suite_45__len__(PyObject *__pyx_v_self) { - Py_ssize_t __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_44__len__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":500 * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) @@ -5452,14 +6158,24 @@ static Py_ssize_t __pyx_pw_6cocoex_9interface_5Suite_45__len__(PyObject *__pyx_v * */ -static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_44__len__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +/* Python wrapper */ +static Py_ssize_t __pyx_pw_6cocoex_9interface_5Suite_25__len__(PyObject *__pyx_v_self); /*proto*/ +static Py_ssize_t __pyx_pw_6cocoex_9interface_5Suite_25__len__(PyObject *__pyx_v_self) { + Py_ssize_t __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_24__len__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__len__", 0); /* "cython/interface.pyx":501 @@ -5471,13 +6187,20 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_44__len__(struct __pyx_obj_ */ __pyx_t_1 = __pyx_v_self->_indices; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 501, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; goto __pyx_L0; - __pyx_r = 0; - goto __pyx_L0; + /* "cython/interface.pyx":500 + * '' if len(self.dimensions) == 1 else 's', + * '%d=%d' % (min(self.dimensions), max(self.dimensions))) + * def __len__(self): # <<<<<<<<<<<<<< + * return len(self._indices) + * + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Suite.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -5486,38 +6209,37 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_44__len__(struct __pyx_obj_ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ +static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ + +/* "cython/interface.pyx":503 + * return len(self._indices) + * + * def __iter__(self): # <<<<<<<<<<<<<< + * """iterator over self. + * + */ /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_47__iter__(PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_6cocoex_9interface_5Suite_46__iter__[] = "iterator over self.\n\n CAVEAT: this function uses `next_problem` and has a side effect on the\n state of the `current_problem` and `current_index` attributes. `reset()`\n rewinds the suite to the initial state. "; +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_27__iter__(PyObject *__pyx_v_self); /*proto*/ +static char __pyx_doc_6cocoex_9interface_5Suite_26__iter__[] = "iterator over self.\n\n CAVEAT: this function uses `next_problem` and has a side effect on the\n state of the `current_problem` and `current_index` attributes. `reset()`\n rewinds the suite to the initial state. "; #if CYTHON_COMPILING_IN_CPYTHON -struct wrapperbase __pyx_wrapperbase_6cocoex_9interface_5Suite_46__iter__; +struct wrapperbase __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__; #endif -static PyObject *__pyx_pw_6cocoex_9interface_5Suite_47__iter__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_27__iter__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_46__iter__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_26__iter__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":503 - * return len(self._indices) - * - * def __iter__(self): # <<<<<<<<<<<<<< - * """iterator over self. - * - */ - -static PyObject *__pyx_pf_6cocoex_9interface_5Suite_46__iter__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__iter__", 0); __pyx_cur_scope = (struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)__pyx_tp_new_6cocoex_9interface___pyx_scope_struct____iter__(__pyx_ptype_6cocoex_9interface___pyx_scope_struct____iter__, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { @@ -5529,25 +6251,23 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_46__iter__(struct __pyx_obj_ __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); { - __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_6cocoex_9interface_5Suite_48generator, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6cocoex_9interface_5Suite_28generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_Suite___iter, __pyx_n_s_cocoex_interface); if (unlikely(!gen)) __PYX_ERR(0, 503, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - __pyx_L0:; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */ +static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *__pyx_cur_scope = ((struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)__pyx_generator->closure); PyObject *__pyx_r = NULL; @@ -5559,12 +6279,13 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; + PyObject *__pyx_t_9 = NULL; int __pyx_t_10; - PyObject *__pyx_t_11 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + int __pyx_t_11; + int __pyx_t_12; + PyObject *__pyx_t_13 = NULL; + int __pyx_t_14; + char const *__pyx_t_15; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("None", 0); switch (__pyx_generator->resume_label) { @@ -5575,7 +6296,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO return NULL; } __pyx_L3_first_run:; - if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 503, __pyx_L1_error) /* "cython/interface.pyx":510 * rewinds the suite to the initial state. """ @@ -5595,12 +6316,27 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO * else: * s = Suite(self.name, self.instance, self.options) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s__reset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_reset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 511, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 511, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "cython/interface.pyx":514 * else: @@ -5611,10 +6347,12 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO */ /*try:*/ { { - __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_3); + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_6); /*try:*/ { /* "cython/interface.pyx":515 @@ -5625,7 +6363,6 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO * problem = s.next_problem() */ while (1) { - if (!1) break; /* "cython/interface.pyx":516 * try: @@ -5635,10 +6372,12 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO * if problem is None: */ { - __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_6); + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_9); /*try:*/ { /* "cython/interface.pyx":517 @@ -5648,15 +6387,29 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO * if problem is None: * raise StopIteration */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s__next_problem); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L17_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_next_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L17_error;} + __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L17_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L17_error) + } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_problem); - __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_problem); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_problem, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); - __pyx_cur_scope->__pyx_v_problem = __pyx_t_1; __pyx_t_1 = 0; /* "cython/interface.pyx":518 @@ -5666,8 +6419,9 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO * raise StopIteration * except NoSuchProblemException: */ - __pyx_t_9 = (__pyx_cur_scope->__pyx_v_problem == Py_None); - if (__pyx_t_9) { + __pyx_t_10 = (__pyx_cur_scope->__pyx_v_problem == Py_None); + __pyx_t_11 = (__pyx_t_10 != 0); + if (__pyx_t_11) { /* "cython/interface.pyx":519 * problem = s.next_problem() @@ -5677,16 +6431,32 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO * raise StopIteration */ __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L17_error;} - goto __pyx_L25; + __PYX_ERR(0, 519, __pyx_L17_error) + + /* "cython/interface.pyx":518 + * try: + * problem = s.next_problem() + * if problem is None: # <<<<<<<<<<<<<< + * raise StopIteration + * except NoSuchProblemException: + */ } - __pyx_L25:; + + /* "cython/interface.pyx":516 + * try: + * while True: + * try: # <<<<<<<<<<<<<< + * problem = s.next_problem() + * if problem is None: + */ } - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L24_try_end; __pyx_L17_error:; + __Pyx_PyThreadState_assign + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -5697,16 +6467,16 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO * raise StopIteration * yield problem */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_11); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 520, __pyx_L19_except_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_10 = PyErr_ExceptionMatches(__pyx_t_1); + __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_10) { + if (__pyx_t_12) { __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;} + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 520, __pyx_L19_except_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_11); + __Pyx_GOTREF(__pyx_t_3); /* "cython/interface.pyx":521 * raise StopIteration @@ -5716,23 +6486,24 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO * except: */ __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;} - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - goto __pyx_L18_exception_handled; + __PYX_ERR(0, 521, __pyx_L19_except_error) } + goto __pyx_L19_except_error; __pyx_L19_except_error:; - __Pyx_XGIVEREF(__pyx_t_6); + + /* "cython/interface.pyx":516 + * try: + * while True: + * try: # <<<<<<<<<<<<<< + * problem = s.next_problem() + * if problem is None: + */ + __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); goto __pyx_L7_error; - __pyx_L18_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); __pyx_L24_try_end:; } @@ -5745,38 +6516,47 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO */ __Pyx_INCREF(__pyx_cur_scope->__pyx_v_problem); __pyx_r = __pyx_cur_scope->__pyx_v_problem; - __Pyx_XGIVEREF(__pyx_t_3); - __pyx_cur_scope->__pyx_t_0 = __pyx_t_3; __Pyx_XGIVEREF(__pyx_t_4); - __pyx_cur_scope->__pyx_t_1 = __pyx_t_4; + __pyx_cur_scope->__pyx_t_0 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_t_5); - __pyx_cur_scope->__pyx_t_2 = __pyx_t_5; + __pyx_cur_scope->__pyx_t_1 = __pyx_t_5; + __Pyx_XGIVEREF(__pyx_t_6); + __pyx_cur_scope->__pyx_t_2 = __pyx_t_6; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L28_resume_from_yield:; - __pyx_t_3 = __pyx_cur_scope->__pyx_t_0; + __pyx_t_4 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; - __Pyx_XGOTREF(__pyx_t_3); - __pyx_t_4 = __pyx_cur_scope->__pyx_t_1; - __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_4); - __pyx_t_5 = __pyx_cur_scope->__pyx_t_2; - __pyx_cur_scope->__pyx_t_2 = 0; + __pyx_t_5 = __pyx_cur_scope->__pyx_t_1; + __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_5); - if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_6 = __pyx_cur_scope->__pyx_t_2; + __pyx_cur_scope->__pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_t_6); + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 522, __pyx_L7_error) } + + /* "cython/interface.pyx":514 + * else: + * s = Suite(self.name, self.instance, self.options) + * try: # <<<<<<<<<<<<<< + * while True: + * try: + */ } - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L14_try_end; __pyx_L7_error:; + __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":523 * raise StopIteration @@ -5787,8 +6567,8 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_2, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} - __Pyx_GOTREF(__pyx_t_11); + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 523, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_1); @@ -5799,28 +6579,28 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO * finally: # makes this ctrl-c safe, at least it should * s is self or s.free() */ - __Pyx_GIVEREF(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_ErrRestore(__pyx_t_11, __pyx_t_2, __pyx_t_1); - __pyx_t_11 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L8_exception_handled; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_1); + __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; + __PYX_ERR(0, 524, __pyx_L9_except_error) } __pyx_L9_except_error:; - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); - goto __pyx_L5; - __pyx_L8_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_3); + + /* "cython/interface.pyx":514 + * else: + * s = Suite(self.name, self.instance, self.options) + * try: # <<<<<<<<<<<<<< + * while True: + * try: + */ + __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); + goto __pyx_L5_error; __pyx_L14_try_end:; } } @@ -5833,87 +6613,170 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_48generator(__pyx_GeneratorO * cdef class Observer: */ /*finally:*/ { - int __pyx_why; - PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb; - int __pyx_exc_lineno; - __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0; - __pyx_why = 0; goto __pyx_L6; - __pyx_L5: { - __pyx_why = 4; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb); - __pyx_exc_lineno = __pyx_lineno; - goto __pyx_L6; - } - __pyx_L6:; - __pyx_t_9 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L31_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L31_error;} - if (!__pyx_t_9) { - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s__free); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L31_error;} + /*normal exit:*/{ + __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); + if (!__pyx_t_11) { + } else { + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L31_bool_binop_done; + } + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 526, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_13) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L1_error) + } __Pyx_GOTREF(__pyx_t_2); - __pyx_t_11 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L31_error;} - __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __pyx_t_11; - __pyx_t_11 = 0; - } else { - __pyx_t_2 = __pyx_t_1; - __pyx_t_1 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - goto __pyx_L32; - __pyx_L31_error:; - if (__pyx_why == 4) { - Py_XDECREF(__pyx_exc_type); - Py_XDECREF(__pyx_exc_value); - Py_XDECREF(__pyx_exc_tb); + __pyx_L31_bool_binop_done:; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L6; } - goto __pyx_L1_error; - __pyx_L32:; - switch (__pyx_why) { - case 4: { - __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb); - __pyx_lineno = __pyx_exc_lineno; - __pyx_exc_type = 0; - __pyx_exc_value = 0; - __pyx_exc_tb = 0; - goto __pyx_L1_error; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __pyx_L5_error:; + __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; + __Pyx_PyThreadState_assign + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_7); + __pyx_t_12 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename; + { + __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); + if (!__pyx_t_11) { + } else { + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L34_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L35_bool_binop_done; + } + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 526, __pyx_L34_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_13) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L34_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L34_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_L35_bool_binop_done:; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_PyThreadState_assign + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7); + } + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ErrRestore(__pyx_t_6, __pyx_t_5, __pyx_t_4); + __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; + __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15; + goto __pyx_L1_error; + __pyx_L34_error:; + __Pyx_PyThreadState_assign + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7); } + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; + goto __pyx_L1_error; } + __pyx_L6:; } + + /* "cython/interface.pyx":503 + * return len(self._indices) + * + * def __iter__(self): # <<<<<<<<<<<<<< + * """iterator over self. + * + */ + + /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_13); __Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; - __Pyx_XDECREF(__pyx_r); + __Pyx_XDECREF(__pyx_r); __pyx_r = 0; __pyx_generator->resume_label = -1; - __Pyx_Generator_clear((PyObject*)__pyx_generator); + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); - return NULL; + return __pyx_r; } +/* "cython/interface.pyx":562 + * cdef _state + * + * def __cinit__(self, name, options): # <<<<<<<<<<<<<< + * if isinstance(options, dict): + * s = str(options).replace(',', ' ') + */ + /* Python wrapper */ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; PyObject *__pyx_v_options = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,&__pyx_n_s__options,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_options,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -5927,16 +6790,16 @@ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_se kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__options)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(0, 562, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 562, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -5949,41 +6812,35 @@ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_se } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 562, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Observer.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_8Observer___cinit__(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self), __pyx_v_name, __pyx_v_options); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":562 - * cdef _state - * - * def __cinit__(self, name, options): # <<<<<<<<<<<<<< - * if isinstance(options, dict): - * s = str(options).replace(',', ' ') - */ - static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_options) { PyObject *__pyx_v_s = NULL; PyObject *__pyx_v_c = NULL; int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; + int __pyx_t_2; PyObject *__pyx_t_3 = NULL; - Py_ssize_t __pyx_t_4; - PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_4 = NULL; + Py_ssize_t __pyx_t_5; PyObject *__pyx_t_6 = NULL; - char const *__pyx_t_7; - char const *__pyx_t_8; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_7 = NULL; + Py_ssize_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + char const *__pyx_t_10; + char const *__pyx_t_11; __Pyx_RefNannySetupContext("__cinit__", 0); __Pyx_INCREF(__pyx_v_options); @@ -5995,7 +6852,8 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * for c in ["u'", 'u"', "'", '"', "{", "}"]: */ __pyx_t_1 = PyDict_Check(__pyx_v_options); - if (__pyx_t_1) { + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { /* "cython/interface.pyx":564 * def __cinit__(self, name, options): @@ -6004,22 +6862,22 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') */ - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 564, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_options); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_options); __Pyx_GIVEREF(__pyx_v_options); - __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__replace); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_options); + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 564, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_24), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_s = __pyx_t_3; - __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 564, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_s = __pyx_t_4; + __pyx_t_4 = 0; /* "cython/interface.pyx":565 * if isinstance(options, dict): @@ -6028,17 +6886,17 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * s = s.replace(c, '') * options = s */ - __pyx_t_3 = ((PyObject *)__pyx_k_tuple_31); __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; + __pyx_t_4 = __pyx_tuple__15; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; for (;;) { - if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break; + if (__pyx_t_5 >= 6) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 565, __pyx_L1_error) #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 565, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); #endif - __Pyx_XDECREF(__pyx_v_c); - __pyx_v_c = __pyx_t_2; - __pyx_t_2 = 0; + __Pyx_XDECREF_SET(__pyx_v_c, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; /* "cython/interface.pyx":566 * s = str(options).replace(',', ' ') @@ -6047,25 +6905,47 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * options = s * self._name = _bstring(name) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s__replace); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 566, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 566, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; + } __Pyx_INCREF(__pyx_v_c); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_c); __Pyx_GIVEREF(__pyx_v_c); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_3)); - PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_kp_u_3)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_3)); - __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_v_s); - __pyx_v_s = __pyx_t_6; - __pyx_t_6 = 0; + PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_c); + __Pyx_INCREF(__pyx_kp_u__2); + __Pyx_GIVEREF(__pyx_kp_u__2); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_kp_u__2); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 566, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_3); + __pyx_t_3 = 0; + + /* "cython/interface.pyx":565 + * if isinstance(options, dict): + * s = str(options).replace(',', ' ') + * for c in ["u'", 'u"', "'", '"', "{", "}"]: # <<<<<<<<<<<<<< + * s = s.replace(c, '') + * options = s + */ } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "cython/interface.pyx":567 * for c in ["u'", 'u"', "'", '"', "{", "}"]: @@ -6075,11 +6955,16 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * self._options = _bstring(options if options is not None else "") */ __Pyx_INCREF(__pyx_v_s); - __Pyx_DECREF(__pyx_v_options); - __pyx_v_options = __pyx_v_s; - goto __pyx_L3; + __Pyx_DECREF_SET(__pyx_v_options, __pyx_v_s); + + /* "cython/interface.pyx":563 + * + * def __cinit__(self, name, options): + * if isinstance(options, dict): # <<<<<<<<<<<<<< + * s = str(options).replace(',', ' ') + * for c in ["u'", 'u"', "'", '"', "{", "}"]: + */ } - __pyx_L3:; /* "cython/interface.pyx":568 * s = s.replace(c, '') @@ -6088,13 +6973,13 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * self._options = _bstring(options if options is not None else "") * self._observer = coco_observer(self._name, self._options) */ - __pyx_t_3 = ((PyObject *)__pyx_f_6cocoex_9interface__bstring(__pyx_v_name)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_4 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 568, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->_name); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_name)); - __pyx_v_self->_name = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_v_self->_name); + __pyx_v_self->_name = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; /* "cython/interface.pyx":569 * options = s @@ -6103,22 +6988,22 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * self._observer = coco_observer(self._name, self._options) * self._state = 'initialized' */ - __pyx_t_1 = (__pyx_v_options != Py_None); - if (__pyx_t_1) { + __pyx_t_2 = (__pyx_v_options != Py_None); + if ((__pyx_t_2 != 0)) { __Pyx_INCREF(__pyx_v_options); - __pyx_t_3 = __pyx_v_options; + __pyx_t_4 = __pyx_v_options; } else { - __Pyx_INCREF(((PyObject *)__pyx_kp_u_3)); - __pyx_t_3 = ((PyObject *)__pyx_kp_u_3); + __Pyx_INCREF(__pyx_kp_u__2); + __pyx_t_4 = __pyx_kp_u__2; } - __pyx_t_6 = ((PyObject *)__pyx_f_6cocoex_9interface__bstring(__pyx_t_3)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GIVEREF(__pyx_t_6); + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 569, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_options); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_options)); - __pyx_v_self->_options = ((PyObject*)__pyx_t_6); - __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_v_self->_options); + __pyx_v_self->_options = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; /* "cython/interface.pyx":570 * self._name = _bstring(name) @@ -6127,9 +7012,9 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * self._state = 'initialized' * */ - __pyx_t_7 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_name)); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_8 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_self->_options)); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_v_self->_observer = coco_observer(__pyx_t_7, __pyx_t_8); + __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L1_error) + __pyx_v_self->_observer = coco_observer(__pyx_t_10, __pyx_t_11); /* "cython/interface.pyx":571 * self._options = _bstring(options if options is not None else "") @@ -6138,19 +7023,29 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * * def _update_current_observer_global(self): */ - __Pyx_INCREF(((PyObject *)__pyx_n_u__initialized)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_u__initialized)); + __Pyx_INCREF(__pyx_n_u_initialized); + __Pyx_GIVEREF(__pyx_n_u_initialized); __Pyx_GOTREF(__pyx_v_self->_state); __Pyx_DECREF(__pyx_v_self->_state); - __pyx_v_self->_state = ((PyObject *)__pyx_n_u__initialized); + __pyx_v_self->_state = __pyx_n_u_initialized; + + /* "cython/interface.pyx":562 + * cdef _state + * + * def __cinit__(self, name, options): # <<<<<<<<<<<<<< + * if isinstance(options, dict): + * s = str(options).replace(',', ' ') + */ + /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("cocoex.interface.Observer.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; @@ -6161,6 +7056,14 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc return __pyx_r; } +/* "cython/interface.pyx":573 + * self._state = 'initialized' + * + * def _update_current_observer_global(self): # <<<<<<<<<<<<<< + * """assign the global _current_observer variable to self._observer, + * for purely technical reasons""" + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_8Observer_3_update_current_observer_global(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_6cocoex_9interface_8Observer_2_update_current_observer_global[] = "assign the global _current_observer variable to self._observer, \n for purely technical reasons"; @@ -6169,18 +7072,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_8Observer_3_update_current_observer __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_update_current_observer_global (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer_global(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":573 - * self._state = 'initialized' - * - * def _update_current_observer_global(self): # <<<<<<<<<<<<<< - * """assign the global _current_observer variable to self._observer, - * for purely technical reasons""" - */ - static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer_global(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -6197,12 +7094,29 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer __pyx_t_1 = __pyx_v_self->_observer; __pyx_v_6cocoex_9interface__current_observer = __pyx_t_1; + /* "cython/interface.pyx":573 + * self._state = 'initialized' + * + * def _update_current_observer_global(self): # <<<<<<<<<<<<<< + * """assign the global _current_observer variable to self._observer, + * for purely technical reasons""" + */ + + /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":579 + * _current_observer = self._observer + * + * def observe(self, problem): # <<<<<<<<<<<<<< + * """`observe(problem)` let `self` observe the `problem: Problem` by + * calling `problem.observe_with(self)`. + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_8Observer_5observe(PyObject *__pyx_v_self, PyObject *__pyx_v_problem); /*proto*/ static char __pyx_doc_6cocoex_9interface_8Observer_4observe[] = "`observe(problem)` let `self` observe the `problem: Problem` by\n calling `problem.observe_with(self)`.\n "; @@ -6211,27 +7125,19 @@ static PyObject *__pyx_pw_6cocoex_9interface_8Observer_5observe(PyObject *__pyx_ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("observe (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_4observe(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self), ((PyObject *)__pyx_v_problem)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":579 - * _current_observer = self._observer - * - * def observe(self, problem): # <<<<<<<<<<<<<< - * """`observe(problem)` let `self` observe the `problem: Problem` by - * calling `problem.observe_with(self)`. - */ - static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self, PyObject *__pyx_v_problem) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("observe", 0); /* "cython/interface.pyx":583 @@ -6241,18 +7147,34 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj * return self * */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s__observe_with); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 583, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":584 * """ @@ -6266,12 +7188,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":579 + * _current_observer = self._observer + * + * def observe(self, problem): # <<<<<<<<<<<<<< + * """`observe(problem)` let `self` observe the `problem: Problem` by + * calling `problem.observe_with(self)`. + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface.Observer.observe", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -6280,18 +7210,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_7name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_8Observer_6name[] = "name of the observer as used with `Observer(name, ...)` to instantiate\n `self` before.\n "; -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_7name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("name (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_6name(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":587 * * @property @@ -6300,41 +7218,51 @@ static PyObject *__pyx_pw_6cocoex_9interface_8Observer_7name(PyObject *__pyx_v_s * `self` before. */ -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6name(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { - PyObject *__pyx_r = NULL; +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_4name_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("name", 0); + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_4name___get__(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); - /* "cython/interface.pyx":591 - * `self` before. - * """ - * return self._name # <<<<<<<<<<<<<< - * @property + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 0); + + /* "cython/interface.pyx":591 + * `self` before. + * """ + * return self._name # <<<<<<<<<<<<<< + * @property * def options(self): */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self->_name)); - __pyx_r = ((PyObject *)__pyx_v_self->_name); + __Pyx_INCREF(__pyx_v_self->_name); + __pyx_r = __pyx_v_self->_name; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "cython/interface.pyx":587 + * + * @property + * def name(self): # <<<<<<<<<<<<<< + * """name of the observer as used with `Observer(name, ...)` to instantiate + * `self` before. + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_9options(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_9options(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("options (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_8options(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":593 * return self._name * @property @@ -6343,10 +7271,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_8Observer_9options(PyObject *__pyx_ * @property */ -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_8options(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_7options_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_7options_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_7options___get__(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("options", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":594 * @property @@ -6356,28 +7297,25 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_8options(struct __pyx_obj * def state(self): */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self->_options)); - __pyx_r = ((PyObject *)__pyx_v_self->_options); + __Pyx_INCREF(__pyx_v_self->_options); + __pyx_r = __pyx_v_self->_options; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "cython/interface.pyx":593 + * return self._name + * @property + * def options(self): # <<<<<<<<<<<<<< + * return self._options + * @property + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_11state(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_11state(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("state (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_10state(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":596 * return self._options * @property @@ -6386,10 +7324,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_8Observer_11state(PyObject *__pyx_v * */ -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_10state(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_5state_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_5state_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_5state___get__(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("state", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":597 * @property @@ -6403,24 +7354,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_10state(struct __pyx_obj_ __pyx_r = __pyx_v_self->_state; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "cython/interface.pyx":596 + * return self._options + * @property + * def state(self): # <<<<<<<<<<<<<< + * return self._state + * + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_13free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_8Observer_13free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("free (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_12free(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":599 * return self._state * @@ -6429,14 +7377,25 @@ static PyObject *__pyx_pw_6cocoex_9interface_8Observer_13free(PyObject *__pyx_v_ * self._observer = NULL */ -static PyObject *__pyx_pf_6cocoex_9interface_8Observer_12free(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_7free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_7free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("free (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_6free(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("free", 0); /* "cython/interface.pyx":600 @@ -6446,12 +7405,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_12free(struct __pyx_obj_6 * self._observer = NULL * self._state = 'deactivated' */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s____dealloc__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dealloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "cython/interface.pyx":601 * def free(self): @@ -6469,17 +7443,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_12free(struct __pyx_obj_6 * def __dealloc__(self): * if self._observer != NULL: */ - __Pyx_INCREF(((PyObject *)__pyx_n_u__deactivated)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_u__deactivated)); + __Pyx_INCREF(__pyx_n_u_deactivated); + __Pyx_GIVEREF(__pyx_n_u_deactivated); __Pyx_GOTREF(__pyx_v_self->_state); __Pyx_DECREF(__pyx_v_self->_state); - __pyx_v_self->_state = ((PyObject *)__pyx_n_u__deactivated); + __pyx_v_self->_state = __pyx_n_u_deactivated; + + /* "cython/interface.pyx":599 + * return self._state + * + * def free(self): # <<<<<<<<<<<<<< + * self.__dealloc__() + * self._observer = NULL + */ + /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cocoex.interface.Observer.free", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -6488,15 +7472,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_12free(struct __pyx_obj_6 return __pyx_r; } -/* Python wrapper */ -static void __pyx_pw_6cocoex_9interface_8Observer_15__dealloc__(PyObject *__pyx_v_self); /*proto*/ -static void __pyx_pw_6cocoex_9interface_8Observer_15__dealloc__(PyObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); - __pyx_pf_6cocoex_9interface_8Observer_14__dealloc__(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); -} - /* "cython/interface.pyx":603 * self._observer = NULL * self._state = 'deactivated' @@ -6505,7 +7480,18 @@ static void __pyx_pw_6cocoex_9interface_8Observer_15__dealloc__(PyObject *__pyx_ * coco_observer_free(self._observer) */ -static void __pyx_pf_6cocoex_9interface_8Observer_14__dealloc__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { +/* Python wrapper */ +static void __pyx_pw_6cocoex_9interface_8Observer_9__dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_pw_6cocoex_9interface_8Observer_9__dealloc__(PyObject *__pyx_v_self) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("__dealloc__", 0); @@ -6517,7 +7503,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_14__dealloc__(struct __pyx_obj * coco_observer_free(self._observer) * */ - __pyx_t_1 = (__pyx_v_self->_observer != NULL); + __pyx_t_1 = ((__pyx_v_self->_observer != NULL) != 0); if (__pyx_t_1) { /* "cython/interface.pyx":605 @@ -6528,10 +7514,25 @@ static void __pyx_pf_6cocoex_9interface_8Observer_14__dealloc__(struct __pyx_obj * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): */ coco_observer_free(__pyx_v_self->_observer); - goto __pyx_L3; + + /* "cython/interface.pyx":604 + * self._state = 'deactivated' + * def __dealloc__(self): + * if self._observer != NULL: # <<<<<<<<<<<<<< + * coco_observer_free(self._observer) + * + */ } - __pyx_L3:; + /* "cython/interface.pyx":603 + * self._observer = NULL + * self._state = 'deactivated' + * def __dealloc__(self): # <<<<<<<<<<<<<< + * if self._observer != NULL: + * coco_observer_free(self._observer) + */ + + /* function exit code */ __Pyx_RefNannyFinishContext(); } @@ -6544,16 +7545,13 @@ static void __pyx_pf_6cocoex_9interface_8Observer_14__dealloc__(struct __pyx_obj */ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v_problem, struct __pyx_opt_args_6cocoex_9interface_Problem_init *__pyx_optional_args) { - PyObject *__pyx_v_free = __pyx_k_32; + PyObject *__pyx_v_free = ((PyObject *)Py_True); PyObject *__pyx_v_suite_name = ((PyObject *)Py_None); struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_res = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize __pyx_t_2; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("Problem_init", 0); if (__pyx_optional_args) { if (__pyx_optional_args->__pyx_n > 0) { @@ -6571,7 +7569,7 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v * res._suite_name = suite_name * return res._initialize(problem, free) */ - __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6cocoex_9interface_Problem)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6cocoex_9interface_Problem), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_res = ((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_t_1); __pyx_t_1 = 0; @@ -6599,14 +7597,21 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v __Pyx_XDECREF(__pyx_r); __pyx_t_2.__pyx_n = 1; __pyx_t_2.free = __pyx_v_free; - __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Problem *)__pyx_v_res->__pyx_vtab)->_initialize(__pyx_v_res, __pyx_v_problem, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Problem *)__pyx_v_res->__pyx_vtab)->_initialize(__pyx_v_res, __pyx_v_problem, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 615, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":607 + * coco_observer_free(self._observer) + * + * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< + * """`Problem` class instance initialization wrapper passing + * a `problem_t*` C-variable to `__init__`. + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Problem_init", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -6618,6 +7623,14 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v return __pyx_r; } +/* "cython/interface.pyx":639 + * cdef _do_free + * cdef initialized + * def __cinit__(self): # <<<<<<<<<<<<<< + * cdef np.npy_intp shape[1] + * self.initialized = False # all done in _initialize + */ + /* Python wrapper */ static int __pyx_pw_6cocoex_9interface_7Problem_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_6cocoex_9interface_7Problem_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { @@ -6628,25 +7641,15 @@ static int __pyx_pw_6cocoex_9interface_7Problem_1__cinit__(PyObject *__pyx_v_sel __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; __pyx_r = __pyx_pf_6cocoex_9interface_7Problem___cinit__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":639 - * cdef _do_free - * cdef initialized - * def __cinit__(self): # <<<<<<<<<<<<<< - * cdef np.npy_intp shape[1] - * self.initialized = False # all done in _initialize - */ - static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__cinit__", 0); /* "cython/interface.pyx":641 @@ -6656,21 +7659,22 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco * cdef _initialize(self, coco_problem_t* problem, free=True): * cdef np.npy_intp shape[1] */ - __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); + __Pyx_INCREF(Py_False); + __Pyx_GIVEREF(Py_False); __Pyx_GOTREF(__pyx_v_self->initialized); __Pyx_DECREF(__pyx_v_self->initialized); - __pyx_v_self->initialized = __pyx_t_1; - __pyx_t_1 = 0; + __pyx_v_self->initialized = Py_False; + + /* "cython/interface.pyx":639 + * cdef _do_free + * cdef initialized + * def __cinit__(self): # <<<<<<<<<<<<<< + * cdef np.npy_intp shape[1] + * self.initialized = False # all done in _initialize + */ + /* function exit code */ __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -6684,7 +7688,7 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco */ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, coco_problem_t *__pyx_v_problem, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args) { - PyObject *__pyx_v_free = __pyx_k_33; + PyObject *__pyx_v_free = ((PyObject *)Py_True); size_t __pyx_v_i; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -6693,11 +7697,10 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; - size_t __pyx_t_6; - size_t __pyx_t_7; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + size_t __pyx_t_9; __Pyx_RefNannySetupContext("_initialize", 0); if (__pyx_optional_args) { if (__pyx_optional_args->__pyx_n > 0) { @@ -6712,7 +7715,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * raise RuntimeError("Problem already initialized") * if problem == NULL: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 644, __pyx_L1_error) if (__pyx_t_1) { /* "cython/interface.pyx":645 @@ -6722,14 +7725,20 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") */ - __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_35), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 645, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L3; + __PYX_ERR(0, 645, __pyx_L1_error) + + /* "cython/interface.pyx":644 + * cdef _initialize(self, coco_problem_t* problem, free=True): + * cdef np.npy_intp shape[1] + * if self.initialized: # <<<<<<<<<<<<<< + * raise RuntimeError("Problem already initialized") + * if problem == NULL: + */ } - __pyx_L3:; /* "cython/interface.pyx":646 * if self.initialized: @@ -6738,7 +7747,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * raise ValueError("in Problem._initialize(problem,...): problem is NULL") * self.problem = problem */ - __pyx_t_1 = (__pyx_v_problem == NULL); + __pyx_t_1 = ((__pyx_v_problem == NULL) != 0); if (__pyx_t_1) { /* "cython/interface.pyx":647 @@ -6748,14 +7757,20 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) */ - __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_37), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L4; + __PYX_ERR(0, 647, __pyx_L1_error) + + /* "cython/interface.pyx":646 + * if self.initialized: + * raise RuntimeError("Problem already initialized") + * if problem == NULL: # <<<<<<<<<<<<<< + * raise ValueError("in Problem._initialize(problem,...): problem is NULL") + * self.problem = problem + */ } - __pyx_L4:; /* "cython/interface.pyx":648 * if problem == NULL: @@ -6773,7 +7788,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self._do_free = free * self._list_of_observers = [] */ - __pyx_t_2 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 649; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 649, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_problem_index); @@ -6801,12 +7816,12 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * # _problem_suite = _bstring(problem_suite) * # self.problem_suite = _problem_suite */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 651, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); + __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_list_of_observers); __Pyx_DECREF(__pyx_v_self->_list_of_observers); - __pyx_v_self->_list_of_observers = ((PyObject *)__pyx_t_2); + __pyx_v_self->_list_of_observers = __pyx_t_2; __pyx_t_2 = 0; /* "cython/interface.pyx":656 @@ -6843,23 +7858,40 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self.constraint_values = np.zeros(self._number_of_constraints) * self.x_initial = np.zeros(self._number_of_variables) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 659, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (!__pyx_t_5) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else { + __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 659, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 659, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->y_values); __Pyx_DECREF(((PyObject *)__pyx_v_self->y_values)); @@ -6873,23 +7905,40 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self.x_initial = np.zeros(self._number_of_variables) * ## FIXME: Inefficient because we copy the bounds instead of */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 660, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + } + } + if (!__pyx_t_3) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else { + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 660, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 660, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->constraint_values); __Pyx_DECREF(((PyObject *)__pyx_v_self->constraint_values)); @@ -6903,24 +7952,41 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * ## FIXME: Inefficient because we copy the bounds instead of * ## sharing the data. */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 661, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 661, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 661, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + if (!__pyx_t_4) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else { + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 661, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 661, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->x_initial); __Pyx_DECREF(((PyObject *)__pyx_v_self->x_initial)); __pyx_v_self->x_initial = ((PyArrayObject *)__pyx_t_2); @@ -6933,40 +7999,57 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self._upper_bounds = np.inf * np.ones(self._number_of_variables) * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 664, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__inf); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 664, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Negative(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 664, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__ones); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 664, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 664, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; - __pyx_t_5 = PyNumber_Multiply(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 664, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + } + } + if (!__pyx_t_4) { + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 664, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_5); + } else { + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 664, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 664, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 664, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GIVEREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 664, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_6); __Pyx_GOTREF(__pyx_v_self->_lower_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_lower_bounds)); - __pyx_v_self->_lower_bounds = ((PyArrayObject *)__pyx_t_5); - __pyx_t_5 = 0; + __pyx_v_self->_lower_bounds = ((PyArrayObject *)__pyx_t_6); + __pyx_t_6 = 0; /* "cython/interface.pyx":665 * ## sharing the data. @@ -6975,37 +8058,54 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s__inf); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 665, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s__ones); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 665, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 665, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + if (!__pyx_t_3) { + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 665, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_6); + } else { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 665, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 665, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = PyNumber_Multiply(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 665, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GIVEREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 665, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_self->_upper_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_upper_bounds)); - __pyx_v_self->_upper_bounds = ((PyArrayObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_v_self->_upper_bounds = ((PyArrayObject *)__pyx_t_7); + __pyx_t_7 = 0; /* "cython/interface.pyx":667 * self._upper_bounds = np.inf * np.ones(self._number_of_variables) @@ -7014,9 +8114,9 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] */ - __pyx_t_6 = __pyx_v_self->_number_of_variables; - for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { - __pyx_v_i = __pyx_t_7; + __pyx_t_8 = __pyx_v_self->_number_of_variables; + for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { + __pyx_v_i = __pyx_t_9; /* "cython/interface.pyx":668 * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails @@ -7025,7 +8125,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: */ - __pyx_t_1 = (coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem) != NULL); + __pyx_t_1 = ((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem) != NULL) != 0); if (__pyx_t_1) { /* "cython/interface.pyx":669 @@ -7035,13 +8135,19 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] */ - __pyx_t_3 = PyFloat_FromDouble((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_lower_bounds), __pyx_v_i, __pyx_t_3, sizeof(size_t)+1, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L7; + __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 669, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_lower_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 669, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "cython/interface.pyx":668 + * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails + * for i in range(self._number_of_variables): + * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< + * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] + * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: + */ } - __pyx_L7:; /* "cython/interface.pyx":670 * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: @@ -7050,7 +8156,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] * self.initialized = True */ - __pyx_t_1 = (coco_problem_get_largest_values_of_interest(__pyx_v_self->problem) != NULL); + __pyx_t_1 = ((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem) != NULL) != 0); if (__pyx_t_1) { /* "cython/interface.pyx":671 @@ -7060,13 +8166,19 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self.initialized = True * return self */ - __pyx_t_3 = PyFloat_FromDouble((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_upper_bounds), __pyx_v_i, __pyx_t_3, sizeof(size_t)+1, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8; + __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 671, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_upper_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 671, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "cython/interface.pyx":670 + * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: + * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] + * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< + * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] + * self.initialized = True + */ } - __pyx_L8:; } /* "cython/interface.pyx":672 @@ -7076,13 +8188,11 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * return self * def constraint(self, x): */ - __pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); + __Pyx_INCREF(Py_True); + __Pyx_GIVEREF(Py_True); __Pyx_GOTREF(__pyx_v_self->initialized); __Pyx_DECREF(__pyx_v_self->initialized); - __pyx_v_self->initialized = __pyx_t_3; - __pyx_t_3 = 0; + __pyx_v_self->initialized = Py_True; /* "cython/interface.pyx":673 * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] @@ -7096,13 +8206,22 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":642 + * cdef np.npy_intp shape[1] + * self.initialized = False # all done in _initialize + * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< + * cdef np.npy_intp shape[1] + * if self.initialized: + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("cocoex.interface.Problem._initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -7111,6 +8230,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob return __pyx_r; } +/* "cython/interface.pyx":674 + * self.initialized = True + * return self + * def constraint(self, x): # <<<<<<<<<<<<<< + * """return constraint values for `x`. + * + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_3constraint(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/ static char __pyx_doc_6cocoex_9interface_7Problem_2constraint[] = "return constraint values for `x`. \n\n By convention, constraints with values >= 0 are satisfied.\n "; @@ -7119,25 +8246,16 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_3constraint(PyObject *__py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("constraint (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_2constraint(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_x)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":674 - * self.initialized = True - * return self - * def constraint(self, x): # <<<<<<<<<<<<<< - * """return constraint values for `x`. - * - */ - static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("constraint", 0); /* "cython/interface.pyx":679 @@ -7147,24 +8265,38 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(CYTHON_UNUSED * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = PyObject_Call(__pyx_builtin_NotImplementedError, ((PyObject *)__pyx_k_tuple_39), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __PYX_ERR(0, 679, __pyx_L1_error) - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":674 + * self.initialized = True + * return self + * def constraint(self, x): # <<<<<<<<<<<<<< + * """return constraint values for `x`. + * + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Problem.constraint", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":694 + * np.PyArray_DATA(self.constraint_values)) + * return np.array(self.constraint_values, copy=True) + * def recommend(self, arx): # <<<<<<<<<<<<<< + * """Recommend a solution, return `None`. + * + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_5recommend(PyObject *__pyx_v_self, PyObject *__pyx_v_arx); /*proto*/ static char __pyx_doc_6cocoex_9interface_7Problem_4recommend[] = "Recommend a solution, return `None`.\n\n The recommendation replaces the last evaluation or recommendation\n for the assessment of the algorithm.\n "; @@ -7173,25 +8305,16 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_5recommend(PyObject *__pyx __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("recommend (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_4recommend(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_arx)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":694 - * np.PyArray_DATA(self.constraint_values)) - * return np.array(self.constraint_values, copy=True) - * def recommend(self, arx): # <<<<<<<<<<<<<< - * """Recommend a solution, return `None`. - * - */ - static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_arx) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("recommend", 0); /* "cython/interface.pyx":700 @@ -7201,38 +8324,49 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED s * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = PyObject_Call(__pyx_builtin_NotImplementedError, ((PyObject *)__pyx_k_tuple_40), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __PYX_ERR(0, 700, __pyx_L1_error) - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":694 + * np.PyArray_DATA(self.constraint_values)) + * return np.array(self.constraint_values, copy=True) + * def recommend(self, arx): # <<<<<<<<<<<<<< + * """Recommend a solution, return `None`. + * + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Problem.recommend", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":713 + * coco_recommend_solution(self.problem, np.PyArray_DATA(_x)) + * + * def logger_biobj_feed_solution(self, evaluation, y): # <<<<<<<<<<<<<< + * """Feed the given solution to logger_biobj in order to reconstruct its + * output. + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solution(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_6cocoex_9interface_7Problem_6logger_biobj_feed_solution[] = "Feed the given solution to logger_biobj in order to reconstruct its\n output.\n\n Return 1 if the given solution updated the archive and 0 otherwise.\n\n Used by preprocessing when updating the .info, .dat and .tdat files\n with new indicator reference values.\n "; static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solution(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_evaluation = 0; PyObject *__pyx_v_y = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("logger_biobj_feed_solution (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__evaluation,&__pyx_n_s__y,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_evaluation,&__pyx_n_s_y,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -7246,16 +8380,16 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solutio kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__evaluation)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_evaluation)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, 1); __PYX_ERR(0, 713, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "logger_biobj_feed_solution") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "logger_biobj_feed_solution") < 0)) __PYX_ERR(0, 713, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -7268,25 +8402,19 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solutio } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 713, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.logger_biobj_feed_solution", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solution(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), __pyx_v_evaluation, __pyx_v_y); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":713 - * coco_recommend_solution(self.problem, np.PyArray_DATA(_x)) - * - * def logger_biobj_feed_solution(self, evaluation, y): # <<<<<<<<<<<<<< - * """Feed the given solution to logger_biobj in order to reconstruct its - * output. - */ - static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solution(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_evaluation, PyObject *__pyx_v_y) { size_t __pyx_v__evaluation; PyArrayObject *__pyx_v__y = 0; @@ -7301,14 +8429,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; - PyArrayObject *__pyx_t_8 = NULL; - int __pyx_t_9; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("logger_biobj_feed_solution", 0); __Pyx_INCREF(__pyx_v_y); __pyx_pybuffer__y.pybuffer.buf = NULL; @@ -7323,7 +8447,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = __Pyx_PyInt_AsSize_t(__pyx_v_evaluation); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_evaluation); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 722, __pyx_L1_error) __pyx_v__evaluation = __pyx_t_1; /* "cython/interface.pyx":724 @@ -7333,37 +8457,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * if np.size(y) != self.number_of_objectives: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_y); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__copy), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 724, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 724, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s__double); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__order), ((PyObject *)__pyx_n_u__C)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 724, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_v_y); - __pyx_v_y = __pyx_t_6; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_y, __pyx_t_6); __pyx_t_6 = 0; /* "cython/interface.pyx":725 @@ -7373,27 +8493,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * raise ValueError( * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s__size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __Pyx_INCREF(__pyx_v_y); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_y); - __Pyx_GIVEREF(__pyx_v_y); - __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_41); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_4) { + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 725, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } else { + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 725, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_v_y); + __Pyx_GIVEREF(__pyx_v_y); + PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_y); + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 725, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 725, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 725, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_7) { /* "cython/interface.pyx":727 @@ -7403,23 +8539,39 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_v_y); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_y); - __Pyx_GIVEREF(__pyx_v_y); - __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 727, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_42), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 727, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + } + } + if (!__pyx_t_2) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 727, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } else { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 727, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_y); + __Pyx_GIVEREF(__pyx_v_y); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_y); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 727, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 727, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":729 * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + @@ -7428,58 +8580,80 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * _y = y # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_41); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_43), __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_6)); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_2)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L3; - } - __pyx_L3:; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 729, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_number_of_objectiv, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 729, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":730 + /* "cython/interface.pyx":727 + * if np.size(y) != self.number_of_objectives: + * raise ValueError( + * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + # <<<<<<<<<<<<<< + * "not match the number of objectives `number_of_objectives==%d`." + * % self.number_of_objectives) + */ + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 727, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "cython/interface.pyx":726 + * y = np.array(y, copy=False, dtype=np.double, order='C') + * if np.size(y) != self.number_of_objectives: + * raise ValueError( # <<<<<<<<<<<<<< + * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + + * "not match the number of objectives `number_of_objectives==%d`." + */ + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 726, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 726, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 726, __pyx_L1_error) + + /* "cython/interface.pyx":725 + * cdef np.ndarray[double, ndim=1, mode="c"] _y + * y = np.array(y, copy=False, dtype=np.double, order='C') + * if np.size(y) != self.number_of_objectives: # <<<<<<<<<<<<<< + * raise ValueError( + * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + + */ + } + + /* "cython/interface.pyx":730 * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) * _y = y # this is the final type conversion # <<<<<<<<<<<<<< * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_y) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_y, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_8 = ((PyArrayObject *)__pyx_v_y); + if (!(likely(((__pyx_v_y) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_y, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 730, __pyx_L1_error) + __pyx_t_3 = __pyx_v_y; + __Pyx_INCREF(__pyx_t_3); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__y.rcbuffer->pybuffer); - __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__y.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); - if (unlikely(__pyx_t_9 < 0)) { - PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); + __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__y.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_3), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); + if (unlikely(__pyx_t_8 < 0)) { + PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd__y.rcbuffer->pybuffer, (PyObject*)__pyx_v__y, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) { - Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); + Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); __Pyx_RaiseBufferFallbackError(); } else { - PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12); + PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); } } __pyx_pybuffernd__y.diminfo[0].strides = __pyx_pybuffernd__y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__y.diminfo[0].shape = __pyx_pybuffernd__y.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 730, __pyx_L1_error) } - __pyx_t_8 = 0; - __Pyx_INCREF(__pyx_v_y); - __pyx_v__y = ((PyArrayObject *)__pyx_v_y); + __pyx_v__y = ((PyArrayObject *)__pyx_t_3); + __pyx_t_3 = 0; /* "cython/interface.pyx":731 * % self.number_of_objectives) @@ -7488,7 +8662,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * raise InvalidProblemException() * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) */ - __pyx_t_7 = (__pyx_v_self->problem == NULL); + __pyx_t_7 = ((__pyx_v_self->problem == NULL) != 0); if (__pyx_t_7) { /* "cython/interface.pyx":732 @@ -7498,17 +8672,38 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) * */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_44); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_6, 0, 0, 0); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L4; + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_6) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 732, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 732, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 732, __pyx_L1_error) + + /* "cython/interface.pyx":731 + * % self.number_of_objectives) + * _y = y # this is the final type conversion + * if self.problem is NULL: # <<<<<<<<<<<<<< + * raise InvalidProblemException() + * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) + */ } - __pyx_L4:; /* "cython/interface.pyx":733 * if self.problem is NULL: @@ -7518,14 +8713,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = PyInt_FromLong(coco_logger_biobj_feed_solution(__pyx_v_self->problem, __pyx_v__evaluation, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__y))))); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __pyx_r = __pyx_t_6; - __pyx_t_6 = 0; + __pyx_t_3 = __Pyx_PyInt_From_int(coco_logger_biobj_feed_solution(__pyx_v_self->problem, __pyx_v__evaluation, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__y))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 733, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":713 + * coco_recommend_solution(self.problem, np.PyArray_DATA(_x)) + * + * def logger_biobj_feed_solution(self, evaluation, y): # <<<<<<<<<<<<<< + * """Feed the given solution to logger_biobj in order to reconstruct its + * output. + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); @@ -7533,6 +8735,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__y.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} @@ -7549,6 +8753,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio return __pyx_r; } +/* "cython/interface.pyx":736 + * + * + * def add_observer(self, observer): # <<<<<<<<<<<<<< + * """`add_observer(self, observer: Observer)`, see `observe_with`. + * """ + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_9add_observer(PyObject *__pyx_v_self, PyObject *__pyx_v_observer); /*proto*/ static char __pyx_doc_6cocoex_9interface_7Problem_8add_observer[] = "`add_observer(self, observer: Observer)`, see `observe_with`.\n "; @@ -7557,27 +8769,19 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_9add_observer(PyObject *__ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("add_observer (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_8add_observer(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_observer)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":736 - * - * - * def add_observer(self, observer): # <<<<<<<<<<<<<< - * """`add_observer(self, observer: Observer)`, see `observe_with`. - * """ - */ - static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_observer) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("add_observer", 0); /* "cython/interface.pyx":739 @@ -7588,27 +8792,51 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx * def observe_with(self, observer): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__observe_with); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_observer); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_observer); - __Pyx_GIVEREF(__pyx_v_observer); - __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; + __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_observer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_observer); + __Pyx_GIVEREF(__pyx_v_observer); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_observer); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":736 + * + * + * def add_observer(self, observer): # <<<<<<<<<<<<<< + * """`add_observer(self, observer: Observer)`, see `observe_with`. + * """ + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface.Problem.add_observer", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -7617,6 +8845,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx return __pyx_r; } +/* "cython/interface.pyx":741 + * return self.observe_with(observer) + * + * def observe_with(self, observer): # <<<<<<<<<<<<<< + * """`observe_with(self, observer: Observer)` attaches an observer + * to this problem. + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_11observe_with(PyObject *__pyx_v_self, PyObject *__pyx_v_observer); /*proto*/ static char __pyx_doc_6cocoex_9interface_7Problem_10observe_with[] = "`observe_with(self, observer: Observer)` attaches an observer\n to this problem.\n\n Attaching an observer can be considered as wrapping the observer\n around the problem. For the observer to be finalized, the problem\n must be free'd (implictly or explicitly).\n\n Details: `observer` can be `None`, in which case nothing is done.\n\n See also: class `Observer`\n "; @@ -7625,27 +8861,20 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_11observe_with(PyObject *_ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("observe_with (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_10observe_with(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_observer)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":741 - * return self.observe_with(observer) - * - * def observe_with(self, observer): # <<<<<<<<<<<<<< - * """`observe_with(self, observer: Observer)` attaches an observer - * to this problem. - */ - static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_observer) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; __Pyx_RefNannySetupContext("observe_with", 0); /* "cython/interface.pyx":753 @@ -7655,7 +8884,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py * assert self.problem * observer._update_current_observer_global() */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_observer); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_observer); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 753, __pyx_L1_error) if (__pyx_t_1) { /* "cython/interface.pyx":754 @@ -7666,9 +8895,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py * self.problem = coco_problem_add_observer(self.problem, _current_observer) */ #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!(__pyx_v_self->problem != 0))) { - PyErr_SetNone(PyExc_AssertionError); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 754; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->problem != 0))) { + PyErr_SetNone(PyExc_AssertionError); + __PYX_ERR(0, 754, __pyx_L1_error) + } } #endif @@ -7679,12 +8910,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py * self.problem = coco_problem_add_observer(self.problem, _current_observer) * self._list_of_observers.append(observer) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_observer, __pyx_n_s_45); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 755; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 755; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_observer, __pyx_n_s_update_current_observer_global); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_4) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 755, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 755, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":756 * assert self.problem @@ -7702,12 +8948,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py * return self * */ - __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_self->_list_of_observers, __pyx_v_observer); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L3; + __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_list_of_observers, __pyx_v_observer); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 757, __pyx_L1_error) + + /* "cython/interface.pyx":753 + * See also: class `Observer` + * """ + * if observer: # <<<<<<<<<<<<<< + * assert self.problem + * observer._update_current_observer_global() + */ } - __pyx_L3:; /* "cython/interface.pyx":758 * self.problem = coco_problem_add_observer(self.problem, _current_observer) @@ -7721,11 +8971,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":741 + * return self.observe_with(observer) + * + * def observe_with(self, observer): # <<<<<<<<<<<<<< + * """`observe_with(self, observer: Observer)` attaches an observer + * to this problem. + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface.Problem.observe_with", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -7734,6 +8992,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py return __pyx_r; } +/* "cython/interface.pyx":760 + * return self + * + * def _f0(self, x): # <<<<<<<<<<<<<< + * """"inofficial" interface to `self` with target f-value of zero. """ + * return self(x) - self.final_target_fvalue1 + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_f0(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/ static char __pyx_doc_6cocoex_9interface_7Problem_12_f0[] = "\"inofficial\" interface to `self` with target f-value of zero. "; @@ -7742,27 +9008,19 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_f0(PyObject *__pyx_v_se __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_f0 (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_12_f0(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_x)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":760 - * return self - * - * def _f0(self, x): # <<<<<<<<<<<<<< - * """"inofficial" interface to `self` with target f-value of zero. """ - * return self(x) - self.final_target_fvalue1 - */ - static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_x) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("_f0", 0); /* "cython/interface.pyx":762 @@ -7773,30 +9031,56 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 762; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_x); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_x); - __Pyx_GIVEREF(__pyx_v_x); - __pyx_t_2 = PyObject_Call(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 762; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_46); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 762; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyNumber_Subtract(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 762; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __pyx_t_2 = ((PyObject *)__pyx_v_self); __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 762, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 762, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_x); + __Pyx_GIVEREF(__pyx_v_x); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 762, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_final_target_fvalue1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 762, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 762, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":760 + * return self + * + * def _f0(self, x): # <<<<<<<<<<<<<< + * """"inofficial" interface to `self` with target f-value of zero. """ + * return self(x) - self.final_target_fvalue1 + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface.Problem._f0", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -7805,18 +9089,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_14initial_solution[] = "return feasible initial solution"; -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("initial_solution (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_14initial_solution(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":765 * * @property @@ -7825,17 +9097,27 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution(PyObjec * coco_problem_get_initial_solution(self.problem, */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_16initial_solution_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_16initial_solution_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("initial_solution", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":768 * """return feasible initial solution""" @@ -7846,6 +9128,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution(struct */ __pyx_t_1 = ((PyObject *)__pyx_v_self->x_initial); __Pyx_INCREF(__pyx_t_1); + + /* "cython/interface.pyx":767 + * def initial_solution(self): + * """return feasible initial solution""" + * coco_problem_get_initial_solution(self.problem, # <<<<<<<<<<<<<< + * np.PyArray_DATA(self.x_initial)) + * return np.array(self.x_initial, copy=True) + */ coco_problem_get_initial_solution(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_1)))); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -7857,39 +9147,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution(struct * def list_of_observers(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self->x_initial)); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->x_initial)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->x_initial)); - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__copy), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->x_initial)); + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 769, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 769, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":765 + * + * @property + * def initial_solution(self): # <<<<<<<<<<<<<< + * """return feasible initial solution""" + * coco_problem_get_initial_solution(self.problem, + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("cocoex.interface.Problem.initial_solution", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.initial_solution.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -7897,17 +9191,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution(struct return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17list_of_observers(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17list_of_observers(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("list_of_observers (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_16list_of_observers(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":771 * return np.array(self.x_initial, copy=True) * @property @@ -7916,10 +9199,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17list_of_observers(PyObje * property number_of_variables: # this is cython syntax, not known in Python */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16list_of_observers(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17list_of_observers_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17list_of_observers_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_17list_of_observers___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_17list_of_observers___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("list_of_observers", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":772 * @property @@ -7933,13 +9229,29 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16list_of_observers(struct __pyx_r = __pyx_v_self->_list_of_observers; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "cython/interface.pyx":771 + * return np.array(self.x_initial, copy=True) + * @property + * def list_of_observers(self): # <<<<<<<<<<<<<< + * return self._list_of_observers + * property number_of_variables: # this is cython syntax, not known in Python + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":776 + * # this is a class definition which is instantiated automatically!? + * """Number of variables this problem instance expects as input.""" + * def __get__(self): # <<<<<<<<<<<<<< + * return self._number_of_variables + * @property + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19number_of_variables_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19number_of_variables_1__get__(PyObject *__pyx_v_self) { @@ -7947,25 +9259,16 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19number_of_variables_1__g __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":776 - * # this is a class definition which is instantiated automatically!? - * """Number of variables this problem instance expects as input.""" - * def __get__(self): # <<<<<<<<<<<<<< - * return self._number_of_variables - * @property - */ - static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":777 @@ -7976,14 +9279,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge * def dimension(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":776 + * # this is a class definition which is instantiated automatically!? + * """Number of variables this problem instance expects as input.""" + * def __get__(self): # <<<<<<<<<<<<<< + * return self._number_of_variables + * @property + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Problem.number_of_variables.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -7994,18 +9304,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19dimension(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_18dimension[] = "alias for `number_of_variables` of the input space"; -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19dimension(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("dimension (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_18dimension(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":779 * return self._number_of_variables * @property @@ -8014,14 +9312,24 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19dimension(PyObject *__py * return self._number_of_variables */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18dimension(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_9dimension_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_9dimension_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("dimension", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":781 * def dimension(self): @@ -8031,17 +9339,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18dimension(struct __pyx_o * def number_of_objectives(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":779 + * return self._number_of_variables + * @property + * def dimension(self): # <<<<<<<<<<<<<< + * """alias for `number_of_variables` of the input space""" + * return self._number_of_variables + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.dimension", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.dimension.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -8049,18 +9364,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18dimension(struct __pyx_o return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21number_of_objectives(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_20number_of_objectives[] = "number of objectives, if equal to 1, call returns a scalar"; -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21number_of_objectives(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("number_of_objectives (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":783 * return self._number_of_variables * @property @@ -8069,14 +9372,24 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21number_of_objectives(PyO * return self._number_of_objectives */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_20number_of_objectives_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_20number_of_objectives_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("number_of_objectives", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":785 * def number_of_objectives(self): @@ -8086,17 +9399,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives(str * def number_of_constraints(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 785, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":783 + * return self._number_of_variables + * @property + * def number_of_objectives(self): # <<<<<<<<<<<<<< + * "number of objectives, if equal to 1, call returns a scalar" + * return self._number_of_objectives + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.number_of_objectives", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.number_of_objectives.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -8104,18 +9424,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives(str return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23number_of_constraints(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_22number_of_constraints[] = "number of constraints"; -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23number_of_constraints(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("number_of_constraints (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_22number_of_constraints(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":787 * return self._number_of_objectives * @property @@ -8124,14 +9432,24 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23number_of_constraints(Py * return self._number_of_constraints */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22number_of_constraints(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21number_of_constraints_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21number_of_constraints_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("number_of_constraints", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":789 * def number_of_constraints(self): @@ -8141,17 +9459,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22number_of_constraints(st * def lower_bounds(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":787 + * return self._number_of_objectives + * @property + * def number_of_constraints(self): # <<<<<<<<<<<<<< + * "number of constraints" + * return self._number_of_constraints + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.number_of_constraints", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.number_of_constraints.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -8159,18 +9484,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22number_of_constraints(st return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_25lower_bounds(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_24lower_bounds[] = "depending on the test bed, these are not necessarily strict bounds\n "; -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_25lower_bounds(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lower_bounds (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_24lower_bounds(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":791 * return self._number_of_constraints * @property @@ -8179,10 +9492,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_25lower_bounds(PyObject *_ * """ */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24lower_bounds(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_12lower_bounds_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_12lower_bounds_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lower_bounds", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":794 * """depending on the test bed, these are not necessarily strict bounds @@ -8196,25 +9522,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24lower_bounds(struct __py __pyx_r = ((PyObject *)__pyx_v_self->_lower_bounds); goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "cython/interface.pyx":791 + * return self._number_of_constraints + * @property + * def lower_bounds(self): # <<<<<<<<<<<<<< + * """depending on the test bed, these are not necessarily strict bounds + * """ + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_27upper_bounds(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_26upper_bounds[] = "depending on the test bed, these are not necessarily strict bounds\n "; -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_27upper_bounds(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("upper_bounds (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_26upper_bounds(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":796 * return self._lower_bounds * @property @@ -8223,10 +9545,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_27upper_bounds(PyObject *_ * """ */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26upper_bounds(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_12upper_bounds_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_12upper_bounds_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("upper_bounds", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":799 * """depending on the test bed, these are not necessarily strict bounds @@ -8240,24 +9575,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26upper_bounds(struct __py __pyx_r = ((PyObject *)__pyx_v_self->_upper_bounds); goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "cython/interface.pyx":796 + * return self._lower_bounds + * @property + * def upper_bounds(self): # <<<<<<<<<<<<<< + * """depending on the test bed, these are not necessarily strict bounds + * """ + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_29evaluations(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_29evaluations(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("evaluations (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_28evaluations(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":801 * return self._upper_bounds * @property @@ -8266,14 +9598,24 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_29evaluations(PyObject *__ * @property */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28evaluations(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_11evaluations_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_11evaluations_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("evaluations", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":802 * @property @@ -8283,17 +9625,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28evaluations(struct __pyx * def final_target_hit(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":801 + * return self._upper_bounds + * @property + * def evaluations(self): # <<<<<<<<<<<<<< + * return coco_problem_get_evaluations(self.problem) + * @property + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.evaluations", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.evaluations.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -8301,18 +9650,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28evaluations(struct __pyx return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_31final_target_hit(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_30final_target_hit[] = "return 1 if the final target is known and has been hit, 0 otherwise\n "; -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_31final_target_hit(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("final_target_hit (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_30final_target_hit(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":804 * return coco_problem_get_evaluations(self.problem) * @property @@ -8321,14 +9658,24 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_31final_target_hit(PyObjec * """ */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30final_target_hit(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_16final_target_hit_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_16final_target_hit_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("final_target_hit", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":807 * """return 1 if the final target is known and has been hit, 0 otherwise @@ -8338,9 +9685,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30final_target_hit(struct * @property */ #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!(__pyx_v_self->problem != 0))) { - PyErr_SetNone(PyExc_AssertionError); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->problem != 0))) { + PyErr_SetNone(PyExc_AssertionError); + __PYX_ERR(0, 807, __pyx_L1_error) + } } #endif @@ -8352,17 +9701,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30final_target_hit(struct * def final_target_fvalue1(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyInt_FromLong(coco_problem_final_target_hit(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(coco_problem_final_target_hit(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 808, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":804 + * return coco_problem_get_evaluations(self.problem) + * @property + * def final_target_hit(self): # <<<<<<<<<<<<<< + * """return 1 if the final target is known and has been hit, 0 otherwise + * """ + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.final_target_hit", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.final_target_hit.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -8370,17 +9726,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30final_target_hit(struct return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_33final_target_fvalue1(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_33final_target_fvalue1(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("final_target_fvalue1 (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_32final_target_fvalue1(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":810 * return coco_problem_final_target_hit(self.problem) * @property @@ -8389,14 +9734,24 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_33final_target_fvalue1(PyO * return coco_problem_get_final_target_fvalue1(self.problem) */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32final_target_fvalue1(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_20final_target_fvalue1_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_20final_target_fvalue1_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_20final_target_fvalue1___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20final_target_fvalue1___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("final_target_fvalue1", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":811 * @property @@ -8406,9 +9761,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32final_target_fvalue1(str * @property */ #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!(__pyx_v_self->problem != 0))) { - PyErr_SetNone(PyExc_AssertionError); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->problem != 0))) { + PyErr_SetNone(PyExc_AssertionError); + __PYX_ERR(0, 811, __pyx_L1_error) + } } #endif @@ -8420,17 +9777,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32final_target_fvalue1(str * def best_observed_fvalue1(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_final_target_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_final_target_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 812, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":810 + * return coco_problem_final_target_hit(self.problem) + * @property + * def final_target_fvalue1(self): # <<<<<<<<<<<<<< + * assert(self.problem) + * return coco_problem_get_final_target_fvalue1(self.problem) + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.final_target_fvalue1", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.final_target_fvalue1.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -8438,17 +9802,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32final_target_fvalue1(str return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_35best_observed_fvalue1(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_35best_observed_fvalue1(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("best_observed_fvalue1 (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_34best_observed_fvalue1(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":814 * return coco_problem_get_final_target_fvalue1(self.problem) * @property @@ -8457,14 +9810,24 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_35best_observed_fvalue1(Py * return coco_problem_get_best_observed_fvalue1(self.problem) */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_34best_observed_fvalue1(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21best_observed_fvalue1_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21best_observed_fvalue1_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("best_observed_fvalue1", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":815 * @property @@ -8474,9 +9837,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_34best_observed_fvalue1(st * */ #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!(__pyx_v_self->problem != 0))) { - PyErr_SetNone(PyExc_AssertionError); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->problem != 0))) { + PyErr_SetNone(PyExc_AssertionError); + __PYX_ERR(0, 815, __pyx_L1_error) + } } #endif @@ -8488,17 +9853,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_34best_observed_fvalue1(st * def free(self, force=False): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_best_observed_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_best_observed_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":814 + * return coco_problem_get_final_target_fvalue1(self.problem) + * @property + * def best_observed_fvalue1(self): # <<<<<<<<<<<<<< + * assert(self.problem) + * return coco_problem_get_best_observed_fvalue1(self.problem) + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cocoex.interface.Problem.best_observed_fvalue1", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.best_observed_fvalue1.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -8506,21 +9878,26 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_34best_observed_fvalue1(st return __pyx_r; } +/* "cython/interface.pyx":818 + * return coco_problem_get_best_observed_fvalue1(self.problem) + * + * def free(self, force=False): # <<<<<<<<<<<<<< + * """Free the given test problem. + * + */ + /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_37free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_36free[] = "Free the given test problem.\n\n Not strictly necessary (unless, possibly, for the observer). `free`\n ensures that all files associated with the problem are closed as\n soon as possible and any memory is freed. After free()ing the\n problem, all other operations are invalid and will raise an\n exception.\n "; -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_37free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_14free[] = "Free the given test problem.\n\n Not strictly necessary (unless, possibly, for the observer). `free`\n ensures that all files associated with the problem are closed as\n soon as possible and any memory is freed. After free()ing the\n problem, all other operations are invalid and will raise an\n exception.\n "; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_force = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("free (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__force,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_force,0}; PyObject* values[1] = {0}; - values[0] = __pyx_k_47; + values[0] = ((PyObject *)Py_False); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); @@ -8533,12 +9910,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_37free(PyObject *__pyx_v_s switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__force); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_force); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "free") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "free") < 0)) __PYX_ERR(0, 818, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -8551,35 +9928,24 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_37free(PyObject *__pyx_v_s } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("free", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("free", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 818, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.free", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_36free(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), __pyx_v_force); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_14free(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), __pyx_v_force); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":818 - * return coco_problem_get_best_observed_fvalue1(self.problem) - * - * def free(self, force=False): # <<<<<<<<<<<<<< - * """Free the given test problem. - * - */ - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36free(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_force) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14free(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_force) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; - int __pyx_t_3; - int __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("free", 0); /* "cython/interface.pyx":827 @@ -8589,20 +9955,22 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36free(struct __pyx_obj_6c * coco_problem_free(self.problem) * self.problem = NULL */ - __pyx_t_1 = (__pyx_v_self->problem != NULL); - if (__pyx_t_1) { - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (!__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_4 = __pyx_t_3; - } else { - __pyx_t_4 = __pyx_t_2; - } - __pyx_t_2 = __pyx_t_4; + __pyx_t_2 = ((__pyx_v_self->problem != NULL) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 827, __pyx_L1_error) + if (!__pyx_t_2) { } else { - __pyx_t_2 = __pyx_t_1; + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; } - if (__pyx_t_2) { + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 827, __pyx_L1_error) + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { /* "cython/interface.pyx":828 * """ @@ -8621,10 +9989,25 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36free(struct __pyx_obj_6c * def __dealloc__(self): */ __pyx_v_self->problem = NULL; - goto __pyx_L3; + + /* "cython/interface.pyx":827 + * exception. + * """ + * if self.problem != NULL and (self._do_free or force): # <<<<<<<<<<<<<< + * coco_problem_free(self.problem) + * self.problem = NULL + */ } - __pyx_L3:; + /* "cython/interface.pyx":818 + * return coco_problem_get_best_observed_fvalue1(self.problem) + * + * def free(self, force=False): # <<<<<<<<<<<<<< + * """Free the given test problem. + * + */ + + /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; @@ -8636,15 +10019,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36free(struct __pyx_obj_6c return __pyx_r; } -/* Python wrapper */ -static void __pyx_pw_6cocoex_9interface_7Problem_39__dealloc__(PyObject *__pyx_v_self); /*proto*/ -static void __pyx_pw_6cocoex_9interface_7Problem_39__dealloc__(PyObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); - __pyx_pf_6cocoex_9interface_7Problem_38__dealloc__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); -} - /* "cython/interface.pyx":831 * self.problem = NULL * @@ -8653,14 +10027,21 @@ static void __pyx_pw_6cocoex_9interface_7Problem_39__dealloc__(PyObject *__pyx_v * # free let the problem_free() call(s) in coco_suite_t crash, hence */ -static void __pyx_pf_6cocoex_9interface_7Problem_38__dealloc__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static void __pyx_pw_6cocoex_9interface_7Problem_17__dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_pw_6cocoex_9interface_7Problem_17__dealloc__(PyObject *__pyx_v_self) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_pf_6cocoex_9interface_7Problem_16__dealloc__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_6cocoex_9interface_7Problem_16__dealloc__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; - int __pyx_t_3; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__dealloc__", 0); /* "cython/interface.pyx":835 @@ -8670,14 +10051,16 @@ static void __pyx_pf_6cocoex_9interface_7Problem_38__dealloc__(struct __pyx_obj_ * coco_problem_free(self.problem) * */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__pyx_t_1) { - __pyx_t_2 = (__pyx_v_self->problem != NULL); - __pyx_t_3 = __pyx_t_2; + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 835, __pyx_L1_error) + if (__pyx_t_2) { } else { - __pyx_t_3 = __pyx_t_1; + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; } - if (__pyx_t_3) { + __pyx_t_2 = ((__pyx_v_self->problem != NULL) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { /* "cython/interface.pyx":836 * # the possibility to set _do_free = False @@ -8687,33 +10070,53 @@ static void __pyx_pf_6cocoex_9interface_7Problem_38__dealloc__(struct __pyx_obj_ * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): */ coco_problem_free(__pyx_v_self->problem); - goto __pyx_L3; + + /* "cython/interface.pyx":835 + * # free let the problem_free() call(s) in coco_suite_t crash, hence + * # the possibility to set _do_free = False + * if self._do_free and self.problem != NULL: # this is not guaranteed to work, see above link # <<<<<<<<<<<<<< + * coco_problem_free(self.problem) + * + */ } - __pyx_L3:; + /* "cython/interface.pyx":831 + * self.problem = NULL + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * # see http://docs.cython.org/src/userguide/special_methods.html + * # free let the problem_free() call(s) in coco_suite_t crash, hence + */ + + /* function exit code */ goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("cocoex.interface.Problem.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_WriteUnraisable("cocoex.interface.Problem.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); } +/* "cython/interface.pyx":839 + * + * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): + * def __call__(self, x): # <<<<<<<<<<<<<< + * """return objective function value of input `x`""" + * cdef np.ndarray[double, ndim=1, mode="c"] _x + */ + /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_41__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_40__call__[] = "return objective function value of input `x`"; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_18__call__[] = "return objective function value of input `x`"; #if CYTHON_COMPILING_IN_CPYTHON -struct wrapperbase __pyx_wrapperbase_6cocoex_9interface_7Problem_40__call__; +struct wrapperbase __pyx_wrapperbase_6cocoex_9interface_7Problem_18__call__; #endif -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_41__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_x = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__call__ (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__x,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0}; PyObject* values[1] = {0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -8726,11 +10129,11 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_41__call__(PyObject *__pyx kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 839, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { goto __pyx_L5_argtuple_error; @@ -8741,26 +10144,20 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_41__call__(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 839, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_40__call__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), __pyx_v_x); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_18__call__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), __pyx_v_x); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":839 - * - * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): - * def __call__(self, x): # <<<<<<<<<<<<<< - * """return objective function value of input `x`""" - * cdef np.ndarray[double, ndim=1, mode="c"] _x - */ - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_x) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_x) { PyArrayObject *__pyx_v__x = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd__x; __Pyx_Buffer __pyx_pybuffer__x; @@ -8772,14 +10169,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; - PyArrayObject *__pyx_t_7 = NULL; - int __pyx_t_8; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__call__", 0); __Pyx_INCREF(__pyx_v_x); __pyx_pybuffer__x.pybuffer.buf = NULL; @@ -8795,10 +10188,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob * if np.size(x) != self.number_of_variables: */ #ifndef CYTHON_WITHOUT_ASSERTIONS - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__pyx_t_1)) { - PyErr_SetNone(PyExc_AssertionError); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!Py_OptimizeFlag)) { + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 842, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) { + PyErr_SetNone(PyExc_AssertionError); + __PYX_ERR(0, 842, __pyx_L1_error) + } } #endif @@ -8809,37 +10204,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob * if np.size(x) != self.number_of_variables: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 843, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 843, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 843, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__copy), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 843, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 843, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 843, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s__double); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 843, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 843, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__order), ((PyObject *)__pyx_n_u__C)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 843, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 843, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_v_x); - __pyx_v_x = __pyx_t_6; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_6); __pyx_t_6 = 0; /* "cython/interface.pyx":844 @@ -8849,27 +10240,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s__size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __Pyx_INCREF(__pyx_v_x); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_x); - __Pyx_GIVEREF(__pyx_v_x); - __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__number_of_variables); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_4) { + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } else { + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_v_x); + __Pyx_GIVEREF(__pyx_v_x); + PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_x); + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 844, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 844, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_1) { /* "cython/interface.pyx":846 @@ -8879,23 +10286,39 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_v_x); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x); - __Pyx_GIVEREF(__pyx_v_x); - __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_48), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 846, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + } + } + if (!__pyx_t_2) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 846, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } else { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 846, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_x); + __Pyx_GIVEREF(__pyx_v_x); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 846, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 846, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":848 * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + @@ -8904,29 +10327,51 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob * _x = x # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__number_of_variables); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_49), __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_6)); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_2)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L3; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 848, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 848, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "cython/interface.pyx":846 + * if np.size(x) != self.number_of_variables: + * raise ValueError( + * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< + * "not match the problem dimension `number_of_variables==%d`." + * % self.number_of_variables) + */ + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 846, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "cython/interface.pyx":845 + * x = np.array(x, copy=False, dtype=np.double, order='C') + * if np.size(x) != self.number_of_variables: + * raise ValueError( # <<<<<<<<<<<<<< + * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + + * "not match the problem dimension `number_of_variables==%d`." + */ + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 845, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 845, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 845, __pyx_L1_error) + + /* "cython/interface.pyx":844 + * assert self.initialized + * x = np.array(x, copy=False, dtype=np.double, order='C') + * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< + * raise ValueError( + * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + + */ } - __pyx_L3:; /* "cython/interface.pyx":849 * "not match the problem dimension `number_of_variables==%d`." @@ -8935,27 +10380,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_7 = ((PyArrayObject *)__pyx_v_x); + if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 849, __pyx_L1_error) + __pyx_t_3 = __pyx_v_x; + __Pyx_INCREF(__pyx_t_3); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__x.rcbuffer->pybuffer); - __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); - if (unlikely(__pyx_t_8 < 0)) { - PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); + __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_3), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); + if (unlikely(__pyx_t_7 < 0)) { + PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)__pyx_v__x, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) { - Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); + Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); __Pyx_RaiseBufferFallbackError(); } else { - PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); + PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10); } } __pyx_pybuffernd__x.diminfo[0].strides = __pyx_pybuffernd__x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__x.diminfo[0].shape = __pyx_pybuffernd__x.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 849, __pyx_L1_error) } - __pyx_t_7 = 0; - __Pyx_INCREF(__pyx_v_x); - __pyx_v__x = ((PyArrayObject *)__pyx_v_x); + __pyx_v__x = ((PyArrayObject *)__pyx_t_3); + __pyx_t_3 = 0; /* "cython/interface.pyx":850 * % self.number_of_variables) @@ -8964,7 +10409,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob * raise InvalidProblemException() * coco_evaluate_function(self.problem, */ - __pyx_t_1 = (__pyx_v_self->problem == NULL); + __pyx_t_1 = ((__pyx_v_self->problem == NULL) != 0); if (__pyx_t_1) { /* "cython/interface.pyx":851 @@ -8974,17 +10419,38 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob * coco_evaluate_function(self.problem, * np.PyArray_DATA(_x), */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_44); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_6, 0, 0, 0); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L4; + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 851, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_6) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 851, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 851, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 851, __pyx_L1_error) + + /* "cython/interface.pyx":850 + * % self.number_of_variables) + * _x = x # this is the final type conversion + * if self.problem is NULL: # <<<<<<<<<<<<<< + * raise InvalidProblemException() + * coco_evaluate_function(self.problem, + */ } - __pyx_L4:; /* "cython/interface.pyx":854 * coco_evaluate_function(self.problem, @@ -8993,10 +10459,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob * if self._number_of_objectives == 1: * return self.y_values[0] */ - __pyx_t_6 = ((PyObject *)__pyx_v_self->y_values); - __Pyx_INCREF(__pyx_t_6); - coco_evaluate_function(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_6)))); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_3 = ((PyObject *)__pyx_v_self->y_values); + __Pyx_INCREF(__pyx_t_3); + + /* "cython/interface.pyx":852 + * if self.problem is NULL: + * raise InvalidProblemException() + * coco_evaluate_function(self.problem, # <<<<<<<<<<<<<< + * np.PyArray_DATA(_x), + * np.PyArray_DATA(self.y_values)) + */ + coco_evaluate_function(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_3)))); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":855 * np.PyArray_DATA(_x), @@ -9005,7 +10479,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob * return self.y_values[0] * return np.array(self.y_values, copy=True) */ - __pyx_t_1 = (__pyx_v_self->_number_of_objectives == 1); + __pyx_t_1 = ((__pyx_v_self->_number_of_objectives == 1) != 0); if (__pyx_t_1) { /* "cython/interface.pyx":856 @@ -9016,14 +10490,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->y_values), 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 856; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __pyx_r = __pyx_t_6; - __pyx_t_6 = 0; + __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->y_values), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 856, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; goto __pyx_L0; - goto __pyx_L5; + + /* "cython/interface.pyx":855 + * np.PyArray_DATA(_x), + * np.PyArray_DATA(self.y_values)) + * if self._number_of_objectives == 1: # <<<<<<<<<<<<<< + * return self.y_values[0] + * return np.array(self.y_values, copy=True) + */ } - __pyx_L5:; /* "cython/interface.pyx":857 * if self._number_of_objectives == 1: @@ -9033,33 +10513,37 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s__array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __Pyx_INCREF(((PyObject *)__pyx_v_self->y_values)); - PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_v_self->y_values)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->y_values)); - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - __pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__copy), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 857, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; + __Pyx_INCREF(((PyObject *)__pyx_v_self->y_values)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self->y_values)); + PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->y_values)); + __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 857, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 857, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 857, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":839 + * + * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): + * def __call__(self, x): # <<<<<<<<<<<<<< + * """return objective function value of input `x`""" + * cdef np.ndarray[double, ndim=1, mode="c"] _x + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); @@ -9067,6 +10551,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__x.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} @@ -9083,18 +10569,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_40__call__(struct __pyx_ob return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_43id(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_42id[] = "id as string without spaces or weird characters"; -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_43id(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("id (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_42id(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":860 * * @property @@ -9103,15 +10577,25 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_43id(PyObject *__pyx_v_sel * if self.problem is not NULL: */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_42id(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_2id_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_2id_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_2id___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("id", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":862 * def id(self): @@ -9120,7 +10604,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_42id(struct __pyx_obj_6coc * return coco_problem_get_id(self.problem) * */ - __pyx_t_1 = (__pyx_v_self->problem != NULL); + __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { /* "cython/interface.pyx":863 @@ -9131,20 +10615,35 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_42id(struct __pyx_obj_6coc * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - __pyx_r = ((PyObject *)__pyx_t_2); + __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 863, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - goto __pyx_L3; + + /* "cython/interface.pyx":862 + * def id(self): + * "id as string without spaces or weird characters" + * if self.problem is not NULL: # <<<<<<<<<<<<<< + * return coco_problem_get_id(self.problem) + * + */ } - __pyx_L3:; + /* "cython/interface.pyx":860 + * + * @property + * def id(self): # <<<<<<<<<<<<<< + * "id as string without spaces or weird characters" + * if self.problem is not NULL: + */ + + /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("cocoex.interface.Problem.id", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -9152,17 +10651,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_42id(struct __pyx_obj_6coc return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_45name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_45name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("name (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_44name(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":866 * * @property @@ -9171,15 +10659,25 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_45name(PyObject *__pyx_v_s * return coco_problem_get_name(self.problem) */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_44name(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_4name_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_4name___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("name", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":867 * @property @@ -9188,7 +10686,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_44name(struct __pyx_obj_6c * return coco_problem_get_name(self.problem) * */ - __pyx_t_1 = (__pyx_v_self->problem != NULL); + __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { /* "cython/interface.pyx":868 @@ -9199,20 +10697,35 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_44name(struct __pyx_obj_6c * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - __pyx_r = ((PyObject *)__pyx_t_2); + __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 868, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - goto __pyx_L3; + + /* "cython/interface.pyx":867 + * @property + * def name(self): + * if self.problem is not NULL: # <<<<<<<<<<<<<< + * return coco_problem_get_name(self.problem) + * + */ } - __pyx_L3:; + /* "cython/interface.pyx":866 + * + * @property + * def name(self): # <<<<<<<<<<<<<< + * if self.problem is not NULL: + * return coco_problem_get_name(self.problem) + */ + + /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("cocoex.interface.Problem.name", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -9220,18 +10733,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_44name(struct __pyx_obj_6c return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_47index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_46index[] = "problem index in the benchmark `Suite` of origin"; -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_47index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("index (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_46index(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":871 * * @property @@ -9240,10 +10741,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_47index(PyObject *__pyx_v_ * return self._problem_index */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_46index(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_5index_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_5index_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_5index___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("index", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":873 * def index(self): @@ -9257,25 +10771,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_46index(struct __pyx_obj_6 __pyx_r = __pyx_v_self->_problem_index; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "cython/interface.pyx":871 + * + * @property + * def index(self): # <<<<<<<<<<<<<< + * """problem index in the benchmark `Suite` of origin""" + * return self._problem_index + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_49suite(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_48suite[] = "benchmark suite this problem is from"; -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_49suite(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("suite (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_48suite(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":876 * * @property @@ -9284,10 +10794,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_49suite(PyObject *__pyx_v_ * return self._suite_name */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_48suite(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_5suite_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_5suite_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_5suite___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("suite", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":878 * def suite(self): @@ -9301,24 +10824,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_48suite(struct __pyx_obj_6 __pyx_r = __pyx_v_self->_suite_name; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "cython/interface.pyx":876 + * + * @property + * def suite(self): # <<<<<<<<<<<<<< + * """benchmark suite this problem is from""" + * return self._suite_name + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_51info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_51info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("info (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_50info(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":881 * * @property @@ -9327,15 +10847,25 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_51info(PyObject *__pyx_v_s * */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_50info(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_4info_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_4info_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_4info___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("info", 0); + __Pyx_RefNannySetupContext("__get__", 0); /* "cython/interface.pyx":882 * @property @@ -9345,24 +10875,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_50info(struct __pyx_obj_6c * def __str__(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":881 + * + * @property + * def info(self): # <<<<<<<<<<<<<< + * return str(self) + * + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("cocoex.interface.Problem.info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("cocoex.interface.Problem.info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -9370,17 +10907,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_50info(struct __pyx_obj_6c return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_53__str__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_53__str__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_52__str__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":884 * return str(self) * @@ -9389,7 +10915,20 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_53__str__(PyObject *__pyx_ * objective = "%s-objective" % ('single' */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_52__str__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21__str__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_21__str__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_20__str__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_v_objective = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -9400,9 +10939,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_52__str__(struct __pyx_obj PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_8 = NULL; + Py_ssize_t __pyx_t_9; __Pyx_RefNannySetupContext("__str__", 0); /* "cython/interface.pyx":885 @@ -9412,7 +10950,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_52__str__(struct __pyx_obj * objective = "%s-objective" % ('single' * if self.number_of_objectives == 1 */ - __pyx_t_1 = (__pyx_v_self->problem != NULL); + __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { /* "cython/interface.pyx":887 @@ -9422,15 +10960,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_52__str__(struct __pyx_obj * else str(self.number_of_objectives)) * return "%s %s problem (%s)" % (self.id, objective, */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_41); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 887, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_int_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 887, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 887, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_1) { - __Pyx_INCREF(((PyObject *)__pyx_n_u__single)); - __pyx_t_2 = ((PyObject *)__pyx_n_u__single); + __Pyx_INCREF(__pyx_n_u_single); + __pyx_t_2 = __pyx_n_u_single; } else { /* "cython/interface.pyx":888 @@ -9440,26 +10979,34 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_52__str__(struct __pyx_obj * return "%s %s problem (%s)" % (self.id, objective, * self.name.replace(self.name.split()[0], */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_41); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_4; __pyx_t_4 = 0; } - __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_50), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_objective = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; - /* "cython/interface.pyx":889 + /* "cython/interface.pyx":886 + * def __str__(self): + * if self.problem is not NULL: + * objective = "%s-objective" % ('single' # <<<<<<<<<<<<<< + * if self.number_of_objectives == 1 + * else str(self.number_of_objectives)) + */ + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_s_objective, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 886, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_objective = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; + + /* "cython/interface.pyx":889 * if self.number_of_objectives == 1 * else str(self.number_of_objectives)) * return "%s %s problem (%s)" % (self.id, objective, # <<<<<<<<<<<<<< @@ -9467,7 +11014,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_52__str__(struct __pyx_obj * self.name.split()[0] + "(%d)" */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__id); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* "cython/interface.pyx":890 @@ -9477,22 +11024,37 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_52__str__(struct __pyx_obj * self.name.split()[0] + "(%d)" * % (self.index if self.index is not None else -2))) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__replace); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__split); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_replace); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 890, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_split); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 890, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + if (__pyx_t_6) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 890, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 890, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 890, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":891 * return "%s %s problem (%s)" % (self.id, objective, @@ -9501,17 +11063,32 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_52__str__(struct __pyx_obj * % (self.index if self.index is not None else -2))) * else: */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__split); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_split); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 891, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_6 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + } + } + if (__pyx_t_6) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 891, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 891, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 891, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":892 * self.name.replace(self.name.split()[0], @@ -9520,75 +11097,119 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_52__str__(struct __pyx_obj * else: * return "finalized/invalid problem" */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__index); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_1 = (__pyx_t_7 != Py_None); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (__pyx_t_1) { - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__index); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_2 = __pyx_t_7; - __pyx_t_7 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_index); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 892, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = (__pyx_t_6 != Py_None); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if ((__pyx_t_1 != 0)) { + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_index); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 892, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = __pyx_t_6; + __pyx_t_6 = 0; } else { __Pyx_INCREF(__pyx_int_neg_2); - __pyx_t_2 = __pyx_int_neg_2; + __pyx_t_3 = __pyx_int_neg_2; } - __pyx_t_7 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_52), __pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_7)); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Add(__pyx_t_6, ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_d, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 892, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "cython/interface.pyx":891 + * return "%s %s problem (%s)" % (self.id, objective, + * self.name.replace(self.name.split()[0], + * self.name.split()[0] + "(%d)" # <<<<<<<<<<<<<< + * % (self.index if self.index is not None else -2))) + * else: + */ + __pyx_t_3 = PyNumber_Add(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 891, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_5 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = NULL; + __pyx_t_9 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_9 = 1; + } + } + __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 890, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + if (__pyx_t_6) { + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; + } + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_9, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_t_3); + __pyx_t_7 = 0; + __pyx_t_3 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; - __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "cython/interface.pyx":889 + * if self.number_of_objectives == 1 + * else str(self.number_of_objectives)) + * return "%s %s problem (%s)" % (self.id, objective, # <<<<<<<<<<<<<< + * self.name.replace(self.name.split()[0], + * self.name.split()[0] + "(%d)" + */ + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 889, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); - __Pyx_INCREF(((PyObject *)__pyx_v_objective)); - PyTuple_SET_ITEM(__pyx_t_7, 1, ((PyObject *)__pyx_v_objective)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_objective)); - PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); + __Pyx_INCREF(__pyx_v_objective); + __Pyx_GIVEREF(__pyx_v_objective); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_objective); __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_2); __pyx_t_4 = 0; __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_51), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; - __pyx_r = ((PyObject *)__pyx_t_2); + __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_s_s_problem_s, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 889, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - goto __pyx_L3; + + /* "cython/interface.pyx":885 + * + * def __str__(self): + * if self.problem is not NULL: # <<<<<<<<<<<<<< + * objective = "%s-objective" % ('single' + * if self.number_of_objectives == 1 + */ } - /*else*/ { - /* "cython/interface.pyx":894 + /* "cython/interface.pyx":894 * % (self.index if self.index is not None else -2))) * else: * return "finalized/invalid problem" # <<<<<<<<<<<<<< * * def __repr__(self): */ + /*else*/ { __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_53)); - __pyx_r = ((PyObject *)__pyx_kp_u_53); + __Pyx_INCREF(__pyx_kp_u_finalized_invalid_problem); + __pyx_r = __pyx_kp_u_finalized_invalid_problem; goto __pyx_L0; } - __pyx_L3:; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":884 + * return str(self) + * + * def __str__(self): # <<<<<<<<<<<<<< + * if self.problem is not NULL: + * objective = "%s-objective" % ('single' + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); @@ -9596,6 +11217,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_52__str__(struct __pyx_obj __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("cocoex.interface.Problem.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -9605,17 +11227,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_52__str__(struct __pyx_obj return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_55__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_55__repr__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_54__repr__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":896 * return "finalized/invalid problem" * @@ -9624,16 +11235,26 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_55__repr__(PyObject *__pyx * return "<%s(), id=%r>" % ( */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_54__repr__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23__repr__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23__repr__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_22__repr__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__repr__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); /* "cython/interface.pyx":897 @@ -9643,7 +11264,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_54__repr__(struct __pyx_ob * return "<%s(), id=%r>" % ( * repr(self.__class__).split()[1][1:-2], */ - __pyx_t_1 = (__pyx_v_self->problem != NULL); + __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { /* "cython/interface.pyx":898 @@ -9662,23 +11283,38 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_54__repr__(struct __pyx_ob * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s____class__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_Repr(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__split); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyObject_Repr(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 899, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_4) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 899, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 899, __pyx_L1_error) + } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 1, -2, NULL, NULL, &__pyx_k_slice_55, 1, 1, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, -2L, NULL, NULL, &__pyx_slice__20, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 899, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "cython/interface.pyx":901 * repr(self.__class__).split()[1][1:-2], @@ -9687,42 +11323,71 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_54__repr__(struct __pyx_ob * else: * return "" */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__id); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 901, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "cython/interface.pyx":899 + * if self.problem is not NULL: + * return "<%s(), id=%r>" % ( + * repr(self.__class__).split()[1][1:-2], # <<<<<<<<<<<<<< + * # self.problem_suite, self.problem_index, + * self.id) + */ + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_3 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_54), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __pyx_r = ((PyObject *)__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); __pyx_t_2 = 0; + __pyx_t_3 = 0; + + /* "cython/interface.pyx":898 + * def __repr__(self): + * if self.problem is not NULL: + * return "<%s(), id=%r>" % ( # <<<<<<<<<<<<<< + * repr(self.__class__).split()[1][1:-2], + * # self.problem_suite, self.problem_index, + */ + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_s_id_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 898, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; goto __pyx_L0; - goto __pyx_L3; + + /* "cython/interface.pyx":897 + * + * def __repr__(self): + * if self.problem is not NULL: # <<<<<<<<<<<<<< + * return "<%s(), id=%r>" % ( + * repr(self.__class__).split()[1][1:-2], + */ } - /*else*/ { - /* "cython/interface.pyx":903 + /* "cython/interface.pyx":903 * self.id) * else: * return "" # <<<<<<<<<<<<<< * * def __enter__(self): */ + /*else*/ { __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_56)); - __pyx_r = ((PyObject *)__pyx_kp_u_56); + __Pyx_INCREF(__pyx_kp_u_finalized_invalid_problem_2); + __pyx_r = __pyx_kp_u_finalized_invalid_problem_2; goto __pyx_L0; } - __pyx_L3:; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":896 + * return "finalized/invalid problem" + * + * def __repr__(self): # <<<<<<<<<<<<<< + * if self.problem is not NULL: + * return "<%s(), id=%r>" % ( + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); @@ -9735,18 +11400,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_54__repr__(struct __pyx_ob return __pyx_r; } -/* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_57__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_7Problem_56__enter__[] = "Allows ``with Benchmark(...).get_problem(...) as problem:``"; -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_57__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__enter__ (wrapper)", 0); - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_56__enter__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - /* "cython/interface.pyx":905 * return "" * @@ -9755,7 +11408,21 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_57__enter__(PyObject *__py * return self */ -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_56__enter__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_25__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_6cocoex_9interface_7Problem_24__enter__[] = "Allows ``with Benchmark(...).get_problem(...) as problem:``"; +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_25__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__enter__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_24__enter__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__enter__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__enter__", 0); @@ -9772,27 +11439,40 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_56__enter__(struct __pyx_o __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "cython/interface.pyx":905 + * return "" + * + * def __enter__(self): # <<<<<<<<<<<<<< + * """Allows ``with Benchmark(...).get_problem(...) as problem:``""" + * return self + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":908 + * """Allows ``with Benchmark(...).get_problem(...) as problem:``""" + * return self + * def __exit__(self, exception_type, exception_value, traceback): # <<<<<<<<<<<<<< + * try: + * self.free() + */ + /* Python wrapper */ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_59__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6cocoex_9interface_7Problem_59__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_27__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_27__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { CYTHON_UNUSED PyObject *__pyx_v_exception_type = 0; CYTHON_UNUSED PyObject *__pyx_v_exception_value = 0; CYTHON_UNUSED PyObject *__pyx_v_traceback = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__exit__ (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__exception_type,&__pyx_n_s__exception_value,&__pyx_n_s__traceback,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_exception_type,&__pyx_n_s_exception_value,&__pyx_n_s_traceback,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -9807,21 +11487,21 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_59__exit__(PyObject *__pyx kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__exception_type)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_type)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__exception_value)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_value)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 908, __pyx_L3_error) } case 2: - if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__traceback)) != 0)) kw_args--; + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 908, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 908, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -9836,26 +11516,20 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_59__exit__(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 908, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_58__exit__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), __pyx_v_exception_type, __pyx_v_exception_value, __pyx_v_traceback); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_26__exit__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), __pyx_v_exception_type, __pyx_v_exception_value, __pyx_v_traceback); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":908 - * """Allows ``with Benchmark(...).get_problem(...) as problem:``""" - * return self - * def __exit__(self, exception_type, exception_value, traceback): # <<<<<<<<<<<<<< - * try: - * self.free() - */ - -static PyObject *__pyx_pf_6cocoex_9interface_7Problem_58__exit__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback) { +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__exit__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -9863,9 +11537,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_58__exit__(struct __pyx_ob PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("__exit__", 0); /* "cython/interface.pyx":909 @@ -9876,6 +11548,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_58__exit__(struct __pyx_ob * except: */ { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); @@ -9889,20 +11563,45 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_58__exit__(struct __pyx_ob * except: * pass */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__free); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_free); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 910, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + if (__pyx_t_6) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 910, __pyx_L3_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else { + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 910, __pyx_L3_error) + } + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "cython/interface.pyx":909 + * return self + * def __exit__(self, exception_type, exception_value, traceback): + * try: # <<<<<<<<<<<<<< + * self.free() + * except: + */ } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L10_try_end; __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_PyThreadState_assign + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; /* "cython/interface.pyx":911 * try: @@ -9912,10 +11611,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_58__exit__(struct __pyx_ob * */ /*except:*/ { - PyErr_Restore(0,0,0); + __Pyx_ErrRestore(0,0,0); goto __pyx_L4_exception_handled; } __pyx_L4_exception_handled:; + __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); @@ -9923,12 +11623,29 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_58__exit__(struct __pyx_ob __pyx_L10_try_end:; } + /* "cython/interface.pyx":908 + * """Allows ``with Benchmark(...).get_problem(...) as problem:``""" + * return self + * def __exit__(self, exception_type, exception_value, traceback): # <<<<<<<<<<<<<< + * try: + * self.free() + */ + + /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":629 + * # cdef public np.ndarray lower_bounds + * # cdef public np.ndarray upper_bounds + * cdef public np.ndarray _lower_bounds # <<<<<<<<<<<<<< + * cdef public np.ndarray _upper_bounds + * cdef size_t _number_of_variables + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_1__get__(PyObject *__pyx_v_self) { @@ -9936,18 +11653,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_1__get__(P __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":629 - * # cdef public np.ndarray lower_bounds - * # cdef public np.ndarray upper_bounds - * cdef public np.ndarray _lower_bounds # <<<<<<<<<<<<<< - * cdef public np.ndarray _upper_bounds - * cdef size_t _number_of_variables - */ - static PyObject *__pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -9957,7 +11668,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds___get__(st __pyx_r = ((PyObject *)__pyx_v_self->_lower_bounds); goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); @@ -9971,6 +11682,8 @@ static int __pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_3__set__(PyObjec __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds_2__set__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -9978,20 +11691,22 @@ static int __pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_3__set__(PyObjec static int __pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds_2__set__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__set__", 0); - if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); + if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 629, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_lower_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_lower_bounds)); - __pyx_v_self->_lower_bounds = ((PyArrayObject *)__pyx_v_value); + __pyx_v_self->_lower_bounds = ((PyArrayObject *)__pyx_t_1); + __pyx_t_1 = 0; + /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Problem._lower_bounds.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; @@ -10006,6 +11721,8 @@ static int __pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_5__del__(PyObjec __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds_4__del__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -10020,11 +11737,20 @@ static int __pyx_pf_6cocoex_9interface_7Problem_13_lower_bounds_4__del__(struct __Pyx_DECREF(((PyObject *)__pyx_v_self->_lower_bounds)); __pyx_v_self->_lower_bounds = ((PyArrayObject *)Py_None); + /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":630 + * # cdef public np.ndarray upper_bounds + * cdef public np.ndarray _lower_bounds + * cdef public np.ndarray _upper_bounds # <<<<<<<<<<<<<< + * cdef size_t _number_of_variables + * cdef size_t _number_of_objectives + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_1__get__(PyObject *__pyx_v_self) { @@ -10032,18 +11758,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_1__get__(P __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_13_upper_bounds___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":630 - * # cdef public np.ndarray upper_bounds - * cdef public np.ndarray _lower_bounds - * cdef public np.ndarray _upper_bounds # <<<<<<<<<<<<<< - * cdef size_t _number_of_variables - * cdef size_t _number_of_objectives - */ - static PyObject *__pyx_pf_6cocoex_9interface_7Problem_13_upper_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -10053,7 +11773,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_13_upper_bounds___get__(st __pyx_r = ((PyObject *)__pyx_v_self->_upper_bounds); goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); @@ -10067,6 +11787,8 @@ static int __pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_3__set__(PyObjec __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_13_upper_bounds_2__set__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -10074,20 +11796,22 @@ static int __pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_3__set__(PyObjec static int __pyx_pf_6cocoex_9interface_7Problem_13_upper_bounds_2__set__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__set__", 0); - if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 630; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); + if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 630, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_upper_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_upper_bounds)); - __pyx_v_self->_upper_bounds = ((PyArrayObject *)__pyx_v_value); + __pyx_v_self->_upper_bounds = ((PyArrayObject *)__pyx_t_1); + __pyx_t_1 = 0; + /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cocoex.interface.Problem._upper_bounds.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; @@ -10102,6 +11826,8 @@ static int __pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_5__del__(PyObjec __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_13_upper_bounds_4__del__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -10116,34 +11842,32 @@ static int __pyx_pf_6cocoex_9interface_7Problem_13_upper_bounds_4__del__(struct __Pyx_DECREF(((PyObject *)__pyx_v_self->_upper_bounds)); __pyx_v_self->_upper_bounds = ((PyArrayObject *)Py_None); + /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "cython/interface.pyx":914 + * pass + * + * def log_level(level=None): # <<<<<<<<<<<<<< + * """`log_level(level=None)` return current log level and + * set new log level if `level is not None and level`. + */ + /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_6cocoex_9interface_log_level[] = "`log_level(level=None)` return current log level and\n set new log level if `level is not None and level`.\n \n `level` must be 'error' or 'warning' or 'info' or 'debug', listed\n with increasing verbosity, or '' which doesn't change anything.\n "; -static PyMethodDef __pyx_mdef_6cocoex_9interface_1log_level = {__Pyx_NAMESTR("log_level"), (PyCFunction)__pyx_pw_6cocoex_9interface_1log_level, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_log_level)}; +static PyMethodDef __pyx_mdef_6cocoex_9interface_1log_level = {"log_level", (PyCFunction)__pyx_pw_6cocoex_9interface_1log_level, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_log_level}; static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_level = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("log_level (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__level,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_level,0}; PyObject* values[1] = {0}; - - /* "cython/interface.pyx":914 - * pass - * - * def log_level(level=None): # <<<<<<<<<<<<<< - * """`log_level(level=None)` return current log level and - * set new log level if `level is not None and level`. - */ values[0] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; @@ -10157,12 +11881,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, Py switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__level); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_level); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log_level") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log_level") < 0)) __PYX_ERR(0, 914, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -10175,13 +11899,15 @@ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, Py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("log_level", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("log_level", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 914, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.log_level", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6cocoex_9interface_log_level(__pyx_self, __pyx_v_level); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } @@ -10194,9 +11920,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ int __pyx_t_2; PyObject *__pyx_t_3 = NULL; char const *__pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("log_level", 0); /* "cython/interface.pyx":921 @@ -10207,14 +11930,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ * */ __pyx_t_2 = (__pyx_v_level != Py_None); - if (__pyx_t_2) { + if ((__pyx_t_2 != 0)) { __Pyx_INCREF(__pyx_v_level); __pyx_t_1 = __pyx_v_level; } else { - __Pyx_INCREF(((PyObject *)__pyx_kp_u_3)); - __pyx_t_1 = ((PyObject *)__pyx_kp_u_3); + __Pyx_INCREF(__pyx_kp_u__2); + __pyx_t_1 = __pyx_kp_u__2; } - __pyx_t_3 = ((PyObject *)__pyx_f_6cocoex_9interface__bstring(__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v__level = ((PyObject*)__pyx_t_3); @@ -10227,15 +11950,22 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v__level)); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_3 = __Pyx_PyStr_FromString(coco_set_log_level(__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - __pyx_r = ((PyObject *)__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v__level); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 922, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyStr_FromString(coco_set_log_level(__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 922, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "cython/interface.pyx":914 + * pass + * + * def log_level(level=None): # <<<<<<<<<<<<<< + * """`log_level(level=None)` return current log level and + * set new log level if `level is not None and level`. + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); @@ -10248,6 +11978,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ return __pyx_r; } +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":197 + * # experimental exception made for __getbuffer__ and __releasebuffer__ + * # -- the details of this may change. + * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< + * # This implementation of getbuffer is geared towards Cython + * # requirements, and does not yet fullfill the PEP. + */ + /* Python wrapper */ static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { @@ -10255,18 +11993,12 @@ static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); __pyx_r = __pyx_pf_5numpy_7ndarray___getbuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "numpy.pxd":194 - * # experimental exception made for __getbuffer__ and __releasebuffer__ - * # -- the details of this may change. - * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< - * # This implementation of getbuffer is geared towards Cython - * # requirements, and does not yet fullfill the PEP. - */ - static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { int __pyx_v_copy_shape; int __pyx_v_i; @@ -10282,38 +12014,31 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; int __pyx_t_5; - int __pyx_t_6; - int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - char *__pyx_t_9; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + PyObject *__pyx_t_6 = NULL; + char *__pyx_t_7; __Pyx_RefNannySetupContext("__getbuffer__", 0); if (__pyx_v_info != NULL) { __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "numpy.pxd":200 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":203 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< * * cdef int copy_shape, i, ndim */ - __pyx_t_1 = (__pyx_v_info == NULL); + __pyx_t_1 = ((__pyx_v_info == NULL) != 0); if (__pyx_t_1) { __pyx_r = 0; goto __pyx_L0; - goto __pyx_L3; } - __pyx_L3:; - /* "numpy.pxd":203 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":206 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -10322,7 +12047,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "numpy.pxd":204 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":207 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -10331,7 +12056,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "numpy.pxd":206 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":209 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -10340,17 +12065,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "numpy.pxd":208 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":211 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< * copy_shape = 1 * else: */ - __pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t))); + __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "numpy.pxd":209 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":212 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -10358,102 +12083,142 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * copy_shape = 0 */ __pyx_v_copy_shape = 1; + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":211 + * ndim = PyArray_NDIM(self) + * + * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< + * copy_shape = 1 + * else: + */ goto __pyx_L4; } - /*else*/ { - /* "numpy.pxd":211 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":214 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) */ + /*else*/ { __pyx_v_copy_shape = 0; } __pyx_L4:; - /* "numpy.pxd":213 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":216 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") */ - __pyx_t_1 = ((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS); - if (__pyx_t_1) { + __pyx_t_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L6_bool_binop_done; + } - /* "numpy.pxd":214 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":217 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< * raise ValueError(u"ndarray is not C contiguous") * */ - __pyx_t_2 = (!PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS)); - __pyx_t_3 = __pyx_t_2; - } else { - __pyx_t_3 = __pyx_t_1; - } - if (__pyx_t_3) { + __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L6_bool_binop_done:; + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":216 + * copy_shape = 0 + * + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): + * raise ValueError(u"ndarray is not C contiguous") + */ + if (__pyx_t_1) { - /* "numpy.pxd":215 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":218 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) */ - __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_58), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L5; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 218, __pyx_L1_error) + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":216 + * copy_shape = 0 + * + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): + * raise ValueError(u"ndarray is not C contiguous") + */ } - __pyx_L5:; - /* "numpy.pxd":217 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":220 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") */ - __pyx_t_3 = ((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS); - if (__pyx_t_3) { + __pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L9_bool_binop_done; + } - /* "numpy.pxd":218 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":221 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< * raise ValueError(u"ndarray is not Fortran contiguous") * */ - __pyx_t_1 = (!PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS)); - __pyx_t_2 = __pyx_t_1; - } else { - __pyx_t_2 = __pyx_t_3; - } - if (__pyx_t_2) { + __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L9_bool_binop_done:; + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":220 + * raise ValueError(u"ndarray is not C contiguous") + * + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): + * raise ValueError(u"ndarray is not Fortran contiguous") + */ + if (__pyx_t_1) { - /* "numpy.pxd":219 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":222 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< * * info.buf = PyArray_DATA(self) */ - __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_60), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L6; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 222, __pyx_L1_error) + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":220 + * raise ValueError(u"ndarray is not C contiguous") + * + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): + * raise ValueError(u"ndarray is not Fortran contiguous") + */ } - __pyx_L6:; - /* "numpy.pxd":221 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":224 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -10462,7 +12227,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "numpy.pxd":222 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":225 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -10471,16 +12236,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "numpy.pxd":223 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":226 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. */ - if (__pyx_v_copy_shape) { + __pyx_t_1 = (__pyx_v_copy_shape != 0); + if (__pyx_t_1) { - /* "numpy.pxd":226 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":229 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -10489,7 +12255,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "numpy.pxd":227 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":230 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -10498,18 +12264,18 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "numpy.pxd":228 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":231 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] */ - __pyx_t_5 = __pyx_v_ndim; - for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { - __pyx_v_i = __pyx_t_6; + __pyx_t_4 = __pyx_v_ndim; + for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { + __pyx_v_i = __pyx_t_5; - /* "numpy.pxd":229 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -10518,7 +12284,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "numpy.pxd":230 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":233 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -10527,20 +12293,28 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]); } - goto __pyx_L7; + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":226 + * info.buf = PyArray_DATA(self) + * info.ndim = ndim + * if copy_shape: # <<<<<<<<<<<<<< + * # Allocate new buffer for strides and shape info. + * # This is allocated as one block, strides first. + */ + goto __pyx_L11; } - /*else*/ { - /* "numpy.pxd":232 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL */ + /*else*/ { __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "numpy.pxd":233 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":236 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -10549,9 +12323,9 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(__pyx_v_self)); } - __pyx_L7:; + __pyx_L11:; - /* "numpy.pxd":234 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":237 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -10560,7 +12334,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "numpy.pxd":235 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":238 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -10569,37 +12343,37 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "numpy.pxd":236 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":239 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< * * cdef int t */ - __pyx_v_info->readonly = (!PyArray_ISWRITEABLE(__pyx_v_self)); + __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "numpy.pxd":239 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":242 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< * cdef dtype descr = self.descr - * cdef list stack + * cdef int offset */ __pyx_v_f = NULL; - /* "numpy.pxd":240 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":243 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< - * cdef list stack * cdef int offset + * */ - __pyx_t_4 = ((PyObject *)__pyx_v_self->descr); - __Pyx_INCREF(__pyx_t_4); - __pyx_v_descr = ((PyArray_Descr *)__pyx_t_4); - __pyx_t_4 = 0; + __pyx_t_3 = ((PyObject *)__pyx_v_self->descr); + __Pyx_INCREF(__pyx_t_3); + __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); + __pyx_t_3 = 0; - /* "numpy.pxd":244 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -10608,23 +12382,25 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "numpy.pxd":246 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":248 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< * # do not call releasebuffer * info.obj = None */ - __pyx_t_2 = (!__pyx_v_hasfields); + __pyx_t_2 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_2) { - __pyx_t_3 = (!__pyx_v_copy_shape); - __pyx_t_1 = __pyx_t_3; } else { __pyx_t_1 = __pyx_t_2; + goto __pyx_L15_bool_binop_done; } + __pyx_t_2 = ((!(__pyx_v_copy_shape != 0)) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "numpy.pxd":248 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":250 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -10636,117 +12412,134 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GOTREF(__pyx_v_info->obj); __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = Py_None; - goto __pyx_L10; + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":248 + * cdef bint hasfields = PyDataType_HASFIELDS(descr) + * + * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< + * # do not call releasebuffer + * info.obj = None + */ + goto __pyx_L14; } - /*else*/ { - /* "numpy.pxd":251 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":253 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< * * if not hasfields: */ + /*else*/ { __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); __Pyx_GOTREF(__pyx_v_info->obj); __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = ((PyObject *)__pyx_v_self); } - __pyx_L10:; + __pyx_L14:; - /* "numpy.pxd":253 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":255 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or */ - __pyx_t_1 = (!__pyx_v_hasfields); + __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "numpy.pxd":254 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":256 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): */ - __pyx_t_5 = __pyx_v_descr->type_num; - __pyx_v_t = __pyx_t_5; + __pyx_t_4 = __pyx_v_descr->type_num; + __pyx_v_t = __pyx_t_4; - /* "numpy.pxd":255 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":257 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") */ - __pyx_t_1 = (__pyx_v_descr->byteorder == '>'); - if (__pyx_t_1) { - __pyx_t_2 = __pyx_v_little_endian; + __pyx_t_2 = ((__pyx_v_descr->byteorder == '>') != 0); + if (!__pyx_t_2) { + goto __pyx_L20_next_or; } else { - __pyx_t_2 = __pyx_t_1; } + __pyx_t_2 = (__pyx_v_little_endian != 0); if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L19_bool_binop_done; + } + __pyx_L20_next_or:; - /* "numpy.pxd":256 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":258 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" */ - __pyx_t_1 = (__pyx_v_descr->byteorder == '<'); - if (__pyx_t_1) { - __pyx_t_3 = (!__pyx_v_little_endian); - __pyx_t_7 = __pyx_t_3; - } else { - __pyx_t_7 = __pyx_t_1; - } - __pyx_t_1 = __pyx_t_7; + __pyx_t_2 = ((__pyx_v_descr->byteorder == '<') != 0); + if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; + goto __pyx_L19_bool_binop_done; } + __pyx_t_2 = ((!(__pyx_v_little_endian != 0)) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L19_bool_binop_done:; + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":257 + * if not hasfields: + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (descr.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ if (__pyx_t_1) { - /* "numpy.pxd":257 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":259 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" */ - __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_62), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L12; - } - __pyx_L12:; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 259, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 259, __pyx_L1_error) - /* "numpy.pxd":274 - * elif t == NPY_CDOUBLE: f = "Zd" - * elif t == NPY_CLONGDOUBLE: f = "Zg" - * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< - * else: - * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":257 + * if not hasfields: + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (descr.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") */ - switch (__pyx_v_t) { + } - /* "numpy.pxd":258 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":260 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" */ + switch (__pyx_v_t) { case NPY_BYTE: - __pyx_v_f = __pyx_k__b; + __pyx_v_f = ((char *)"b"); break; - /* "numpy.pxd":259 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":261 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -10754,10 +12547,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_USHORT: f = "H" */ case NPY_UBYTE: - __pyx_v_f = __pyx_k__B; + __pyx_v_f = ((char *)"B"); break; - /* "numpy.pxd":260 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":262 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -10765,10 +12558,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_INT: f = "i" */ case NPY_SHORT: - __pyx_v_f = __pyx_k__h; + __pyx_v_f = ((char *)"h"); break; - /* "numpy.pxd":261 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -10776,10 +12569,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_UINT: f = "I" */ case NPY_USHORT: - __pyx_v_f = __pyx_k__H; + __pyx_v_f = ((char *)"H"); break; - /* "numpy.pxd":262 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -10787,10 +12580,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_LONG: f = "l" */ case NPY_INT: - __pyx_v_f = __pyx_k__i; + __pyx_v_f = ((char *)"i"); break; - /* "numpy.pxd":263 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -10798,10 +12591,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_ULONG: f = "L" */ case NPY_UINT: - __pyx_v_f = __pyx_k__I; + __pyx_v_f = ((char *)"I"); break; - /* "numpy.pxd":264 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -10809,10 +12602,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_LONGLONG: f = "q" */ case NPY_LONG: - __pyx_v_f = __pyx_k__l; + __pyx_v_f = ((char *)"l"); break; - /* "numpy.pxd":265 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -10820,10 +12613,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_ULONGLONG: f = "Q" */ case NPY_ULONG: - __pyx_v_f = __pyx_k__L; + __pyx_v_f = ((char *)"L"); break; - /* "numpy.pxd":266 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -10831,10 +12624,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_FLOAT: f = "f" */ case NPY_LONGLONG: - __pyx_v_f = __pyx_k__q; + __pyx_v_f = ((char *)"q"); break; - /* "numpy.pxd":267 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -10842,10 +12635,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_DOUBLE: f = "d" */ case NPY_ULONGLONG: - __pyx_v_f = __pyx_k__Q; + __pyx_v_f = ((char *)"Q"); break; - /* "numpy.pxd":268 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -10853,10 +12646,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_LONGDOUBLE: f = "g" */ case NPY_FLOAT: - __pyx_v_f = __pyx_k__f; + __pyx_v_f = ((char *)"f"); break; - /* "numpy.pxd":269 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -10864,10 +12657,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_CFLOAT: f = "Zf" */ case NPY_DOUBLE: - __pyx_v_f = __pyx_k__d; + __pyx_v_f = ((char *)"d"); break; - /* "numpy.pxd":270 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -10875,10 +12668,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_CDOUBLE: f = "Zd" */ case NPY_LONGDOUBLE: - __pyx_v_f = __pyx_k__g; + __pyx_v_f = ((char *)"g"); break; - /* "numpy.pxd":271 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -10886,10 +12679,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_CLONGDOUBLE: f = "Zg" */ case NPY_CFLOAT: - __pyx_v_f = __pyx_k__Zf; + __pyx_v_f = ((char *)"Zf"); break; - /* "numpy.pxd":272 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -10897,10 +12690,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * elif t == NPY_OBJECT: f = "O" */ case NPY_CDOUBLE: - __pyx_v_f = __pyx_k__Zd; + __pyx_v_f = ((char *)"Zd"); break; - /* "numpy.pxd":273 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":275 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -10908,10 +12701,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * else: */ case NPY_CLONGDOUBLE: - __pyx_v_f = __pyx_k__Zg; + __pyx_v_f = ((char *)"Zg"); break; - /* "numpy.pxd":274 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -10919,37 +12712,37 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) */ case NPY_OBJECT: - __pyx_v_f = __pyx_k__O; + __pyx_v_f = ((char *)"O"); break; default: - /* "numpy.pxd":276 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":278 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< * info.format = f * return */ - __pyx_t_4 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_8 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_63), __pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_8)); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_8)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_8)); - __pyx_t_8 = 0; - __pyx_t_8 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_8, 0, 0, 0); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - {__pyx_filename = __pyx_f[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_t_6, 0, 0, 0); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __PYX_ERR(1, 278, __pyx_L1_error) break; } - /* "numpy.pxd":277 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":279 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -10958,7 +12751,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "numpy.pxd":278 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":280 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -10967,20 +12760,27 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_r = 0; goto __pyx_L0; - goto __pyx_L11; - } - /*else*/ { - /* "numpy.pxd":280 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":255 + * info.obj = self + * + * if not hasfields: # <<<<<<<<<<<<<< + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or + */ + } + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":282 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 */ - __pyx_v_info->format = ((char *)malloc(255)); + /*else*/ { + __pyx_v_info->format = ((char *)malloc(0xFF)); - /* "numpy.pxd":281 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":283 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -10989,7 +12789,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "numpy.pxd":282 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":284 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -10998,17 +12798,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "numpy.pxd":285 - * f = _util_dtypestring(descr, info.format + 1, + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":285 + * info.format[0] = c'^' # Native data types, manual alignment + * offset = 0 + * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< * info.format + _buffer_format_string_len, - * &offset) # <<<<<<<<<<<<<< - * f[0] = c'\0' # Terminate format string - * + * &offset) */ - __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_v_f = __pyx_t_9; + __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(1, 285, __pyx_L1_error) + __pyx_v_f = __pyx_t_7; - /* "numpy.pxd":286 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":288 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -11017,13 +12817,21 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_f[0]) = '\x00'; } - __pyx_L11:; + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":197 + * # experimental exception made for __getbuffer__ and __releasebuffer__ + * # -- the details of this may change. + * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< + * # This implementation of getbuffer is geared towards Cython + * # requirements, and does not yet fullfill the PEP. + */ + + /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; if (__pyx_v_info != NULL && __pyx_v_info->obj != NULL) { @@ -11042,39 +12850,41 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":290 + * f[0] = c'\0' # Terminate format string + * + * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< + * if PyArray_HASFIELDS(self): + * stdlib.free(info.format) + */ + /* Python wrapper */ static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/ static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__releasebuffer__ (wrapper)", 0); __pyx_pf_5numpy_7ndarray_2__releasebuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info)); + + /* function exit code */ __Pyx_RefNannyFinishContext(); } -/* "numpy.pxd":288 - * f[0] = c'\0' # Terminate format string - * - * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< - * if PyArray_HASFIELDS(self): - * stdlib.free(info.format) - */ - static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info) { __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "numpy.pxd":289 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":291 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): */ - __pyx_t_1 = PyArray_HASFIELDS(__pyx_v_self); + __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "numpy.pxd":290 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":292 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -11082,21 +12892,27 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s * stdlib.free(info.strides) */ free(__pyx_v_info->format); - goto __pyx_L3; + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":291 + * + * def __releasebuffer__(ndarray self, Py_buffer* info): + * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< + * stdlib.free(info.format) + * if sizeof(npy_intp) != sizeof(Py_ssize_t): + */ } - __pyx_L3:; - /* "numpy.pxd":291 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":293 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< * stdlib.free(info.strides) * # info.shape was stored after info.strides in the same block */ - __pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t))); + __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "numpy.pxd":292 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":294 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -11104,14 +12920,29 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s * */ free(__pyx_v_info->strides); - goto __pyx_L4; + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":293 + * if PyArray_HASFIELDS(self): + * stdlib.free(info.format) + * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< + * stdlib.free(info.strides) + * # info.shape was stored after info.strides in the same block + */ } - __pyx_L4:; + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":290 + * f[0] = c'\0' # Terminate format string + * + * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< + * if PyArray_HASFIELDS(self): + * stdlib.free(info.format) + */ + + /* function exit code */ __Pyx_RefNannyFinishContext(); } -/* "numpy.pxd":768 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":770 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -11123,12 +12954,9 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "numpy.pxd":769 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":771 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -11136,14 +12964,21 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ * cdef inline object PyArray_MultiIterNew2(a, b): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 771, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":770 + * ctypedef npy_cdouble complex_t + * + * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(1, a) + * + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -11154,7 +12989,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "numpy.pxd":771 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":773 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -11166,12 +13001,9 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "numpy.pxd":772 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":774 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -11179,14 +13011,21 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ * cdef inline object PyArray_MultiIterNew3(a, b, c): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 774, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":773 + * return PyArray_MultiIterNew(1, a) + * + * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(2, a, b) + * + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -11197,7 +13036,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "numpy.pxd":774 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":776 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -11209,12 +13048,9 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "numpy.pxd":775 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":777 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -11222,14 +13058,21 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ * cdef inline object PyArray_MultiIterNew4(a, b, c, d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":776 + * return PyArray_MultiIterNew(2, a, b) + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(3, a, b, c) + * + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -11240,7 +13083,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "numpy.pxd":777 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":779 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -11252,12 +13095,9 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "numpy.pxd":778 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":780 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -11265,14 +13105,21 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":779 + * return PyArray_MultiIterNew(3, a, b, c) + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(4, a, b, c, d) + * + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -11283,7 +13130,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "numpy.pxd":780 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":782 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -11295,12 +13142,9 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "numpy.pxd":781 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":783 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -11308,14 +13152,21 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":782 + * return PyArray_MultiIterNew(4, a, b, c, d) + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -11326,7 +13177,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "numpy.pxd":783 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":785 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -11348,30 +13199,24 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx Py_ssize_t __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *(*__pyx_t_6)(PyObject *); + int __pyx_t_5; + int __pyx_t_6; int __pyx_t_7; - int __pyx_t_8; - int __pyx_t_9; - int __pyx_t_10; - long __pyx_t_11; - char *__pyx_t_12; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; + long __pyx_t_8; + char *__pyx_t_9; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "numpy.pxd":790 - * cdef int delta_offset - * cdef tuple i + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":790 + * + * cdef dtype child * cdef int endian_detector = 1 # <<<<<<<<<<<<<< * cdef bint little_endian = ((&endian_detector)[0] != 0) * cdef tuple fields */ __pyx_v_endian_detector = 1; - /* "numpy.pxd":791 - * cdef tuple i + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":791 + * cdef dtype child * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< * cdef tuple fields @@ -11379,52 +13224,55 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "numpy.pxd":794 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< * fields = descr.fields[childname] * child, new_offset = fields */ - if (unlikely(((PyObject *)__pyx_v_descr->names) == Py_None)) { + if (unlikely(__pyx_v_descr->names == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[1]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __PYX_ERR(1, 794, __pyx_L1_error) } - __pyx_t_1 = ((PyObject *)__pyx_v_descr->names); __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; + __pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; for (;;) { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 794, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 794, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); #endif - __Pyx_XDECREF(__pyx_v_childname); - __pyx_v_childname = __pyx_t_3; + __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "numpy.pxd":795 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< * child, new_offset = fields * */ - __pyx_t_3 = PyObject_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (!__pyx_t_3) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_v_descr->fields == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 795, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_XDECREF(((PyObject *)__pyx_v_fields)); - __pyx_v_fields = ((PyObject*)__pyx_t_3); + if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 795, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "numpy.pxd":796 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< * - * if (end - f) - (new_offset - offset[0]) < 15: + * if (end - f) - (new_offset - offset[0]) < 15: */ - if (likely(PyTuple_CheckExact(((PyObject *)__pyx_v_fields)))) { - PyObject* sequence = ((PyObject *)__pyx_v_fields); + if (likely(__pyx_v_fields != Py_None)) { + PyObject* sequence = __pyx_v_fields; #if CYTHON_COMPILING_IN_CPYTHON Py_ssize_t size = Py_SIZE(sequence); #else @@ -11433,7 +13281,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __PYX_ERR(1, 796, __pyx_L1_error) } #if CYTHON_COMPILING_IN_CPYTHON __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); @@ -11441,134 +13289,128 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); #else - __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif - } else if (1) { - __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } else - { - Py_ssize_t index = -1; - __pyx_t_5 = PyObject_GetIter(((PyObject *)__pyx_v_fields)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; - index = 0; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_3); - index = 1; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_6 = NULL; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - goto __pyx_L6_unpacking_done; - __pyx_L5_unpacking_failed:; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_6 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_L6_unpacking_done:; + } else { + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 796, __pyx_L1_error) } - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_XDECREF(((PyObject *)__pyx_v_child)); - __pyx_v_child = ((PyArray_Descr *)__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(1, 796, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3)); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_v_new_offset); - __pyx_v_new_offset = __pyx_t_4; + __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "numpy.pxd":798 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * - * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< + * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * */ - __pyx_t_4 = PyInt_FromLong((__pyx_v_end - __pyx_v_f)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Subtract(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_int_15, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 798, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_7) { + __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); + if (__pyx_t_6) { - /* "numpy.pxd":799 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":799 * - * if (end - f) - (new_offset - offset[0]) < 15: + * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< * * if ((child.byteorder == c'>' and little_endian) or */ - __pyx_t_5 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_65), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L7; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 799, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 799, __pyx_L1_error) + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":798 + * child, new_offset = fields + * + * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") + * + */ } - __pyx_L7:; - /* "numpy.pxd":801 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") */ - __pyx_t_7 = (__pyx_v_child->byteorder == '>'); - if (__pyx_t_7) { - __pyx_t_8 = __pyx_v_little_endian; + __pyx_t_7 = ((__pyx_v_child->byteorder == '>') != 0); + if (!__pyx_t_7) { + goto __pyx_L8_next_or; } else { - __pyx_t_8 = __pyx_t_7; } - if (!__pyx_t_8) { + __pyx_t_7 = (__pyx_v_little_endian != 0); + if (!__pyx_t_7) { + } else { + __pyx_t_6 = __pyx_t_7; + goto __pyx_L7_bool_binop_done; + } + __pyx_L8_next_or:; - /* "numpy.pxd":802 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< * raise ValueError(u"Non-native byte order not supported") * # One could encode it in the format string and have Cython */ - __pyx_t_7 = (__pyx_v_child->byteorder == '<'); - if (__pyx_t_7) { - __pyx_t_9 = (!__pyx_v_little_endian); - __pyx_t_10 = __pyx_t_9; - } else { - __pyx_t_10 = __pyx_t_7; - } - __pyx_t_7 = __pyx_t_10; + __pyx_t_7 = ((__pyx_v_child->byteorder == '<') != 0); + if (__pyx_t_7) { } else { - __pyx_t_7 = __pyx_t_8; + __pyx_t_6 = __pyx_t_7; + goto __pyx_L7_bool_binop_done; } - if (__pyx_t_7) { + __pyx_t_7 = ((!(__pyx_v_little_endian != 0)) != 0); + __pyx_t_6 = __pyx_t_7; + __pyx_L7_bool_binop_done:; + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":801 + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") + * + * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (child.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ + if (__pyx_t_6) { - /* "numpy.pxd":803 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * # One could encode it in the format string and have Cython * # complain instead, BUT: < and > in format strings also imply */ - __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_66), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L8; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 803, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 803, __pyx_L1_error) + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":801 + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") + * + * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (child.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ } - __pyx_L8:; - /* "numpy.pxd":813 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -11576,24 +13418,24 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * f += 1 */ while (1) { - __pyx_t_5 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 813, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 813, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!__pyx_t_7) break; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 813, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (!__pyx_t_6) break; - /* "numpy.pxd":814 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< * f += 1 * offset[0] += 1 */ - (__pyx_v_f[0]) = 120; + (__pyx_v_f[0]) = 0x78; - /* "numpy.pxd":815 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -11602,413 +13444,418 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "numpy.pxd":816 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< * * offset[0] += child.itemsize */ - __pyx_t_11 = 0; - (__pyx_v_offset[__pyx_t_11]) = ((__pyx_v_offset[__pyx_t_11]) + 1); + __pyx_t_8 = 0; + (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "numpy.pxd":818 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< * * if not PyDataType_HASFIELDS(child): */ - __pyx_t_11 = 0; - (__pyx_v_offset[__pyx_t_11]) = ((__pyx_v_offset[__pyx_t_11]) + __pyx_v_child->elsize); + __pyx_t_8 = 0; + (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "numpy.pxd":820 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< * t = child.type_num * if end - f < 5: */ - __pyx_t_7 = (!PyDataType_HASFIELDS(__pyx_v_child)); - if (__pyx_t_7) { + __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); + if (__pyx_t_6) { - /* "numpy.pxd":821 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") */ - __pyx_t_3 = PyInt_FromLong(__pyx_v_child->type_num); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_v_t); - __pyx_v_t = __pyx_t_3; - __pyx_t_3 = 0; + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 821, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); + __pyx_t_4 = 0; - /* "numpy.pxd":822 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< * raise RuntimeError(u"Format string allocated too short.") * */ - __pyx_t_7 = ((__pyx_v_end - __pyx_v_f) < 5); - if (__pyx_t_7) { + __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); + if (__pyx_t_6) { - /* "numpy.pxd":823 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< * * # Until ticket #99 is fixed, use integers to avoid warnings */ - __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_68), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L12; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 823, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(1, 823, __pyx_L1_error) + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":822 + * if not PyDataType_HASFIELDS(child): + * t = child.type_num + * if end - f < 5: # <<<<<<<<<<<<<< + * raise RuntimeError(u"Format string allocated too short.") + * + */ } - __pyx_L12:; - /* "numpy.pxd":826 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" */ - __pyx_t_3 = PyInt_FromLong(NPY_BYTE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 826, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 826, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 826, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_7) { + if (__pyx_t_6) { (__pyx_v_f[0]) = 98; - goto __pyx_L13; + goto __pyx_L15; } - /* "numpy.pxd":827 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" */ - __pyx_t_5 = PyInt_FromLong(NPY_UBYTE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 827, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 827, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_7) { + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 827, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { (__pyx_v_f[0]) = 66; - goto __pyx_L13; + goto __pyx_L15; } - /* "numpy.pxd":828 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" */ - __pyx_t_3 = PyInt_FromLong(NPY_SHORT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 828, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 828, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 828, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_7) { - (__pyx_v_f[0]) = 104; - goto __pyx_L13; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x68; + goto __pyx_L15; } - /* "numpy.pxd":829 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" */ - __pyx_t_5 = PyInt_FromLong(NPY_USHORT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 829, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 829, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_7) { + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 829, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { (__pyx_v_f[0]) = 72; - goto __pyx_L13; + goto __pyx_L15; } - /* "numpy.pxd":830 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" */ - __pyx_t_3 = PyInt_FromLong(NPY_INT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 830, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 830, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 830, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_7) { - (__pyx_v_f[0]) = 105; - goto __pyx_L13; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x69; + goto __pyx_L15; } - /* "numpy.pxd":831 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" */ - __pyx_t_5 = PyInt_FromLong(NPY_UINT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 831, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 831, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_7) { + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 831, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { (__pyx_v_f[0]) = 73; - goto __pyx_L13; + goto __pyx_L15; } - /* "numpy.pxd":832 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" */ - __pyx_t_3 = PyInt_FromLong(NPY_LONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 832, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 832, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 832, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_7) { - (__pyx_v_f[0]) = 108; - goto __pyx_L13; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x6C; + goto __pyx_L15; } - /* "numpy.pxd":833 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" */ - __pyx_t_5 = PyInt_FromLong(NPY_ULONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 833, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 833, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_7) { + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 833, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { (__pyx_v_f[0]) = 76; - goto __pyx_L13; + goto __pyx_L15; } - /* "numpy.pxd":834 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" */ - __pyx_t_3 = PyInt_FromLong(NPY_LONGLONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 834, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 834, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 834, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_7) { - (__pyx_v_f[0]) = 113; - goto __pyx_L13; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x71; + goto __pyx_L15; } - /* "numpy.pxd":835 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" */ - __pyx_t_5 = PyInt_FromLong(NPY_ULONGLONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 835, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 835, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_7) { + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 835, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { (__pyx_v_f[0]) = 81; - goto __pyx_L13; + goto __pyx_L15; } - /* "numpy.pxd":836 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" */ - __pyx_t_3 = PyInt_FromLong(NPY_FLOAT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 836, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 836, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 836, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_7) { - (__pyx_v_f[0]) = 102; - goto __pyx_L13; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x66; + goto __pyx_L15; } - /* "numpy.pxd":837 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf */ - __pyx_t_5 = PyInt_FromLong(NPY_DOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 837, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 837, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_7) { - (__pyx_v_f[0]) = 100; - goto __pyx_L13; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 837, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x64; + goto __pyx_L15; } - /* "numpy.pxd":838 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd */ - __pyx_t_3 = PyInt_FromLong(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 838, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 838, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 838, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_7) { - (__pyx_v_f[0]) = 103; - goto __pyx_L13; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x67; + goto __pyx_L15; } - /* "numpy.pxd":839 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg */ - __pyx_t_5 = PyInt_FromLong(NPY_CFLOAT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 839, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 839, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_7) { + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 839, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { (__pyx_v_f[0]) = 90; - (__pyx_v_f[1]) = 102; + (__pyx_v_f[1]) = 0x66; __pyx_v_f = (__pyx_v_f + 1); - goto __pyx_L13; + goto __pyx_L15; } - /* "numpy.pxd":840 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" */ - __pyx_t_3 = PyInt_FromLong(NPY_CDOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 840, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 840, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 840, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_7) { + if (__pyx_t_6) { (__pyx_v_f[0]) = 90; - (__pyx_v_f[1]) = 100; + (__pyx_v_f[1]) = 0x64; __pyx_v_f = (__pyx_v_f + 1); - goto __pyx_L13; + goto __pyx_L15; } - /* "numpy.pxd":841 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: */ - __pyx_t_5 = PyInt_FromLong(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 841, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 841, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_7) { + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 841, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { (__pyx_v_f[0]) = 90; - (__pyx_v_f[1]) = 103; + (__pyx_v_f[1]) = 0x67; __pyx_v_f = (__pyx_v_f + 1); - goto __pyx_L13; + goto __pyx_L15; } - /* "numpy.pxd":842 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) */ - __pyx_t_3 = PyInt_FromLong(NPY_OBJECT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 842, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 842, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 842, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_7) { + if (__pyx_t_6) { (__pyx_v_f[0]) = 79; - goto __pyx_L13; + goto __pyx_L15; } - /*else*/ { - /* "numpy.pxd":844 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< * f += 1 * else: */ - __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_63), __pyx_v_t); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_5)); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + /*else*/ { + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_5)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_5)); - __pyx_t_5 = 0; - __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - {__pyx_filename = __pyx_f[1]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 844, __pyx_L1_error) } - __pyx_L13:; + __pyx_L15:; - /* "numpy.pxd":845 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -12016,25 +13863,41 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * # Cython ignores struct boundary information ("T{...}"), */ __pyx_v_f = (__pyx_v_f + 1); - goto __pyx_L11; + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":820 + * offset[0] += child.itemsize + * + * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< + * t = child.type_num + * if end - f < 5: + */ + goto __pyx_L13; } - /*else*/ { - /* "numpy.pxd":849 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< * return f * */ - __pyx_t_12 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_v_f = __pyx_t_12; + /*else*/ { + __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == NULL)) __PYX_ERR(1, 849, __pyx_L1_error) + __pyx_v_f = __pyx_t_9; } - __pyx_L11:; + __pyx_L13:; + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":794 + * cdef tuple fields + * + * for childname in descr.names: # <<<<<<<<<<<<<< + * fields = descr.fields[childname] + * child, new_offset = fields + */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "numpy.pxd":850 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -12044,13 +13907,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - __pyx_r = 0; - goto __pyx_L0; + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":785 + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< + * # Recursive utility function used in __getbuffer__ to get format + * # string. The new location in the format string is returned. + */ + + /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("numpy._util_dtypestring", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -12063,7 +13932,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "numpy.pxd":965 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -12075,9 +13944,10 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a PyObject *__pyx_v_baseptr; __Pyx_RefNannyDeclarations int __pyx_t_1; + int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "numpy.pxd":967 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -12085,9 +13955,10 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a * else: */ __pyx_t_1 = (__pyx_v_base == Py_None); - if (__pyx_t_1) { + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { - /* "numpy.pxd":968 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -12095,20 +13966,28 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a * Py_INCREF(base) # important to do this before decref below! */ __pyx_v_baseptr = NULL; + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":968 + * cdef inline void set_array_base(ndarray arr, object base): + * cdef PyObject* baseptr + * if base is None: # <<<<<<<<<<<<<< + * baseptr = NULL + * else: + */ goto __pyx_L3; } - /*else*/ { - /* "numpy.pxd":970 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< * baseptr = base * Py_XDECREF(arr.base) */ + /*else*/ { Py_INCREF(__pyx_v_base); - /* "numpy.pxd":971 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -12119,7 +13998,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "numpy.pxd":972 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -12128,7 +14007,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "numpy.pxd":973 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -12137,10 +14016,19 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":966 + * + * + * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< + * cdef PyObject* baseptr + * if base is None: + */ + + /* function exit code */ __Pyx_RefNannyFinishContext(); } -/* "numpy.pxd":975 +/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -12154,17 +14042,17 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "numpy.pxd":976 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< * return None * else: */ - __pyx_t_1 = (__pyx_v_arr->base == NULL); + __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "numpy.pxd":977 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -12175,23 +14063,37 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __Pyx_INCREF(Py_None); __pyx_r = Py_None; goto __pyx_L0; - goto __pyx_L3; + + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":977 + * + * cdef inline object get_array_base(ndarray arr): + * if arr.base is NULL: # <<<<<<<<<<<<<< + * return None + * else: + */ } - /*else*/ { - /* "numpy.pxd":979 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< */ + /*else*/ { __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_arr->base)); __pyx_r = ((PyObject *)__pyx_v_arr->base); goto __pyx_L0; } - __pyx_L3:; - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":976 + * arr.base = baseptr + * + * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< + * if arr.base is NULL: + * return None + */ + + /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); @@ -12202,7 +14104,11 @@ static struct __pyx_vtabstruct_6cocoex_9interface_Suite __pyx_vtable_6cocoex_9in static PyObject *__pyx_tp_new_6cocoex_9interface_Suite(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_6cocoex_9interface_Suite *p; PyObject *o; - o = (*t->tp_alloc)(t, 0); + if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } if (unlikely(!o)) return 0; p = ((struct __pyx_obj_6cocoex_9interface_Suite *)o); p->__pyx_vtab = __pyx_vtabptr_6cocoex_9interface_Suite; @@ -12225,13 +14131,17 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Suite(PyTypeObject *t, PyObject static void __pyx_tp_dealloc_6cocoex_9interface_Suite(PyObject *o) { struct __pyx_obj_6cocoex_9interface_Suite *p = (struct __pyx_obj_6cocoex_9interface_Suite *)o; + #if PY_VERSION_HEX >= 0x030400a1 + if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif PyObject_GC_UnTrack(o); { PyObject *etype, *eval, *etb; PyErr_Fetch(&etype, &eval, &etb); ++Py_REFCNT(o); __pyx_pw_6cocoex_9interface_5Suite_15__dealloc__(o); - if (PyErr_Occurred()) PyErr_WriteUnraisable(o); --Py_REFCNT(o); PyErr_Restore(etype, eval, etb); } @@ -12252,15 +14162,6 @@ static void __pyx_tp_dealloc_6cocoex_9interface_Suite(PyObject *o) { static int __pyx_tp_traverse_6cocoex_9interface_Suite(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_6cocoex_9interface_Suite *p = (struct __pyx_obj_6cocoex_9interface_Suite *)o; - if (p->_name) { - e = (*v)(p->_name, a); if (e) return e; - } - if (p->_instance) { - e = (*v)(p->_instance, a); if (e) return e; - } - if (p->_options) { - e = (*v)(p->_options, a); if (e) return e; - } if (p->current_problem_) { e = (*v)(p->current_problem_, a); if (e) return e; } @@ -12289,17 +14190,8 @@ static int __pyx_tp_traverse_6cocoex_9interface_Suite(PyObject *o, visitproc v, } static int __pyx_tp_clear_6cocoex_9interface_Suite(PyObject *o) { - struct __pyx_obj_6cocoex_9interface_Suite *p = (struct __pyx_obj_6cocoex_9interface_Suite *)o; PyObject* tmp; - tmp = ((PyObject*)p->_name); - p->_name = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_instance); - p->_instance = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_options); - p->_options = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); + struct __pyx_obj_6cocoex_9interface_Suite *p = (struct __pyx_obj_6cocoex_9interface_Suite *)o; tmp = ((PyObject*)p->current_problem_); p->current_problem_ = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); @@ -12334,87 +14226,73 @@ static PyObject *__pyx_sq_item_6cocoex_9interface_Suite(PyObject *o, Py_ssize_t return r; } +static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_current_problem(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_5Suite_15current_problem_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_current_index(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_5Suite_13current_index_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_problem_names(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_5Suite_13problem_names_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_dimensions(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_5Suite_10dimensions_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_number_of_objectives(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_5Suite_20number_of_objectives_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_indices(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_5Suite_7indices_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_name(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_5Suite_4name_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_instance(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_5Suite_8instance_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_options(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_5Suite_7options_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_5Suite_info(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_5Suite_4info_1__get__(o); +} + static PyMethodDef __pyx_methods_6cocoex_9interface_Suite[] = { - {__Pyx_NAMESTR("reset"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_3reset, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_2reset)}, - {__Pyx_NAMESTR("next_problem"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_5next_problem, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_4next_problem)}, - {__Pyx_NAMESTR("get_problem"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_7get_problem, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_6get_problem)}, - {__Pyx_NAMESTR("get_problem_by_function_dimension_instance"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dimension_instance, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_8get_problem_by_function_dimension_instance)}, - {__Pyx_NAMESTR("free"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_13free, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_12free)}, - {__Pyx_NAMESTR("find_problem_ids"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_17find_problem_ids, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_16find_problem_ids)}, - {__Pyx_NAMESTR("ids"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_19ids, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_18ids)}, - {__Pyx_NAMESTR("current_problem"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_21current_problem, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_20current_problem)}, - {__Pyx_NAMESTR("current_index"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_23current_index, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_22current_index)}, - {__Pyx_NAMESTR("problem_names"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_25problem_names, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_24problem_names)}, - {__Pyx_NAMESTR("dimensions"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_27dimensions, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_26dimensions)}, - {__Pyx_NAMESTR("number_of_objectives"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_29number_of_objectives, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_28number_of_objectives)}, - {__Pyx_NAMESTR("indices"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_31indices, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_30indices)}, - {__Pyx_NAMESTR("name"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_33name, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_32name)}, - {__Pyx_NAMESTR("instance"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_35instance, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_34instance)}, - {__Pyx_NAMESTR("options"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_37options, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_5Suite_36options)}, - {__Pyx_NAMESTR("info"), (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_39info, METH_NOARGS, __Pyx_DOCSTR(0)}, + {"reset", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_3reset, METH_NOARGS, __pyx_doc_6cocoex_9interface_5Suite_2reset}, + {"next_problem", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_5next_problem, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_5Suite_4next_problem}, + {"get_problem", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_7get_problem, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_5Suite_6get_problem}, + {"get_problem_by_function_dimension_instance", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dimension_instance, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_5Suite_8get_problem_by_function_dimension_instance}, + {"free", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_13free, METH_NOARGS, __pyx_doc_6cocoex_9interface_5Suite_12free}, + {"find_problem_ids", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_17find_problem_ids, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_5Suite_16find_problem_ids}, + {"ids", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_19ids, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_5Suite_18ids}, {0, 0, 0, 0} }; -static PyNumberMethods __pyx_tp_as_number_Suite = { - 0, /*nb_add*/ - 0, /*nb_subtract*/ - 0, /*nb_multiply*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_divide*/ - #endif - 0, /*nb_remainder*/ - 0, /*nb_divmod*/ - 0, /*nb_power*/ - 0, /*nb_negative*/ - 0, /*nb_positive*/ - 0, /*nb_absolute*/ - 0, /*nb_nonzero*/ - 0, /*nb_invert*/ - 0, /*nb_lshift*/ - 0, /*nb_rshift*/ - 0, /*nb_and*/ - 0, /*nb_xor*/ - 0, /*nb_or*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_coerce*/ - #endif - 0, /*nb_int*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_long*/ - #else - 0, /*reserved*/ - #endif - 0, /*nb_float*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_oct*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*nb_hex*/ - #endif - 0, /*nb_inplace_add*/ - 0, /*nb_inplace_subtract*/ - 0, /*nb_inplace_multiply*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_inplace_divide*/ - #endif - 0, /*nb_inplace_remainder*/ - 0, /*nb_inplace_power*/ - 0, /*nb_inplace_lshift*/ - 0, /*nb_inplace_rshift*/ - 0, /*nb_inplace_and*/ - 0, /*nb_inplace_xor*/ - 0, /*nb_inplace_or*/ - 0, /*nb_floor_divide*/ - 0, /*nb_true_divide*/ - 0, /*nb_inplace_floor_divide*/ - 0, /*nb_inplace_true_divide*/ - #if PY_VERSION_HEX >= 0x02050000 - 0, /*nb_index*/ - #endif +static struct PyGetSetDef __pyx_getsets_6cocoex_9interface_Suite[] = { + {(char *)"current_problem", __pyx_getprop_6cocoex_9interface_5Suite_current_problem, 0, (char *)"current \"open/active\" problem to be benchmarked", 0}, + {(char *)"current_index", __pyx_getprop_6cocoex_9interface_5Suite_current_index, 0, (char *)"index in the enumerator of all problems in this suite.\n\n Details: To get the index in the underlying C implementation, which\n usually matches `current_index` one-to-one, use::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> suite.current_index is None\n True\n >>> suite.next_problem().id[-17:].lower()\n 'bbob_f001_i01_d02'\n >>> suite.current_index, suite.indices[suite.current_index]\n (0, 0)\n\n ", 0}, + {(char *)"problem_names", __pyx_getprop_6cocoex_9interface_5Suite_problem_names, 0, (char *)"list of problem names in this `Suite`, see also `ids`", 0}, + {(char *)"dimensions", __pyx_getprop_6cocoex_9interface_5Suite_dimensions, 0, (char *)"list of problem dimensions occuring at least once in this `Suite`", 0}, + {(char *)"number_of_objectives", __pyx_getprop_6cocoex_9interface_5Suite_number_of_objectives, 0, (char *)"list of number of objectives occuring in this `Suite`", 0}, + {(char *)"indices", __pyx_getprop_6cocoex_9interface_5Suite_indices, 0, (char *)"list of all problem indices, deprecated.\n \n These values are (only) used to call the underlying C structures.\n Indices used in the Python interface run between 0 and `len(self)`.\n ", 0}, + {(char *)"name", __pyx_getprop_6cocoex_9interface_5Suite_name, 0, (char *)"name of this suite as used to instantiate the suite via `Suite(name, ...)`", 0}, + {(char *)"instance", __pyx_getprop_6cocoex_9interface_5Suite_instance, 0, (char *)"instance of this suite as used to instantiate the suite via\n `Suite(name, instance, ...)`", 0}, + {(char *)"options", __pyx_getprop_6cocoex_9interface_5Suite_options, 0, (char *)"options for this suite as used to instantiate the suite via\n `Suite(name, instance, options)`", 0}, + {(char *)"info", __pyx_getprop_6cocoex_9interface_5Suite_info, 0, (char *)0, 0}, + {0, 0, 0, 0, 0} }; static PySequenceMethods __pyx_tp_as_sequence_Suite = { - __pyx_pw_6cocoex_9interface_5Suite_45__len__, /*sq_length*/ + __pyx_pw_6cocoex_9interface_5Suite_25__len__, /*sq_length*/ 0, /*sq_concat*/ 0, /*sq_repeat*/ __pyx_sq_item_6cocoex_9interface_Suite, /*sq_item*/ @@ -12427,35 +14305,14 @@ static PySequenceMethods __pyx_tp_as_sequence_Suite = { }; static PyMappingMethods __pyx_tp_as_mapping_Suite = { - __pyx_pw_6cocoex_9interface_5Suite_45__len__, /*mp_length*/ + __pyx_pw_6cocoex_9interface_5Suite_25__len__, /*mp_length*/ __pyx_pw_6cocoex_9interface_5Suite_11__getitem__, /*mp_subscript*/ 0, /*mp_ass_subscript*/ }; -static PyBufferProcs __pyx_tp_as_buffer_Suite = { - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getreadbuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getwritebuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getsegcount*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getcharbuffer*/ - #endif - #if PY_VERSION_HEX >= 0x02060000 - 0, /*bf_getbuffer*/ - #endif - #if PY_VERSION_HEX >= 0x02060000 - 0, /*bf_releasebuffer*/ - #endif -}; - static PyTypeObject __pyx_type_6cocoex_9interface_Suite = { PyVarObject_HEAD_INIT(0, 0) - __Pyx_NAMESTR("cocoex.interface.Suite"), /*tp_name*/ + "cocoex.interface.Suite", /*tp_name*/ sizeof(struct __pyx_obj_6cocoex_9interface_Suite), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6cocoex_9interface_Suite, /*tp_dealloc*/ @@ -12464,30 +14321,31 @@ static PyTypeObject __pyx_type_6cocoex_9interface_Suite = { 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ - #else - 0, /*reserved*/ #endif - __pyx_pw_6cocoex_9interface_5Suite_41__repr__, /*tp_repr*/ - &__pyx_tp_as_number_Suite, /*tp_as_number*/ + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + __pyx_pw_6cocoex_9interface_5Suite_21__repr__, /*tp_repr*/ + 0, /*tp_as_number*/ &__pyx_tp_as_sequence_Suite, /*tp_as_sequence*/ &__pyx_tp_as_mapping_Suite, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ - __pyx_pw_6cocoex_9interface_5Suite_43__str__, /*tp_str*/ + __pyx_pw_6cocoex_9interface_5Suite_23__str__, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ - &__pyx_tp_as_buffer_Suite, /*tp_as_buffer*/ + 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - __Pyx_DOCSTR("Suite of benchmark problems.\n\n Input arguments to `Suite` are `name: str`, `instance: str`, `options: str`,\n and passed to the respective C code (see `coco.h`).\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> f = suite.next_problem()\n >>> assert f.number_of_objectives == 1\n >>> print(\"f([1,2]) = %.11f\" % f([1,2]))\n f([1,2]) = 90.00369408000\n\n Sweeping through all problems is as simple as::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> observer = ex.Observer(\"bbob-biobj\", \"result_folder:doctest\")\n >>> for fun in suite:\n ... if fun.index == 0:\n ... print(\"Number of objectives %d, %d, %d\" %\n ... (fun.number_of_objectives,\n ... suite.number_of_objectives[0],\n ... suite.number_of_objectives[-1]))\n ... fun.observe_with(observer)\n ... assert fun.number_of_objectives == suite.number_of_objectives[0]\n ... # run run run using fun # doctest: +ELLIPSIS\n Number of objectives 2, 2, 2...\n\n In the example, an observer was added to produce output data for the\n COCO post-processing.\n\n The following example runs the entire bbob2009 benchmark suite\n on random search::\n\n >>> import numpy as np\n >>> from cocoex import Suite, Observer\n ...\n >>> MAX_FE = 22 # max f-evaluations\n >>> def random_search(f, lb, ub, m): # don't use m >> 1e5 with this implementation\n ... candidates = lb + (ub - lb) * np.random.rand(m, len(lb))\n ... return candidates[np.argmin([f(x) for x in candidates])]\n ...\n >>> solver = random_search\n >>> suite = Suite(\"bbob\", \"year:2009\", \"\")\n >>> observer = Observer(\"bbob\",\n ... \"result_folder: %s_on_%s\" % (solver.__name__, \"bbob2009\"))\n >>> for fun in suite:\n ... if fun.dimension > 10:\n ... break\n ... print('Current problem index = %d' % fun.index)\n ... fun.observe_with(observer)\n ... solver(fun, fun.lower_bounds, fun.upper_bounds, MAX_FE)\n ... # data should be now in the \"exdata/random_search_on_bbob2009\" folder\n ... # doctest: +ELLIPSIS\n Current problem index = 0...\n >>> #\n >>> # Exactly the same using another looping technique:\n >>> for id in suite.ids():\n ... fun = suite.get_problem(id, observer)\n ... _ = solver(fun, fun.lower_bounds, fun.upper_bounds, MAX_FE)\n ... print(\"Evaluations on %s: %d\" % (fun.name, fun.evaluations))\n ... fun.free() # this is absolutely necessary here\n ... # doctest: +ELLIPSIS\n Evaluations on ...\n\n We can select a single function, say BBOB f9 in 20D, of a given suite like::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"dimensions:20 instance_indices:1\")\n >>> len(suite)\n 24\n >>> f9 = suite.get_problem(8)\n >>> x = f9.initial_solution # a copy of a feasible point\n >>> all(x == 0)\n True\n\n See module attribute `cocoex.known_suite_names` for known suite names::\n\n >>> import cocoex as ex\n >>> for suite_name in ex.known_suite_names:\n ... suite = ex.Suite(suite_name, \"\", \"\")\n ... print(suite.dimensions)\n ... for f in suite:\n ... assert f.dimension in suite.dimensions\n ... # doctest: +ELLIPSIS\n [2, 3, 5, 10, 20, 40]...\n\n See file `example_experiment.py` for a full example use case.\n\n Details: depending on the benchmark suite and observer, only one problem can\n be open at a time. Using `get_problem` without `free` or mixing the use of\n `next_problem` and `get_problem` may not be possible. For example, in this\n case the \"bbob\" observer is known to lead to a crash of the Python\n interpreter.\n\n See also `Observer` and `example_experiment.py`.\n "), /*tp_doc*/ + "Suite of benchmark problems.\n\n Input arguments to `Suite` are `name: str`, `instance: str`, `options: str`,\n and passed to the respective C code (see `coco.h`).\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> f = suite.next_problem()\n >>> assert f.number_of_objectives == 1\n >>> print(\"f([1,2]) = %.11f\" % f([1,2]))\n f([1,2]) = 90.00369408000\n\n Sweeping through all problems is as simple as::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> observer = ex.Observer(\"bbob-biobj\", \"result_folder:doctest\")\n >>> for fun in suite:\n ... if fun.index == 0:\n ... print(\"Number of objectives %d, %d, %d\" %\n ... (fun.number_of_objectives,\n ... suite.number_of_objectives[0],\n ... suite.number_of_objectives[-1]))\n ... fun.observe_with(observer)\n ... assert fun.number_of_objectives == suite.number_of_objectives[0]\n ... # run run run using fun # doctest: +ELLIPSIS\n Number of objectives 2, 2, 2...\n\n In the example, an observer was added to produce output data for the\n COCO post-processing.\n\n The following example runs the entire bbob2009 benchmark suite\n on random search::\n\n >>> import numpy as np\n >>> from cocoex import Suite, Observer\n ...\n >>> MAX_FE = 22 # max f-evaluations\n >>> def random_search(f, lb, ub, m): # don't use m >> 1e5 with this implementation\n ... candidates = lb + (ub - lb) * np.random.rand(m, len(lb))\n ... return candidates[np.argmin([f(x) for x in candidates])]\n ...\n >>> solver = random_search\n >>> suite = Suite(\"bbob\", \"year:2009\", \"\")\n >>> observer = Observer(\"bbob\",\n ... \"result_folder: %s_on_%s\" % (solver.__name__, \"bbob2009\"))\n >>> for fun in suite:\n ... if fun.dimension > 10:\n ... break\n ... print('C""urrent problem index = %d' % fun.index)\n ... fun.observe_with(observer)\n ... solver(fun, fun.lower_bounds, fun.upper_bounds, MAX_FE)\n ... # data should be now in the \"exdata/random_search_on_bbob2009\" folder\n ... # doctest: +ELLIPSIS\n Current problem index = 0...\n >>> #\n >>> # Exactly the same using another looping technique:\n >>> for id in suite.ids():\n ... fun = suite.get_problem(id, observer)\n ... _ = solver(fun, fun.lower_bounds, fun.upper_bounds, MAX_FE)\n ... print(\"Evaluations on %s: %d\" % (fun.name, fun.evaluations))\n ... fun.free() # this is absolutely necessary here\n ... # doctest: +ELLIPSIS\n Evaluations on ...\n\n We can select a single function, say BBOB f9 in 20D, of a given suite like::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"dimensions:20 instance_indices:1\")\n >>> len(suite)\n 24\n >>> f9 = suite.get_problem(8)\n >>> x = f9.initial_solution # a copy of a feasible point\n >>> all(x == 0)\n True\n\n See module attribute `cocoex.known_suite_names` for known suite names::\n\n >>> import cocoex as ex\n >>> for suite_name in ex.known_suite_names:\n ... suite = ex.Suite(suite_name, \"\", \"\")\n ... print(suite.dimensions)\n ... for f in suite:\n ... assert f.dimension in suite.dimensions\n ... # doctest: +ELLIPSIS\n [2, 3, 5, 10, 20, 40]...\n\n See file `example_experiment.py` for a full example use case.\n\n Details: depending on the benchmark suite and observer, only one problem can\n be open at a time. Using `get_problem` without `free` or mixing the use of\n `next_problem` and `get_problem` may not be possible. For example, in this\n case the \"bbob\" observer is known to lead to a crash of the Python\n interpreter.\n\n See also `Observer` and `example_experiment.py`.\n ", /*tp_doc*/ __pyx_tp_traverse_6cocoex_9interface_Suite, /*tp_traverse*/ __pyx_tp_clear_6cocoex_9interface_Suite, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ - __pyx_pw_6cocoex_9interface_5Suite_47__iter__, /*tp_iter*/ + __pyx_pw_6cocoex_9interface_5Suite_27__iter__, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_6cocoex_9interface_Suite, /*tp_methods*/ 0, /*tp_members*/ - 0, /*tp_getset*/ + __pyx_getsets_6cocoex_9interface_Suite, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ @@ -12504,15 +14362,20 @@ static PyTypeObject __pyx_type_6cocoex_9interface_Suite = { 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ - #if PY_VERSION_HEX >= 0x02060000 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ #endif }; static PyObject *__pyx_tp_new_6cocoex_9interface_Observer(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_6cocoex_9interface_Observer *p; PyObject *o; - o = (*t->tp_alloc)(t, 0); + if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } if (unlikely(!o)) return 0; p = ((struct __pyx_obj_6cocoex_9interface_Observer *)o); p->_name = ((PyObject*)Py_None); Py_INCREF(Py_None); @@ -12526,13 +14389,17 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Observer(PyTypeObject *t, PyObj static void __pyx_tp_dealloc_6cocoex_9interface_Observer(PyObject *o) { struct __pyx_obj_6cocoex_9interface_Observer *p = (struct __pyx_obj_6cocoex_9interface_Observer *)o; + #if PY_VERSION_HEX >= 0x030400a1 + if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif PyObject_GC_UnTrack(o); { PyObject *etype, *eval, *etb; PyErr_Fetch(&etype, &eval, &etb); ++Py_REFCNT(o); - __pyx_pw_6cocoex_9interface_8Observer_15__dealloc__(o); - if (PyErr_Occurred()) PyErr_WriteUnraisable(o); + __pyx_pw_6cocoex_9interface_8Observer_9__dealloc__(o); --Py_REFCNT(o); PyErr_Restore(etype, eval, etb); } @@ -12545,12 +14412,6 @@ static void __pyx_tp_dealloc_6cocoex_9interface_Observer(PyObject *o) { static int __pyx_tp_traverse_6cocoex_9interface_Observer(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_6cocoex_9interface_Observer *p = (struct __pyx_obj_6cocoex_9interface_Observer *)o; - if (p->_name) { - e = (*v)(p->_name, a); if (e) return e; - } - if (p->_options) { - e = (*v)(p->_options, a); if (e) return e; - } if (p->_state) { e = (*v)(p->_state, a); if (e) return e; } @@ -12558,131 +14419,43 @@ static int __pyx_tp_traverse_6cocoex_9interface_Observer(PyObject *o, visitproc } static int __pyx_tp_clear_6cocoex_9interface_Observer(PyObject *o) { - struct __pyx_obj_6cocoex_9interface_Observer *p = (struct __pyx_obj_6cocoex_9interface_Observer *)o; PyObject* tmp; - tmp = ((PyObject*)p->_name); - p->_name = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_options); - p->_options = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); + struct __pyx_obj_6cocoex_9interface_Observer *p = (struct __pyx_obj_6cocoex_9interface_Observer *)o; tmp = ((PyObject*)p->_state); p->_state = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } -static PyMethodDef __pyx_methods_6cocoex_9interface_Observer[] = { - {__Pyx_NAMESTR("_update_current_observer_global"), (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_3_update_current_observer_global, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_8Observer_2_update_current_observer_global)}, - {__Pyx_NAMESTR("observe"), (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_5observe, METH_O, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_8Observer_4observe)}, - {__Pyx_NAMESTR("name"), (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_7name, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_8Observer_6name)}, - {__Pyx_NAMESTR("options"), (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_9options, METH_NOARGS, __Pyx_DOCSTR(0)}, - {__Pyx_NAMESTR("state"), (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_11state, METH_NOARGS, __Pyx_DOCSTR(0)}, - {__Pyx_NAMESTR("free"), (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_13free, METH_NOARGS, __Pyx_DOCSTR(0)}, - {0, 0, 0, 0} -}; +static PyObject *__pyx_getprop_6cocoex_9interface_8Observer_name(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_8Observer_4name_1__get__(o); +} -static PyNumberMethods __pyx_tp_as_number_Observer = { - 0, /*nb_add*/ - 0, /*nb_subtract*/ - 0, /*nb_multiply*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_divide*/ - #endif - 0, /*nb_remainder*/ - 0, /*nb_divmod*/ - 0, /*nb_power*/ - 0, /*nb_negative*/ - 0, /*nb_positive*/ - 0, /*nb_absolute*/ - 0, /*nb_nonzero*/ - 0, /*nb_invert*/ - 0, /*nb_lshift*/ - 0, /*nb_rshift*/ - 0, /*nb_and*/ - 0, /*nb_xor*/ - 0, /*nb_or*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_coerce*/ - #endif - 0, /*nb_int*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_long*/ - #else - 0, /*reserved*/ - #endif - 0, /*nb_float*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_oct*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*nb_hex*/ - #endif - 0, /*nb_inplace_add*/ - 0, /*nb_inplace_subtract*/ - 0, /*nb_inplace_multiply*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_inplace_divide*/ - #endif - 0, /*nb_inplace_remainder*/ - 0, /*nb_inplace_power*/ - 0, /*nb_inplace_lshift*/ - 0, /*nb_inplace_rshift*/ - 0, /*nb_inplace_and*/ - 0, /*nb_inplace_xor*/ - 0, /*nb_inplace_or*/ - 0, /*nb_floor_divide*/ - 0, /*nb_true_divide*/ - 0, /*nb_inplace_floor_divide*/ - 0, /*nb_inplace_true_divide*/ - #if PY_VERSION_HEX >= 0x02050000 - 0, /*nb_index*/ - #endif -}; +static PyObject *__pyx_getprop_6cocoex_9interface_8Observer_options(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_8Observer_7options_1__get__(o); +} -static PySequenceMethods __pyx_tp_as_sequence_Observer = { - 0, /*sq_length*/ - 0, /*sq_concat*/ - 0, /*sq_repeat*/ - 0, /*sq_item*/ - 0, /*sq_slice*/ - 0, /*sq_ass_item*/ - 0, /*sq_ass_slice*/ - 0, /*sq_contains*/ - 0, /*sq_inplace_concat*/ - 0, /*sq_inplace_repeat*/ -}; +static PyObject *__pyx_getprop_6cocoex_9interface_8Observer_state(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_8Observer_5state_1__get__(o); +} -static PyMappingMethods __pyx_tp_as_mapping_Observer = { - 0, /*mp_length*/ - 0, /*mp_subscript*/ - 0, /*mp_ass_subscript*/ +static PyMethodDef __pyx_methods_6cocoex_9interface_Observer[] = { + {"_update_current_observer_global", (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_3_update_current_observer_global, METH_NOARGS, __pyx_doc_6cocoex_9interface_8Observer_2_update_current_observer_global}, + {"observe", (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_5observe, METH_O, __pyx_doc_6cocoex_9interface_8Observer_4observe}, + {"free", (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_7free, METH_NOARGS, 0}, + {0, 0, 0, 0} }; -static PyBufferProcs __pyx_tp_as_buffer_Observer = { - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getreadbuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getwritebuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getsegcount*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getcharbuffer*/ - #endif - #if PY_VERSION_HEX >= 0x02060000 - 0, /*bf_getbuffer*/ - #endif - #if PY_VERSION_HEX >= 0x02060000 - 0, /*bf_releasebuffer*/ - #endif +static struct PyGetSetDef __pyx_getsets_6cocoex_9interface_Observer[] = { + {(char *)"name", __pyx_getprop_6cocoex_9interface_8Observer_name, 0, (char *)"name of the observer as used with `Observer(name, ...)` to instantiate\n `self` before.\n ", 0}, + {(char *)"options", __pyx_getprop_6cocoex_9interface_8Observer_options, 0, (char *)0, 0}, + {(char *)"state", __pyx_getprop_6cocoex_9interface_8Observer_state, 0, (char *)0, 0}, + {0, 0, 0, 0, 0} }; static PyTypeObject __pyx_type_6cocoex_9interface_Observer = { PyVarObject_HEAD_INIT(0, 0) - __Pyx_NAMESTR("cocoex.interface.Observer"), /*tp_name*/ + "cocoex.interface.Observer", /*tp_name*/ sizeof(struct __pyx_obj_6cocoex_9interface_Observer), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6cocoex_9interface_Observer, /*tp_dealloc*/ @@ -12691,21 +14464,22 @@ static PyTypeObject __pyx_type_6cocoex_9interface_Observer = { 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ - #else - 0, /*reserved*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ - &__pyx_tp_as_number_Observer, /*tp_as_number*/ - &__pyx_tp_as_sequence_Observer, /*tp_as_sequence*/ - &__pyx_tp_as_mapping_Observer, /*tp_as_mapping*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ - &__pyx_tp_as_buffer_Observer, /*tp_as_buffer*/ + 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - __Pyx_DOCSTR("Observer which can be \"attached to\" one or several problems, however not\n necessarily at the same time.\n\n The typical observer records data to be used in the COCO post-processing\n module `cocopp` afterwards.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> assert len(suite) == 2160\n >>> f = suite.get_problem(33)\n >>> assert f.id.endswith('f003_i04_d02')\n >>> observer = ex.Observer(\"bbob\",\n ... \"result_folder: doctest\")\n >>> f.observe_with(observer) # the same as observer.observe(f) # doctest: +ELLIPSIS\n >> # work work work with observed f\n >>> f.free()\n\n Details:\n - `f.free()` in the above example must be called before to observe\n another problem with the \"bbob\" observer. Otherwise the Python\n interpreter will crash due to an error raised from the C code.\n - Due to technical sublties between Python/Cython/C, the pointer to the\n underlying C observer is passed by global assignment with\n `_update_current_observer_global()`\n\n\n "), /*tp_doc*/ + "Observer which can be \"attached to\" one or several problems, however not\n necessarily at the same time.\n\n The typical observer records data to be used in the COCO post-processing\n module `cocopp` afterwards.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> assert len(suite) == 2160\n >>> f = suite.get_problem(33)\n >>> assert f.id.endswith('f003_i04_d02')\n >>> observer = ex.Observer(\"bbob\",\n ... \"result_folder: doctest\")\n >>> f.observe_with(observer) # the same as observer.observe(f) # doctest: +ELLIPSIS\n >> # work work work with observed f\n >>> f.free()\n\n Details:\n - `f.free()` in the above example must be called before to observe\n another problem with the \"bbob\" observer. Otherwise the Python\n interpreter will crash due to an error raised from the C code.\n - Due to technical sublties between Python/Cython/C, the pointer to the\n underlying C observer is passed by global assignment with\n `_update_current_observer_global()`\n\n\n ", /*tp_doc*/ __pyx_tp_traverse_6cocoex_9interface_Observer, /*tp_traverse*/ __pyx_tp_clear_6cocoex_9interface_Observer, /*tp_clear*/ 0, /*tp_richcompare*/ @@ -12714,7 +14488,7 @@ static PyTypeObject __pyx_type_6cocoex_9interface_Observer = { 0, /*tp_iternext*/ __pyx_methods_6cocoex_9interface_Observer, /*tp_methods*/ 0, /*tp_members*/ - 0, /*tp_getset*/ + __pyx_getsets_6cocoex_9interface_Observer, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ @@ -12731,8 +14505,9 @@ static PyTypeObject __pyx_type_6cocoex_9interface_Observer = { 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ - #if PY_VERSION_HEX >= 0x02060000 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ #endif }; static struct __pyx_vtabstruct_6cocoex_9interface_Problem __pyx_vtable_6cocoex_9interface_Problem; @@ -12740,7 +14515,11 @@ static struct __pyx_vtabstruct_6cocoex_9interface_Problem __pyx_vtable_6cocoex_9 static PyObject *__pyx_tp_new_6cocoex_9interface_Problem(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { struct __pyx_obj_6cocoex_9interface_Problem *p; PyObject *o; - o = (*t->tp_alloc)(t, 0); + if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } if (unlikely(!o)) return 0; p = ((struct __pyx_obj_6cocoex_9interface_Problem *)o); p->__pyx_vtab = __pyx_vtabptr_6cocoex_9interface_Problem; @@ -12762,13 +14541,17 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Problem(PyTypeObject *t, CYTHON static void __pyx_tp_dealloc_6cocoex_9interface_Problem(PyObject *o) { struct __pyx_obj_6cocoex_9interface_Problem *p = (struct __pyx_obj_6cocoex_9interface_Problem *)o; + #if PY_VERSION_HEX >= 0x030400a1 + if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif PyObject_GC_UnTrack(o); { PyObject *etype, *eval, *etb; PyErr_Fetch(&etype, &eval, &etb); ++Py_REFCNT(o); - __pyx_pw_6cocoex_9interface_7Problem_39__dealloc__(o); - if (PyErr_Occurred()) PyErr_WriteUnraisable(o); + __pyx_pw_6cocoex_9interface_7Problem_17__dealloc__(o); --Py_REFCNT(o); PyErr_Restore(etype, eval, etb); } @@ -12822,8 +14605,8 @@ static int __pyx_tp_traverse_6cocoex_9interface_Problem(PyObject *o, visitproc v } static int __pyx_tp_clear_6cocoex_9interface_Problem(PyObject *o) { - struct __pyx_obj_6cocoex_9interface_Problem *p = (struct __pyx_obj_6cocoex_9interface_Problem *)o; PyObject* tmp; + struct __pyx_obj_6cocoex_9interface_Problem *p = (struct __pyx_obj_6cocoex_9interface_Problem *)o; tmp = ((PyObject*)p->y_values); p->y_values = ((PyArrayObject *)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); @@ -12857,173 +14640,139 @@ static int __pyx_tp_clear_6cocoex_9interface_Problem(PyObject *o) { return 0; } +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_initial_solution(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_16initial_solution_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_list_of_observers(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_17list_of_observers_1__get__(o); +} + static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_number_of_variables(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_6cocoex_9interface_7Problem_19number_of_variables_1__get__(o); } -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem__lower_bounds(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_1__get__(o); +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_dimension(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_9dimension_1__get__(o); } -static int __pyx_setprop_6cocoex_9interface_7Problem__lower_bounds(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_3__set__(o, v); - } - else { - return __pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_5__del__(o); - } +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_number_of_objectives(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_20number_of_objectives_1__get__(o); } -static PyObject *__pyx_getprop_6cocoex_9interface_7Problem__upper_bounds(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_1__get__(o); +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_number_of_constraints(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_21number_of_constraints_1__get__(o); } -static int __pyx_setprop_6cocoex_9interface_7Problem__upper_bounds(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_3__set__(o, v); - } - else { - return __pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_5__del__(o); - } +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_lower_bounds(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_12lower_bounds_1__get__(o); } -static PyMethodDef __pyx_methods_6cocoex_9interface_Problem[] = { - {__Pyx_NAMESTR("constraint"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_3constraint, METH_O, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_2constraint)}, - {__Pyx_NAMESTR("recommend"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_5recommend, METH_O, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_4recommend)}, - {__Pyx_NAMESTR("logger_biobj_feed_solution"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solution, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_6logger_biobj_feed_solution)}, - {__Pyx_NAMESTR("add_observer"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_9add_observer, METH_O, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_8add_observer)}, - {__Pyx_NAMESTR("observe_with"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_11observe_with, METH_O, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_10observe_with)}, - {__Pyx_NAMESTR("_f0"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_13_f0, METH_O, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_12_f0)}, - {__Pyx_NAMESTR("initial_solution"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_15initial_solution, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_14initial_solution)}, - {__Pyx_NAMESTR("list_of_observers"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_17list_of_observers, METH_NOARGS, __Pyx_DOCSTR(0)}, - {__Pyx_NAMESTR("dimension"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_19dimension, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_18dimension)}, - {__Pyx_NAMESTR("number_of_objectives"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_21number_of_objectives, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_20number_of_objectives)}, - {__Pyx_NAMESTR("number_of_constraints"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_23number_of_constraints, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_22number_of_constraints)}, - {__Pyx_NAMESTR("lower_bounds"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_25lower_bounds, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_24lower_bounds)}, - {__Pyx_NAMESTR("upper_bounds"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_27upper_bounds, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_26upper_bounds)}, - {__Pyx_NAMESTR("evaluations"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_29evaluations, METH_NOARGS, __Pyx_DOCSTR(0)}, - {__Pyx_NAMESTR("final_target_hit"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_31final_target_hit, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_30final_target_hit)}, - {__Pyx_NAMESTR("final_target_fvalue1"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_33final_target_fvalue1, METH_NOARGS, __Pyx_DOCSTR(0)}, - {__Pyx_NAMESTR("best_observed_fvalue1"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_35best_observed_fvalue1, METH_NOARGS, __Pyx_DOCSTR(0)}, - {__Pyx_NAMESTR("free"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_37free, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_36free)}, - {__Pyx_NAMESTR("id"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_43id, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_42id)}, - {__Pyx_NAMESTR("name"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_45name, METH_NOARGS, __Pyx_DOCSTR(0)}, - {__Pyx_NAMESTR("index"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_47index, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_46index)}, - {__Pyx_NAMESTR("suite"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_49suite, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_48suite)}, - {__Pyx_NAMESTR("info"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_51info, METH_NOARGS, __Pyx_DOCSTR(0)}, - {__Pyx_NAMESTR("__enter__"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_57__enter__, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6cocoex_9interface_7Problem_56__enter__)}, - {__Pyx_NAMESTR("__exit__"), (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_59__exit__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, - {0, 0, 0, 0} -}; +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_upper_bounds(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_12upper_bounds_1__get__(o); +} -static struct PyGetSetDef __pyx_getsets_6cocoex_9interface_Problem[] = { - {(char *)"number_of_variables", __pyx_getprop_6cocoex_9interface_7Problem_number_of_variables, 0, __Pyx_DOCSTR(__pyx_k_69), 0}, - {(char *)"_lower_bounds", __pyx_getprop_6cocoex_9interface_7Problem__lower_bounds, __pyx_setprop_6cocoex_9interface_7Problem__lower_bounds, 0, 0}, - {(char *)"_upper_bounds", __pyx_getprop_6cocoex_9interface_7Problem__upper_bounds, __pyx_setprop_6cocoex_9interface_7Problem__upper_bounds, 0, 0}, - {0, 0, 0, 0, 0} -}; +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_evaluations(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_11evaluations_1__get__(o); +} -static PyNumberMethods __pyx_tp_as_number_Problem = { - 0, /*nb_add*/ - 0, /*nb_subtract*/ - 0, /*nb_multiply*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_divide*/ - #endif - 0, /*nb_remainder*/ - 0, /*nb_divmod*/ - 0, /*nb_power*/ - 0, /*nb_negative*/ - 0, /*nb_positive*/ - 0, /*nb_absolute*/ - 0, /*nb_nonzero*/ - 0, /*nb_invert*/ - 0, /*nb_lshift*/ - 0, /*nb_rshift*/ - 0, /*nb_and*/ - 0, /*nb_xor*/ - 0, /*nb_or*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_coerce*/ - #endif - 0, /*nb_int*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_long*/ - #else - 0, /*reserved*/ - #endif - 0, /*nb_float*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_oct*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*nb_hex*/ - #endif - 0, /*nb_inplace_add*/ - 0, /*nb_inplace_subtract*/ - 0, /*nb_inplace_multiply*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_inplace_divide*/ - #endif - 0, /*nb_inplace_remainder*/ - 0, /*nb_inplace_power*/ - 0, /*nb_inplace_lshift*/ - 0, /*nb_inplace_rshift*/ - 0, /*nb_inplace_and*/ - 0, /*nb_inplace_xor*/ - 0, /*nb_inplace_or*/ - 0, /*nb_floor_divide*/ - 0, /*nb_true_divide*/ - 0, /*nb_inplace_floor_divide*/ - 0, /*nb_inplace_true_divide*/ - #if PY_VERSION_HEX >= 0x02050000 - 0, /*nb_index*/ - #endif -}; +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_final_target_hit(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_16final_target_hit_1__get__(o); +} -static PySequenceMethods __pyx_tp_as_sequence_Problem = { - 0, /*sq_length*/ - 0, /*sq_concat*/ - 0, /*sq_repeat*/ - 0, /*sq_item*/ - 0, /*sq_slice*/ - 0, /*sq_ass_item*/ - 0, /*sq_ass_slice*/ - 0, /*sq_contains*/ - 0, /*sq_inplace_concat*/ - 0, /*sq_inplace_repeat*/ -}; +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_final_target_fvalue1(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_20final_target_fvalue1_1__get__(o); +} -static PyMappingMethods __pyx_tp_as_mapping_Problem = { - 0, /*mp_length*/ - 0, /*mp_subscript*/ - 0, /*mp_ass_subscript*/ +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_best_observed_fvalue1(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_21best_observed_fvalue1_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_id(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_2id_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_name(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_4name_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_index(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_5index_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_suite(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_5suite_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_info(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_4info_1__get__(o); +} + +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem__lower_bounds(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_1__get__(o); +} + +static int __pyx_setprop_6cocoex_9interface_7Problem__lower_bounds(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_3__set__(o, v); + } + else { + return __pyx_pw_6cocoex_9interface_7Problem_13_lower_bounds_5__del__(o); + } +} + +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem__upper_bounds(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_1__get__(o); +} + +static int __pyx_setprop_6cocoex_9interface_7Problem__upper_bounds(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_3__set__(o, v); + } + else { + return __pyx_pw_6cocoex_9interface_7Problem_13_upper_bounds_5__del__(o); + } +} + +static PyMethodDef __pyx_methods_6cocoex_9interface_Problem[] = { + {"constraint", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_3constraint, METH_O, __pyx_doc_6cocoex_9interface_7Problem_2constraint}, + {"recommend", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_5recommend, METH_O, __pyx_doc_6cocoex_9interface_7Problem_4recommend}, + {"logger_biobj_feed_solution", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solution, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_7Problem_6logger_biobj_feed_solution}, + {"add_observer", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_9add_observer, METH_O, __pyx_doc_6cocoex_9interface_7Problem_8add_observer}, + {"observe_with", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_11observe_with, METH_O, __pyx_doc_6cocoex_9interface_7Problem_10observe_with}, + {"_f0", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_13_f0, METH_O, __pyx_doc_6cocoex_9interface_7Problem_12_f0}, + {"free", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_15free, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_7Problem_14free}, + {"__enter__", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_25__enter__, METH_NOARGS, __pyx_doc_6cocoex_9interface_7Problem_24__enter__}, + {"__exit__", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_27__exit__, METH_VARARGS|METH_KEYWORDS, 0}, + {0, 0, 0, 0} }; -static PyBufferProcs __pyx_tp_as_buffer_Problem = { - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getreadbuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getwritebuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getsegcount*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getcharbuffer*/ - #endif - #if PY_VERSION_HEX >= 0x02060000 - 0, /*bf_getbuffer*/ - #endif - #if PY_VERSION_HEX >= 0x02060000 - 0, /*bf_releasebuffer*/ - #endif +static struct PyGetSetDef __pyx_getsets_6cocoex_9interface_Problem[] = { + {(char *)"initial_solution", __pyx_getprop_6cocoex_9interface_7Problem_initial_solution, 0, (char *)"return feasible initial solution", 0}, + {(char *)"list_of_observers", __pyx_getprop_6cocoex_9interface_7Problem_list_of_observers, 0, (char *)0, 0}, + {(char *)"number_of_variables", __pyx_getprop_6cocoex_9interface_7Problem_number_of_variables, 0, (char *)"Number of variables this problem instance expects as input.", 0}, + {(char *)"dimension", __pyx_getprop_6cocoex_9interface_7Problem_dimension, 0, (char *)"alias for `number_of_variables` of the input space", 0}, + {(char *)"number_of_objectives", __pyx_getprop_6cocoex_9interface_7Problem_number_of_objectives, 0, (char *)"number of objectives, if equal to 1, call returns a scalar", 0}, + {(char *)"number_of_constraints", __pyx_getprop_6cocoex_9interface_7Problem_number_of_constraints, 0, (char *)"number of constraints", 0}, + {(char *)"lower_bounds", __pyx_getprop_6cocoex_9interface_7Problem_lower_bounds, 0, (char *)"depending on the test bed, these are not necessarily strict bounds\n ", 0}, + {(char *)"upper_bounds", __pyx_getprop_6cocoex_9interface_7Problem_upper_bounds, 0, (char *)"depending on the test bed, these are not necessarily strict bounds\n ", 0}, + {(char *)"evaluations", __pyx_getprop_6cocoex_9interface_7Problem_evaluations, 0, (char *)0, 0}, + {(char *)"final_target_hit", __pyx_getprop_6cocoex_9interface_7Problem_final_target_hit, 0, (char *)"return 1 if the final target is known and has been hit, 0 otherwise\n ", 0}, + {(char *)"final_target_fvalue1", __pyx_getprop_6cocoex_9interface_7Problem_final_target_fvalue1, 0, (char *)0, 0}, + {(char *)"best_observed_fvalue1", __pyx_getprop_6cocoex_9interface_7Problem_best_observed_fvalue1, 0, (char *)0, 0}, + {(char *)"id", __pyx_getprop_6cocoex_9interface_7Problem_id, 0, (char *)"id as string without spaces or weird characters", 0}, + {(char *)"name", __pyx_getprop_6cocoex_9interface_7Problem_name, 0, (char *)0, 0}, + {(char *)"index", __pyx_getprop_6cocoex_9interface_7Problem_index, 0, (char *)"problem index in the benchmark `Suite` of origin", 0}, + {(char *)"suite", __pyx_getprop_6cocoex_9interface_7Problem_suite, 0, (char *)"benchmark suite this problem is from", 0}, + {(char *)"info", __pyx_getprop_6cocoex_9interface_7Problem_info, 0, (char *)0, 0}, + {(char *)"_lower_bounds", __pyx_getprop_6cocoex_9interface_7Problem__lower_bounds, __pyx_setprop_6cocoex_9interface_7Problem__lower_bounds, (char *)0, 0}, + {(char *)"_upper_bounds", __pyx_getprop_6cocoex_9interface_7Problem__upper_bounds, __pyx_setprop_6cocoex_9interface_7Problem__upper_bounds, (char *)0, 0}, + {0, 0, 0, 0, 0} }; static PyTypeObject __pyx_type_6cocoex_9interface_Problem = { PyVarObject_HEAD_INIT(0, 0) - __Pyx_NAMESTR("cocoex.interface.Problem"), /*tp_name*/ + "cocoex.interface.Problem", /*tp_name*/ sizeof(struct __pyx_obj_6cocoex_9interface_Problem), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6cocoex_9interface_Problem, /*tp_dealloc*/ @@ -13032,21 +14781,22 @@ static PyTypeObject __pyx_type_6cocoex_9interface_Problem = { 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ - #else - 0, /*reserved*/ #endif - __pyx_pw_6cocoex_9interface_7Problem_55__repr__, /*tp_repr*/ - &__pyx_tp_as_number_Problem, /*tp_as_number*/ - &__pyx_tp_as_sequence_Problem, /*tp_as_sequence*/ - &__pyx_tp_as_mapping_Problem, /*tp_as_mapping*/ + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + __pyx_pw_6cocoex_9interface_7Problem_23__repr__, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ 0, /*tp_hash*/ - __pyx_pw_6cocoex_9interface_7Problem_41__call__, /*tp_call*/ - __pyx_pw_6cocoex_9interface_7Problem_53__str__, /*tp_str*/ + __pyx_pw_6cocoex_9interface_7Problem_19__call__, /*tp_call*/ + __pyx_pw_6cocoex_9interface_7Problem_21__str__, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ - &__pyx_tp_as_buffer_Problem, /*tp_as_buffer*/ + 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - __Pyx_DOCSTR("`Problem` instances are usually generated using `Suite`.\n \n The main feature of a problem instance is that it is callable, returning the\n objective function value when called with a candidate solution as input.\n "), /*tp_doc*/ + "`Problem` instances are usually generated using `Suite`.\n \n The main feature of a problem instance is that it is callable, returning the\n objective function value when called with a candidate solution as input.\n ", /*tp_doc*/ __pyx_tp_traverse_6cocoex_9interface_Problem, /*tp_traverse*/ __pyx_tp_clear_6cocoex_9interface_Problem, /*tp_clear*/ 0, /*tp_richcompare*/ @@ -13072,8 +14822,9 @@ static PyTypeObject __pyx_type_6cocoex_9interface_Problem = { 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ - #if PY_VERSION_HEX >= 0x02060000 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ #endif }; @@ -13081,24 +14832,16 @@ static struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *__pyx_f static int __pyx_freecount_6cocoex_9interface___pyx_scope_struct____iter__ = 0; static PyObject *__pyx_tp_new_6cocoex_9interface___pyx_scope_struct____iter__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *p; PyObject *o; - if (likely((__pyx_freecount_6cocoex_9interface___pyx_scope_struct____iter__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__)))) { + if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6cocoex_9interface___pyx_scope_struct____iter__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__)))) { o = (PyObject*)__pyx_freelist_6cocoex_9interface___pyx_scope_struct____iter__[--__pyx_freecount_6cocoex_9interface___pyx_scope_struct____iter__]; memset(o, 0, sizeof(struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__)); - PyObject_INIT(o, t); + (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } - p = ((struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)o); - p->__pyx_v_problem = 0; - p->__pyx_v_s = 0; - p->__pyx_v_self = 0; - p->__pyx_t_0 = 0; - p->__pyx_t_1 = 0; - p->__pyx_t_2 = 0; return o; } @@ -13111,7 +14854,7 @@ static void __pyx_tp_dealloc_6cocoex_9interface___pyx_scope_struct____iter__(PyO Py_CLEAR(p->__pyx_t_0); Py_CLEAR(p->__pyx_t_1); Py_CLEAR(p->__pyx_t_2); - if ((__pyx_freecount_6cocoex_9interface___pyx_scope_struct____iter__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__))) { + if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6cocoex_9interface___pyx_scope_struct____iter__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__)))) { __pyx_freelist_6cocoex_9interface___pyx_scope_struct____iter__[__pyx_freecount_6cocoex_9interface___pyx_scope_struct____iter__++] = ((struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)o); } else { (*Py_TYPE(o)->tp_free)(o); @@ -13143,8 +14886,8 @@ static int __pyx_tp_traverse_6cocoex_9interface___pyx_scope_struct____iter__(PyO } static int __pyx_tp_clear_6cocoex_9interface___pyx_scope_struct____iter__(PyObject *o) { - struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *p = (struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)o; PyObject* tmp; + struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *p = (struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)o; tmp = ((PyObject*)p->__pyx_v_problem); p->__pyx_v_problem = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); @@ -13166,111 +14909,9 @@ static int __pyx_tp_clear_6cocoex_9interface___pyx_scope_struct____iter__(PyObje return 0; } -static PyMethodDef __pyx_methods_6cocoex_9interface___pyx_scope_struct____iter__[] = { - {0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct____iter__ = { - 0, /*nb_add*/ - 0, /*nb_subtract*/ - 0, /*nb_multiply*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_divide*/ - #endif - 0, /*nb_remainder*/ - 0, /*nb_divmod*/ - 0, /*nb_power*/ - 0, /*nb_negative*/ - 0, /*nb_positive*/ - 0, /*nb_absolute*/ - 0, /*nb_nonzero*/ - 0, /*nb_invert*/ - 0, /*nb_lshift*/ - 0, /*nb_rshift*/ - 0, /*nb_and*/ - 0, /*nb_xor*/ - 0, /*nb_or*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_coerce*/ - #endif - 0, /*nb_int*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_long*/ - #else - 0, /*reserved*/ - #endif - 0, /*nb_float*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_oct*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*nb_hex*/ - #endif - 0, /*nb_inplace_add*/ - 0, /*nb_inplace_subtract*/ - 0, /*nb_inplace_multiply*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_inplace_divide*/ - #endif - 0, /*nb_inplace_remainder*/ - 0, /*nb_inplace_power*/ - 0, /*nb_inplace_lshift*/ - 0, /*nb_inplace_rshift*/ - 0, /*nb_inplace_and*/ - 0, /*nb_inplace_xor*/ - 0, /*nb_inplace_or*/ - 0, /*nb_floor_divide*/ - 0, /*nb_true_divide*/ - 0, /*nb_inplace_floor_divide*/ - 0, /*nb_inplace_true_divide*/ - #if PY_VERSION_HEX >= 0x02050000 - 0, /*nb_index*/ - #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct____iter__ = { - 0, /*sq_length*/ - 0, /*sq_concat*/ - 0, /*sq_repeat*/ - 0, /*sq_item*/ - 0, /*sq_slice*/ - 0, /*sq_ass_item*/ - 0, /*sq_ass_slice*/ - 0, /*sq_contains*/ - 0, /*sq_inplace_concat*/ - 0, /*sq_inplace_repeat*/ -}; - -static PyMappingMethods __pyx_tp_as_mapping___pyx_scope_struct____iter__ = { - 0, /*mp_length*/ - 0, /*mp_subscript*/ - 0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct____iter__ = { - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getreadbuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getwritebuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getsegcount*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getcharbuffer*/ - #endif - #if PY_VERSION_HEX >= 0x02060000 - 0, /*bf_getbuffer*/ - #endif - #if PY_VERSION_HEX >= 0x02060000 - 0, /*bf_releasebuffer*/ - #endif -}; - static PyTypeObject __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__ = { PyVarObject_HEAD_INIT(0, 0) - __Pyx_NAMESTR("cocoex.interface.__pyx_scope_struct____iter__"), /*tp_name*/ + "cocoex.interface.__pyx_scope_struct____iter__", /*tp_name*/ sizeof(struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6cocoex_9interface___pyx_scope_struct____iter__, /*tp_dealloc*/ @@ -13279,19 +14920,20 @@ static PyTypeObject __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__ = 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ - #else - 0, /*reserved*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ - &__pyx_tp_as_number___pyx_scope_struct____iter__, /*tp_as_number*/ - &__pyx_tp_as_sequence___pyx_scope_struct____iter__, /*tp_as_sequence*/ - &__pyx_tp_as_mapping___pyx_scope_struct____iter__, /*tp_as_mapping*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ - &__pyx_tp_as_buffer___pyx_scope_struct____iter__, /*tp_as_buffer*/ + 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_6cocoex_9interface___pyx_scope_struct____iter__, /*tp_traverse*/ @@ -13300,7 +14942,7 @@ static PyTypeObject __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__ = 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ - __pyx_methods_6cocoex_9interface___pyx_scope_struct____iter__, /*tp_methods*/ + 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ @@ -13319,8 +14961,9 @@ static PyTypeObject __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__ = 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ - #if PY_VERSION_HEX >= 0x02060000 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ #endif }; @@ -13335,7 +14978,7 @@ static struct PyModuleDef __pyx_moduledef = { #else PyModuleDef_HEAD_INIT, #endif - __Pyx_NAMESTR("interface"), + "interface", 0, /* m_doc */ -1, /* m_size */ __pyx_methods /* m_methods */, @@ -13347,176 +14990,159 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 0, 1, 1}, - {&__pyx_kp_u_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 1, 0, 0}, - {&__pyx_kp_u_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 1, 0, 0}, - {&__pyx_kp_u_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 1, 0, 0}, - {&__pyx_kp_u_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 1, 0, 0}, - {&__pyx_kp_u_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 1, 0, 0}, - {&__pyx_kp_u_20, __pyx_k_20, sizeof(__pyx_k_20), 0, 1, 0, 0}, - {&__pyx_kp_u_21, __pyx_k_21, sizeof(__pyx_k_21), 0, 1, 0, 0}, - {&__pyx_kp_u_22, __pyx_k_22, sizeof(__pyx_k_22), 0, 1, 0, 0}, - {&__pyx_kp_u_23, __pyx_k_23, sizeof(__pyx_k_23), 0, 1, 0, 0}, - {&__pyx_kp_u_25, __pyx_k_25, sizeof(__pyx_k_25), 0, 1, 0, 0}, - {&__pyx_kp_u_26, __pyx_k_26, sizeof(__pyx_k_26), 0, 1, 0, 0}, - {&__pyx_kp_u_27, __pyx_k_27, sizeof(__pyx_k_27), 0, 1, 0, 0}, - {&__pyx_kp_u_28, __pyx_k_28, sizeof(__pyx_k_28), 0, 1, 0, 0}, - {&__pyx_kp_u_29, __pyx_k_29, sizeof(__pyx_k_29), 0, 1, 0, 0}, - {&__pyx_kp_u_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 1, 0, 0}, - {&__pyx_kp_u_30, __pyx_k_30, sizeof(__pyx_k_30), 0, 1, 0, 0}, - {&__pyx_kp_u_34, __pyx_k_34, sizeof(__pyx_k_34), 0, 1, 0, 0}, - {&__pyx_kp_u_36, __pyx_k_36, sizeof(__pyx_k_36), 0, 1, 0, 0}, - {&__pyx_kp_u_38, __pyx_k_38, sizeof(__pyx_k_38), 0, 1, 0, 0}, - {&__pyx_n_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 1}, - {&__pyx_n_s_41, __pyx_k_41, sizeof(__pyx_k_41), 0, 0, 1, 1}, - {&__pyx_kp_u_42, __pyx_k_42, sizeof(__pyx_k_42), 0, 1, 0, 0}, - {&__pyx_kp_u_43, __pyx_k_43, sizeof(__pyx_k_43), 0, 1, 0, 0}, - {&__pyx_n_s_44, __pyx_k_44, sizeof(__pyx_k_44), 0, 0, 1, 1}, - {&__pyx_n_s_45, __pyx_k_45, sizeof(__pyx_k_45), 0, 0, 1, 1}, - {&__pyx_n_s_46, __pyx_k_46, sizeof(__pyx_k_46), 0, 0, 1, 1}, - {&__pyx_kp_u_48, __pyx_k_48, sizeof(__pyx_k_48), 0, 1, 0, 0}, - {&__pyx_kp_u_49, __pyx_k_49, sizeof(__pyx_k_49), 0, 1, 0, 0}, - {&__pyx_kp_u_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 1, 0, 0}, - {&__pyx_kp_u_50, __pyx_k_50, sizeof(__pyx_k_50), 0, 1, 0, 0}, - {&__pyx_kp_u_51, __pyx_k_51, sizeof(__pyx_k_51), 0, 1, 0, 0}, - {&__pyx_kp_u_52, __pyx_k_52, sizeof(__pyx_k_52), 0, 1, 0, 0}, - {&__pyx_kp_u_53, __pyx_k_53, sizeof(__pyx_k_53), 0, 1, 0, 0}, - {&__pyx_kp_u_54, __pyx_k_54, sizeof(__pyx_k_54), 0, 1, 0, 0}, - {&__pyx_kp_u_56, __pyx_k_56, sizeof(__pyx_k_56), 0, 1, 0, 0}, - {&__pyx_kp_u_57, __pyx_k_57, sizeof(__pyx_k_57), 0, 1, 0, 0}, - {&__pyx_kp_u_59, __pyx_k_59, sizeof(__pyx_k_59), 0, 1, 0, 0}, - {&__pyx_kp_u_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 1, 0, 0}, - {&__pyx_kp_u_61, __pyx_k_61, sizeof(__pyx_k_61), 0, 1, 0, 0}, - {&__pyx_kp_u_63, __pyx_k_63, sizeof(__pyx_k_63), 0, 1, 0, 0}, - {&__pyx_kp_u_64, __pyx_k_64, sizeof(__pyx_k_64), 0, 1, 0, 0}, - {&__pyx_kp_u_67, __pyx_k_67, sizeof(__pyx_k_67), 0, 1, 0, 0}, - {&__pyx_n_s_70, __pyx_k_70, sizeof(__pyx_k_70), 0, 0, 1, 1}, - {&__pyx_kp_b_71, __pyx_k_71, sizeof(__pyx_k_71), 0, 0, 0, 0}, - {&__pyx_kp_b_72, __pyx_k_72, sizeof(__pyx_k_72), 0, 0, 0, 0}, - {&__pyx_kp_b_73, __pyx_k_73, sizeof(__pyx_k_73), 0, 0, 0, 0}, - {&__pyx_n_s_74, __pyx_k_74, sizeof(__pyx_k_74), 0, 0, 1, 1}, - {&__pyx_n_s_75, __pyx_k_75, sizeof(__pyx_k_75), 0, 0, 1, 1}, - {&__pyx_kp_s_78, __pyx_k_78, sizeof(__pyx_k_78), 0, 0, 1, 0}, - {&__pyx_n_s_79, __pyx_k_79, sizeof(__pyx_k_79), 0, 0, 1, 1}, - {&__pyx_kp_u_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 1, 0, 0}, - {&__pyx_kp_u_80, __pyx_k_80, sizeof(__pyx_k_80), 0, 1, 0, 0}, - {&__pyx_kp_u_81, __pyx_k_81, sizeof(__pyx_k_81), 0, 1, 0, 0}, - {&__pyx_kp_u_82, __pyx_k_82, sizeof(__pyx_k_82), 0, 1, 0, 0}, - {&__pyx_kp_u_83, __pyx_k_83, sizeof(__pyx_k_83), 0, 1, 0, 0}, - {&__pyx_kp_u_84, __pyx_k_84, sizeof(__pyx_k_84), 0, 1, 0, 0}, - {&__pyx_kp_u_85, __pyx_k_85, sizeof(__pyx_k_85), 0, 1, 0, 0}, - {&__pyx_kp_u_86, __pyx_k_86, sizeof(__pyx_k_86), 0, 1, 0, 0}, - {&__pyx_kp_u_87, __pyx_k_87, sizeof(__pyx_k_87), 0, 1, 0, 0}, - {&__pyx_n_u__C, __pyx_k__C, sizeof(__pyx_k__C), 0, 1, 0, 1}, - {&__pyx_n_s__NotImplementedError, __pyx_k__NotImplementedError, sizeof(__pyx_k__NotImplementedError), 0, 0, 1, 1}, - {&__pyx_n_s__RuntimeError, __pyx_k__RuntimeError, sizeof(__pyx_k__RuntimeError), 0, 0, 1, 1}, - {&__pyx_n_s__StopIteration, __pyx_k__StopIteration, sizeof(__pyx_k__StopIteration), 0, 0, 1, 1}, - {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1}, - {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1}, - {&__pyx_n_s____class__, __pyx_k____class__, sizeof(__pyx_k____class__), 0, 0, 1, 1}, - {&__pyx_n_s____dealloc__, __pyx_k____dealloc__, sizeof(__pyx_k____dealloc__), 0, 0, 1, 1}, - {&__pyx_n_s____import__, __pyx_k____import__, sizeof(__pyx_k____import__), 0, 0, 1, 1}, - {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1}, - {&__pyx_n_s____pyx_getbuffer, __pyx_k____pyx_getbuffer, sizeof(__pyx_k____pyx_getbuffer), 0, 0, 1, 1}, - {&__pyx_n_s____pyx_releasebuffer, __pyx_k____pyx_releasebuffer, sizeof(__pyx_k____pyx_releasebuffer), 0, 0, 1, 1}, - {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1}, - {&__pyx_n_s___known_suite_names, __pyx_k___known_suite_names, sizeof(__pyx_k___known_suite_names), 0, 0, 1, 1}, - {&__pyx_n_s___level, __pyx_k___level, sizeof(__pyx_k___level), 0, 0, 1, 1}, - {&__pyx_n_s__all, __pyx_k__all, sizeof(__pyx_k__all), 0, 0, 1, 1}, - {&__pyx_n_s__append, __pyx_k__append, sizeof(__pyx_k__append), 0, 0, 1, 1}, - {&__pyx_n_s__args, __pyx_k__args, sizeof(__pyx_k__args), 0, 0, 1, 1}, - {&__pyx_n_s__array, __pyx_k__array, sizeof(__pyx_k__array), 0, 0, 1, 1}, - {&__pyx_n_u__ascii, __pyx_k__ascii, sizeof(__pyx_k__ascii), 0, 1, 0, 1}, - {&__pyx_n_b__bbob, __pyx_k__bbob, sizeof(__pyx_k__bbob), 0, 0, 0, 1}, - {&__pyx_n_s__close, __pyx_k__close, sizeof(__pyx_k__close), 0, 0, 1, 1}, - {&__pyx_n_s__copy, __pyx_k__copy, sizeof(__pyx_k__copy), 0, 0, 1, 1}, - {&__pyx_n_s__current_index, __pyx_k__current_index, sizeof(__pyx_k__current_index), 0, 0, 1, 1}, - {&__pyx_n_s__current_problem, __pyx_k__current_problem, sizeof(__pyx_k__current_problem), 0, 0, 1, 1}, - {&__pyx_n_u__deactivated, __pyx_k__deactivated, sizeof(__pyx_k__deactivated), 0, 1, 0, 1}, - {&__pyx_n_s__dimension, __pyx_k__dimension, sizeof(__pyx_k__dimension), 0, 0, 1, 1}, - {&__pyx_n_s__dimensions, __pyx_k__dimensions, sizeof(__pyx_k__dimensions), 0, 0, 1, 1}, - {&__pyx_n_s__double, __pyx_k__double, sizeof(__pyx_k__double), 0, 0, 1, 1}, - {&__pyx_n_s__dtype, __pyx_k__dtype, sizeof(__pyx_k__dtype), 0, 0, 1, 1}, - {&__pyx_n_s__encode, __pyx_k__encode, sizeof(__pyx_k__encode), 0, 0, 1, 1}, - {&__pyx_n_s__enumerate, __pyx_k__enumerate, sizeof(__pyx_k__enumerate), 0, 0, 1, 1}, - {&__pyx_n_s__evaluation, __pyx_k__evaluation, sizeof(__pyx_k__evaluation), 0, 0, 1, 1}, - {&__pyx_n_s__evaluations, __pyx_k__evaluations, sizeof(__pyx_k__evaluations), 0, 0, 1, 1}, - {&__pyx_n_s__exception_type, __pyx_k__exception_type, sizeof(__pyx_k__exception_type), 0, 0, 1, 1}, - {&__pyx_n_s__exception_value, __pyx_k__exception_value, sizeof(__pyx_k__exception_value), 0, 0, 1, 1}, - {&__pyx_n_s__final_target_hit, __pyx_k__final_target_hit, sizeof(__pyx_k__final_target_hit), 0, 0, 1, 1}, - {&__pyx_n_s__find, __pyx_k__find, sizeof(__pyx_k__find), 0, 0, 1, 1}, - {&__pyx_n_s__force, __pyx_k__force, sizeof(__pyx_k__force), 0, 0, 1, 1}, - {&__pyx_n_s__format, __pyx_k__format, sizeof(__pyx_k__format), 0, 0, 1, 1}, - {&__pyx_n_s__free, __pyx_k__free, sizeof(__pyx_k__free), 0, 0, 1, 1}, - {&__pyx_n_s__function, __pyx_k__function, sizeof(__pyx_k__function), 0, 0, 1, 1}, - {&__pyx_n_s__get_problem, __pyx_k__get_problem, sizeof(__pyx_k__get_problem), 0, 0, 1, 1}, - {&__pyx_n_s__id, __pyx_k__id, sizeof(__pyx_k__id), 0, 0, 1, 1}, - {&__pyx_n_s__index, __pyx_k__index, sizeof(__pyx_k__index), 0, 0, 1, 1}, - {&__pyx_n_s__indices, __pyx_k__indices, sizeof(__pyx_k__indices), 0, 0, 1, 1}, - {&__pyx_n_s__inf, __pyx_k__inf, sizeof(__pyx_k__inf), 0, 0, 1, 1}, - {&__pyx_n_s__info, __pyx_k__info, sizeof(__pyx_k__info), 0, 0, 1, 1}, - {&__pyx_n_s__initial_solution, __pyx_k__initial_solution, sizeof(__pyx_k__initial_solution), 0, 0, 1, 1}, - {&__pyx_n_u__initialized, __pyx_k__initialized, sizeof(__pyx_k__initialized), 0, 1, 0, 1}, - {&__pyx_n_s__instance, __pyx_k__instance, sizeof(__pyx_k__instance), 0, 0, 1, 1}, - {&__pyx_n_s__known_suite_names, __pyx_k__known_suite_names, sizeof(__pyx_k__known_suite_names), 0, 0, 1, 1}, - {&__pyx_n_s__level, __pyx_k__level, sizeof(__pyx_k__level), 0, 0, 1, 1}, - {&__pyx_n_s__list_of_observers, __pyx_k__list_of_observers, sizeof(__pyx_k__list_of_observers), 0, 0, 1, 1}, - {&__pyx_n_s__log_level, __pyx_k__log_level, sizeof(__pyx_k__log_level), 0, 0, 1, 1}, - {&__pyx_n_s__lower_bounds, __pyx_k__lower_bounds, sizeof(__pyx_k__lower_bounds), 0, 0, 1, 1}, - {&__pyx_n_s__max, __pyx_k__max, sizeof(__pyx_k__max), 0, 0, 1, 1}, - {&__pyx_n_s__min, __pyx_k__min, sizeof(__pyx_k__min), 0, 0, 1, 1}, - {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1}, - {&__pyx_n_s__next_problem, __pyx_k__next_problem, sizeof(__pyx_k__next_problem), 0, 0, 1, 1}, - {&__pyx_n_s__np, __pyx_k__np, sizeof(__pyx_k__np), 0, 0, 1, 1}, - {&__pyx_n_s__number_of_variables, __pyx_k__number_of_variables, sizeof(__pyx_k__number_of_variables), 0, 0, 1, 1}, - {&__pyx_n_s__numpy, __pyx_k__numpy, sizeof(__pyx_k__numpy), 0, 0, 1, 1}, - {&__pyx_n_s__observe_with, __pyx_k__observe_with, sizeof(__pyx_k__observe_with), 0, 0, 1, 1}, - {&__pyx_n_s__observer, __pyx_k__observer, sizeof(__pyx_k__observer), 0, 0, 1, 1}, - {&__pyx_n_s__ones, __pyx_k__ones, sizeof(__pyx_k__ones), 0, 0, 1, 1}, - {&__pyx_n_s__options, __pyx_k__options, sizeof(__pyx_k__options), 0, 0, 1, 1}, - {&__pyx_n_s__order, __pyx_k__order, sizeof(__pyx_k__order), 0, 0, 1, 1}, - {&__pyx_n_s__print, __pyx_k__print, sizeof(__pyx_k__print), 0, 0, 1, 1}, - {&__pyx_n_s__problem_names, __pyx_k__problem_names, sizeof(__pyx_k__problem_names), 0, 0, 1, 1}, - {&__pyx_n_s__property, __pyx_k__property, sizeof(__pyx_k__property), 0, 0, 1, 1}, - {&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1}, - {&__pyx_n_s__replace, __pyx_k__replace, sizeof(__pyx_k__replace), 0, 0, 1, 1}, - {&__pyx_n_s__reset, __pyx_k__reset, sizeof(__pyx_k__reset), 0, 0, 1, 1}, - {&__pyx_n_u__s, __pyx_k__s, sizeof(__pyx_k__s), 0, 1, 0, 1}, - {&__pyx_n_s__send, __pyx_k__send, sizeof(__pyx_k__send), 0, 0, 1, 1}, - {&__pyx_n_u__single, __pyx_k__single, sizeof(__pyx_k__single), 0, 1, 0, 1}, - {&__pyx_n_s__size, __pyx_k__size, sizeof(__pyx_k__size), 0, 0, 1, 1}, - {&__pyx_n_s__sorted, __pyx_k__sorted, sizeof(__pyx_k__sorted), 0, 0, 1, 1}, - {&__pyx_n_s__split, __pyx_k__split, sizeof(__pyx_k__split), 0, 0, 1, 1}, - {&__pyx_n_s__state, __pyx_k__state, sizeof(__pyx_k__state), 0, 0, 1, 1}, - {&__pyx_n_s__suite, __pyx_k__suite, sizeof(__pyx_k__suite), 0, 0, 1, 1}, - {&__pyx_n_s__suite_instance, __pyx_k__suite_instance, sizeof(__pyx_k__suite_instance), 0, 0, 1, 1}, - {&__pyx_n_s__suite_name, __pyx_k__suite_name, sizeof(__pyx_k__suite_name), 0, 0, 1, 1}, - {&__pyx_n_s__suite_options, __pyx_k__suite_options, sizeof(__pyx_k__suite_options), 0, 0, 1, 1}, - {&__pyx_n_s__sys, __pyx_k__sys, sizeof(__pyx_k__sys), 0, 0, 1, 1}, - {&__pyx_n_s__throw, __pyx_k__throw, sizeof(__pyx_k__throw), 0, 0, 1, 1}, - {&__pyx_n_s__traceback, __pyx_k__traceback, sizeof(__pyx_k__traceback), 0, 0, 1, 1}, - {&__pyx_n_s__upper_bounds, __pyx_k__upper_bounds, sizeof(__pyx_k__upper_bounds), 0, 0, 1, 1}, - {&__pyx_n_s__verbose, __pyx_k__verbose, sizeof(__pyx_k__verbose), 0, 0, 1, 1}, - {&__pyx_n_u__warning, __pyx_k__warning, sizeof(__pyx_k__warning), 0, 1, 0, 1}, - {&__pyx_n_s__x, __pyx_k__x, sizeof(__pyx_k__x), 0, 0, 1, 1}, - {&__pyx_n_s__y, __pyx_k__y, sizeof(__pyx_k__y), 0, 0, 1, 1}, - {&__pyx_n_s__zeros, __pyx_k__zeros, sizeof(__pyx_k__zeros), 0, 0, 1, 1}, + {&__pyx_n_u_C, __pyx_k_C, sizeof(__pyx_k_C), 0, 1, 0, 1}, + {&__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_k_Dimension_np_size_x_d_of_input_x, sizeof(__pyx_k_Dimension_np_size_x_d_of_input_x), 0, 1, 0, 0}, + {&__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_k_Dimension_np_size_y_d_of_input_y, sizeof(__pyx_k_Dimension_np_size_y_d_of_input_y), 0, 1, 0, 0}, + {&__pyx_kp_u_Format_string_allocated_too_shor, __pyx_k_Format_string_allocated_too_shor, sizeof(__pyx_k_Format_string_allocated_too_shor), 0, 1, 0, 0}, + {&__pyx_kp_u_Format_string_allocated_too_shor_2, __pyx_k_Format_string_allocated_too_shor_2, sizeof(__pyx_k_Format_string_allocated_too_shor_2), 0, 1, 0, 0}, + {&__pyx_n_s_InvalidProblemException, __pyx_k_InvalidProblemException, sizeof(__pyx_k_InvalidProblemException), 0, 0, 1, 1}, + {&__pyx_n_s_NoSuchProblemException, __pyx_k_NoSuchProblemException, sizeof(__pyx_k_NoSuchProblemException), 0, 0, 1, 1}, + {&__pyx_n_s_NoSuchSuiteException, __pyx_k_NoSuchSuiteException, sizeof(__pyx_k_NoSuchSuiteException), 0, 0, 1, 1}, + {&__pyx_kp_u_No_suite_with_name_s_found, __pyx_k_No_suite_with_name_s_found, sizeof(__pyx_k_No_suite_with_name_s_found), 0, 1, 0, 0}, + {&__pyx_kp_u_Non_native_byte_order_not_suppor, __pyx_k_Non_native_byte_order_not_suppor, sizeof(__pyx_k_Non_native_byte_order_not_suppor), 0, 1, 0, 0}, + {&__pyx_n_s_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 0, 1, 1}, + {&__pyx_kp_u_Problem_already_initialized, __pyx_k_Problem_already_initialized, sizeof(__pyx_k_Problem_already_initialized), 0, 1, 0, 0}, + {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1}, + {&__pyx_n_s_StopIteration, __pyx_k_StopIteration, sizeof(__pyx_k_StopIteration), 0, 0, 1, 1}, + {&__pyx_n_s_Suite___iter, __pyx_k_Suite___iter, sizeof(__pyx_k_Suite___iter), 0, 0, 1, 1}, + {&__pyx_kp_u_Suite_current_index___get___line, __pyx_k_Suite_current_index___get___line, sizeof(__pyx_k_Suite_current_index___get___line), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_get_problem_by_function_di, __pyx_k_Suite_get_problem_by_function_di, sizeof(__pyx_k_Suite_get_problem_by_function_di), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_get_problem_line_281, __pyx_k_Suite_get_problem_line_281, sizeof(__pyx_k_Suite_get_problem_line_281), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_has_been_finalized_free_ed, __pyx_k_Suite_has_been_finalized_free_ed, sizeof(__pyx_k_Suite_has_been_finalized_free_ed), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_ids_line_384, __pyx_k_Suite_ids_line_384, sizeof(__pyx_k_Suite_ids_line_384), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_r_r_r, __pyx_k_Suite_r_r_r, sizeof(__pyx_k_Suite_r_r_r), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_k_Suite_s_s_s_with_d_problem_s_in, sizeof(__pyx_k_Suite_s_s_s_with_d_problem_s_in), 0, 1, 0, 0}, + {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, + {&__pyx_kp_u_Unkown_benchmark_suite_name_s_Kn, __pyx_k_Unkown_benchmark_suite_name_s_Kn, sizeof(__pyx_k_Unkown_benchmark_suite_name_s_Kn), 0, 1, 0, 0}, + {&__pyx_kp_s_Users_hansen_git_coco_code_expe, __pyx_k_Users_hansen_git_coco_code_expe, sizeof(__pyx_k_Users_hansen_git_coco_code_expe), 0, 0, 1, 0}, + {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, + {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0}, + {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0}, + {&__pyx_kp_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 0}, + {&__pyx_kp_u__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0, 0}, + {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0}, + {&__pyx_kp_u__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0, 0}, + {&__pyx_kp_u__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 1, 0, 0}, + {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, + {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, + {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, + {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1}, + {&__pyx_n_u_ascii, __pyx_k_ascii, sizeof(__pyx_k_ascii), 0, 1, 0, 1}, + {&__pyx_n_b_bbob, __pyx_k_bbob, sizeof(__pyx_k_bbob), 0, 0, 0, 1}, + {&__pyx_kp_b_bbob_biobj, __pyx_k_bbob_biobj, sizeof(__pyx_k_bbob_biobj), 0, 0, 0, 0}, + {&__pyx_kp_b_bbob_constrained, __pyx_k_bbob_constrained, sizeof(__pyx_k_bbob_constrained), 0, 0, 0, 0}, + {&__pyx_kp_b_bbob_largescale, __pyx_k_bbob_largescale, sizeof(__pyx_k_bbob_largescale), 0, 0, 0, 0}, + {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1}, + {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, + {&__pyx_n_s_cocoex_exceptions, __pyx_k_cocoex_exceptions, sizeof(__pyx_k_cocoex_exceptions), 0, 0, 1, 1}, + {&__pyx_n_s_cocoex_interface, __pyx_k_cocoex_interface, sizeof(__pyx_k_cocoex_interface), 0, 0, 1, 1}, + {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1}, + {&__pyx_kp_u_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 1, 0, 0}, + {&__pyx_kp_u_d_d, __pyx_k_d_d, sizeof(__pyx_k_d_d), 0, 1, 0, 0}, + {&__pyx_n_u_deactivated, __pyx_k_deactivated, sizeof(__pyx_k_deactivated), 0, 1, 0, 1}, + {&__pyx_n_s_dealloc, __pyx_k_dealloc, sizeof(__pyx_k_dealloc), 0, 0, 1, 1}, + {&__pyx_n_s_dimension, __pyx_k_dimension, sizeof(__pyx_k_dimension), 0, 0, 1, 1}, + {&__pyx_n_s_dimensions, __pyx_k_dimensions, sizeof(__pyx_k_dimensions), 0, 0, 1, 1}, + {&__pyx_n_s_double, __pyx_k_double, sizeof(__pyx_k_double), 0, 0, 1, 1}, + {&__pyx_n_s_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 0, 1, 1}, + {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, + {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, + {&__pyx_n_s_evaluation, __pyx_k_evaluation, sizeof(__pyx_k_evaluation), 0, 0, 1, 1}, + {&__pyx_n_s_exception_type, __pyx_k_exception_type, sizeof(__pyx_k_exception_type), 0, 0, 1, 1}, + {&__pyx_n_s_exception_value, __pyx_k_exception_value, sizeof(__pyx_k_exception_value), 0, 0, 1, 1}, + {&__pyx_kp_u_expect_a_string_got_s, __pyx_k_expect_a_string_got_s, sizeof(__pyx_k_expect_a_string_got_s), 0, 1, 0, 0}, + {&__pyx_n_s_final_target_fvalue1, __pyx_k_final_target_fvalue1, sizeof(__pyx_k_final_target_fvalue1), 0, 0, 1, 1}, + {&__pyx_kp_u_finalized_invalid_problem, __pyx_k_finalized_invalid_problem, sizeof(__pyx_k_finalized_invalid_problem), 0, 1, 0, 0}, + {&__pyx_kp_u_finalized_invalid_problem_2, __pyx_k_finalized_invalid_problem_2, sizeof(__pyx_k_finalized_invalid_problem_2), 0, 1, 0, 0}, + {&__pyx_n_s_find, __pyx_k_find, sizeof(__pyx_k_find), 0, 0, 1, 1}, + {&__pyx_kp_u_find_problem_ids_has_been_renam, __pyx_k_find_problem_ids_has_been_renam, sizeof(__pyx_k_find_problem_ids_has_been_renam), 0, 1, 0, 0}, + {&__pyx_n_s_force, __pyx_k_force, sizeof(__pyx_k_force), 0, 0, 1, 1}, + {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1}, + {&__pyx_n_s_free, __pyx_k_free, sizeof(__pyx_k_free), 0, 0, 1, 1}, + {&__pyx_n_s_function, __pyx_k_function, sizeof(__pyx_k_function), 0, 0, 1, 1}, + {&__pyx_kp_u_function_dimension_instance, __pyx_k_function_dimension_instance, sizeof(__pyx_k_function_dimension_instance), 0, 1, 0, 0}, + {&__pyx_n_s_get_problem, __pyx_k_get_problem, sizeof(__pyx_k_get_problem), 0, 0, 1, 1}, + {&__pyx_kp_u_get_problem_self_id_observer_No, __pyx_k_get_problem_self_id_observer_No, sizeof(__pyx_k_get_problem_self_id_observer_No), 0, 1, 0, 0}, + {&__pyx_kp_u_has_never_been_tested_incomment, __pyx_k_has_never_been_tested_incomment, sizeof(__pyx_k_has_never_been_tested_incomment), 0, 1, 0, 0}, + {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, + {&__pyx_kp_u_id_s_index_d, __pyx_k_id_s_index_d, sizeof(__pyx_k_id_s_index_d), 0, 1, 0, 0}, + {&__pyx_kp_u_ids_id_snippets_get_problem_Fal, __pyx_k_ids_id_snippets_get_problem_Fal, sizeof(__pyx_k_ids_id_snippets_get_problem_Fal), 0, 1, 0, 0}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_kp_u_in_Problem__initialize_problem_p, __pyx_k_in_Problem__initialize_problem_p, sizeof(__pyx_k_in_Problem__initialize_problem_p), 0, 1, 0, 0}, + {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1}, + {&__pyx_kp_u_index_in_the_enumerator_of_all_p, __pyx_k_index_in_the_enumerator_of_all_p, sizeof(__pyx_k_index_in_the_enumerator_of_all_p), 0, 1, 0, 0}, + {&__pyx_n_s_indices, __pyx_k_indices, sizeof(__pyx_k_indices), 0, 0, 1, 1}, + {&__pyx_n_s_inf, __pyx_k_inf, sizeof(__pyx_k_inf), 0, 0, 1, 1}, + {&__pyx_n_u_initialized, __pyx_k_initialized, sizeof(__pyx_k_initialized), 0, 1, 0, 1}, + {&__pyx_n_s_instance, __pyx_k_instance, sizeof(__pyx_k_instance), 0, 0, 1, 1}, + {&__pyx_n_s_iter, __pyx_k_iter, sizeof(__pyx_k_iter), 0, 0, 1, 1}, + {&__pyx_n_s_known_suite_names, __pyx_k_known_suite_names, sizeof(__pyx_k_known_suite_names), 0, 0, 1, 1}, + {&__pyx_n_s_known_suite_names_2, __pyx_k_known_suite_names_2, sizeof(__pyx_k_known_suite_names_2), 0, 0, 1, 1}, + {&__pyx_n_s_level, __pyx_k_level, sizeof(__pyx_k_level), 0, 0, 1, 1}, + {&__pyx_n_s_level_2, __pyx_k_level_2, sizeof(__pyx_k_level_2), 0, 0, 1, 1}, + {&__pyx_n_s_log_level, __pyx_k_log_level, sizeof(__pyx_k_log_level), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1}, + {&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_kp_u_ndarray_is_not_C_contiguous, __pyx_k_ndarray_is_not_C_contiguous, sizeof(__pyx_k_ndarray_is_not_C_contiguous), 0, 1, 0, 0}, + {&__pyx_kp_u_ndarray_is_not_Fortran_contiguou, __pyx_k_ndarray_is_not_Fortran_contiguou, sizeof(__pyx_k_ndarray_is_not_Fortran_contiguou), 0, 1, 0, 0}, + {&__pyx_n_s_next_problem, __pyx_k_next_problem, sizeof(__pyx_k_next_problem), 0, 0, 1, 1}, + {&__pyx_kp_u_not_match_the_number_of_objectiv, __pyx_k_not_match_the_number_of_objectiv, sizeof(__pyx_k_not_match_the_number_of_objectiv), 0, 1, 0, 0}, + {&__pyx_kp_u_not_match_the_problem_dimension, __pyx_k_not_match_the_problem_dimension, sizeof(__pyx_k_not_match_the_problem_dimension), 0, 1, 0, 0}, + {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1}, + {&__pyx_n_s_number_of_objectives, __pyx_k_number_of_objectives, sizeof(__pyx_k_number_of_objectives), 0, 0, 1, 1}, + {&__pyx_n_s_number_of_variables, __pyx_k_number_of_variables, sizeof(__pyx_k_number_of_variables), 0, 0, 1, 1}, + {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1}, + {&__pyx_n_s_observe_with, __pyx_k_observe_with, sizeof(__pyx_k_observe_with), 0, 0, 1, 1}, + {&__pyx_n_s_observer, __pyx_k_observer, sizeof(__pyx_k_observer), 0, 0, 1, 1}, + {&__pyx_n_s_ones, __pyx_k_ones, sizeof(__pyx_k_ones), 0, 0, 1, 1}, + {&__pyx_n_s_options, __pyx_k_options, sizeof(__pyx_k_options), 0, 0, 1, 1}, + {&__pyx_n_s_order, __pyx_k_order, sizeof(__pyx_k_order), 0, 0, 1, 1}, + {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, + {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, + {&__pyx_n_s_replace, __pyx_k_replace, sizeof(__pyx_k_replace), 0, 0, 1, 1}, + {&__pyx_n_s_reset, __pyx_k_reset, sizeof(__pyx_k_reset), 0, 0, 1, 1}, + {&__pyx_kp_u_returns_a_Problem_instance_by_de, __pyx_k_returns_a_Problem_instance_by_de, sizeof(__pyx_k_returns_a_Problem_instance_by_de), 0, 1, 0, 0}, + {&__pyx_n_u_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 1, 0, 1}, + {&__pyx_kp_u_s_id_r, __pyx_k_s_id_r, sizeof(__pyx_k_s_id_r), 0, 1, 0, 0}, + {&__pyx_kp_u_s_objective, __pyx_k_s_objective, sizeof(__pyx_k_s_objective), 0, 1, 0, 0}, + {&__pyx_kp_u_s_s_problem_s, __pyx_k_s_s_problem_s, sizeof(__pyx_k_s_s_problem_s), 0, 1, 0, 0}, + {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, + {&__pyx_n_u_single, __pyx_k_single, sizeof(__pyx_k_single), 0, 1, 0, 1}, + {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1}, + {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, + {&__pyx_n_s_suite_instance, __pyx_k_suite_instance, sizeof(__pyx_k_suite_instance), 0, 0, 1, 1}, + {&__pyx_n_s_suite_name, __pyx_k_suite_name, sizeof(__pyx_k_suite_name), 0, 0, 1, 1}, + {&__pyx_n_s_suite_options, __pyx_k_suite_options, sizeof(__pyx_k_suite_options), 0, 0, 1, 1}, + {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, + {&__pyx_n_s_traceback, __pyx_k_traceback, sizeof(__pyx_k_traceback), 0, 0, 1, 1}, + {&__pyx_kp_u_u, __pyx_k_u, sizeof(__pyx_k_u), 0, 1, 0, 0}, + {&__pyx_kp_u_u_2, __pyx_k_u_2, sizeof(__pyx_k_u_2), 0, 1, 0, 0}, + {&__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_k_unknown_dtype_code_in_numpy_pxd, sizeof(__pyx_k_unknown_dtype_code_in_numpy_pxd), 0, 1, 0, 0}, + {&__pyx_n_s_update_current_observer_global, __pyx_k_update_current_observer_global, sizeof(__pyx_k_update_current_observer_global), 0, 0, 1, 1}, + {&__pyx_n_s_verbose, __pyx_k_verbose, sizeof(__pyx_k_verbose), 0, 0, 1, 1}, + {&__pyx_n_u_warning, __pyx_k_warning, sizeof(__pyx_k_warning), 0, 1, 0, 1}, + {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1}, + {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1}, + {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_property = __Pyx_GetBuiltinName(__pyx_n_s__property); if (!__pyx_builtin_property) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s__NotImplementedError); if (!__pyx_builtin_NotImplementedError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s__enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s__all); if (!__pyx_builtin_all) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s__print); if (!__pyx_builtin_print) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_sorted = __Pyx_GetBuiltinName(__pyx_n_s__sorted); if (!__pyx_builtin_sorted) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s__min); if (!__pyx_builtin_min) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s__max); if (!__pyx_builtin_max) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s__StopIteration); if (!__pyx_builtin_StopIteration) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 70, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 263, __pyx_L1_error) + __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 380, __pyx_L1_error) + __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 423, __pyx_L1_error) + __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 424, __pyx_L1_error) + __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 426, __pyx_L1_error) + __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s_StopIteration); if (!__pyx_builtin_StopIteration) __PYX_ERR(0, 519, __pyx_L1_error) + __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 645, __pyx_L1_error) + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 667, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; @@ -13533,9 +15159,9 @@ static int __Pyx_InitCachedConstants(void) { * else: * raise TypeError("expect a string, got %s" % str(type(s))) */ - __pyx_k_tuple_1 = PyTuple_Pack(1, ((PyObject *)__pyx_n_u__ascii)); if (unlikely(!__pyx_k_tuple_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_1); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_1)); + __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_u_ascii); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple_); + __Pyx_GIVEREF(__pyx_tuple_); /* "cython/interface.pyx":232 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) @@ -13544,9 +15170,9 @@ static int __Pyx_InitCachedConstants(void) { * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) */ - __pyx_k_tuple_7 = PyTuple_Pack(1, ((PyObject *)__pyx_n_u__warning)); if (unlikely(!__pyx_k_tuple_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_7); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_7)); + __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_u_warning); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__3); + __Pyx_GIVEREF(__pyx_tuple__3); /* "cython/interface.pyx":263 * global _current_observer @@ -13555,9 +15181,9 @@ static int __Pyx_InitCachedConstants(void) { * if self.current_problem_: * self.current_problem_.free() */ - __pyx_k_tuple_9 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_8)); if (unlikely(!__pyx_k_tuple_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_9); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_9)); + __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 263, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__4); + __Pyx_GIVEREF(__pyx_tuple__4); /* "cython/interface.pyx":313 * """ @@ -13566,9 +15192,9 @@ static int __Pyx_InitCachedConstants(void) { * index = id * try: */ - __pyx_k_tuple_10 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_8)); if (unlikely(!__pyx_k_tuple_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_10); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_10)); + __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__5); + __Pyx_GIVEREF(__pyx_tuple__5); /* "cython/interface.pyx":354 * @@ -13577,9 +15203,9 @@ static int __Pyx_InitCachedConstants(void) { * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, */ - __pyx_k_tuple_12 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_8)); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_12); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12)); + __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 354, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__6); + __Pyx_GIVEREF(__pyx_tuple__6); /* "cython/interface.pyx":380 * def find_problem_ids(self, *args, **kwargs): @@ -13588,9 +15214,9 @@ static int __Pyx_InitCachedConstants(void) { * "`find_problem_ids()` has been renamed to `ids()`") * */ - __pyx_k_tuple_15 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_14)); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_15); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15)); + __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_find_problem_ids_has_been_renam); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 380, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__7); + __Pyx_GIVEREF(__pyx_tuple__7); /* "cython/interface.pyx":564 * def __cinit__(self, name, options): @@ -13599,9 +15225,9 @@ static int __Pyx_InitCachedConstants(void) { * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') */ - __pyx_k_tuple_24 = PyTuple_Pack(2, ((PyObject *)__pyx_kp_u_22), ((PyObject *)__pyx_kp_u_23)); if (unlikely(!__pyx_k_tuple_24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_24); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_24)); + __pyx_tuple__10 = PyTuple_Pack(2, __pyx_kp_u__8, __pyx_kp_u__9); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 564, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__10); + __Pyx_GIVEREF(__pyx_tuple__10); /* "cython/interface.pyx":565 * if isinstance(options, dict): @@ -13610,9 +15236,9 @@ static int __Pyx_InitCachedConstants(void) { * s = s.replace(c, '') * options = s */ - __pyx_k_tuple_31 = PyTuple_Pack(6, ((PyObject *)__pyx_kp_u_25), ((PyObject *)__pyx_kp_u_26), ((PyObject *)__pyx_kp_u_27), ((PyObject *)__pyx_kp_u_28), ((PyObject *)__pyx_kp_u_29), ((PyObject *)__pyx_kp_u_30)); if (unlikely(!__pyx_k_tuple_31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_31); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_31)); + __pyx_tuple__15 = PyTuple_Pack(6, __pyx_kp_u_u, __pyx_kp_u_u_2, __pyx_kp_u__11, __pyx_kp_u__12, __pyx_kp_u__13, __pyx_kp_u__14); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 565, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__15); + __Pyx_GIVEREF(__pyx_tuple__15); /* "cython/interface.pyx":645 * cdef np.npy_intp shape[1] @@ -13621,9 +15247,9 @@ static int __Pyx_InitCachedConstants(void) { * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") */ - __pyx_k_tuple_35 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_34)); if (unlikely(!__pyx_k_tuple_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_35); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_35)); + __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_u_Problem_already_initialized); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 645, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__16); + __Pyx_GIVEREF(__pyx_tuple__16); /* "cython/interface.pyx":647 * raise RuntimeError("Problem already initialized") @@ -13632,9 +15258,9 @@ static int __Pyx_InitCachedConstants(void) { * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) */ - __pyx_k_tuple_37 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_36)); if (unlikely(!__pyx_k_tuple_37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_37); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_37)); + __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_u_in_Problem__initialize_problem_p); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 647, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__17); + __Pyx_GIVEREF(__pyx_tuple__17); /* "cython/interface.pyx":679 * By convention, constraints with values >= 0 are satisfied. @@ -13643,9 +15269,9 @@ static int __Pyx_InitCachedConstants(void) { * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_k_tuple_39 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_38)); if (unlikely(!__pyx_k_tuple_39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_39); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_39)); + __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_has_never_been_tested_incomment); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 679, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__18); + __Pyx_GIVEREF(__pyx_tuple__18); /* "cython/interface.pyx":700 * for the assessment of the algorithm. @@ -13654,9 +15280,9 @@ static int __Pyx_InitCachedConstants(void) { * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_k_tuple_40 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_38)); if (unlikely(!__pyx_k_tuple_40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_40); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_40)); + __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_u_has_never_been_tested_incomment); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 700, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__19); + __Pyx_GIVEREF(__pyx_tuple__19); /* "cython/interface.pyx":899 * if self.problem is not NULL: @@ -13665,75 +15291,75 @@ static int __Pyx_InitCachedConstants(void) { * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_k_slice_55 = PySlice_New(__pyx_int_1, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_k_slice_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_slice_55); - __Pyx_GIVEREF(__pyx_k_slice_55); + __pyx_slice__20 = PySlice_New(__pyx_int_1, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__20)) __PYX_ERR(0, 899, __pyx_L1_error) + __Pyx_GOTREF(__pyx_slice__20); + __Pyx_GIVEREF(__pyx_slice__20); - /* "numpy.pxd":215 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":218 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) */ - __pyx_k_tuple_58 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_57)); if (unlikely(!__pyx_k_tuple_58)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_58); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_58)); + __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__21); + __Pyx_GIVEREF(__pyx_tuple__21); - /* "numpy.pxd":219 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":222 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< * * info.buf = PyArray_DATA(self) */ - __pyx_k_tuple_60 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_59)); if (unlikely(!__pyx_k_tuple_60)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_60); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_60)); + __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__22); + __Pyx_GIVEREF(__pyx_tuple__22); - /* "numpy.pxd":257 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":259 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" */ - __pyx_k_tuple_62 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_61)); if (unlikely(!__pyx_k_tuple_62)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_62); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_62)); + __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 259, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__23); + __Pyx_GIVEREF(__pyx_tuple__23); - /* "numpy.pxd":799 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":799 * - * if (end - f) - (new_offset - offset[0]) < 15: + * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< * * if ((child.byteorder == c'>' and little_endian) or */ - __pyx_k_tuple_65 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_64)); if (unlikely(!__pyx_k_tuple_65)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_65); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_65)); + __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 799, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__24); + __Pyx_GIVEREF(__pyx_tuple__24); - /* "numpy.pxd":803 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * # One could encode it in the format string and have Cython * # complain instead, BUT: < and > in format strings also imply */ - __pyx_k_tuple_66 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_61)); if (unlikely(!__pyx_k_tuple_66)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_66); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_66)); + __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 803, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__25); + __Pyx_GIVEREF(__pyx_tuple__25); - /* "numpy.pxd":823 + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< * * # Until ticket #99 is fixed, use integers to avoid warnings */ - __pyx_k_tuple_68 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_67)); if (unlikely(!__pyx_k_tuple_68)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_68); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_68)); + __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 823, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__26); + __Pyx_GIVEREF(__pyx_tuple__26); /* "cython/interface.pyx":914 * pass @@ -13742,10 +15368,10 @@ static int __Pyx_InitCachedConstants(void) { * """`log_level(level=None)` return current log level and * set new log level if `level is not None and level`. */ - __pyx_k_tuple_76 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__level), ((PyObject *)__pyx_n_s___level)); if (unlikely(!__pyx_k_tuple_76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_k_tuple_76); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_76)); - __pyx_k_codeobj_77 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_76, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_78, __pyx_n_s__log_level, 914, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_77)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__27 = PyTuple_Pack(2, __pyx_n_s_level, __pyx_n_s_level_2); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 914, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__27); + __Pyx_GIVEREF(__pyx_tuple__27); + __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_hansen_git_coco_code_expe, __pyx_n_s_log_level, 914, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 914, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -13754,12 +15380,11 @@ static int __Pyx_InitCachedConstants(void) { } static int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; - __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; - __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; - __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; - __pyx_int_neg_2 = PyInt_FromLong(-2); if (unlikely(!__pyx_int_neg_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; - __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_neg_2 = PyInt_FromLong(-2); if (unlikely(!__pyx_int_neg_2)) __PYX_ERR(0, 1, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; @@ -13775,9 +15400,6 @@ PyMODINIT_FUNC PyInit_interface(void) { PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); @@ -13789,17 +15411,24 @@ PyMODINIT_FUNC PyInit_interface(void) } #endif __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_interface(void)", 0); - if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED - if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ @@ -13810,48 +15439,49 @@ PyMODINIT_FUNC PyInit_interface(void) #endif /*--- Module creation code ---*/ #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4(__Pyx_NAMESTR("interface"), __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + __pyx_m = Py_InitModule4("interface", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif - if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_d); - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (!PyDict_GetItemString(modules, "cocoex.interface")) { - if (unlikely(PyDict_SetItemString(modules, "cocoex.interface", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - } - #endif - __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) #if CYTHON_COMPILING_IN_PYPY Py_INCREF(__pyx_b); #endif - if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); /*--- Initialize various global constants etc. ---*/ - if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif if (__pyx_module_is_main_cocoex__interface) { - if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "cocoex.interface")) { + if (unlikely(PyDict_SetItemString(modules, "cocoex.interface", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + } } + #endif /*--- Builtin init code ---*/ - if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ - if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Global init code ---*/ /*--- Variable export code ---*/ /*--- Function export code ---*/ /*--- Type init code ---*/ __pyx_vtabptr_6cocoex_9interface_Suite = &__pyx_vtable_6cocoex_9interface_Suite; __pyx_vtable_6cocoex_9interface_Suite._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Suite *))__pyx_f_6cocoex_9interface_5Suite__initialize; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Suite) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 74, __pyx_L1_error) + __pyx_type_6cocoex_9interface_Suite.tp_print = 0; #if CYTHON_COMPILING_IN_CPYTHON { - PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__getitem__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 74, __pyx_L1_error) if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base; __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__.doc = __pyx_doc_6cocoex_9interface_5Suite_10__getitem__; @@ -13861,37 +15491,40 @@ PyMODINIT_FUNC PyInit_interface(void) #endif #if CYTHON_COMPILING_IN_CPYTHON { - PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__iter__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__iter__"); if (unlikely(!wrapper)) __PYX_ERR(0, 74, __pyx_L1_error) if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { - __pyx_wrapperbase_6cocoex_9interface_5Suite_46__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base; - __pyx_wrapperbase_6cocoex_9interface_5Suite_46__iter__.doc = __pyx_doc_6cocoex_9interface_5Suite_46__iter__; - ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_5Suite_46__iter__; + __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__.doc = __pyx_doc_6cocoex_9interface_5Suite_26__iter__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__; } } #endif - if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Suite.tp_dict, __pyx_vtabptr_6cocoex_9interface_Suite) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__Pyx_SetAttrString(__pyx_m, "Suite", (PyObject *)&__pyx_type_6cocoex_9interface_Suite) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Suite.tp_dict, __pyx_vtabptr_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 74, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "Suite", (PyObject *)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 74, __pyx_L1_error) __pyx_ptype_6cocoex_9interface_Suite = &__pyx_type_6cocoex_9interface_Suite; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Observer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__Pyx_SetAttrString(__pyx_m, "Observer", (PyObject *)&__pyx_type_6cocoex_9interface_Observer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 528, __pyx_L1_error) + __pyx_type_6cocoex_9interface_Observer.tp_print = 0; + if (PyObject_SetAttrString(__pyx_m, "Observer", (PyObject *)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 528, __pyx_L1_error) __pyx_ptype_6cocoex_9interface_Observer = &__pyx_type_6cocoex_9interface_Observer; __pyx_vtabptr_6cocoex_9interface_Problem = &__pyx_vtable_6cocoex_9interface_Problem; __pyx_vtable_6cocoex_9interface_Problem._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Problem *, coco_problem_t *, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args))__pyx_f_6cocoex_9interface_7Problem__initialize; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Problem) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 616, __pyx_L1_error) + __pyx_type_6cocoex_9interface_Problem.tp_print = 0; #if CYTHON_COMPILING_IN_CPYTHON { - PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Problem, "__call__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Problem, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 616, __pyx_L1_error) if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { - __pyx_wrapperbase_6cocoex_9interface_7Problem_40__call__ = *((PyWrapperDescrObject *)wrapper)->d_base; - __pyx_wrapperbase_6cocoex_9interface_7Problem_40__call__.doc = __pyx_doc_6cocoex_9interface_7Problem_40__call__; - ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_7Problem_40__call__; + __pyx_wrapperbase_6cocoex_9interface_7Problem_18__call__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_6cocoex_9interface_7Problem_18__call__.doc = __pyx_doc_6cocoex_9interface_7Problem_18__call__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_7Problem_18__call__; } } #endif - if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Problem.tp_dict, __pyx_vtabptr_6cocoex_9interface_Problem) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__Pyx_SetAttrString(__pyx_m, "Problem", (PyObject *)&__pyx_type_6cocoex_9interface_Problem) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Problem.tp_dict, __pyx_vtabptr_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 616, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "Problem", (PyObject *)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 616, __pyx_L1_error) __pyx_ptype_6cocoex_9interface_Problem = &__pyx_type_6cocoex_9interface_Problem; - if (PyType_Ready(&__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyType_Ready(&__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__) < 0) __PYX_ERR(0, 503, __pyx_L1_error) + __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_print = 0; __pyx_ptype_6cocoex_9interface___pyx_scope_struct____iter__ = &__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__; /*--- Type import code ---*/ __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", @@ -13900,15 +15533,18 @@ PyMODINIT_FUNC PyInit_interface(void) #else sizeof(PyHeapTypeObject), #endif - 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(2, 9, __pyx_L1_error) + __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(1, 155, __pyx_L1_error) + __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(1, 168, __pyx_L1_error) + __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(1, 172, __pyx_L1_error) + __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(1, 181, __pyx_L1_error) + __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(1, 861, __pyx_L1_error) /*--- Variable import code ---*/ /*--- Function import code ---*/ /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif /* "cython/interface.pyx":4 * #cython: c_string_type=str, c_string_encoding=ascii @@ -13917,9 +15553,9 @@ PyMODINIT_FUNC PyInit_interface(void) * import numpy as np * cimport numpy as np */ - __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__sys), 0, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s__sys, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "cython/interface.pyx":5 @@ -13929,9 +15565,9 @@ PyMODINIT_FUNC PyInit_interface(void) * cimport numpy as np * */ - __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s__np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "cython/interface.pyx":8 @@ -13939,80 +15575,77 @@ PyMODINIT_FUNC PyInit_interface(void) * * from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException # <<<<<<<<<<<<<< * - * known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-largescale"] + * known_suite_names = [b"bbob", b"bbob-biobj"] */ - __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)__pyx_n_s_44)); - PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s_44)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s_44)); - __Pyx_INCREF(((PyObject *)__pyx_n_s_11)); - PyList_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_n_s_11)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s_11)); - __Pyx_INCREF(((PyObject *)__pyx_n_s_4)); - PyList_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_n_s_4)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s_4)); - __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s_70), ((PyObject *)__pyx_t_1), 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_INCREF(__pyx_n_s_InvalidProblemException); + __Pyx_GIVEREF(__pyx_n_s_InvalidProblemException); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_InvalidProblemException); + __Pyx_INCREF(__pyx_n_s_NoSuchProblemException); + __Pyx_GIVEREF(__pyx_n_s_NoSuchProblemException); + PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_NoSuchProblemException); + __Pyx_INCREF(__pyx_n_s_NoSuchSuiteException); + __Pyx_GIVEREF(__pyx_n_s_NoSuchSuiteException); + PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_NoSuchSuiteException); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_cocoex_exceptions, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_44); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_44, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InvalidProblemException, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_11); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_11, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_NoSuchProblemException, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_4, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_NoSuchSuiteException, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":10 * from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException * - * known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-largescale"] # <<<<<<<<<<<<<< + * known_suite_names = [b"bbob", b"bbob-biobj"] # <<<<<<<<<<<<<< * _known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-constrained", b"bbob-largescale"] * */ - __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_n_b__bbob)); - PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_b__bbob)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_b__bbob)); - __Pyx_INCREF(((PyObject *)__pyx_kp_b_71)); - PyList_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_kp_b_71)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_b_71)); - __Pyx_INCREF(((PyObject *)__pyx_kp_b_72)); - PyList_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_kp_b_72)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_b_72)); - if (PyDict_SetItem(__pyx_d, __pyx_n_s__known_suite_names, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_n_b_bbob); + __Pyx_GIVEREF(__pyx_n_b_bbob); + PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_b_bbob); + __Pyx_INCREF(__pyx_kp_b_bbob_biobj); + __Pyx_GIVEREF(__pyx_kp_b_bbob_biobj); + PyList_SET_ITEM(__pyx_t_2, 1, __pyx_kp_b_bbob_biobj); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":11 * - * known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-largescale"] + * known_suite_names = [b"bbob", b"bbob-biobj"] * _known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-constrained", b"bbob-largescale"] # <<<<<<<<<<<<<< * * # _test_assignment = "seems to prevent an 'export' error (i.e. induce export) to make this module known under Linux and Windows (possibly because of the leading underscore of _interface)" */ - __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_n_b__bbob)); - PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_b__bbob)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_b__bbob)); - __Pyx_INCREF(((PyObject *)__pyx_kp_b_71)); - PyList_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_kp_b_71)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_b_71)); - __Pyx_INCREF(((PyObject *)__pyx_kp_b_73)); - PyList_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_kp_b_73)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_b_73)); - __Pyx_INCREF(((PyObject *)__pyx_kp_b_72)); - PyList_SET_ITEM(__pyx_t_2, 3, ((PyObject *)__pyx_kp_b_72)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_b_72)); - if (PyDict_SetItem(__pyx_d, __pyx_n_s___known_suite_names, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_n_b_bbob); + __Pyx_GIVEREF(__pyx_n_b_bbob); + PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_b_bbob); + __Pyx_INCREF(__pyx_kp_b_bbob_biobj); + __Pyx_GIVEREF(__pyx_kp_b_bbob_biobj); + PyList_SET_ITEM(__pyx_t_2, 1, __pyx_kp_b_bbob_biobj); + __Pyx_INCREF(__pyx_kp_b_bbob_constrained); + __Pyx_GIVEREF(__pyx_kp_b_bbob_constrained); + PyList_SET_ITEM(__pyx_t_2, 2, __pyx_kp_b_bbob_constrained); + __Pyx_INCREF(__pyx_kp_b_bbob_largescale); + __Pyx_GIVEREF(__pyx_kp_b_bbob_largescale); + PyList_SET_ITEM(__pyx_t_2, 3, __pyx_kp_b_bbob_largescale); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names_2, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":17 * @@ -14023,725 +15656,65 @@ PyMODINIT_FUNC PyInit_interface(void) */ import_array(); - /* "cython/interface.pyx":384 - * + /* "cython/interface.pyx":914 + * pass * - * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< - * """`ids(*id_snippets, get_problem=False, verbose=False)` - * return all problem IDs that contain all of the `id_snippets`. + * def log_level(level=None): # <<<<<<<<<<<<<< + * """`log_level(level=None)` return current log level and + * set new log level if `level is not None and level`. */ - __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_k_16 = __pyx_t_2; - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6cocoex_9interface_1log_level, NULL, __pyx_n_s_cocoex_interface); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_k_17 = __pyx_t_2; - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_log_level, __pyx_t_2) < 0) __PYX_ERR(0, 914, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":433 - * - * @property - * def current_problem(self): # <<<<<<<<<<<<<< - * """current "open/active" problem to be benchmarked""" - * return self.current_problem_ + /* "cython/interface.pyx":1 + * # -*- mode: cython -*- # <<<<<<<<<<<<<< + * #cython: c_string_type=str, c_string_encoding=ascii + * from __future__ import absolute_import, division, print_function, unicode_literals */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__current_problem); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__current_problem, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_line_281, __pyx_kp_u_get_problem_self_id_observer_No) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_by_function_di, __pyx_kp_u_returns_a_Problem_instance_by_de) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_ids_line_384, __pyx_kp_u_ids_id_snippets_get_problem_Fal) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_current_index___get___line, __pyx_kp_u_index_in_the_enumerator_of_all_p) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); - /* "cython/interface.pyx":437 - * return self.current_problem_ - * @property - * def current_index(self): # <<<<<<<<<<<<<< - * """index in the enumerator of all problems in this suite. + /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":976 + * arr.base = baseptr * + * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< + * if arr.base is NULL: + * return None */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__current_index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__current_index, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); - /* "cython/interface.pyx":455 - * return self._current_index - * @property - * def problem_names(self): # <<<<<<<<<<<<<< - * """list of problem names in this `Suite`, see also `ids`""" - * return list(self._names) - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__problem_names); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__problem_names, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); + /*--- Wrapped vars code ---*/ - /* "cython/interface.pyx":459 - * return list(self._names) - * @property - * def dimensions(self): # <<<<<<<<<<<<<< - * """list of problem dimensions occuring at least once in this `Suite`""" - * return sorted(set(self._dimensions)) - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__dimensions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__dimensions, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + if (__pyx_m) { + if (__pyx_d) { + __Pyx_AddTraceback("init cocoex.interface", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + Py_DECREF(__pyx_m); __pyx_m = 0; + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init cocoex.interface"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if PY_MAJOR_VERSION < 3 + return; + #else + return __pyx_m; + #endif +} - /* "cython/interface.pyx":463 - * return sorted(set(self._dimensions)) - * @property - * def number_of_objectives(self): # <<<<<<<<<<<<<< - * """list of number of objectives occuring in this `Suite`""" - * return sorted(set(self._number_of_objectives)) - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s_41); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s_41, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); - - /* "cython/interface.pyx":467 - * return sorted(set(self._number_of_objectives)) - * @property - * def indices(self): # <<<<<<<<<<<<<< - * """list of all problem indices, deprecated. - * - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__indices); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__indices, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); - - /* "cython/interface.pyx":475 - * return list(self._indices) - * @property - * def name(self): # <<<<<<<<<<<<<< - * """name of this suite as used to instantiate the suite via `Suite(name, ...)`""" - * return self._name - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__name, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); - - /* "cython/interface.pyx":479 - * return self._name - * @property - * def instance(self): # <<<<<<<<<<<<<< - * """instance of this suite as used to instantiate the suite via - * `Suite(name, instance, ...)`""" - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__instance); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__instance, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); - - /* "cython/interface.pyx":484 - * return self._instance - * @property - * def options(self): # <<<<<<<<<<<<<< - * """options for this suite as used to instantiate the suite via - * `Suite(name, instance, options)`""" - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__options); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__options, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); - - /* "cython/interface.pyx":490 - * - * @property - * def info(self): # <<<<<<<<<<<<<< - * return str(self) - * def __repr__(self): - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Suite, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Suite->tp_dict, __pyx_n_s__info, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Suite); - - /* "cython/interface.pyx":587 - * - * @property - * def name(self): # <<<<<<<<<<<<<< - * """name of the observer as used with `Observer(name, ...)` to instantiate - * `self` before. - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Observer, __pyx_n_s__name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Observer->tp_dict, __pyx_n_s__name, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Observer); - - /* "cython/interface.pyx":593 - * return self._name - * @property - * def options(self): # <<<<<<<<<<<<<< - * return self._options - * @property - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Observer, __pyx_n_s__options); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Observer->tp_dict, __pyx_n_s__options, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Observer); - - /* "cython/interface.pyx":596 - * return self._options - * @property - * def state(self): # <<<<<<<<<<<<<< - * return self._state - * - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Observer, __pyx_n_s__state); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Observer->tp_dict, __pyx_n_s__state, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Observer); - - /* "cython/interface.pyx":607 - * coco_observer_free(self._observer) - * - * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< - * """`Problem` class instance initialization wrapper passing - * a `problem_t*` C-variable to `__init__`. - */ - __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_k_32 = __pyx_t_2; - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - - /* "cython/interface.pyx":642 - * cdef np.npy_intp shape[1] - * self.initialized = False # all done in _initialize - * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< - * cdef np.npy_intp shape[1] - * if self.initialized: - */ - __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_k_33 = __pyx_t_2; - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - - /* "cython/interface.pyx":765 - * - * @property - * def initial_solution(self): # <<<<<<<<<<<<<< - * """return feasible initial solution""" - * coco_problem_get_initial_solution(self.problem, - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__initial_solution); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__initial_solution, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":771 - * return np.array(self.x_initial, copy=True) - * @property - * def list_of_observers(self): # <<<<<<<<<<<<<< - * return self._list_of_observers - * property number_of_variables: # this is cython syntax, not known in Python - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__list_of_observers); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__list_of_observers, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":779 - * return self._number_of_variables - * @property - * def dimension(self): # <<<<<<<<<<<<<< - * """alias for `number_of_variables` of the input space""" - * return self._number_of_variables - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__dimension); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__dimension, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":783 - * return self._number_of_variables - * @property - * def number_of_objectives(self): # <<<<<<<<<<<<<< - * "number of objectives, if equal to 1, call returns a scalar" - * return self._number_of_objectives - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s_41); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s_41, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":787 - * return self._number_of_objectives - * @property - * def number_of_constraints(self): # <<<<<<<<<<<<<< - * "number of constraints" - * return self._number_of_constraints - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s_74); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s_74, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":791 - * return self._number_of_constraints - * @property - * def lower_bounds(self): # <<<<<<<<<<<<<< - * """depending on the test bed, these are not necessarily strict bounds - * """ - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__lower_bounds); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__lower_bounds, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":796 - * return self._lower_bounds - * @property - * def upper_bounds(self): # <<<<<<<<<<<<<< - * """depending on the test bed, these are not necessarily strict bounds - * """ - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__upper_bounds); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__upper_bounds, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":801 - * return self._upper_bounds - * @property - * def evaluations(self): # <<<<<<<<<<<<<< - * return coco_problem_get_evaluations(self.problem) - * @property - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__evaluations); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__evaluations, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":804 - * return coco_problem_get_evaluations(self.problem) - * @property - * def final_target_hit(self): # <<<<<<<<<<<<<< - * """return 1 if the final target is known and has been hit, 0 otherwise - * """ - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__final_target_hit); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__final_target_hit, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":810 - * return coco_problem_final_target_hit(self.problem) - * @property - * def final_target_fvalue1(self): # <<<<<<<<<<<<<< - * assert(self.problem) - * return coco_problem_get_final_target_fvalue1(self.problem) - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s_46); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s_46, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":814 - * return coco_problem_get_final_target_fvalue1(self.problem) - * @property - * def best_observed_fvalue1(self): # <<<<<<<<<<<<<< - * assert(self.problem) - * return coco_problem_get_best_observed_fvalue1(self.problem) - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s_75); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s_75, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":818 - * return coco_problem_get_best_observed_fvalue1(self.problem) - * - * def free(self, force=False): # <<<<<<<<<<<<<< - * """Free the given test problem. - * - */ - __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_k_47 = __pyx_t_2; - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - - /* "cython/interface.pyx":860 - * - * @property - * def id(self): # <<<<<<<<<<<<<< - * "id as string without spaces or weird characters" - * if self.problem is not NULL: - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__id); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__id, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":866 - * - * @property - * def name(self): # <<<<<<<<<<<<<< - * if self.problem is not NULL: - * return coco_problem_get_name(self.problem) - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__name, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":871 - * - * @property - * def index(self): # <<<<<<<<<<<<<< - * """problem index in the benchmark `Suite` of origin""" - * return self._problem_index - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__index, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":876 - * - * @property - * def suite(self): # <<<<<<<<<<<<<< - * """benchmark suite this problem is from""" - * return self._suite_name - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__suite); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__suite, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":881 - * - * @property - * def info(self): # <<<<<<<<<<<<<< - * return str(self) - * - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6cocoex_9interface_Problem, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_property, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6cocoex_9interface_Problem->tp_dict, __pyx_n_s__info, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6cocoex_9interface_Problem); - - /* "cython/interface.pyx":914 - * pass - * - * def log_level(level=None): # <<<<<<<<<<<<<< - * """`log_level(level=None)` return current log level and - * set new log level if `level is not None and level`. - */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6cocoex_9interface_1log_level, NULL, __pyx_n_s_79); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s__log_level, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "cython/interface.pyx":1 - * # -*- mode: cython -*- # <<<<<<<<<<<<<< - * #cython: c_string_type=str, c_string_encoding=ascii - * from __future__ import absolute_import, division, print_function, unicode_literals - */ - __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_80), ((PyObject *)__pyx_kp_u_81)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_82), ((PyObject *)__pyx_kp_u_83)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_84), ((PyObject *)__pyx_kp_u_85)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_86), ((PyObject *)__pyx_kp_u_87)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (PyDict_SetItem(__pyx_d, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; - - /* "numpy.pxd":975 - * arr.base = baseptr - * - * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< - * if arr.base is NULL: - * return None - */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - if (__pyx_m) { - __Pyx_AddTraceback("init cocoex.interface", __pyx_clineno, __pyx_lineno, __pyx_filename); - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init cocoex.interface"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if PY_MAJOR_VERSION < 3 - return; - #else - return __pyx_m; - #endif -} - -/* Runtime support code */ +/* --- Runtime support code --- */ +/* Refnanny */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; @@ -14756,8 +15729,9 @@ static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } -#endif /* CYTHON_REFNANNY */ +#endif +/* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); if (unlikely(!result)) { @@ -14765,16 +15739,36 @@ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { #if PY_MAJOR_VERSION >= 3 "name '%U' is not defined", name); #else - "name '%s' is not defined", PyString_AS_STRING(name)); + "name '%.200s' is not defined", PyString_AS_STRING(name)); #endif } return result; } -static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = func->ob_type->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyErrFetchRestore */ #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; - PyThreadState *tstate = PyThreadState_GET(); tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; @@ -14784,27 +15778,22 @@ static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyOb Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); -#else - PyErr_Restore(type, value, tb); -#endif } -static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) { -#if CYTHON_COMPILING_IN_CPYTHON - PyThreadState *tstate = PyThreadState_GET(); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; -#else - PyErr_Fetch(type, value, tb); -#endif } +#endif +/* RaiseException */ #if PY_MAJOR_VERSION < 3 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, CYTHON_UNUSED PyObject *cause) { + __Pyx_PyThreadState_declare Py_XINCREF(type); if (!value || value == Py_None) value = NULL; @@ -14820,11 +15809,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, goto raise_error; } } - #if PY_VERSION_HEX < 0x02050000 - if (PyClass_Check(type)) { - #else if (PyType_Check(type)) { - #endif #if CYTHON_COMPILING_IN_PYPY if (!value) { Py_INCREF(Py_None); @@ -14839,17 +15824,6 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, goto raise_error; } value = type; - #if PY_VERSION_HEX < 0x02050000 - if (PyInstance_Check(type)) { - type = (PyObject*) ((PyInstanceObject*)type)->in_class; - Py_INCREF(type); - } else { - type = 0; - PyErr_SetString(PyExc_TypeError, - "raise: exception must be an old-style class or instance"); - goto raise_error; - } - #else type = (PyObject*) Py_TYPE(type); Py_INCREF(type); if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { @@ -14857,8 +15831,8 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, "raise: exception class must be a subclass of BaseException"); goto raise_error; } - #endif } + __Pyx_PyThreadState_assign __Pyx_ErrRestore(type, value, tb); return; raise_error: @@ -14867,7 +15841,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, Py_XDECREF(tb); return; } -#else /* Python 3+ */ +#else static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { PyObject* owned_instance = NULL; if (tb == Py_None) { @@ -14888,27 +15862,43 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject value = type; type = (PyObject*) Py_TYPE(value); } else if (PyExceptionClass_Check(type)) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyEval_CallObject(type, args); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } } } else { PyErr_SetString(PyExc_TypeError, @@ -14940,6 +15930,13 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject } PyErr_SetObject(type, value); if (tb) { +#if CYTHON_COMPILING_IN_PYPY + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#else PyThreadState *tstate = PyThreadState_GET(); PyObject* tmp_tb = tstate->curexc_traceback; if (tb != tmp_tb) { @@ -14947,6 +15944,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject tstate->curexc_traceback = tb; Py_XDECREF(tmp_tb); } +#endif } bad: Py_XDECREF(owned_instance); @@ -14954,7 +15952,8 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject } #endif -static void __Pyx_RaiseArgtupleInvalid( +/* RaiseArgTupleInvalid */ + static void __Pyx_RaiseArgtupleInvalid( const char* func_name, int exact, Py_ssize_t num_min, @@ -14974,12 +15973,13 @@ static void __Pyx_RaiseArgtupleInvalid( more_or_less = "exactly"; } PyErr_Format(PyExc_TypeError, - "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)", + "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", func_name, more_or_less, num_expected, (num_expected == 1) ? "" : "s", num_found); } -static void __Pyx_RaiseDoubleKeywordsError( +/* RaiseDoubleKeywords */ + static void __Pyx_RaiseDoubleKeywordsError( const char* func_name, PyObject* kw_name) { @@ -14992,7 +15992,8 @@ static void __Pyx_RaiseDoubleKeywordsError( #endif } -static int __Pyx_ParseOptionalKeywords( +/* ParseKeywords */ + static int __Pyx_ParseOptionalKeywords( PyObject *kwds, PyObject **argnames[], PyObject *kwds2, @@ -15078,12 +16079,12 @@ static int __Pyx_ParseOptionalKeywords( goto bad; invalid_keyword_type: PyErr_Format(PyExc_TypeError, - "%s() keywords must be strings", function_name); + "%.200s() keywords must be strings", function_name); goto bad; invalid_keyword: PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION < 3 - "%s() got an unexpected keyword argument '%s'", + "%.200s() got an unexpected keyword argument '%.200s'", function_name, PyString_AsString(key)); #else "%s() got an unexpected keyword argument '%U'", @@ -15093,11 +16094,83 @@ static int __Pyx_ParseOptionalKeywords( return -1; } -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { +/* PyObjectCallMethO */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = PyCFunction_GET_FUNCTION(func); + self = PyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallOneArg */ + #if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_New(1); + if (unlikely(!args)) return NULL; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +#ifdef __Pyx_CyFunction_USED + if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { +#else + if (likely(PyCFunction_Check(func))) { +#endif + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, arg); + } + } + return __Pyx__PyObject_CallOneArg(func, arg); +} +#else +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_Pack(1, arg); + if (unlikely(!args)) return NULL; + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +#endif + +/* PyObjectCallNoArg */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { +#ifdef __Pyx_CyFunction_USED + if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { +#else + if (likely(PyCFunction_Check(func))) { +#endif + if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { + return __Pyx_PyObject_CallMethO(func, NULL); + } + } + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); +} +#endif + +/* GetModuleGlobalName */ + static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { PyObject *result; #if CYTHON_COMPILING_IN_CPYTHON result = PyDict_GetItem(__pyx_d, name); - if (result) { + if (likely(result)) { Py_INCREF(result); } else { #else @@ -15110,11 +16183,39 @@ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { return result; } +/* SaveResetException */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +} +#endif + +/* GetException */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { +#endif PyObject *local_type, *local_value, *local_tb; #if CYTHON_COMPILING_IN_CPYTHON PyObject *tmp_type, *tmp_value, *tmp_tb; - PyThreadState *tstate = PyThreadState_GET(); local_type = tstate->curexc_type; local_value = tstate->curexc_value; local_tb = tstate->curexc_traceback; @@ -15132,12 +16233,14 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) #endif goto bad; #if PY_MAJOR_VERSION >= 3 - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } #endif - Py_INCREF(local_type); - Py_INCREF(local_value); - Py_INCREF(local_tb); + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); *type = local_type; *value = local_value; *tb = local_tb; @@ -15148,8 +16251,6 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) tstate->exc_type = local_type; tstate->exc_value = local_value; tstate->exc_traceback = local_tb; - /* Make sure tstate is in a consistent state when we XDECREF - these objects (DECREF may run arbitrary code). */ Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); @@ -15167,24 +16268,158 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) return -1; } -static CYTHON_INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x) { +/* PyObjectCallMethod1 */ + static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { + PyObject *method, *result = NULL; + method = __Pyx_PyObject_GetAttrStr(obj, method_name); + if (unlikely(!method)) goto bad; +#if CYTHON_COMPILING_IN_CPYTHON + if (likely(PyMethod_Check(method))) { + PyObject *self = PyMethod_GET_SELF(method); + if (likely(self)) { + PyObject *args; + PyObject *function = PyMethod_GET_FUNCTION(method); + args = PyTuple_New(2); + if (unlikely(!args)) goto bad; + Py_INCREF(self); + PyTuple_SET_ITEM(args, 0, self); + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 1, arg); + Py_INCREF(function); + Py_DECREF(method); method = NULL; + result = __Pyx_PyObject_Call(function, args, NULL); + Py_DECREF(args); + Py_DECREF(function); + return result; + } + } +#endif + result = __Pyx_PyObject_CallOneArg(method, arg); +bad: + Py_XDECREF(method); + return result; +} + +/* append */ + static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { if (likely(PyList_CheckExact(L))) { - if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return NULL; - Py_INCREF(Py_None); - return Py_None; /* this is just to have an accurate signature */ + if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; } else { - return __Pyx_PyObject_CallMethod1(L, __pyx_n_s__append, x); + PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x); + if (unlikely(!retval)) + return -1; + Py_DECREF(retval); + } + return 0; +} + +/* PyIntBinop */ + #if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long x; + long a = PyInt_AS_LONG(op1); + x = (long)((unsigned long)a + b); + if (likely((x^a) >= 0 || (x^b) >= 0)) + return PyInt_FromLong(x); + return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3 + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a, x; + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; + const digit* digits = ((PyLongObject*)op1)->ob_digit; + const Py_ssize_t size = Py_SIZE(op1); + if (likely(__Pyx_sst_abs(size) <= 1)) { + a = likely(size) ? digits[0] : 0; + if (size == -1) a = -a; + } else { + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + } + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + } + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + } + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + } + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + } + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + } + default: return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + } + x = a + b; + return PyLong_FromLong(x); + long_long: + llx = lla + llb; + return PyLong_FromLongLong(llx); + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; + double a = PyFloat_AS_DOUBLE(op1); + double result; + PyFPE_START_PROTECT("add", return NULL) + result = ((double)a) + (double)b; + PyFPE_END_PROTECT(result) + return PyFloat_FromDouble(result); } + return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); } +#endif -static CYTHON_INLINE int __Pyx_CheckKeywordStrings( +/* KeywordStringCheck */ + static CYTHON_INLINE int __Pyx_CheckKeywordStrings( PyObject *kwdict, const char* function_name, int kw_allowed) { PyObject* key = 0; Py_ssize_t pos = 0; -#if CPYTHON_COMPILING_IN_PYPY +#if CYTHON_COMPILING_IN_PYPY if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) goto invalid_keyword; return 1; @@ -15201,13 +16436,13 @@ static CYTHON_INLINE int __Pyx_CheckKeywordStrings( return 1; invalid_keyword_type: PyErr_Format(PyExc_TypeError, - "%s() keywords must be strings", function_name); + "%.200s() keywords must be strings", function_name); return 0; #endif invalid_keyword: PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION < 3 - "%s() got an unexpected keyword argument '%s'", + "%.200s() got an unexpected keyword argument '%.200s'", function_name, PyString_AsString(key)); #else "%s() got an unexpected keyword argument '%U'", @@ -15216,7 +16451,8 @@ static CYTHON_INLINE int __Pyx_CheckKeywordStrings( return 0; } -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { +/* GetItemInt */ + static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; if (!j) return NULL; r = PyObject_GetItem(o, j); @@ -15224,7 +16460,8 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j return r; } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck) { + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_COMPILING_IN_CPYTHON if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { @@ -15238,7 +16475,8 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_ #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck) { + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_COMPILING_IN_CPYTHON if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { @@ -15251,8 +16489,9 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize return PySequence_GetItem(o, i); #endif } -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck) { +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_COMPILING_IN_CPYTHON if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); @@ -15277,10 +16516,9 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, if (likely(l >= 0)) { i += l; } else { - if (PyErr_ExceptionMatches(PyExc_OverflowError)) - PyErr_Clear(); - else + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) return NULL; + PyErr_Clear(); } } return m->sq_item(o, i); @@ -15294,9 +16532,45 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); } -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { +/* PyErrExceptionMatches */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { + PyObject *exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; + return PyErr_GivenExceptionMatches(exc_type, err); +} +#endif + +/* SwapException */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* ExtTypeTest */ + static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { if (unlikely(!type)) { - PyErr_Format(PyExc_SystemError, "Missing type object"); + PyErr_SetString(PyExc_SystemError, "Missing type object"); return 0; } if (likely(PyObject_TypeCheck(obj, type))) @@ -15306,15 +16580,16 @@ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { return 0; } -static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { +/* SetItemInt */ + static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { int r; if (!j) return -1; r = PyObject_SetItem(o, j, v); Py_DECREF(j); return r; } -static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, - int is_list, int wraparound, int boundscheck) { +static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, + CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_COMPILING_IN_CPYTHON if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); @@ -15333,10 +16608,9 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje if (likely(l >= 0)) { i += l; } else { - if (PyErr_ExceptionMatches(PyExc_OverflowError)) - PyErr_Clear(); - else + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) return -1; + PyErr_Clear(); } } return m->sq_ass_item(o, i, v); @@ -15354,7 +16628,8 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); } -static CYTHON_INLINE int __Pyx_IsLittleEndian(void) { +/* BufferFormatCheck */ + static CYTHON_INLINE int __Pyx_IsLittleEndian(void) { unsigned int n = 1; return *(unsigned char*)(&n) != 0; } @@ -15402,7 +16677,7 @@ static int __Pyx_BufFmt_ParseNumber(const char** ts) { } static int __Pyx_BufFmt_ExpectNumber(const char **ts) { int number = __Pyx_BufFmt_ParseNumber(ts); - if (number == -1) /* First char was not a digit */ + if (number == -1) PyErr_Format(PyExc_ValueError,\ "Does not understand character buffer dtype format string ('%c')", **ts); return number; @@ -15647,7 +16922,7 @@ static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) { ctx->fmt_offset += size; if (arraysize) ctx->fmt_offset += (arraysize - 1) * size; - --ctx->enc_count; /* Consume from buffer string */ + --ctx->enc_count; while (1) { if (field == &ctx->root) { ctx->head = NULL; @@ -15655,7 +16930,7 @@ static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) { __Pyx_BufFmt_RaiseExpected(ctx); return -1; } - break; /* breaks both loops as ctx->enc_count == 0 */ + break; } ctx->head->field = ++field; if (field->type == NULL) { @@ -15664,7 +16939,7 @@ static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) { continue; } else if (field->type->typegroup == 'S') { size_t parent_offset = ctx->head->parent_offset + field->offset; - if (field->type->fields->type == NULL) continue; /* empty struct */ + if (field->type->fields->type == NULL) continue; field = field->type->fields; ++ctx->head; ctx->head->field = field; @@ -15694,8 +16969,10 @@ __pyx_buffmt_parse_array(__Pyx_BufFmt_Context* ctx, const char** tsp) } if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; while (*ts && *ts != ')') { - if (isspace(*ts)) - continue; + switch (*ts) { + case ' ': case '\f': case '\r': case '\n': case '\t': case '\v': continue; + default: break; + } number = __Pyx_BufFmt_ExpectNumber(&ts); if (number == -1) return NULL; if (i < ndim && (size_t) number != ctx->head->field->type->arraysize[i]) @@ -15735,10 +17012,10 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha __Pyx_BufFmt_RaiseExpected(ctx); return NULL; } - return ts; + return ts; case ' ': - case 10: - case 13: + case '\r': + case '\n': ++ts; break; case '<': @@ -15763,7 +17040,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha case '^': ctx->new_packmode = *ts++; break; - case 'T': /* substruct */ + case 'T': { const char* ts_after_sub; size_t i, struct_count = ctx->new_count; @@ -15775,7 +17052,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha return NULL; } if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_type = 0; /* Erase processed last struct element */ + ctx->enc_type = 0; ctx->enc_count = 0; ctx->struct_alignment = 0; ++ts; @@ -15788,12 +17065,12 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha if (struct_alignment) ctx->struct_alignment = struct_alignment; } break; - case '}': /* end of substruct; either repeat or move on */ + case '}': { size_t alignment = ctx->struct_alignment; ++ts; if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_type = 0; /* Erase processed last struct element */ + ctx->enc_type = 0; if (alignment && ctx->fmt_offset % alignment) { ctx->fmt_offset += alignment - (ctx->fmt_offset % alignment); } @@ -15814,21 +17091,25 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha if (*ts != 'f' && *ts != 'd' && *ts != 'g') { __Pyx_BufFmt_RaiseUnexpectedChar('Z'); return NULL; - } /* fall through */ + } case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I': case 'l': case 'L': case 'q': case 'Q': case 'f': case 'd': case 'g': - case 'O': case 's': case 'p': + case 'O': case 'p': if (ctx->enc_type == *ts && got_Z == ctx->is_complex && ctx->enc_packmode == ctx->new_packmode) { ctx->enc_count += ctx->new_count; - } else { - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_count = ctx->new_count; - ctx->enc_packmode = ctx->new_packmode; - ctx->enc_type = *ts; - ctx->is_complex = got_Z; + ctx->new_count = 1; + got_Z = 0; + ++ts; + break; } + case 's': + if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; + ctx->enc_count = ctx->new_count; + ctx->enc_packmode = ctx->new_packmode; + ctx->enc_type = *ts; + ctx->is_complex = got_Z; ++ts; ctx->new_count = 1; got_Z = 0; @@ -15897,13 +17178,142 @@ static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { __Pyx_ReleaseBuffer(info); } -static void __Pyx_RaiseBufferFallbackError(void) { - PyErr_Format(PyExc_ValueError, +/* BufferFallbackError */ + static void __Pyx_RaiseBufferFallbackError(void) { + PyErr_SetString(PyExc_ValueError, "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); } -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( - PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, +/* WriteUnraisableException */ + static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, + CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, + int full_traceback, CYTHON_UNUSED int nogil) { + PyObject *old_exc, *old_val, *old_tb; + PyObject *ctx; + __Pyx_PyThreadState_declare +#ifdef WITH_THREAD + PyGILState_STATE state; + if (nogil) + state = PyGILState_Ensure(); +#ifdef _MSC_VER + else state = (PyGILState_STATE)-1; +#endif +#endif + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); + if (full_traceback) { + Py_XINCREF(old_exc); + Py_XINCREF(old_val); + Py_XINCREF(old_tb); + __Pyx_ErrRestore(old_exc, old_val, old_tb); + PyErr_PrintEx(1); + } + #if PY_MAJOR_VERSION < 3 + ctx = PyString_FromString(name); + #else + ctx = PyUnicode_FromString(name); + #endif + __Pyx_ErrRestore(old_exc, old_val, old_tb); + if (!ctx) { + PyErr_WriteUnraisable(Py_None); + } else { + PyErr_WriteUnraisable(ctx); + Py_DECREF(ctx); + } +#ifdef WITH_THREAD + if (nogil) + PyGILState_Release(state); +#endif +} + +/* PyIntBinop */ + #if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { + if (op1 == op2) { + Py_RETURN_TRUE; + } + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long a = PyInt_AS_LONG(op1); + if (a == b) { + Py_RETURN_TRUE; + } else { + Py_RETURN_FALSE; + } + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3 + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a; + const digit* digits = ((PyLongObject*)op1)->ob_digit; + const Py_ssize_t size = Py_SIZE(op1); + if (likely(__Pyx_sst_abs(size) <= 1)) { + a = likely(size) ? digits[0] : 0; + if (size == -1) a = -a; + } else { + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } + #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15 + default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ); + #else + default: Py_RETURN_FALSE; + #endif + } + } + if (a == b) { + Py_RETURN_TRUE; + } else { + Py_RETURN_FALSE; + } + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; + double a = PyFloat_AS_DOUBLE(op1); + if ((double)a == (double)b) { + Py_RETURN_TRUE; + } else { + Py_RETURN_FALSE; + } + } + return PyObject_RichCompare(op1, op2, Py_EQ); +} +#endif + +/* SliceObject */ + static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, + Py_ssize_t cstart, Py_ssize_t cstop, PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) { #if CYTHON_COMPILING_IN_CPYTHON @@ -15937,10 +17347,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( if (cstart < 0) cstart = 0; } } else { - if (PyErr_ExceptionMatches(PyExc_OverflowError)) - PyErr_Clear(); - else + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) goto bad; + PyErr_Clear(); } } return ms->sq_slice(obj, cstart, cstop); @@ -15999,67 +17408,118 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( return NULL; } -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { +/* RaiseTooManyValuesToUnpack */ + static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { PyErr_Format(PyExc_ValueError, "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); } -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { +/* RaiseNeedMoreValuesToUnpack */ + static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { PyErr_Format(PyExc_ValueError, - "need more than %" CYTHON_FORMAT_SSIZE_T "d value%s to unpack", + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", index, (index == 1) ? "" : "s"); } -static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { +/* RaiseNoneIterError */ + static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); } -static CYTHON_INLINE int __Pyx_IterFinish(void) { -#if CYTHON_COMPILING_IN_CPYTHON - PyThreadState *tstate = PyThreadState_GET(); - PyObject* exc_type = tstate->curexc_type; - if (unlikely(exc_type)) { - if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) { - PyObject *exc_value, *exc_tb; - exc_value = tstate->curexc_value; - exc_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; - Py_DECREF(exc_type); - Py_XDECREF(exc_value); - Py_XDECREF(exc_tb); - return 0; - } else { - return -1; - } - } - return 0; +/* SetVTable */ + static int __Pyx_SetVtable(PyObject *dict, void *vtable) { +#if PY_VERSION_HEX >= 0x02070000 + PyObject *ob = PyCapsule_New(vtable, 0, 0); #else - if (unlikely(PyErr_Occurred())) { - if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { - PyErr_Clear(); - return 0; - } else { - return -1; - } - } - return 0; + PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); #endif + if (!ob) + goto bad; + if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) + goto bad; + Py_DECREF(ob); + return 0; +bad: + Py_XDECREF(ob); + return -1; } -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { - if (unlikely(retval)) { - Py_DECREF(retval); - __Pyx_RaiseTooManyValuesError(expected); - return -1; - } else { - return __Pyx_IterFinish(); +/* Import */ + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *empty_list = 0; + PyObject *module = 0; + PyObject *global_dict = 0; + PyObject *empty_dict = 0; + PyObject *list; + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (!py_import) + goto bad; + #endif + if (from_list) + list = from_list; + else { + empty_list = PyList_New(0); + if (!empty_list) + goto bad; + list = empty_list; } - return 0; + global_dict = PyModule_GetDict(__pyx_m); + if (!global_dict) + goto bad; + empty_dict = PyDict_New(); + if (!empty_dict) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.')) { + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_level = PyInt_FromLong(1); + if (!py_level) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, global_dict, empty_dict, list, py_level, NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, 1); + #endif + if (!module) { + if (!PyErr_ExceptionMatches(PyExc_ImportError)) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_level = PyInt_FromLong(level); + if (!py_level) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, global_dict, empty_dict, list, py_level, NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, level); + #endif + } + } +bad: + #if PY_VERSION_HEX < 0x03030000 + Py_XDECREF(py_import); + #endif + Py_XDECREF(empty_list); + Py_XDECREF(empty_dict); + return module; } -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { +/* ImportFrom */ + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Format(PyExc_ImportError, @@ -16072,193 +17532,266 @@ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { return value; } -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) { - PyObject *result; - result = __Pyx_PyObject_GetAttrStr(nmspace, name); - if (!result) - result = __Pyx_GetModuleGlobalName(name); - return result; +/* CodeObjectCache */ + static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); } -static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) { -#if CYTHON_COMPILING_IN_CPYTHON - PyThreadState *tstate = PyThreadState_GET(); - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -#else - PyErr_GetExcInfo(type, value, tb); -#endif +/* AddTraceback */ + #include "compile.h" +#include "frameobject.h" +#include "traceback.h" +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyObject *py_srcfile = 0; + PyObject *py_funcname = 0; + #if PY_MAJOR_VERSION < 3 + py_srcfile = PyString_FromString(filename); + #else + py_srcfile = PyUnicode_FromString(filename); + #endif + if (!py_srcfile) goto bad; + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + #else + py_funcname = PyUnicode_FromString(funcname); + #endif + } + if (!py_funcname) goto bad; + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + Py_DECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_srcfile); + Py_XDECREF(py_funcname); + return NULL; } -static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) { -#if CYTHON_COMPILING_IN_CPYTHON - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyThreadState *tstate = PyThreadState_GET(); - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(type, value, tb); -#endif +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + py_code = __pyx_find_code_object(c_line ? c_line : py_line); + if (!py_code) { + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) goto bad; + __pyx_insert_code_object(c_line ? c_line : py_line, py_code); + } + py_frame = PyFrame_New( + PyThreadState_GET(), /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + py_frame->f_lineno = py_line; + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); } #if PY_MAJOR_VERSION < 3 static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) { - #if PY_VERSION_HEX >= 0x02060000 if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags); - #endif if (PyObject_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) return __pyx_pw_5numpy_7ndarray_1__getbuffer__(obj, view, flags); - #if PY_VERSION_HEX < 0x02060000 - if (obj->ob_type->tp_dict) { - PyObject *getbuffer_cobj = PyObject_GetItem( - obj->ob_type->tp_dict, __pyx_n_s____pyx_getbuffer); - if (getbuffer_cobj) { - getbufferproc func = (getbufferproc) PyCObject_AsVoidPtr(getbuffer_cobj); - Py_DECREF(getbuffer_cobj); - if (!func) - goto fail; - return func(obj, view, flags); - } else { - PyErr_Clear(); - } - } - #endif - PyErr_Format(PyExc_TypeError, "'%100s' does not have the buffer interface", Py_TYPE(obj)->tp_name); -#if PY_VERSION_HEX < 0x02060000 -fail: -#endif + PyErr_Format(PyExc_TypeError, "'%.200s' does not have the buffer interface", Py_TYPE(obj)->tp_name); return -1; } static void __Pyx_ReleaseBuffer(Py_buffer *view) { PyObject *obj = view->obj; if (!obj) return; - #if PY_VERSION_HEX >= 0x02060000 if (PyObject_CheckBuffer(obj)) { PyBuffer_Release(view); return; } - #endif if (PyObject_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) { __pyx_pw_5numpy_7ndarray_3__releasebuffer__(obj, view); return; } - #if PY_VERSION_HEX < 0x02060000 - if (obj->ob_type->tp_dict) { - PyObject *releasebuffer_cobj = PyObject_GetItem( - obj->ob_type->tp_dict, __pyx_n_s____pyx_releasebuffer); - if (releasebuffer_cobj) { - releasebufferproc func = (releasebufferproc) PyCObject_AsVoidPtr(releasebuffer_cobj); - Py_DECREF(releasebuffer_cobj); - if (!func) - goto fail; - func(obj, view); - return; - } else { - PyErr_Clear(); - } - } - #endif - goto nofail; -#if PY_VERSION_HEX < 0x02060000 -fail: -#endif - PyErr_WriteUnraisable(obj); -nofail: Py_DECREF(obj); view->obj = NULL; } -#endif /* PY_MAJOR_VERSION < 3 */ +#endif - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_VERSION_HEX < 0x03030000 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s____import__); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; + /* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { + const long neg_one = (long) -1, const_zero = (long) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); + } } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - #if PY_VERSION_HEX >= 0x02050000 { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - #if PY_VERSION_HEX < 0x03030000 - PyObject *py_level = PyInt_FromLong(1); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - #endif - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; /* try absolute import on failure */ + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); + } +} + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { + const int neg_one = (int) -1, const_zero = (int) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(int) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(int) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); } - #endif - if (!module) { - #if PY_VERSION_HEX < 0x03030000 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif + } else { + if (sizeof(int) <= sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); } } - #else - if (level>0) { - PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4."); - goto bad; + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(int), + little, !is_unsigned); } - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, NULL); - #endif -bad: - #if PY_VERSION_HEX < 0x03030000 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; } -#if CYTHON_CCOMPLEX +/* None */ + #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { return ::std::complex< float >(x, y); @@ -16277,7 +17810,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } #endif -#if CYTHON_CCOMPLEX +/* None */ + #if CYTHON_CCOMPLEX #else static CYTHON_INLINE int __Pyx_c_eqf(__pyx_t_float_complex a, __pyx_t_float_complex b) { return (a.real == b.real) && (a.imag == b.imag); @@ -16378,7 +17912,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif #endif -#if CYTHON_CCOMPLEX +/* None */ + #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { return ::std::complex< double >(x, y); @@ -16397,7 +17932,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } #endif -#if CYTHON_CCOMPLEX +/* None */ + #if CYTHON_CCOMPLEX #else static CYTHON_INLINE int __Pyx_c_eq(__pyx_t_double_complex a, __pyx_t_double_complex b) { return (a.real == b.real) && (a.imag == b.imag); @@ -16495,595 +18031,643 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { z.imag = z_r * sin(z_theta); return z; } - #endif -#endif - -static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) { - const unsigned char neg_one = (unsigned char)-1, const_zero = 0; - const int is_unsigned = neg_one > const_zero; - if (sizeof(unsigned char) < sizeof(long)) { - long val = __Pyx_PyInt_AsLong(x); - if (unlikely(val != (long)(unsigned char)val)) { - if (!unlikely(val == -1 && PyErr_Occurred())) { - PyErr_SetString(PyExc_OverflowError, - (is_unsigned && unlikely(val < 0)) ? - "can't convert negative value to unsigned char" : - "value too large to convert to unsigned char"); - } - return (unsigned char)-1; - } - return (unsigned char)val; - } - return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x); -} - -static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) { - const unsigned short neg_one = (unsigned short)-1, const_zero = 0; - const int is_unsigned = neg_one > const_zero; - if (sizeof(unsigned short) < sizeof(long)) { - long val = __Pyx_PyInt_AsLong(x); - if (unlikely(val != (long)(unsigned short)val)) { - if (!unlikely(val == -1 && PyErr_Occurred())) { - PyErr_SetString(PyExc_OverflowError, - (is_unsigned && unlikely(val < 0)) ? - "can't convert negative value to unsigned short" : - "value too large to convert to unsigned short"); - } - return (unsigned short)-1; - } - return (unsigned short)val; - } - return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x); -} - -static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) { - const unsigned int neg_one = (unsigned int)-1, const_zero = 0; - const int is_unsigned = neg_one > const_zero; - if (sizeof(unsigned int) < sizeof(long)) { - long val = __Pyx_PyInt_AsLong(x); - if (unlikely(val != (long)(unsigned int)val)) { - if (!unlikely(val == -1 && PyErr_Occurred())) { - PyErr_SetString(PyExc_OverflowError, - (is_unsigned && unlikely(val < 0)) ? - "can't convert negative value to unsigned int" : - "value too large to convert to unsigned int"); - } - return (unsigned int)-1; - } - return (unsigned int)val; - } - return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x); -} - -static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) { - const char neg_one = (char)-1, const_zero = 0; - const int is_unsigned = neg_one > const_zero; - if (sizeof(char) < sizeof(long)) { - long val = __Pyx_PyInt_AsLong(x); - if (unlikely(val != (long)(char)val)) { - if (!unlikely(val == -1 && PyErr_Occurred())) { - PyErr_SetString(PyExc_OverflowError, - (is_unsigned && unlikely(val < 0)) ? - "can't convert negative value to char" : - "value too large to convert to char"); - } - return (char)-1; - } - return (char)val; - } - return (char)__Pyx_PyInt_AsLong(x); -} - -static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) { - const short neg_one = (short)-1, const_zero = 0; - const int is_unsigned = neg_one > const_zero; - if (sizeof(short) < sizeof(long)) { - long val = __Pyx_PyInt_AsLong(x); - if (unlikely(val != (long)(short)val)) { - if (!unlikely(val == -1 && PyErr_Occurred())) { - PyErr_SetString(PyExc_OverflowError, - (is_unsigned && unlikely(val < 0)) ? - "can't convert negative value to short" : - "value too large to convert to short"); - } - return (short)-1; - } - return (short)val; - } - return (short)__Pyx_PyInt_AsLong(x); -} - -static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) { - const int neg_one = (int)-1, const_zero = 0; - const int is_unsigned = neg_one > const_zero; - if (sizeof(int) < sizeof(long)) { - long val = __Pyx_PyInt_AsLong(x); - if (unlikely(val != (long)(int)val)) { - if (!unlikely(val == -1 && PyErr_Occurred())) { - PyErr_SetString(PyExc_OverflowError, - (is_unsigned && unlikely(val < 0)) ? - "can't convert negative value to int" : - "value too large to convert to int"); - } - return (int)-1; - } - return (int)val; - } - return (int)__Pyx_PyInt_AsLong(x); -} - -static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) { - const signed char neg_one = (signed char)-1, const_zero = 0; - const int is_unsigned = neg_one > const_zero; - if (sizeof(signed char) < sizeof(long)) { - long val = __Pyx_PyInt_AsLong(x); - if (unlikely(val != (long)(signed char)val)) { - if (!unlikely(val == -1 && PyErr_Occurred())) { - PyErr_SetString(PyExc_OverflowError, - (is_unsigned && unlikely(val < 0)) ? - "can't convert negative value to signed char" : - "value too large to convert to signed char"); - } - return (signed char)-1; - } - return (signed char)val; - } - return (signed char)__Pyx_PyInt_AsSignedLong(x); -} - -static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) { - const signed short neg_one = (signed short)-1, const_zero = 0; - const int is_unsigned = neg_one > const_zero; - if (sizeof(signed short) < sizeof(long)) { - long val = __Pyx_PyInt_AsLong(x); - if (unlikely(val != (long)(signed short)val)) { - if (!unlikely(val == -1 && PyErr_Occurred())) { - PyErr_SetString(PyExc_OverflowError, - (is_unsigned && unlikely(val < 0)) ? - "can't convert negative value to signed short" : - "value too large to convert to signed short"); - } - return (signed short)-1; - } - return (signed short)val; - } - return (signed short)__Pyx_PyInt_AsSignedLong(x); -} - -static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) { - const signed int neg_one = (signed int)-1, const_zero = 0; - const int is_unsigned = neg_one > const_zero; - if (sizeof(signed int) < sizeof(long)) { - long val = __Pyx_PyInt_AsLong(x); - if (unlikely(val != (long)(signed int)val)) { - if (!unlikely(val == -1 && PyErr_Occurred())) { - PyErr_SetString(PyExc_OverflowError, - (is_unsigned && unlikely(val < 0)) ? - "can't convert negative value to signed int" : - "value too large to convert to signed int"); - } - return (signed int)-1; - } - return (signed int)val; - } - return (signed int)__Pyx_PyInt_AsSignedLong(x); -} - -static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) { - const int neg_one = (int)-1, const_zero = 0; - const int is_unsigned = neg_one > const_zero; - if (sizeof(int) < sizeof(long)) { - long val = __Pyx_PyInt_AsLong(x); - if (unlikely(val != (long)(int)val)) { - if (!unlikely(val == -1 && PyErr_Occurred())) { - PyErr_SetString(PyExc_OverflowError, - (is_unsigned && unlikely(val < 0)) ? - "can't convert negative value to int" : - "value too large to convert to int"); - } - return (int)-1; - } - return (int)val; - } - return (int)__Pyx_PyInt_AsLong(x); -} - -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -#if CYTHON_USE_PYLONG_INTERNALS -#include "longintrepr.h" -#endif -#endif -static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) { - const unsigned long neg_one = (unsigned long)-1, const_zero = 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to unsigned long"); - return (unsigned long)-1; - } - return (unsigned long)val; - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -#if CYTHON_USE_PYLONG_INTERNALS - if (sizeof(digit) <= sizeof(unsigned long)) { - switch (Py_SIZE(x)) { - case 0: return 0; - case 1: return (unsigned long) ((PyLongObject*)x)->ob_digit[0]; - } - } -#endif -#endif - if (unlikely(Py_SIZE(x) < 0)) { - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to unsigned long"); - return (unsigned long)-1; - } - return (unsigned long)PyLong_AsUnsignedLong(x); - } else { -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -#if CYTHON_USE_PYLONG_INTERNALS - if (sizeof(digit) <= sizeof(unsigned long)) { - switch (Py_SIZE(x)) { - case 0: return 0; - case 1: return +(unsigned long) ((PyLongObject*)x)->ob_digit[0]; - case -1: return -(unsigned long) ((PyLongObject*)x)->ob_digit[0]; - } - } -#endif -#endif - return (unsigned long)PyLong_AsLong(x); - } - } else { - unsigned long val; - PyObject *tmp = __Pyx_PyNumber_Int(x); - if (!tmp) return (unsigned long)-1; - val = __Pyx_PyInt_AsUnsignedLong(tmp); - Py_DECREF(tmp); - return val; - } -} - -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -#if CYTHON_USE_PYLONG_INTERNALS -#include "longintrepr.h" -#endif -#endif -static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) { - const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to unsigned PY_LONG_LONG"); - return (unsigned PY_LONG_LONG)-1; - } - return (unsigned PY_LONG_LONG)val; - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -#if CYTHON_USE_PYLONG_INTERNALS - if (sizeof(digit) <= sizeof(unsigned PY_LONG_LONG)) { - switch (Py_SIZE(x)) { - case 0: return 0; - case 1: return (unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; - } - } -#endif -#endif - if (unlikely(Py_SIZE(x) < 0)) { - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to unsigned PY_LONG_LONG"); - return (unsigned PY_LONG_LONG)-1; - } - return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); - } else { -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -#if CYTHON_USE_PYLONG_INTERNALS - if (sizeof(digit) <= sizeof(unsigned PY_LONG_LONG)) { - switch (Py_SIZE(x)) { - case 0: return 0; - case 1: return +(unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; - case -1: return -(unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; - } - } -#endif -#endif - return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x); - } - } else { - unsigned PY_LONG_LONG val; - PyObject *tmp = __Pyx_PyNumber_Int(x); - if (!tmp) return (unsigned PY_LONG_LONG)-1; - val = __Pyx_PyInt_AsUnsignedLongLong(tmp); - Py_DECREF(tmp); - return val; - } -} - -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -#if CYTHON_USE_PYLONG_INTERNALS -#include "longintrepr.h" -#endif -#endif -static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) { - const long neg_one = (long)-1, const_zero = 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long)-1; - } - return (long)val; - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -#if CYTHON_USE_PYLONG_INTERNALS - if (sizeof(digit) <= sizeof(long)) { - switch (Py_SIZE(x)) { - case 0: return 0; - case 1: return (long) ((PyLongObject*)x)->ob_digit[0]; - } - } -#endif -#endif - if (unlikely(Py_SIZE(x) < 0)) { - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long)-1; - } - return (long)PyLong_AsUnsignedLong(x); - } else { -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -#if CYTHON_USE_PYLONG_INTERNALS - if (sizeof(digit) <= sizeof(long)) { - switch (Py_SIZE(x)) { - case 0: return 0; - case 1: return +(long) ((PyLongObject*)x)->ob_digit[0]; - case -1: return -(long) ((PyLongObject*)x)->ob_digit[0]; - } - } -#endif + #endif #endif - return (long)PyLong_AsLong(x); + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) { + const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(enum NPY_TYPES) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); + } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); } } else { - long val; - PyObject *tmp = __Pyx_PyNumber_Int(x); - if (!tmp) return (long)-1; - val = __Pyx_PyInt_AsLong(tmp); - Py_DECREF(tmp); - return val; + if (sizeof(enum NPY_TYPES) <= sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(enum NPY_TYPES) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(enum NPY_TYPES), + little, !is_unsigned); } } -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -#if CYTHON_USE_PYLONG_INTERNALS -#include "longintrepr.h" -#endif -#endif -static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) { - const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0; +/* CIntFromPy */ + static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { + const size_t neg_one = (size_t) -1, const_zero = (size_t) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to PY_LONG_LONG"); - return (PY_LONG_LONG)-1; + if (sizeof(size_t) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (size_t) val; } - return (PY_LONG_LONG)val; } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 #if CYTHON_USE_PYLONG_INTERNALS - if (sizeof(digit) <= sizeof(PY_LONG_LONG)) { - switch (Py_SIZE(x)) { - case 0: return 0; - case 1: return (PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; - } + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (size_t) 0; + case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, digits[0]) + case 2: + if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) >= 2 * PyLong_SHIFT) { + return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) >= 3 * PyLong_SHIFT) { + return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) >= 4 * PyLong_SHIFT) { + return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; } #endif -#endif +#if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to PY_LONG_LONG"); - return (PY_LONG_LONG)-1; + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (size_t) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(size_t) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x)) + } else if (sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) } - return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); } else { -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 #if CYTHON_USE_PYLONG_INTERNALS - if (sizeof(digit) <= sizeof(PY_LONG_LONG)) { - switch (Py_SIZE(x)) { - case 0: return 0; - case 1: return +(PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; - case -1: return -(PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; - } + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (size_t) 0; + case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, +digits[0]) + case -2: + if (8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { + return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { + return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { + return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { + return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) { + return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) { + return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; } #endif + if (sizeof(size_t) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x)) + } else if (sizeof(size_t) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x)) + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + size_t val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } #endif - return (PY_LONG_LONG)PyLong_AsLongLong(x); + return (size_t) -1; } } else { - PY_LONG_LONG val; - PyObject *tmp = __Pyx_PyNumber_Int(x); - if (!tmp) return (PY_LONG_LONG)-1; - val = __Pyx_PyInt_AsLongLong(tmp); + size_t val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (size_t) -1; + val = __Pyx_PyInt_As_size_t(tmp); Py_DECREF(tmp); return val; } -} - -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -#if CYTHON_USE_PYLONG_INTERNALS -#include "longintrepr.h" -#endif -#endif -static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) { - const signed long neg_one = (signed long)-1, const_zero = 0; +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to size_t"); + return (size_t) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to size_t"); + return (size_t) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { + const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to signed long"); - return (signed long)-1; + if (sizeof(int) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; } - return (signed long)val; } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 #if CYTHON_USE_PYLONG_INTERNALS - if (sizeof(digit) <= sizeof(signed long)) { - switch (Py_SIZE(x)) { - case 0: return 0; - case 1: return (signed long) ((PyLongObject*)x)->ob_digit[0]; - } + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; } #endif -#endif +#if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to signed long"); - return (signed long)-1; + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(int) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) } - return (signed long)PyLong_AsUnsignedLong(x); } else { -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 #if CYTHON_USE_PYLONG_INTERNALS - if (sizeof(digit) <= sizeof(signed long)) { - switch (Py_SIZE(x)) { - case 0: return 0; - case 1: return +(signed long) ((PyLongObject*)x)->ob_digit[0]; - case -1: return -(signed long) ((PyLongObject*)x)->ob_digit[0]; - } + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) + case -2: + if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; } #endif + if (sizeof(int) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + int val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } #endif - return (signed long)PyLong_AsLong(x); + return (int) -1; } } else { - signed long val; - PyObject *tmp = __Pyx_PyNumber_Int(x); - if (!tmp) return (signed long)-1; - val = __Pyx_PyInt_AsSignedLong(tmp); + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); Py_DECREF(tmp); return val; } -} - -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -#if CYTHON_USE_PYLONG_INTERNALS -#include "longintrepr.h" -#endif -#endif -static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) { - const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0; +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { + const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to signed PY_LONG_LONG"); - return (signed PY_LONG_LONG)-1; + if (sizeof(long) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; } - return (signed PY_LONG_LONG)val; } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 #if CYTHON_USE_PYLONG_INTERNALS - if (sizeof(digit) <= sizeof(signed PY_LONG_LONG)) { - switch (Py_SIZE(x)) { - case 0: return 0; - case 1: return (signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; - } + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; } #endif -#endif +#if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to signed PY_LONG_LONG"); - return (signed PY_LONG_LONG)-1; + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(long) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) } - return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); } else { -#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 #if CYTHON_USE_PYLONG_INTERNALS - if (sizeof(digit) <= sizeof(signed PY_LONG_LONG)) { - switch (Py_SIZE(x)) { - case 0: return 0; - case 1: return +(signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; - case -1: return -(signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; - } + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) + case -2: + if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; } #endif + if (sizeof(long) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + long val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } #endif - return (signed PY_LONG_LONG)PyLong_AsLongLong(x); + return (long) -1; } } else { - signed PY_LONG_LONG val; - PyObject *tmp = __Pyx_PyNumber_Int(x); - if (!tmp) return (signed PY_LONG_LONG)-1; - val = __Pyx_PyInt_AsSignedLongLong(tmp); + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); Py_DECREF(tmp); return val; } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* FetchCommonType */ + static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* fake_module; + PyTypeObject* cached_type = NULL; + fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); + if (!fake_module) return NULL; + Py_INCREF(fake_module); + cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); + if (cached_type) { + if (!PyType_Check((PyObject*)cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", + type->tp_name); + goto bad; + } + if (cached_type->tp_basicsize != type->tp_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + type->tp_name); + goto bad; + } + } else { + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; + } +done: + Py_DECREF(fake_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; } -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; -#if CYTHON_COMPILING_IN_CPYTHON - PyThreadState *tstate = PyThreadState_GET(); - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = *type; - tstate->exc_value = *value; - tstate->exc_traceback = *tb; -#else - PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); - PyErr_SetExcInfo(*type, *value, *tb); -#endif - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} - -static PyObject *__Pyx_Generator_Next(PyObject *self); -static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value); -static PyObject *__Pyx_Generator_Close(PyObject *self); -static PyObject *__Pyx_Generator_Throw(PyObject *gen, PyObject *args); -static PyTypeObject *__pyx_GeneratorType = 0; -#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType) -#define __Pyx_Generator_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) +/* CoroutineBase */ + #include +#include +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); +static PyObject *__Pyx_Coroutine_Close(PyObject *self); +static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); +#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) #if 1 || PY_VERSION_HEX < 0x030300B0 static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { PyObject *et, *ev, *tb; PyObject *value = NULL; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign __Pyx_ErrFetch(&et, &ev, &tb); if (!et) { Py_XDECREF(tb); @@ -17092,25 +18676,50 @@ static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { *pvalue = Py_None; return 0; } - if (unlikely(et != PyExc_StopIteration) && - unlikely(!PyErr_GivenExceptionMatches(et, PyExc_StopIteration))) { - __Pyx_ErrRestore(et, ev, tb); - return -1; - } if (likely(et == PyExc_StopIteration)) { - if (likely(!ev) || !PyObject_IsInstance(ev, PyExc_StopIteration)) { +#if PY_VERSION_HEX >= 0x030300A0 + if (ev && Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) { + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + Py_DECREF(ev); + Py_XDECREF(tb); + Py_DECREF(et); + *pvalue = value; + return 0; + } +#endif + if (!ev || !PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { if (!ev) { Py_INCREF(Py_None); ev = Py_None; + } else if (PyTuple_Check(ev)) { + if (PyTuple_GET_SIZE(ev) >= 1) { + PyObject *value; +#if CYTHON_COMPILING_IN_CPYTHON + value = PySequence_ITEM(ev, 0); +#else + value = PyTuple_GET_ITEM(ev, 0); + Py_INCREF(value); +#endif + Py_DECREF(ev); + ev = value; + } else { + Py_INCREF(Py_None); + Py_DECREF(ev); + ev = Py_None; + } } Py_XDECREF(tb); Py_DECREF(et); *pvalue = ev; return 0; } + } else if (!PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { + __Pyx_ErrRestore(et, ev, tb); + return -1; } PyErr_NormalizeException(&et, &ev, &tb); - if (unlikely(!PyObject_IsInstance(ev, PyExc_StopIteration))) { + if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { __Pyx_ErrRestore(et, ev, tb); return -1; } @@ -17122,10 +18731,10 @@ static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { Py_DECREF(ev); #else { - PyObject* args = PyObject_GetAttr(ev, __pyx_n_s__args); + PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args); Py_DECREF(ev); if (likely(args)) { - value = PyObject_GetItem(args, 0); + value = PySequence_GetItem(args, 0); Py_DECREF(args); } if (unlikely(!value)) { @@ -17140,7 +18749,7 @@ static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { } #endif static CYTHON_INLINE -void __Pyx_Generator_ExceptionClear(__pyx_GeneratorObject *self) { +void __Pyx_Coroutine_ExceptionClear(__pyx_CoroutineObject *self) { PyObject *exc_type = self->exc_type; PyObject *exc_value = self->exc_value; PyObject *exc_traceback = self->exc_traceback; @@ -17152,7 +18761,7 @@ void __Pyx_Generator_ExceptionClear(__pyx_GeneratorObject *self) { Py_XDECREF(exc_traceback); } static CYTHON_INLINE -int __Pyx_Generator_CheckRunning(__pyx_GeneratorObject *gen) { +int __Pyx_Coroutine_CheckRunning(__pyx_CoroutineObject *gen) { if (unlikely(gen->is_running)) { PyErr_SetString(PyExc_ValueError, "generator already executing"); @@ -17161,8 +18770,9 @@ int __Pyx_Generator_CheckRunning(__pyx_GeneratorObject *gen) { return 0; } static CYTHON_INLINE -PyObject *__Pyx_Generator_SendEx(__pyx_GeneratorObject *self, PyObject *value) { +PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value) { PyObject *retval; + __Pyx_PyThreadState_declare assert(!self->is_running); if (unlikely(self->resume_label == 0)) { if (unlikely(value && value != Py_None)) { @@ -17176,24 +18786,22 @@ PyObject *__Pyx_Generator_SendEx(__pyx_GeneratorObject *self, PyObject *value) { PyErr_SetNone(PyExc_StopIteration); return NULL; } + __Pyx_PyThreadState_assign if (value) { #if CYTHON_COMPILING_IN_PYPY #else - /* Generators always return to their most recent caller, not - * necessarily their creator. */ if (self->exc_traceback) { - PyThreadState *tstate = PyThreadState_GET(); PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; PyFrameObject *f = tb->tb_frame; - Py_XINCREF(tstate->frame); + Py_XINCREF(__pyx_tstate->frame); assert(f->f_back == NULL); - f->f_back = tstate->frame; + f->f_back = __pyx_tstate->frame; } #endif __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value, &self->exc_traceback); } else { - __Pyx_Generator_ExceptionClear(self); + __Pyx_Coroutine_ExceptionClear(self); } self->is_running = 1; retval = self->body((PyObject *) self, value); @@ -17203,9 +18811,6 @@ PyObject *__Pyx_Generator_SendEx(__pyx_GeneratorObject *self, PyObject *value) { &self->exc_traceback); #if CYTHON_COMPILING_IN_PYPY #else - /* Don't keep the reference to f_back any longer than necessary. It - * may keep a chain of frames alive or it could create a reference - * cycle. */ if (self->exc_traceback) { PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; PyFrameObject *f = tb->tb_frame; @@ -17213,72 +18818,83 @@ PyObject *__Pyx_Generator_SendEx(__pyx_GeneratorObject *self, PyObject *value) { } #endif } else { - __Pyx_Generator_ExceptionClear(self); + __Pyx_Coroutine_ExceptionClear(self); + } + return retval; +} +static CYTHON_INLINE +PyObject *__Pyx_Coroutine_MethodReturn(PyObject *retval) { + if (unlikely(!retval && !PyErr_Occurred())) { + PyErr_SetNone(PyExc_StopIteration); } return retval; } static CYTHON_INLINE -PyObject *__Pyx_Generator_FinishDelegation(__pyx_GeneratorObject *gen) { +PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { PyObject *ret; PyObject *val = NULL; - __Pyx_Generator_Undelegate(gen); + __Pyx_Coroutine_Undelegate(gen); __Pyx_PyGen_FetchStopIterationValue(&val); - ret = __Pyx_Generator_SendEx(gen, val); + ret = __Pyx_Coroutine_SendEx(gen, val); Py_XDECREF(val); return ret; } -static PyObject *__Pyx_Generator_Next(PyObject *self) { - __pyx_GeneratorObject *gen = (__pyx_GeneratorObject*) self; - PyObject *yf = gen->yieldfrom; - if (unlikely(__Pyx_Generator_CheckRunning(gen))) - return NULL; - if (yf) { - PyObject *ret; - gen->is_running = 1; - ret = Py_TYPE(yf)->tp_iternext(yf); - gen->is_running = 0; - if (likely(ret)) { - return ret; - } - return __Pyx_Generator_FinishDelegation(gen); - } - return __Pyx_Generator_SendEx(gen, Py_None); -} -static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value) { - __pyx_GeneratorObject *gen = (__pyx_GeneratorObject*) self; +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { + PyObject *retval; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; PyObject *yf = gen->yieldfrom; - if (unlikely(__Pyx_Generator_CheckRunning(gen))) + if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) return NULL; if (yf) { PyObject *ret; gen->is_running = 1; + #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { - ret = __Pyx_Generator_Send(yf, value); - } else { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_CheckExact(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + { if (value == Py_None) - ret = PyIter_Next(yf); + ret = Py_TYPE(yf)->tp_iternext(yf); else - ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s__send, value); + ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value); } gen->is_running = 0; if (likely(ret)) { return ret; } - return __Pyx_Generator_FinishDelegation(gen); + retval = __Pyx_Coroutine_FinishDelegation(gen); + } else { + retval = __Pyx_Coroutine_SendEx(gen, value); } - return __Pyx_Generator_SendEx(gen, value); + return __Pyx_Coroutine_MethodReturn(retval); } -static int __Pyx_Generator_CloseIter(__pyx_GeneratorObject *gen, PyObject *yf) { +static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { PyObject *retval = NULL; int err = 0; + #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { - retval = __Pyx_Generator_Close(yf); + retval = __Pyx_Coroutine_Close(yf); if (!retval) return -1; - } else { + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_CheckExact(yf)) { + retval = __Pyx_Coroutine_Close(yf); + if (!retval) + return -1; + } else + #endif + { PyObject *meth; gen->is_running = 1; - meth = PyObject_GetAttr(yf, __pyx_n_s__close); + meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_close); if (unlikely(!meth)) { if (!PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_WriteUnraisable(yf); @@ -17295,26 +18911,39 @@ static int __Pyx_Generator_CloseIter(__pyx_GeneratorObject *gen, PyObject *yf) { Py_XDECREF(retval); return err; } -static PyObject *__Pyx_Generator_Close(PyObject *self) { - __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; +static PyObject *__Pyx_Generator_Next(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *yf = gen->yieldfrom; + if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) + return NULL; + if (yf) { + PyObject *ret; + gen->is_running = 1; + ret = Py_TYPE(yf)->tp_iternext(yf); + gen->is_running = 0; + if (likely(ret)) { + return ret; + } + return __Pyx_Coroutine_FinishDelegation(gen); + } + return __Pyx_Coroutine_SendEx(gen, Py_None); +} +static PyObject *__Pyx_Coroutine_Close(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; PyObject *retval, *raised_exception; PyObject *yf = gen->yieldfrom; int err = 0; - if (unlikely(__Pyx_Generator_CheckRunning(gen))) + if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) return NULL; if (yf) { Py_INCREF(yf); - err = __Pyx_Generator_CloseIter(gen, yf); - __Pyx_Generator_Undelegate(gen); + err = __Pyx_Coroutine_CloseIter(gen, yf); + __Pyx_Coroutine_Undelegate(gen); Py_DECREF(yf); } if (err == 0) -#if PY_VERSION_HEX < 0x02050000 - PyErr_SetNone(PyExc_StopIteration); -#else PyErr_SetNone(PyExc_GeneratorExit); -#endif - retval = __Pyx_Generator_SendEx(gen, NULL); + retval = __Pyx_Coroutine_SendEx(gen, NULL); if (retval) { Py_DECREF(retval); PyErr_SetString(PyExc_RuntimeError, @@ -17324,46 +18953,50 @@ static PyObject *__Pyx_Generator_Close(PyObject *self) { raised_exception = PyErr_Occurred(); if (!raised_exception || raised_exception == PyExc_StopIteration -#if PY_VERSION_HEX >= 0x02050000 || raised_exception == PyExc_GeneratorExit || PyErr_GivenExceptionMatches(raised_exception, PyExc_GeneratorExit) -#endif || PyErr_GivenExceptionMatches(raised_exception, PyExc_StopIteration)) { - if (raised_exception) PyErr_Clear(); /* ignore these errors */ + if (raised_exception) PyErr_Clear(); Py_INCREF(Py_None); return Py_None; } return NULL; } -static PyObject *__Pyx_Generator_Throw(PyObject *self, PyObject *args) { - __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; +static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; PyObject *typ; PyObject *tb = NULL; PyObject *val = NULL; PyObject *yf = gen->yieldfrom; if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb)) return NULL; - if (unlikely(__Pyx_Generator_CheckRunning(gen))) + if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) return NULL; if (yf) { PyObject *ret; Py_INCREF(yf); -#if PY_VERSION_HEX >= 0x02050000 if (PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit)) { - int err = __Pyx_Generator_CloseIter(gen, yf); + int err = __Pyx_Coroutine_CloseIter(gen, yf); Py_DECREF(yf); - __Pyx_Generator_Undelegate(gen); + __Pyx_Coroutine_Undelegate(gen); if (err < 0) - return __Pyx_Generator_SendEx(gen, NULL); + return __Pyx_Coroutine_MethodReturn(__Pyx_Coroutine_SendEx(gen, NULL)); goto throw_here; } -#endif gen->is_running = 1; + #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { - ret = __Pyx_Generator_Throw(yf, args); - } else { - PyObject *meth = PyObject_GetAttr(yf, __pyx_n_s__throw); + ret = __Pyx_Coroutine_Throw(yf, args); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_CheckExact(yf)) { + ret = __Pyx_Coroutine_Throw(yf, args); + } else + #endif + { + PyObject *meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_throw); if (unlikely(!meth)) { Py_DECREF(yf); if (!PyErr_ExceptionMatches(PyExc_AttributeError)) { @@ -17371,7 +19004,7 @@ static PyObject *__Pyx_Generator_Throw(PyObject *self, PyObject *args) { return NULL; } PyErr_Clear(); - __Pyx_Generator_Undelegate(gen); + __Pyx_Coroutine_Undelegate(gen); gen->is_running = 0; goto throw_here; } @@ -17381,16 +19014,16 @@ static PyObject *__Pyx_Generator_Throw(PyObject *self, PyObject *args) { gen->is_running = 0; Py_DECREF(yf); if (!ret) { - ret = __Pyx_Generator_FinishDelegation(gen); + ret = __Pyx_Coroutine_FinishDelegation(gen); } - return ret; + return __Pyx_Coroutine_MethodReturn(ret); } throw_here: __Pyx_Raise(typ, val, tb, NULL); - return __Pyx_Generator_SendEx(gen, NULL); + return __Pyx_Coroutine_MethodReturn(__Pyx_Coroutine_SendEx(gen, NULL)); } -static int __Pyx_Generator_traverse(PyObject *self, visitproc visit, void *arg) { - __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; +static int __Pyx_Coroutine_traverse(PyObject *self, visitproc visit, void *arg) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; Py_VISIT(gen->closure); Py_VISIT(gen->classobj); Py_VISIT(gen->yieldfrom); @@ -17399,55 +19032,63 @@ static int __Pyx_Generator_traverse(PyObject *self, visitproc visit, void *arg) Py_VISIT(gen->exc_traceback); return 0; } -static int __Pyx_Generator_clear(PyObject *self) { - __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; +static int __Pyx_Coroutine_clear(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; Py_CLEAR(gen->closure); Py_CLEAR(gen->classobj); Py_CLEAR(gen->yieldfrom); Py_CLEAR(gen->exc_type); Py_CLEAR(gen->exc_value); Py_CLEAR(gen->exc_traceback); + Py_CLEAR(gen->gi_name); + Py_CLEAR(gen->gi_qualname); return 0; } -static void __Pyx_Generator_dealloc(PyObject *self) { - __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; +static void __Pyx_Coroutine_dealloc(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; PyObject_GC_UnTrack(gen); if (gen->gi_weakreflist != NULL) PyObject_ClearWeakRefs(self); - PyObject_GC_Track(self); if (gen->resume_label > 0) { + PyObject_GC_Track(self); +#if PY_VERSION_HEX >= 0x030400a1 + if (PyObject_CallFinalizerFromDealloc(self)) +#else Py_TYPE(gen)->tp_del(self); if (self->ob_refcnt > 0) - return; /* resurrected. :( */ +#endif + { + return; + } + PyObject_GC_UnTrack(self); } - PyObject_GC_UnTrack(self); - __Pyx_Generator_clear(self); + __Pyx_Coroutine_clear(self); PyObject_GC_Del(gen); } -static void __Pyx_Generator_del(PyObject *self) { +static void __Pyx_Coroutine_del(PyObject *self) { PyObject *res; PyObject *error_type, *error_value, *error_traceback; - __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + __Pyx_PyThreadState_declare if (gen->resume_label <= 0) return ; +#if PY_VERSION_HEX < 0x030400a1 assert(self->ob_refcnt == 0); self->ob_refcnt = 1; +#endif + __Pyx_PyThreadState_assign __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); - res = __Pyx_Generator_Close(self); + res = __Pyx_Coroutine_Close(self); if (res == NULL) PyErr_WriteUnraisable(self); else Py_DECREF(res); __Pyx_ErrRestore(error_type, error_value, error_traceback); - /* Undo the temporary resurrection; can't use DECREF here, it would - * cause a recursive call. - */ +#if PY_VERSION_HEX < 0x030400a1 assert(self->ob_refcnt > 0); - if (--self->ob_refcnt == 0) - return; /* this is the normal path out */ - /* close() resurrected it! Make it look like the original Py_DECREF - * never happened. - */ + if (--self->ob_refcnt == 0) { + return; + } { Py_ssize_t refcnt = self->ob_refcnt; _Py_NewReference(self); @@ -17456,98 +19097,68 @@ static void __Pyx_Generator_del(PyObject *self) { #if CYTHON_COMPILING_IN_CPYTHON assert(PyType_IS_GC(self->ob_type) && _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); - /* If Py_REF_DEBUG, _Py_NewReference bumped _Py_RefTotal, so - * we need to undo that. */ _Py_DEC_REFTOTAL; #endif - /* If Py_TRACE_REFS, _Py_NewReference re-added self to the object - * chain, so no more to do there. - * If COUNT_ALLOCS, the original decref bumped tp_frees, and - * _Py_NewReference bumped tp_allocs: both of those need to be - * undone. - */ #ifdef COUNT_ALLOCS --Py_TYPE(self)->tp_frees; --Py_TYPE(self)->tp_allocs; #endif -} -static PyMemberDef __pyx_Generator_memberlist[] = { - {(char *) "gi_running", -#if PY_VERSION_HEX >= 0x02060000 - T_BOOL, -#else - T_BYTE, -#endif - offsetof(__pyx_GeneratorObject, is_running), - READONLY, - NULL}, - {0, 0, 0, 0, 0} -}; -static PyMethodDef __pyx_Generator_methods[] = { - {__Pyx_NAMESTR("send"), (PyCFunction) __Pyx_Generator_Send, METH_O, 0}, - {__Pyx_NAMESTR("throw"), (PyCFunction) __Pyx_Generator_Throw, METH_VARARGS, 0}, - {__Pyx_NAMESTR("close"), (PyCFunction) __Pyx_Generator_Close, METH_NOARGS, 0}, - {0, 0, 0, 0} -}; -static PyTypeObject __pyx_GeneratorType_type = { - PyVarObject_HEAD_INIT(0, 0) - __Pyx_NAMESTR("generator"), /*tp_name*/ - sizeof(__pyx_GeneratorObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - (destructor) __Pyx_Generator_dealloc,/*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ -#if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ +#endif +} +static PyObject * +__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self) +{ + Py_INCREF(self->gi_name); + return self->gi_name; +} +static int +__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value) +{ + PyObject *tmp; +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) { #else - 0, /*reserved*/ + if (unlikely(value == NULL || !PyString_Check(value))) { #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags*/ - 0, /*tp_doc*/ - (traverseproc) __Pyx_Generator_traverse, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - offsetof(__pyx_GeneratorObject, gi_weakreflist), /* tp_weaklistoffse */ - 0, /*tp_iter*/ - (iternextfunc) __Pyx_Generator_Next, /*tp_iternext*/ - __pyx_Generator_methods, /*tp_methods*/ - __pyx_Generator_memberlist, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - 0, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - __Pyx_Generator_del, /*tp_del*/ -#if PY_VERSION_HEX >= 0x02060000 - 0, /*tp_version_tag*/ + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + tmp = self->gi_name; + Py_INCREF(value); + self->gi_name = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self) +{ + Py_INCREF(self->gi_qualname); + return self->gi_qualname; +} +static int +__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value) +{ + PyObject *tmp; +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) { +#else + if (unlikely(value == NULL || !PyString_Check(value))) { #endif -}; -static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body, - PyObject *closure) { - __pyx_GeneratorObject *gen = - PyObject_GC_New(__pyx_GeneratorObject, &__pyx_GeneratorType_type); + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + tmp = self->gi_qualname; + Py_INCREF(value); + self->gi_qualname = value; + Py_XDECREF(tmp); + return 0; +} +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); if (gen == NULL) return NULL; gen->body = body; @@ -17561,20 +19172,201 @@ static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body, gen->exc_value = NULL; gen->exc_traceback = NULL; gen->gi_weakreflist = NULL; + Py_XINCREF(qualname); + gen->gi_qualname = qualname; + Py_XINCREF(name); + gen->gi_name = name; + Py_XINCREF(module_name); + gen->gi_modulename = module_name; PyObject_GC_Track(gen); return gen; } + +/* PatchModuleWithCoroutine */ + static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + int result; + PyObject *globals, *result_obj; + globals = PyDict_New(); if (unlikely(!globals)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_coroutine_type", + #ifdef __Pyx_Coroutine_USED + (PyObject*)__pyx_CoroutineType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + result = PyDict_SetItemString(globals, "_cython_generator_type", + #ifdef __Pyx_Generator_USED + (PyObject*)__pyx_GeneratorType); + #else + Py_None); + #endif + if (unlikely(result < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore; + if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore; + result_obj = PyRun_String(py_code, Py_file_input, globals, globals); + if (unlikely(!result_obj)) goto ignore; + Py_DECREF(result_obj); + Py_DECREF(globals); + return module; +ignore: + Py_XDECREF(globals); + PyErr_WriteUnraisable(module); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) { + Py_DECREF(module); + module = NULL; + } +#else + py_code++; +#endif + return module; +} + +/* PatchGeneratorABC */ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) +static PyObject* __Pyx_patch_abc_module(PyObject *module); +static PyObject* __Pyx_patch_abc_module(PyObject *module) { + module = __Pyx_Coroutine_patch_module( + module, "" +"if _cython_generator_type is not None:\n" +" try: Generator = _module.Generator\n" +" except AttributeError: pass\n" +" else: Generator.register(_cython_generator_type)\n" +"if _cython_coroutine_type is not None:\n" +" try: Coroutine = _module.Coroutine\n" +" except AttributeError: pass\n" +" else: Coroutine.register(_cython_coroutine_type)\n" + ); + return module; +} +#endif +static int __Pyx_patch_abc(void) { +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + static int abc_patched = 0; + if (!abc_patched) { + PyObject *module; + module = PyImport_ImportModule((PY_VERSION_HEX >= 0x03030000) ? "collections.abc" : "collections"); + if (!module) { + PyErr_WriteUnraisable(NULL); + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, + ((PY_VERSION_HEX >= 0x03030000) ? + "Cython module failed to register with collections.abc module" : + "Cython module failed to register with collections module"), 1) < 0)) { + return -1; + } + } else { + module = __Pyx_patch_abc_module(module); + abc_patched = 1; + if (unlikely(!module)) + return -1; + Py_DECREF(module); + } + module = PyImport_ImportModule("backports_abc"); + if (module) { + module = __Pyx_patch_abc_module(module); + Py_XDECREF(module); + } + if (!module) { + PyErr_Clear(); + } + } +#else + if (0) __Pyx_Coroutine_patch_module(NULL, NULL); +#endif + return 0; +} + +/* Generator */ + static PyMethodDef __pyx_Generator_methods[] = { + {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, + (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, + (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_Coroutine_Close, METH_NOARGS, + (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")}, + {0, 0, 0, 0} +}; +static PyMemberDef __pyx_Generator_memberlist[] = { + {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, + {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, + (char*) PyDoc_STR("object being iterated by 'yield from', or None")}, + {0, 0, 0, 0, 0} +}; +static PyGetSetDef __pyx_Generator_getsets[] = { + {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, + (char*) PyDoc_STR("name of the generator"), 0}, + {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, + (char*) PyDoc_STR("qualified name of the generator"), 0}, + {0, 0, 0, 0, 0} +}; +static PyTypeObject __pyx_GeneratorType_type = { + PyVarObject_HEAD_INIT(0, 0) + "generator", + sizeof(__pyx_CoroutineObject), + 0, + (destructor) __Pyx_Coroutine_dealloc, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, + 0, + (traverseproc) __Pyx_Coroutine_traverse, + 0, + 0, + offsetof(__pyx_CoroutineObject, gi_weakreflist), + 0, + (iternextfunc) __Pyx_Generator_Next, + __pyx_Generator_methods, + __pyx_Generator_memberlist, + __pyx_Generator_getsets, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#else + __Pyx_Coroutine_del, +#endif + 0, +#if PY_VERSION_HEX >= 0x030400a1 + __Pyx_Coroutine_del, +#endif +}; static int __pyx_Generator_init(void) { __pyx_GeneratorType_type.tp_getattro = PyObject_GenericGetAttr; __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter; - if (PyType_Ready(&__pyx_GeneratorType_type)) { + __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type); + if (unlikely(!__pyx_GeneratorType)) { return -1; } - __pyx_GeneratorType = &__pyx_GeneratorType_type; return 0; } -static int __Pyx_check_binary_version(void) { +/* CheckBinaryVersion */ + static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); @@ -17584,33 +19376,13 @@ static int __Pyx_check_binary_version(void) { "compiletime version %s of module '%.100s' " "does not match runtime version %s", ctversion, __Pyx_MODULE_NAME, rtversion); - #if PY_VERSION_HEX < 0x02050000 - return PyErr_Warn(NULL, message); - #else return PyErr_WarnEx(NULL, message, 1); - #endif } return 0; } -static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0) - PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItemString(dict, "__pyx_vtable__", ob) < 0) - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -#ifndef __PYX_HAVE_RT_ImportModule +/* ModuleImport */ + #ifndef __PYX_HAVE_RT_ImportModule #define __PYX_HAVE_RT_ImportModule static PyObject *__Pyx_ImportModule(const char *name) { PyObject *py_name = 0; @@ -17627,7 +19399,8 @@ static PyObject *__Pyx_ImportModule(const char *name) { } #endif -#ifndef __PYX_HAVE_RT_ImportType +/* TypeImport */ + #ifndef __PYX_HAVE_RT_ImportType #define __PYX_HAVE_RT_ImportType static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict) @@ -17655,7 +19428,7 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class goto bad; if (!PyType_Check(result)) { PyErr_Format(PyExc_TypeError, - "%s.%s is not a type object", + "%.200s.%.200s is not a type object", module_name, class_name); goto bad; } @@ -17673,18 +19446,14 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class #endif if (!strict && (size_t)basicsize > size) { PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility", - module_name, class_name); - #if PY_VERSION_HEX < 0x02050000 - if (PyErr_Warn(NULL, warning) < 0) goto bad; - #else + "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", + module_name, class_name, basicsize, size); if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - #endif } else if ((size_t)basicsize != size) { PyErr_Format(PyExc_ValueError, - "%s.%s has the wrong size, try recompiling", - module_name, class_name); + "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", + module_name, class_name, basicsize, size); goto bad; } return (PyTypeObject *)result; @@ -17695,169 +19464,8 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class } #endif -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = (start + end) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -#include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, /*int argcount,*/ - 0, /*int kwonlyargcount,*/ - 0, /*int nlocals,*/ - 0, /*int stacksize,*/ - 0, /*int flags,*/ - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, /*int firstlineno,*/ - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_globals = 0; - PyFrameObject *py_frame = 0; - py_code = __pyx_find_code_object(c_line ? c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? c_line : py_line, py_code); - } - py_globals = PyModule_GetDict(__pyx_m); - if (!py_globals) goto bad; - py_frame = PyFrame_New( - PyThreadState_GET(), /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - py_globals, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - py_frame->f_lineno = py_line; - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { +/* InitStrings */ + static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { @@ -17867,7 +19475,7 @@ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } - #else /* Python 3+ has unicode identifiers */ + #else if (t->is_unicode | t->is_str) { if (t->intern) { *t->p = PyUnicode_InternFromString(t->s); @@ -17887,15 +19495,15 @@ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { return 0; } -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, strlen(c_str)); +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); } static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && @@ -17917,29 +19525,35 @@ static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_ } } } -#endif /*__PYX_DEFAULT_STRING_ENCODING_IS_ASCII*/ +#endif *length = PyBytes_GET_SIZE(defenc); return defenc_c; -#else /* PY_VERSION_HEX < 0x03030000 */ - if (PyUnicode_READY(o) == -1) return NULL; +#else + if (__Pyx_PyUnicode_READY(o) == -1) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (PyUnicode_IS_ASCII(o)) { - *length = PyUnicode_GET_DATA_SIZE(o); + *length = PyUnicode_GET_LENGTH(o); return PyUnicode_AsUTF8(o); } else { PyUnicode_AsASCIIString(o); return NULL; } -#else /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */ +#else return PyUnicode_AsUTF8AndSize(o, length); -#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */ -#endif /* PY_VERSION_HEX < 0x03030000 */ +#endif +#endif + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); } else -#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT */ +#endif { char* result; int r = PyBytes_AsStringAndSize(o, &result, length); - if (r < 0) { + if (unlikely(r < 0)) { return NULL; } else { return result; @@ -17951,7 +19565,7 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } -static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) { +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { PyNumberMethods *m; const char *name = NULL; PyObject *res = NULL; @@ -17960,7 +19574,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) { #else if (PyLong_Check(x)) #endif - return Py_INCREF(x), x; + return __Pyx_NewRef(x); m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { @@ -17984,7 +19598,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) { if (!PyLong_Check(res)) { #endif PyErr_Format(PyExc_TypeError, - "__%s__ returned non-%s (type %.200s)", + "__%.4s__ returned non-%.4s (type %.200s)", name, name, Py_TYPE(res)->tp_name); Py_DECREF(res); return NULL; @@ -17998,34 +19612,68 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) { } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; - PyObject* x = PyNumber_Index(b); + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(x); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)b)->ob_digit; + const Py_ssize_t size = Py_SIZE(b); + if (likely(__Pyx_sst_abs(size) <= 1)) { + ival = likely(size) ? digits[0] : 0; + if (size == -1) ival = -ival; + return ival; + } else { + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { -#if PY_VERSION_HEX < 0x02050000 - if (ival <= LONG_MAX) - return PyInt_FromLong((long)ival); - else { - unsigned char *bytes = (unsigned char *) &ival; - int one = 1; int little = (int)*(unsigned char*)&one; - return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0); - } -#else - return PyInt_FromSize_t(ival); -#endif -} -static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) { - unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x); - if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) { - if ((val != (unsigned PY_LONG_LONG)-1) || !PyErr_Occurred()) - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to size_t"); - return (size_t)-1; - } - return (size_t)val; + return PyInt_FromSize_t(ival); } diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 170c73ccd..9d88b1c3b 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -513,7 +513,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz *problem_i = transform_vars_permutation(*problem_i, P1, dimension); *problem_i = transform_vars_shift(*problem_i, y_i, 0); - /* *problem_i = transform_obj_norm_by_dim(*problem_i);*//* for the scalar product *//* Wassim: there is already a normalization by dimension*/ + /* *problem_i = transform_obj_norm_by_dim(*problem_i);*/ /* for the scalar product */ /* Wassim: there is already a normalization by dimension*/ coco_free_memory(P_Lambda); coco_free_memory(y_i); diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index db6f12590..a962a2bd0 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -183,7 +183,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: there is already a normalization by dimension*/ + /*problem = transform_obj_norm_by_dim(problem);*/ /* Wassim: there is already a normalization by dimension*/ problem = transform_obj_shift(problem, fopt); /* Manh: manually set xopt = rot1^T ones(dimension)/(2*scales) */ diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index ad33733ea..e7dbd8075 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -38,7 +38,7 @@ static double f_katsuura_raw(const double *x, const size_t number_of_variables) tmp += fabs(tmp2 * x[i] - coco_double_round(tmp2 * x[i])) / tmp2; } tmp = 1.0 + ((double) (long) i + 1) * tmp; - /*result *= tmp;*//* Wassim TODO: delete once consistency check passed*/ + /*result *= tmp;*/ /* Wassim TODO: delete once consistency check passed*/ result *= pow(tmp, 10. / pow((double) number_of_variables, 1.2)); } /*result = 10. / ((double) number_of_variables) / ((double) number_of_variables) @@ -193,7 +193,7 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); - /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: does not seem to be needed*/ + /*problem = transform_obj_norm_by_dim(problem);*/ /* Wassim: does not seem to be needed*/ problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); /*TODO: documentation, there is no fopt in the definition of this function*/ diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index 6c0ada1c3..5006a9457 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -397,7 +397,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat } /* f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); - printf("\n %f , x_opt[0]= %f\n", problem->best_value[0], problem->best_parameter[0]);*//* Wassim: for testing purposes, might end up being the one kept though*/ + printf("\n %f , x_opt[0]= %f\n", problem->best_value[0], problem->best_parameter[0]);*/ /* Wassim: for testing purposes, might end up being the one kept though*/ coco_problem_set_id(problem, problem_id_template, function, instance, dimension); diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index e36da6f4f..c955f6a32 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -190,7 +190,7 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: there is already a normalization by dimension*/ + /*problem = transform_obj_norm_by_dim(problem);*/ /* Wassim: there is already a normalization by dimension*/ problem = transform_obj_penalize(problem, penalty_factor / (double) dimension); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_schwefel_generalized.c b/code-experiments/src/f_schwefel_generalized.c index cd68c46cf..53f791c57 100644 --- a/code-experiments/src/f_schwefel_generalized.c +++ b/code-experiments/src/f_schwefel_generalized.c @@ -83,7 +83,7 @@ static coco_problem_t *f_schwefel_generalized_bbob_problem_allocate(const size_t double *xopt, fopt; coco_problem_t *problem = NULL; size_t i; - /*const double Schwefel_constant = 4.189828872724339;*//* Wassim: now inside the raw function*/ + /*const double Schwefel_constant = 4.189828872724339;*/ /* Wassim: now inside the raw function*/ double *tmp1 = coco_allocate_vector(dimension); double *tmp2 = coco_allocate_vector(dimension); @@ -110,7 +110,7 @@ static coco_problem_t *f_schwefel_generalized_bbob_problem_allocate(const size_t problem = transform_vars_z_hat(problem, xopt); problem = transform_vars_scale(problem, 2); problem = transform_vars_x_hat(problem, rseed); - /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: there is already a normalization by dimension*/ + /*problem = transform_obj_norm_by_dim(problem);*/ /* Wassim: there is already a normalization by dimension*/ /*problem = transform_obj_shift(problem, Schwefel_constant);*/ /* Wassim: now in the raw definition */ problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index 13c968831..41cb63169 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -34,7 +34,7 @@ static double f_sharp_ridge_raw(const double *x, const size_t number_of_variable return NAN; result = 0.0; - for (i = ceil(vars_40); i < number_of_variables; ++i) { + for (i = (size_t) ceil(vars_40); i < number_of_variables; ++i) { result += x[i] * x[i]; } result = alpha * sqrt(result / vars_40); diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index c6f2638c3..791b4583a 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -220,7 +220,7 @@ static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const s problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); - /*problem = transform_obj_norm_by_dim(problem);*//* Wassim: there is already a normalization by dimension*/ + /*problem = transform_obj_norm_by_dim(problem);*/ /* Wassim: there is already a normalization by dimension*/ problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); diff --git a/code-experiments/src/large_scale_transformations.c b/code-experiments/src/large_scale_transformations.c index 884e221ab..796d08558 100644 --- a/code-experiments/src/large_scale_transformations.c +++ b/code-experiments/src/large_scale_transformations.c @@ -143,7 +143,7 @@ static double **ls_copy_block_matrix(const double *const *B, const size_t dimens idx_blocksize = 0; current_blocksize = block_sizes[idx_blocksize]; next_bs_change = block_sizes[idx_blocksize]; - assert(nb_blocks != 0); /*tmp*//*to silence warning*/ + assert(nb_blocks != 0); /*tmp*/ /*to silence warning*/ for (i = 0; i < dimension; i++) { if (i >= next_bs_change) { idx_blocksize++; diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index 23e5b5b2f..4382d7eae 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -364,8 +364,8 @@ static void logger_bbob_finalize(const logger_bbob_data_t *logger){ (unsigned long) logger->number_of_evaluations); } /* log the final information of the run in the info file*/ - //fprintf(logger->index_file, ":%ld|%.1e", logger->number_of_evaluations, - // logger->best_fvalue - logger->optimal_fvalue); + /*fprintf(logger->index_file, ":%ld|%.1e", logger->number_of_evaluations, + logger->best_fvalue - logger->optimal_fvalue);*/ /* log the last evaluation (if not logged) in the *.tdata file*/ if (!logger->written_last_eval) { diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index f0ebcfc3e..cfc34bd5d 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -144,7 +144,7 @@ static double **coco_copy_block_matrix(const double *const *B, const size_t dime idx_blocksize = 0; current_blocksize = block_sizes[idx_blocksize]; next_bs_change = block_sizes[idx_blocksize]; - assert(nb_blocks != 0); /*tmp*//*to silence warning*/ + assert(nb_blocks != 0); /*tmp*/ /*to silence warning*/ for (i = 0; i < dimension; i++) { if (i >= next_bs_change) { idx_blocksize++; diff --git a/code-experiments/src/transform_vars_permblockdiag.c b/code-experiments/src/transform_vars_permblockdiag.c index 5bce31c85..e1327c1d3 100644 --- a/code-experiments/src/transform_vars_permblockdiag.c +++ b/code-experiments/src/transform_vars_permblockdiag.c @@ -6,7 +6,7 @@ #include "coco.h" #include "coco_problem.c" -//#include "large_scale_transformations.c" +/* #include "large_scale_transformations.c" */ #include "transform_vars_permutation_helpers.c" #include "transform_vars_blockrotation_helpers.c" From 59e651cd05d7114397581c99f998fdde03be2f7f Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 7 Dec 2016 18:53:10 +0100 Subject: [PATCH 307/446] added suite_largescale_get_instances_by_year and removed dimensions larger than 640 form the defaults large-scale suite dimensions, removed superfluous permutations in the gallagher functions and now only apply the rotation once to the local optima (still testing on x), minor fixes/improvements... --- .../build/python/example_experiment.py | 2 +- code-experiments/src/coco_suite.c | 2 + code-experiments/src/f_gallagher.c | 190 +++++++++--------- code-experiments/src/suite_largescale.c | 21 +- .../src/transform_vars_blockrotation.c | 10 +- .../transform_vars_gallagher_blockrotation.c | 122 +++++++++++ 6 files changed, 247 insertions(+), 100 deletions(-) create mode 100644 code-experiments/src/transform_vars_gallagher_blockrotation.c diff --git a/code-experiments/build/python/example_experiment.py b/code-experiments/build/python/example_experiment.py index 38f976a1e..6d7690667 100755 --- a/code-experiments/build/python/example_experiment.py +++ b/code-experiments/build/python/example_experiment.py @@ -345,7 +345,7 @@ def coco_optimize(solver, fun, max_evals, max_runs=1e9): ############################################################################## SOLVER = random_search # SOLVER = my_solver # SOLVER = fmin_slsqp # SOLVER = cma.fmin -suite_instance = "" # "year:2016" # incommented as it seems not to work with bbob-largescale +suite_instance = "year:2016" suite_options = "" # "dimensions: 2,3,5,10,20 " # if 40 is not desired observer_options = ObserverOptions({ # is (inherited from) a dictionary 'algorithm_info': "A SIMPLE RANDOM SEARCH ALGORITHM", # CHANGE/INCOMMENT THIS! diff --git a/code-experiments/src/coco_suite.c b/code-experiments/src/coco_suite.c index 442c9c0c2..905840d96 100644 --- a/code-experiments/src/coco_suite.c +++ b/code-experiments/src/coco_suite.c @@ -61,6 +61,8 @@ static const char *coco_suite_get_instances_by_year(const coco_suite_t *suite, c year_string = suite_bbob_get_instances_by_year(year); } else if (strcmp(suite->suite_name, "bbob-biobj") == 0) { year_string = suite_biobj_get_instances_by_year(year); + } else if (strcmp(suite->suite_name, "bbob-largescale") == 0) { + year_string = suite_largescale_get_instances_by_year(year); } else { coco_error("coco_suite_get_instances_by_year(): suite '%s' has no years defined", suite->suite_name); return NULL; diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 9d88b1c3b..37d39beff 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -6,6 +6,8 @@ #include #include +/*Wassim: timing TODO: remove*/ + #include "coco.h" #include "coco_problem.c" #include "coco_utilities.c" @@ -19,6 +21,7 @@ #include "transform_obj_norm_by_dim.c" #include "f_sphere.c" +#include "transform_vars_gallagher_blockrotation.c" /** * @brief A random permutation type for the Gallagher problem. * @@ -268,63 +271,17 @@ static coco_problem_t *f_gallagher_bbob_problem_allocate(const size_t function, -/* Functions used in/related to the large scale suite are below. Eventually either merge with above after the standard version is updated with the new approach or put what's below in a separate file*/ +/* TODO: Functions used in/related to the large scale suite are below. Eventually either merge with above after the standard version is updated with the new approach or put what's below in a separate file */ -/** - * @brief Data type for the versatile_data_t - */ -typedef struct { - size_t number_of_peaks; - coco_problem_t **sub_problems; -} f_gallagher_versatile_data_t; - -/** - * @brief allows to free the versatile_data part of the problem. - */ -static void f_gallagher_versatile_data_free(coco_problem_t *problem) { - size_t i; - f_gallagher_versatile_data_t *versatile_data = (f_gallagher_versatile_data_t *) problem->versatile_data; - /*free the problems one by one*/ - if (versatile_data->sub_problems != NULL) { - for (i = 0; i < versatile_data->number_of_peaks; i++) { - coco_problem_free(versatile_data->sub_problems[i]); - } - coco_free_memory(versatile_data->sub_problems); - } - coco_free_memory(versatile_data); - problem->versatile_data = NULL; - problem->problem_free_function = NULL; - coco_problem_free(problem); -} -/** - * @brief Implements the gallagher function subproblems without connections to any COCO structures. - * Wassim: core to differentiate it from raw for now - */ -/*static double f_gallagher_sub_core(const double *x, const size_t number_of_variables) { - double result, tmp; - size_t i; - - tmp = 0; - - for (i = 0; i < number_of_variables; i++) { - tmp += x[i] * x[i]; - } - - result = exp(- 1.0 / (2.0 * ((double)number_of_variables)) * tmp); - - return result; -}*/ /* Wassim: now uses f_sphere_raw, TODO: delete if maintained*/ - /** * @brief Uses the core function to evaluate the sub problem. */ -static void f_gallagher_sub_evaluate_core(coco_problem_t *problem, const double *x, double *y) { +static void f_gallagher_sub_evaluate_core(coco_problem_t *problem_i, const double *x, double *y) { - assert(problem->number_of_objectives == 1); - y[0] = f_sphere_raw(x, problem->number_of_variables); - /* y[0] = f_gallagher_sub_core(x, problem->number_of_variables); */ /* Wassim: the commented version is for the case where f_gallagher_sub_core is defined */ + assert(problem_i->number_of_objectives == 1); + y[0] = f_sphere_raw(x, problem_i->number_of_variables); /*assert(y[0] + 1e-13 >= problem->best_value[0]);*/ } @@ -338,8 +295,14 @@ static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_v f_gallagher_versatile_data_t *versatile_data_tmp; problem_i->versatile_data = (f_gallagher_versatile_data_t *) coco_allocate_memory(sizeof(f_gallagher_versatile_data_t)); versatile_data_tmp = ((f_gallagher_versatile_data_t *) problem_i->versatile_data); - versatile_data_tmp->number_of_peaks = 0;/* not needed by the sub-problem */ + /* the following are not needed in the sub-problems */ + versatile_data_tmp->number_of_peaks = 0; versatile_data_tmp->sub_problems = NULL; + versatile_data_tmp->rotated_x = NULL; + versatile_data_tmp->block_size_map = NULL; + versatile_data_tmp->first_non_zero_map = NULL; + versatile_data_tmp->block_sizes = NULL; + versatile_data_tmp->B = NULL; coco_problem_set_id(problem_i, "%s_d%04lu", "gallagher_sub", number_of_variables); @@ -353,25 +316,28 @@ static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_v /** * @brief Implements the gallagher function without connections to any COCO structures. * Wassim: core to not conflict with raw for now - * Wassim: TODO: compute the w_i here and make that the subproblems become simple sphere problems and use the f_sphere_raw */ -static double f_gallagher_core(const double *x, size_t number_of_variables, f_gallagher_versatile_data_t *f_gallagher_versatile_data) { +static double f_gallagher_core(const double *x, size_t number_of_variables, f_gallagher_versatile_data_t *versatile_data) { coco_problem_t *problem_i; double result = 0; double y, w_i; - size_t i; + size_t i,j; double maxf; + double *x_local; + x_local = coco_allocate_vector(number_of_variables); - - - for (i = 0; i < f_gallagher_versatile_data->number_of_peaks; i++) { - problem_i = f_gallagher_versatile_data->sub_problems[i]; - problem_i->evaluate_function(problem_i, x, &y); + + for (i = 0; i < versatile_data->number_of_peaks; i++) { + for (j = 0; j < number_of_variables; j++) { + x_local[j] = x[j];/*versatile_data->rotated_x[j];*/ + } + problem_i = versatile_data->sub_problems[i]; + problem_i->evaluate_function(problem_i, x_local, &y); if (i == 0) { w_i = 10; } else { - w_i = 1.1 + 8.0 * (((double) i + 1) - 2.0) / (((double)f_gallagher_versatile_data->number_of_peaks) - 2.0); + w_i = 1.1 + 8.0 * (((double) i + 1) - 2.0) / (((double)versatile_data->number_of_peaks) - 2.0); } y = w_i * exp(- 1.0 / (2.0 * ((double)number_of_variables)) * y);/* Wassim: problem_i->evaluate_function is the sphere on a transformed coordiante system with conditioning */ if ( i == 0 || maxf < y ) { @@ -379,7 +345,7 @@ static double f_gallagher_core(const double *x, size_t number_of_variables, f_ga } } result = 10.0 - maxf; - + coco_free_memory(x_local); return result; } @@ -390,6 +356,9 @@ static void f_gallagher_evaluate_core(coco_problem_t *problem, const double *x, assert(problem->number_of_objectives == 1); y[0] = f_gallagher_core(x, problem->number_of_variables, ((f_gallagher_versatile_data_t *) problem->versatile_data)); + if (! (y[0] + 1e-13 >= problem->best_value[0])) { + printf("\n x[0]= %f: %f < %f\n", x[0], y[0] + 1e-13, problem->best_value[0]); + } assert(y[0] + 1e-13 >= problem->best_value[0]); } @@ -397,17 +366,26 @@ static void f_gallagher_evaluate_core(coco_problem_t *problem, const double *x, * @brief Allocates the basic gallagher problem. */ static coco_problem_t *f_gallagher_problem_allocate(const size_t number_of_variables, size_t number_of_peaks) { - + + size_t peak_index; + f_gallagher_versatile_data_t *versatile_data; coco_problem_t *problem = coco_problem_allocate_from_scalars("gallagher function", f_gallagher_evaluate_core, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); - f_gallagher_versatile_data_t *versatile_data_tmp; problem->versatile_data = (f_gallagher_versatile_data_t *) coco_allocate_memory(sizeof(f_gallagher_versatile_data_t)); - versatile_data_tmp = (f_gallagher_versatile_data_t *)problem->versatile_data; - versatile_data_tmp->number_of_peaks = number_of_peaks; - versatile_data_tmp->sub_problems = (coco_problem_t **) coco_allocate_memory(number_of_peaks * sizeof(coco_problem_t *)); + versatile_data = (f_gallagher_versatile_data_t *)problem->versatile_data;/* shortcut */ + versatile_data->number_of_peaks = number_of_peaks; + versatile_data->sub_problems = (coco_problem_t **) coco_allocate_memory(number_of_peaks * sizeof(coco_problem_t *)); + for (peak_index = 0; peak_index < number_of_peaks; peak_index++) { + versatile_data->sub_problems[peak_index] = f_gallagher_sub_problem_allocate(number_of_variables); + } + versatile_data->rotated_x = coco_allocate_vector(number_of_variables); + versatile_data->block_size_map = coco_allocate_vector_size_t(number_of_variables); + versatile_data->first_non_zero_map = coco_allocate_vector_size_t(number_of_variables); + versatile_data->block_sizes = coco_allocate_vector_size_t(number_of_variables); coco_problem_set_id(problem, "%s_d%04lu", "gallagher", number_of_variables); - + problem->best_value[0] = 0; + /* Compute best solution */ /*f_gallagher_evaluate_core(problem, problem->best_parameter, problem->best_value);*/ return problem; @@ -418,20 +396,22 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz const size_t dimension, const size_t instance, const long rseed, - const size_t number_of_peaks, + size_t number_of_peaks, const char *problem_id_template, const char *problem_name_template) { - - size_t i; + + size_t i, j; int peak_index; - double fopt, *y_i; + double fopt, *y_i, *y_i_tmp; double penalty_factor = 1.0; coco_problem_t *problem = NULL, **problem_i; + f_gallagher_versatile_data_t *versatile_data; double **B; const double *const *B_copy; - size_t *P1, *P2; + /*size_t *P1, *P2;*/ size_t *block_sizes; size_t nb_blocks; + size_t idx_blocksize, current_blocksize, next_bs_change; /* needed for the rotated y_i*/ size_t swap_range; size_t nb_swaps; coco_random_state_t *rng = coco_random_new((uint32_t) rseed); @@ -443,7 +423,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz size_t *P_alpha_i, *P_Lambda; /* maxcondition satisfies the old code and the doc but seems wrong in that it is, with very high * probability, not the largest condition level!!! */ - + fopt = bbob2009_compute_fopt(function, instance); if (number_of_peaks == peaks_101) { maxcondition = sqrt(maxcondition); @@ -457,8 +437,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz number_of_peaks); } - block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); @@ -466,29 +446,55 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz B_copy = (const double *const *)B; coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); - P1 = coco_allocate_vector_size_t(dimension); + /*P1 = coco_allocate_vector_size_t(dimension); P2 = coco_allocate_vector_size_t(dimension); coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); - coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); + coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range);*/ problem = f_gallagher_problem_allocate(dimension, number_of_peaks); + versatile_data = (f_gallagher_versatile_data_t *) problem->versatile_data;/* shortcut */ + /* set versatile_data fields needed later in transform_vars_gallagher_blockrotation.c */ + /* TODO: block-rotation related fields should be set in a separate function, not the definition of the problem*/ + idx_blocksize = 0; + next_bs_change = block_sizes[idx_blocksize]; + for (i = 0; i < dimension; i++) { + if (i >= next_bs_change) { + idx_blocksize++; + next_bs_change += block_sizes[idx_blocksize]; + } + current_blocksize=block_sizes[idx_blocksize]; + versatile_data->block_size_map[i] = current_blocksize; + versatile_data->first_non_zero_map[i] = next_bs_change - current_blocksize; + } + versatile_data->B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); + versatile_data->B = coco_copy_block_matrix(B_copy, dimension, block_sizes, nb_blocks); + alpha_i_vals = coco_allocate_vector(number_of_peaks - 1); for (i = 0; i < number_of_peaks - 1; i++) { alpha_i_vals[i] = pow(maxcondition, (double) (i) / ((double) (number_of_peaks - 2))); } P_alpha_i = coco_allocate_vector_size_t(number_of_peaks - 1);/* random permutation of the alpha_i's to allow sampling without replacement*/ coco_compute_random_permutation(P_alpha_i, rseed + 4000000, number_of_peaks - 1); - + for (peak_index = 0; peak_index < number_of_peaks; peak_index++) { - /* allocate sub-problem */ - ((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index] = f_gallagher_sub_problem_allocate(dimension); - problem_i = &(((f_gallagher_versatile_data_t *) problem->versatile_data)->sub_problems[peak_index]); - /* compute transformation parameters*/ - /* y_i */ + problem_i = &(versatile_data->sub_problems[peak_index]); + /* compute transformation parameters: */ + /* y_i and block-rotate it once and for all */ y_i = coco_allocate_vector(dimension); for (i = 0; i < dimension; i++) { y_i[i] = b * coco_random_uniform(rng) - c; /* Wassim: not sure the random numbers are used in the same order as for the standard case*/ } + y_i_tmp = coco_allocate_vector(dimension); + /* block rotate y_i */ + /* TODO: there should be an independent code to apply the rotations and block-rotations, a helper_function maybe*/ + for (i = 0; i < dimension; ++i) { + y_i_tmp[i] = 0; + for (j = versatile_data->first_non_zero_map[i]; j < versatile_data->first_non_zero_map[i] + versatile_data->block_size_map[i]; ++j) { + y_i_tmp[i] += B_copy[i][j - versatile_data->first_non_zero_map[i]] * y_i[j]; + } + y_i[i] = y_i_tmp[i]; + } + if (peak_index == 0) { for (i = 0; i < dimension; i++){ y_i[i] *= a; @@ -502,21 +508,19 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz (*problem_i)->best_value[0] = 0;/* to prevent raising the assert */ /* P_Lambda the permutation */ P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the values in C_i */ - coco_compute_random_permutation(P_Lambda, rseed + 5000000 + peak_index, dimension);/* TODO: Discuss: this permutation renders irrelevant the parameterization of P1 and P2 since it takes over as a random uniform permutation. Consider leaving only this one and maybe making it a truncated uniform one*/ + coco_compute_random_permutation(P_Lambda, rseed + 5000000 + peak_index, dimension); /* apply var transformations to sub problem*/ - *problem_i = transform_vars_scale(*problem_i, sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ + *problem_i = transform_vars_scale(*problem_i, 1. / sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ *problem_i = transform_vars_conditioning(*problem_i, alpha_i); - *problem_i = transform_vars_permutation(*problem_i, P_Lambda, dimension);/* Wassim: only works because sphere like*/ - *problem_i = transform_vars_permutation(*problem_i, P2, dimension); - *problem_i = transform_vars_blockrotation(*problem_i, B_copy, dimension, block_sizes, nb_blocks); - *problem_i = transform_vars_permutation(*problem_i, P1, dimension); + /**problem_i = transform_vars_blockrotation(*problem_i, B_copy, dimension, block_sizes, nb_blocks);*/ + *problem_i = transform_vars_permutation(*problem_i, P_Lambda, dimension); *problem_i = transform_vars_shift(*problem_i, y_i, 0); - /* *problem_i = transform_obj_norm_by_dim(*problem_i);*/ /* for the scalar product */ /* Wassim: there is already a normalization by dimension*/ coco_free_memory(P_Lambda); coco_free_memory(y_i); + coco_free_memory(y_i_tmp); y_i = NULL; } f_gallagher_evaluate_core(problem, problem->best_parameter, problem->best_value); @@ -526,7 +530,9 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz problem = transform_obj_power(problem, 2.0); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); - + /* Wassim: TODO: re-activate*/ + /*problem = transform_vars_gallagher_blockrotation(problem);*//* block-matrix in versatile_data*/ + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); @@ -534,8 +540,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_random_free(rng); coco_free_block_matrix(B, dimension); - coco_free_memory(P1); - coco_free_memory(P2); + /*coco_free_memory(P1); + coco_free_memory(P2);*/ coco_free_memory(block_sizes); coco_free_memory(alpha_i_vals); coco_free_memory(P_alpha_i); diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index e96bfdcee..69d21d4fd 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -34,11 +34,26 @@ static coco_suite_t *coco_suite_allocate(const char *suite_name, static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; - const size_t dimensions[] = { 20, 40, 80, 160, 320, 640, 1280, 2560, 5120}; - suite = coco_suite_allocate("bbob-largescale", 24, 9, dimensions, "instances:1-15"); + const size_t dimensions[] = { 20, 40, 80, 160, 320, 640}; + suite = coco_suite_allocate("bbob-largescale", 24, 6, dimensions, "instances:1-15"); return suite; } +/** + * @brief Sets the instances associated with years for the bbob large-scale suite. + */ +static const char *suite_largescale_get_instances_by_year(const int year) { + if (year == 2016) { + return "1-15"; + } + else { + coco_error("suite_largescale_get_instances_by_year(): year %d not defined for suite_largescale", year); + return NULL; + } +} + + + /** * @brief Creates and returns a large-scale problem without needing the actual large-scale suite. */ @@ -91,8 +106,6 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem = f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 13) { - /*problem = f_sharp_ridge_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template);*/ problem = f_sharp_ridge_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 14) { diff --git a/code-experiments/src/transform_vars_blockrotation.c b/code-experiments/src/transform_vars_blockrotation.c index dc4e920e5..d20d14dc1 100644 --- a/code-experiments/src/transform_vars_blockrotation.c +++ b/code-experiments/src/transform_vars_blockrotation.c @@ -51,6 +51,7 @@ static void transform_vars_blockrotation_free(void *thing) { coco_free_memory(data->block_sizes); coco_free_memory(data->x); coco_free_memory(data->block_size_map); + coco_free_memory(data->first_non_zero_map); } @@ -62,7 +63,7 @@ static coco_problem_t *transform_vars_blockrotation(coco_problem_t *inner_proble coco_problem_t *problem; transform_vars_blockrotation_t *data; size_t entries_in_M, idx_blocksize, next_bs_change, current_blocksize; - int i; + size_t i; entries_in_M = 0; assert(number_of_variables > 0);/*tmp*/ for (i = 0; i < nb_blocks; i++) { @@ -83,11 +84,14 @@ static coco_problem_t *transform_vars_blockrotation(coco_problem_t *inner_proble idx_blocksize++; next_bs_change += block_sizes[idx_blocksize]; } - current_blocksize=block_sizes[idx_blocksize]; + current_blocksize = block_sizes[idx_blocksize]; data->block_size_map[i] = current_blocksize; data->first_non_zero_map[i] = next_bs_change - current_blocksize;/* next_bs_change serves also as a cumsum for blocksizes*/ } - + if (coco_problem_best_parameter_not_zero(inner_problem)) { + coco_debug("transform_vars_blockrotation(): 'best_parameter' not updated, set to NAN"); + coco_vector_set_to_nan(inner_problem->best_parameter, inner_problem->number_of_variables); + } problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_blockrotation_free, "transform_vars_blockrotation"); problem->evaluate_function = transform_vars_blockrotation_evaluate; return problem; diff --git a/code-experiments/src/transform_vars_gallagher_blockrotation.c b/code-experiments/src/transform_vars_gallagher_blockrotation.c new file mode 100644 index 000000000..392a8126e --- /dev/null +++ b/code-experiments/src/transform_vars_gallagher_blockrotation.c @@ -0,0 +1,122 @@ +/** + * @file transform_vars_gallagher_blockrotation.c + * @brief Implementation of performing a block-rotation transformation on decision values for the gallagher function. + * The block-rotation is applied only once per call and the result is stored such that the sub-problems can access it + * + */ + +#include + +#include "coco.h" +#include "coco_problem.c" +#include "transform_vars_blockrotation_helpers.c" +/* #include "coco_utilities.c" */ + + +/** + * @brief Data type for transform_vars_gallagher_blockrotation. + */ +typedef struct { + double *x; +} transform_vars_gallagher_blockrotation_t; + +/** + * @brief Frees the data object. + */ +static void transform_vars_gallagher_blockrotation_free(void *thing) { + transform_vars_gallagher_blockrotation_t *data = (transform_vars_gallagher_blockrotation_t *) thing; + coco_free_memory(data->x); +} + +/** + * @brief Data type in problem->versatile_data of f_gallagher.c + */ +typedef struct { + double *x; + size_t number_of_peaks; + coco_problem_t **sub_problems; + double *rotated_x; + size_t nb_blocks, *block_sizes, *block_size_map, *first_non_zero_map; + double **B; +} f_gallagher_versatile_data_t; + +/** + * @brief allows to free the gallagher_versatile_data part of the problem. + */ +static void f_gallagher_versatile_data_free(coco_problem_t *problem) { + size_t i; + f_gallagher_versatile_data_t *versatile_data = (f_gallagher_versatile_data_t *) problem->versatile_data; + if (versatile_data->sub_problems != NULL) { + for (i = 0; i < versatile_data->number_of_peaks; i++) { + coco_problem_free(versatile_data->sub_problems[i]); + } + coco_free_memory(versatile_data->sub_problems); + } + if (versatile_data->rotated_x != NULL) { + coco_free_memory(versatile_data->rotated_x); + } + if (versatile_data->block_sizes != NULL) { + coco_free_memory(versatile_data->block_sizes); + } + if (versatile_data->block_size_map != NULL) { + coco_free_memory(versatile_data->block_size_map); + } + if (versatile_data->first_non_zero_map != NULL) { + coco_free_memory(versatile_data->first_non_zero_map); + } + if (versatile_data->B != NULL) { + coco_free_block_matrix(versatile_data->B, problem->number_of_variables); + } + coco_free_memory(versatile_data); + problem->versatile_data = NULL; + problem->problem_free_function = NULL; + coco_problem_free(problem); +} + + +/** + * @brief Evaluates the transformation. + */ +static void transform_vars_gallagher_blockrotation_evaluate(coco_problem_t *problem, const double *x, double *y) { + size_t i, j; + transform_vars_gallagher_blockrotation_t *data; + coco_problem_t *inner_problem; + f_gallagher_versatile_data_t *versatile_data; + + data = (transform_vars_gallagher_blockrotation_t *) coco_problem_transformed_get_data(problem); + inner_problem = coco_problem_transformed_get_inner_problem(problem); + versatile_data = (f_gallagher_versatile_data_t *) problem->versatile_data; + + for (i = 0; i < inner_problem->number_of_variables; ++i) { + versatile_data->rotated_x[i] = 0; + for (j = versatile_data->first_non_zero_map[i]; j < versatile_data->first_non_zero_map[i] + versatile_data->block_size_map[i]; ++j) { + versatile_data->rotated_x[i] += versatile_data->B[i][j - versatile_data->first_non_zero_map[i]] * x[j]; + } + /*((f_gallagher_versatile_data_t *) problem->versatile_data)->rotated_x[i] = x[i];*/ + data->x[i] = x[i];/* to avoid pointer problems*/ + } + + coco_evaluate_function(inner_problem, data->x, y);/* does not modify the argument of the call since rotated_x will be used later in the sub_problems*/ + /* this function serves only to compute rotated_x on the problem level, not for each sub-problem + */ + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + + +static coco_problem_t *transform_vars_gallagher_blockrotation(coco_problem_t *inner_problem) { + coco_problem_t *problem; + transform_vars_gallagher_blockrotation_t *data; + + data = (transform_vars_gallagher_blockrotation_t *) coco_allocate_memory(sizeof(*data)); + data->x = coco_allocate_vector(inner_problem->number_of_variables); + + if (coco_problem_best_parameter_not_zero(inner_problem)) { + coco_debug("transform_vars_gallagher_blockrotation(): 'best_parameter' not updated, set to NAN"); + coco_vector_set_to_nan(inner_problem->best_parameter, inner_problem->number_of_variables); + } + problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_gallagher_blockrotation_free, "transform_vars_gallagher_blockrotation"); + problem->evaluate_function = transform_vars_gallagher_blockrotation_evaluate; + return problem; +} + + From 3aadc0fa16c11c99022733418c3aefa232218c63 Mon Sep 17 00:00:00 2001 From: oaelhara Date: Wed, 7 Dec 2016 19:06:08 +0100 Subject: [PATCH 308/446] regenated build/python/cython/interface.c to take into account the large-scale test-bed --- .../build/python/cython/interface.c | 2831 +++++++++++------ 1 file changed, 1906 insertions(+), 925 deletions(-) diff --git a/code-experiments/build/python/cython/interface.c b/code-experiments/build/python/cython/interface.c index 7624a4ef0..741bb66c9 100644 --- a/code-experiments/build/python/cython/interface.c +++ b/code-experiments/build/python/cython/interface.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.24.1 */ +/* Generated by Cython 0.25.1 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,7 +7,7 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) #error Cython requires Python 2.6+ or Python 3.2+. #else -#define CYTHON_ABI "0_24_1" +#define CYTHON_ABI "0_25_1" #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) @@ -29,6 +29,11 @@ #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif +#ifndef HAVE_LONG_LONG + #if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000) + #define HAVE_LONG_LONG + #endif +#endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif @@ -37,13 +42,110 @@ #endif #ifdef PYPY_VERSION #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 +#elif defined(PYSTON_VERSION) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 1 #define CYTHON_COMPILING_IN_CPYTHON 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 #else #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #if PY_VERSION_HEX < 0x02070000 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #elif !defined(CYTHON_USE_PYLONG_INTERNALS) + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif #endif -#if !defined(CYTHON_USE_PYLONG_INTERNALS) && CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000 - #define CYTHON_USE_PYLONG_INTERNALS 1 +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if CYTHON_USE_PYLONG_INTERNALS #include "longintrepr.h" @@ -79,24 +181,44 @@ #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif +#ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #define __Pyx_PyCFunctionFast _PyCFunctionFast +#endif +#if CYTHON_FAST_PYCCALL +#define __Pyx_PyFastCFunction_Check(func)\ + ((PyCFunction_Check(func) && METH_FASTCALL == PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))) +#else +#define __Pyx_PyFastCFunction_Check(func) 0 +#endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #else #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) #endif #if CYTHON_COMPILING_IN_PYPY @@ -121,6 +243,13 @@ #define PyObject_Free(p) PyMem_Free(p) #define PyObject_Realloc(p) PyMem_Realloc(p) #endif +#if CYTHON_COMPILING_IN_PYSTON + #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 @@ -149,6 +278,7 @@ #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type @@ -187,18 +317,20 @@ #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif -#if PY_VERSION_HEX >= 0x030500B1 -#define __Pyx_PyAsyncMethodsStruct PyAsyncMethods -#define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) -#elif CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; -} __Pyx_PyAsyncMethodsStruct; -#define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif #else -#define __Pyx_PyType_AsAsync(obj) NULL + #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef CYTHON_RESTRICT #if defined(__GNUC__) @@ -268,9 +400,9 @@ static CYTHON_INLINE float __PYX_NAN() { #define __PYX_HAVE__cocoex__interface #define __PYX_HAVE_API__cocoex__interface -#include "string.h" -#include "stdio.h" -#include "stdlib.h" +#include +#include +#include #include "numpy/arrayobject.h" #include "numpy/ufuncobject.h" #include "coco.h" @@ -379,7 +511,7 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_ASSUME_SAFE_MACROS #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) @@ -487,7 +619,7 @@ static int __pyx_clineno = 0; static const char * __pyx_cfilenm= __FILE__; static const char *__pyx_filename; -/* None.proto */ +/* Header.proto */ #if !defined(CYTHON_CCOMPLEX) #if defined(__cplusplus) #define CYTHON_CCOMPLEX 1 @@ -512,7 +644,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "cython/interface.pyx", - "__init__.pxd", + "numpy.pxd", "type.pxd", }; /* BufferFormatStructs.proto */ @@ -552,7 +684,7 @@ typedef struct { } __Pyx_BufFmt_Context; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "numpy.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -561,7 +693,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "numpy.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -570,7 +702,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":727 +/* "numpy.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -579,7 +711,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":728 +/* "numpy.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -588,7 +720,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "numpy.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -597,7 +729,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "numpy.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -606,7 +738,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":734 +/* "numpy.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -615,7 +747,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":735 +/* "numpy.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -624,7 +756,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":739 +/* "numpy.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -633,7 +765,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":740 +/* "numpy.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -642,7 +774,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "numpy.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -651,7 +783,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":750 +/* "numpy.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -660,7 +792,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "numpy.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -669,7 +801,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "numpy.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -678,7 +810,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":754 +/* "numpy.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -687,7 +819,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "numpy.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -696,7 +828,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":757 +/* "numpy.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -705,7 +837,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "numpy.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -714,7 +846,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "numpy.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -723,7 +855,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":761 +/* "numpy.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -732,7 +864,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "numpy.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -740,7 +872,7 @@ typedef npy_double __pyx_t_5numpy_double_t; * ctypedef npy_cfloat cfloat_t */ typedef npy_longdouble __pyx_t_5numpy_longdouble_t; -/* None.proto */ +/* Declarations.proto */ #if CYTHON_CCOMPLEX #ifdef __cplusplus typedef ::std::complex< float > __pyx_t_float_complex; @@ -750,8 +882,9 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t; #else typedef struct { float real, imag; } __pyx_t_float_complex; #endif +static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float); -/* None.proto */ +/* Declarations.proto */ #if CYTHON_CCOMPLEX #ifdef __cplusplus typedef ::std::complex< double > __pyx_t_double_complex; @@ -761,6 +894,7 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t; #else typedef struct { double real, imag; } __pyx_t_double_complex; #endif +static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double); /*--- Type declarations ---*/ @@ -769,7 +903,7 @@ struct __pyx_obj_6cocoex_9interface_Observer; struct __pyx_obj_6cocoex_9interface_Problem; struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "numpy.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -778,7 +912,7 @@ struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":765 +/* "numpy.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -787,7 +921,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "numpy.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -796,7 +930,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "numpy.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -1012,7 +1146,7 @@ static struct __pyx_vtabstruct_6cocoex_9interface_Problem *__pyx_vtabptr_6cocoex #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) /* PyObjectGetAttrStr.proto */ -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro)) @@ -1038,7 +1172,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg #endif /* PyThreadStateGet.proto */ -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; #define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET(); #else @@ -1047,7 +1181,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg #endif /* PyErrFetchRestore.proto */ -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_FAST_THREAD_STATE #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) @@ -1076,6 +1210,24 @@ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ const char* function_name); +/* PyCFunctionFastCall.proto */ +#if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); +#else +#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); +#else +#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) +#endif +#endif + /* PyObjectCallMethO.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); @@ -1095,7 +1247,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /* ListCompAppend.proto */ -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); @@ -1118,7 +1270,7 @@ static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* s } /* SaveResetException.proto */ -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) @@ -1129,7 +1281,7 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject #endif /* GetException.proto */ -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_FAST_THREAD_STATE #define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else @@ -1137,7 +1289,7 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); #endif /* ListAppend.proto */ -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); @@ -1160,7 +1312,7 @@ static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x); /* PyIntBinop.proto */ -#if CYTHON_COMPILING_IN_CPYTHON +#if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace); #else #define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\ @@ -1193,7 +1345,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, int wraparound, int boundscheck); /* PyErrExceptionMatches.proto */ -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_FAST_THREAD_STATE #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); #else @@ -1201,7 +1353,7 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta #endif /* SwapException.proto */ -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else @@ -1239,7 +1391,7 @@ static void __Pyx_WriteUnraisable(const char *name, int clineno, int full_traceback, int nogil); /* PyIntBinop.proto */ -#if CYTHON_COMPILING_IN_CPYTHON +#if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace); #else #define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\ @@ -1252,27 +1404,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( PyObject** py_start, PyObject** py_stop, PyObject** py_slice, int has_cstart, int has_cstop, int wraparound); -/* DictGetItem.proto */ -#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY -static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { - PyObject *value; - value = PyDict_GetItemWithError(d, key); - if (unlikely(!value)) { - if (!PyErr_Occurred()) { - PyObject* args = PyTuple_Pack(1, key); - if (likely(args)) - PyErr_SetObject(PyExc_KeyError, args); - Py_XDECREF(args); - } - return NULL; - } - Py_INCREF(value); - return value; -} -#else - #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) -#endif - /* RaiseTooManyValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); @@ -1346,7 +1477,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); -/* None.proto */ +/* RealImag.proto */ #if CYTHON_CCOMPLEX #ifdef __cplusplus #define __Pyx_CREAL(z) ((z).real()) @@ -1359,7 +1490,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); #define __Pyx_CREAL(z) ((z).real) #define __Pyx_CIMAG(z) ((z).imag) #endif -#if defined(__cplusplus) && CYTHON_CCOMPLEX && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103) +#if defined(__cplusplus) && CYTHON_CCOMPLEX\ + && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103) #define __Pyx_SET_CREAL(z,x) ((z).real(x)) #define __Pyx_SET_CIMAG(z,y) ((z).imag(y)) #else @@ -1367,88 +1499,85 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y) #endif -/* None.proto */ -static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float); - -/* None.proto */ +/* Arithmetic.proto */ #if CYTHON_CCOMPLEX - #define __Pyx_c_eqf(a, b) ((a)==(b)) - #define __Pyx_c_sumf(a, b) ((a)+(b)) - #define __Pyx_c_difff(a, b) ((a)-(b)) - #define __Pyx_c_prodf(a, b) ((a)*(b)) - #define __Pyx_c_quotf(a, b) ((a)/(b)) - #define __Pyx_c_negf(a) (-(a)) + #define __Pyx_c_eq_float(a, b) ((a)==(b)) + #define __Pyx_c_sum_float(a, b) ((a)+(b)) + #define __Pyx_c_diff_float(a, b) ((a)-(b)) + #define __Pyx_c_prod_float(a, b) ((a)*(b)) + #define __Pyx_c_quot_float(a, b) ((a)/(b)) + #define __Pyx_c_neg_float(a) (-(a)) #ifdef __cplusplus - #define __Pyx_c_is_zerof(z) ((z)==(float)0) - #define __Pyx_c_conjf(z) (::std::conj(z)) + #define __Pyx_c_is_zero_float(z) ((z)==(float)0) + #define __Pyx_c_conj_float(z) (::std::conj(z)) #if 1 - #define __Pyx_c_absf(z) (::std::abs(z)) - #define __Pyx_c_powf(a, b) (::std::pow(a, b)) + #define __Pyx_c_abs_float(z) (::std::abs(z)) + #define __Pyx_c_pow_float(a, b) (::std::pow(a, b)) #endif #else - #define __Pyx_c_is_zerof(z) ((z)==0) - #define __Pyx_c_conjf(z) (conjf(z)) + #define __Pyx_c_is_zero_float(z) ((z)==0) + #define __Pyx_c_conj_float(z) (conjf(z)) #if 1 - #define __Pyx_c_absf(z) (cabsf(z)) - #define __Pyx_c_powf(a, b) (cpowf(a, b)) + #define __Pyx_c_abs_float(z) (cabsf(z)) + #define __Pyx_c_pow_float(a, b) (cpowf(a, b)) #endif #endif #else - static CYTHON_INLINE int __Pyx_c_eqf(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sumf(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_difff(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prodf(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quotf(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_negf(__pyx_t_float_complex); - static CYTHON_INLINE int __Pyx_c_is_zerof(__pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conjf(__pyx_t_float_complex); + static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex); + static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex); #if 1 - static CYTHON_INLINE float __Pyx_c_absf(__pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_powf(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex); #endif #endif -/* None.proto */ -static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double); - -/* None.proto */ +/* Arithmetic.proto */ #if CYTHON_CCOMPLEX - #define __Pyx_c_eq(a, b) ((a)==(b)) - #define __Pyx_c_sum(a, b) ((a)+(b)) - #define __Pyx_c_diff(a, b) ((a)-(b)) - #define __Pyx_c_prod(a, b) ((a)*(b)) - #define __Pyx_c_quot(a, b) ((a)/(b)) - #define __Pyx_c_neg(a) (-(a)) + #define __Pyx_c_eq_double(a, b) ((a)==(b)) + #define __Pyx_c_sum_double(a, b) ((a)+(b)) + #define __Pyx_c_diff_double(a, b) ((a)-(b)) + #define __Pyx_c_prod_double(a, b) ((a)*(b)) + #define __Pyx_c_quot_double(a, b) ((a)/(b)) + #define __Pyx_c_neg_double(a) (-(a)) #ifdef __cplusplus - #define __Pyx_c_is_zero(z) ((z)==(double)0) - #define __Pyx_c_conj(z) (::std::conj(z)) + #define __Pyx_c_is_zero_double(z) ((z)==(double)0) + #define __Pyx_c_conj_double(z) (::std::conj(z)) #if 1 - #define __Pyx_c_abs(z) (::std::abs(z)) - #define __Pyx_c_pow(a, b) (::std::pow(a, b)) + #define __Pyx_c_abs_double(z) (::std::abs(z)) + #define __Pyx_c_pow_double(a, b) (::std::pow(a, b)) #endif #else - #define __Pyx_c_is_zero(z) ((z)==0) - #define __Pyx_c_conj(z) (conj(z)) + #define __Pyx_c_is_zero_double(z) ((z)==0) + #define __Pyx_c_conj_double(z) (conj(z)) #if 1 - #define __Pyx_c_abs(z) (cabs(z)) - #define __Pyx_c_pow(a, b) (cpow(a, b)) + #define __Pyx_c_abs_double(z) (cabs(z)) + #define __Pyx_c_pow_double(a, b) (cpow(a, b)) #endif #endif #else - static CYTHON_INLINE int __Pyx_c_eq(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg(__pyx_t_double_complex); - static CYTHON_INLINE int __Pyx_c_is_zero(__pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj(__pyx_t_double_complex); + static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex); + static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex); #if 1 - static CYTHON_INLINE double __Pyx_c_abs(__pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex); #endif #endif +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_ptrdiff_t(ptrdiff_t value); + /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value); @@ -1702,7 +1831,7 @@ static const char __pyx_k_function_dimension_instance[] = "function: {}, dimensi static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous"; static const char __pyx_k_update_current_observer_global[] = "_update_current_observer_global"; static const char __pyx_k_Suite_s_s_s_with_d_problem_s_in[] = "Suite(\"%s\", \"%s\", \"%s\") with %d problem%s in dimension%s %s"; -static const char __pyx_k_Users_hansen_git_coco_code_expe[] = "/Users/hansen/git/coco/code-experiments/build/python/cython/interface.pyx"; +static const char __pyx_k_Users_wassimaitelhara_svn_numbb[] = "/Users/wassimaitelhara/svn/numbbo_github/numbbo/code-experiments/build/python/cython/interface.pyx"; static const char __pyx_k_find_problem_ids_has_been_renam[] = "`find_problem_ids()` has been renamed to `ids()`"; static const char __pyx_k_get_problem_self_id_observer_No[] = "`get_problem(self, id, observer=None)` returns a `Problem` instance,\n by default unobserved, using `id: str` or index (where `id: int`) to\n identify the desired problem.\n\n All values between zero and `len(self) - 1` are valid index values::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> for index in range(len(suite)):\n ... problem = suite.get_problem(index)\n ... # work work work using problem\n ... problem.free()\n\n A shortcut for `suite.get_problem(index)` is `suite[index]`, they are\n synonym.\n\n Details:\n - Here an `index` takes values between 0 and `len(self) - 1` and can in\n principle be different from the problem index in the benchmark suite.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of `get_problem`. Otherwise Python\n might just silently die, which is e.g. a known issue of the \"bbob\"\n observer.\n\n See also `ids`.\n "; static const char __pyx_k_has_never_been_tested_incomment[] = "has never been tested, incomment this to start testing"; @@ -1747,7 +1876,7 @@ static PyObject *__pyx_kp_u_Suite_r_r_r; static PyObject *__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in; static PyObject *__pyx_n_s_TypeError; static PyObject *__pyx_kp_u_Unkown_benchmark_suite_name_s_Kn; -static PyObject *__pyx_kp_s_Users_hansen_git_coco_code_expe; +static PyObject *__pyx_kp_s_Users_wassimaitelhara_svn_numbb; static PyObject *__pyx_n_s_ValueError; static PyObject *__pyx_kp_u__11; static PyObject *__pyx_kp_u__12; @@ -1940,6 +2069,7 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Problem(PyTypeObject *t, PyObje static PyObject *__pyx_tp_new_6cocoex_9interface___pyx_scope_struct____iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_int_0; static PyObject *__pyx_int_1; +static PyObject *__pyx_int_15; static PyObject *__pyx_int_neg_1; static PyObject *__pyx_int_neg_2; static PyObject *__pyx_tuple_; @@ -2402,7 +2532,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); @@ -2537,7 +2667,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ if (likely(!__pyx_t_7)) { if (likely(PyList_CheckExact(__pyx_t_5))) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break; - #if CYTHON_COMPILING_IN_CPYTHON + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 212, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 212, __pyx_L1_error) @@ -2545,7 +2675,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break; - #if CYTHON_COMPILING_IN_CPYTHON + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 212, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 212, __pyx_L1_error) @@ -2626,7 +2756,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); @@ -2640,15 +2770,35 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 213, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL; - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_5}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_5}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL; + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_2, 0, 0, 0); @@ -2738,7 +2888,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_t_16 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 228, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_17)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); @@ -2752,15 +2902,35 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_5); } else { - __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 228, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_18); - __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL; - __Pyx_GIVEREF(__pyx_t_16); - PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_16); - __pyx_t_16 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_18, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 228, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_16}; + __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 228, __pyx_L9_except_error) + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_16}; + __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 228, __pyx_L9_except_error) + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + } else + #endif + { + __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 228, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_18); + __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL; + __Pyx_GIVEREF(__pyx_t_16); + PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_16); + __pyx_t_16 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_18, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 228, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; + } } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_Raise(__pyx_t_5, 0, 0, 0); @@ -2807,7 +2977,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); @@ -2821,15 +2991,35 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_4); } else { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 230, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_2}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_2}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + { + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_4, 0, 0, 0); @@ -2888,7 +3078,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); @@ -2901,15 +3091,33 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_old_level); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { - __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 234, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL; - __Pyx_INCREF(__pyx_v_old_level); - __Pyx_GIVEREF(__pyx_v_old_level); - PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_old_level); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_old_level}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_old_level}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else + #endif + { + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL; + __Pyx_INCREF(__pyx_v_old_level); + __Pyx_GIVEREF(__pyx_v_old_level); + PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_old_level); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -3142,7 +3350,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); @@ -3346,7 +3554,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); @@ -3535,7 +3743,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); @@ -3548,15 +3756,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_INCREF(__pyx_v_observer); - __Pyx_GIVEREF(__pyx_v_observer); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_observer}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_observer}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else + #endif + { + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 279, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; + __Pyx_INCREF(__pyx_v_observer); + __Pyx_GIVEREF(__pyx_v_observer); + PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -3686,7 +3912,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob size_t __pyx_t_13; struct __pyx_opt_args_6cocoex_9interface_Problem_init __pyx_t_14; PyObject *__pyx_t_15 = NULL; - Py_ssize_t __pyx_t_16; + int __pyx_t_16; PyObject *__pyx_t_17 = NULL; __Pyx_RefNannySetupContext("get_problem", 0); @@ -3806,7 +4032,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ids, __pyx_n_s_index); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 318, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); @@ -3819,15 +4045,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 318, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_9); } else { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 318, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL; - __Pyx_INCREF(__pyx_v_id); - __Pyx_GIVEREF(__pyx_v_id); - PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_id); - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 318, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_10)) { + PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_v_id}; + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 318, __pyx_L6_except_error) + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_GOTREF(__pyx_t_9); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { + PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_v_id}; + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 318, __pyx_L6_except_error) + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_GOTREF(__pyx_t_9); + } else + #endif + { + __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 318, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL; + __Pyx_INCREF(__pyx_v_id); + __Pyx_GIVEREF(__pyx_v_id); + PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_id); + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 318, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_9); @@ -3941,7 +4185,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); @@ -3954,15 +4198,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_observer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 321, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_8); } else { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 321, __pyx_L14_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_observer); - __Pyx_GIVEREF(__pyx_v_observer); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 321, __pyx_L14_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; + __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 321, __pyx_L14_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_8); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; + __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 321, __pyx_L14_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_8); + } else + #endif + { + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 321, __pyx_L14_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_observer); + __Pyx_GIVEREF(__pyx_v_observer); + PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 321, __pyx_L14_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_r = __pyx_t_8; @@ -4022,7 +4284,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; __pyx_t_16 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); @@ -4032,20 +4294,42 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_16 = 1; } } - __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 323, __pyx_L16_except_error) - __Pyx_GOTREF(__pyx_t_17); - if (__pyx_t_11) { - __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_11); __pyx_t_11 = NULL; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_10)) { + PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_12, __pyx_t_15}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L16_except_error) + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { + PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_12, __pyx_t_15}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L16_except_error) + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + } else + #endif + { + __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 323, __pyx_L16_except_error) + __Pyx_GOTREF(__pyx_t_17); + if (__pyx_t_11) { + __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_11); __pyx_t_11 = NULL; + } + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_16, __pyx_t_12); + __Pyx_GIVEREF(__pyx_t_15); + PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_t_15); + __pyx_t_12 = 0; + __pyx_t_15 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L16_except_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; } - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_16, __pyx_t_12); - __Pyx_GIVEREF(__pyx_t_15); - PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_t_15); - __pyx_t_12 = 0; - __pyx_t_15 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L16_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -4213,7 +4497,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim PyObject *__pyx_t_14 = NULL; PyObject *__pyx_t_15 = NULL; PyObject *__pyx_t_16 = NULL; - Py_ssize_t __pyx_t_17; + int __pyx_t_17; PyObject *__pyx_t_18 = NULL; __Pyx_RefNannySetupContext("get_problem_by_function_dimension_instance", 0); @@ -4340,7 +4624,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); @@ -4353,15 +4637,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 358, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); } else { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 358, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; - __Pyx_INCREF(__pyx_v_observer); - __Pyx_GIVEREF(__pyx_v_observer); - PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_observer); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 358, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_observer}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 358, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_observer}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 358, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else + #endif + { + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 358, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; + __Pyx_INCREF(__pyx_v_observer); + __Pyx_GIVEREF(__pyx_v_observer); + PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_observer); + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 358, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_r = __pyx_t_4; @@ -4420,7 +4722,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ __pyx_t_16 = NULL; __pyx_t_17 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_15))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_15))) { __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_16)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); @@ -4430,27 +4732,45 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_17 = 1; } } - __pyx_t_18 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 360, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_18); - if (__pyx_t_16) { - __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_16); __pyx_t_16 = NULL; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_15)) { + PyObject *__pyx_temp[4] = {__pyx_t_16, __pyx_v_function, __pyx_v_dimension, __pyx_v_instance}; + __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_GOTREF(__pyx_t_14); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) { + PyObject *__pyx_temp[4] = {__pyx_t_16, __pyx_v_function, __pyx_v_dimension, __pyx_v_instance}; + __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_GOTREF(__pyx_t_14); + } else + #endif + { + __pyx_t_18 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_18); + if (__pyx_t_16) { + __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_16); __pyx_t_16 = NULL; + } + __Pyx_INCREF(__pyx_v_function); + __Pyx_GIVEREF(__pyx_v_function); + PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_17, __pyx_v_function); + __Pyx_INCREF(__pyx_v_dimension); + __Pyx_GIVEREF(__pyx_v_dimension); + PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_v_dimension); + __Pyx_INCREF(__pyx_v_instance); + __Pyx_GIVEREF(__pyx_v_instance); + PyTuple_SET_ITEM(__pyx_t_18, 2+__pyx_t_17, __pyx_v_instance); + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_18, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } - __Pyx_INCREF(__pyx_v_function); - __Pyx_GIVEREF(__pyx_v_function); - PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_17, __pyx_v_function); - __Pyx_INCREF(__pyx_v_dimension); - __Pyx_GIVEREF(__pyx_v_dimension); - PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_v_dimension); - __Pyx_INCREF(__pyx_v_instance); - __Pyx_GIVEREF(__pyx_v_instance); - PyTuple_SET_ITEM(__pyx_t_18, 2+__pyx_t_17, __pyx_v_instance); - __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_18, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 360, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = NULL; __pyx_t_17 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); @@ -4460,20 +4780,42 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_17 = 1; } } - __pyx_t_18 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 360, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_18); - if (__pyx_t_15) { - __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_15); __pyx_t_15 = NULL; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_12)) { + PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_13, __pyx_t_14}; + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { + PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_13, __pyx_t_14}; + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } else + #endif + { + __pyx_t_18 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_18); + if (__pyx_t_15) { + __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_15); __pyx_t_15 = NULL; + } + __Pyx_GIVEREF(__pyx_t_13); + PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_17, __pyx_t_13); + __Pyx_GIVEREF(__pyx_t_14); + PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_t_14); + __pyx_t_13 = 0; + __pyx_t_14 = 0; + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_18, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 360, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } - __Pyx_GIVEREF(__pyx_t_13); - PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_17, __pyx_t_13); - __Pyx_GIVEREF(__pyx_t_14); - PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_t_14); - __pyx_t_13 = 0; - __pyx_t_14 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_18, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 360, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; @@ -4576,7 +4918,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 367, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); @@ -4589,15 +4931,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 367, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 367, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_key); - __Pyx_GIVEREF(__pyx_v_key); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_key); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 367, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_key}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 367, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_key}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 367, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 367, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_key); + __Pyx_GIVEREF(__pyx_v_key); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_key); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 367, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; @@ -4666,7 +5026,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dealloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); @@ -4990,7 +5350,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_COMPILING_IN_CPYTHON + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 423, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 423, __pyx_L1_error) @@ -4998,7 +5358,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_COMPILING_IN_CPYTHON + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 423, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 423, __pyx_L1_error) @@ -5039,7 +5399,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_6 = __pyx_v_id_snippets; __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0; for (;;) { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break; - #if CYTHON_COMPILING_IN_CPYTHON + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 424, __pyx_L1_error) #else __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 424, __pyx_L1_error) @@ -5050,7 +5410,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_id, __pyx_n_s_find); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); @@ -5063,15 +5423,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_i); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); } else { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL; - __Pyx_INCREF(__pyx_v_i); - __Pyx_GIVEREF(__pyx_v_i); - PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_i); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_9)) { + PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_v_i}; + __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 424, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_8); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { + PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_v_i}; + __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 424, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_8); + } else + #endif + { + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 424, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL; + __Pyx_INCREF(__pyx_v_i); + __Pyx_GIVEREF(__pyx_v_i); + PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_i); + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 424, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 424, __pyx_L1_error) @@ -5191,7 +5569,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); @@ -5205,15 +5583,35 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 429, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6); - __pyx_t_6 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 429, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; @@ -6243,10 +6641,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_ __Pyx_RefNannySetupContext("__iter__", 0); __pyx_cur_scope = (struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)__pyx_tp_new_6cocoex_9interface___pyx_scope_struct____iter__(__pyx_ptype_6cocoex_9interface___pyx_scope_struct____iter__, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { - __Pyx_RefNannyFinishContext(); - return NULL; + __pyx_cur_scope = ((struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(0, 503, __pyx_L1_error) + } else { + __Pyx_GOTREF(__pyx_cur_scope); } - __Pyx_GOTREF(__pyx_cur_scope); __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); @@ -6319,7 +6719,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_reset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); @@ -6390,7 +6790,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_next_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); @@ -6626,7 +7026,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); @@ -6680,7 +7080,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 526, __pyx_L34_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); @@ -6733,6 +7133,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } __pyx_L6:; } + if (1); else __pyx_cur_scope = __pyx_cur_scope; /* "cython/interface.pyx":503 * return len(self._indices) @@ -6837,7 +7238,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc Py_ssize_t __pyx_t_5; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; - Py_ssize_t __pyx_t_8; + int __pyx_t_8; PyObject *__pyx_t_9 = NULL; char const *__pyx_t_10; char const *__pyx_t_11; @@ -6889,7 +7290,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __pyx_t_4 = __pyx_tuple__15; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; for (;;) { if (__pyx_t_5 >= 6) break; - #if CYTHON_COMPILING_IN_CPYTHON + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 565, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 565, __pyx_L1_error) @@ -6909,7 +7310,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); @@ -6919,23 +7320,41 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __pyx_t_8 = 1; } } - __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 566, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - if (__pyx_t_7) { - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; - } - __Pyx_INCREF(__pyx_v_c); - __Pyx_GIVEREF(__pyx_v_c); - PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_c); - __Pyx_INCREF(__pyx_kp_u__2); - __Pyx_GIVEREF(__pyx_kp_u__2); - PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_kp_u__2); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 566, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_3); - __pyx_t_3 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_c, __pyx_kp_u__2}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 566, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_c, __pyx_kp_u__2}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 566, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else + #endif + { + __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 566, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; + } + __Pyx_INCREF(__pyx_v_c); + __Pyx_GIVEREF(__pyx_v_c); + PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_c); + __Pyx_INCREF(__pyx_kp_u__2); + __Pyx_GIVEREF(__pyx_kp_u__2); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_kp_u__2); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 566, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_3); + __pyx_t_3 = 0; /* "cython/interface.pyx":565 * if isinstance(options, dict): @@ -7150,7 +7569,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); @@ -7163,15 +7582,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 583, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 583, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -7408,7 +7845,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dealloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); @@ -7866,7 +8303,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); @@ -7880,15 +8317,35 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 659, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + { + __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 659, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 659, __pyx_L1_error) @@ -7913,7 +8370,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); @@ -7927,15 +8384,35 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 660, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 660, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 660, __pyx_L1_error) @@ -7960,7 +8437,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 661, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); @@ -7974,15 +8451,35 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_6); - __pyx_t_6 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + { + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 661, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 661, __pyx_L1_error) @@ -8015,7 +8512,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 664, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); @@ -8029,15 +8526,35 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_5); } else { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; + __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 664, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; + __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 664, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + { + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 664, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 664, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 664, __pyx_L1_error) @@ -8071,7 +8588,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); @@ -8085,15 +8602,35 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_6); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 665, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 665, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 665, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 665, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyNumber_Multiply(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 665, __pyx_L1_error) @@ -8499,7 +9036,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); @@ -8512,15 +9049,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 725, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_y); - __Pyx_GIVEREF(__pyx_v_y); - PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_y); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 725, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_y}; + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 725, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_6); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_y}; + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 725, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_6); + } else + #endif + { + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 725, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_v_y); + __Pyx_GIVEREF(__pyx_v_y); + PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_y); + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 725, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 725, __pyx_L1_error) @@ -8545,7 +9100,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); @@ -8558,15 +9113,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 727, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 727, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; - __Pyx_INCREF(__pyx_v_y); - __Pyx_GIVEREF(__pyx_v_y); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_y); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 727, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_y}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 727, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_y}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 727, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 727, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_y); + __Pyx_GIVEREF(__pyx_v_y); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_y); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 727, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 727, __pyx_L1_error) @@ -8675,7 +9248,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); @@ -8795,7 +9368,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); @@ -8808,15 +9381,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_observer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 739, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_observer); - __Pyx_GIVEREF(__pyx_v_observer); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_observer); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_observer); + __Pyx_GIVEREF(__pyx_v_observer); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_observer); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; @@ -8913,7 +9504,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_observer, __pyx_n_s_update_current_observer_global); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); @@ -9033,7 +9624,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __pyx_t_2 = ((PyObject *)__pyx_v_self); __pyx_t_3 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); @@ -9046,15 +9637,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 762, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_x); - __Pyx_GIVEREF(__pyx_v_x); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 762, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_x}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 762, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_x}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 762, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 762, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_x); + __Pyx_GIVEREF(__pyx_v_x); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 762, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_final_target_fvalue1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 762, __pyx_L1_error) @@ -10246,7 +10855,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); @@ -10259,15 +10868,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_x); - __Pyx_GIVEREF(__pyx_v_x); - PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_x); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 844, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_6); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 844, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_6); + } else + #endif + { + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_v_x); + __Pyx_GIVEREF(__pyx_v_x); + PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_x); + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 844, __pyx_L1_error) @@ -10292,7 +10919,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); @@ -10305,15 +10932,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 846, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; - __Pyx_INCREF(__pyx_v_x); - __Pyx_GIVEREF(__pyx_v_x); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 846, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 846, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 846, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 846, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_x); + __Pyx_GIVEREF(__pyx_v_x); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 846, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 846, __pyx_L1_error) @@ -10422,7 +11067,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18__call__(struct __pyx_ob __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 851, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); @@ -10940,7 +11585,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; - Py_ssize_t __pyx_t_9; + int __pyx_t_9; __Pyx_RefNannySetupContext("__str__", 0); /* "cython/interface.pyx":885 @@ -11035,7 +11680,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); @@ -11069,7 +11714,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); @@ -11127,7 +11772,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; __pyx_t_9 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); @@ -11137,20 +11782,42 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20__str__(struct __pyx_obj __pyx_t_9 = 1; } } - __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 890, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - if (__pyx_t_6) { - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_7, __pyx_t_3}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 890, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_7, __pyx_t_3}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 890, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + { + __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 890, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + if (__pyx_t_6) { + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; + } + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_9, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_t_3); + __pyx_t_7 = 0; + __pyx_t_3 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 890, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } - __Pyx_GIVEREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_9, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_t_3); - __pyx_t_7 = 0; - __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 890, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "cython/interface.pyx":889 @@ -11292,7 +11959,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__repr__(struct __pyx_ob __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); @@ -11566,7 +12233,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__exit__(struct __pyx_ob __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_free); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 910, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) { + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); @@ -11978,7 +12645,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":197 +/* "numpy.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -12025,7 +12692,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "numpy.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -12038,7 +12705,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "numpy.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -12047,7 +12714,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":207 + /* "numpy.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -12056,7 +12723,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "numpy.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -12065,7 +12732,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "numpy.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -12075,7 +12742,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":212 + /* "numpy.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -12084,7 +12751,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_copy_shape = 1; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "numpy.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -12094,7 +12761,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L4; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "numpy.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -12106,7 +12773,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":216 + /* "numpy.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -12120,7 +12787,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "numpy.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -12131,7 +12798,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L6_bool_binop_done:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":216 + /* "numpy.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -12140,20 +12807,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "numpy.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 218, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 215, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 218, __pyx_L1_error) + __PYX_ERR(1, 215, __pyx_L1_error) - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":216 + /* "numpy.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -12162,7 +12829,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":220 + /* "numpy.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -12176,7 +12843,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "numpy.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -12187,7 +12854,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L9_bool_binop_done:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":220 + /* "numpy.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -12196,20 +12863,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "numpy.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< * * info.buf = PyArray_DATA(self) */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 222, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 219, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 222, __pyx_L1_error) + __PYX_ERR(1, 219, __pyx_L1_error) - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":220 + /* "numpy.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -12218,7 +12885,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":224 + /* "numpy.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -12227,7 +12894,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":225 + /* "numpy.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -12236,7 +12903,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "numpy.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -12246,7 +12913,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "numpy.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -12255,7 +12922,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "numpy.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -12264,7 +12931,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":231 + /* "numpy.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -12275,7 +12942,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "numpy.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -12284,7 +12951,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "numpy.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -12294,7 +12961,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]); } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "numpy.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -12304,7 +12971,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L11; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "numpy.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -12314,7 +12981,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "numpy.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -12325,7 +12992,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":237 + /* "numpy.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -12334,7 +13001,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":238 + /* "numpy.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -12343,7 +13010,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "numpy.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -12352,28 +13019,28 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":242 + /* "numpy.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< * cdef dtype descr = self.descr - * cdef int offset + * cdef list stack */ __pyx_v_f = NULL; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":243 + /* "numpy.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< + * cdef list stack * cdef int offset - * */ __pyx_t_3 = ((PyObject *)__pyx_v_self->descr); __Pyx_INCREF(__pyx_t_3); __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "numpy.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -12382,7 +13049,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "numpy.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -12400,7 +13067,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":250 + /* "numpy.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -12413,7 +13080,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = Py_None; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "numpy.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -12423,7 +13090,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L14; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "numpy.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -12439,7 +13106,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "numpy.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -12449,7 +13116,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "numpy.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -12459,7 +13126,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "numpy.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -12479,7 +13146,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "numpy.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -12496,7 +13163,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L19_bool_binop_done:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "numpy.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -12505,20 +13172,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "numpy.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 259, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 257, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 259, __pyx_L1_error) + __PYX_ERR(1, 257, __pyx_L1_error) - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "numpy.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -12527,7 +13194,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "numpy.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -12539,7 +13206,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"b"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "numpy.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -12550,7 +13217,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"B"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "numpy.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -12561,7 +13228,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"h"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "numpy.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -12572,7 +13239,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"H"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "numpy.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -12583,7 +13250,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"i"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "numpy.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -12594,7 +13261,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"I"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "numpy.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -12605,7 +13272,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"l"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "numpy.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -12616,7 +13283,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"L"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "numpy.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -12627,7 +13294,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"q"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "numpy.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -12638,7 +13305,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Q"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "numpy.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -12649,7 +13316,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"f"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "numpy.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -12660,7 +13327,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"d"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "numpy.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -12671,7 +13338,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"g"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "numpy.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -12682,7 +13349,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zf"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "numpy.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -12693,7 +13360,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zd"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":275 + /* "numpy.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -12704,7 +13371,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zg"); break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "numpy.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -12716,33 +13383,33 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "numpy.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< * info.format = f * return */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 278, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 278, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 278, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 278, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __PYX_ERR(1, 278, __pyx_L1_error) + __PYX_ERR(1, 276, __pyx_L1_error) break; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":279 + /* "numpy.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -12751,7 +13418,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "numpy.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -12761,7 +13428,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_r = 0; goto __pyx_L0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "numpy.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -12770,7 +13437,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "numpy.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -12780,7 +13447,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->format = ((char *)malloc(0xFF)); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "numpy.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -12789,7 +13456,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":284 + /* "numpy.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -12798,17 +13465,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":285 + /* "numpy.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< * info.format + _buffer_format_string_len, * &offset) */ - __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(1, 285, __pyx_L1_error) + __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(1, 283, __pyx_L1_error) __pyx_v_f = __pyx_t_7; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "numpy.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -12818,7 +13485,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":197 + /* "numpy.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -12850,7 +13517,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":290 +/* "numpy.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -12874,7 +13541,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "numpy.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -12884,7 +13551,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "numpy.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -12893,7 +13560,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ free(__pyx_v_info->format); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "numpy.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -12902,7 +13569,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":293 + /* "numpy.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -12912,7 +13579,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":294 + /* "numpy.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -12921,7 +13588,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ free(__pyx_v_info->strides); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":293 + /* "numpy.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -12930,7 +13597,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "numpy.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -12942,7 +13609,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":770 +/* "numpy.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -12956,7 +13623,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "numpy.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -12964,13 +13631,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ * cdef inline object PyArray_MultiIterNew2(a, b): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 771, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":770 + /* "numpy.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -12989,7 +13656,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":773 +/* "numpy.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -13003,7 +13670,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "numpy.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -13011,13 +13678,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ * cdef inline object PyArray_MultiIterNew3(a, b, c): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 774, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":773 + /* "numpy.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -13036,7 +13703,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":776 +/* "numpy.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -13050,7 +13717,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "numpy.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -13058,13 +13725,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ * cdef inline object PyArray_MultiIterNew4(a, b, c, d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 777, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":776 + /* "numpy.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -13083,7 +13750,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":779 +/* "numpy.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -13097,7 +13764,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "numpy.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -13105,13 +13772,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 780, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":779 + /* "numpy.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -13130,7 +13797,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":782 +/* "numpy.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -13144,7 +13811,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "numpy.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -13152,13 +13819,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 783, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":782 + /* "numpy.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -13177,7 +13844,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":785 +/* "numpy.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -13199,24 +13866,24 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx Py_ssize_t __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; + PyObject *__pyx_t_5 = NULL; int __pyx_t_6; int __pyx_t_7; long __pyx_t_8; char *__pyx_t_9; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":790 - * - * cdef dtype child + /* "numpy.pxd":790 + * cdef int delta_offset + * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< * cdef bint little_endian = ((&endian_detector)[0] != 0) * cdef tuple fields */ __pyx_v_endian_detector = 1; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":791 - * cdef dtype child + /* "numpy.pxd":791 + * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< * cdef tuple fields @@ -13224,7 +13891,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "numpy.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -13238,7 +13905,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; for (;;) { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; - #if CYTHON_COMPILING_IN_CPYTHON + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 794, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 794, __pyx_L1_error) @@ -13247,33 +13914,29 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "numpy.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< * child, new_offset = fields * */ - if (unlikely(__pyx_v_descr->fields == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 795, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 795, __pyx_L1_error) + __pyx_t_3 = PyObject_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 795, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "numpy.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< * - * if (end - f) - (new_offset - offset[0]) < 15: + * if (end - f) - (new_offset - offset[0]) < 15: */ if (likely(__pyx_v_fields != Py_None)) { PyObject* sequence = __pyx_v_fields; - #if CYTHON_COMPILING_IN_CPYTHON + #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); @@ -13283,7 +13946,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(1, 796, __pyx_L1_error) } - #if CYTHON_COMPILING_IN_CPYTHON + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_3); @@ -13303,46 +13966,53 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "numpy.pxd":798 * child, new_offset = fields * - * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< + * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * */ - __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 798, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_ptrdiff_t((__pyx_v_end - __pyx_v_f)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 798, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_Subtract(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 798, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_int_15, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 798, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 798, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_6) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "numpy.pxd":799 * - * if (end - f) - (new_offset - offset[0]) < 15: + * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< * * if ((child.byteorder == c'>' and little_endian) or */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 799, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 799, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(1, 799, __pyx_L1_error) - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "numpy.pxd":798 * child, new_offset = fields * - * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< + * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * */ } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "numpy.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -13362,7 +14032,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "numpy.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -13379,7 +14049,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = __pyx_t_7; __pyx_L7_bool_binop_done:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "numpy.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -13388,20 +14058,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ if (__pyx_t_6) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "numpy.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * # One could encode it in the format string and have Cython * # complain instead, BUT: < and > in format strings also imply */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 803, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 803, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(1, 803, __pyx_L1_error) - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "numpy.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -13410,7 +14080,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "numpy.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -13418,15 +14088,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * f += 1 */ while (1) { - __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 813, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 813, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 813, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 813, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 813, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 813, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "numpy.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -13435,7 +14105,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 0x78; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "numpy.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -13444,7 +14114,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "numpy.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -13455,7 +14125,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "numpy.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -13465,7 +14135,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "numpy.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -13475,19 +14145,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "numpy.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") */ - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 821, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); - __pyx_t_4 = 0; + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 821, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_3); + __pyx_t_3 = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "numpy.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -13497,20 +14167,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "numpy.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< * * # Until ticket #99 is fixed, use integers to avoid warnings */ - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 823, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 823, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 823, __pyx_L1_error) - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "numpy.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -13519,253 +14189,253 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "numpy.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 826, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 826, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 826, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 826, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 826, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 826, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 98; goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "numpy.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 827, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 827, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 827, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 827, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 827, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 827, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 66; goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "numpy.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 828, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 828, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 828, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 828, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 828, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 828, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x68; goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "numpy.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 829, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 829, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 829, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 829, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 829, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 829, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 72; goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "numpy.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 830, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 830, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 830, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 830, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 830, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 830, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x69; goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "numpy.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 831, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 831, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 831, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 831, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 831, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 831, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 73; goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "numpy.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 832, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 832, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 832, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 832, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 832, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 832, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x6C; goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "numpy.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 833, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 833, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 833, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 833, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 833, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 833, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 76; goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "numpy.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 834, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 834, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 834, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 834, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 834, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 834, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x71; goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "numpy.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 835, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 835, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 835, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 835, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 835, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 835, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 81; goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "numpy.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 836, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 836, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 836, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 836, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 836, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 836, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x66; goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "numpy.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 837, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 837, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 837, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 837, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 837, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 837, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x64; goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "numpy.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 838, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 838, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 838, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 838, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 838, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 838, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x67; goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "numpy.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 839, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 839, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 839, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 839, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 839, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 839, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; (__pyx_v_f[1]) = 0x66; @@ -13773,19 +14443,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "numpy.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 840, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 840, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 840, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 840, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 840, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 840, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; (__pyx_v_f[1]) = 0x64; @@ -13793,19 +14463,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "numpy.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 841, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 841, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 841, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 841, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 841, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 841, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; (__pyx_v_f[1]) = 0x67; @@ -13813,25 +14483,25 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "numpy.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 842, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 842, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 842, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 842, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 842, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 842, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 79; goto __pyx_L15; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "numpy.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -13839,23 +14509,23 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * else: */ /*else*/ { - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error) + __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(1, 844, __pyx_L1_error) } __pyx_L15:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "numpy.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -13864,7 +14534,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "numpy.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -13874,7 +14544,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L13; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "numpy.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -13887,7 +14557,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "numpy.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -13897,7 +14567,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "numpy.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -13907,7 +14577,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":785 + /* "numpy.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -13920,6 +14590,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("numpy._util_dtypestring", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -13932,7 +14603,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "numpy.pxd":965 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -13947,7 +14618,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "numpy.pxd":967 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -13958,7 +14629,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "numpy.pxd":968 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -13967,7 +14638,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_baseptr = NULL; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "numpy.pxd":967 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -13977,7 +14648,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a goto __pyx_L3; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "numpy.pxd":970 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -13987,7 +14658,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a /*else*/ { Py_INCREF(__pyx_v_base); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "numpy.pxd":971 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -13998,7 +14669,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "numpy.pxd":972 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -14007,7 +14678,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "numpy.pxd":973 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -14016,7 +14687,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "numpy.pxd":965 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -14028,7 +14699,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "numpy.pxd":975 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -14042,7 +14713,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "numpy.pxd":976 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -14052,7 +14723,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "numpy.pxd":977 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -14064,7 +14735,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = Py_None; goto __pyx_L0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "numpy.pxd":976 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -14073,7 +14744,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "numpy.pxd":979 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -14085,7 +14756,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "numpy.pxd":975 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -14123,10 +14794,11 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Suite(PyTypeObject *t, PyObject p->_dimensions = Py_None; Py_INCREF(Py_None); p->_number_of_objectives = Py_None; Py_INCREF(Py_None); p->initialized = Py_None; Py_INCREF(Py_None); - if (unlikely(__pyx_pw_6cocoex_9interface_5Suite_1__cinit__(o, a, k) < 0)) { - Py_DECREF(o); o = 0; - } + if (unlikely(__pyx_pw_6cocoex_9interface_5Suite_1__cinit__(o, a, k) < 0)) goto bad; return o; + bad: + Py_DECREF(o); o = 0; + return NULL; } static void __pyx_tp_dealloc_6cocoex_9interface_Suite(PyObject *o) { @@ -14381,10 +15053,11 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Observer(PyTypeObject *t, PyObj p->_name = ((PyObject*)Py_None); Py_INCREF(Py_None); p->_options = ((PyObject*)Py_None); Py_INCREF(Py_None); p->_state = Py_None; Py_INCREF(Py_None); - if (unlikely(__pyx_pw_6cocoex_9interface_8Observer_1__cinit__(o, a, k) < 0)) { - Py_DECREF(o); o = 0; - } + if (unlikely(__pyx_pw_6cocoex_9interface_8Observer_1__cinit__(o, a, k) < 0)) goto bad; return o; + bad: + Py_DECREF(o); o = 0; + return NULL; } static void __pyx_tp_dealloc_6cocoex_9interface_Observer(PyObject *o) { @@ -14533,10 +15206,11 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Problem(PyTypeObject *t, CYTHON p->_problem_index = Py_None; Py_INCREF(Py_None); p->_do_free = Py_None; Py_INCREF(Py_None); p->initialized = Py_None; Py_INCREF(Py_None); - if (unlikely(__pyx_pw_6cocoex_9interface_7Problem_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) { - Py_DECREF(o); o = 0; - } + if (unlikely(__pyx_pw_6cocoex_9interface_7Problem_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad; return o; + bad: + Py_DECREF(o); o = 0; + return NULL; } static void __pyx_tp_dealloc_6cocoex_9interface_Problem(PyObject *o) { @@ -15014,7 +15688,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_k_Suite_s_s_s_with_d_problem_s_in, sizeof(__pyx_k_Suite_s_s_s_with_d_problem_s_in), 0, 1, 0, 0}, {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, {&__pyx_kp_u_Unkown_benchmark_suite_name_s_Kn, __pyx_k_Unkown_benchmark_suite_name_s_Kn, sizeof(__pyx_k_Unkown_benchmark_suite_name_s_Kn), 0, 1, 0, 0}, - {&__pyx_kp_s_Users_hansen_git_coco_code_expe, __pyx_k_Users_hansen_git_coco_code_expe, sizeof(__pyx_k_Users_hansen_git_coco_code_expe), 0, 0, 1, 0}, + {&__pyx_kp_s_Users_wassimaitelhara_svn_numbb, __pyx_k_Users_wassimaitelhara_svn_numbb, sizeof(__pyx_k_Users_wassimaitelhara_svn_numbb), 0, 0, 1, 0}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0}, {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0}, @@ -15295,42 +15969,42 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_slice__20); __Pyx_GIVEREF(__pyx_slice__20); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "numpy.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) */ - __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 218, __pyx_L1_error) + __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 215, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__21); __Pyx_GIVEREF(__pyx_tuple__21); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "numpy.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< * * info.buf = PyArray_DATA(self) */ - __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 222, __pyx_L1_error) + __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 219, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__22); __Pyx_GIVEREF(__pyx_tuple__22); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "numpy.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" */ - __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 259, __pyx_L1_error) + __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 257, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "numpy.pxd":799 * - * if (end - f) - (new_offset - offset[0]) < 15: + * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< * * if ((child.byteorder == c'>' and little_endian) or @@ -15339,7 +16013,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__24); __Pyx_GIVEREF(__pyx_tuple__24); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "numpy.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -15350,7 +16024,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "numpy.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -15371,7 +16045,7 @@ static int __Pyx_InitCachedConstants(void) { __pyx_tuple__27 = PyTuple_Pack(2, __pyx_n_s_level, __pyx_n_s_level_2); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 914, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); - __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_hansen_git_coco_code_expe, __pyx_n_s_log_level, 914, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 914, __pyx_L1_error) + __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_wassimaitelhara_svn_numbb, __pyx_n_s_log_level, 914, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 914, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -15383,6 +16057,7 @@ static int __Pyx_InitGlobals(void) { if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_neg_2 = PyInt_FromLong(-2); if (unlikely(!__pyx_int_neg_2)) __PYX_ERR(0, 1, __pyx_L1_error) return 0; @@ -15535,9 +16210,9 @@ PyMODINIT_FUNC PyInit_interface(void) #endif 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(2, 9, __pyx_L1_error) __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(1, 155, __pyx_L1_error) - __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(1, 168, __pyx_L1_error) - __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(1, 172, __pyx_L1_error) - __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(1, 181, __pyx_L1_error) + __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(1, 165, __pyx_L1_error) + __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(1, 169, __pyx_L1_error) + __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(1, 178, __pyx_L1_error) __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(1, 861, __pyx_L1_error) /*--- Variable import code ---*/ /*--- Function import code ---*/ @@ -15575,7 +16250,7 @@ PyMODINIT_FUNC PyInit_interface(void) * * from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException # <<<<<<<<<<<<<< * - * known_suite_names = [b"bbob", b"bbob-biobj"] + * known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-largescale"] */ __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); @@ -15608,11 +16283,11 @@ PyMODINIT_FUNC PyInit_interface(void) /* "cython/interface.pyx":10 * from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException * - * known_suite_names = [b"bbob", b"bbob-biobj"] # <<<<<<<<<<<<<< + * known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-largescale"] # <<<<<<<<<<<<<< * _known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-constrained", b"bbob-largescale"] * */ - __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_b_bbob); __Pyx_GIVEREF(__pyx_n_b_bbob); @@ -15620,12 +16295,15 @@ PyMODINIT_FUNC PyInit_interface(void) __Pyx_INCREF(__pyx_kp_b_bbob_biobj); __Pyx_GIVEREF(__pyx_kp_b_bbob_biobj); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_kp_b_bbob_biobj); + __Pyx_INCREF(__pyx_kp_b_bbob_largescale); + __Pyx_GIVEREF(__pyx_kp_b_bbob_largescale); + PyList_SET_ITEM(__pyx_t_2, 2, __pyx_kp_b_bbob_largescale); if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":11 * - * known_suite_names = [b"bbob", b"bbob-biobj"] + * known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-largescale"] * _known_suite_names = [b"bbob", b"bbob-biobj", b"bbob-constrained", b"bbob-largescale"] # <<<<<<<<<<<<<< * * # _test_assignment = "seems to prevent an 'export' error (i.e. induce export) to make this module known under Linux and Windows (possibly because of the leading underscore of _interface)" @@ -15682,7 +16360,7 @@ PyMODINIT_FUNC PyInit_interface(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "../../../../../anaconda2/envs/py35/lib/python3.5/site-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "numpy.pxd":975 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -15766,7 +16444,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg #endif /* PyErrFetchRestore */ -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->curexc_type; @@ -16094,6 +16772,146 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject return -1; } +/* PyCFunctionFastCall */ + #if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { + PyCFunctionObject *func = (PyCFunctionObject*)func_obj; + PyCFunction meth = PyCFunction_GET_FUNCTION(func); + PyObject *self = PyCFunction_GET_SELF(func); + PyObject *result; + int flags; + assert(PyCFunction_Check(func)); + assert(METH_FASTCALL == PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST)); + assert(nargs >= 0); + assert(nargs == 0 || args != NULL); + /* _PyCFunction_FastCallDict() must not be called with an exception set, + because it may clear it (directly or indirectly) and so the + caller loses its exception */ + assert(!PyErr_Occurred()); + return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs, NULL); +} +#endif // CYTHON_FAST_PYCCALL + +/* PyFunctionFastCall */ + #if CYTHON_FAST_PYCALL +#include "frameobject.h" +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = PyThreadState_GET(); + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = f->f_localsplus; + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { + return NULL; + } + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif // CPython < 3.6 +#endif // CYTHON_FAST_PYCALL + /* PyObjectCallMethO */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { @@ -16127,6 +16945,11 @@ static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { return result; } static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +#if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCall(func, &arg, 1); + } +#endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { #else @@ -16134,6 +16957,10 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec #endif if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { return __Pyx_PyObject_CallMethO(func, arg); +#if CYTHON_FAST_PYCCALL + } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { + return __Pyx_PyCFunction_FastCall(func, &arg, 1); +#endif } } return __Pyx__PyObject_CallOneArg(func, arg); @@ -16152,6 +16979,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec /* PyObjectCallNoArg */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { +#if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCall(func, NULL, 0); + } +#endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { #else @@ -16168,7 +17000,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { /* GetModuleGlobalName */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { PyObject *result; -#if CYTHON_COMPILING_IN_CPYTHON +#if !CYTHON_AVOID_BORROWED_REFS result = PyDict_GetItem(__pyx_d, name); if (likely(result)) { Py_INCREF(result); @@ -16184,7 +17016,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { } /* SaveResetException */ - #if CYTHON_COMPILING_IN_CPYTHON + #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->exc_type; *value = tstate->exc_value; @@ -16208,13 +17040,13 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject #endif /* GetException */ - #if CYTHON_COMPILING_IN_CPYTHON + #if CYTHON_FAST_THREAD_STATE static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { #endif PyObject *local_type, *local_value, *local_tb; -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_FAST_THREAD_STATE PyObject *tmp_type, *tmp_value, *tmp_tb; local_type = tstate->curexc_type; local_value = tstate->curexc_value; @@ -16226,7 +17058,7 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) PyErr_Fetch(&local_type, &local_value, &local_tb); #endif PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_FAST_THREAD_STATE if (unlikely(tstate->curexc_type)) #else if (unlikely(PyErr_Occurred())) @@ -16244,7 +17076,7 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) *type = local_type; *value = local_value; *tb = local_tb; -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_FAST_THREAD_STATE tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; @@ -16272,15 +17104,29 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { PyObject *method, *result = NULL; method = __Pyx_PyObject_GetAttrStr(obj, method_name); - if (unlikely(!method)) goto bad; -#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(!method)) goto done; +#if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(method))) { PyObject *self = PyMethod_GET_SELF(method); if (likely(self)) { PyObject *args; PyObject *function = PyMethod_GET_FUNCTION(method); + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(function)) { + PyObject *args[2] = {self, arg}; + result = __Pyx_PyFunction_FastCall(function, args, 2); + goto done; + } + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(function)) { + PyObject *args[2] = {self, arg}; + result = __Pyx_PyCFunction_FastCall(function, args, 2); + goto done; + } + #endif args = PyTuple_New(2); - if (unlikely(!args)) goto bad; + if (unlikely(!args)) goto done; Py_INCREF(self); PyTuple_SET_ITEM(args, 0, self); Py_INCREF(arg); @@ -16295,7 +17141,7 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) } #endif result = __Pyx_PyObject_CallOneArg(method, arg); -bad: +done: Py_XDECREF(method); return result; } @@ -16314,7 +17160,7 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) } /* PyIntBinop */ - #if CYTHON_COMPILING_IN_CPYTHON + #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { @@ -16327,12 +17173,14 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED return PyLong_Type.tp_as_number->nb_add(op1, op2); } #endif - #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a, x; +#ifdef HAVE_LONG_LONG const PY_LONG_LONG llb = intval; PY_LONG_LONG lla, llx; +#endif const digit* digits = ((PyLongObject*)op1)->ob_digit; const Py_ssize_t size = Py_SIZE(op1); if (likely(__Pyx_sst_abs(size) <= 1)) { @@ -16344,58 +17192,74 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; +#ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; +#endif } case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; +#ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; +#endif } case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; +#ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; +#endif } case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; +#ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; +#endif } case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; +#ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; +#endif } case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; +#ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; +#endif } default: return PyLong_Type.tp_as_number->nb_add(op1, op2); } } x = a + b; return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG long_long: llx = lla + llb; return PyLong_FromLongLong(llx); +#endif + + } #endif if (PyFloat_CheckExact(op1)) { @@ -16462,7 +17326,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { PyObject *r = PyList_GET_ITEM(o, i); @@ -16477,7 +17341,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, i); @@ -16492,7 +17356,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { @@ -16533,7 +17397,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, } /* PyErrExceptionMatches */ - #if CYTHON_COMPILING_IN_CPYTHON + #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { PyObject *exc_type = tstate->curexc_type; if (exc_type == err) return 1; @@ -16543,7 +17407,7 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta #endif /* SwapException */ - #if CYTHON_COMPILING_IN_CPYTHON + #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->exc_type; @@ -16590,7 +17454,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, } static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); if ((!boundscheck) || likely((n >= 0) & (n < PyList_GET_SIZE(o)))) { @@ -17227,7 +18091,7 @@ static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { } /* PyIntBinop */ - #if CYTHON_COMPILING_IN_CPYTHON + #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { if (op1 == op2) { Py_RETURN_TRUE; @@ -17243,7 +18107,7 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED } } #endif - #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a; @@ -17316,7 +18180,7 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED Py_ssize_t cstart, Py_ssize_t cstop, PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) { -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_USE_TYPE_SLOTS PyMappingMethods* mp; #if PY_MAJOR_VERSION < 3 PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence; @@ -17392,7 +18256,7 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED Py_XDECREF(owned_stop); if (unlikely(!py_slice)) goto bad; } -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_USE_TYPE_SLOTS result = mp->mp_subscript(obj, py_slice); #else result = PyObject_GetItem(obj, py_slice); @@ -17686,7 +18550,7 @@ static void __Pyx_AddTraceback(const char *funcname, int c_line, 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; - py_frame->f_lineno = py_line; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); @@ -17745,14 +18609,18 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { return PyInt_FromLong((long) value); } else if (sizeof(long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif } } { @@ -17772,14 +18640,18 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { return PyInt_FromLong((long) value); } else if (sizeof(int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif } } else { if (sizeof(int) <= sizeof(long)) { return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif } } { @@ -17790,7 +18662,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } } -/* None */ +/* Declarations */ #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { @@ -17810,61 +18682,86 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } #endif -/* None */ +/* Arithmetic */ #if CYTHON_CCOMPLEX #else - static CYTHON_INLINE int __Pyx_c_eqf(__pyx_t_float_complex a, __pyx_t_float_complex b) { + static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { return (a.real == b.real) && (a.imag == b.imag); } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sumf(__pyx_t_float_complex a, __pyx_t_float_complex b) { + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { __pyx_t_float_complex z; z.real = a.real + b.real; z.imag = a.imag + b.imag; return z; } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_difff(__pyx_t_float_complex a, __pyx_t_float_complex b) { + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { __pyx_t_float_complex z; z.real = a.real - b.real; z.imag = a.imag - b.imag; return z; } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prodf(__pyx_t_float_complex a, __pyx_t_float_complex b) { + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { __pyx_t_float_complex z; z.real = a.real * b.real - a.imag * b.imag; z.imag = a.real * b.imag + a.imag * b.real; return z; } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quotf(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - float denom = b.real * b.real + b.imag * b.imag; - z.real = (a.real * b.real + a.imag * b.imag) / denom; - z.imag = (a.imag * b.real - a.real * b.imag) / denom; - return z; + #if 1 + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + if (b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabsf(b.real) >= fabsf(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + float r = b.imag / b.real; + float s = 1.0 / (b.real + b.imag * r); + return __pyx_t_float_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + float r = b.real / b.imag; + float s = 1.0 / (b.imag + b.real * r); + return __pyx_t_float_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } + #else + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + if (b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + float denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_float_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_negf(__pyx_t_float_complex a) { + #endif + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) { __pyx_t_float_complex z; z.real = -a.real; z.imag = -a.imag; return z; } - static CYTHON_INLINE int __Pyx_c_is_zerof(__pyx_t_float_complex a) { + static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) { return (a.real == 0) && (a.imag == 0); } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conjf(__pyx_t_float_complex a) { + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) { __pyx_t_float_complex z; z.real = a.real; z.imag = -a.imag; return z; } #if 1 - static CYTHON_INLINE float __Pyx_c_absf(__pyx_t_float_complex z) { + static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) { #if !defined(HAVE_HYPOT) || defined(_MSC_VER) return sqrtf(z.real*z.real + z.imag*z.imag); #else return hypotf(z.real, z.imag); #endif } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_powf(__pyx_t_float_complex a, __pyx_t_float_complex b) { + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { __pyx_t_float_complex z; float r, lnr, theta, z_r, z_theta; if (b.imag == 0 && b.real == (int)b.real) { @@ -17882,14 +18779,14 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { case 1: return a; case 2: - z = __Pyx_c_prodf(a, a); - return __Pyx_c_prodf(a, a); + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(a, a); case 3: - z = __Pyx_c_prodf(a, a); - return __Pyx_c_prodf(z, a); + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(z, a); case 4: - z = __Pyx_c_prodf(a, a); - return __Pyx_c_prodf(z, z); + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(z, z); } } if (a.imag == 0) { @@ -17899,7 +18796,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { r = a.real; theta = 0; } else { - r = __Pyx_c_absf(a); + r = __Pyx_c_abs_float(a); theta = atan2f(a.imag, a.real); } lnr = logf(r); @@ -17912,7 +18809,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif #endif -/* None */ +/* Declarations */ #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { @@ -17932,61 +18829,86 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } #endif -/* None */ +/* Arithmetic */ #if CYTHON_CCOMPLEX #else - static CYTHON_INLINE int __Pyx_c_eq(__pyx_t_double_complex a, __pyx_t_double_complex b) { + static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { return (a.real == b.real) && (a.imag == b.imag); } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum(__pyx_t_double_complex a, __pyx_t_double_complex b) { + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { __pyx_t_double_complex z; z.real = a.real + b.real; z.imag = a.imag + b.imag; return z; } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff(__pyx_t_double_complex a, __pyx_t_double_complex b) { + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { __pyx_t_double_complex z; z.real = a.real - b.real; z.imag = a.imag - b.imag; return z; } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod(__pyx_t_double_complex a, __pyx_t_double_complex b) { + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { __pyx_t_double_complex z; z.real = a.real * b.real - a.imag * b.imag; z.imag = a.real * b.imag + a.imag * b.real; return z; } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - double denom = b.real * b.real + b.imag * b.imag; - z.real = (a.real * b.real + a.imag * b.imag) / denom; - z.imag = (a.imag * b.real - a.real * b.imag) / denom; - return z; + #if 1 + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + if (b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabs(b.real) >= fabs(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + double r = b.imag / b.real; + double s = 1.0 / (b.real + b.imag * r); + return __pyx_t_double_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + double r = b.real / b.imag; + double s = 1.0 / (b.imag + b.real * r); + return __pyx_t_double_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } + #else + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + if (b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + double denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_double_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg(__pyx_t_double_complex a) { + #endif + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) { __pyx_t_double_complex z; z.real = -a.real; z.imag = -a.imag; return z; } - static CYTHON_INLINE int __Pyx_c_is_zero(__pyx_t_double_complex a) { + static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) { return (a.real == 0) && (a.imag == 0); } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj(__pyx_t_double_complex a) { + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) { __pyx_t_double_complex z; z.real = a.real; z.imag = -a.imag; return z; } #if 1 - static CYTHON_INLINE double __Pyx_c_abs(__pyx_t_double_complex z) { + static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) { #if !defined(HAVE_HYPOT) || defined(_MSC_VER) return sqrt(z.real*z.real + z.imag*z.imag); #else return hypot(z.real, z.imag); #endif } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow(__pyx_t_double_complex a, __pyx_t_double_complex b) { + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { __pyx_t_double_complex z; double r, lnr, theta, z_r, z_theta; if (b.imag == 0 && b.real == (int)b.real) { @@ -18004,14 +18926,14 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { case 1: return a; case 2: - z = __Pyx_c_prod(a, a); - return __Pyx_c_prod(a, a); + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(a, a); case 3: - z = __Pyx_c_prod(a, a); - return __Pyx_c_prod(z, a); + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(z, a); case 4: - z = __Pyx_c_prod(a, a); - return __Pyx_c_prod(z, z); + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(z, z); } } if (a.imag == 0) { @@ -18021,7 +18943,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { r = a.real; theta = 0; } else { - r = __Pyx_c_abs(a); + r = __Pyx_c_abs_double(a); theta = atan2(a.imag, a.real); } lnr = log(r); @@ -18034,6 +18956,37 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif #endif +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_ptrdiff_t(ptrdiff_t value) { + const ptrdiff_t neg_one = (ptrdiff_t) -1, const_zero = (ptrdiff_t) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(ptrdiff_t) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(ptrdiff_t) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(ptrdiff_t) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(ptrdiff_t) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(ptrdiff_t) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(ptrdiff_t), + little, !is_unsigned); + } +} + /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) { const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0; @@ -18043,14 +18996,18 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { return PyInt_FromLong((long) value); } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif } } else { if (sizeof(enum NPY_TYPES) <= sizeof(long)) { return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG } else if (sizeof(enum NPY_TYPES) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif } } { @@ -18129,8 +19086,10 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif if (sizeof(size_t) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG } else if (sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif } } else { #if CYTHON_USE_PYLONG_INTERNALS @@ -18197,8 +19156,10 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif if (sizeof(size_t) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG } else if (sizeof(size_t) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif } } { @@ -18314,8 +19275,10 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif if (sizeof(int) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif } } else { #if CYTHON_USE_PYLONG_INTERNALS @@ -18382,8 +19345,10 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif if (sizeof(int) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif } } { @@ -18499,8 +19464,10 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif if (sizeof(long) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif } } else { #if CYTHON_USE_PYLONG_INTERNALS @@ -18567,8 +19534,10 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif if (sizeof(long) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif } } { @@ -18677,41 +19646,38 @@ static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { return 0; } if (likely(et == PyExc_StopIteration)) { + if (!ev) { + Py_INCREF(Py_None); + value = Py_None; + } #if PY_VERSION_HEX >= 0x030300A0 - if (ev && Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) { + else if (Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) { value = ((PyStopIterationObject *)ev)->value; Py_INCREF(value); Py_DECREF(ev); - Py_XDECREF(tb); - Py_DECREF(et); - *pvalue = value; - return 0; } #endif - if (!ev || !PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { - if (!ev) { - Py_INCREF(Py_None); - ev = Py_None; - } else if (PyTuple_Check(ev)) { - if (PyTuple_GET_SIZE(ev) >= 1) { - PyObject *value; -#if CYTHON_COMPILING_IN_CPYTHON - value = PySequence_ITEM(ev, 0); + else if (unlikely(PyTuple_Check(ev))) { + if (PyTuple_GET_SIZE(ev) >= 1) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + value = PyTuple_GET_ITEM(ev, 0); + Py_INCREF(value); #else - value = PyTuple_GET_ITEM(ev, 0); - Py_INCREF(value); + value = PySequence_ITEM(ev, 0); #endif - Py_DECREF(ev); - ev = value; - } else { - Py_INCREF(Py_None); - Py_DECREF(ev); - ev = Py_None; - } + } else { + Py_INCREF(Py_None); + value = Py_None; } + Py_DECREF(ev); + } + else if (!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { + value = ev; + } + if (likely(value)) { Py_XDECREF(tb); Py_DECREF(et); - *pvalue = ev; + *pvalue = value; return 0; } } else if (!PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { @@ -18788,7 +19754,7 @@ PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value) { } __Pyx_PyThreadState_assign if (value) { -#if CYTHON_COMPILING_IN_PYPY +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON #else if (self->exc_traceback) { PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; @@ -18809,7 +19775,7 @@ PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value) { if (retval) { __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value, &self->exc_traceback); -#if CYTHON_COMPILING_IN_PYPY +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON #else if (self->exc_traceback) { PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; @@ -18919,7 +19885,12 @@ static PyObject *__Pyx_Generator_Next(PyObject *self) { if (yf) { PyObject *ret; gen->is_running = 1; - ret = Py_TYPE(yf)->tp_iternext(yf); + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Generator_Next(yf); + } else + #endif + ret = Py_TYPE(yf)->tp_iternext(yf); gen->is_running = 0; if (likely(ret)) { return ret; @@ -19108,8 +20079,10 @@ static void __Pyx_Coroutine_del(PyObject *self) { static PyObject * __Pyx_Coroutine_get_name(__pyx_CoroutineObject *self) { - Py_INCREF(self->gi_name); - return self->gi_name; + PyObject *name = self->gi_name; + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; } static int __Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value) @@ -19133,8 +20106,10 @@ __Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value) static PyObject * __Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self) { - Py_INCREF(self->gi_qualname); - return self->gi_qualname; + PyObject *name = self->gi_qualname; + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; } static int __Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value) @@ -19566,7 +20541,9 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { else return PyObject_IsTrue(x); } static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; +#endif const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 @@ -19575,8 +20552,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { if (PyLong_Check(x)) #endif return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS m = Py_TYPE(x)->tp_as_number; -#if PY_MAJOR_VERSION < 3 + #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = PyNumber_Int(x); @@ -19585,11 +20563,14 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { name = "long"; res = PyNumber_Long(x); } -#else + #else if (m && m->nb_int) { name = "int"; res = PyNumber_Long(x); } + #endif +#else + res = PyNumber_Int(x); #endif if (res) { #if PY_MAJOR_VERSION < 3 From 8933da477b657f2c1925f968a116242abcb1c903 Mon Sep 17 00:00:00 2001 From: brockhof Date: Wed, 29 Nov 2017 16:34:15 +0100 Subject: [PATCH 309/446] corrected problems from merge conflicts in `logger_bbob.c` by simply taking the current logger for the moment --- code-experiments/src/logger_bbob.c | 141 +++++++++++++++-------------- 1 file changed, 71 insertions(+), 70 deletions(-) diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index e1b951f09..b63b899b1 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -48,9 +48,9 @@ static size_t bbob_dimensions_in_current_infoFile[6] = { 0, 0, 0, 0, 0, 0 }; /* * A possible solution: bbob_logger_is_open becomes a reference * counter and as long as another logger is open, always a new info * file is generated. - * TODO: Shouldn't the new way of handling observers already fix this? - * logger_is_open still triggers when a python run from the python shell is interrupted and a new one is lunched + * TODO: Shouldn't the new way of handling observers already fix this? */ +static int bbob_logger_is_open = 0; /* this could become lock-list of .info files */ /* TODO: add possibility of adding a prefix to the index files (easy to do through observer options) */ @@ -60,17 +60,23 @@ static size_t bbob_dimensions_in_current_infoFile[6] = { 0, 0, 0, 0, 0, 0 }; /* typedef struct { coco_observer_t *observer; int is_initialized; - FILE *index_file; /**< @brief index file */ - FILE *fdata_file; /**< @brief function value aligned data file */ - FILE *tdata_file; /**< @brief number of function evaluations aligned data file */ - FILE *rdata_file; /**< @brief restart info data file */ + /*char *path;// relative path to the data folder. //Wassim: now fetched from the observer */ + /*const char *alg_name; the alg name, for now, temporarily the same as the path. Wassim: Now in the observer */ + FILE *index_file; /* index file */ + FILE *fdata_file; /* function value aligned data file */ + FILE *tdata_file; /* number of function evaluations aligned data file */ + FILE *rdata_file; /* restart info data file */ size_t number_of_evaluations; size_t number_of_evaluations_constraints; double best_fvalue; double last_fvalue; - short written_last_eval; /**< @brief allows writing the data of the final fun eval in the .tdat file if not already written by the t_trigger*/ + short written_last_eval; /* allows writing the data of the final fun eval in the .tdat file if not already written by the t_trigger*/ double *best_solution; - size_t function_id; + /* The following are to only pass data as a parameter in the free function. The + * interface should probably be the same for all free functions so passing the + * problem as a second parameter is not an option even though we need info + * form it.*/ + size_t function_id; /*TODO: consider changing name*/ size_t instance_id; size_t number_of_variables; double optimal_fvalue; @@ -103,7 +109,7 @@ static const char *logger_name = "bbob"; static const char *data_format = "bbob-new"; /* or whatever we agree upon, bbob or bbob2 or bbob-constrained may be alternatives */ /** - * @brief adds a formated line to a data file + * adds a formated line to a data file */ static void logger_bbob_write_data(FILE *target_file, size_t number_of_f_evaluations, @@ -126,14 +132,14 @@ static void logger_bbob_write_data(FILE *target_file, if (number_of_variables < 22) { size_t i; for (i = 0; i < number_of_variables; i++) { - fprintf(target_file, " %.*e", precision_x, x[i]); + fprintf(target_file, " %+5.4e", x[i]); } } fprintf(target_file, "\n"); } /** - * @brief Error when trying to create the file "path" + * Error when trying to create the file "path" */ static void logger_bbob_error_io(FILE *path, int errnum) { const char *error_format = "Error opening file: %s\n "; @@ -141,8 +147,15 @@ static void logger_bbob_error_io(FILE *path, int errnum) { } /** - * @brief Creates the data file or simply opens it + * Creates the data files or simply opens it */ + +/* + calling sequence: + logger_bbob_open_dataFile(&(logger->fdata_file), logger->observer->output_folder, dataFile_path, + ".dat"); + */ + static void logger_bbob_open_dataFile(FILE **target_file, const char *path, const char *dataFile_path, @@ -187,8 +200,8 @@ static void logger_bbob_open_dataFile(FILE **target_file, }*/ /** - * @brief Creates the index file fileName_prefix+problem_id+file_extension in - * folde_path + * Creates the index file fileName_prefix+problem_id+file_extension in + * folde_path */ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, const char *folder_path, @@ -204,10 +217,9 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, char file_path[COCO_PATH_MAX + 2] = { 0 }; FILE **target_file; FILE *tmp_file; - observer_bbob = (observer_bbob_data_t *) logger->observer->data; strncpy(used_dataFile_path, dataFile_path, COCO_PATH_MAX - strlen(used_dataFile_path) - 1); - if (observer_bbob->info_file_first_instance == 0) { - observer_bbob->info_file_first_instance = logger->instance_id; + if (bbob_infoFile_firstInstance == 0) { + bbob_infoFile_firstInstance = logger->instance_id; } function_id_char = coco_strdupf("%lu", (unsigned long) logger->function_id); bbob_infoFile_firstInstance_char = coco_strdupf("%lu", (unsigned long) bbob_infoFile_firstInstance); @@ -222,8 +234,8 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, coco_join_path(file_path, sizeof(file_path), folder_path, file_name, NULL); if (*target_file == NULL) { tmp_file = fopen(file_path, "r"); /* to check for existence */ - if ((tmp_file) && (observer_bbob->current_dim == logger->number_of_variables) - && (observer_bbob->current_fun_id == logger->function_id)) { + if ((tmp_file) && (bbob_current_dim == logger->number_of_variables) + && (bbob_current_funId == logger->function_id)) { /* new instance of current funId and current dim */ newLine = 0; *target_file = fopen(file_path, "a+"); @@ -232,22 +244,21 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, logger_bbob_error_io(*target_file, errnum); } fclose(tmp_file); - } else { /* either file doesn't exist (new fun_id) or new Dim */ + } else { /* either file doesn't exist (new funId) or new Dim */ /* check that the dim was not already present earlier in the file, if so, create a new info file */ - if (observer_bbob->current_dim != logger->number_of_variables) { + if (bbob_current_dim != logger->number_of_variables) { int i, j; for (i = 0; - i < observer_bbob->number_of_dimensions && observer_bbob->dimensions_in_current_info_file[i] != 0 - && observer_bbob->dimensions_in_current_info_file[i] != logger->number_of_variables; i++) { + i < bbob_number_of_dimensions && bbob_dimensions_in_current_infoFile[i] != 0 + && bbob_dimensions_in_current_infoFile[i] != logger->number_of_variables; i++) { ; /* checks whether dimension already present in the current infoFile */ } - - if (i < observer_bbob->number_of_dimensions && observer_bbob->dimensions_in_current_info_file[i] == 0) { + if (i < bbob_number_of_dimensions && bbob_dimensions_in_current_infoFile[i] == 0) { /* new dimension seen for the first time */ - observer_bbob->dimensions_in_current_info_file[i] = logger->number_of_variables; + bbob_dimensions_in_current_infoFile[i] = logger->number_of_variables; newLine = 1; } else { - if (i < observer_bbob->number_of_dimensions) { /* dimension already present, need to create a new file */ + if (i < bbob_number_of_dimensions) { /* dimension already present, need to create a new file */ newLine = 0; file_path[strlen(file_path) - strlen(bbob_infoFile_firstInstance_char) - 7] = 0; /* truncate the instance part */ bbob_infoFile_firstInstance = logger->instance_id; @@ -259,13 +270,13 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, } else { /* we have all dimensions */ newLine = 1; } - for (j = 0; j < observer_bbob->number_of_dimensions; j++) { /* new info file, reinitialize list of dims */ - observer_bbob->dimensions_in_current_info_file[j] = 0; + for (j = 0; j < bbob_number_of_dimensions; j++) { /* new info file, reinitialize list of dims */ + bbob_dimensions_in_current_infoFile[j] = 0; } - observer_bbob->dimensions_in_current_info_file[i] = logger->number_of_variables; + bbob_dimensions_in_current_infoFile[i] = logger->number_of_variables; } } else { - if ( observer_bbob->current_fun_id != logger->function_id ) { + if ( bbob_current_funId != logger->function_id ) { /*new function in the same file */ newLine = 1; } @@ -298,8 +309,8 @@ static void logger_bbob_openIndexFile(logger_bbob_data_t *logger, strncat(used_dataFile_path, bbob_infoFile_firstInstance_char, COCO_PATH_MAX - strlen(used_dataFile_path) - 1); fprintf(*target_file, "%s.dat", used_dataFile_path); /* dataFile_path does not have the extension */ - observer_bbob->current_dim = logger->number_of_variables; - observer_bbob->current_fun_id = logger->function_id; + bbob_current_dim = logger->number_of_variables; + bbob_current_funId = logger->function_id; } } coco_free_memory(function_id_char); @@ -318,7 +329,7 @@ static void logger_bbob_initialize(logger_bbob_data_t *logger, coco_problem_t *i char *tmpc_funId; /* serves to extract the function id as a char *. There should be a better way of doing this! */ char *tmpc_dim; /* serves to extract the dimension as a char *. There should be a better way of doing this! */ char indexFile_prefix[10] = "bbobexp"; /* TODO (minor): make the prefix bbobexp a parameter that the user can modify */ - observer_bbob = (observer_bbob_data_t *)logger->observer->data; + assert(logger != NULL); assert(inner_problem != NULL); assert(inner_problem->problem_id != NULL); @@ -348,9 +359,8 @@ static void logger_bbob_initialize(logger_bbob_data_t *logger, coco_problem_t *i /* data files */ /* TODO: definitely improvable but works for now */ strncat(dataFile_path, "_i", COCO_PATH_MAX - strlen(dataFile_path) - 1); - sprintf(bbob_infoFile_firstInstance_char, "%ld", observer_bbob->info_file_first_instance); strncat(dataFile_path, bbob_infoFile_firstInstance_char, - COCO_PATH_MAX - strlen(dataFile_path) - 1); + COCO_PATH_MAX - strlen(dataFile_path) - 1); logger_bbob_open_dataFile(&(logger->fdata_file), logger->observer->result_folder, dataFile_path, ".dat"); fprintf(logger->fdata_file, bbob_file_header_str, logger->optimal_fvalue); @@ -452,45 +462,27 @@ static void logger_bbob_evaluate(coco_problem_t *problem, const double *x, doubl } /* end logger_bbob_evaluate */ /** - * @brief Finalize function of the logger, writes final data to the index file - */ -static void logger_bbob_finalize(const logger_bbob_data_t *logger){ - - if ((coco_log_level >= COCO_DEBUG) && logger && logger->number_of_evaluations > 0) { - coco_debug("best f=%e after %ld fevals (done observing)\n", logger->best_fvalue, - (unsigned long) logger->number_of_evaluations); - } - /* log the final information of the run in the info file*/ - /*fprintf(logger->index_file, ":%ld|%.1e", logger->number_of_evaluations, - logger->best_fvalue - logger->optimal_fvalue);*/ - - /* log the last evaluation (if not logged) in the *.tdata file*/ - if (!logger->written_last_eval) { - logger_bbob_write_data(logger->tdata_file, logger->number_of_evaluations, logger->last_fvalue, - logger->best_fvalue, logger->optimal_fvalue, logger->best_solution, logger->number_of_variables, logger->observer->precision_f, logger->observer->precision_x); - } - - /* let the observer know that the logger is closed */ - if (logger->observer->data != NULL) { - /*the observer data seems to be freed before the logger in the last run!*/ - ((observer_bbob_data_t *) logger->observer->data)->logger_is_open = 0; - } -} - - -/** - * @brief calls the finalize functions then frees the logger + * Also serves as a finalize run method so. Must be called at the end + * of Each run to correctly fill the index file + * + * TODO: make sure it is called at the end of each run or move the + * writing into files to another function */ static void logger_bbob_free(void *stuff) { - + /* TODO: do all the "non simply freeing" stuff in another function + * that can have problem as input + */ logger_bbob_data_t *logger = (logger_bbob_data_t *) stuff; - logger_bbob_finalize(logger); + if ((coco_log_level >= COCO_DEBUG) && logger && logger->number_of_evaluations > 0) { + coco_debug("best f=%e after %lu fevals (done observing)\n", logger->best_fvalue, + (unsigned long) logger->number_of_evaluations); + } if (logger->index_file != NULL) { fprintf(logger->index_file, ":%lu|%.1e", (unsigned long) logger->number_of_evaluations, logger->best_fvalue - logger->optimal_fvalue); - fclose(logger->index_file); /*Wassim: now done in logger_bbob_finalize*/ + fclose(logger->index_file); logger->index_file = NULL; } if (logger->fdata_file != NULL) { @@ -533,6 +525,7 @@ static void logger_bbob_free(void *stuff) { logger->evaluations = NULL; } + bbob_logger_is_open = 0; } static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *inner_problem) { @@ -546,15 +539,19 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *in coco_warning("logger_bbob(): The bbob logger shouldn't be used to log a problem with %d objectives", inner_problem->number_of_objectives); } - if (((observer_bbob_data_t *) observer->data)->logger_is_open) - coco_error("The current bbob_logger (observer) must be closed before a new one is opened"); + if (bbob_logger_is_open) + coco_error("The current bbob_logger (observer) must be closed before a new one is opened"); + /* This is the name of the folder which happens to be the algName */ + /*logger->path = coco_strdup(observer->output_folder);*/ logger_bbob->index_file = NULL; logger_bbob->fdata_file = NULL; logger_bbob->tdata_file = NULL; logger_bbob->rdata_file = NULL; logger_bbob->number_of_variables = inner_problem->number_of_variables; if (inner_problem->best_value == NULL) { + /* coco_error("Optimal f value must be defined for each problem in order for the logger to work properly"); */ + /* Setting the value to 0 results in the assertion y>=optimal_fvalue being susceptible to failure */ coco_warning("undefined optimal f value. Set to 0"); logger_bbob->optimal_fvalue = 0; } else { @@ -564,6 +561,10 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *in logger_bbob->number_of_evaluations = 0; logger_bbob->number_of_evaluations_constraints = 0; logger_bbob->best_solution = coco_allocate_vector(inner_problem->number_of_variables); + /* TODO: the following inits are just to be in the safe side and + * should eventually be removed. Some fields of the bbob_logger struct + * might be useless + */ logger_bbob->function_id = coco_problem_get_suite_dep_function(inner_problem); logger_bbob->instance_id = coco_problem_get_suite_dep_instance(inner_problem); logger_bbob->written_last_eval = 0; @@ -577,7 +578,7 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *in problem = coco_problem_transformed_allocate(inner_problem, logger_bbob, logger_bbob_free, observer->observer_name); problem->evaluate_function = logger_bbob_evaluate; - ((observer_bbob_data_t *) observer->data)->logger_is_open = 1; + bbob_logger_is_open = 1; return problem; } From 84040c37dd05aeaddc70dbbcf136cdf7ff016eba Mon Sep 17 00:00:00 2001 From: brockhof Date: Thu, 30 Nov 2017 19:16:07 +0100 Subject: [PATCH 310/446] corrected quite some mistakes in the merging to make postprocessing run with large-scale data (1 algorithm for the moment), moved dimsOfInterest to testbedsettings --- code-experiments/src/f_gallagher.c | 8 ++-- code-postprocessing/cocopp/bwsettings.py | 5 -- code-postprocessing/cocopp/captions.py | 4 +- code-postprocessing/cocopp/comp2/ppfig2.py | 3 +- code-postprocessing/cocopp/compall/ppfigs.py | 11 +++-- .../cocopp/compall/pprldmany.py | 2 +- .../cocopp/compall/pptables.py | 3 +- code-postprocessing/cocopp/genericsettings.py | 8 ---- .../cocopp/grayscalesettings.py | 4 -- code-postprocessing/cocopp/ppfig.py | 6 +-- code-postprocessing/cocopp/pprldistr.py | 8 ++-- code-postprocessing/cocopp/pproc.py | 13 +---- code-postprocessing/cocopp/pptable.py | 4 +- code-postprocessing/cocopp/rungeneric1.py | 11 ++--- code-postprocessing/cocopp/rungenericmany.py | 4 +- code-postprocessing/cocopp/testbedsettings.py | 47 ++++++++++++++++++- 16 files changed, 79 insertions(+), 62 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 37d39beff..797330bfb 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -412,8 +412,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz size_t *block_sizes; size_t nb_blocks; size_t idx_blocksize, current_blocksize, next_bs_change; /* needed for the rotated y_i*/ - size_t swap_range; - size_t nb_swaps; + /*size_t swap_range; + size_t nb_swaps;*/ coco_random_state_t *rng = coco_random_new((uint32_t) rseed); const size_t peaks_21 = 21; const size_t peaks_101 = 101; @@ -439,8 +439,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); - swap_range = coco_get_swap_range(dimension, "bbob-largescale"); - nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); + /*swap_range = coco_get_swap_range(dimension, "bbob-largescale"); + nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale");*/ B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; diff --git a/code-postprocessing/cocopp/bwsettings.py b/code-postprocessing/cocopp/bwsettings.py index f5d1f1e10..164359c0b 100644 --- a/code-postprocessing/cocopp/bwsettings.py +++ b/code-postprocessing/cocopp/bwsettings.py @@ -18,9 +18,6 @@ instancesOfInterest = genericsettings.instancesOfInterest -# Variables used in the routines defining desired output for BBOB. -tabDimsOfInterest = (5, 20) # dimension which are displayed in the tables - # function-dependent target function values: hard coded here before we come up # with something smarter. It is supposed the number of level of difficulties # are the same, it is just the target function value that differs. @@ -176,8 +173,6 @@ # 126: 1e-08, 127: 1e-08, 128: 1e-08, 129: 1e-08, # 130: 1e-08}) -rldDimsOfInterest = (5, 20) - single_target_function_values = (1e1, 1e0, 1e-1, 1e-2, 1e-4, 1e-6, 1e-8) # one figure for each summarized_target_function_values = (1e0, 1e-1, 1e-3, 1e-5, 1e-7) # all in one figure summarized_target_function_values = (100, 10, 1e0, 1e-1, 1e-2, 1e-4, 1e-5, 1e-6, 1e-7, 1e-8) diff --git a/code-postprocessing/cocopp/captions.py b/code-postprocessing/cocopp/captions.py index 9f56517f3..4826927bd 100644 --- a/code-postprocessing/cocopp/captions.py +++ b/code-postprocessing/cocopp/captions.py @@ -125,7 +125,9 @@ def get_light_brown_line_text(testbedname): over all 48 functions in the last row.""" # TODO: check whether this makes sense elif (testbedname in [testbedsettings.testbed_name_single, testbedsettings.testbed_name_single_noisy]): return r"""Light brown lines in the background show ECDFs for the most difficult target of all - algorithms benchmarked during BBOB-2009.""" + algorithms benchmarked during BBOB-2009.""" + elif (testbedname == testbedsettings.testbed_name_ls): + return "" else: warnings.warn("Current testbed not supported for this caption text.") diff --git a/code-postprocessing/cocopp/comp2/ppfig2.py b/code-postprocessing/cocopp/comp2/ppfig2.py index 5841a9f12..e85864f89 100644 --- a/code-postprocessing/cocopp/comp2/ppfig2.py +++ b/code-postprocessing/cocopp/comp2/ppfig2.py @@ -30,7 +30,6 @@ #from cocopp.toolsstats import ranksumtest #pass -#dimensions = (2, 3, 5, 10, 20, 40) #Wassim: deleted styles = [{'color': 'c', 'marker': '+', 'markeredgecolor': 'c', @@ -57,7 +56,7 @@ fthresh = 1e-8 xmax = 1000 -dimension_index = dict([(dimensions[i], i) for i in range(len(dimensions))]) +#dimension_index = dict([(dimensions[i], i) for i in range(len(dimensions))]) def _generateData(entry0, entry1, fthresh=None, downsampling=None): diff --git a/code-postprocessing/cocopp/compall/ppfigs.py b/code-postprocessing/cocopp/compall/ppfigs.py index 1236fb6f6..bd94d43ec 100644 --- a/code-postprocessing/cocopp/compall/ppfigs.py +++ b/code-postprocessing/cocopp/compall/ppfigs.py @@ -73,13 +73,14 @@ def prepare_scaling_figure_caption(): scaling_figure_caption_fixed = scaling_figure_caption_start_fixed + scaling_figure_caption_end scaling_figure_caption_rlbased = scaling_figure_caption_start_rlbased + scaling_figure_caption_end - if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi_ext: + if testbedsettings.current_testbed.name in [testbedsettings.testbed_name_bi_ext, + testbedsettings.testbed_name_cons, + testbedsettings.testbed_name_ls]: # NOTE: no runlength-based targets supported yet figure_caption = scaling_figure_caption_fixed elif testbedsettings.current_testbed.name in [testbedsettings.testbed_name_single, testbedsettings.testbed_name_single_noisy, - testbedsettings.testbed_name_bi, - testbedsettings.testbed_name_cons]: + testbedsettings.testbed_name_bi]: if genericsettings.runlength_based_targets: figure_caption = scaling_figure_caption_rlbased else: @@ -91,6 +92,7 @@ def prepare_scaling_figure_caption(): def scaling_figure_caption(for_html = False): + if for_html: figure_caption = htmldesc.getValue('##bbobppfigslegend' + testbedsettings.current_testbed.scenario + '##') @@ -128,7 +130,8 @@ def prepare_ecdfs_figure_caption(): ) if testbed.name in [testbedsettings.testbed_name_bi_ext, - testbedsettings.testbed_name_cons]: + testbedsettings.testbed_name_cons, + testbedsettings.testbed_name_ls]: # NOTE: no runlength-based targets supported yet figure_caption = ecdfs_figure_caption_standard elif testbed.name in [testbedsettings.testbed_name_single, diff --git a/code-postprocessing/cocopp/compall/pprldmany.py b/code-postprocessing/cocopp/compall/pprldmany.py index 132443a5c..8bb042046 100644 --- a/code-postprocessing/cocopp/compall/pprldmany.py +++ b/code-postprocessing/cocopp/compall/pprldmany.py @@ -330,7 +330,7 @@ def get_label_length(label_list): fontsize = genericsettings.minmax_algorithm_fontsize[0] + np.min((1, np.exp(9 - lh))) * ( genericsettings.minmax_algorithm_fontsize[-1] - genericsettings.minmax_algorithm_fontsize[0]) i = 0 # loop over the elements of ys - best_year = 'best %d' % testbedsettings.current_testbed.best_algorithm_year + for j in sorted(ys.keys()): for k in reversed(sorted(ys[j].keys())): # enforce "best" algorithm comes first in case of equality diff --git a/code-postprocessing/cocopp/compall/pptables.py b/code-postprocessing/cocopp/compall/pptables.py index 61c1babd6..b22f9a72e 100644 --- a/code-postprocessing/cocopp/compall/pptables.py +++ b/code-postprocessing/cocopp/compall/pptables.py @@ -64,7 +64,8 @@ def get_table_caption(): table_caption = None if testbedsettings.current_testbed.name in [testbedsettings.testbed_name_bi_ext, - testbedsettings.testbed_name_cons]: + testbedsettings.testbed_name_cons, + testbedsettings.testbed_name_ls]: # NOTE: no runlength-based targets supported yet table_caption = table_caption_one_noreference + table_caption_rest elif testbedsettings.current_testbed.name in [testbedsettings.testbed_name_single, diff --git a/code-postprocessing/cocopp/genericsettings.py b/code-postprocessing/cocopp/genericsettings.py index 014e91cc1..9ddb2e0f8 100644 --- a/code-postprocessing/cocopp/genericsettings.py +++ b/code-postprocessing/cocopp/genericsettings.py @@ -28,10 +28,6 @@ """weights used to sum function evaluations and constraints evaluations in attribute DataSet.evals, if any constraints evaluations are found""" -# Variables used in the routines defining desired output for BBOB. -#tabDimsOfInterest = (5, 20) # dimension which are displayed in the tables -# Wassim: tabDimsOfInterest is now part of current_testbed -#tabDimsOfInterest = [40, 160] # Wassim: large scale TODO: use it by generating new large-scale reference data target_runlengths_in_scaling_figs = [0.5, 1.2, 3, 10, 50] # used in config target_runlengths_in_single_rldistr = [0.5, 2, 10, 50] # used in config target_runlength = 10 # used in ppfigs.main @@ -48,10 +44,6 @@ dim_related_markers = ('+', 'v', '*', 'o', 's', 'D', 'x') dim_related_colors = ('c', 'g', 'b', 'k', 'r', 'm', 'k', 'y', 'k', 'c', 'r', 'm') -#rldDimsOfInterest = (5, 20) -# Wassim: rldDimsOfInterest is now part of current_testbed -#rldDimsOfInterest = [40, 80] # Wassim: for large scale TODO: use it by generating new large-scale reference data - simulated_runlength_bootstrap_sample_size = 10 + 990 // (1 + 10 * max((0, in_a_hurry))) # for tables and plots """10000 would be better for a final camera-ready paper version""" diff --git a/code-postprocessing/cocopp/grayscalesettings.py b/code-postprocessing/cocopp/grayscalesettings.py index 5995183d5..3ab520aef 100644 --- a/code-postprocessing/cocopp/grayscalesettings.py +++ b/code-postprocessing/cocopp/grayscalesettings.py @@ -31,10 +31,6 @@ def convtograyscale(rgb): instancesOfInterest = genericsettings.instancesOfInterest -# Variables used in the routines defining desired output for BBOB. -tabDimsOfInterest = genericsettings.tabDimsOfInterest -rldDimsOfInterest = genericsettings.rldDimsOfInterest - #single_target_function_values = (1e1, 1e0, 1e-1, 1e-2, 1e-4, 1e-6, 1e-8) # one figure for each #summarized_target_function_values = (1e0, 1e-1, 1e-3, 1e-5, 1e-7) # all in one figure #summarized_target_function_values = (100, 10, 1e0, 1e-1, 1e-2, 1e-4, 1e-5, 1e-6, 1e-7, 1e-8) diff --git a/code-postprocessing/cocopp/ppfig.py b/code-postprocessing/cocopp/ppfig.py index e680f1fce..f0f94161d 100644 --- a/code-postprocessing/cocopp/ppfig.py +++ b/code-postprocessing/cocopp/ppfig.py @@ -351,7 +351,7 @@ def save_single_functions_html(filename, elif htmlPage is HtmlPage.PPRLDISTR: names = ['pprldistr', 'ppfvdistr'] - dimensions = genericsettings.rldDimsOfInterest + dimensions = testbedsettings.current_testbed.rldDimsOfInterest header_ecdf = ' Empirical cumulative distribution functions (ECDF)' f.write("

    %s

    \n" % header_ecdf) @@ -369,7 +369,7 @@ def save_single_functions_html(filename, elif htmlPage is HtmlPage.PPRLDISTR2: names = ['pprldistr', 'pplogabs'] - dimensions = genericsettings.rldDimsOfInterest + dimensions = testbedsettings.current_testbed.rldDimsOfInterest header_ecdf = 'Empirical cumulative distribution functions ' \ '(ECDFs) per function group' @@ -388,7 +388,7 @@ def save_single_functions_html(filename, f.write(caption_string_format % htmldesc.getValue('##' + key + '##')) elif htmlPage is HtmlPage.PPLOGLOSS: - dimensions = genericsettings.rldDimsOfInterest + dimensions = testbedsettings.current_testbed.rldDimsOfInterest if reference_algorithm_exists: current_header = 'aRT loss ratios' f.write("

    %s

    \n" % current_header) diff --git a/code-postprocessing/cocopp/pprldistr.py b/code-postprocessing/cocopp/pprldistr.py index 39c7246d6..a6880567d 100644 --- a/code-postprocessing/cocopp/pprldistr.py +++ b/code-postprocessing/cocopp/pprldistr.py @@ -139,7 +139,7 @@ def load_previous_RLBdata(filename=previous_RLBdata_filename): def caption_single(): - best_year = testbedsettings.current_testbed.best_algorithm_year + caption_part_one = r"""% Empirical cumulative distribution functions (ECDF), plotting the fraction of trials with an outcome not larger than the respective value on the $x$-axis. @@ -175,7 +175,8 @@ def caption_single(): else: figure_caption = caption_part_one + caption_left_fixed_targets + caption_right elif testbedsettings.current_testbed.name in [testbedsettings.testbed_name_bi_ext, - testbedsettings.testbed_name_cons]: + testbedsettings.testbed_name_cons, + testbedsettings.testbed_name_ls]: # no best algorithm defined yet: figure_caption = caption_part_one + caption_left_fixed_targets + caption_right else: @@ -244,7 +245,8 @@ def caption_two(): + caption_two_rlbased_targets_part3) if testbedsettings.current_testbed.name in [testbedsettings.testbed_name_bi_ext, - testbedsettings.testbed_name_cons]: + testbedsettings.testbed_name_cons, + testbedsettings.testbed_name_ls]: # NOTE: no runlength-based targets supported yet figure_caption = caption_two_fixed elif testbedsettings.current_testbed.name in [testbedsettings.testbed_name_single, diff --git a/code-postprocessing/cocopp/pproc.py b/code-postprocessing/cocopp/pproc.py index 55e75c961..705d997db 100644 --- a/code-postprocessing/cocopp/pproc.py +++ b/code-postprocessing/cocopp/pproc.py @@ -765,10 +765,6 @@ def get_suite(self): suite = None if hasattr(self, 'suite'): suite = getattr(self, 'suite') - if isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): - # Wassim: prevents from sitching back to GECCOBBOBTestbed once we are in large-scale - # Wassim: TODO: not perfect, should be done in a better way, by simply keeping a single instace of current_testbed - testbed = testbedsettings.default_testbed_largescale if not suite: if self.isBiobjective(): suite = testbedsettings.default_suite_bi @@ -1038,17 +1034,10 @@ def _cut_data(self): """ - # Wassim: this should be done on the dataSetList level, and here only if it's not yet set - if not testbedsettings.current_testbed or \ - isinstance(testbedsettings.current_testbed, testbedsettings.GECCOBBOBTestbed): - testbedsettings.load_current_testbed(self.testbed_name(), TargetValues) - - if isinstance(testbedsettings.current_testbed, testbedsettings.GECCOBBOBTestbed) or \ - isinstance(testbedsettings.current_testbed, testbedsettings.SingleObjectiveTestbed): + if isinstance(testbedsettings.current_testbed, testbedsettings.GECCOBBOBTestbed): Ndata = np.size(self.evals, 0) i = Ndata while i > 1 and not self.isBiobjective() and self.evals[i-1][0] <= self.precision: - #Wassim: can GECCOBBOBTestbed be biObjective?! i -= 1 i += 1 if i < Ndata: diff --git a/code-postprocessing/cocopp/pptable.py b/code-postprocessing/cocopp/pptable.py index ea4c37a35..8ceab08bf 100644 --- a/code-postprocessing/cocopp/pptable.py +++ b/code-postprocessing/cocopp/pptable.py @@ -53,7 +53,7 @@ def get_table_caption(): """ Sets table caption, based on the testbedsettings.current_testbed and genericsettings.runlength_based_targets. """ - best_year = testbedsettings.current_testbed.best_algorithm_year + table_caption_start = r"""% Average running time (\aRT\ in number of function evaluations) divided by the \aRT\ of !!THE-REF-ALG!! in #1. The \aRT\ @@ -97,7 +97,7 @@ def get_table_caption(): table_caption = table_caption_start + table_caption_rlbased + table_caption_rest else: table_caption = table_caption_start + table_caption_fixedtargets + table_caption_rest - elif testbedsettings.current_testbed.name in ['bbob-biobj-ext', testbedsettings.testbed_name_cons]: + elif testbedsettings.current_testbed.name in ['bbob-biobj-ext', 'bbob-constrained', 'bbob-largescale']: # all testbeds without provided reference algorithm table_caption = table_caption_no_reference_algorithm else: diff --git a/code-postprocessing/cocopp/rungeneric1.py b/code-postprocessing/cocopp/rungeneric1.py index a5ac5d77a..693581c41 100644 --- a/code-postprocessing/cocopp/rungeneric1.py +++ b/code-postprocessing/cocopp/rungeneric1.py @@ -294,8 +294,7 @@ def main(argv=None): from . import config config.config_target_values_setting(genericsettings.isExpensive, genericsettings.runlength_based_targets) - config.config(dsList.dictByDim()[max(dsList.dictByDim().keys())][0].testbed_name()) - # Wassim: now checkes the highest dimension testbed instead of the first for eventual large-scale scenarii + config.config(dsList[0].testbed_name, dsList[0].get_data_format()) if genericsettings.verbose: for i in dsList: @@ -405,7 +404,7 @@ def main(argv=None): 'results will be mixed in the "all functions" ' 'ECDF figures.') dictDim = dsList.dictByDim() - for dim in testbedsettings.current_testbed.rldDimsOfInterest: #inset.rldDimsOfInterest: #Wassim: + for dim in testbedsettings.current_testbed.rldDimsOfInterest: try: sliceDim = dictDim[dim] except KeyError: @@ -457,7 +456,7 @@ def main(argv=None): except (SyntaxError, NameError, ValueError): print("Float value required.") dictDim = sliceNoise.dictByDim() - for d in testbedsettings.current_testbed.rldDimsOfInterest: #inset.rldDimsOfInterest: #Wassim: + for d in testbedsettings.current_testbed.rldDimsOfInterest: try: sliceDim = dictDim[d] except KeyError: @@ -469,10 +468,6 @@ def main(argv=None): info = '%s' % fGroup pplogloss.main(sliceFuncGroup, CrE, True, algoutputdir, info) - pplogloss.evalfmax = None # Resetting the max #fevalsfactor - except KeyError: - warnings.warn("bestAlg data not found, no pplogloss output") - print_done() prepend_to_file(latex_commands_file, diff --git a/code-postprocessing/cocopp/rungenericmany.py b/code-postprocessing/cocopp/rungenericmany.py index 2a19d84c5..5ee225d3b 100644 --- a/code-postprocessing/cocopp/rungenericmany.py +++ b/code-postprocessing/cocopp/rungenericmany.py @@ -400,7 +400,7 @@ def main(argv=None): dic_dim0 = ds_list0.dictByDim() dic_dim1 = ds_list1.dictByDim() for dim in set(dic_dim0.keys()) & set(dic_dim1.keys()): - if dim in inset.rldDimsOfInterest: + if dim in inset.current_testbed.rldDimsOfInterest: # ECDF for all functions altogether try: pprldistr2.main(dic_dim0[dim], dic_dim1[dim], dim, @@ -447,7 +447,7 @@ def main(argv=None): pprldistr.fmax = None # Resetting the max final value pprldistr.evalfmax = None # Resetting the max #fevalsfactor # ECDFs of all functions altogether - if dim in inset.rldDimsOfInterest: + if dim in inset.current_testbed.rldDimsOfInterest: try: pprldistr.comp(dic_dim1[dim], dic_dim0[dim], testbedsettings.current_testbed.rldValsOfInterest, diff --git a/code-postprocessing/cocopp/testbedsettings.py b/code-postprocessing/cocopp/testbedsettings.py index 525703656..2cabfc119 100644 --- a/code-postprocessing/cocopp/testbedsettings.py +++ b/code-postprocessing/cocopp/testbedsettings.py @@ -12,15 +12,19 @@ scenario_biobjrlbased = 'biobjrlbased' scenario_biobjextfixed = 'biobjextfixed' scenario_constrainedfixed = 'constrainedfixed' +scenario_largescalefixed = 'largescalefixed' + all_scenarios = [scenario_rlbased, scenario_fixed, scenario_biobjfixed, scenario_biobjrlbased, - scenario_biobjextfixed, scenario_constrainedfixed] + scenario_biobjextfixed, scenario_constrainedfixed, + scenario_largescalefixed] testbed_name_single = 'bbob' testbed_name_single_noisy = 'bbob-noisy' testbed_name_bi = 'bbob-biobj' testbed_name_bi_ext = 'bbob-biobj-ext' testbed_name_cons = 'bbob-constrained' +testbed_name_ls = 'bbob-largescale' default_suite_single = 'bbob' default_suite_single_noisy = 'bbob-noisy' @@ -31,6 +35,7 @@ default_testbed_bi = 'GECCOBiObjBBOBTestbed' default_testbed_bi_ext = 'GECCOBiObjExtBBOBTestbed' default_testbed_cons = 'CONSBBOBTestbed' +default_testbed_ls = 'BBOBLargeScaleTestbed' current_testbed = None @@ -39,7 +44,8 @@ default_suite_single_noisy: default_testbed_single_noisy, default_suite_bi: default_testbed_bi, 'bbob-biobj-ext': default_testbed_bi_ext, - 'bbob-constrained': default_testbed_cons + 'bbob-constrained': default_testbed_cons, + 'bbob-largescale': default_testbed_ls } @@ -199,12 +205,15 @@ class GECCOBBOBTestbed(Testbed): shortinfo_filename = 'bbob-benchmarkshortinfos.txt' pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # used in config for expensive setting pptable_targetsOfInterest = (10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7) # for pptable and pptablemany + dimsOfInterest = (5, 20) settings = dict( info_filename='bbob-benchmarkinfos.txt', shortinfo_filename=shortinfo_filename, name=testbed_name_single, short_names=get_short_names(shortinfo_filename), + rldDimsOfInterest=dimsOfInterest, + tabDimsOfInterest=dimsOfInterest, hardesttargetlatex='10^{-8}', # used for ppfigs, pptable and pptables ppfigs_ftarget=1e-8, # to set target runlength in expensive setting, use genericsettings.target_runlength ppfig2_ftarget=1e-8, @@ -372,12 +381,15 @@ class GECCOBiObjBBOBTestbed(Testbed): shortinfo_filename = 'bbob-biobj-benchmarkshortinfos.txt' pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # used in config for expensive setting pptable_targetsOfInterest = (10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7) # for pptable and pptablemany + dimsOfInterest = (5, 20) settings = dict( info_filename='bbob-biobj-benchmarkinfos.txt', shortinfo_filename=shortinfo_filename, name=testbed_name_bi, short_names=get_short_names(shortinfo_filename), + rldDimsOfInterest=dimsOfInterest, + tabDimsOfInterest=dimsOfInterest, hardesttargetlatex='10^{-5}', # used for ppfigs, pptable and pptables ppfigs_ftarget=1e-5, # to set target runlength in expensive setting, use genericsettings.target_runlength ppfig2_ftarget=1e-5, @@ -465,4 +477,35 @@ def __init__(self, targetValues): self.instantiate_attributes(targetValues, [key]) +class BBOBLargeScaleTestbed(GECCOBBOBTestbed): + """ Settings related to `bbob-largescale` test suite. + """ + + dimsOfInterest = (80, 320) + + settings = dict( + name=testbed_name_ls, + first_dimension=20, + scenario=scenario_largescalefixed, + dimensions_to_display=[20, 40, 80, 160, 320, 640], + tabDimsOfInterest=dimsOfInterest, + rldDimsOfInterest=dimsOfInterest, + reference_algorithm_filename='', # TODO produce correct reference algo and update this line + reference_algorithm_displayname='' # TODO: should be read in from data set in reference_algorithm_filename + ) + + + def __init__(self, targetValues): + super(BBOBLargeScaleTestbed, self).__init__(targetValues) + + if 11 < 3: + # override settings if needed... + self.settings.reference_algorithm_filename = 'refalgs/best2018-bbob-largescale.tar.gz' + self.settings.reference_algorithm_displayname = 'best 2018' # TODO: should be read in from data set in reference_algorithm_filename + self.settings.short_names = get_short_names(self.shortinfo_filename) + self.settings.instancesOfInterest = {1: 1, 2: 1, 3: 1, 4: 1, 5: 1} + for key, val in BBOBLargeScaleTestbed.settings.items(): + setattr(self, key, val) + if 'target_values' in key or 'targetsOfInterest' in key: + self.instantiate_attributes(targetValues, [key]) From c9e4908eacb22c32dbd0b01e337926de6a301e88 Mon Sep 17 00:00:00 2001 From: brockhof Date: Fri, 1 Dec 2017 01:06:03 +0100 Subject: [PATCH 311/446] further corrections and changes to make postprocessing work for 2 biobjective algorithms --- code-postprocessing/cocopp/comp2/ppfig2.py | 4 +- code-postprocessing/cocopp/comp2/ppscatter.py | 4 +- code-postprocessing/cocopp/compall/ppfigs.py | 56 +++++-------------- .../cocopp/compall/pptables.py | 4 +- code-postprocessing/cocopp/genericsettings.py | 6 +- code-postprocessing/cocopp/ppfigdim.py | 9 --- code-postprocessing/cocopp/ppfigparam.py | 1 - code-postprocessing/cocopp/pprldistr.py | 2 +- code-postprocessing/cocopp/pproc.py | 2 +- code-postprocessing/cocopp/rungenericmany.py | 6 +- code-postprocessing/cocopp/testbedsettings.py | 2 + 11 files changed, 25 insertions(+), 71 deletions(-) diff --git a/code-postprocessing/cocopp/comp2/ppfig2.py b/code-postprocessing/cocopp/comp2/ppfig2.py index e85864f89..fb4bbabbd 100644 --- a/code-postprocessing/cocopp/comp2/ppfig2.py +++ b/code-postprocessing/cocopp/comp2/ppfig2.py @@ -190,7 +190,7 @@ def annotate(entry0, entry1, dim, minfvalue=1e-8, nbtests=1): tmp2 = str(int(line[0][2])) txt = tmp + '/' + tmp2 - dimensions = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display + dimensions = testbedsettings.current_testbed.dimensions_to_display dimension_index = dict([(dimensions[i], i) for i in xrange(len(dimensions))]) dims = dimension_index @@ -261,7 +261,7 @@ def main(dsList0, dsList1, minfvalue=1e-8, outputdir=''): dictFun0 = dsList0.dictByFunc() dictFun1 = dsList1.dictByFunc() - dimensions = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display + dimensions = testbedsettings.current_testbed.dimensions_to_display dimension_index = dict([(dimensions[i], i) for i in xrange(len(dimensions))]) for func in set.intersection(set(dictFun0), set(dictFun1)): diff --git a/code-postprocessing/cocopp/comp2/ppscatter.py b/code-postprocessing/cocopp/comp2/ppscatter.py index 4ed9e824c..fa3e103a5 100644 --- a/code-postprocessing/cocopp/comp2/ppscatter.py +++ b/code-postprocessing/cocopp/comp2/ppscatter.py @@ -46,8 +46,6 @@ from .. import pproc from .. import captions -#dimensions = (2, 3, 5, 10, 20, 40) ## Wassim: # - # formattings markersize = 14 # modified in config.py markersize_addon_beyond_maxevals = -6 @@ -164,7 +162,7 @@ def main(dsList0, dsList1, outputdir, settings): funInfos = ppfigparam.read_fun_infos() - dimensions = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display + dimensions = testbedsettings.current_testbed.dimensions_to_display for f in funcs: dictDim0 = dictFunc0[f].dictByDim() diff --git a/code-postprocessing/cocopp/compall/ppfigs.py b/code-postprocessing/cocopp/compall/ppfigs.py index bd94d43ec..634a118b1 100644 --- a/code-postprocessing/cocopp/compall/ppfigs.py +++ b/code-postprocessing/cocopp/compall/ppfigs.py @@ -144,17 +144,6 @@ def prepare_ecdfs_figure_caption(): else: figure_caption = ecdfs_figure_caption_standard -# if testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi: -# # NOTE: no runlength-based targets supported yet -# figure_caption = ecdfs_figure_caption_standard -# elif testbedsettings.current_testbed.name == testbedsettings.testbed_name_single: -# if genericsettings.runlength_based_targets: -# figure_caption = ecdfs_figure_caption_rlbased + bestyeartext -# else: -# figure_caption = ecdfs_figure_caption_standard + bestyeartext -# else: -# warnings.warn("Current settings do not support ppfigdim caption.") - return figure_caption @@ -298,7 +287,6 @@ def plotLegend(handles, maxval=None): for k in sorted(ys[j].keys()): # enforce that a "best" algorithm comes first in case of equality tmp = [] - best_year_label = 'best %d' %testbedsettings.current_testbed.best_algorithm_year for h in ys[j][k]: if 'best' in plt.getp(h, 'label'): tmp.insert(0, h) @@ -379,18 +367,13 @@ def beautify(legend=False, rightlegend=False): # ticks on axes #axisHandle.invert_xaxis() - #dimticklist = (2, 3, 5, 10, 20, 40) # TODO: should become input arg at some point? - dimticklist = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display - # dimannlist = (2, 3, 5, 10, 20, 40) # TODO: should become input arg at some point? - dimannlist = testbedsettings.current_testbed.dimensions_to_display # Wassim: dimensions_to_display + dimticklist = testbedsettings.current_testbed.dimensions_to_display + dimannlist = testbedsettings.current_testbed.dimensions_to_display # TODO: All these should depend on (xlim, ylim) axisHandle.set_xticks(dimticklist) axisHandle.set_xticklabels([str(n) for n in dimannlist]) - # axes limites # Wassim: what do these numbers mean exactly?! - - # Wassim: to dynamically set xlim import numpy dim_min_margin = testbedsettings.current_testbed.dimensions_to_display[0] * 0.9 dim_max_margin = testbedsettings.current_testbed.dimensions_to_display[-1] * 1.125 @@ -651,30 +634,17 @@ def main(dictAlg, html_file_prefix, sorted_algorithms=None, output_dir='ppdata', alg_definitions_html += (', ' if i > 0 else '') + '%s: %s' % (symb_html, toolsdivers.str_to_latex(toolsdivers.strip_pathname1(sorted_algorithms[i]))) toolsdivers.prepend_to_file(latex_commands_file, [providecolorsforlatex()]) # needed since the latest change in ACM template - if not isinstance(testbedsettings.current_testbed, testbedsettings.LargeScaleTestbed): - toolsdivers.prepend_to_file(latex_commands_filename, - [#'\\providecommand{\\bbobppfigsftarget}{\\ensuremath{10^{%s}}}' - # % target.loglabel(0), # int(numpy.round(numpy.log10(target))), - '\\providecommand{\\bbobppfigslegend}[1]{', - scaling_figure_caption(), - 'Legend: '] + alg_definitions + ['}'] - ) - toolsdivers.prepend_to_file(latex_commands_filename, - ['\\providecommand{\\bbobECDFslegend}[1]{', - ecdfs_figure_caption(), '}'] - ) - else: - toolsdivers.prepend_to_file(latex_commands_filename, - [#'\\providecommand{\\bbobppfigsftarget}{\\ensuremath{10^{%s}}}' - # % target.loglabel(0), # int(numpy.round(numpy.log10(target))), - '\\providecommand{\\bbobppfigslegend}[1]{', - scaling_figure_caption(), - 'Legend: '] + alg_definitions + ['}'] - ) - toolsdivers.prepend_to_file(latex_commands_filename, - ['\\providecommand{\\bbobECDFslegend}[1]{', - ecdfs_figure_caption(), '}'] - ) + toolsdivers.prepend_to_file(latex_commands_file, + [ # '\\providecommand{\\bbobppfigsftarget}{\\ensuremath{10^{%s}}}' + # % target.loglabel(0), # int(numpy.round(numpy.log10(target))), + '\\providecommand{\\bbobppfigslegend}[1]{', + scaling_figure_caption(), + 'Legend: '] + alg_definitions + ['}'] + ) + toolsdivers.prepend_to_file(latex_commands_file, + ['\\providecommand{\\bbobECDFslegend}[1]{', + ecdfs_figure_caption(), '}'] + ) toolsdivers.replace_in_file(htmlFile, '##bbobppfigslegend##', scaling_figure_caption(True) + 'Legend: ' + alg_definitions_html) diff --git a/code-postprocessing/cocopp/compall/pptables.py b/code-postprocessing/cocopp/compall/pptables.py index b22f9a72e..360914d3b 100644 --- a/code-postprocessing/cocopp/compall/pptables.py +++ b/code-postprocessing/cocopp/compall/pptables.py @@ -21,7 +21,7 @@ def get_table_caption(): Based on the testbedsettings.current_testbed and genericsettings.runlength_based_targets. """ - best_year = testbedsettings.current_testbed.best_algorithm_year + table_caption_one = r"""% Average runtime (\aRT\ in number of function evaluations) divided by the respective !!BEST-ART!! in @@ -385,8 +385,6 @@ def main(dict_alg, sorted_algs, output_dir='.', function_targets_line=True, late # significance test of best given algorithm against all others best_alg_idx = numpy.array(algerts).argsort(0)[0, :] # indexed by target index significance_versus_others = significance_all_best_vs_other(algentries, targets, best_alg_idx)[0] - - significance_versus_others = significance_all_best_vs_other(algentries, targetsOfInterest, best_alg_idx)[0] # Wassim: seems to crash when data is incomplete # Create the table table = [] tableHtml = [] diff --git a/code-postprocessing/cocopp/genericsettings.py b/code-postprocessing/cocopp/genericsettings.py index 9ddb2e0f8..65ab81ca3 100644 --- a/code-postprocessing/cocopp/genericsettings.py +++ b/code-postprocessing/cocopp/genericsettings.py @@ -17,12 +17,8 @@ in_a_hurry = 1000 # [0, 1000] lower resolution, no eps, saves 30% time maxevals_fix_display = None # 3e2 is the expensive setting only used in config, yet to be improved!? runlength_based_targets = False # may be overwritten by expensive setting -#dimensions_to_display = (2, 3, 5, 10, 20, 40) # this could be used to set the dimensions in respective modules -# Wassim: dimensions_to_display is now part of current_testbed -#dimensions_to_display_ls = (20, 40, 80, 160, 320, 640) # Wassim: large scale suite figure_file_formats = ['svg', 'pdf'] scaling_figures_with_boxes = True -# should replace ppfigdim.dimsBBOB, ppfig2.dimensions, ppfigparam.dimsBBOB? weight_evaluations_constraints = (1, 1) """weights used to sum function evaluations and constraints evaluations @@ -272,7 +268,7 @@ shortoptlist = "hvpo:" longoptlist = ["help", "output-dir=", "noisy", "noise-free", "tab-only", "fig-only", "rld-only", "no-rld-single-fcts", - "verbose", "settings=", "conv", "large-scale", # Wassim: added large-scale option + "verbose", "settings=", "conv", "expensive", "runlength-based", "los-only", "crafting-effort=", "pickle", "sca-only", "no-svg", "constrained"] diff --git a/code-postprocessing/cocopp/ppfigdim.py b/code-postprocessing/cocopp/ppfigdim.py index 22358e00a..678d34763 100644 --- a/code-postprocessing/cocopp/ppfigdim.py +++ b/code-postprocessing/cocopp/ppfigdim.py @@ -82,12 +82,6 @@ # should correspond with the colors in pprldistr. -# Wassim: TODO seems to be set before rungeneric so useless here!!!! -#dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls - - -#functions_with_legend = (1, 24, 101, 130) - def scaling_figure_caption(): """Provides a figure caption with the help of captions.py for replacing common texts, abbreviations, etc. @@ -179,8 +173,6 @@ def beautify(axesLabel=True): # Ticks on axes # axisHandle.invert_xaxis() - # Wassim: - #dimensions = genericsettings.dimensions_to_display if not genericsettings.isLargeScale else genericsettings.dimensions_to_display_ls dimensions = testbedsettings.current_testbed.dimensions_to_display dimticklist = dimensions dimannlist = dimensions @@ -501,7 +493,6 @@ def plot_previous_algorithms(func, target=None): # lambda x: [1e-8]): return None refalgdata = [] - #for d in dimensions: #Wassim: now uses testbedsettings.current_testbed.dimensions_to_display dimensions = testbedsettings.current_testbed.dimensions_to_display for d in dimensions: try: diff --git a/code-postprocessing/cocopp/ppfigparam.py b/code-postprocessing/cocopp/ppfigparam.py index 3879b039d..518555c15 100755 --- a/code-postprocessing/cocopp/ppfigparam.py +++ b/code-postprocessing/cocopp/ppfigparam.py @@ -37,7 +37,6 @@ refcolor = 'wheat' # should correspond with the colors in pprldistr. -#dimsBBOB = (2, 3, 5, 10, 20, 40) # Wassim: Deleted # Get benchmark short infos, prepended with the function id. def read_fun_infos(): diff --git a/code-postprocessing/cocopp/pprldistr.py b/code-postprocessing/cocopp/pprldistr.py index a6880567d..94481aa8e 100644 --- a/code-postprocessing/cocopp/pprldistr.py +++ b/code-postprocessing/cocopp/pprldistr.py @@ -185,7 +185,7 @@ def caption_single(): return captions.replace(figure_caption) def caption_two(): - best_year = testbedsettings.current_testbed.best_algorithm_year + caption_two_part_one = r"""% Empirical cumulative distributions (ECDF) of run lengths and speed-up ratios """ + ("""in %d-D (left) and %d-D (right).""" % tuple(testbedsettings.current_testbed.tabDimsOfInterest)) + r""" diff --git a/code-postprocessing/cocopp/pproc.py b/code-postprocessing/cocopp/pproc.py index 705d997db..9f40d1b70 100644 --- a/code-postprocessing/cocopp/pproc.py +++ b/code-postprocessing/cocopp/pproc.py @@ -1768,7 +1768,7 @@ def processIndexFile(self, indexFile): header = '' while True: try: - if 'indicator' not in header: #Wassim: not very generic! + if 'indicator' not in header: header = advance_iterator(f) while not header.strip(): # remove blank lines header = advance_iterator(f) diff --git a/code-postprocessing/cocopp/rungenericmany.py b/code-postprocessing/cocopp/rungenericmany.py index 5ee225d3b..6535e1a64 100644 --- a/code-postprocessing/cocopp/rungenericmany.py +++ b/code-postprocessing/cocopp/rungenericmany.py @@ -317,7 +317,7 @@ def main(argv=None): config.config(dsList[0].testbed_name, dsList[0].get_data_format()) for i in dsList: - if i.dim not in genericsettings.dimensions_to_display: + if i.dim not in testbedsettings.current_testbed.dimensions_to_display: continue # check whether current set of instances correspond to correct # setting of a BBOB workshop and issue a warning otherwise: @@ -400,7 +400,7 @@ def main(argv=None): dic_dim0 = ds_list0.dictByDim() dic_dim1 = ds_list1.dictByDim() for dim in set(dic_dim0.keys()) & set(dic_dim1.keys()): - if dim in inset.current_testbed.rldDimsOfInterest: + if dim in testbedsettings.current_testbed.rldDimsOfInterest: # ECDF for all functions altogether try: pprldistr2.main(dic_dim0[dim], dic_dim1[dim], dim, @@ -447,7 +447,7 @@ def main(argv=None): pprldistr.fmax = None # Resetting the max final value pprldistr.evalfmax = None # Resetting the max #fevalsfactor # ECDFs of all functions altogether - if dim in inset.current_testbed.rldDimsOfInterest: + if dim in testbedsettings.current_testbed.rldDimsOfInterest: try: pprldistr.comp(dic_dim1[dim], dic_dim0[dim], testbedsettings.current_testbed.rldValsOfInterest, diff --git a/code-postprocessing/cocopp/testbedsettings.py b/code-postprocessing/cocopp/testbedsettings.py index 2cabfc119..522cc7dd6 100644 --- a/code-postprocessing/cocopp/testbedsettings.py +++ b/code-postprocessing/cocopp/testbedsettings.py @@ -212,6 +212,7 @@ class GECCOBBOBTestbed(Testbed): shortinfo_filename=shortinfo_filename, name=testbed_name_single, short_names=get_short_names(shortinfo_filename), + dimensions_to_display=(2, 3, 5, 10, 20, 40), rldDimsOfInterest=dimsOfInterest, tabDimsOfInterest=dimsOfInterest, hardesttargetlatex='10^{-8}', # used for ppfigs, pptable and pptables @@ -388,6 +389,7 @@ class GECCOBiObjBBOBTestbed(Testbed): shortinfo_filename=shortinfo_filename, name=testbed_name_bi, short_names=get_short_names(shortinfo_filename), + dimensions_to_display=(2, 3, 5, 10, 20, 40), rldDimsOfInterest=dimsOfInterest, tabDimsOfInterest=dimsOfInterest, hardesttargetlatex='10^{-5}', # used for ppfigs, pptable and pptables From f1a3ab483916908a4f9e297a628a0817e5ab8892 Mon Sep 17 00:00:00 2001 From: brockhof Date: Tue, 5 Dec 2017 10:55:27 +0100 Subject: [PATCH 312/446] recompiled interface.c (otherwise `bbob-largescale` was not available in the cocoex module) --- .../build/python/cython/interface.c | 3047 ++++++++--------- 1 file changed, 1510 insertions(+), 1537 deletions(-) diff --git a/code-experiments/build/python/cython/interface.c b/code-experiments/build/python/cython/interface.c index eb6c3d739..f3098000c 100644 --- a/code-experiments/build/python/cython/interface.c +++ b/code-experiments/build/python/cython/interface.c @@ -652,7 +652,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { - "cython/interface.pyx", + "cython\\interface.pyx", "__init__.pxd", "type.pxd", }; @@ -693,7 +693,7 @@ typedef struct { } __Pyx_BufFmt_Context; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":725 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -702,7 +702,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":726 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -711,7 +711,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":727 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":727 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -720,7 +720,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":728 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":728 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -729,7 +729,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":732 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -738,7 +738,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":733 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -747,7 +747,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":734 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":734 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -756,7 +756,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":735 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":735 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -765,7 +765,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":739 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":739 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -774,7 +774,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":740 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":740 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -783,7 +783,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":749 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -792,7 +792,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":750 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":750 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -801,7 +801,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -810,7 +810,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -819,7 +819,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":754 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":754 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -828,7 +828,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -837,7 +837,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":757 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":757 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -846,7 +846,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":758 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -855,7 +855,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -864,7 +864,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":761 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":761 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -873,7 +873,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -912,7 +912,7 @@ struct __pyx_obj_6cocoex_9interface_Observer; struct __pyx_obj_6cocoex_9interface_Problem; struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -921,7 +921,7 @@ struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":765 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":765 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -930,7 +930,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -939,7 +939,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -950,7 +950,7 @@ typedef npy_cdouble __pyx_t_5numpy_complex_t; struct __pyx_opt_args_6cocoex_9interface_Problem_init; struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize; -/* "cython/interface.pyx":617 +/* "cython/interface.pyx":616 * coco_observer_free(self._observer) * * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< @@ -963,7 +963,7 @@ struct __pyx_opt_args_6cocoex_9interface_Problem_init { PyObject *suite_name; }; -/* "cython/interface.pyx":650 +/* "cython/interface.pyx":649 * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< @@ -975,7 +975,7 @@ struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize { PyObject *free; }; -/* "cython/interface.pyx":79 +/* "cython/interface.pyx":78 * cdef coco_observer_t* _current_observer * * cdef class Suite: # <<<<<<<<<<<<<< @@ -1001,7 +1001,7 @@ struct __pyx_obj_6cocoex_9interface_Suite { }; -/* "cython/interface.pyx":535 +/* "cython/interface.pyx":534 * s is self or s.free() * * cdef class Observer: # <<<<<<<<<<<<<< @@ -1017,7 +1017,7 @@ struct __pyx_obj_6cocoex_9interface_Observer { }; -/* "cython/interface.pyx":626 +/* "cython/interface.pyx":625 * res._suite_name = suite_name * return res._initialize(problem, free) * cdef class Problem: # <<<<<<<<<<<<<< @@ -1045,7 +1045,7 @@ struct __pyx_obj_6cocoex_9interface_Problem { }; -/* "cython/interface.pyx":510 +/* "cython/interface.pyx":509 * return len(self._indices) * * def __iter__(self): # <<<<<<<<<<<<<< @@ -1064,7 +1064,7 @@ struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ { -/* "cython/interface.pyx":79 +/* "cython/interface.pyx":78 * cdef coco_observer_t* _current_observer * * cdef class Suite: # <<<<<<<<<<<<<< @@ -1078,7 +1078,7 @@ struct __pyx_vtabstruct_6cocoex_9interface_Suite { static struct __pyx_vtabstruct_6cocoex_9interface_Suite *__pyx_vtabptr_6cocoex_9interface_Suite; -/* "cython/interface.pyx":626 +/* "cython/interface.pyx":625 * res._suite_name = suite_name * return res._initialize(problem, free) * cdef class Problem: # <<<<<<<<<<<<<< @@ -1891,9 +1891,8 @@ static const char __pyx_k_cocoex_interface[] = "cocoex.interface"; static const char __pyx_k_initial_solution[] = "initial_solution"; static const char __pyx_k_cocoex_exceptions[] = "cocoex.exceptions"; static const char __pyx_k_known_suite_names[] = "known_suite_names"; -static const char __pyx_k_Suite_ids_line_391[] = "Suite.ids (line 391)"; +static const char __pyx_k_Suite_ids_line_390[] = "Suite.ids (line 390)"; static const char __pyx_k_NotImplementedError[] = "NotImplementedError"; -static const char __pyx_k_known_suite_names_2[] = "_known_suite_names"; static const char __pyx_k_number_of_variables[] = "number_of_variables"; static const char __pyx_k_with_d_constraint_s[] = " with %d constraint%s"; static const char __pyx_k_NoSuchSuiteException[] = "NoSuchSuiteException"; @@ -1905,7 +1904,7 @@ static const char __pyx_k_NoSuchProblemException[] = "NoSuchProblemException"; static const char __pyx_k_InvalidProblemException[] = "InvalidProblemException"; static const char __pyx_k_finalized_invalid_problem[] = "finalized/invalid problem"; static const char __pyx_k_No_suite_with_name_s_found[] = "No suite with name '%s' found"; -static const char __pyx_k_Suite_get_problem_line_287[] = "Suite.get_problem (line 287)"; +static const char __pyx_k_Suite_get_problem_line_286[] = "Suite.get_problem (line 286)"; static const char __pyx_k_Problem_already_initialized[] = "Problem already initialized"; static const char __pyx_k_finalized_invalid_problem_2[] = ""; static const char __pyx_k_function_dimension_instance[] = "function: {}, dimension: {}, instance: {}"; @@ -1914,7 +1913,6 @@ static const char __pyx_k_s_a_s_s_problem_s_problem_d_of[] = "%s: a %s %s proble static const char __pyx_k_update_current_observer_global[] = "_update_current_observer_global"; static const char __pyx_k_Suite_s_s_s_with_d_problem_s_in[] = "Suite(\"%s\", \"%s\", \"%s\") with %d problem%s in dimension%s %s"; static const char __pyx_k_Unkown_benchmark_suite_name_s_K[] = "\nUnkown benchmark suite name %s.\nKnown suite names are %s.\nIf %s was not a typo, you can add the desired name to `known_suite_names`::\n\n >> import cocoex as ex\n >> ex.known_suite_names.append(b\"my_name\") # must be a byte string\n >> suite = ex.Suite(\"my_name\", \"\", \"\")\n COCO FATAL ERROR: coco_suite(): unknow problem suite\n\nThis will crash Python, if the suite \"my_name\" does in fact not exist. You might\nalso report back a missing name to https://github.com/numbbo/coco/issues\n"; -static const char __pyx_k_Users_hansen_git_coco_code_expe[] = "/Users/hansen/git/coco/code-experiments/build/python/cython/interface.pyx"; static const char __pyx_k_find_problem_ids_has_been_renam[] = "`find_problem_ids()` has been renamed to `ids()`"; static const char __pyx_k_get_problem_self_id_observer_No[] = "`get_problem(self, id, observer=None)` returns a `Problem` instance,\n by default unobserved, using `id: str` or index (where `id: int`) to\n identify the desired problem.\n\n All values between zero and `len(self) - 1` are valid index values::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> for index in range(len(suite)):\n ... problem = suite.get_problem(index)\n ... # work work work using problem\n ... problem.free()\n\n A shortcut for `suite.get_problem(index)` is `suite[index]`, they are\n synonym.\n\n Details:\n - Here an `index` takes values between 0 and `len(self) - 1` and can in\n principle be different from the problem index in the benchmark suite.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of `get_problem`. Otherwise Python\n might just silently die, which is e.g. a known issue of the \"bbob\"\n observer.\n\n See also `ids`, `get_problem_by_function_dimension_instance`.\n "; static const char __pyx_k_has_never_been_tested_incomment[] = "has never been tested, incomment this to start testing"; @@ -1923,12 +1921,13 @@ static const char __pyx_k_initial_solution_proposal_calls[] = "_initial_solution static const char __pyx_k_not_match_the_problem_dimension[] = "not match the problem dimension `number_of_variables==%d`."; static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import"; static const char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)"; +static const char __pyx_k_C_Users_dimo_Desktop_numbbo_gith[] = "C:\\Users\\dimo\\Desktop\\numbbo-github\\numbbo-newcococode-brockho\\code-experiments\\build\\python\\cython\\interface.pyx"; static const char __pyx_k_Dimension_np_size_x_d_of_input_x[] = "Dimension, `np.size(x)==%d`, of input `x` does "; static const char __pyx_k_Dimension_np_size_y_d_of_input_y[] = "Dimension, `np.size(y)==%d`, of input `y` does "; static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd"; static const char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported"; -static const char __pyx_k_Suite_current_index___get___line[] = "Suite.current_index.__get__ (line 444)"; -static const char __pyx_k_Suite_get_problem_by_function_di[] = "Suite.get_problem_by_function_dimension_instance (line 331)"; +static const char __pyx_k_Suite_current_index___get___line[] = "Suite.current_index.__get__ (line 443)"; +static const char __pyx_k_Suite_get_problem_by_function_di[] = "Suite.get_problem_by_function_dimension_instance (line 330)"; static const char __pyx_k_Suite_has_been_finalized_free_ed[] = "Suite has been finalized/free'ed"; static const char __pyx_k_in_Problem__initialize_problem_p[] = "in Problem._initialize(problem,...): problem is NULL"; static const char __pyx_k_index_in_the_enumerator_of_all_p[] = "index in the enumerator of all problems in this suite.\n\n Details: To get the index in the underlying C implementation, which\n usually matches `current_index` one-to-one, use::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> suite.current_index is None\n True\n >>> suite.next_problem().id[-17:].lower()\n 'bbob_f001_i01_d02'\n >>> suite.current_index, suite.indices[suite.current_index]\n (0, 0)\n\n "; @@ -1939,6 +1938,7 @@ static const char __pyx_k_returns_a_Problem_instance_by_de[] = "returns a `Probl static const char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short."; static PyObject *__pyx_n_s_AttributeError; static PyObject *__pyx_n_u_C; +static PyObject *__pyx_kp_s_C_Users_dimo_Desktop_numbbo_gith; static PyObject *__pyx_kp_u_Dimension_np_size_x_d_of_input_x; static PyObject *__pyx_kp_u_Dimension_np_size_y_d_of_input_y; static PyObject *__pyx_kp_u_Format_string_allocated_too_shor; @@ -1956,14 +1956,13 @@ static PyObject *__pyx_n_s_StopIteration; static PyObject *__pyx_n_s_Suite___iter; static PyObject *__pyx_kp_u_Suite_current_index___get___line; static PyObject *__pyx_kp_u_Suite_get_problem_by_function_di; -static PyObject *__pyx_kp_u_Suite_get_problem_line_287; +static PyObject *__pyx_kp_u_Suite_get_problem_line_286; static PyObject *__pyx_kp_u_Suite_has_been_finalized_free_ed; -static PyObject *__pyx_kp_u_Suite_ids_line_391; +static PyObject *__pyx_kp_u_Suite_ids_line_390; static PyObject *__pyx_kp_u_Suite_r_r_r; static PyObject *__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in; static PyObject *__pyx_n_s_TypeError; static PyObject *__pyx_kp_u_Unkown_benchmark_suite_name_s_K; -static PyObject *__pyx_kp_s_Users_hansen_git_coco_code_expe; static PyObject *__pyx_n_s_ValueError; static PyObject *__pyx_kp_u__11; static PyObject *__pyx_kp_u__12; @@ -2032,7 +2031,6 @@ static PyObject *__pyx_n_u_initialized; static PyObject *__pyx_n_s_instance; static PyObject *__pyx_n_s_iter; static PyObject *__pyx_n_s_known_suite_names; -static PyObject *__pyx_n_s_known_suite_names_2; static PyObject *__pyx_n_s_level; static PyObject *__pyx_n_s_level_2; static PyObject *__pyx_n_s_log_level; @@ -2200,7 +2198,7 @@ static PyObject *__pyx_tuple__28; static PyObject *__pyx_tuple__29; static PyObject *__pyx_codeobj__30; -/* "cython/interface.pyx":69 +/* "cython/interface.pyx":68 * void bbob_problem_best_parameter_print(const coco_problem_t *problem) * * cdef bytes _bstring(s): # <<<<<<<<<<<<<< @@ -2218,7 +2216,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("_bstring", 0); - /* "cython/interface.pyx":70 + /* "cython/interface.pyx":69 * * cdef bytes _bstring(s): * if type(s) is bytes: # <<<<<<<<<<<<<< @@ -2229,7 +2227,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":71 + /* "cython/interface.pyx":70 * cdef bytes _bstring(s): * if type(s) is bytes: * return s # <<<<<<<<<<<<<< @@ -2241,7 +2239,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { __pyx_r = ((PyObject*)__pyx_v_s); goto __pyx_L0; - /* "cython/interface.pyx":70 + /* "cython/interface.pyx":69 * * cdef bytes _bstring(s): * if type(s) is bytes: # <<<<<<<<<<<<<< @@ -2250,7 +2248,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { */ } - /* "cython/interface.pyx":72 + /* "cython/interface.pyx":71 * if type(s) is bytes: * return s * if isinstance(s, (str, unicode)): # <<<<<<<<<<<<<< @@ -2271,7 +2269,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":73 + /* "cython/interface.pyx":72 * return s * if isinstance(s, (str, unicode)): * return s.encode('ascii') # why not s.encode('ascii') ? # <<<<<<<<<<<<<< @@ -2279,17 +2277,17 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * raise TypeError("expect a string, got %s" % str(type(s))) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 73, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 73, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 73, __pyx_L1_error) + if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 72, __pyx_L1_error) __pyx_r = ((PyObject*)__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L0; - /* "cython/interface.pyx":72 + /* "cython/interface.pyx":71 * if type(s) is bytes: * return s * if isinstance(s, (str, unicode)): # <<<<<<<<<<<<<< @@ -2298,7 +2296,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { */ } - /* "cython/interface.pyx":75 + /* "cython/interface.pyx":74 * return s.encode('ascii') # why not s.encode('ascii') ? * else: * raise TypeError("expect a string, got %s" % str(type(s))) # <<<<<<<<<<<<<< @@ -2306,31 +2304,31 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * cdef coco_observer_t* _current_observer */ /*else*/ { - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_s))); __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_s))); PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)Py_TYPE(__pyx_v_s))); - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_expect_a_string_got_s, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_expect_a_string_got_s, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(0, 75, __pyx_L1_error) + __PYX_ERR(0, 74, __pyx_L1_error) } - /* "cython/interface.pyx":69 + /* "cython/interface.pyx":68 * void bbob_problem_best_parameter_print(const coco_problem_t *problem) * * cdef bytes _bstring(s): # <<<<<<<<<<<<<< @@ -2350,7 +2348,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { return __pyx_r; } -/* "cython/interface.pyx":191 +/* "cython/interface.pyx":190 * cdef initialized * * def __cinit__(self, suite_name, suite_instance, suite_options): # <<<<<<<<<<<<<< @@ -2388,16 +2386,16 @@ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_instance)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(0, 191, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(0, 190, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_options)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(0, 191, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(0, 190, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 191, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 190, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -2412,7 +2410,7 @@ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 191, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 190, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -2433,14 +2431,14 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("__cinit__", 0); - /* "cython/interface.pyx":193 + /* "cython/interface.pyx":192 * def __cinit__(self, suite_name, suite_instance, suite_options): * cdef np.npy_intp shape[1] # probably completely useless * self._name = _bstring(suite_name) # <<<<<<<<<<<<<< * self._instance = _bstring(suite_instance if suite_instance is not None else "") * self._options = _bstring(suite_options if suite_options is not None else "") */ - __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_suite_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) + __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_suite_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_name); @@ -2448,7 +2446,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __pyx_v_self->_name = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":194 + /* "cython/interface.pyx":193 * cdef np.npy_intp shape[1] # probably completely useless * self._name = _bstring(suite_name) * self._instance = _bstring(suite_instance if suite_instance is not None else "") # <<<<<<<<<<<<<< @@ -2463,7 +2461,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_1 = __pyx_kp_u__2; } - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 194, __pyx_L1_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_3); @@ -2472,7 +2470,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __pyx_v_self->_instance = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":195 + /* "cython/interface.pyx":194 * self._name = _bstring(suite_name) * self._instance = _bstring(suite_instance if suite_instance is not None else "") * self._options = _bstring(suite_options if suite_options is not None else "") # <<<<<<<<<<<<<< @@ -2487,7 +2485,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_3 = __pyx_kp_u__2; } - __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error) + __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_1); @@ -2496,7 +2494,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __pyx_v_self->_options = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":196 + /* "cython/interface.pyx":195 * self._instance = _bstring(suite_instance if suite_instance is not None else "") * self._options = _bstring(suite_options if suite_options is not None else "") * self._current_problem = NULL # <<<<<<<<<<<<<< @@ -2505,7 +2503,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex */ __pyx_v_self->_current_problem = NULL; - /* "cython/interface.pyx":197 + /* "cython/interface.pyx":196 * self._options = _bstring(suite_options if suite_options is not None else "") * self._current_problem = NULL * self.current_problem_ = None # <<<<<<<<<<<<<< @@ -2518,7 +2516,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_DECREF(__pyx_v_self->current_problem_); __pyx_v_self->current_problem_ = Py_None; - /* "cython/interface.pyx":198 + /* "cython/interface.pyx":197 * self._current_problem = NULL * self.current_problem_ = None * self._current_index = None # <<<<<<<<<<<<<< @@ -2531,7 +2529,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_DECREF(__pyx_v_self->_current_index); __pyx_v_self->_current_index = Py_None; - /* "cython/interface.pyx":199 + /* "cython/interface.pyx":198 * self.current_problem_ = None * self._current_index = None * self.initialized = False # <<<<<<<<<<<<<< @@ -2544,18 +2542,18 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_False; - /* "cython/interface.pyx":200 + /* "cython/interface.pyx":199 * self._current_index = None * self.initialized = False * self._initialize() # <<<<<<<<<<<<<< * assert self.initialized * cdef _initialize(self): */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Suite *)__pyx_v_self->__pyx_vtab)->_initialize(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 200, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Suite *)__pyx_v_self->__pyx_vtab)->_initialize(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":201 + /* "cython/interface.pyx":200 * self.initialized = False * self._initialize() * assert self.initialized # <<<<<<<<<<<<<< @@ -2564,15 +2562,15 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 201, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 200, __pyx_L1_error) if (unlikely(!__pyx_t_2)) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 201, __pyx_L1_error) + __PYX_ERR(0, 200, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":191 + /* "cython/interface.pyx":190 * cdef initialized * * def __cinit__(self, suite_name, suite_instance, suite_options): # <<<<<<<<<<<<<< @@ -2593,7 +2591,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex return __pyx_r; } -/* "cython/interface.pyx":202 +/* "cython/interface.pyx":201 * self._initialize() * assert self.initialized * cdef _initialize(self): # <<<<<<<<<<<<<< @@ -2629,24 +2627,24 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ int __pyx_t_19; __Pyx_RefNannySetupContext("_initialize", 0); - /* "cython/interface.pyx":210 + /* "cython/interface.pyx":209 * cdef bytes _old_level * * if self.initialized: # <<<<<<<<<<<<<< * self.reset() * self._ids = [] */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 210, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 209, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":211 + /* "cython/interface.pyx":210 * * if self.initialized: * self.reset() # <<<<<<<<<<<<<< * self._ids = [] * self._indices = [] */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -2659,16 +2657,16 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 210, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 210, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":210 + /* "cython/interface.pyx":209 * cdef bytes _old_level * * if self.initialized: # <<<<<<<<<<<<<< @@ -2677,14 +2675,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":212 + /* "cython/interface.pyx":211 * if self.initialized: * self.reset() * self._ids = [] # <<<<<<<<<<<<<< * self._indices = [] * self._names = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 212, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_ids); @@ -2692,14 +2690,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_ids = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":213 + /* "cython/interface.pyx":212 * self.reset() * self._ids = [] * self._indices = [] # <<<<<<<<<<<<<< * self._names = [] * self._dimensions = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_indices); @@ -2707,14 +2705,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_indices = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":214 + /* "cython/interface.pyx":213 * self._ids = [] * self._indices = [] * self._names = [] # <<<<<<<<<<<<<< * self._dimensions = [] * self._number_of_objectives = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 214, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_names); @@ -2722,14 +2720,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_names = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":215 + /* "cython/interface.pyx":214 * self._indices = [] * self._names = [] * self._dimensions = [] # <<<<<<<<<<<<<< * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 215, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_dimensions); @@ -2737,14 +2735,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_dimensions = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":216 + /* "cython/interface.pyx":215 * self._names = [] * self._dimensions = [] * self._number_of_objectives = [] # <<<<<<<<<<<<<< * if self._name not in [_bstring(name) for name in known_suite_names]: * raise NoSuchSuiteException(""" */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 216, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 215, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_number_of_objectives); @@ -2752,24 +2750,24 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_number_of_objectives = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":217 + /* "cython/interface.pyx":216 * self._dimensions = [] * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: # <<<<<<<<<<<<<< * raise NoSuchSuiteException(""" * Unkown benchmark suite name %s. */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 217, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 217, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { - __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 217, __pyx_L1_error) + __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 217, __pyx_L1_error) + __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 216, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { @@ -2777,17 +2775,17 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 217, __pyx_L1_error) + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 216, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 217, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 217, __pyx_L1_error) + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 216, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 217, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } @@ -2797,7 +2795,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 217, __pyx_L1_error) + else __PYX_ERR(0, 216, __pyx_L1_error) } break; } @@ -2805,45 +2803,45 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 217, __pyx_L1_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 217, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_self->_name, __pyx_t_2, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 217, __pyx_L1_error) + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_self->_name, __pyx_t_2, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = (__pyx_t_1 != 0); if (__pyx_t_7) { - /* "cython/interface.pyx":218 + /* "cython/interface.pyx":217 * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: * raise NoSuchSuiteException(""" # <<<<<<<<<<<<<< * Unkown benchmark suite name %s. * Known suite names are %s. */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 218, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 217, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - /* "cython/interface.pyx":230 + /* "cython/interface.pyx":229 * This will crash Python, if the suite "my_name" does in fact not exist. You might * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) # <<<<<<<<<<<<<< * try: * suite = coco_suite(self._name, self._instance, self._options) */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 230, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 230, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_self->_name); __Pyx_GIVEREF(__pyx_v_self->_name); @@ -2854,7 +2852,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_GIVEREF(__pyx_v_self->_name); PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_self->_name); __pyx_t_3 = 0; - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Unkown_benchmark_suite_name_s_K, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L1_error) + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Unkown_benchmark_suite_name_s_K, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; @@ -2868,14 +2866,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } } if (!__pyx_t_8) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 217, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 217, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -2884,20 +2882,20 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 217, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 218, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 217, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 217, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -2905,9 +2903,9 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 218, __pyx_L1_error) + __PYX_ERR(0, 217, __pyx_L1_error) - /* "cython/interface.pyx":217 + /* "cython/interface.pyx":216 * self._dimensions = [] * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: # <<<<<<<<<<<<<< @@ -2916,7 +2914,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":231 + /* "cython/interface.pyx":230 * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) * try: # <<<<<<<<<<<<<< @@ -2932,19 +2930,19 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_XGOTREF(__pyx_t_12); /*try:*/ { - /* "cython/interface.pyx":232 + /* "cython/interface.pyx":231 * """ % (self._name, str(known_suite_names), self._name)) * try: * suite = coco_suite(self._name, self._instance, self._options) # <<<<<<<<<<<<<< * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) */ - __pyx_t_13 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 232, __pyx_L7_error) - __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 232, __pyx_L7_error) - __pyx_t_15 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 232, __pyx_L7_error) + __pyx_t_13 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 231, __pyx_L7_error) + __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 231, __pyx_L7_error) + __pyx_t_15 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 231, __pyx_L7_error) __pyx_v_suite = coco_suite(__pyx_t_13, __pyx_t_14, __pyx_t_15); - /* "cython/interface.pyx":231 + /* "cython/interface.pyx":230 * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) * try: # <<<<<<<<<<<<<< @@ -2964,7 +2962,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":233 + /* "cython/interface.pyx":232 * try: * suite = coco_suite(self._name, self._instance, self._options) * except: # <<<<<<<<<<<<<< @@ -2973,21 +2971,21 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite._initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_9) < 0) __PYX_ERR(0, 233, __pyx_L9_except_error) + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_9) < 0) __PYX_ERR(0, 232, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_9); - /* "cython/interface.pyx":234 + /* "cython/interface.pyx":233 * suite = coco_suite(self._name, self._instance, self._options) * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) # <<<<<<<<<<<<<< * if suite == NULL: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) */ - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 234, __pyx_L9_except_error) + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 233, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_16 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 234, __pyx_L9_except_error) + __pyx_t_16 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 233, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { @@ -3000,14 +2998,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } } if (!__pyx_t_17) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L9_except_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L9_except_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_16}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L9_except_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L9_except_error) __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; @@ -3016,20 +3014,20 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_16}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L9_except_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L9_except_error) __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; } else #endif { - __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 234, __pyx_L9_except_error) + __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 233, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL; __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_16); __pyx_t_16 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L9_except_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } @@ -3037,11 +3035,11 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 234, __pyx_L9_except_error) + __PYX_ERR(0, 233, __pyx_L9_except_error) } __pyx_L9_except_error:; - /* "cython/interface.pyx":231 + /* "cython/interface.pyx":230 * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) * try: # <<<<<<<<<<<<<< @@ -3057,7 +3055,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_L14_try_end:; } - /* "cython/interface.pyx":235 + /* "cython/interface.pyx":234 * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * if suite == NULL: # <<<<<<<<<<<<<< @@ -3067,16 +3065,16 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_t_7 = ((__pyx_v_suite == NULL) != 0); if (__pyx_t_7) { - /* "cython/interface.pyx":236 + /* "cython/interface.pyx":235 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * if suite == NULL: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) # <<<<<<<<<<<<<< * while True: * old_level = log_level('warning') */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 236, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error) + __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -3089,14 +3087,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } } if (!__pyx_t_3) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 236, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 235, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_9); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 236, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 235, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -3105,20 +3103,20 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 236, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 235, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 236, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 236, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } @@ -3126,9 +3124,9 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_ERR(0, 236, __pyx_L1_error) + __PYX_ERR(0, 235, __pyx_L1_error) - /* "cython/interface.pyx":235 + /* "cython/interface.pyx":234 * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * if suite == NULL: # <<<<<<<<<<<<<< @@ -3137,7 +3135,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":237 + /* "cython/interface.pyx":236 * if suite == NULL: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * while True: # <<<<<<<<<<<<<< @@ -3146,22 +3144,22 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ while (1) { - /* "cython/interface.pyx":238 + /* "cython/interface.pyx":237 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * while True: * old_level = log_level('warning') # <<<<<<<<<<<<<< * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) */ - __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 238, __pyx_L1_error) + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 238, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_old_level, __pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":239 + /* "cython/interface.pyx":238 * while True: * old_level = log_level('warning') * p = coco_suite_get_next_problem(suite, NULL) # <<<<<<<<<<<<<< @@ -3170,14 +3168,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ __pyx_v_p = coco_suite_get_next_problem(__pyx_v_suite, NULL); - /* "cython/interface.pyx":240 + /* "cython/interface.pyx":239 * old_level = log_level('warning') * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) # <<<<<<<<<<<<<< * if not p: * break */ - __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 240, __pyx_L1_error) + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { @@ -3190,13 +3188,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } } if (!__pyx_t_8) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_old_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 240, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_old_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_old_level}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 240, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 239, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); } else @@ -3204,19 +3202,19 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_old_level}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 240, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 239, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { - __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 240, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL; __Pyx_INCREF(__pyx_v_old_level); __Pyx_GIVEREF(__pyx_v_old_level); PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_old_level); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 240, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } @@ -3224,7 +3222,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":241 + /* "cython/interface.pyx":240 * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) * if not p: # <<<<<<<<<<<<<< @@ -3234,7 +3232,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_t_7 = ((!(__pyx_v_p != 0)) != 0); if (__pyx_t_7) { - /* "cython/interface.pyx":242 + /* "cython/interface.pyx":241 * log_level(old_level) * if not p: * break # <<<<<<<<<<<<<< @@ -3243,7 +3241,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ goto __pyx_L19_break; - /* "cython/interface.pyx":241 + /* "cython/interface.pyx":240 * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) * if not p: # <<<<<<<<<<<<<< @@ -3252,69 +3250,69 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":243 + /* "cython/interface.pyx":242 * if not p: * break * self._indices.append(coco_problem_get_suite_dep_index(p)) # <<<<<<<<<<<<<< * self._ids.append(coco_problem_get_id(p)) * self._names.append(coco_problem_get_name(p)) */ - __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 243, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_indices, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 243, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_indices, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 242, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":244 + /* "cython/interface.pyx":243 * break * self._indices.append(coco_problem_get_suite_dep_index(p)) * self._ids.append(coco_problem_get_id(p)) # <<<<<<<<<<<<<< * self._names.append(coco_problem_get_name(p)) * self._dimensions.append(coco_problem_get_dimension(p)) */ - __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 244, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_ids, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 244, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_ids, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 243, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":245 + /* "cython/interface.pyx":244 * self._indices.append(coco_problem_get_suite_dep_index(p)) * self._ids.append(coco_problem_get_id(p)) * self._names.append(coco_problem_get_name(p)) # <<<<<<<<<<<<<< * self._dimensions.append(coco_problem_get_dimension(p)) * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) */ - __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 245, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_names, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 245, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_names, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 244, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":246 + /* "cython/interface.pyx":245 * self._ids.append(coco_problem_get_id(p)) * self._names.append(coco_problem_get_name(p)) * self._dimensions.append(coco_problem_get_dimension(p)) # <<<<<<<<<<<<<< * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) * coco_suite_free(suite) */ - __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_dimension(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 246, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_dimension(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_dimensions, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 246, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_dimensions, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 245, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":247 + /* "cython/interface.pyx":246 * self._names.append(coco_problem_get_name(p)) * self._dimensions.append(coco_problem_get_dimension(p)) * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) # <<<<<<<<<<<<<< * coco_suite_free(suite) * self.suite = coco_suite(self._name, self._instance, self._options) */ - __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_number_of_objectives(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 247, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_number_of_objectives(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_number_of_objectives, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 247, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_number_of_objectives, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_L19_break:; - /* "cython/interface.pyx":248 + /* "cython/interface.pyx":247 * self._dimensions.append(coco_problem_get_dimension(p)) * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) * coco_suite_free(suite) # <<<<<<<<<<<<<< @@ -3323,19 +3321,19 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ coco_suite_free(__pyx_v_suite); - /* "cython/interface.pyx":249 + /* "cython/interface.pyx":248 * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) * coco_suite_free(suite) * self.suite = coco_suite(self._name, self._instance, self._options) # <<<<<<<<<<<<<< * self.initialized = True * return self */ - __pyx_t_13 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 249, __pyx_L1_error) - __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 249, __pyx_L1_error) - __pyx_t_15 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 249, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 248, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 248, __pyx_L1_error) + __pyx_t_15 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 248, __pyx_L1_error) __pyx_v_self->suite = coco_suite(__pyx_t_13, __pyx_t_14, __pyx_t_15); - /* "cython/interface.pyx":250 + /* "cython/interface.pyx":249 * coco_suite_free(suite) * self.suite = coco_suite(self._name, self._instance, self._options) * self.initialized = True # <<<<<<<<<<<<<< @@ -3348,7 +3346,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_True; - /* "cython/interface.pyx":251 + /* "cython/interface.pyx":250 * self.suite = coco_suite(self._name, self._instance, self._options) * self.initialized = True * return self # <<<<<<<<<<<<<< @@ -3360,7 +3358,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":202 + /* "cython/interface.pyx":201 * self._initialize() * assert self.initialized * cdef _initialize(self): # <<<<<<<<<<<<<< @@ -3388,7 +3386,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ return __pyx_r; } -/* "cython/interface.pyx":252 +/* "cython/interface.pyx":251 * self.initialized = True * return self * def reset(self): # <<<<<<<<<<<<<< @@ -3419,7 +3417,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("reset", 0); - /* "cython/interface.pyx":255 + /* "cython/interface.pyx":254 * """reset to original state, affecting `next_problem()`, * `current_problem`, `current_index`""" * self._current_index = None # <<<<<<<<<<<<<< @@ -3432,24 +3430,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->_current_index); __pyx_v_self->_current_index = Py_None; - /* "cython/interface.pyx":256 + /* "cython/interface.pyx":255 * `current_problem`, `current_index`""" * self._current_index = None * if self.current_problem_: # <<<<<<<<<<<<<< * self.current_problem_.free() * self.current_problem_ = None */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 256, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 255, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":257 + /* "cython/interface.pyx":256 * self._current_index = None * if self.current_problem_: * self.current_problem_.free() # <<<<<<<<<<<<<< * self.current_problem_ = None * self._current_problem = NULL */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 257, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -3462,16 +3460,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 257, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 257, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":256 + /* "cython/interface.pyx":255 * `current_problem`, `current_index`""" * self._current_index = None * if self.current_problem_: # <<<<<<<<<<<<<< @@ -3480,7 +3478,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc */ } - /* "cython/interface.pyx":258 + /* "cython/interface.pyx":257 * if self.current_problem_: * self.current_problem_.free() * self.current_problem_ = None # <<<<<<<<<<<<<< @@ -3493,7 +3491,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->current_problem_); __pyx_v_self->current_problem_ = Py_None; - /* "cython/interface.pyx":259 + /* "cython/interface.pyx":258 * self.current_problem_.free() * self.current_problem_ = None * self._current_problem = NULL # <<<<<<<<<<<<<< @@ -3502,7 +3500,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc */ __pyx_v_self->_current_problem = NULL; - /* "cython/interface.pyx":252 + /* "cython/interface.pyx":251 * self.initialized = True * return self * def reset(self): # <<<<<<<<<<<<<< @@ -3525,7 +3523,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":260 +/* "cython/interface.pyx":259 * self.current_problem_ = None * self._current_problem = NULL * def next_problem(self, observer=None): # <<<<<<<<<<<<<< @@ -3562,7 +3560,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__py } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "next_problem") < 0)) __PYX_ERR(0, 260, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "next_problem") < 0)) __PYX_ERR(0, 259, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3575,7 +3573,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("next_problem", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 260, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("next_problem", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 259, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.next_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -3603,31 +3601,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("next_problem", 0); - /* "cython/interface.pyx":268 + /* "cython/interface.pyx":267 * cdef size_t index * global _current_observer * if not self.initialized: # <<<<<<<<<<<<<< * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 268, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 267, __pyx_L1_error) __pyx_t_2 = ((!__pyx_t_1) != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":269 + /* "cython/interface.pyx":268 * global _current_observer * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * if self.current_problem_: * self.current_problem_.free() */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 269, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 269, __pyx_L1_error) + __PYX_ERR(0, 268, __pyx_L1_error) - /* "cython/interface.pyx":268 + /* "cython/interface.pyx":267 * cdef size_t index * global _current_observer * if not self.initialized: # <<<<<<<<<<<<<< @@ -3636,24 +3634,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ } - /* "cython/interface.pyx":270 + /* "cython/interface.pyx":269 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: # <<<<<<<<<<<<<< * self.current_problem_.free() * if self._current_index is None: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 270, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 269, __pyx_L1_error) if (__pyx_t_2) { - /* "cython/interface.pyx":271 + /* "cython/interface.pyx":270 * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: * self.current_problem_.free() # <<<<<<<<<<<<<< * if self._current_index is None: * self._current_index = -1 */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 271, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { @@ -3666,16 +3664,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o } } if (__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 271, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 270, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 271, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 270, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":270 + /* "cython/interface.pyx":269 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: # <<<<<<<<<<<<<< @@ -3684,7 +3682,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ } - /* "cython/interface.pyx":272 + /* "cython/interface.pyx":271 * if self.current_problem_: * self.current_problem_.free() * if self._current_index is None: # <<<<<<<<<<<<<< @@ -3695,7 +3693,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":273 + /* "cython/interface.pyx":272 * self.current_problem_.free() * if self._current_index is None: * self._current_index = -1 # <<<<<<<<<<<<<< @@ -3708,7 +3706,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __Pyx_DECREF(__pyx_v_self->_current_index); __pyx_v_self->_current_index = __pyx_int_neg_1; - /* "cython/interface.pyx":272 + /* "cython/interface.pyx":271 * if self.current_problem_: * self.current_problem_.free() * if self._current_index is None: # <<<<<<<<<<<<<< @@ -3717,14 +3715,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ } - /* "cython/interface.pyx":274 + /* "cython/interface.pyx":273 * if self._current_index is None: * self._current_index = -1 * self._current_index += 1 # <<<<<<<<<<<<<< * if self._current_index >= len(self): * self._current_problem = NULL */ - __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_current_index, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_current_index, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_current_index); @@ -3732,23 +3730,23 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_v_self->_current_index = __pyx_t_3; __pyx_t_3 = 0; - /* "cython/interface.pyx":275 + /* "cython/interface.pyx":274 * self._current_index = -1 * self._current_index += 1 * if self._current_index >= len(self): # <<<<<<<<<<<<<< * self._current_problem = NULL * self.current_problem_ = None */ - __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 275, __pyx_L1_error) - __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 275, __pyx_L1_error) + __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 274, __pyx_L1_error) + __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->_current_index, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 275, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->_current_index, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 274, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 275, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 274, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_1) { - /* "cython/interface.pyx":276 + /* "cython/interface.pyx":275 * self._current_index += 1 * if self._current_index >= len(self): * self._current_problem = NULL # <<<<<<<<<<<<<< @@ -3757,7 +3755,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ __pyx_v_self->_current_problem = NULL; - /* "cython/interface.pyx":277 + /* "cython/interface.pyx":276 * if self._current_index >= len(self): * self._current_problem = NULL * self.current_problem_ = None # <<<<<<<<<<<<<< @@ -3770,7 +3768,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __Pyx_DECREF(__pyx_v_self->current_problem_); __pyx_v_self->current_problem_ = Py_None; - /* "cython/interface.pyx":275 + /* "cython/interface.pyx":274 * self._current_index = -1 * self._current_index += 1 * if self._current_index >= len(self): # <<<<<<<<<<<<<< @@ -3780,7 +3778,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o goto __pyx_L6; } - /* "cython/interface.pyx":280 + /* "cython/interface.pyx":279 * # self._current_index = -1 # or use reset? * else: * index = self.indices[self._current_index] # "conversion" to size_t # <<<<<<<<<<<<<< @@ -3788,16 +3786,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * self.suite, index) */ /*else*/ { - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 280, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_v_self->_current_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 280, __pyx_L1_error) + __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_v_self->_current_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 280, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_index = __pyx_t_7; - /* "cython/interface.pyx":281 + /* "cython/interface.pyx":280 * else: * index = self.indices[self._current_index] # "conversion" to size_t * self._current_problem = coco_suite_get_problem( # <<<<<<<<<<<<<< @@ -3806,7 +3804,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ __pyx_v_self->_current_problem = coco_suite_get_problem(__pyx_v_self->suite, __pyx_v_index); - /* "cython/interface.pyx":284 + /* "cython/interface.pyx":283 * self.suite, index) * self.current_problem_ = Problem_init(self._current_problem, * True, self._name) # <<<<<<<<<<<<<< @@ -3816,7 +3814,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_3 = __pyx_v_self->_name; __Pyx_INCREF(__pyx_t_3); - /* "cython/interface.pyx":283 + /* "cython/interface.pyx":282 * self._current_problem = coco_suite_get_problem( * self.suite, index) * self.current_problem_ = Problem_init(self._current_problem, # <<<<<<<<<<<<<< @@ -3826,7 +3824,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_8.__pyx_n = 2; __pyx_t_8.free = Py_True; __pyx_t_8.suite_name = __pyx_t_3; - __pyx_t_4 = __pyx_f_6cocoex_9interface_Problem_init(__pyx_v_self->_current_problem, &__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 283, __pyx_L1_error) + __pyx_t_4 = __pyx_f_6cocoex_9interface_Problem_init(__pyx_v_self->_current_problem, &__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_4); @@ -3835,14 +3833,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_v_self->current_problem_ = __pyx_t_4; __pyx_t_4 = 0; - /* "cython/interface.pyx":285 + /* "cython/interface.pyx":284 * self.current_problem_ = Problem_init(self._current_problem, * True, self._name) * self.current_problem_.observe_with(observer) # <<<<<<<<<<<<<< * return self.current_problem_ * def get_problem(self, id, observer=None): */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -3855,13 +3853,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o } } if (!__pyx_t_5) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 285, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 285, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else @@ -3869,19 +3867,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 285, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 285, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 285, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -3891,7 +3889,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o } __pyx_L6:; - /* "cython/interface.pyx":286 + /* "cython/interface.pyx":285 * True, self._name) * self.current_problem_.observe_with(observer) * return self.current_problem_ # <<<<<<<<<<<<<< @@ -3903,7 +3901,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_r = __pyx_v_self->current_problem_; goto __pyx_L0; - /* "cython/interface.pyx":260 + /* "cython/interface.pyx":259 * self.current_problem_ = None * self._current_problem = NULL * def next_problem(self, observer=None): # <<<<<<<<<<<<<< @@ -3925,7 +3923,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":287 +/* "cython/interface.pyx":286 * self.current_problem_.observe_with(observer) * return self.current_problem_ * def get_problem(self, id, observer=None): # <<<<<<<<<<<<<< @@ -3967,7 +3965,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem") < 0)) __PYX_ERR(0, 287, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem") < 0)) __PYX_ERR(0, 286, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3982,7 +3980,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_problem", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 287, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 286, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -4018,31 +4016,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob PyObject *__pyx_t_17 = NULL; __Pyx_RefNannySetupContext("get_problem", 0); - /* "cython/interface.pyx":318 + /* "cython/interface.pyx":317 * See also `ids`, `get_problem_by_function_dimension_instance`. * """ * if not self.initialized: # <<<<<<<<<<<<<< * raise ValueError("Suite has been finalized/free'ed") * index = id */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 318, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 317, __pyx_L1_error) __pyx_t_2 = ((!__pyx_t_1) != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":319 + /* "cython/interface.pyx":318 * """ * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * index = id * try: */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 319, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 319, __pyx_L1_error) + __PYX_ERR(0, 318, __pyx_L1_error) - /* "cython/interface.pyx":318 + /* "cython/interface.pyx":317 * See also `ids`, `get_problem_by_function_dimension_instance`. * """ * if not self.initialized: # <<<<<<<<<<<<<< @@ -4051,7 +4049,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ } - /* "cython/interface.pyx":320 + /* "cython/interface.pyx":319 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * index = id # <<<<<<<<<<<<<< @@ -4061,7 +4059,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_INCREF(__pyx_v_id); __pyx_v_index = __pyx_v_id; - /* "cython/interface.pyx":321 + /* "cython/interface.pyx":320 * raise ValueError("Suite has been finalized/free'ed") * index = id * try: # <<<<<<<<<<<<<< @@ -4077,23 +4075,23 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XGOTREF(__pyx_t_6); /*try:*/ { - /* "cython/interface.pyx":322 + /* "cython/interface.pyx":321 * index = id * try: * 1 / (id == int(id)) # int(id) might raise an exception # <<<<<<<<<<<<<< * except: * index = self._ids.index(id) */ - __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L4_error) + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = PyObject_RichCompare(__pyx_v_id, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 322, __pyx_L4_error) + __pyx_t_7 = PyObject_RichCompare(__pyx_v_id, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 321, __pyx_L4_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L4_error) + __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":321 + /* "cython/interface.pyx":320 * raise ValueError("Suite has been finalized/free'ed") * index = id * try: # <<<<<<<<<<<<<< @@ -4110,7 +4108,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":323 + /* "cython/interface.pyx":322 * try: * 1 / (id == int(id)) # int(id) might raise an exception * except: # <<<<<<<<<<<<<< @@ -4119,19 +4117,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 323, __pyx_L6_except_error) + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 322, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_8); - /* "cython/interface.pyx":324 + /* "cython/interface.pyx":323 * 1 / (id == int(id)) # int(id) might raise an exception * except: * index = self._ids.index(id) # <<<<<<<<<<<<<< * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), */ - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ids, __pyx_n_s_index); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 324, __pyx_L6_except_error) + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ids, __pyx_n_s_index); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 323, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { @@ -4144,13 +4142,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } } if (!__pyx_t_11) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 324, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 323, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_9); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_v_id}; - __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 324, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 323, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_9); } else @@ -4158,19 +4156,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_v_id}; - __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 324, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 323, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_9); } else #endif { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 324, __pyx_L6_except_error) + __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 323, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL; __Pyx_INCREF(__pyx_v_id); __Pyx_GIVEREF(__pyx_v_id); PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_id); - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 324, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 323, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } @@ -4185,7 +4183,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } __pyx_L6_except_error:; - /* "cython/interface.pyx":321 + /* "cython/interface.pyx":320 * raise ValueError("Suite has been finalized/free'ed") * index = id * try: # <<<<<<<<<<<<<< @@ -4207,7 +4205,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_L11_try_end:; } - /* "cython/interface.pyx":325 + /* "cython/interface.pyx":324 * except: * index = self._ids.index(id) * try: # <<<<<<<<<<<<<< @@ -4223,7 +4221,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { - /* "cython/interface.pyx":326 + /* "cython/interface.pyx":325 * index = self._ids.index(id) * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< @@ -4232,27 +4230,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ __Pyx_XDECREF(__pyx_r); - /* "cython/interface.pyx":327 + /* "cython/interface.pyx":326 * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< * except: * raise NoSuchProblemException(self.name, str(id)) */ - __pyx_t_7 = PyObject_GetItem(__pyx_v_self->_indices, __pyx_v_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 326, __pyx_L14_error) + __pyx_t_7 = PyObject_GetItem(__pyx_v_self->_indices, __pyx_v_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 325, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_7); - /* "cython/interface.pyx":326 + /* "cython/interface.pyx":325 * index = self._ids.index(id) * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< * True, self._name).observe_with(observer) * except: */ - __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_7); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 326, __pyx_L14_error) + __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_7); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 325, __pyx_L14_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":327 + /* "cython/interface.pyx":326 * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< @@ -4262,7 +4260,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_7 = __pyx_v_self->_name; __Pyx_INCREF(__pyx_t_7); - /* "cython/interface.pyx":326 + /* "cython/interface.pyx":325 * index = self._ids.index(id) * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< @@ -4272,18 +4270,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_14.__pyx_n = 2; __pyx_t_14.free = Py_True; __pyx_t_14.suite_name = __pyx_t_7; - __pyx_t_3 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem(__pyx_v_self->suite, __pyx_t_13), &__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 326, __pyx_L14_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem(__pyx_v_self->suite, __pyx_t_13), &__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 325, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":327 + /* "cython/interface.pyx":326 * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< * except: * raise NoSuchProblemException(self.name, str(id)) */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 327, __pyx_L14_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 326, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; @@ -4297,13 +4295,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } } if (!__pyx_t_3) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_observer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 327, __pyx_L14_error) + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_observer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 326, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_8); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 327, __pyx_L14_error) + __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 326, __pyx_L14_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_8); } else @@ -4311,19 +4309,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 327, __pyx_L14_error) + __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 326, __pyx_L14_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_8); } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 327, __pyx_L14_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 326, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 327, __pyx_L14_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 326, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -4333,7 +4331,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_8 = 0; goto __pyx_L18_try_return; - /* "cython/interface.pyx":325 + /* "cython/interface.pyx":324 * except: * index = self._ids.index(id) * try: # <<<<<<<<<<<<<< @@ -4351,7 +4349,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "cython/interface.pyx":328 + /* "cython/interface.pyx":327 * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) * except: # <<<<<<<<<<<<<< @@ -4360,28 +4358,28 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(0, 328, __pyx_L16_except_error) + if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(0, 327, __pyx_L16_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_9); - /* "cython/interface.pyx":329 + /* "cython/interface.pyx":328 * True, self._name).observe_with(observer) * except: * raise NoSuchProblemException(self.name, str(id)) # <<<<<<<<<<<<<< * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): */ - __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 329, __pyx_L16_except_error) + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 328, __pyx_L16_except_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 329, __pyx_L16_except_error) + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 328, __pyx_L16_except_error) __Pyx_GOTREF(__pyx_t_12); - __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 329, __pyx_L16_except_error) + __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 328, __pyx_L16_except_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_v_id); __Pyx_GIVEREF(__pyx_v_id); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_id); - __pyx_t_15 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 329, __pyx_L16_except_error) + __pyx_t_15 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 328, __pyx_L16_except_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; @@ -4399,7 +4397,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_12, __pyx_t_15}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L16_except_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 328, __pyx_L16_except_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; @@ -4409,7 +4407,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_12, __pyx_t_15}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L16_except_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 328, __pyx_L16_except_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; @@ -4417,7 +4415,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } else #endif { - __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 329, __pyx_L16_except_error) + __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 328, __pyx_L16_except_error) __Pyx_GOTREF(__pyx_t_17); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_11); __pyx_t_11 = NULL; @@ -4428,18 +4426,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_t_15); __pyx_t_12 = 0; __pyx_t_15 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L16_except_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 328, __pyx_L16_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 329, __pyx_L16_except_error) + __PYX_ERR(0, 328, __pyx_L16_except_error) } __pyx_L16_except_error:; - /* "cython/interface.pyx":325 + /* "cython/interface.pyx":324 * except: * index = self._ids.index(id) * try: # <<<<<<<<<<<<<< @@ -4461,7 +4459,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob goto __pyx_L0; } - /* "cython/interface.pyx":287 + /* "cython/interface.pyx":286 * self.current_problem_.observe_with(observer) * return self.current_problem_ * def get_problem(self, id, observer=None): # <<<<<<<<<<<<<< @@ -4489,7 +4487,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":331 +/* "cython/interface.pyx":330 * raise NoSuchProblemException(self.name, str(id)) * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): # <<<<<<<<<<<<<< @@ -4531,12 +4529,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimension)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 1); __PYX_ERR(0, 331, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 1); __PYX_ERR(0, 330, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_instance)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 2); __PYX_ERR(0, 331, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 2); __PYX_ERR(0, 330, __pyx_L3_error) } case 3: if (kw_args > 0) { @@ -4545,7 +4543,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem_by_function_dimension_instance") < 0)) __PYX_ERR(0, 331, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem_by_function_dimension_instance") < 0)) __PYX_ERR(0, 330, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -4564,7 +4562,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 331, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 330, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.get_problem_by_function_dimension_instance", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -4603,61 +4601,61 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim PyObject *__pyx_t_18 = NULL; __Pyx_RefNannySetupContext("get_problem_by_function_dimension_instance", 0); - /* "cython/interface.pyx":355 + /* "cython/interface.pyx":354 * just silently die, which is e.g. a known issue of the "bbob" observer. * """ * cdef size_t _function = function # "conversion" to size_t # <<<<<<<<<<<<<< * cdef size_t _dimension = dimension # "conversion" to size_t * cdef size_t _instance = instance # "conversion" to size_t */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_function); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 355, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_function); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 354, __pyx_L1_error) __pyx_v__function = __pyx_t_1; - /* "cython/interface.pyx":356 + /* "cython/interface.pyx":355 * """ * cdef size_t _function = function # "conversion" to size_t * cdef size_t _dimension = dimension # "conversion" to size_t # <<<<<<<<<<<<<< * cdef size_t _instance = instance # "conversion" to size_t * */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_dimension); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 356, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_dimension); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 355, __pyx_L1_error) __pyx_v__dimension = __pyx_t_1; - /* "cython/interface.pyx":357 + /* "cython/interface.pyx":356 * cdef size_t _function = function # "conversion" to size_t * cdef size_t _dimension = dimension # "conversion" to size_t * cdef size_t _instance = instance # "conversion" to size_t # <<<<<<<<<<<<<< * * if not self.initialized: */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_instance); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 357, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_instance); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 356, __pyx_L1_error) __pyx_v__instance = __pyx_t_1; - /* "cython/interface.pyx":359 + /* "cython/interface.pyx":358 * cdef size_t _instance = instance # "conversion" to size_t * * if not self.initialized: # <<<<<<<<<<<<<< * raise ValueError("Suite has been finalized/free'ed") * try: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 359, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 358, __pyx_L1_error) __pyx_t_3 = ((!__pyx_t_2) != 0); if (__pyx_t_3) { - /* "cython/interface.pyx":360 + /* "cython/interface.pyx":359 * * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, */ - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 360, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 360, __pyx_L1_error) + __PYX_ERR(0, 359, __pyx_L1_error) - /* "cython/interface.pyx":359 + /* "cython/interface.pyx":358 * cdef size_t _instance = instance # "conversion" to size_t * * if not self.initialized: # <<<<<<<<<<<<<< @@ -4666,7 +4664,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ } - /* "cython/interface.pyx":361 + /* "cython/interface.pyx":360 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * try: # <<<<<<<<<<<<<< @@ -4682,7 +4680,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_XGOTREF(__pyx_t_7); /*try:*/ { - /* "cython/interface.pyx":362 + /* "cython/interface.pyx":361 * raise ValueError("Suite has been finalized/free'ed") * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, # <<<<<<<<<<<<<< @@ -4691,7 +4689,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ __Pyx_XDECREF(__pyx_r); - /* "cython/interface.pyx":364 + /* "cython/interface.pyx":363 * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, * _dimension, _instance), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< @@ -4701,7 +4699,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_8 = __pyx_v_self->_name; __Pyx_INCREF(__pyx_t_8); - /* "cython/interface.pyx":362 + /* "cython/interface.pyx":361 * raise ValueError("Suite has been finalized/free'ed") * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, # <<<<<<<<<<<<<< @@ -4711,18 +4709,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_10.__pyx_n = 2; __pyx_t_10.free = Py_True; __pyx_t_10.suite_name = __pyx_t_8; - __pyx_t_9 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem_by_function_dimension_instance(__pyx_v_self->suite, __pyx_v__function, __pyx_v__dimension, __pyx_v__instance), &__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 362, __pyx_L4_error) + __pyx_t_9 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem_by_function_dimension_instance(__pyx_v_self->suite, __pyx_v__function, __pyx_v__dimension, __pyx_v__instance), &__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 361, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "cython/interface.pyx":364 + /* "cython/interface.pyx":363 * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, * _dimension, _instance), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< * except: * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 364, __pyx_L4_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 363, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; @@ -4736,13 +4734,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim } } if (!__pyx_t_9) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 364, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 363, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 364, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 363, __pyx_L4_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_4); } else @@ -4750,19 +4748,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 364, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 363, __pyx_L4_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 364, __pyx_L4_error) + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 363, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_observer); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 364, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 363, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } @@ -4772,7 +4770,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_4 = 0; goto __pyx_L8_try_return; - /* "cython/interface.pyx":361 + /* "cython/interface.pyx":360 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * try: # <<<<<<<<<<<<<< @@ -4787,7 +4785,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":365 + /* "cython/interface.pyx":364 * _dimension, _instance), * True, self._name).observe_with(observer) * except: # <<<<<<<<<<<<<< @@ -4796,26 +4794,26 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem_by_function_dimension_instance", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_11) < 0) __PYX_ERR(0, 365, __pyx_L6_except_error) + if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_11) < 0) __PYX_ERR(0, 364, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_11); - /* "cython/interface.pyx":366 + /* "cython/interface.pyx":365 * True, self._name).observe_with(observer) * except: * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, # <<<<<<<<<<<<<< * dimension, * instance)) */ - __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 366, __pyx_L6_except_error) + __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 365, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_12); - __pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 366, __pyx_L6_except_error) + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 365, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_13); - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_function_dimension_instance, __pyx_n_s_format); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 366, __pyx_L6_except_error) + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_function_dimension_instance, __pyx_n_s_format); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 365, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_15); - /* "cython/interface.pyx":368 + /* "cython/interface.pyx":367 * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, * dimension, * instance)) # <<<<<<<<<<<<<< @@ -4837,7 +4835,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[4] = {__pyx_t_16, __pyx_v_function, __pyx_v_dimension, __pyx_v_instance}; - __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 366, __pyx_L6_except_error) + __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 365, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_14); } else @@ -4845,13 +4843,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[4] = {__pyx_t_16, __pyx_v_function, __pyx_v_dimension, __pyx_v_instance}; - __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 366, __pyx_L6_except_error) + __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 365, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_14); } else #endif { - __pyx_t_18 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 366, __pyx_L6_except_error) + __pyx_t_18 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 365, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_18); if (__pyx_t_16) { __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_16); __pyx_t_16 = NULL; @@ -4865,7 +4863,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_INCREF(__pyx_v_instance); __Pyx_GIVEREF(__pyx_v_instance); PyTuple_SET_ITEM(__pyx_t_18, 2+__pyx_t_17, __pyx_v_instance); - __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_18, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 366, __pyx_L6_except_error) + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_18, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 365, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } @@ -4885,7 +4883,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_13, __pyx_t_14}; - __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 366, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 365, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -4895,7 +4893,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_13, __pyx_t_14}; - __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 366, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 365, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -4903,7 +4901,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim } else #endif { - __pyx_t_18 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 366, __pyx_L6_except_error) + __pyx_t_18 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 365, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_18); if (__pyx_t_15) { __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_15); __pyx_t_15 = NULL; @@ -4914,18 +4912,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_t_14); __pyx_t_13 = 0; __pyx_t_14 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_18, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 366, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_18, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 365, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_ERR(0, 366, __pyx_L6_except_error) + __PYX_ERR(0, 365, __pyx_L6_except_error) } __pyx_L6_except_error:; - /* "cython/interface.pyx":361 + /* "cython/interface.pyx":360 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * try: # <<<<<<<<<<<<<< @@ -4947,7 +4945,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim goto __pyx_L0; } - /* "cython/interface.pyx":331 + /* "cython/interface.pyx":330 * raise NoSuchProblemException(self.name, str(id)) * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): # <<<<<<<<<<<<<< @@ -4975,7 +4973,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim return __pyx_r; } -/* "cython/interface.pyx":370 +/* "cython/interface.pyx":369 * instance)) * * def __getitem__(self, key): # <<<<<<<<<<<<<< @@ -5009,7 +5007,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("__getitem__", 0); - /* "cython/interface.pyx":373 + /* "cython/interface.pyx":372 * """`self[i]` is a synonym for `self.get_problem(i)`, see `get_problem` * """ * return self.get_problem(key) # <<<<<<<<<<<<<< @@ -5017,7 +5015,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o * def free(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 372, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -5030,13 +5028,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 373, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_key}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 373, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -5044,19 +5042,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_key}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 373, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 373, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 372, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_key); __Pyx_GIVEREF(__pyx_v_key); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_key); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 373, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } @@ -5066,7 +5064,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":370 + /* "cython/interface.pyx":369 * instance)) * * def __getitem__(self, key): # <<<<<<<<<<<<<< @@ -5088,7 +5086,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":375 +/* "cython/interface.pyx":374 * return self.get_problem(key) * * def free(self): # <<<<<<<<<<<<<< @@ -5116,7 +5114,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc int __pyx_t_1; __Pyx_RefNannySetupContext("free", 0); - /* "cython/interface.pyx":377 + /* "cython/interface.pyx":376 * def free(self): * """free underlying C structures""" * if self.suite: # for some reason __dealloc__ cannot be called here # <<<<<<<<<<<<<< @@ -5126,7 +5124,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc __pyx_t_1 = (__pyx_v_self->suite != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":378 + /* "cython/interface.pyx":377 * """free underlying C structures""" * if self.suite: # for some reason __dealloc__ cannot be called here * coco_suite_free(self.suite) # <<<<<<<<<<<<<< @@ -5135,7 +5133,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc */ coco_suite_free(__pyx_v_self->suite); - /* "cython/interface.pyx":377 + /* "cython/interface.pyx":376 * def free(self): * """free underlying C structures""" * if self.suite: # for some reason __dealloc__ cannot be called here # <<<<<<<<<<<<<< @@ -5144,7 +5142,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc */ } - /* "cython/interface.pyx":379 + /* "cython/interface.pyx":378 * if self.suite: # for some reason __dealloc__ cannot be called here * coco_suite_free(self.suite) * self.suite = NULL # <<<<<<<<<<<<<< @@ -5153,7 +5151,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc */ __pyx_v_self->suite = NULL; - /* "cython/interface.pyx":380 + /* "cython/interface.pyx":379 * coco_suite_free(self.suite) * self.suite = NULL * self.initialized = False # not (yet) visible from outside # <<<<<<<<<<<<<< @@ -5166,7 +5164,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_False; - /* "cython/interface.pyx":375 + /* "cython/interface.pyx":374 * return self.get_problem(key) * * def free(self): # <<<<<<<<<<<<<< @@ -5181,7 +5179,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":381 +/* "cython/interface.pyx":380 * self.suite = NULL * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -5205,7 +5203,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c int __pyx_t_1; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "cython/interface.pyx":382 + /* "cython/interface.pyx":381 * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): * if self.suite: # <<<<<<<<<<<<<< @@ -5215,7 +5213,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c __pyx_t_1 = (__pyx_v_self->suite != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":383 + /* "cython/interface.pyx":382 * def __dealloc__(self): * if self.suite: * coco_suite_free(self.suite) # <<<<<<<<<<<<<< @@ -5224,7 +5222,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c */ coco_suite_free(__pyx_v_self->suite); - /* "cython/interface.pyx":382 + /* "cython/interface.pyx":381 * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): * if self.suite: # <<<<<<<<<<<<<< @@ -5233,7 +5231,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c */ } - /* "cython/interface.pyx":381 + /* "cython/interface.pyx":380 * self.suite = NULL * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -5245,7 +5243,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c __Pyx_RefNannyFinishContext(); } -/* "cython/interface.pyx":385 +/* "cython/interface.pyx":384 * coco_suite_free(self.suite) * * def find_problem_ids(self, *args, **kwargs): # <<<<<<<<<<<<<< @@ -5280,20 +5278,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(CYTHON_UN PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("find_problem_ids", 0); - /* "cython/interface.pyx":387 + /* "cython/interface.pyx":386 * def find_problem_ids(self, *args, **kwargs): * """has been renamed to `ids`""" * raise NotImplementedError( # <<<<<<<<<<<<<< * "`find_problem_ids()` has been renamed to `ids()`") * */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 387, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 387, __pyx_L1_error) + __PYX_ERR(0, 386, __pyx_L1_error) - /* "cython/interface.pyx":385 + /* "cython/interface.pyx":384 * coco_suite_free(self.suite) * * def find_problem_ids(self, *args, **kwargs): # <<<<<<<<<<<<<< @@ -5311,7 +5309,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(CYTHON_UN return __pyx_r; } -/* "cython/interface.pyx":391 +/* "cython/interface.pyx":390 * * * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< @@ -5360,7 +5358,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "ids") < 0)) __PYX_ERR(0, 391, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "ids") < 0)) __PYX_ERR(0, 390, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) < 0) { goto __pyx_L5_argtuple_error; @@ -5371,7 +5369,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("ids", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 391, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("ids", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 390, __pyx_L3_error) __pyx_L3_error:; __Pyx_DECREF(__pyx_v_id_snippets); __pyx_v_id_snippets = 0; __Pyx_AddTraceback("cocoex.interface.Suite.ids", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -5408,19 +5406,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco int __pyx_t_13; __Pyx_RefNannySetupContext("ids", 0); - /* "cython/interface.pyx":429 + /* "cython/interface.pyx":428 * * """ * res = [] # <<<<<<<<<<<<<< * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_res = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":430 + /* "cython/interface.pyx":429 * """ * res = [] * for idx, id in enumerate(self._ids): # <<<<<<<<<<<<<< @@ -5433,26 +5431,26 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_2 = __pyx_v_self->_ids; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 430, __pyx_L1_error) + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 430, __pyx_L1_error) + __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 429, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 430, __pyx_L1_error) + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 429, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 430, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 430, __pyx_L1_error) + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 429, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 430, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } @@ -5462,7 +5460,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 430, __pyx_L1_error) + else __PYX_ERR(0, 429, __pyx_L1_error) } break; } @@ -5472,33 +5470,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_5 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_1); - __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 430, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; __pyx_t_5 = 0; - /* "cython/interface.pyx":431 + /* "cython/interface.pyx":430 * res = [] * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): # <<<<<<<<<<<<<< * if verbose: * print(" id=%s, index=%d" % (id, idx)) */ - __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 431, __pyx_L1_error) + __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __pyx_v_id_snippets; __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0; for (;;) { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 431, __pyx_L1_error) + __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 430, __pyx_L1_error) #else - __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 431, __pyx_L1_error) + __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_8); __pyx_t_8 = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_id, __pyx_n_s_find); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 431, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_id, __pyx_n_s_find); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { @@ -5511,13 +5509,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco } } if (!__pyx_t_10) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_i); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 431, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_i); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_v_i}; - __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 431, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_8); } else @@ -5525,60 +5523,60 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_v_i}; - __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 431, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_8); } else #endif { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 431, __pyx_L1_error) + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL; __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_i); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 431, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 431, __pyx_L1_error) + __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 431, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 431, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 431, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 431, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_12) { - /* "cython/interface.pyx":432 + /* "cython/interface.pyx":431 * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): * if verbose: # <<<<<<<<<<<<<< * print(" id=%s, index=%d" % (id, idx)) * res.append(id) */ - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_verbose); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 432, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_verbose); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 431, __pyx_L1_error) if (__pyx_t_12) { - /* "cython/interface.pyx":433 + /* "cython/interface.pyx":432 * if all([id.find(i) >= 0 for i in id_snippets]): * if verbose: * print(" id=%s, index=%d" % (id, idx)) # <<<<<<<<<<<<<< * res.append(id) * if get_problem: */ - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 433, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 432, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_id); __Pyx_GIVEREF(__pyx_v_id); @@ -5586,20 +5584,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __Pyx_INCREF(__pyx_v_idx); __Pyx_GIVEREF(__pyx_v_idx); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_idx); - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_id_s_index_d, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 433, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_id_s_index_d, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 432, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 433, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 432, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 433, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 432, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":432 + /* "cython/interface.pyx":431 * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): * if verbose: # <<<<<<<<<<<<<< @@ -5608,16 +5606,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco */ } - /* "cython/interface.pyx":434 + /* "cython/interface.pyx":433 * if verbose: * print(" id=%s, index=%d" % (id, idx)) * res.append(id) # <<<<<<<<<<<<<< * if get_problem: * return self.get_problem(res[0]) */ - __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_res, __pyx_v_id); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 434, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_res, __pyx_v_id); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 433, __pyx_L1_error) - /* "cython/interface.pyx":431 + /* "cython/interface.pyx":430 * res = [] * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): # <<<<<<<<<<<<<< @@ -5626,7 +5624,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco */ } - /* "cython/interface.pyx":430 + /* "cython/interface.pyx":429 * """ * res = [] * for idx, id in enumerate(self._ids): # <<<<<<<<<<<<<< @@ -5637,17 +5635,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":435 + /* "cython/interface.pyx":434 * print(" id=%s, index=%d" % (id, idx)) * res.append(id) * if get_problem: # <<<<<<<<<<<<<< * return self.get_problem(res[0]) * return res */ - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_get_problem); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 435, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_get_problem); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 434, __pyx_L1_error) if (__pyx_t_12) { - /* "cython/interface.pyx":436 + /* "cython/interface.pyx":435 * res.append(id) * if get_problem: * return self.get_problem(res[0]) # <<<<<<<<<<<<<< @@ -5655,9 +5653,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 436, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 435, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -5670,14 +5668,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco } } if (!__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -5686,20 +5684,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 436, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 435, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6); __pyx_t_6 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -5709,7 +5707,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":435 + /* "cython/interface.pyx":434 * print(" id=%s, index=%d" % (id, idx)) * res.append(id) * if get_problem: # <<<<<<<<<<<<<< @@ -5718,7 +5716,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco */ } - /* "cython/interface.pyx":437 + /* "cython/interface.pyx":436 * if get_problem: * return self.get_problem(res[0]) * return res # <<<<<<<<<<<<<< @@ -5730,7 +5728,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_r = __pyx_v_res; goto __pyx_L0; - /* "cython/interface.pyx":391 + /* "cython/interface.pyx":390 * * * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< @@ -5760,7 +5758,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco return __pyx_r; } -/* "cython/interface.pyx":440 +/* "cython/interface.pyx":439 * * @property * def current_problem(self): # <<<<<<<<<<<<<< @@ -5786,7 +5784,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(st __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":442 + /* "cython/interface.pyx":441 * def current_problem(self): * """current "open/active" problem to be benchmarked""" * return self.current_problem_ # <<<<<<<<<<<<<< @@ -5798,7 +5796,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(st __pyx_r = __pyx_v_self->current_problem_; goto __pyx_L0; - /* "cython/interface.pyx":440 + /* "cython/interface.pyx":439 * * @property * def current_problem(self): # <<<<<<<<<<<<<< @@ -5813,7 +5811,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(st return __pyx_r; } -/* "cython/interface.pyx":444 +/* "cython/interface.pyx":443 * return self.current_problem_ * @property * def current_index(self): # <<<<<<<<<<<<<< @@ -5839,7 +5837,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(stru __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":460 + /* "cython/interface.pyx":459 * * """ * return self._current_index # <<<<<<<<<<<<<< @@ -5851,7 +5849,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(stru __pyx_r = __pyx_v_self->_current_index; goto __pyx_L0; - /* "cython/interface.pyx":444 + /* "cython/interface.pyx":443 * return self.current_problem_ * @property * def current_index(self): # <<<<<<<<<<<<<< @@ -5866,7 +5864,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(stru return __pyx_r; } -/* "cython/interface.pyx":462 +/* "cython/interface.pyx":461 * return self._current_index * @property * def problem_names(self): # <<<<<<<<<<<<<< @@ -5893,7 +5891,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":464 + /* "cython/interface.pyx":463 * def problem_names(self): * """list of problem names in this `Suite`, see also `ids`""" * return list(self._names) # <<<<<<<<<<<<<< @@ -5901,13 +5899,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru * def dimensions(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PySequence_List(__pyx_v_self->_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 464, __pyx_L1_error) + __pyx_t_1 = PySequence_List(__pyx_v_self->_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":462 + /* "cython/interface.pyx":461 * return self._current_index * @property * def problem_names(self): # <<<<<<<<<<<<<< @@ -5926,7 +5924,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru return __pyx_r; } -/* "cython/interface.pyx":466 +/* "cython/interface.pyx":465 * return list(self._names) * @property * def dimensions(self): # <<<<<<<<<<<<<< @@ -5956,7 +5954,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct int __pyx_t_4; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":468 + /* "cython/interface.pyx":467 * def dimensions(self): * """list of problem dimensions occuring at least once in this `Suite`""" * return sorted(set(self._dimensions)) # <<<<<<<<<<<<<< @@ -5964,19 +5962,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct * def number_of_objectives(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PySet_New(__pyx_v_self->_dimensions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 468, __pyx_L1_error) + __pyx_t_2 = PySet_New(__pyx_v_self->_dimensions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 467, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 468, __pyx_L1_error) + __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 467, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 468, __pyx_L1_error) + __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 467, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":466 + /* "cython/interface.pyx":465 * return list(self._names) * @property * def dimensions(self): # <<<<<<<<<<<<<< @@ -5997,7 +5995,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct return __pyx_r; } -/* "cython/interface.pyx":470 +/* "cython/interface.pyx":469 * return sorted(set(self._dimensions)) * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -6027,7 +6025,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get int __pyx_t_4; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":472 + /* "cython/interface.pyx":471 * def number_of_objectives(self): * """list of number of objectives occuring in this `Suite`""" * return sorted(set(self._number_of_objectives)) # <<<<<<<<<<<<<< @@ -6035,19 +6033,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get * def indices(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PySet_New(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 472, __pyx_L1_error) + __pyx_t_2 = PySet_New(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 472, __pyx_L1_error) + __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 472, __pyx_L1_error) + __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 471, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":470 + /* "cython/interface.pyx":469 * return sorted(set(self._dimensions)) * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -6068,7 +6066,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get return __pyx_r; } -/* "cython/interface.pyx":474 +/* "cython/interface.pyx":473 * return sorted(set(self._number_of_objectives)) * @property * def indices(self): # <<<<<<<<<<<<<< @@ -6095,7 +6093,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":480 + /* "cython/interface.pyx":479 * Indices used in the Python interface run between 0 and `len(self)`. * """ * return list(self._indices) # <<<<<<<<<<<<<< @@ -6103,13 +6101,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py * def name(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PySequence_List(__pyx_v_self->_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 480, __pyx_L1_error) + __pyx_t_1 = PySequence_List(__pyx_v_self->_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":474 + /* "cython/interface.pyx":473 * return sorted(set(self._number_of_objectives)) * @property * def indices(self): # <<<<<<<<<<<<<< @@ -6128,7 +6126,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":482 +/* "cython/interface.pyx":481 * return list(self._indices) * @property * def name(self): # <<<<<<<<<<<<<< @@ -6154,7 +6152,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_o __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":484 + /* "cython/interface.pyx":483 * def name(self): * """name of this suite as used to instantiate the suite via `Suite(name, ...)`""" * return self._name # <<<<<<<<<<<<<< @@ -6166,7 +6164,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_o __pyx_r = __pyx_v_self->_name; goto __pyx_L0; - /* "cython/interface.pyx":482 + /* "cython/interface.pyx":481 * return list(self._indices) * @property * def name(self): # <<<<<<<<<<<<<< @@ -6181,7 +6179,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":486 +/* "cython/interface.pyx":485 * return self._name * @property * def instance(self): # <<<<<<<<<<<<<< @@ -6207,7 +6205,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __p __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":489 + /* "cython/interface.pyx":488 * """instance of this suite as used to instantiate the suite via * `Suite(name, instance, ...)`""" * return self._instance # <<<<<<<<<<<<<< @@ -6219,7 +6217,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __p __pyx_r = __pyx_v_self->_instance; goto __pyx_L0; - /* "cython/interface.pyx":486 + /* "cython/interface.pyx":485 * return self._name * @property * def instance(self): # <<<<<<<<<<<<<< @@ -6234,7 +6232,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __p return __pyx_r; } -/* "cython/interface.pyx":491 +/* "cython/interface.pyx":490 * return self._instance * @property * def options(self): # <<<<<<<<<<<<<< @@ -6260,7 +6258,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":494 + /* "cython/interface.pyx":493 * """options for this suite as used to instantiate the suite via * `Suite(name, instance, options)`""" * return self._options # <<<<<<<<<<<<<< @@ -6272,7 +6270,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __py __pyx_r = __pyx_v_self->_options; goto __pyx_L0; - /* "cython/interface.pyx":491 + /* "cython/interface.pyx":490 * return self._instance * @property * def options(self): # <<<<<<<<<<<<<< @@ -6287,7 +6285,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":497 +/* "cython/interface.pyx":496 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -6315,7 +6313,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":498 + /* "cython/interface.pyx":497 * @property * def info(self): * return str(self) # <<<<<<<<<<<<<< @@ -6323,19 +6321,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 498, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 498, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":497 + /* "cython/interface.pyx":496 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -6355,7 +6353,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":499 +/* "cython/interface.pyx":498 * def info(self): * return str(self) * def __repr__(self): # <<<<<<<<<<<<<< @@ -6385,7 +6383,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("__repr__", 0); - /* "cython/interface.pyx":500 + /* "cython/interface.pyx":499 * return str(self) * def __repr__(self): * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets # <<<<<<<<<<<<<< @@ -6393,13 +6391,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 500, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 500, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 500, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 500, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); @@ -6410,14 +6408,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Suite_r_r_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 500, __pyx_L1_error) + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Suite_r_r_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":499 + /* "cython/interface.pyx":498 * def info(self): * return str(self) * def __repr__(self): # <<<<<<<<<<<<<< @@ -6439,7 +6437,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ return __pyx_r; } -/* "cython/interface.pyx":501 +/* "cython/interface.pyx":500 * def __repr__(self): * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets * def __str__(self): # <<<<<<<<<<<<<< @@ -6475,7 +6473,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 PyObject *__pyx_t_10 = NULL; __Pyx_RefNannySetupContext("__str__", 0); - /* "cython/interface.pyx":502 + /* "cython/interface.pyx":501 * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets * def __str__(self): * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ # <<<<<<<<<<<<<< @@ -6484,31 +6482,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 */ __Pyx_XDECREF(__pyx_r); - /* "cython/interface.pyx":503 + /* "cython/interface.pyx":502 * def __str__(self): * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ * % (self.name, self.instance, self.options, # <<<<<<<<<<<<<< * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 503, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 503, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 503, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - /* "cython/interface.pyx":504 + /* "cython/interface.pyx":503 * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ * % (self.name, self.instance, self.options, * len(self), '' if len(self) == 1 else 's', # <<<<<<<<<<<<<< * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) */ - __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 504, __pyx_L1_error) - __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 504, __pyx_L1_error) + __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 503, __pyx_L1_error) + __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 504, __pyx_L1_error) + __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 503, __pyx_L1_error) if (((__pyx_t_4 == 1) != 0)) { __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_6 = __pyx_kp_u__2; @@ -6517,16 +6515,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 __pyx_t_6 = __pyx_n_u_s; } - /* "cython/interface.pyx":505 + /* "cython/interface.pyx":504 * % (self.name, self.instance, self.options, * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', # <<<<<<<<<<<<<< * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 505, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_4 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 505, __pyx_L1_error) + __pyx_t_4 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (((__pyx_t_4 == 1) != 0)) { __Pyx_INCREF(__pyx_kp_u__2); @@ -6536,34 +6534,34 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 __pyx_t_7 = __pyx_n_u_s; } - /* "cython/interface.pyx":506 + /* "cython/interface.pyx":505 * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) # <<<<<<<<<<<<<< * def __len__(self): * return len(self._indices) */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 506, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 506, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_min, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 506, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_min, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 506, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 506, __pyx_L1_error) + __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 506, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 506, __pyx_L1_error) + __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); @@ -6571,18 +6569,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); __pyx_t_8 = 0; __pyx_t_9 = 0; - __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 506, __pyx_L1_error) + __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - /* "cython/interface.pyx":503 + /* "cython/interface.pyx":502 * def __str__(self): * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ * % (self.name, self.instance, self.options, # <<<<<<<<<<<<<< * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', */ - __pyx_t_10 = PyTuple_New(7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 503, __pyx_L1_error) + __pyx_t_10 = PyTuple_New(7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); @@ -6605,14 +6603,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_9 = 0; - __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 503, __pyx_L1_error) + __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_r = __pyx_t_9; __pyx_t_9 = 0; goto __pyx_L0; - /* "cython/interface.pyx":501 + /* "cython/interface.pyx":500 * def __repr__(self): * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets * def __str__(self): # <<<<<<<<<<<<<< @@ -6639,7 +6637,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 return __pyx_r; } -/* "cython/interface.pyx":507 +/* "cython/interface.pyx":506 * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): # <<<<<<<<<<<<<< @@ -6667,7 +6665,7 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ Py_ssize_t __pyx_t_2; __Pyx_RefNannySetupContext("__len__", 0); - /* "cython/interface.pyx":508 + /* "cython/interface.pyx":507 * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): * return len(self._indices) # <<<<<<<<<<<<<< @@ -6676,12 +6674,12 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ */ __pyx_t_1 = __pyx_v_self->_indices; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 508, __pyx_L1_error) + __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 507, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; goto __pyx_L0; - /* "cython/interface.pyx":507 + /* "cython/interface.pyx":506 * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): # <<<<<<<<<<<<<< @@ -6700,7 +6698,7 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ } static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "cython/interface.pyx":510 +/* "cython/interface.pyx":509 * return len(self._indices) * * def __iter__(self): # <<<<<<<<<<<<<< @@ -6734,7 +6732,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_ if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)Py_None); __Pyx_INCREF(Py_None); - __PYX_ERR(0, 510, __pyx_L1_error) + __PYX_ERR(0, 509, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } @@ -6742,7 +6740,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_ __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); { - __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6cocoex_9interface_5Suite_28generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_Suite___iter, __pyx_n_s_cocoex_interface); if (unlikely(!gen)) __PYX_ERR(0, 510, __pyx_L1_error) + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6cocoex_9interface_5Suite_28generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_Suite___iter, __pyx_n_s_cocoex_interface); if (unlikely(!gen)) __PYX_ERR(0, 509, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; @@ -6787,9 +6785,9 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO return NULL; } __pyx_L3_first_run:; - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 510, __pyx_L1_error) + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 509, __pyx_L1_error) - /* "cython/interface.pyx":517 + /* "cython/interface.pyx":516 * rewinds the suite to the initial state. """ * if 1 < 3: * s = self # <<<<<<<<<<<<<< @@ -6800,14 +6798,14 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); __pyx_cur_scope->__pyx_v_s = __pyx_cur_scope->__pyx_v_self; - /* "cython/interface.pyx":518 + /* "cython/interface.pyx":517 * if 1 < 3: * s = self * s.reset() # <<<<<<<<<<<<<< * else: * s = Suite(self.name, self.instance, self.options) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_reset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 518, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_reset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -6820,16 +6818,16 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 518, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 518, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":521 + /* "cython/interface.pyx":520 * else: * s = Suite(self.name, self.instance, self.options) * try: # <<<<<<<<<<<<<< @@ -6846,7 +6844,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XGOTREF(__pyx_t_6); /*try:*/ { - /* "cython/interface.pyx":522 + /* "cython/interface.pyx":521 * s = Suite(self.name, self.instance, self.options) * try: * while True: # <<<<<<<<<<<<<< @@ -6855,7 +6853,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ while (1) { - /* "cython/interface.pyx":523 + /* "cython/interface.pyx":522 * try: * while True: * try: # <<<<<<<<<<<<<< @@ -6871,14 +6869,14 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XGOTREF(__pyx_t_9); /*try:*/ { - /* "cython/interface.pyx":524 + /* "cython/interface.pyx":523 * while True: * try: * problem = s.next_problem() # <<<<<<<<<<<<<< * if problem is None: * raise StopIteration */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_next_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 524, __pyx_L17_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_next_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 523, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -6891,10 +6889,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 524, __pyx_L17_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 523, __pyx_L17_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 524, __pyx_L17_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 523, __pyx_L17_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -6903,7 +6901,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":525 + /* "cython/interface.pyx":524 * try: * problem = s.next_problem() * if problem is None: # <<<<<<<<<<<<<< @@ -6914,7 +6912,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_11 = (__pyx_t_10 != 0); if (__pyx_t_11) { - /* "cython/interface.pyx":526 + /* "cython/interface.pyx":525 * problem = s.next_problem() * if problem is None: * raise StopIteration # <<<<<<<<<<<<<< @@ -6922,9 +6920,9 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * raise StopIteration */ __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0); - __PYX_ERR(0, 526, __pyx_L17_error) + __PYX_ERR(0, 525, __pyx_L17_error) - /* "cython/interface.pyx":525 + /* "cython/interface.pyx":524 * try: * problem = s.next_problem() * if problem is None: # <<<<<<<<<<<<<< @@ -6933,7 +6931,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ } - /* "cython/interface.pyx":523 + /* "cython/interface.pyx":522 * try: * while True: * try: # <<<<<<<<<<<<<< @@ -6951,25 +6949,25 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":527 + /* "cython/interface.pyx":526 * if problem is None: * raise StopIteration * except NoSuchProblemException: # <<<<<<<<<<<<<< * raise StopIteration * yield problem */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 527, __pyx_L19_except_error) + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 526, __pyx_L19_except_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_12) { __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 527, __pyx_L19_except_error) + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 526, __pyx_L19_except_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_3); - /* "cython/interface.pyx":528 + /* "cython/interface.pyx":527 * raise StopIteration * except NoSuchProblemException: * raise StopIteration # <<<<<<<<<<<<<< @@ -6977,12 +6975,12 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * except: */ __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0); - __PYX_ERR(0, 528, __pyx_L19_except_error) + __PYX_ERR(0, 527, __pyx_L19_except_error) } goto __pyx_L19_except_error; __pyx_L19_except_error:; - /* "cython/interface.pyx":523 + /* "cython/interface.pyx":522 * try: * while True: * try: # <<<<<<<<<<<<<< @@ -6998,7 +6996,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_L24_try_end:; } - /* "cython/interface.pyx":529 + /* "cython/interface.pyx":528 * except NoSuchProblemException: * raise StopIteration * yield problem # <<<<<<<<<<<<<< @@ -7028,10 +7026,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_6 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_6); - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 529, __pyx_L7_error) + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 528, __pyx_L7_error) } - /* "cython/interface.pyx":521 + /* "cython/interface.pyx":520 * else: * s = Suite(self.name, self.instance, self.options) * try: # <<<<<<<<<<<<<< @@ -7049,7 +7047,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":530 + /* "cython/interface.pyx":529 * raise StopIteration * yield problem * except: # <<<<<<<<<<<<<< @@ -7058,12 +7056,12 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 530, __pyx_L9_except_error) + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 529, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_1); - /* "cython/interface.pyx":531 + /* "cython/interface.pyx":530 * yield problem * except: * raise # <<<<<<<<<<<<<< @@ -7075,11 +7073,11 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XGIVEREF(__pyx_t_1); __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_1); __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; - __PYX_ERR(0, 531, __pyx_L9_except_error) + __PYX_ERR(0, 530, __pyx_L9_except_error) } __pyx_L9_except_error:; - /* "cython/interface.pyx":521 + /* "cython/interface.pyx":520 * else: * s = Suite(self.name, self.instance, self.options) * try: # <<<<<<<<<<<<<< @@ -7096,7 +7094,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } - /* "cython/interface.pyx":533 + /* "cython/interface.pyx":532 * raise * finally: # makes this ctrl-c safe, at least it should * s is self or s.free() # <<<<<<<<<<<<<< @@ -7108,13 +7106,13 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); if (!__pyx_t_11) { } else { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 533, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L31_bool_binop_done; } - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 533, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -7127,10 +7125,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_13) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 533, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 533, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 532, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -7162,13 +7160,13 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); if (!__pyx_t_11) { } else { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 533, __pyx_L34_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 532, __pyx_L34_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L35_bool_binop_done; } - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 533, __pyx_L34_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 532, __pyx_L34_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -7181,10 +7179,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_13) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 533, __pyx_L34_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 532, __pyx_L34_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 533, __pyx_L34_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 532, __pyx_L34_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -7226,7 +7224,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); - /* "cython/interface.pyx":510 + /* "cython/interface.pyx":509 * return len(self._indices) * * def __iter__(self): # <<<<<<<<<<<<<< @@ -7251,7 +7249,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO return __pyx_r; } -/* "cython/interface.pyx":569 +/* "cython/interface.pyx":568 * cdef _state * * def __cinit__(self, name, options): # <<<<<<<<<<<<<< @@ -7287,11 +7285,11 @@ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_se case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(0, 569, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(0, 568, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 569, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 568, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -7304,7 +7302,7 @@ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_se } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 569, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 568, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Observer.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -7336,7 +7334,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_RefNannySetupContext("__cinit__", 0); __Pyx_INCREF(__pyx_v_options); - /* "cython/interface.pyx":570 + /* "cython/interface.pyx":569 * * def __cinit__(self, name, options): * if isinstance(options, dict): # <<<<<<<<<<<<<< @@ -7347,31 +7345,31 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":571 + /* "cython/interface.pyx":570 * def __cinit__(self, name, options): * if isinstance(options, dict): * s = str(options).replace(',', ' ') # <<<<<<<<<<<<<< * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') */ - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 571, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_options); __Pyx_GIVEREF(__pyx_v_options); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_options); - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 571, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 571, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 571, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_s = __pyx_t_4; __pyx_t_4 = 0; - /* "cython/interface.pyx":572 + /* "cython/interface.pyx":571 * if isinstance(options, dict): * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: # <<<<<<<<<<<<<< @@ -7382,22 +7380,22 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc for (;;) { if (__pyx_t_5 >= 6) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 571, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_XDECREF_SET(__pyx_v_c, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "cython/interface.pyx":573 + /* "cython/interface.pyx":572 * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') # <<<<<<<<<<<<<< * options = s * self._name = _bstring(name) */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; @@ -7414,7 +7412,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_c, __pyx_kp_u__2}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); } else @@ -7422,13 +7420,13 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_c, __pyx_kp_u__2}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { - __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; @@ -7439,7 +7437,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_INCREF(__pyx_kp_u__2); __Pyx_GIVEREF(__pyx_kp_u__2); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_kp_u__2); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -7447,7 +7445,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":572 + /* "cython/interface.pyx":571 * if isinstance(options, dict): * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: # <<<<<<<<<<<<<< @@ -7457,7 +7455,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":574 + /* "cython/interface.pyx":573 * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') * options = s # <<<<<<<<<<<<<< @@ -7467,7 +7465,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_INCREF(__pyx_v_s); __Pyx_DECREF_SET(__pyx_v_options, __pyx_v_s); - /* "cython/interface.pyx":570 + /* "cython/interface.pyx":569 * * def __cinit__(self, name, options): * if isinstance(options, dict): # <<<<<<<<<<<<<< @@ -7476,14 +7474,14 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc */ } - /* "cython/interface.pyx":575 + /* "cython/interface.pyx":574 * s = s.replace(c, '') * options = s * self._name = _bstring(name) # <<<<<<<<<<<<<< * self._options = _bstring(options if options is not None else "") * self._observer = coco_observer(self._name, self._options) */ - __pyx_t_4 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 575, __pyx_L1_error) + __pyx_t_4 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->_name); @@ -7491,7 +7489,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __pyx_v_self->_name = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":576 + /* "cython/interface.pyx":575 * options = s * self._name = _bstring(name) * self._options = _bstring(options if options is not None else "") # <<<<<<<<<<<<<< @@ -7506,7 +7504,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_4 = __pyx_kp_u__2; } - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 576, __pyx_L1_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GIVEREF(__pyx_t_3); @@ -7515,18 +7513,18 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __pyx_v_self->_options = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":577 + /* "cython/interface.pyx":576 * self._name = _bstring(name) * self._options = _bstring(options if options is not None else "") * self._observer = coco_observer(self._name, self._options) # <<<<<<<<<<<<<< * self._state = 'initialized' * */ - __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 577, __pyx_L1_error) - __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 577, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 576, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 576, __pyx_L1_error) __pyx_v_self->_observer = coco_observer(__pyx_t_10, __pyx_t_11); - /* "cython/interface.pyx":578 + /* "cython/interface.pyx":577 * self._options = _bstring(options if options is not None else "") * self._observer = coco_observer(self._name, self._options) * self._state = 'initialized' # <<<<<<<<<<<<<< @@ -7539,7 +7537,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->_state); __pyx_v_self->_state = __pyx_n_u_initialized; - /* "cython/interface.pyx":569 + /* "cython/interface.pyx":568 * cdef _state * * def __cinit__(self, name, options): # <<<<<<<<<<<<<< @@ -7566,7 +7564,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":580 +/* "cython/interface.pyx":579 * self._state = 'initialized' * * def _update_current_observer_global(self): # <<<<<<<<<<<<<< @@ -7594,7 +7592,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer coco_observer_t *__pyx_t_1; __Pyx_RefNannySetupContext("_update_current_observer_global", 0); - /* "cython/interface.pyx":584 + /* "cython/interface.pyx":583 * for purely technical reasons""" * global _current_observer * _current_observer = self._observer # <<<<<<<<<<<<<< @@ -7604,7 +7602,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer __pyx_t_1 = __pyx_v_self->_observer; __pyx_v_6cocoex_9interface__current_observer = __pyx_t_1; - /* "cython/interface.pyx":580 + /* "cython/interface.pyx":579 * self._state = 'initialized' * * def _update_current_observer_global(self): # <<<<<<<<<<<<<< @@ -7619,7 +7617,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer return __pyx_r; } -/* "cython/interface.pyx":586 +/* "cython/interface.pyx":585 * _current_observer = self._observer * * def observe(self, problem): # <<<<<<<<<<<<<< @@ -7650,14 +7648,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("observe", 0); - /* "cython/interface.pyx":590 + /* "cython/interface.pyx":589 * calling `problem.observe_with(self)`. * """ * problem.observe_with(self) # <<<<<<<<<<<<<< * return self * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 590, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -7670,13 +7668,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 590, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 590, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -7684,19 +7682,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 590, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 590, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 590, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } @@ -7704,7 +7702,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":591 + /* "cython/interface.pyx":590 * """ * problem.observe_with(self) * return self # <<<<<<<<<<<<<< @@ -7716,7 +7714,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":586 + /* "cython/interface.pyx":585 * _current_observer = self._observer * * def observe(self, problem): # <<<<<<<<<<<<<< @@ -7738,7 +7736,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj return __pyx_r; } -/* "cython/interface.pyx":594 +/* "cython/interface.pyx":593 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -7764,7 +7762,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":598 + /* "cython/interface.pyx":597 * `self` before. * """ * return self._name # <<<<<<<<<<<<<< @@ -7776,7 +7774,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __py __pyx_r = __pyx_v_self->_name; goto __pyx_L0; - /* "cython/interface.pyx":594 + /* "cython/interface.pyx":593 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -7791,7 +7789,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":600 +/* "cython/interface.pyx":599 * return self._name * @property * def options(self): # <<<<<<<<<<<<<< @@ -7817,7 +7815,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct _ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":601 + /* "cython/interface.pyx":600 * @property * def options(self): * return self._options # <<<<<<<<<<<<<< @@ -7829,7 +7827,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct _ __pyx_r = __pyx_v_self->_options; goto __pyx_L0; - /* "cython/interface.pyx":600 + /* "cython/interface.pyx":599 * return self._name * @property * def options(self): # <<<<<<<<<<<<<< @@ -7844,7 +7842,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct _ return __pyx_r; } -/* "cython/interface.pyx":603 +/* "cython/interface.pyx":602 * return self._options * @property * def state(self): # <<<<<<<<<<<<<< @@ -7870,7 +7868,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __p __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":604 + /* "cython/interface.pyx":603 * @property * def state(self): * return self._state # <<<<<<<<<<<<<< @@ -7882,7 +7880,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __p __pyx_r = __pyx_v_self->_state; goto __pyx_L0; - /* "cython/interface.pyx":603 + /* "cython/interface.pyx":602 * return self._options * @property * def state(self): # <<<<<<<<<<<<<< @@ -7897,7 +7895,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __p return __pyx_r; } -/* "cython/interface.pyx":606 +/* "cython/interface.pyx":605 * return self._state * @property * def result_folder(self): # <<<<<<<<<<<<<< @@ -7924,7 +7922,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_13result_folder___get__(s PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":607 + /* "cython/interface.pyx":606 * @property * def result_folder(self): * return coco_observer_get_result_folder(self._observer) # <<<<<<<<<<<<<< @@ -7932,13 +7930,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_13result_folder___get__(s * def free(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyStr_FromString(coco_observer_get_result_folder(__pyx_v_self->_observer)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyStr_FromString(coco_observer_get_result_folder(__pyx_v_self->_observer)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":606 + /* "cython/interface.pyx":605 * return self._state * @property * def result_folder(self): # <<<<<<<<<<<<<< @@ -7957,7 +7955,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_13result_folder___get__(s return __pyx_r; } -/* "cython/interface.pyx":609 +/* "cython/interface.pyx":608 * return coco_observer_get_result_folder(self._observer) * * def free(self): # <<<<<<<<<<<<<< @@ -7986,14 +7984,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("free", 0); - /* "cython/interface.pyx":610 + /* "cython/interface.pyx":609 * * def free(self): * self.__dealloc__() # <<<<<<<<<<<<<< * self._observer = NULL * self._state = 'deactivated' */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dealloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 610, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dealloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -8006,16 +8004,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":611 + /* "cython/interface.pyx":610 * def free(self): * self.__dealloc__() * self._observer = NULL # <<<<<<<<<<<<<< @@ -8024,7 +8022,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c */ __pyx_v_self->_observer = NULL; - /* "cython/interface.pyx":612 + /* "cython/interface.pyx":611 * self.__dealloc__() * self._observer = NULL * self._state = 'deactivated' # <<<<<<<<<<<<<< @@ -8037,7 +8035,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c __Pyx_DECREF(__pyx_v_self->_state); __pyx_v_self->_state = __pyx_n_u_deactivated; - /* "cython/interface.pyx":609 + /* "cython/interface.pyx":608 * return coco_observer_get_result_folder(self._observer) * * def free(self): # <<<<<<<<<<<<<< @@ -8060,7 +8058,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c return __pyx_r; } -/* "cython/interface.pyx":613 +/* "cython/interface.pyx":612 * self._observer = NULL * self._state = 'deactivated' * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -8084,7 +8082,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ int __pyx_t_1; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "cython/interface.pyx":614 + /* "cython/interface.pyx":613 * self._state = 'deactivated' * def __dealloc__(self): * if self._observer != NULL: # <<<<<<<<<<<<<< @@ -8094,7 +8092,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ __pyx_t_1 = ((__pyx_v_self->_observer != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":615 + /* "cython/interface.pyx":614 * def __dealloc__(self): * if self._observer != NULL: * coco_observer_free(self._observer) # <<<<<<<<<<<<<< @@ -8103,7 +8101,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ */ coco_observer_free(__pyx_v_self->_observer); - /* "cython/interface.pyx":614 + /* "cython/interface.pyx":613 * self._state = 'deactivated' * def __dealloc__(self): * if self._observer != NULL: # <<<<<<<<<<<<<< @@ -8112,7 +8110,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ */ } - /* "cython/interface.pyx":613 + /* "cython/interface.pyx":612 * self._observer = NULL * self._state = 'deactivated' * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -8124,7 +8122,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ __Pyx_RefNannyFinishContext(); } -/* "cython/interface.pyx":617 +/* "cython/interface.pyx":616 * coco_observer_free(self._observer) * * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< @@ -8150,19 +8148,19 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v } } - /* "cython/interface.pyx":623 + /* "cython/interface.pyx":622 * This is necessary because __cinit__ cannot be defined as cdef, only as def. * """ * res = Problem() # <<<<<<<<<<<<<< * res._suite_name = suite_name * return res._initialize(problem, free) */ - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6cocoex_9interface_Problem), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 623, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6cocoex_9interface_Problem), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_res = ((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":624 + /* "cython/interface.pyx":623 * """ * res = Problem() * res._suite_name = suite_name # <<<<<<<<<<<<<< @@ -8175,7 +8173,7 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v __Pyx_DECREF(__pyx_v_res->_suite_name); __pyx_v_res->_suite_name = __pyx_v_suite_name; - /* "cython/interface.pyx":625 + /* "cython/interface.pyx":624 * res = Problem() * res._suite_name = suite_name * return res._initialize(problem, free) # <<<<<<<<<<<<<< @@ -8185,13 +8183,13 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v __Pyx_XDECREF(__pyx_r); __pyx_t_2.__pyx_n = 1; __pyx_t_2.free = __pyx_v_free; - __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Problem *)__pyx_v_res->__pyx_vtab)->_initialize(__pyx_v_res, __pyx_v_problem, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 625, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Problem *)__pyx_v_res->__pyx_vtab)->_initialize(__pyx_v_res, __pyx_v_problem, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":617 + /* "cython/interface.pyx":616 * coco_observer_free(self._observer) * * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< @@ -8211,7 +8209,7 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v return __pyx_r; } -/* "cython/interface.pyx":647 +/* "cython/interface.pyx":646 * cdef _do_free * cdef initialized * def __cinit__(self): # <<<<<<<<<<<<<< @@ -8240,7 +8238,7 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__", 0); - /* "cython/interface.pyx":649 + /* "cython/interface.pyx":648 * def __cinit__(self): * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize # <<<<<<<<<<<<<< @@ -8253,7 +8251,7 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_False; - /* "cython/interface.pyx":647 + /* "cython/interface.pyx":646 * cdef _do_free * cdef initialized * def __cinit__(self): # <<<<<<<<<<<<<< @@ -8267,7 +8265,7 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco return __pyx_r; } -/* "cython/interface.pyx":650 +/* "cython/interface.pyx":649 * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< @@ -8296,30 +8294,30 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } - /* "cython/interface.pyx":652 + /* "cython/interface.pyx":651 * cdef _initialize(self, coco_problem_t* problem, free=True): * cdef np.npy_intp shape[1] * if self.initialized: # <<<<<<<<<<<<<< * raise RuntimeError("Problem already initialized") * if problem == NULL: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 652, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 651, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":653 + /* "cython/interface.pyx":652 * cdef np.npy_intp shape[1] * if self.initialized: * raise RuntimeError("Problem already initialized") # <<<<<<<<<<<<<< * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 653, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 653, __pyx_L1_error) + __PYX_ERR(0, 652, __pyx_L1_error) - /* "cython/interface.pyx":652 + /* "cython/interface.pyx":651 * cdef _initialize(self, coco_problem_t* problem, free=True): * cdef np.npy_intp shape[1] * if self.initialized: # <<<<<<<<<<<<<< @@ -8328,7 +8326,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ } - /* "cython/interface.pyx":654 + /* "cython/interface.pyx":653 * if self.initialized: * raise RuntimeError("Problem already initialized") * if problem == NULL: # <<<<<<<<<<<<<< @@ -8338,20 +8336,20 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_1 = ((__pyx_v_problem == NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":655 + /* "cython/interface.pyx":654 * raise RuntimeError("Problem already initialized") * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") # <<<<<<<<<<<<<< * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 655, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 655, __pyx_L1_error) + __PYX_ERR(0, 654, __pyx_L1_error) - /* "cython/interface.pyx":654 + /* "cython/interface.pyx":653 * if self.initialized: * raise RuntimeError("Problem already initialized") * if problem == NULL: # <<<<<<<<<<<<<< @@ -8360,7 +8358,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ } - /* "cython/interface.pyx":656 + /* "cython/interface.pyx":655 * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") * self.problem = problem # <<<<<<<<<<<<<< @@ -8369,14 +8367,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->problem = __pyx_v_problem; - /* "cython/interface.pyx":657 + /* "cython/interface.pyx":656 * raise ValueError("in Problem._initialize(problem,...): problem is NULL") * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) # <<<<<<<<<<<<<< * self._do_free = free * self._list_of_observers = [] */ - __pyx_t_2 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 657, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_problem_index); @@ -8384,7 +8382,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_v_self->_problem_index = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":658 + /* "cython/interface.pyx":657 * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) * self._do_free = free # <<<<<<<<<<<<<< @@ -8397,14 +8395,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_v_self->_do_free); __pyx_v_self->_do_free = __pyx_v_free; - /* "cython/interface.pyx":659 + /* "cython/interface.pyx":658 * self._problem_index = coco_problem_get_suite_dep_index(self.problem) * self._do_free = free * self._list_of_observers = [] # <<<<<<<<<<<<<< * # _problem_suite = _bstring(problem_suite) * # self.problem_suite = _problem_suite */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_list_of_observers); @@ -8412,7 +8410,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_v_self->_list_of_observers = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":664 + /* "cython/interface.pyx":663 * # Implicit type conversion via passing safe, * # see http://docs.cython.org/src/userguide/language_basics.html * self._number_of_variables = coco_problem_get_dimension(self.problem) # <<<<<<<<<<<<<< @@ -8421,7 +8419,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->_number_of_variables = coco_problem_get_dimension(__pyx_v_self->problem); - /* "cython/interface.pyx":665 + /* "cython/interface.pyx":664 * # see http://docs.cython.org/src/userguide/language_basics.html * self._number_of_variables = coco_problem_get_dimension(self.problem) * self._number_of_objectives = coco_problem_get_number_of_objectives(self.problem) # <<<<<<<<<<<<<< @@ -8430,7 +8428,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->_number_of_objectives = coco_problem_get_number_of_objectives(__pyx_v_self->problem); - /* "cython/interface.pyx":666 + /* "cython/interface.pyx":665 * self._number_of_variables = coco_problem_get_dimension(self.problem) * self._number_of_objectives = coco_problem_get_number_of_objectives(self.problem) * self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) # <<<<<<<<<<<<<< @@ -8439,19 +8437,19 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->_number_of_constraints = coco_problem_get_number_of_constraints(__pyx_v_self->problem); - /* "cython/interface.pyx":667 + /* "cython/interface.pyx":666 * self._number_of_objectives = coco_problem_get_number_of_objectives(self.problem) * self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) * self.y_values = np.zeros(self._number_of_objectives) # <<<<<<<<<<<<<< * self.constraint_values = np.zeros(self._number_of_constraints) * self.x_initial = np.zeros(self._number_of_variables) */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 667, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 667, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 667, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -8464,14 +8462,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_5) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 667, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 666, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 667, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 666, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -8480,45 +8478,45 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 667, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 666, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 667, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 667, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 667, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 666, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->y_values); __Pyx_DECREF(((PyObject *)__pyx_v_self->y_values)); __pyx_v_self->y_values = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":668 + /* "cython/interface.pyx":667 * self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) * self.y_values = np.zeros(self._number_of_objectives) * self.constraint_values = np.zeros(self._number_of_constraints) # <<<<<<<<<<<<<< * self.x_initial = np.zeros(self._number_of_variables) * ## FIXME: Inefficient because we copy the bounds instead of */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 668, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 668, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 668, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { @@ -8531,14 +8529,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -8547,45 +8545,45 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 668, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 668, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->constraint_values); __Pyx_DECREF(((PyObject *)__pyx_v_self->constraint_values)); __pyx_v_self->constraint_values = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":669 + /* "cython/interface.pyx":668 * self.y_values = np.zeros(self._number_of_objectives) * self.constraint_values = np.zeros(self._number_of_constraints) * self.x_initial = np.zeros(self._number_of_variables) # <<<<<<<<<<<<<< * ## FIXME: Inefficient because we copy the bounds instead of * ## sharing the data. */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 669, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 669, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 669, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { @@ -8598,14 +8596,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 669, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 669, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -8614,53 +8612,53 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 669, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 669, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_6); __pyx_t_6 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 669, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 669, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->x_initial); __Pyx_DECREF(((PyObject *)__pyx_v_self->x_initial)); __pyx_v_self->x_initial = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":672 + /* "cython/interface.pyx":671 * ## FIXME: Inefficient because we copy the bounds instead of * ## sharing the data. * self._lower_bounds = -np.inf * np.ones(self._number_of_variables) # <<<<<<<<<<<<<< * self._upper_bounds = np.inf * np.ones(self._number_of_variables) * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 672, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 672, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 672, __pyx_L1_error) + __pyx_t_2 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 672, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 672, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 672, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { @@ -8673,14 +8671,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_4) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 672, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 671, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_5); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; - __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 672, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 671, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -8689,54 +8687,54 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; - __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 672, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 671, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 672, __pyx_L1_error) + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 672, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 672, __pyx_L1_error) + __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 672, __pyx_L1_error) + if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 671, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_6); __Pyx_GOTREF(__pyx_v_self->_lower_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_lower_bounds)); __pyx_v_self->_lower_bounds = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":673 + /* "cython/interface.pyx":672 * ## sharing the data. * self._lower_bounds = -np.inf * np.ones(self._number_of_variables) * self._upper_bounds = np.inf * np.ones(self._number_of_variables) # <<<<<<<<<<<<<< * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 673, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 673, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 673, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 673, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 673, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { @@ -8749,14 +8747,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_3) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 673, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 673, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -8765,37 +8763,37 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 673, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 673, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2); __pyx_t_2 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 673, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyNumber_Multiply(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 673, __pyx_L1_error) + __pyx_t_7 = PyNumber_Multiply(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 673, __pyx_L1_error) + if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_self->_upper_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_upper_bounds)); __pyx_v_self->_upper_bounds = ((PyArrayObject *)__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":675 + /* "cython/interface.pyx":674 * self._upper_bounds = np.inf * np.ones(self._number_of_variables) * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): # <<<<<<<<<<<<<< @@ -8806,7 +8804,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { __pyx_v_i = __pyx_t_9; - /* "cython/interface.pyx":676 + /* "cython/interface.pyx":675 * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -8816,19 +8814,19 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_1 = ((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem) != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":677 + /* "cython/interface.pyx":676 * for i in range(self._number_of_variables): * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] # <<<<<<<<<<<<<< * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] */ - __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 677, __pyx_L1_error) + __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 676, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_lower_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 677, __pyx_L1_error) + if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_lower_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 676, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":676 + /* "cython/interface.pyx":675 * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -8837,7 +8835,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ } - /* "cython/interface.pyx":678 + /* "cython/interface.pyx":677 * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -8847,19 +8845,19 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_1 = ((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem) != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":679 + /* "cython/interface.pyx":678 * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] # <<<<<<<<<<<<<< * self._largest_fvalues_of_interest = None * self.initialized = True */ - __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 679, __pyx_L1_error) + __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_upper_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 679, __pyx_L1_error) + if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_upper_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 678, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":678 + /* "cython/interface.pyx":677 * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -8869,7 +8867,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } - /* "cython/interface.pyx":680 + /* "cython/interface.pyx":679 * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] * self._largest_fvalues_of_interest = None # <<<<<<<<<<<<<< @@ -8882,7 +8880,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(((PyObject *)__pyx_v_self->_largest_fvalues_of_interest)); __pyx_v_self->_largest_fvalues_of_interest = ((PyArrayObject *)Py_None); - /* "cython/interface.pyx":681 + /* "cython/interface.pyx":680 * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] * self._largest_fvalues_of_interest = None * self.initialized = True # <<<<<<<<<<<<<< @@ -8895,7 +8893,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_True; - /* "cython/interface.pyx":682 + /* "cython/interface.pyx":681 * self._largest_fvalues_of_interest = None * self.initialized = True * return self # <<<<<<<<<<<<<< @@ -8907,7 +8905,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":650 + /* "cython/interface.pyx":649 * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< @@ -8931,7 +8929,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":683 +/* "cython/interface.pyx":682 * self.initialized = True * return self * def constraint(self, x): # <<<<<<<<<<<<<< @@ -8976,22 +8974,22 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_pybuffernd__x.data = NULL; __pyx_pybuffernd__x.rcbuffer = &__pyx_pybuffer__x; - /* "cython/interface.pyx":688 + /* "cython/interface.pyx":687 * By convention, constraints with values <= 0 are considered as satisfied. * """ * if self.number_of_constraints <= 0: # <<<<<<<<<<<<<< * return # return None, prevent Python kernel from dying * # or should we return `[]` for zero constraints? */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 688, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 688, __pyx_L1_error) + __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 688, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { - /* "cython/interface.pyx":689 + /* "cython/interface.pyx":688 * """ * if self.number_of_constraints <= 0: * return # return None, prevent Python kernel from dying # <<<<<<<<<<<<<< @@ -9002,7 +9000,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "cython/interface.pyx":688 + /* "cython/interface.pyx":687 * By convention, constraints with values <= 0 are considered as satisfied. * """ * if self.number_of_constraints <= 0: # <<<<<<<<<<<<<< @@ -9011,35 +9009,35 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o */ } - /* "cython/interface.pyx":693 + /* "cython/interface.pyx":692 * # `[]` is more likely to produce quietly unexpected result? * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') # <<<<<<<<<<<<<< * if np.size(x) != self.number_of_variables: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 693, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 693, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 693, __pyx_L1_error) + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 693, __pyx_L1_error) - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 693, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 692, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 693, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 692, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 693, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 692, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -9047,16 +9045,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":694 + /* "cython/interface.pyx":693 * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 694, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 694, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -9070,13 +9068,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o } } if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 694, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 694, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else @@ -9084,43 +9082,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 694, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else #endif { - __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 694, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_x); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 694, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 694, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 694, __pyx_L1_error) + __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 694, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) { - /* "cython/interface.pyx":696 + /* "cython/interface.pyx":695 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 696, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 696, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -9134,13 +9132,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o } } if (!__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 696, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 696, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -9148,73 +9146,73 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 696, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 696, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 696, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 696, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":698 + /* "cython/interface.pyx":697 * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) # <<<<<<<<<<<<<< * _x = x # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 698, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 698, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":696 + /* "cython/interface.pyx":695 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 696, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":695 + /* "cython/interface.pyx":694 * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: * raise ValueError( # <<<<<<<<<<<<<< * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." */ - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 695, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 695, __pyx_L1_error) + __PYX_ERR(0, 694, __pyx_L1_error) - /* "cython/interface.pyx":694 + /* "cython/interface.pyx":693 * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< @@ -9223,14 +9221,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o */ } - /* "cython/interface.pyx":699 + /* "cython/interface.pyx":698 * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) * _x = x # this is the final type conversion # <<<<<<<<<<<<<< * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 699, __pyx_L1_error) + if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 698, __pyx_L1_error) __pyx_t_1 = __pyx_v_x; __Pyx_INCREF(__pyx_t_1); { @@ -9247,12 +9245,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o } } __pyx_pybuffernd__x.diminfo[0].strides = __pyx_pybuffernd__x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__x.diminfo[0].shape = __pyx_pybuffernd__x.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 699, __pyx_L1_error) + if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 698, __pyx_L1_error) } __pyx_v__x = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":700 + /* "cython/interface.pyx":699 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -9262,14 +9260,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_t_3 = ((__pyx_v_self->problem == NULL) != 0); if (__pyx_t_3) { - /* "cython/interface.pyx":701 + /* "cython/interface.pyx":700 * _x = x # this is the final type conversion * if self.problem is NULL: * raise InvalidProblemException() # <<<<<<<<<<<<<< * coco_evaluate_constraint(self.problem, * np.PyArray_DATA(_x), */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 701, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -9282,18 +9280,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o } } if (__pyx_t_6) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 701, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 701, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 700, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 701, __pyx_L1_error) + __PYX_ERR(0, 700, __pyx_L1_error) - /* "cython/interface.pyx":700 + /* "cython/interface.pyx":699 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -9302,7 +9300,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o */ } - /* "cython/interface.pyx":704 + /* "cython/interface.pyx":703 * coco_evaluate_constraint(self.problem, * np.PyArray_DATA(_x), * np.PyArray_DATA(self.constraint_values)) # <<<<<<<<<<<<<< @@ -9312,7 +9310,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_t_1 = ((PyObject *)__pyx_v_self->constraint_values); __Pyx_INCREF(__pyx_t_1); - /* "cython/interface.pyx":702 + /* "cython/interface.pyx":701 * if self.problem is NULL: * raise InvalidProblemException() * coco_evaluate_constraint(self.problem, # <<<<<<<<<<<<<< @@ -9322,7 +9320,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o coco_evaluate_constraint(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_1)))); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":705 + /* "cython/interface.pyx":704 * np.PyArray_DATA(_x), * np.PyArray_DATA(self.constraint_values)) * return np.array(self.constraint_values, copy=True) # <<<<<<<<<<<<<< @@ -9330,20 +9328,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o * """Recommend a solution, return `None`. */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 705, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 705, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 705, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self->constraint_values)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->constraint_values)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->constraint_values)); - __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 705, __pyx_L1_error) + __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 705, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 705, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 704, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -9352,7 +9350,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":683 + /* "cython/interface.pyx":682 * self.initialized = True * return self * def constraint(self, x): # <<<<<<<<<<<<<< @@ -9386,7 +9384,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":706 +/* "cython/interface.pyx":705 * np.PyArray_DATA(self.constraint_values)) * return np.array(self.constraint_values, copy=True) * def recommend(self, arx): # <<<<<<<<<<<<<< @@ -9414,20 +9412,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED s PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("recommend", 0); - /* "cython/interface.pyx":712 + /* "cython/interface.pyx":711 * for the assessment of the algorithm. * """ * raise NotImplementedError("has never been tested, incomment this to start testing") # <<<<<<<<<<<<<< * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 712, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 712, __pyx_L1_error) + __PYX_ERR(0, 711, __pyx_L1_error) - /* "cython/interface.pyx":706 + /* "cython/interface.pyx":705 * np.PyArray_DATA(self.constraint_values)) * return np.array(self.constraint_values, copy=True) * def recommend(self, arx): # <<<<<<<<<<<<<< @@ -9445,7 +9443,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED s return __pyx_r; } -/* "cython/interface.pyx":725 +/* "cython/interface.pyx":724 * coco_recommend_solution(self.problem, np.PyArray_DATA(_x)) * * def logger_biobj_feed_solution(self, evaluation, y): # <<<<<<<<<<<<<< @@ -9482,11 +9480,11 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solutio case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, 1); __PYX_ERR(0, 725, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, 1); __PYX_ERR(0, 724, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "logger_biobj_feed_solution") < 0)) __PYX_ERR(0, 725, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "logger_biobj_feed_solution") < 0)) __PYX_ERR(0, 724, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -9499,7 +9497,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solutio } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 725, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 724, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.logger_biobj_feed_solution", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -9537,45 +9535,45 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __pyx_pybuffernd__y.data = NULL; __pyx_pybuffernd__y.rcbuffer = &__pyx_pybuffer__y; - /* "cython/interface.pyx":734 + /* "cython/interface.pyx":733 * with new indicator reference values. * """ * cdef size_t _evaluation = evaluation # "conversion" to size_t # <<<<<<<<<<<<<< * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_evaluation); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 734, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_evaluation); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 733, __pyx_L1_error) __pyx_v__evaluation = __pyx_t_1; - /* "cython/interface.pyx":736 + /* "cython/interface.pyx":735 * cdef size_t _evaluation = evaluation # "conversion" to size_t * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') # <<<<<<<<<<<<<< * if np.size(y) != self.number_of_objectives: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 736, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 736, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 736, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 736, __pyx_L1_error) + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 736, __pyx_L1_error) - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 736, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 735, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 736, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 736, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 735, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 736, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 736, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 735, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -9583,16 +9581,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __Pyx_DECREF_SET(__pyx_v_y, __pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":737 + /* "cython/interface.pyx":736 * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') * if np.size(y) != self.number_of_objectives: # <<<<<<<<<<<<<< * raise ValueError( * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 737, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 737, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -9606,13 +9604,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio } } if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 737, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_y}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 737, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else @@ -9620,43 +9618,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_y}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 737, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else #endif { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 737, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_y); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 737, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 737, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 737, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 737, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_7) { - /* "cython/interface.pyx":739 + /* "cython/interface.pyx":738 * if np.size(y) != self.number_of_objectives: * raise ValueError( * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + # <<<<<<<<<<<<<< * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 739, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 739, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -9670,13 +9668,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio } } if (!__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 739, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_y}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 739, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else @@ -9684,73 +9682,73 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_y}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 739, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 739, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_y); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 739, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 739, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":741 + /* "cython/interface.pyx":740 * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) # <<<<<<<<<<<<<< * _y = y # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 741, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 740, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_number_of_objectiv, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 741, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_number_of_objectiv, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 740, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":739 + /* "cython/interface.pyx":738 * if np.size(y) != self.number_of_objectives: * raise ValueError( * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + # <<<<<<<<<<<<<< * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) */ - __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 739, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":738 + /* "cython/interface.pyx":737 * y = np.array(y, copy=False, dtype=np.double, order='C') * if np.size(y) != self.number_of_objectives: * raise ValueError( # <<<<<<<<<<<<<< * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + * "not match the number of objectives `number_of_objectives==%d`." */ - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 738, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 738, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 738, __pyx_L1_error) + __PYX_ERR(0, 737, __pyx_L1_error) - /* "cython/interface.pyx":737 + /* "cython/interface.pyx":736 * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') * if np.size(y) != self.number_of_objectives: # <<<<<<<<<<<<<< @@ -9759,14 +9757,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio */ } - /* "cython/interface.pyx":742 + /* "cython/interface.pyx":741 * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) * _y = y # this is the final type conversion # <<<<<<<<<<<<<< * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_y) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_y, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 742, __pyx_L1_error) + if (!(likely(((__pyx_v_y) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_y, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 741, __pyx_L1_error) __pyx_t_3 = __pyx_v_y; __Pyx_INCREF(__pyx_t_3); { @@ -9783,12 +9781,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio } } __pyx_pybuffernd__y.diminfo[0].strides = __pyx_pybuffernd__y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__y.diminfo[0].shape = __pyx_pybuffernd__y.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 742, __pyx_L1_error) + if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 741, __pyx_L1_error) } __pyx_v__y = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":743 + /* "cython/interface.pyx":742 * % self.number_of_objectives) * _y = y # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -9798,14 +9796,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __pyx_t_7 = ((__pyx_v_self->problem == NULL) != 0); if (__pyx_t_7) { - /* "cython/interface.pyx":744 + /* "cython/interface.pyx":743 * _y = y # this is the final type conversion * if self.problem is NULL: * raise InvalidProblemException() # <<<<<<<<<<<<<< * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) * */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 744, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 743, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -9818,18 +9816,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio } } if (__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 744, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 743, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 744, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 743, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 744, __pyx_L1_error) + __PYX_ERR(0, 743, __pyx_L1_error) - /* "cython/interface.pyx":743 + /* "cython/interface.pyx":742 * % self.number_of_objectives) * _y = y # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -9838,7 +9836,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio */ } - /* "cython/interface.pyx":745 + /* "cython/interface.pyx":744 * if self.problem is NULL: * raise InvalidProblemException() * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) # <<<<<<<<<<<<<< @@ -9846,13 +9844,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyInt_From_int(coco_logger_biobj_feed_solution(__pyx_v_self->problem, __pyx_v__evaluation, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__y))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 745, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int(coco_logger_biobj_feed_solution(__pyx_v_self->problem, __pyx_v__evaluation, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__y))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 744, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":725 + /* "cython/interface.pyx":724 * coco_recommend_solution(self.problem, np.PyArray_DATA(_x)) * * def logger_biobj_feed_solution(self, evaluation, y): # <<<<<<<<<<<<<< @@ -9886,7 +9884,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio return __pyx_r; } -/* "cython/interface.pyx":748 +/* "cython/interface.pyx":747 * * * def add_observer(self, observer): # <<<<<<<<<<<<<< @@ -9917,7 +9915,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("add_observer", 0); - /* "cython/interface.pyx":751 + /* "cython/interface.pyx":750 * """`add_observer(self, observer: Observer)`, see `observe_with`. * """ * return self.observe_with(observer) # <<<<<<<<<<<<<< @@ -9925,7 +9923,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx * def observe_with(self, observer): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 751, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -9938,13 +9936,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_observer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 751, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_observer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 751, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -9952,19 +9950,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 751, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 751, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_observer); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 751, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } @@ -9974,7 +9972,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":748 + /* "cython/interface.pyx":747 * * * def add_observer(self, observer): # <<<<<<<<<<<<<< @@ -9996,7 +9994,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx return __pyx_r; } -/* "cython/interface.pyx":753 +/* "cython/interface.pyx":752 * return self.observe_with(observer) * * def observe_with(self, observer): # <<<<<<<<<<<<<< @@ -10028,17 +10026,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py int __pyx_t_5; __Pyx_RefNannySetupContext("observe_with", 0); - /* "cython/interface.pyx":765 + /* "cython/interface.pyx":764 * See also: class `Observer` * """ * if observer: # <<<<<<<<<<<<<< * assert self.problem * observer._update_current_observer_global() */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_observer); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 765, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_observer); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 764, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":766 + /* "cython/interface.pyx":765 * """ * if observer: * assert self.problem # <<<<<<<<<<<<<< @@ -10049,19 +10047,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 766, __pyx_L1_error) + __PYX_ERR(0, 765, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":767 + /* "cython/interface.pyx":766 * if observer: * assert self.problem * observer._update_current_observer_global() # <<<<<<<<<<<<<< * self.problem = coco_problem_add_observer(self.problem, _current_observer) * self._list_of_observers.append(observer) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_observer, __pyx_n_s_update_current_observer_global); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 767, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_observer, __pyx_n_s_update_current_observer_global); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -10074,16 +10072,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 767, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 767, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 766, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":768 + /* "cython/interface.pyx":767 * assert self.problem * observer._update_current_observer_global() * self.problem = coco_problem_add_observer(self.problem, _current_observer) # <<<<<<<<<<<<<< @@ -10092,16 +10090,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py */ __pyx_v_self->problem = coco_problem_add_observer(__pyx_v_self->problem, __pyx_v_6cocoex_9interface__current_observer); - /* "cython/interface.pyx":769 + /* "cython/interface.pyx":768 * observer._update_current_observer_global() * self.problem = coco_problem_add_observer(self.problem, _current_observer) * self._list_of_observers.append(observer) # <<<<<<<<<<<<<< * return self * */ - __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_list_of_observers, __pyx_v_observer); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 769, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_list_of_observers, __pyx_v_observer); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 768, __pyx_L1_error) - /* "cython/interface.pyx":765 + /* "cython/interface.pyx":764 * See also: class `Observer` * """ * if observer: # <<<<<<<<<<<<<< @@ -10110,7 +10108,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py */ } - /* "cython/interface.pyx":770 + /* "cython/interface.pyx":769 * self.problem = coco_problem_add_observer(self.problem, _current_observer) * self._list_of_observers.append(observer) * return self # <<<<<<<<<<<<<< @@ -10122,7 +10120,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":753 + /* "cython/interface.pyx":752 * return self.observe_with(observer) * * def observe_with(self, observer): # <<<<<<<<<<<<<< @@ -10143,7 +10141,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py return __pyx_r; } -/* "cython/interface.pyx":772 +/* "cython/interface.pyx":771 * return self * * def _f0(self, x): # <<<<<<<<<<<<<< @@ -10174,7 +10172,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("_f0", 0); - /* "cython/interface.pyx":774 + /* "cython/interface.pyx":773 * def _f0(self, x): * """"inofficial" interface to `self` with target f-value of zero. """ * return self(x) - self.final_target_fvalue1 # <<<<<<<<<<<<<< @@ -10194,13 +10192,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 774, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 774, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 773, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -10208,27 +10206,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 774, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 773, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 774, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 774, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_final_target_fvalue1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 774, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_final_target_fvalue1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 774, __pyx_L1_error) + __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -10236,7 +10234,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":772 + /* "cython/interface.pyx":771 * return self * * def _f0(self, x): # <<<<<<<<<<<<<< @@ -10258,7 +10256,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co return __pyx_r; } -/* "cython/interface.pyx":776 +/* "cython/interface.pyx":775 * return self(x) - self.final_target_fvalue1 * * def initial_solution_proposal(self, restart_number=None): # <<<<<<<<<<<<<< @@ -10295,7 +10293,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution_proposa } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "initial_solution_proposal") < 0)) __PYX_ERR(0, 776, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "initial_solution_proposal") < 0)) __PYX_ERR(0, 775, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -10308,7 +10306,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution_proposa } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("initial_solution_proposal", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 776, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("initial_solution_proposal", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 775, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.initial_solution_proposal", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -10341,7 +10339,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __Pyx_RefNannySetupContext("initial_solution_proposal", 0); __Pyx_INCREF(__pyx_v_restart_number); - /* "cython/interface.pyx":802 + /* "cython/interface.pyx":801 * * """ * if restart_number is None: # <<<<<<<<<<<<<< @@ -10352,7 +10350,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":803 + /* "cython/interface.pyx":802 * """ * if restart_number is None: * try: # <<<<<<<<<<<<<< @@ -10368,22 +10366,22 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __Pyx_XGOTREF(__pyx_t_5); /*try:*/ { - /* "cython/interface.pyx":804 + /* "cython/interface.pyx":803 * if restart_number is None: * try: * self._initial_solution_proposal_calls += 1 # <<<<<<<<<<<<<< * except AttributeError: * self._initial_solution_proposal_calls = 0 */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution_proposal_calls); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 804, __pyx_L4_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution_proposal_calls); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_6, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 804, __pyx_L4_error) + __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_6, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 803, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution_proposal_calls, __pyx_t_7) < 0) __PYX_ERR(0, 804, __pyx_L4_error) + if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution_proposal_calls, __pyx_t_7) < 0) __PYX_ERR(0, 803, __pyx_L4_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":803 + /* "cython/interface.pyx":802 * """ * if restart_number is None: * try: # <<<<<<<<<<<<<< @@ -10400,7 +10398,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":805 + /* "cython/interface.pyx":804 * try: * self._initial_solution_proposal_calls += 1 * except AttributeError: # <<<<<<<<<<<<<< @@ -10410,19 +10408,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError); if (__pyx_t_8) { __Pyx_AddTraceback("cocoex.interface.Problem.initial_solution_proposal", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_9) < 0) __PYX_ERR(0, 805, __pyx_L6_except_error) + if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_9) < 0) __PYX_ERR(0, 804, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_9); - /* "cython/interface.pyx":806 + /* "cython/interface.pyx":805 * self._initial_solution_proposal_calls += 1 * except AttributeError: * self._initial_solution_proposal_calls = 0 # <<<<<<<<<<<<<< * restart_number = self._initial_solution_proposal_calls * if restart_number <= 0 or self.number_of_constraints > 0: */ - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution_proposal_calls, __pyx_int_0) < 0) __PYX_ERR(0, 806, __pyx_L6_except_error) + if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution_proposal_calls, __pyx_int_0) < 0) __PYX_ERR(0, 805, __pyx_L6_except_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; @@ -10431,7 +10429,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa goto __pyx_L6_except_error; __pyx_L6_except_error:; - /* "cython/interface.pyx":803 + /* "cython/interface.pyx":802 * """ * if restart_number is None: * try: # <<<<<<<<<<<<<< @@ -10453,19 +10451,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_L11_try_end:; } - /* "cython/interface.pyx":807 + /* "cython/interface.pyx":806 * except AttributeError: * self._initial_solution_proposal_calls = 0 * restart_number = self._initial_solution_proposal_calls # <<<<<<<<<<<<<< * if restart_number <= 0 or self.number_of_constraints > 0: * return self.initial_solution */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution_proposal_calls); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 807, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution_proposal_calls); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF_SET(__pyx_v_restart_number, __pyx_t_9); __pyx_t_9 = 0; - /* "cython/interface.pyx":802 + /* "cython/interface.pyx":801 * * """ * if restart_number is None: # <<<<<<<<<<<<<< @@ -10474,32 +10472,32 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa */ } - /* "cython/interface.pyx":808 + /* "cython/interface.pyx":807 * self._initial_solution_proposal_calls = 0 * restart_number = self._initial_solution_proposal_calls * if restart_number <= 0 or self.number_of_constraints > 0: # <<<<<<<<<<<<<< * return self.initial_solution * return self.lower_bounds + (self.upper_bounds - self.lower_bounds) * ( */ - __pyx_t_9 = PyObject_RichCompare(__pyx_v_restart_number, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 808, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 808, __pyx_L1_error) + __pyx_t_9 = PyObject_RichCompare(__pyx_v_restart_number, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 807, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 807, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (!__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L15_bool_binop_done; } - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 808, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_6 = PyObject_RichCompare(__pyx_t_9, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 808, __pyx_L1_error) + __pyx_t_6 = PyObject_RichCompare(__pyx_t_9, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 807, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 808, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 807, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = __pyx_t_1; __pyx_L15_bool_binop_done:; if (__pyx_t_2) { - /* "cython/interface.pyx":809 + /* "cython/interface.pyx":808 * restart_number = self._initial_solution_proposal_calls * if restart_number <= 0 or self.number_of_constraints > 0: * return self.initial_solution # <<<<<<<<<<<<<< @@ -10507,13 +10505,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa * np.random.rand(self.dimension) + np.random.rand(self.dimension)) / 2 */ __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 809, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 808, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0; - /* "cython/interface.pyx":808 + /* "cython/interface.pyx":807 * self._initial_solution_proposal_calls = 0 * restart_number = self._initial_solution_proposal_calls * if restart_number <= 0 or self.number_of_constraints > 0: # <<<<<<<<<<<<<< @@ -10522,7 +10520,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa */ } - /* "cython/interface.pyx":810 + /* "cython/interface.pyx":809 * if restart_number <= 0 or self.number_of_constraints > 0: * return self.initial_solution * return self.lower_bounds + (self.upper_bounds - self.lower_bounds) * ( # <<<<<<<<<<<<<< @@ -10530,49 +10528,49 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 810, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - /* "cython/interface.pyx":811 + /* "cython/interface.pyx":810 * return self.initial_solution * return self.lower_bounds + (self.upper_bounds - self.lower_bounds) * ( * np.random.rand(self.dimension) + np.random.rand(self.dimension)) / 2 # <<<<<<<<<<<<<< * @property * def initial_solution(self): */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_upper_bounds); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 810, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_upper_bounds); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - /* "cython/interface.pyx":810 + /* "cython/interface.pyx":809 * if restart_number <= 0 or self.number_of_constraints > 0: * return self.initial_solution * return self.lower_bounds + (self.upper_bounds - self.lower_bounds) * ( # <<<<<<<<<<<<<< * np.random.rand(self.dimension) + np.random.rand(self.dimension)) / 2 * @property */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 810, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_10 = PyNumber_Subtract(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 810, __pyx_L1_error) + __pyx_t_10 = PyNumber_Subtract(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":811 + /* "cython/interface.pyx":810 * return self.initial_solution * return self.lower_bounds + (self.upper_bounds - self.lower_bounds) * ( * np.random.rand(self.dimension) + np.random.rand(self.dimension)) / 2 # <<<<<<<<<<<<<< * @property * def initial_solution(self): */ - __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_random); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_random); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_rand); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_rand); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { @@ -10585,14 +10583,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa } } if (!__pyx_t_12) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_7); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_11}; - __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; @@ -10601,34 +10599,34 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_11}; - __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { - __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL; __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_11); __pyx_t_11 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_random); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_random); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_rand); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_rand); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { @@ -10641,14 +10639,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa } } if (!__pyx_t_12) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_9); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_13)) { PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_11}; - __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; @@ -10657,61 +10655,61 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) { PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_11}; - __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { - __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); __pyx_t_12 = NULL; __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_11); __pyx_t_11 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } } __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_13 = PyNumber_Add(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_13 = PyNumber_Add(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - /* "cython/interface.pyx":810 + /* "cython/interface.pyx":809 * if restart_number <= 0 or self.number_of_constraints > 0: * return self.initial_solution * return self.lower_bounds + (self.upper_bounds - self.lower_bounds) * ( # <<<<<<<<<<<<<< * np.random.rand(self.dimension) + np.random.rand(self.dimension)) / 2 * @property */ - __pyx_t_9 = PyNumber_Multiply(__pyx_t_10, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 810, __pyx_L1_error) + __pyx_t_9 = PyNumber_Multiply(__pyx_t_10, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - /* "cython/interface.pyx":811 + /* "cython/interface.pyx":810 * return self.initial_solution * return self.lower_bounds + (self.upper_bounds - self.lower_bounds) * ( * np.random.rand(self.dimension) + np.random.rand(self.dimension)) / 2 # <<<<<<<<<<<<<< * @property * def initial_solution(self): */ - __pyx_t_13 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_9, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 811, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_9, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - /* "cython/interface.pyx":810 + /* "cython/interface.pyx":809 * if restart_number <= 0 or self.number_of_constraints > 0: * return self.initial_solution * return self.lower_bounds + (self.upper_bounds - self.lower_bounds) * ( # <<<<<<<<<<<<<< * np.random.rand(self.dimension) + np.random.rand(self.dimension)) / 2 * @property */ - __pyx_t_9 = PyNumber_Add(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 810, __pyx_L1_error) + __pyx_t_9 = PyNumber_Add(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -10719,7 +10717,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_t_9 = 0; goto __pyx_L0; - /* "cython/interface.pyx":776 + /* "cython/interface.pyx":775 * return self(x) - self.final_target_fvalue1 * * def initial_solution_proposal(self, restart_number=None): # <<<<<<<<<<<<<< @@ -10746,7 +10744,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa return __pyx_r; } -/* "cython/interface.pyx":813 +/* "cython/interface.pyx":812 * np.random.rand(self.dimension) + np.random.rand(self.dimension)) / 2 * @property * def initial_solution(self): # <<<<<<<<<<<<<< @@ -10776,7 +10774,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":816 + /* "cython/interface.pyx":815 * """return feasible initial solution""" * coco_problem_get_initial_solution(self.problem, * np.PyArray_DATA(self.x_initial)) # <<<<<<<<<<<<<< @@ -10786,7 +10784,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ __pyx_t_1 = ((PyObject *)__pyx_v_self->x_initial); __Pyx_INCREF(__pyx_t_1); - /* "cython/interface.pyx":815 + /* "cython/interface.pyx":814 * def initial_solution(self): * """return feasible initial solution""" * coco_problem_get_initial_solution(self.problem, # <<<<<<<<<<<<<< @@ -10796,7 +10794,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ coco_problem_get_initial_solution(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_1)))); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":817 + /* "cython/interface.pyx":816 * coco_problem_get_initial_solution(self.problem, * np.PyArray_DATA(self.x_initial)) * return np.array(self.x_initial, copy=True) # <<<<<<<<<<<<<< @@ -10804,20 +10802,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ * def observers(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 817, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 817, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 817, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self->x_initial)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->x_initial)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->x_initial)); - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 817, __pyx_L1_error) + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 817, __pyx_L1_error) - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 817, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 816, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -10826,7 +10824,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":813 + /* "cython/interface.pyx":812 * np.random.rand(self.dimension) + np.random.rand(self.dimension)) / 2 * @property * def initial_solution(self): # <<<<<<<<<<<<<< @@ -10848,7 +10846,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ return __pyx_r; } -/* "cython/interface.pyx":819 +/* "cython/interface.pyx":818 * return np.array(self.x_initial, copy=True) * @property * def observers(self): # <<<<<<<<<<<<<< @@ -10874,7 +10872,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9observers___get__(struct __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":821 + /* "cython/interface.pyx":820 * def observers(self): * """list of observers wrapped around this problem""" * return self._list_of_observers # <<<<<<<<<<<<<< @@ -10886,7 +10884,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9observers___get__(struct __pyx_r = __pyx_v_self->_list_of_observers; goto __pyx_L0; - /* "cython/interface.pyx":819 + /* "cython/interface.pyx":818 * return np.array(self.x_initial, copy=True) * @property * def observers(self): # <<<<<<<<<<<<<< @@ -10901,7 +10899,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9observers___get__(struct return __pyx_r; } -/* "cython/interface.pyx":823 +/* "cython/interface.pyx":822 * return self._list_of_observers * @property * def is_observed(self): # <<<<<<<<<<<<<< @@ -10929,7 +10927,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11is_observed___get__(stru Py_ssize_t __pyx_t_2; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":828 + /* "cython/interface.pyx":827 * See also: the list of observers in property `observers`. * """ * return len(self._list_of_observers) # <<<<<<<<<<<<<< @@ -10939,15 +10937,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11is_observed___get__(stru __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_v_self->_list_of_observers; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 828, __pyx_L1_error) + __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 827, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 828, __pyx_L1_error) + __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":823 + /* "cython/interface.pyx":822 * return self._list_of_observers * @property * def is_observed(self): # <<<<<<<<<<<<<< @@ -10966,7 +10964,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11is_observed___get__(stru return __pyx_r; } -/* "cython/interface.pyx":833 +/* "cython/interface.pyx":832 * # this is a class definition which is instantiated automatically!? * """Number of variables this problem instance expects as input.""" * def __get__(self): # <<<<<<<<<<<<<< @@ -10993,7 +10991,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":834 + /* "cython/interface.pyx":833 * """Number of variables this problem instance expects as input.""" * def __get__(self): * return self._number_of_variables # <<<<<<<<<<<<<< @@ -11001,13 +10999,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge * def dimension(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 834, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":833 + /* "cython/interface.pyx":832 * # this is a class definition which is instantiated automatically!? * """Number of variables this problem instance expects as input.""" * def __get__(self): # <<<<<<<<<<<<<< @@ -11026,7 +11024,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge return __pyx_r; } -/* "cython/interface.pyx":836 +/* "cython/interface.pyx":835 * return self._number_of_variables * @property * def dimension(self): # <<<<<<<<<<<<<< @@ -11053,7 +11051,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":838 + /* "cython/interface.pyx":837 * def dimension(self): * """alias for `number_of_variables` of the input space""" * return self._number_of_variables # <<<<<<<<<<<<<< @@ -11061,13 +11059,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct * def number_of_objectives(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 838, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 837, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":836 + /* "cython/interface.pyx":835 * return self._number_of_variables * @property * def dimension(self): # <<<<<<<<<<<<<< @@ -11086,7 +11084,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct return __pyx_r; } -/* "cython/interface.pyx":840 +/* "cython/interface.pyx":839 * return self._number_of_variables * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -11113,7 +11111,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":842 + /* "cython/interface.pyx":841 * def number_of_objectives(self): * "number of objectives, if equal to 1, call returns a scalar" * return self._number_of_objectives # <<<<<<<<<<<<<< @@ -11121,13 +11119,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g * def number_of_constraints(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 842, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":840 + /* "cython/interface.pyx":839 * return self._number_of_variables * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -11146,7 +11144,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g return __pyx_r; } -/* "cython/interface.pyx":844 +/* "cython/interface.pyx":843 * return self._number_of_objectives * @property * def number_of_constraints(self): # <<<<<<<<<<<<<< @@ -11173,7 +11171,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":846 + /* "cython/interface.pyx":845 * def number_of_constraints(self): * "number of constraints" * return self._number_of_constraints # <<<<<<<<<<<<<< @@ -11181,13 +11179,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___ * def lower_bounds(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 846, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 845, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":844 + /* "cython/interface.pyx":843 * return self._number_of_objectives * @property * def number_of_constraints(self): # <<<<<<<<<<<<<< @@ -11206,7 +11204,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___ return __pyx_r; } -/* "cython/interface.pyx":848 +/* "cython/interface.pyx":847 * return self._number_of_constraints * @property * def lower_bounds(self): # <<<<<<<<<<<<<< @@ -11232,7 +11230,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(str __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":851 + /* "cython/interface.pyx":850 * """depending on the test bed, these are not necessarily strict bounds * """ * return self._lower_bounds # <<<<<<<<<<<<<< @@ -11244,7 +11242,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(str __pyx_r = ((PyObject *)__pyx_v_self->_lower_bounds); goto __pyx_L0; - /* "cython/interface.pyx":848 + /* "cython/interface.pyx":847 * return self._number_of_constraints * @property * def lower_bounds(self): # <<<<<<<<<<<<<< @@ -11259,7 +11257,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(str return __pyx_r; } -/* "cython/interface.pyx":853 +/* "cython/interface.pyx":852 * return self._lower_bounds * @property * def upper_bounds(self): # <<<<<<<<<<<<<< @@ -11285,7 +11283,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(str __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":856 + /* "cython/interface.pyx":855 * """depending on the test bed, these are not necessarily strict bounds * """ * return self._upper_bounds # <<<<<<<<<<<<<< @@ -11297,7 +11295,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(str __pyx_r = ((PyObject *)__pyx_v_self->_upper_bounds); goto __pyx_L0; - /* "cython/interface.pyx":853 + /* "cython/interface.pyx":852 * return self._lower_bounds * @property * def upper_bounds(self): # <<<<<<<<<<<<<< @@ -11312,7 +11310,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(str return __pyx_r; } -/* "cython/interface.pyx":858 +/* "cython/interface.pyx":857 * return self._upper_bounds * @property * def evaluations(self): # <<<<<<<<<<<<<< @@ -11339,7 +11337,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":859 + /* "cython/interface.pyx":858 * @property * def evaluations(self): * return coco_problem_get_evaluations(self.problem) # <<<<<<<<<<<<<< @@ -11347,13 +11345,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru * def evaluations_constraints(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 859, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":858 + /* "cython/interface.pyx":857 * return self._upper_bounds * @property * def evaluations(self): # <<<<<<<<<<<<<< @@ -11372,7 +11370,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru return __pyx_r; } -/* "cython/interface.pyx":861 +/* "cython/interface.pyx":860 * return coco_problem_get_evaluations(self.problem) * @property * def evaluations_constraints(self): # <<<<<<<<<<<<<< @@ -11399,7 +11397,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_23evaluations_constraints_ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":862 + /* "cython/interface.pyx":861 * @property * def evaluations_constraints(self): * return coco_problem_get_evaluations_constraints(self.problem) # <<<<<<<<<<<<<< @@ -11407,13 +11405,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_23evaluations_constraints_ * def final_target_hit(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations_constraints(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 862, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations_constraints(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 861, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":861 + /* "cython/interface.pyx":860 * return coco_problem_get_evaluations(self.problem) * @property * def evaluations_constraints(self): # <<<<<<<<<<<<<< @@ -11432,7 +11430,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_23evaluations_constraints_ return __pyx_r; } -/* "cython/interface.pyx":864 +/* "cython/interface.pyx":863 * return coco_problem_get_evaluations_constraints(self.problem) * @property * def final_target_hit(self): # <<<<<<<<<<<<<< @@ -11459,7 +11457,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":867 + /* "cython/interface.pyx":866 * """return 1 if the final target is known and has been hit, 0 otherwise * """ * assert(self.problem) # <<<<<<<<<<<<<< @@ -11470,12 +11468,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 867, __pyx_L1_error) + __PYX_ERR(0, 866, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":868 + /* "cython/interface.pyx":867 * """ * assert(self.problem) * return coco_problem_final_target_hit(self.problem) # <<<<<<<<<<<<<< @@ -11483,13 +11481,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ * #def final_target_fvalue1(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(coco_problem_final_target_hit(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 868, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(coco_problem_final_target_hit(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":864 + /* "cython/interface.pyx":863 * return coco_problem_get_evaluations_constraints(self.problem) * @property * def final_target_hit(self): # <<<<<<<<<<<<<< @@ -11508,7 +11506,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ return __pyx_r; } -/* "cython/interface.pyx":874 +/* "cython/interface.pyx":873 * # return coco_problem_get_final_target_fvalue1(self.problem) * @property * def best_observed_fvalue1(self): # <<<<<<<<<<<<<< @@ -11535,7 +11533,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":875 + /* "cython/interface.pyx":874 * @property * def best_observed_fvalue1(self): * assert(self.problem) # <<<<<<<<<<<<<< @@ -11546,12 +11544,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 875, __pyx_L1_error) + __PYX_ERR(0, 874, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":876 + /* "cython/interface.pyx":875 * def best_observed_fvalue1(self): * assert(self.problem) * return coco_problem_get_best_observed_fvalue1(self.problem) # <<<<<<<<<<<<<< @@ -11559,13 +11557,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ * def largest_fvalues_of_interest(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_best_observed_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 876, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_best_observed_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":874 + /* "cython/interface.pyx":873 * # return coco_problem_get_final_target_fvalue1(self.problem) * @property * def best_observed_fvalue1(self): # <<<<<<<<<<<<<< @@ -11584,7 +11582,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ return __pyx_r; } -/* "cython/interface.pyx":878 +/* "cython/interface.pyx":877 * return coco_problem_get_best_observed_fvalue1(self.problem) * @property * def largest_fvalues_of_interest(self): # <<<<<<<<<<<<<< @@ -11620,7 +11618,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":880 + /* "cython/interface.pyx":879 * def largest_fvalues_of_interest(self): * "largest f-values of interest (defined only for multi-objective problems)" * assert(self.problem) # <<<<<<<<<<<<<< @@ -11631,12 +11629,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 880, __pyx_L1_error) + __PYX_ERR(0, 879, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":881 + /* "cython/interface.pyx":880 * "largest f-values of interest (defined only for multi-objective problems)" * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -11654,34 +11652,34 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "cython/interface.pyx":882 + /* "cython/interface.pyx":881 * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: * self._largest_fvalues_of_interest = np.asarray( # <<<<<<<<<<<<<< * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) * return self._largest_fvalues_of_interest */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":883 + /* "cython/interface.pyx":882 * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: * self._largest_fvalues_of_interest = np.asarray( * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) # <<<<<<<<<<<<<< * return self._largest_fvalues_of_interest * */ - __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __pyx_v_self->_number_of_objectives; for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_v_i = __pyx_t_7; - __pyx_t_8 = PyFloat_FromDouble((coco_problem_get_largest_fvalues_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_8 = PyFloat_FromDouble((coco_problem_get_largest_fvalues_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 883, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 882, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __pyx_t_8 = NULL; @@ -11695,14 +11693,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter } } if (!__pyx_t_8) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 881, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 881, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -11711,41 +11709,41 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 881, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "cython/interface.pyx":882 + /* "cython/interface.pyx":881 * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: * self._largest_fvalues_of_interest = np.asarray( # <<<<<<<<<<<<<< * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) * return self._largest_fvalues_of_interest */ - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 882, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 881, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_largest_fvalues_of_interest); __Pyx_DECREF(((PyObject *)__pyx_v_self->_largest_fvalues_of_interest)); __pyx_v_self->_largest_fvalues_of_interest = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":881 + /* "cython/interface.pyx":880 * "largest f-values of interest (defined only for multi-objective problems)" * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -11754,7 +11752,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter */ } - /* "cython/interface.pyx":884 + /* "cython/interface.pyx":883 * self._largest_fvalues_of_interest = np.asarray( * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) * return self._largest_fvalues_of_interest # <<<<<<<<<<<<<< @@ -11766,7 +11764,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter __pyx_r = ((PyObject *)__pyx_v_self->_largest_fvalues_of_interest); goto __pyx_L0; - /* "cython/interface.pyx":878 + /* "cython/interface.pyx":877 * return coco_problem_get_best_observed_fvalue1(self.problem) * @property * def largest_fvalues_of_interest(self): # <<<<<<<<<<<<<< @@ -11789,7 +11787,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter return __pyx_r; } -/* "cython/interface.pyx":886 +/* "cython/interface.pyx":885 * return self._largest_fvalues_of_interest * * def _best_parameter(self, what=None): # <<<<<<<<<<<<<< @@ -11825,7 +11823,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17_best_parameter(PyObject } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_best_parameter") < 0)) __PYX_ERR(0, 886, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_best_parameter") < 0)) __PYX_ERR(0, 885, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -11838,7 +11836,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17_best_parameter(PyObject } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_best_parameter", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 886, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("_best_parameter", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 885, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem._best_parameter", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -11857,17 +11855,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ int __pyx_t_1; __Pyx_RefNannySetupContext("_best_parameter", 0); - /* "cython/interface.pyx":887 + /* "cython/interface.pyx":886 * * def _best_parameter(self, what=None): * if what == 'print': # <<<<<<<<<<<<<< * bbob_problem_best_parameter_print(self.problem) * */ - __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_what, __pyx_n_u_print, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 887, __pyx_L1_error) + __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_what, __pyx_n_u_print, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 886, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":888 + /* "cython/interface.pyx":887 * def _best_parameter(self, what=None): * if what == 'print': * bbob_problem_best_parameter_print(self.problem) # <<<<<<<<<<<<<< @@ -11876,7 +11874,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ */ bbob_problem_best_parameter_print(__pyx_v_self->problem); - /* "cython/interface.pyx":887 + /* "cython/interface.pyx":886 * * def _best_parameter(self, what=None): * if what == 'print': # <<<<<<<<<<<<<< @@ -11885,7 +11883,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ */ } - /* "cython/interface.pyx":886 + /* "cython/interface.pyx":885 * return self._largest_fvalues_of_interest * * def _best_parameter(self, what=None): # <<<<<<<<<<<<<< @@ -11905,7 +11903,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ return __pyx_r; } -/* "cython/interface.pyx":890 +/* "cython/interface.pyx":889 * bbob_problem_best_parameter_print(self.problem) * * def free(self, force=False): # <<<<<<<<<<<<<< @@ -11942,7 +11940,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19free(PyObject *__pyx_v_s } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "free") < 0)) __PYX_ERR(0, 890, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "free") < 0)) __PYX_ERR(0, 889, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -11955,7 +11953,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19free(PyObject *__pyx_v_s } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("free", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 890, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("free", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 889, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.free", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -11975,7 +11973,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c int __pyx_t_2; __Pyx_RefNannySetupContext("free", 0); - /* "cython/interface.pyx":899 + /* "cython/interface.pyx":898 * exception. * """ * if self.problem != NULL and (self._do_free or force): # <<<<<<<<<<<<<< @@ -11988,18 +11986,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c __pyx_t_1 = __pyx_t_2; goto __pyx_L4_bool_binop_done; } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 899, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 898, __pyx_L1_error) if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L4_bool_binop_done; } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 899, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 898, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "cython/interface.pyx":900 + /* "cython/interface.pyx":899 * """ * if self.problem != NULL and (self._do_free or force): * coco_problem_free(self.problem) # <<<<<<<<<<<<<< @@ -12008,7 +12006,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c */ coco_problem_free(__pyx_v_self->problem); - /* "cython/interface.pyx":901 + /* "cython/interface.pyx":900 * if self.problem != NULL and (self._do_free or force): * coco_problem_free(self.problem) * self.problem = NULL # <<<<<<<<<<<<<< @@ -12017,7 +12015,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c */ __pyx_v_self->problem = NULL; - /* "cython/interface.pyx":899 + /* "cython/interface.pyx":898 * exception. * """ * if self.problem != NULL and (self._do_free or force): # <<<<<<<<<<<<<< @@ -12026,7 +12024,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c */ } - /* "cython/interface.pyx":890 + /* "cython/interface.pyx":889 * bbob_problem_best_parameter_print(self.problem) * * def free(self, force=False): # <<<<<<<<<<<<<< @@ -12046,7 +12044,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c return __pyx_r; } -/* "cython/interface.pyx":903 +/* "cython/interface.pyx":902 * self.problem = NULL * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -12071,14 +12069,14 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ int __pyx_t_2; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "cython/interface.pyx":907 + /* "cython/interface.pyx":906 * # free let the problem_free() call(s) in coco_suite_t crash, hence * # the possibility to set _do_free = False * if self._do_free and self.problem != NULL: # this is not guaranteed to work, see above link # <<<<<<<<<<<<<< * coco_problem_free(self.problem) * */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 907, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 906, __pyx_L1_error) if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; @@ -12089,7 +12087,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "cython/interface.pyx":908 + /* "cython/interface.pyx":907 * # the possibility to set _do_free = False * if self._do_free and self.problem != NULL: # this is not guaranteed to work, see above link * coco_problem_free(self.problem) # <<<<<<<<<<<<<< @@ -12098,7 +12096,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ */ coco_problem_free(__pyx_v_self->problem); - /* "cython/interface.pyx":907 + /* "cython/interface.pyx":906 * # free let the problem_free() call(s) in coco_suite_t crash, hence * # the possibility to set _do_free = False * if self._do_free and self.problem != NULL: # this is not guaranteed to work, see above link # <<<<<<<<<<<<<< @@ -12107,7 +12105,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ */ } - /* "cython/interface.pyx":903 + /* "cython/interface.pyx":902 * self.problem = NULL * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -12123,7 +12121,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ __Pyx_RefNannyFinishContext(); } -/* "cython/interface.pyx":911 +/* "cython/interface.pyx":910 * * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): * def __call__(self, x): # <<<<<<<<<<<<<< @@ -12160,7 +12158,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23__call__(PyObject *__pyx else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 911, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 910, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { goto __pyx_L5_argtuple_error; @@ -12171,7 +12169,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23__call__(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 911, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 910, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -12207,7 +12205,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_pybuffernd__x.data = NULL; __pyx_pybuffernd__x.rcbuffer = &__pyx_pybuffer__x; - /* "cython/interface.pyx":914 + /* "cython/interface.pyx":913 * """return objective function value of input `x`""" * cdef np.ndarray[double, ndim=1, mode="c"] _x * assert self.initialized # <<<<<<<<<<<<<< @@ -12216,43 +12214,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 914, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 913, __pyx_L1_error) if (unlikely(!__pyx_t_1)) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 914, __pyx_L1_error) + __PYX_ERR(0, 913, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":915 + /* "cython/interface.pyx":914 * cdef np.ndarray[double, ndim=1, mode="c"] _x * assert self.initialized * x = np.array(x, copy=False, dtype=np.double, order='C') # <<<<<<<<<<<<<< * if np.size(x) != self.number_of_variables: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 915, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 915, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 915, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 915, __pyx_L1_error) + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 915, __pyx_L1_error) - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 915, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 914, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 915, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 915, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 914, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 915, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 915, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 914, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -12260,16 +12258,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":916 + /* "cython/interface.pyx":915 * assert self.initialized * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 916, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 916, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -12283,13 +12281,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob } } if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 916, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 916, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 915, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else @@ -12297,43 +12295,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 916, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 915, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else #endif { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 916, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_x); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 916, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 916, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 916, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 915, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 916, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 915, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_1) { - /* "cython/interface.pyx":918 + /* "cython/interface.pyx":917 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 918, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 918, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -12347,13 +12345,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob } } if (!__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 918, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 918, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 917, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else @@ -12361,73 +12359,73 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 918, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 917, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 918, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 918, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 918, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":920 + /* "cython/interface.pyx":919 * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) # <<<<<<<<<<<<<< * _x = x # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 920, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 920, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":918 + /* "cython/interface.pyx":917 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 918, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":917 + /* "cython/interface.pyx":916 * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: * raise ValueError( # <<<<<<<<<<<<<< * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." */ - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 917, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 917, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 917, __pyx_L1_error) + __PYX_ERR(0, 916, __pyx_L1_error) - /* "cython/interface.pyx":916 + /* "cython/interface.pyx":915 * assert self.initialized * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< @@ -12436,14 +12434,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ } - /* "cython/interface.pyx":921 + /* "cython/interface.pyx":920 * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) * _x = x # this is the final type conversion # <<<<<<<<<<<<<< * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 921, __pyx_L1_error) + if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 920, __pyx_L1_error) __pyx_t_3 = __pyx_v_x; __Pyx_INCREF(__pyx_t_3); { @@ -12460,12 +12458,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob } } __pyx_pybuffernd__x.diminfo[0].strides = __pyx_pybuffernd__x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__x.diminfo[0].shape = __pyx_pybuffernd__x.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 921, __pyx_L1_error) + if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 920, __pyx_L1_error) } __pyx_v__x = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":922 + /* "cython/interface.pyx":921 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -12475,14 +12473,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_t_1 = ((__pyx_v_self->problem == NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":923 + /* "cython/interface.pyx":922 * _x = x # this is the final type conversion * if self.problem is NULL: * raise InvalidProblemException() # <<<<<<<<<<<<<< * coco_evaluate_function(self.problem, * np.PyArray_DATA(_x), */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 923, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 922, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -12495,18 +12493,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob } } if (__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 923, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 922, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 923, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 922, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 923, __pyx_L1_error) + __PYX_ERR(0, 922, __pyx_L1_error) - /* "cython/interface.pyx":922 + /* "cython/interface.pyx":921 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -12515,7 +12513,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ } - /* "cython/interface.pyx":926 + /* "cython/interface.pyx":925 * coco_evaluate_function(self.problem, * np.PyArray_DATA(_x), * np.PyArray_DATA(self.y_values)) # <<<<<<<<<<<<<< @@ -12525,7 +12523,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_t_3 = ((PyObject *)__pyx_v_self->y_values); __Pyx_INCREF(__pyx_t_3); - /* "cython/interface.pyx":924 + /* "cython/interface.pyx":923 * if self.problem is NULL: * raise InvalidProblemException() * coco_evaluate_function(self.problem, # <<<<<<<<<<<<<< @@ -12535,7 +12533,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob coco_evaluate_function(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_3)))); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":927 + /* "cython/interface.pyx":926 * np.PyArray_DATA(_x), * np.PyArray_DATA(self.y_values)) * if self._number_of_objectives == 1: # <<<<<<<<<<<<<< @@ -12545,7 +12543,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_t_1 = ((__pyx_v_self->_number_of_objectives == 1) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":928 + /* "cython/interface.pyx":927 * np.PyArray_DATA(self.y_values)) * if self._number_of_objectives == 1: * return self.y_values[0] # <<<<<<<<<<<<<< @@ -12553,13 +12551,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->y_values), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 928, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->y_values), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 927, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":927 + /* "cython/interface.pyx":926 * np.PyArray_DATA(_x), * np.PyArray_DATA(self.y_values)) * if self._number_of_objectives == 1: # <<<<<<<<<<<<<< @@ -12568,7 +12566,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ } - /* "cython/interface.pyx":929 + /* "cython/interface.pyx":928 * if self._number_of_objectives == 1: * return self.y_values[0] * return np.array(self.y_values, copy=True) # <<<<<<<<<<<<<< @@ -12576,20 +12574,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 929, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 929, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 929, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_self->y_values)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->y_values)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->y_values)); - __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 929, __pyx_L1_error) + __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 929, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 929, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 928, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -12598,7 +12596,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":911 + /* "cython/interface.pyx":910 * * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): * def __call__(self, x): # <<<<<<<<<<<<<< @@ -12632,7 +12630,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":932 +/* "cython/interface.pyx":931 * * @property * def id(self): # <<<<<<<<<<<<<< @@ -12660,7 +12658,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":934 + /* "cython/interface.pyx":933 * def id(self): * "id as string without spaces or weird characters" * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -12670,7 +12668,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":935 + /* "cython/interface.pyx":934 * "id as string without spaces or weird characters" * if self.problem is not NULL: * return coco_problem_get_id(self.problem) # <<<<<<<<<<<<<< @@ -12678,13 +12676,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 935, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":934 + /* "cython/interface.pyx":933 * def id(self): * "id as string without spaces or weird characters" * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -12693,7 +12691,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o */ } - /* "cython/interface.pyx":932 + /* "cython/interface.pyx":931 * * @property * def id(self): # <<<<<<<<<<<<<< @@ -12714,7 +12712,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":938 +/* "cython/interface.pyx":937 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -12742,7 +12740,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":939 + /* "cython/interface.pyx":938 * @property * def name(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -12752,7 +12750,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":940 + /* "cython/interface.pyx":939 * def name(self): * if self.problem is not NULL: * return coco_problem_get_name(self.problem) # <<<<<<<<<<<<<< @@ -12760,13 +12758,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 940, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 939, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":939 + /* "cython/interface.pyx":938 * @property * def name(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -12775,7 +12773,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx */ } - /* "cython/interface.pyx":938 + /* "cython/interface.pyx":937 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -12796,7 +12794,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx return __pyx_r; } -/* "cython/interface.pyx":943 +/* "cython/interface.pyx":942 * * @property * def index(self): # <<<<<<<<<<<<<< @@ -12822,7 +12820,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":945 + /* "cython/interface.pyx":944 * def index(self): * """problem index in the benchmark `Suite` of origin""" * return self._problem_index # <<<<<<<<<<<<<< @@ -12834,7 +12832,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __py __pyx_r = __pyx_v_self->_problem_index; goto __pyx_L0; - /* "cython/interface.pyx":943 + /* "cython/interface.pyx":942 * * @property * def index(self): # <<<<<<<<<<<<<< @@ -12849,7 +12847,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":948 +/* "cython/interface.pyx":947 * * @property * def suite(self): # <<<<<<<<<<<<<< @@ -12875,7 +12873,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":950 + /* "cython/interface.pyx":949 * def suite(self): * """benchmark suite this problem is from""" * return self._suite_name # <<<<<<<<<<<<<< @@ -12887,7 +12885,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __py __pyx_r = __pyx_v_self->_suite_name; goto __pyx_L0; - /* "cython/interface.pyx":948 + /* "cython/interface.pyx":947 * * @property * def suite(self): # <<<<<<<<<<<<<< @@ -12902,7 +12900,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":953 +/* "cython/interface.pyx":952 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -12930,7 +12928,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":961 + /* "cython/interface.pyx":960 * See also: ``repr(self)`` * """ * return str(self) # <<<<<<<<<<<<<< @@ -12938,19 +12936,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx * def __str__(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 961, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 961, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":953 + /* "cython/interface.pyx":952 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -12970,7 +12968,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx return __pyx_r; } -/* "cython/interface.pyx":963 +/* "cython/interface.pyx":962 * return str(self) * * def __str__(self): # <<<<<<<<<<<<<< @@ -13006,7 +13004,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__str__(struct __pyx_obj int __pyx_t_7; __Pyx_RefNannySetupContext("__str__", 0); - /* "cython/interface.pyx":964 + /* "cython/interface.pyx":963 * * def __str__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -13016,128 +13014,128 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__str__(struct __pyx_obj __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":965 + /* "cython/interface.pyx":964 * def __str__(self): * if self.problem is not NULL: * dimensional = "%d-dimensional" % self.dimension # <<<<<<<<<<<<<< * objective = "%s-objective" % { * 1: 'single', */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 965, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_d_dimensional, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 965, __pyx_L1_error) + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_d_dimensional, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_dimensional = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":967 + /* "cython/interface.pyx":966 * dimensional = "%d-dimensional" % self.dimension * objective = "%s-objective" % { * 1: 'single', # <<<<<<<<<<<<<< * 2: 'bi'}.get(self.number_of_objectives, * str(self.number_of_objectives)) */ - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 967, __pyx_L1_error) + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_int_1, __pyx_n_u_single) < 0) __PYX_ERR(0, 967, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_3, __pyx_int_2, __pyx_n_u_bi) < 0) __PYX_ERR(0, 967, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_int_1, __pyx_n_u_single) < 0) __PYX_ERR(0, 966, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_int_2, __pyx_n_u_bi) < 0) __PYX_ERR(0, 966, __pyx_L1_error) - /* "cython/interface.pyx":968 + /* "cython/interface.pyx":967 * objective = "%s-objective" % { * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, # <<<<<<<<<<<<<< * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 968, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 967, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - /* "cython/interface.pyx":969 + /* "cython/interface.pyx":968 * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, * str(self.number_of_objectives)) # <<<<<<<<<<<<<< * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 969, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 968, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 969, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 968, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 969, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 968, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "cython/interface.pyx":968 + /* "cython/interface.pyx":967 * objective = "%s-objective" % { * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, # <<<<<<<<<<<<<< * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( */ - __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 968, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 967, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":966 + /* "cython/interface.pyx":965 * if self.problem is not NULL: * dimensional = "%d-dimensional" % self.dimension * objective = "%s-objective" % { # <<<<<<<<<<<<<< * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, */ - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_s_objective, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 966, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_s_objective, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_objective = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":970 + /* "cython/interface.pyx":969 * 2: 'bi'}.get(self.number_of_objectives, * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( # <<<<<<<<<<<<<< * " with %d constraint%s" % (self.number_of_constraints, * "s" if self.number_of_constraints > 1 else "") */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 970, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 969, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 970, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 969, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 970, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 969, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_4 = __pyx_kp_u__2; } else { - /* "cython/interface.pyx":971 + /* "cython/interface.pyx":970 * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, # <<<<<<<<<<<<<< * "s" if self.number_of_constraints > 1 else "") * ) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 971, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 970, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - /* "cython/interface.pyx":972 + /* "cython/interface.pyx":971 * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, * "s" if self.number_of_constraints > 1 else "") # <<<<<<<<<<<<<< * ) * return '%s: a %s %s problem%s (problem %d of suite "%s" with name "%s")' % ( */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 972, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 972, __pyx_L1_error) + __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 971, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 972, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 971, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_7) { __Pyx_INCREF(__pyx_n_u_s); @@ -13147,14 +13145,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__str__(struct __pyx_obj __pyx_t_5 = __pyx_kp_u__2; } - /* "cython/interface.pyx":971 + /* "cython/interface.pyx":970 * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, # <<<<<<<<<<<<<< * "s" if self.number_of_constraints > 1 else "") * ) */ - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 971, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 970, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); @@ -13162,7 +13160,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__str__(struct __pyx_obj PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); __pyx_t_2 = 0; __pyx_t_5 = 0; - __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_with_d_constraint_s, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 971, __pyx_L1_error) + __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_with_d_constraint_s, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 970, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_4 = __pyx_t_5; @@ -13171,7 +13169,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__str__(struct __pyx_obj __pyx_v_constraints = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":974 + /* "cython/interface.pyx":973 * "s" if self.number_of_constraints > 1 else "") * ) * return '%s: a %s %s problem%s (problem %d of suite "%s" with name "%s")' % ( # <<<<<<<<<<<<<< @@ -13180,38 +13178,38 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__str__(struct __pyx_obj */ __Pyx_XDECREF(__pyx_r); - /* "cython/interface.pyx":975 + /* "cython/interface.pyx":974 * ) * return '%s: a %s %s problem%s (problem %d of suite "%s" with name "%s")' % ( * self.id, dimensional, objective, constraints, self.index, # <<<<<<<<<<<<<< * self.suite, self.name) * # self.name.replace(self.name.split()[0], */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - /* "cython/interface.pyx":976 + /* "cython/interface.pyx":975 * return '%s: a %s %s problem%s (problem %d of suite "%s" with name "%s")' % ( * self.id, dimensional, objective, constraints, self.index, * self.suite, self.name) # <<<<<<<<<<<<<< * # self.name.replace(self.name.split()[0], * # self.name.split()[0] + "(%d)" */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_suite); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 976, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_suite); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - /* "cython/interface.pyx":975 + /* "cython/interface.pyx":974 * ) * return '%s: a %s %s problem%s (problem %d of suite "%s" with name "%s")' % ( * self.id, dimensional, objective, constraints, self.index, # <<<<<<<<<<<<<< * self.suite, self.name) * # self.name.replace(self.name.split()[0], */ - __pyx_t_3 = PyTuple_New(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); @@ -13235,21 +13233,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__str__(struct __pyx_obj __pyx_t_6 = 0; __pyx_t_2 = 0; - /* "cython/interface.pyx":974 + /* "cython/interface.pyx":973 * "s" if self.number_of_constraints > 1 else "") * ) * return '%s: a %s %s problem%s (problem %d of suite "%s" with name "%s")' % ( # <<<<<<<<<<<<<< * self.id, dimensional, objective, constraints, self.index, * self.suite, self.name) */ - __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_s_a_s_s_problem_s_problem_d_of, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 974, __pyx_L1_error) + __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_s_a_s_s_problem_s_problem_d_of, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 973, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":964 + /* "cython/interface.pyx":963 * * def __str__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -13258,7 +13256,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__str__(struct __pyx_obj */ } - /* "cython/interface.pyx":981 + /* "cython/interface.pyx":980 * # % (self.index if self.index is not None else -2))) * else: * return "finalized/invalid problem" # <<<<<<<<<<<<<< @@ -13272,7 +13270,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__str__(struct __pyx_obj goto __pyx_L0; } - /* "cython/interface.pyx":963 + /* "cython/interface.pyx":962 * return str(self) * * def __str__(self): # <<<<<<<<<<<<<< @@ -13298,7 +13296,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24__str__(struct __pyx_obj return __pyx_r; } -/* "cython/interface.pyx":983 +/* "cython/interface.pyx":982 * return "finalized/invalid problem" * * def __repr__(self): # <<<<<<<<<<<<<< @@ -13328,7 +13326,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__repr__(struct __pyx_ob PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("__repr__", 0); - /* "cython/interface.pyx":984 + /* "cython/interface.pyx":983 * * def __repr__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -13338,7 +13336,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__repr__(struct __pyx_ob __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":985 + /* "cython/interface.pyx":984 * def __repr__(self): * if self.problem is not NULL: * return "<%s(), id=%r>" % ( # <<<<<<<<<<<<<< @@ -13347,19 +13345,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__repr__(struct __pyx_ob */ __Pyx_XDECREF(__pyx_r); - /* "cython/interface.pyx":986 + /* "cython/interface.pyx":985 * if self.problem is not NULL: * return "<%s(), id=%r>" % ( * repr(self.__class__).split()[1][1:-2], # <<<<<<<<<<<<<< * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 986, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 985, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_Repr(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 986, __pyx_L1_error) + __pyx_t_4 = PyObject_Repr(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 985, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 986, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 985, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -13373,38 +13371,38 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__repr__(struct __pyx_ob } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 986, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 985, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 986, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 985, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 986, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 985, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, -2L, NULL, NULL, &__pyx_slice__19, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 986, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, -2L, NULL, NULL, &__pyx_slice__19, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 985, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":988 + /* "cython/interface.pyx":987 * repr(self.__class__).split()[1][1:-2], * # self.problem_suite, self.problem_index, * self.id) # <<<<<<<<<<<<<< * else: * return "" */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 988, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - /* "cython/interface.pyx":986 + /* "cython/interface.pyx":985 * if self.problem is not NULL: * return "<%s(), id=%r>" % ( * repr(self.__class__).split()[1][1:-2], # <<<<<<<<<<<<<< * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 986, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 985, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); @@ -13413,21 +13411,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__repr__(struct __pyx_ob __pyx_t_2 = 0; __pyx_t_3 = 0; - /* "cython/interface.pyx":985 + /* "cython/interface.pyx":984 * def __repr__(self): * if self.problem is not NULL: * return "<%s(), id=%r>" % ( # <<<<<<<<<<<<<< * repr(self.__class__).split()[1][1:-2], * # self.problem_suite, self.problem_index, */ - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_s_id_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 985, __pyx_L1_error) + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_s_id_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":984 + /* "cython/interface.pyx":983 * * def __repr__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -13436,7 +13434,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__repr__(struct __pyx_ob */ } - /* "cython/interface.pyx":990 + /* "cython/interface.pyx":989 * self.id) * else: * return "" # <<<<<<<<<<<<<< @@ -13450,7 +13448,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__repr__(struct __pyx_ob goto __pyx_L0; } - /* "cython/interface.pyx":983 + /* "cython/interface.pyx":982 * return "finalized/invalid problem" * * def __repr__(self): # <<<<<<<<<<<<<< @@ -13471,7 +13469,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__repr__(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":992 +/* "cython/interface.pyx":991 * return "" * * def __enter__(self): # <<<<<<<<<<<<<< @@ -13498,7 +13496,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__enter__(struct __pyx_o __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__enter__", 0); - /* "cython/interface.pyx":995 + /* "cython/interface.pyx":994 * """Allows ``with Suite(...)[index] as problem:`` (or ``Suite(...).get_problem(...)``) * """ * return self # <<<<<<<<<<<<<< @@ -13510,7 +13508,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__enter__(struct __pyx_o __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":992 + /* "cython/interface.pyx":991 * return "" * * def __enter__(self): # <<<<<<<<<<<<<< @@ -13525,7 +13523,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__enter__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":996 +/* "cython/interface.pyx":995 * """ * return self * def __exit__(self, exception_type, exception_value, traceback): # <<<<<<<<<<<<<< @@ -13563,16 +13561,16 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_31__exit__(PyObject *__pyx case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_value)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 996, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 995, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 996, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 995, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 996, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 995, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -13587,7 +13585,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_31__exit__(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 996, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 995, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -13611,7 +13609,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__exit__(struct __pyx_ob PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("__exit__", 0); - /* "cython/interface.pyx":997 + /* "cython/interface.pyx":996 * return self * def __exit__(self, exception_type, exception_value, traceback): * try: # <<<<<<<<<<<<<< @@ -13627,14 +13625,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__exit__(struct __pyx_ob __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "cython/interface.pyx":998 + /* "cython/interface.pyx":997 * def __exit__(self, exception_type, exception_value, traceback): * try: * self.free() # <<<<<<<<<<<<<< * except: * pass */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_free); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 998, __pyx_L3_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_free); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 997, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { @@ -13647,16 +13645,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__exit__(struct __pyx_ob } } if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 998, __pyx_L3_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 997, __pyx_L3_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 998, __pyx_L3_error) + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 997, __pyx_L3_error) } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":997 + /* "cython/interface.pyx":996 * return self * def __exit__(self, exception_type, exception_value, traceback): * try: # <<<<<<<<<<<<<< @@ -13674,7 +13672,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__exit__(struct __pyx_ob __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":999 + /* "cython/interface.pyx":998 * try: * self.free() * except: # <<<<<<<<<<<<<< @@ -13694,7 +13692,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__exit__(struct __pyx_ob __pyx_L10_try_end:; } - /* "cython/interface.pyx":996 + /* "cython/interface.pyx":995 * """ * return self * def __exit__(self, exception_type, exception_value, traceback): # <<<<<<<<<<<<<< @@ -13709,7 +13707,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__exit__(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":1002 +/* "cython/interface.pyx":1001 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< @@ -13747,7 +13745,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, Py } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log_level") < 0)) __PYX_ERR(0, 1002, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log_level") < 0)) __PYX_ERR(0, 1001, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -13760,7 +13758,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, Py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("log_level", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1002, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("log_level", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1001, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.log_level", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -13783,7 +13781,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ char const *__pyx_t_4; __Pyx_RefNannySetupContext("log_level", 0); - /* "cython/interface.pyx":1009 + /* "cython/interface.pyx":1008 * with increasing verbosity, or '' which doesn't change anything. * """ * cdef bytes _level = _bstring(level if level is not None else "") # <<<<<<<<<<<<<< @@ -13798,27 +13796,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_1 = __pyx_kp_u__2; } - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1009, __pyx_L1_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v__level = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":1010 + /* "cython/interface.pyx":1009 * """ * cdef bytes _level = _bstring(level if level is not None else "") * return coco_set_log_level(_level) # <<<<<<<<<<<<<< * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v__level); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 1010, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyStr_FromString(coco_set_log_level(__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1010, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v__level); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 1009, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyStr_FromString(coco_set_log_level(__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":1002 + /* "cython/interface.pyx":1001 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< @@ -13839,7 +13837,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":197 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":197 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -13886,7 +13884,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":203 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -13899,7 +13897,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":206 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -13908,7 +13906,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":207 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":207 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -13917,7 +13915,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":209 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -13926,7 +13924,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":211 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -13936,7 +13934,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":212 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":212 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -13945,7 +13943,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_copy_shape = 1; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":211 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -13955,7 +13953,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L4; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":214 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -13967,7 +13965,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":216 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":216 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -13981,7 +13979,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":217 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -13992,7 +13990,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L6_bool_binop_done:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":216 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":216 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14001,7 +13999,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":218 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -14014,7 +14012,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 218, __pyx_L1_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":216 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":216 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14023,7 +14021,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":220 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":220 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14037,7 +14035,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":221 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -14048,7 +14046,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L9_bool_binop_done:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":220 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":220 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14057,7 +14055,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":222 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -14070,7 +14068,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 222, __pyx_L1_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":220 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":220 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14079,7 +14077,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":224 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":224 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -14088,7 +14086,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":225 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":225 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -14097,7 +14095,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":226 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -14107,7 +14105,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":229 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -14116,7 +14114,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":230 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -14125,7 +14123,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":231 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":231 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -14136,7 +14134,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -14145,7 +14143,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":233 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -14155,7 +14153,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]); } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":226 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -14165,7 +14163,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L11; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -14175,7 +14173,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":236 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -14186,7 +14184,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":237 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":237 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -14195,7 +14193,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":238 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":238 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -14204,7 +14202,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":239 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -14213,7 +14211,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":242 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":242 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -14222,7 +14220,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":243 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":243 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -14234,7 +14232,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -14243,7 +14241,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":248 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -14261,7 +14259,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":250 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":250 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -14274,7 +14272,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = Py_None; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":248 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -14284,7 +14282,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L14; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":253 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -14300,7 +14298,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":255 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -14310,7 +14308,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":256 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -14320,7 +14318,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":257 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -14340,7 +14338,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":258 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -14357,7 +14355,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L19_bool_binop_done:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":257 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -14366,7 +14364,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":259 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -14379,7 +14377,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 259, __pyx_L1_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":257 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -14388,7 +14386,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":260 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -14400,7 +14398,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"b"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":261 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -14411,7 +14409,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"B"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":262 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -14422,7 +14420,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"h"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -14433,7 +14431,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"H"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -14444,7 +14442,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"i"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -14455,7 +14453,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"I"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -14466,7 +14464,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"l"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -14477,7 +14475,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"L"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -14488,7 +14486,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"q"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -14499,7 +14497,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Q"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -14510,7 +14508,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"f"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -14521,7 +14519,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"d"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -14532,7 +14530,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"g"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -14543,7 +14541,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zf"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -14554,7 +14552,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zd"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":275 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":275 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -14565,7 +14563,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zg"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -14577,7 +14575,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":278 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -14603,7 +14601,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":279 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":279 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -14612,7 +14610,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":280 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -14622,7 +14620,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_r = 0; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":255 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -14631,7 +14629,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":282 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -14641,7 +14639,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->format = ((char *)malloc(0xFF)); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":283 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -14650,7 +14648,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":284 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":284 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -14659,7 +14657,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":285 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":285 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -14669,7 +14667,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(1, 285, __pyx_L1_error) __pyx_v_f = __pyx_t_7; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":288 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -14679,7 +14677,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":197 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":197 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -14711,7 +14709,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":290 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":290 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -14735,7 +14733,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":291 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -14745,7 +14743,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":292 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -14754,7 +14752,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ free(__pyx_v_info->format); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":291 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -14763,7 +14761,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":293 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":293 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -14773,7 +14771,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":294 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":294 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -14782,7 +14780,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ free(__pyx_v_info->strides); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":293 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":293 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -14791,7 +14789,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":290 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -14803,7 +14801,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":770 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":770 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -14817,7 +14815,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":771 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -14831,7 +14829,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":770 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":770 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -14850,7 +14848,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":773 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":773 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -14864,7 +14862,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":774 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -14878,7 +14876,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":773 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":773 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -14897,7 +14895,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":776 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":776 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -14911,7 +14909,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":777 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -14925,7 +14923,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":776 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":776 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -14944,7 +14942,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":779 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":779 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -14958,7 +14956,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":780 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -14972,7 +14970,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":779 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":779 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -14991,7 +14989,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":782 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":782 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -15005,7 +15003,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":783 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -15019,7 +15017,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":782 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":782 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -15038,7 +15036,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":785 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":785 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -15067,7 +15065,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx char *__pyx_t_9; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":790 * * cdef dtype child * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -15076,7 +15074,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef dtype child * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -15085,7 +15083,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -15108,7 +15106,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -15125,7 +15123,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -15164,7 +15162,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -15181,7 +15179,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -15194,7 +15192,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 799, __pyx_L1_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -15203,7 +15201,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -15223,7 +15221,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -15240,7 +15238,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = __pyx_t_7; __pyx_L7_bool_binop_done:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -15249,7 +15247,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ if (__pyx_t_6) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -15262,7 +15260,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 803, __pyx_L1_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -15271,7 +15269,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -15287,7 +15285,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -15296,7 +15294,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 0x78; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -15305,7 +15303,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -15316,7 +15314,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -15326,7 +15324,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -15336,7 +15334,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -15348,7 +15346,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -15358,7 +15356,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -15371,7 +15369,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(1, 823, __pyx_L1_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -15380,7 +15378,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -15398,7 +15396,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -15416,7 +15414,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -15434,7 +15432,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -15452,7 +15450,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -15470,7 +15468,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -15488,7 +15486,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -15506,7 +15504,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -15524,7 +15522,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -15542,7 +15540,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -15560,7 +15558,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -15578,7 +15576,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -15596,7 +15594,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -15614,7 +15612,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -15634,7 +15632,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -15654,7 +15652,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -15674,7 +15672,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -15692,7 +15690,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -15716,7 +15714,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -15725,7 +15723,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -15735,7 +15733,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L13; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -15748,7 +15746,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -15758,7 +15756,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -15768,7 +15766,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":785 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":785 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -15793,7 +15791,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -15808,7 +15806,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -15819,7 +15817,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -15828,7 +15826,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_baseptr = NULL; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -15838,7 +15836,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a goto __pyx_L3; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -15848,7 +15846,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a /*else*/ { Py_INCREF(__pyx_v_base); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -15859,7 +15857,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -15868,7 +15866,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -15877,7 +15875,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -15889,7 +15887,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -15903,7 +15901,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -15913,7 +15911,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -15925,7 +15923,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = Py_None; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -15934,7 +15932,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -15948,7 +15946,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -15963,7 +15961,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":985 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":985 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -15984,7 +15982,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_array", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":986 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":986 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -16000,7 +15998,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":987 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":987 * cdef inline int import_array() except -1: * try: * _import_array() # <<<<<<<<<<<<<< @@ -16009,7 +16007,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { */ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 987, __pyx_L3_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":986 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":986 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -16024,7 +16022,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_L3_error:; __Pyx_PyThreadState_assign - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":988 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":988 * try: * _import_array() * except Exception: # <<<<<<<<<<<<<< @@ -16039,7 +16037,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":989 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":989 * _import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -16055,7 +16053,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":986 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":986 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -16071,7 +16069,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_L10_try_end:; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":985 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":985 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -16094,7 +16092,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":991 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":991 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -16115,7 +16113,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_umath", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":992 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":992 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -16131,7 +16129,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":993 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":993 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -16140,7 +16138,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 993, __pyx_L3_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":992 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":992 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -16155,7 +16153,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_L3_error:; __Pyx_PyThreadState_assign - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":994 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":994 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -16170,7 +16168,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":995 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":995 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< @@ -16186,7 +16184,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":992 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":992 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -16202,7 +16200,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_L10_try_end:; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":991 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":991 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -16225,7 +16223,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":997 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":997 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -16246,7 +16244,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":998 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":998 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -16262,7 +16260,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":999 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":999 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -16271,7 +16269,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 999, __pyx_L3_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":998 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":998 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -16286,7 +16284,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_L3_error:; __Pyx_PyThreadState_assign - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1000 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1000 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -16300,7 +16298,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1001 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1001 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< @@ -16314,7 +16312,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":998 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":998 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -16330,7 +16328,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_L10_try_end:; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":997 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":997 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -17245,6 +17243,7 @@ static struct PyModuleDef __pyx_moduledef = { static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1}, {&__pyx_n_u_C, __pyx_k_C, sizeof(__pyx_k_C), 0, 1, 0, 1}, + {&__pyx_kp_s_C_Users_dimo_Desktop_numbbo_gith, __pyx_k_C_Users_dimo_Desktop_numbbo_gith, sizeof(__pyx_k_C_Users_dimo_Desktop_numbbo_gith), 0, 0, 1, 0}, {&__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_k_Dimension_np_size_x_d_of_input_x, sizeof(__pyx_k_Dimension_np_size_x_d_of_input_x), 0, 1, 0, 0}, {&__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_k_Dimension_np_size_y_d_of_input_y, sizeof(__pyx_k_Dimension_np_size_y_d_of_input_y), 0, 1, 0, 0}, {&__pyx_kp_u_Format_string_allocated_too_shor, __pyx_k_Format_string_allocated_too_shor, sizeof(__pyx_k_Format_string_allocated_too_shor), 0, 1, 0, 0}, @@ -17262,14 +17261,13 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_Suite___iter, __pyx_k_Suite___iter, sizeof(__pyx_k_Suite___iter), 0, 0, 1, 1}, {&__pyx_kp_u_Suite_current_index___get___line, __pyx_k_Suite_current_index___get___line, sizeof(__pyx_k_Suite_current_index___get___line), 0, 1, 0, 0}, {&__pyx_kp_u_Suite_get_problem_by_function_di, __pyx_k_Suite_get_problem_by_function_di, sizeof(__pyx_k_Suite_get_problem_by_function_di), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_get_problem_line_287, __pyx_k_Suite_get_problem_line_287, sizeof(__pyx_k_Suite_get_problem_line_287), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_get_problem_line_286, __pyx_k_Suite_get_problem_line_286, sizeof(__pyx_k_Suite_get_problem_line_286), 0, 1, 0, 0}, {&__pyx_kp_u_Suite_has_been_finalized_free_ed, __pyx_k_Suite_has_been_finalized_free_ed, sizeof(__pyx_k_Suite_has_been_finalized_free_ed), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_ids_line_391, __pyx_k_Suite_ids_line_391, sizeof(__pyx_k_Suite_ids_line_391), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_ids_line_390, __pyx_k_Suite_ids_line_390, sizeof(__pyx_k_Suite_ids_line_390), 0, 1, 0, 0}, {&__pyx_kp_u_Suite_r_r_r, __pyx_k_Suite_r_r_r, sizeof(__pyx_k_Suite_r_r_r), 0, 1, 0, 0}, {&__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_k_Suite_s_s_s_with_d_problem_s_in, sizeof(__pyx_k_Suite_s_s_s_with_d_problem_s_in), 0, 1, 0, 0}, {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, {&__pyx_kp_u_Unkown_benchmark_suite_name_s_K, __pyx_k_Unkown_benchmark_suite_name_s_K, sizeof(__pyx_k_Unkown_benchmark_suite_name_s_K), 0, 1, 0, 0}, - {&__pyx_kp_s_Users_hansen_git_coco_code_expe, __pyx_k_Users_hansen_git_coco_code_expe, sizeof(__pyx_k_Users_hansen_git_coco_code_expe), 0, 0, 1, 0}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0}, {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0}, @@ -17338,7 +17336,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_instance, __pyx_k_instance, sizeof(__pyx_k_instance), 0, 0, 1, 1}, {&__pyx_n_s_iter, __pyx_k_iter, sizeof(__pyx_k_iter), 0, 0, 1, 1}, {&__pyx_n_s_known_suite_names, __pyx_k_known_suite_names, sizeof(__pyx_k_known_suite_names), 0, 0, 1, 1}, - {&__pyx_n_s_known_suite_names_2, __pyx_k_known_suite_names_2, sizeof(__pyx_k_known_suite_names_2), 0, 0, 1, 1}, {&__pyx_n_s_level, __pyx_k_level, sizeof(__pyx_k_level), 0, 0, 1, 1}, {&__pyx_n_s_level_2, __pyx_k_level_2, sizeof(__pyx_k_level_2), 0, 0, 1, 1}, {&__pyx_n_s_log_level, __pyx_k_log_level, sizeof(__pyx_k_log_level), 0, 0, 1, 1}, @@ -17405,18 +17402,18 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 75, __pyx_L1_error) - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 269, __pyx_L1_error) - __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 387, __pyx_L1_error) - __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 430, __pyx_L1_error) - __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 431, __pyx_L1_error) - __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 433, __pyx_L1_error) - __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(0, 506, __pyx_L1_error) - __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 506, __pyx_L1_error) - __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s_StopIteration); if (!__pyx_builtin_StopIteration) __PYX_ERR(0, 526, __pyx_L1_error) - __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 653, __pyx_L1_error) - __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 675, __pyx_L1_error) - __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 805, __pyx_L1_error) + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 74, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 268, __pyx_L1_error) + __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 386, __pyx_L1_error) + __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 429, __pyx_L1_error) + __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 430, __pyx_L1_error) + __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 432, __pyx_L1_error) + __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(0, 505, __pyx_L1_error) + __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 505, __pyx_L1_error) + __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s_StopIteration); if (!__pyx_builtin_StopIteration) __PYX_ERR(0, 525, __pyx_L1_error) + __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 652, __pyx_L1_error) + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 674, __pyx_L1_error) + __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 804, __pyx_L1_error) __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 989, __pyx_L1_error) return 0; __pyx_L1_error:; @@ -17427,139 +17424,139 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "cython/interface.pyx":73 + /* "cython/interface.pyx":72 * return s * if isinstance(s, (str, unicode)): * return s.encode('ascii') # why not s.encode('ascii') ? # <<<<<<<<<<<<<< * else: * raise TypeError("expect a string, got %s" % str(type(s))) */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_u_ascii); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 73, __pyx_L1_error) + __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_u_ascii); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); - /* "cython/interface.pyx":238 + /* "cython/interface.pyx":237 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * while True: * old_level = log_level('warning') # <<<<<<<<<<<<<< * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) */ - __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_u_warning); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 238, __pyx_L1_error) + __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_u_warning); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 237, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "cython/interface.pyx":269 + /* "cython/interface.pyx":268 * global _current_observer * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * if self.current_problem_: * self.current_problem_.free() */ - __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 269, __pyx_L1_error) + __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 268, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "cython/interface.pyx":319 + /* "cython/interface.pyx":318 * """ * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * index = id * try: */ - __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 319, __pyx_L1_error) + __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 318, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "cython/interface.pyx":360 + /* "cython/interface.pyx":359 * * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, */ - __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 360, __pyx_L1_error) + __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 359, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); - /* "cython/interface.pyx":387 + /* "cython/interface.pyx":386 * def find_problem_ids(self, *args, **kwargs): * """has been renamed to `ids`""" * raise NotImplementedError( # <<<<<<<<<<<<<< * "`find_problem_ids()` has been renamed to `ids()`") * */ - __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_find_problem_ids_has_been_renam); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 387, __pyx_L1_error) + __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_find_problem_ids_has_been_renam); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 386, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7); - /* "cython/interface.pyx":571 + /* "cython/interface.pyx":570 * def __cinit__(self, name, options): * if isinstance(options, dict): * s = str(options).replace(',', ' ') # <<<<<<<<<<<<<< * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') */ - __pyx_tuple__10 = PyTuple_Pack(2, __pyx_kp_u__8, __pyx_kp_u__9); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 571, __pyx_L1_error) + __pyx_tuple__10 = PyTuple_Pack(2, __pyx_kp_u__8, __pyx_kp_u__9); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10); - /* "cython/interface.pyx":572 + /* "cython/interface.pyx":571 * if isinstance(options, dict): * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: # <<<<<<<<<<<<<< * s = s.replace(c, '') * options = s */ - __pyx_tuple__15 = PyTuple_Pack(6, __pyx_kp_u_u, __pyx_kp_u_u_2, __pyx_kp_u__11, __pyx_kp_u__12, __pyx_kp_u__13, __pyx_kp_u__14); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_tuple__15 = PyTuple_Pack(6, __pyx_kp_u_u, __pyx_kp_u_u_2, __pyx_kp_u__11, __pyx_kp_u__12, __pyx_kp_u__13, __pyx_kp_u__14); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15); - /* "cython/interface.pyx":653 + /* "cython/interface.pyx":652 * cdef np.npy_intp shape[1] * if self.initialized: * raise RuntimeError("Problem already initialized") # <<<<<<<<<<<<<< * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") */ - __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_u_Problem_already_initialized); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 653, __pyx_L1_error) + __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_u_Problem_already_initialized); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16); - /* "cython/interface.pyx":655 + /* "cython/interface.pyx":654 * raise RuntimeError("Problem already initialized") * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") # <<<<<<<<<<<<<< * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) */ - __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_u_in_Problem__initialize_problem_p); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 655, __pyx_L1_error) + __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_u_in_Problem__initialize_problem_p); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); - /* "cython/interface.pyx":712 + /* "cython/interface.pyx":711 * for the assessment of the algorithm. * """ * raise NotImplementedError("has never been tested, incomment this to start testing") # <<<<<<<<<<<<<< * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_has_never_been_tested_incomment); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 712, __pyx_L1_error) + __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_has_never_been_tested_incomment); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); - /* "cython/interface.pyx":986 + /* "cython/interface.pyx":985 * if self.problem is not NULL: * return "<%s(), id=%r>" % ( * repr(self.__class__).split()[1][1:-2], # <<<<<<<<<<<<<< * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_slice__19 = PySlice_New(__pyx_int_1, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__19)) __PYX_ERR(0, 986, __pyx_L1_error) + __pyx_slice__19 = PySlice_New(__pyx_int_1, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__19)) __PYX_ERR(0, 985, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__19); __Pyx_GIVEREF(__pyx_slice__19); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":218 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -17570,7 +17567,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__20); __Pyx_GIVEREF(__pyx_tuple__20); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":222 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -17581,7 +17578,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__21); __Pyx_GIVEREF(__pyx_tuple__21); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":259 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -17592,7 +17589,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__22); __Pyx_GIVEREF(__pyx_tuple__22); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -17603,7 +17600,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -17614,7 +17611,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__24); __Pyx_GIVEREF(__pyx_tuple__24); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -17625,7 +17622,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":989 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":989 * _import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -17636,7 +17633,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__26); __Pyx_GIVEREF(__pyx_tuple__26); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":995 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":995 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< @@ -17647,7 +17644,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1001 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1001 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< @@ -17656,17 +17653,17 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__28); __Pyx_GIVEREF(__pyx_tuple__28); - /* "cython/interface.pyx":1002 + /* "cython/interface.pyx":1001 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< * """`log_level(level=None)` return current log level and * set new log level if `level is not None and level`. */ - __pyx_tuple__29 = PyTuple_Pack(2, __pyx_n_s_level, __pyx_n_s_level_2); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 1002, __pyx_L1_error) + __pyx_tuple__29 = PyTuple_Pack(2, __pyx_n_s_level, __pyx_n_s_level_2); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 1001, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29); - __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_hansen_git_coco_code_expe, __pyx_n_s_log_level, 1002, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 1002, __pyx_L1_error) + __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_C_Users_dimo_Desktop_numbbo_gith, __pyx_n_s_log_level, 1001, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 1001, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -17774,11 +17771,11 @@ PyMODINIT_FUNC PyInit_interface(void) /*--- Type init code ---*/ __pyx_vtabptr_6cocoex_9interface_Suite = &__pyx_vtable_6cocoex_9interface_Suite; __pyx_vtable_6cocoex_9interface_Suite._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Suite *))__pyx_f_6cocoex_9interface_5Suite__initialize; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 79, __pyx_L1_error) + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 78, __pyx_L1_error) __pyx_type_6cocoex_9interface_Suite.tp_print = 0; #if CYTHON_COMPILING_IN_CPYTHON { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 79, __pyx_L1_error) + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 78, __pyx_L1_error) if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base; __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__.doc = __pyx_doc_6cocoex_9interface_5Suite_10__getitem__; @@ -17788,7 +17785,7 @@ PyMODINIT_FUNC PyInit_interface(void) #endif #if CYTHON_COMPILING_IN_CPYTHON { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__iter__"); if (unlikely(!wrapper)) __PYX_ERR(0, 79, __pyx_L1_error) + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__iter__"); if (unlikely(!wrapper)) __PYX_ERR(0, 78, __pyx_L1_error) if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base; __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__.doc = __pyx_doc_6cocoex_9interface_5Suite_26__iter__; @@ -17796,20 +17793,20 @@ PyMODINIT_FUNC PyInit_interface(void) } } #endif - if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Suite.tp_dict, __pyx_vtabptr_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 79, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Suite", (PyObject *)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 79, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Suite.tp_dict, __pyx_vtabptr_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 78, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "Suite", (PyObject *)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 78, __pyx_L1_error) __pyx_ptype_6cocoex_9interface_Suite = &__pyx_type_6cocoex_9interface_Suite; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 535, __pyx_L1_error) + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 534, __pyx_L1_error) __pyx_type_6cocoex_9interface_Observer.tp_print = 0; - if (PyObject_SetAttrString(__pyx_m, "Observer", (PyObject *)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 535, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "Observer", (PyObject *)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 534, __pyx_L1_error) __pyx_ptype_6cocoex_9interface_Observer = &__pyx_type_6cocoex_9interface_Observer; __pyx_vtabptr_6cocoex_9interface_Problem = &__pyx_vtable_6cocoex_9interface_Problem; __pyx_vtable_6cocoex_9interface_Problem._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Problem *, coco_problem_t *, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args))__pyx_f_6cocoex_9interface_7Problem__initialize; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 626, __pyx_L1_error) + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 625, __pyx_L1_error) __pyx_type_6cocoex_9interface_Problem.tp_print = 0; #if CYTHON_COMPILING_IN_CPYTHON { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Problem, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 626, __pyx_L1_error) + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Problem, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 625, __pyx_L1_error) if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { __pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__ = *((PyWrapperDescrObject *)wrapper)->d_base; __pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__.doc = __pyx_doc_6cocoex_9interface_7Problem_22__call__; @@ -17817,10 +17814,10 @@ PyMODINIT_FUNC PyInit_interface(void) } } #endif - if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Problem.tp_dict, __pyx_vtabptr_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 626, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Problem", (PyObject *)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 626, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Problem.tp_dict, __pyx_vtabptr_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 625, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "Problem", (PyObject *)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 625, __pyx_L1_error) __pyx_ptype_6cocoex_9interface_Problem = &__pyx_type_6cocoex_9interface_Problem; - if (PyType_Ready(&__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__) < 0) __PYX_ERR(0, 510, __pyx_L1_error) + if (PyType_Ready(&__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__) < 0) __PYX_ERR(0, 509, __pyx_L1_error) __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_print = 0; __pyx_ptype_6cocoex_9interface___pyx_scope_struct____iter__ = &__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__; /*--- Type import code ---*/ @@ -17905,35 +17902,11 @@ PyMODINIT_FUNC PyInit_interface(void) /* "cython/interface.pyx":11 * * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] - * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained"] # <<<<<<<<<<<<<< - * _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] - * - */ - __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_u_bbob); - __Pyx_GIVEREF(__pyx_n_u_bbob); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_bbob); - __Pyx_INCREF(__pyx_kp_u_bbob_biobj); - __Pyx_GIVEREF(__pyx_kp_u_bbob_biobj); - PyList_SET_ITEM(__pyx_t_2, 1, __pyx_kp_u_bbob_biobj); - __Pyx_INCREF(__pyx_kp_u_bbob_biobj_ext); - __Pyx_GIVEREF(__pyx_kp_u_bbob_biobj_ext); - PyList_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_bbob_biobj_ext); - __Pyx_INCREF(__pyx_kp_u_bbob_constrained); - __Pyx_GIVEREF(__pyx_kp_u_bbob_constrained); - PyList_SET_ITEM(__pyx_t_2, 3, __pyx_kp_u_bbob_constrained); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "cython/interface.pyx":12 - * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] - * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained"] - * _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] # <<<<<<<<<<<<<< + * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] # <<<<<<<<<<<<<< * * # _test_assignment = "seems to prevent an 'export' error (i.e. induce export) to make this module known under Linux and Windows (possibly because of the leading underscore of _interface)" */ - __pyx_t_2 = PyList_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __pyx_t_2 = PyList_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_u_bbob); __Pyx_GIVEREF(__pyx_n_u_bbob); @@ -17950,28 +17923,28 @@ PyMODINIT_FUNC PyInit_interface(void) __Pyx_INCREF(__pyx_kp_u_bbob_largescale); __Pyx_GIVEREF(__pyx_kp_u_bbob_largescale); PyList_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_bbob_largescale); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names_2, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":18 + /* "cython/interface.pyx":17 * * # Must initialize numpy or risk segfaults * np.import_array() # <<<<<<<<<<<<<< * * cdef extern from "coco.h": */ - __pyx_t_3 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(0, 18, __pyx_L1_error) + __pyx_t_3 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(0, 17, __pyx_L1_error) - /* "cython/interface.pyx":1002 + /* "cython/interface.pyx":1001 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< * """`log_level(level=None)` return current log level and * set new log level if `level is not None and level`. */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6cocoex_9interface_1log_level, NULL, __pyx_n_s_cocoex_interface); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1002, __pyx_L1_error) + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6cocoex_9interface_1log_level, NULL, __pyx_n_s_cocoex_interface); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1001, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_log_level, __pyx_t_2) < 0) __PYX_ERR(0, 1002, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_log_level, __pyx_t_2) < 0) __PYX_ERR(0, 1001, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":1 @@ -17981,14 +17954,14 @@ PyMODINIT_FUNC PyInit_interface(void) */ __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_line_287, __pyx_kp_u_get_problem_self_id_observer_No) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_line_286, __pyx_kp_u_get_problem_self_id_observer_No) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_by_function_di, __pyx_kp_u_returns_a_Problem_instance_by_de) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_ids_line_391, __pyx_kp_u_ids_id_snippets_get_problem_Fal) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_ids_line_390, __pyx_kp_u_ids_id_snippets_get_problem_Fal) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_current_index___get___line, __pyx_kp_u_index_in_the_enumerator_of_all_p) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":997 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":997 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< From 2e0a4eaeec9bab82ccbeffe5708d8f194860b1e4 Mon Sep 17 00:00:00 2001 From: brockhof Date: Thu, 12 Apr 2018 18:32:33 +0200 Subject: [PATCH 313/446] corrected bug in verify-postprocessing (actually in `preparetexforhtml.py`) --- .../cocopp/latex_commands_for_html.html | 157 ++++++++++++++++-- .../cocopp/preparetexforhtml.py | 2 +- 2 files changed, 147 insertions(+), 12 deletions(-) diff --git a/code-postprocessing/cocopp/latex_commands_for_html.html b/code-postprocessing/cocopp/latex_commands_for_html.html index 14ba62472..82b706918 100644 --- a/code-postprocessing/cocopp/latex_commands_for_html.html +++ b/code-postprocessing/cocopp/latex_commands_for_html.html @@ -122,7 +122,7 @@ run-length based target, the corresponding reference aRT  (preceded by the target ∆f-value in italics) in the first row. #succ is the number of trials that reached the target value of the last column. The median number of conducted function evaluations is additionally given in - italics, if the target in the last column was never reached. + italics, if the target in the last column was never reached. Entries, succeeded by a star, are statistically significantly better (according to the rank-sum test) when compared to all other algorithms of the table, with p = 0.05 or p = 10−k when the number k following the star is larger @@ -217,7 +217,7 @@ ∆f =10−8 of all algorithms benchmarked during BBOB-2009. Right sub-columns: - ECDF of FEval ratios of algorithmA divided by algorithmB for target + ECDF of FEval ratios of algorithmA divided by algorithmB for target function values 10k with k given in the legend; all trial pairs for each function. Pairs where both trials failed are disregarded, pairs where one trial failed are visible in the limits being > 0 or < 1. The @@ -270,7 +270,7 @@ #succ is the number of trials that reached the (final) target fopt+ 10−8. The median number of conducted function evaluations is additionally given in - italics, if the target in the last column was never reached. + italics, if the target in the last column was never reached. Entries, succeeded by a star, are statistically significantly better (according to the rank-sum test) when compared to all other algorithms of the table, with p = 0.05 or p = 10−k when the number k following the star is larger @@ -360,7 +360,7 @@ =10k, where k is given by the first value in the legend, for algorithmA (°) and algorithmB () . Right sub-columns: - ECDF of FEval ratios of algorithmA divided by algorithmB for target + ECDF of FEval ratios of algorithmA divided by algorithmB for target function values 10k with k given in the legend; all trial pairs for each function. Pairs where both trials failed are disregarded, pairs where one trial failed are visible in the limits being > 0 or < 1. The @@ -413,7 +413,7 @@ #succ is the number of trials that reached the (final) target Iref+ 10−5. The median number of conducted function evaluations is additionally given in - italics, if the target in the last column was never reached. + italics, if the target in the last column was never reached. Entries, succeeded by a star, are statistically significantly better (according to the rank-sum test) when compared to all other algorithms of the table, with p = 0.05 or p = 10−k when the number k following the star is larger @@ -558,7 +558,7 @@ run-length based target, the corresponding reference aRT  (preceded by the target ∆I-value in italics) in the first row. #succ is the number of trials that reached the target value of the last column. The median number of conducted function evaluations is additionally given in - italics, if the target in the last column was never reached. + italics, if the target in the last column was never reached. Entries, succeeded by a star, are statistically significantly better (according to the rank-sum test) when compared to all other algorithms of the table, with p = 0.05 or p = 10−k when the number k following the star is larger @@ -651,7 +651,7 @@ =10k, where k is given by the first value in the legend, for algorithmA (°) and algorithmB () . Right sub-columns: - ECDF of FEval ratios of algorithmA divided by algorithmB for target + ECDF of FEval ratios of algorithmA divided by algorithmB for target function values 10k with k given in the legend; all trial pairs for each function. Pairs where both trials failed are disregarded, pairs where one trial failed are visible in the limits being > 0 or < 1. The @@ -699,7 +699,7 @@ #succ is the number of trials that reached the last target Iref+ 10−5. The median number of conducted function evaluations is additionally given in - italics, if the target in the last column was never reached. + italics, if the target in the last column was never reached. Entries, succeeded by a star, are statistically significantly better (according to the rank-sum test) when compared to all other algorithms of the table, with p = 0.05 or p = 10−k when the number k following the star is larger @@ -789,7 +789,7 @@ =10k, where k is given by the first value in the legend, for algorithmA (°) and algorithmB () . Right sub-columns: - ECDF of FEval ratios of algorithmA divided by algorithmB for target + ECDF of FEval ratios of algorithmA divided by algorithmB for target function values 10k with k given in the legend; all trial pairs for each function. Pairs where both trials failed are disregarded, pairs where one trial failed are visible in the limits being > 0 or < 1. The @@ -837,7 +837,7 @@ #succ is the number of trials that reached the last target fopt+ 10−6. The median number of conducted function evaluations is additionally given in - italics, if the target in the last column was never reached. + italics, if the target in the last column was never reached. Entries, succeeded by a star, are statistically significantly better (according to the rank-sum test) when compared to all other algorithms of the table, with p = 0.05 or p = 10−k when the number k following the star is larger @@ -885,6 +885,141 @@ Each cross (+) represents a single function, the line is the geometric mean. +
    +##bbobECDFslegendlargescalefixed## + +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for !!NUM−OF−TARGETS−IN−ECDF!! targets with target precision in !!TARGET-RANGES-IN-ECDF!! for all functions and subgroups in -D. + +
    +##bbobppfigslegendlargescalefixed## + +Average running time (aRT in number of f-evaluations + as log10 value), divided by dimension for target function value !!PPFIGS−FTARGET!! + versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f24. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six). + +
    +##bbobpprldistrlegendlargescalefixed## + + Empirical cumulative distribution functions (ECDF), plotting the fraction of + trials with an outcome not larger than the respective value on the x-axis. + Left subplots: ECDF of the number of function evaluations (FEvals) divided by search space dimension D, + to fall below fopt+∆f with ∆f +=10k, where k is the first value in the legend. + The thick red line represents the most difficult target value fopt+ 10−8. Legends indicate for each target the number of functions that were solved in at + least one trial within the displayed budget. + Right subplots: ECDF of the best achieved ∆f + for running times of 0.5D, 1.2D, 3D, 10D, 100D, 1000D,... + function evaluations + (from right to left cycling cyan-magenta-black...) and final ∆f-value (red), + where ∆fand Df denote the difference to the optimal function value. + +
    +##bbobpprldistrlegendtwolargescalefixed## + + Empirical cumulative distributions (ECDF) + of run lengths and speed-up ratios in 80-D (left) and 320-D (right). + Left sub-columns: ECDF of + the number of function evaluations divided by dimension D + (FEvals/D) to reach a target value fopt+∆f with ∆f +=10k, where + k is given by the first value in the legend, for + algorithmA (°) and algorithmB () . Right sub-columns: + ECDF of FEval ratios of algorithmA divided by algorithmB for target + function values 10k with k given in the legend; all + trial pairs for each function. Pairs where both trials failed are disregarded, + pairs where one trial failed are visible in the limits being > 0 or < 1. The + legend also indicates, after the colon, the number of functions that were + solved in at least one trial (algorithmA first). + +
    +##bbobppfigdimlegendlargescalefixed## + + Scaling of runtime with dimension to reach certain target values ∆f. + Lines: average runtime (aRT); + Cross (+): median runtime of successful runs to reach the most difficult + target that was reached at least once (but not always); + Cross (×): maximum number of + f-evaluations in any trial. Notched boxes: interquartile range with median of simulated runs; + All values are divided by dimension and + plotted as log10 values versus dimension. Shown is the aRT for fixed values of ∆f += 10k with k given + in the legend. + Numbers above aRT-symbols (if appearing) indicate the number of trials + reaching the respective target. Horizontal lines mean linear scaling, slanted + grid lines depict quadratic scaling. + +
    +##bbobpptablecaptionlargescalefixed## + + Average runtime (aRT) to reach given targets, measured + in number of function evaluations. For each function, the aRT  + and, in braces as dispersion measure, the half difference between 10 and + 90%-tile of (bootstrapped) runtimes is shown for the different + target ∆f-values as shown in the top row. + #succ is the number of trials that reached the last target + fopt+ 10−8. + The median number of conducted function evaluations is additionally given in + italics, if the target in the last column was never reached. + +
    +##bbobpptablesmanylegendlargescalefixed## + + Average runtime (aRT) to reach given targets, measured + in number of function evaluations, in different dimensions. For each function, the aRT  + and, in braces as dispersion measure, the half difference between 10 and + 90%-tile of (bootstrapped) runtimes is shown for the different + target ∆f-values as shown in the top row. + #succ is the number of trials that reached the last target + fopt+ 10−8. + The median number of conducted function evaluations is additionally given in + italics, if the target in the last column was never reached. + Entries, succeeded by a star, are statistically significantly better (according to + the rank-sum test) when compared to all other algorithms of the table, with + p = 0.05 or p = 10−k when the number k following the star is larger + than 1, with Bonferroni correction by the number of functions (24). A ↓ indicates the same tested against . Best results are printed in bold. + ??COCOVERSION?? + +
    +##bbobppscatterlegendlargescalefixed## + +Average running time (aRT in log10 of number of function evaluations) + of algorithmA (y-axis) versus algorithmB (x-axis) for !!NBTARGETS−SCATTER!! target values + !!DF!! ∈ [!!NBLOW!!, !!NBUP!!] in each dimension on functions f1 - f24. Markers on the upper or right edge indicate that the respective target + value was never reached. Markers represent dimension: + 20:+, + 40:\triangledown, + 80:, + 160:°, + 320:[¯], + 640:\Diamond. + +
    +##bbobloglosstablecaptionlargescalefixed## + + aRT loss ratio versus the budget in number of f-evaluations + divided by dimension. + For each given budget FEvals, the target value ft is computed + as the best target f-value reached within the + budget by the given algorithm. + Shown is then the aRT to reach ft for the given algorithm + or the budget, if + reached a better target within the budget, + divided by the aRT of to reach ft. + Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median + (box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio + (points). The vertical line gives the maximal number of function evaluations + in a single trial in this function subset. See also + the following figure for results on each function subgroup.??COCOVERSION?? + +
    +##bbobloglossfigurecaptionlargescalefixed## + + aRT loss ratios (see the previous figure for details). + +
    + Each cross (+) represents a single function, the line + is the geometric mean. +
    ### @@ -892,5 +1027,5 @@ TEX by TTH, -version 4.08.
    On 24 Nov 2017, 10:23. +version 4.08.
    On 12 Apr 2018, 18:30. diff --git a/code-postprocessing/cocopp/preparetexforhtml.py b/code-postprocessing/cocopp/preparetexforhtml.py index e6bb0b0e5..5532725f0 100644 --- a/code-postprocessing/cocopp/preparetexforhtml.py +++ b/code-postprocessing/cocopp/preparetexforhtml.py @@ -81,7 +81,7 @@ def main(latex_commands_for_html): config.config(testbedsettings.default_testbed_cons) elif scenario == testbedsettings.scenario_largescalefixed: genericsettings.runlength_based_targets = False - config.config(testbedsettings.default_testbed_largescale) + config.config(testbedsettings.default_testbed_ls) else: warnings.warn("Scenario not supported yet in HTML") From 3c436fe7e3b9c52996c28a67a7221fe3e66b4d58 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Thu, 12 Apr 2018 18:03:13 +0200 Subject: [PATCH 314/446] maximal rotation matrix blocksize set to min(dimension, 40) --- code-experiments/src/large_scale_transformations.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/large_scale_transformations.c b/code-experiments/src/large_scale_transformations.c index 68ba7ec71..a0570ec97 100644 --- a/code-experiments/src/large_scale_transformations.c +++ b/code-experiments/src/large_scale_transformations.c @@ -9,8 +9,10 @@ /* TODO: Document this file in doxygen style! */ -static double *ls_random_data;/* global variable used to generate the random permutations */ +static const size_t BBOB_MAX_BLOCK_SIZE_ABSOLUTE = 40; /* for block rotations */ +static const double BBOB_MAX_BLOCK_SIZE_RELATIVE = 1; /* for block rotations, relative to dimension */ +static double *ls_random_data;/* global variable used to generate the random permutations */ /** * ls_allocate_blockmatrix(n, m, bs): * @@ -285,7 +287,9 @@ static size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension){ size_t block_size; size_t i; - block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension / 4, 100)); + block_size = coco_double_to_size_t(bbob2009_fmin( + (double) BBOB_MAX_BLOCK_SIZE_RELATIVE * dimension, + BBOB_MAX_BLOCK_SIZE_ABSOLUTE)); *nb_blocks = dimension / block_size + ((dimension % block_size) > 0); block_sizes = coco_allocate_vector_size_t(*nb_blocks); for (i = 0; i < *nb_blocks - 1; i++) { From 845a23f199670d431be17ceb0b9f3063638c68b0 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Sun, 15 Apr 2018 16:03:09 +0200 Subject: [PATCH 315/446] renamed outdated large_scale_transformations.c file --- ..._scale_transformations.c => old_large_scale_transformations.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename code-experiments/src/{large_scale_transformations.c => old_large_scale_transformations.c} (100%) diff --git a/code-experiments/src/large_scale_transformations.c b/code-experiments/src/old_large_scale_transformations.c similarity index 100% rename from code-experiments/src/large_scale_transformations.c rename to code-experiments/src/old_large_scale_transformations.c From ff7d7fad0d03d00e3d95adecaecde7e0af19b7d3 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Sun, 15 Apr 2018 16:08:03 +0200 Subject: [PATCH 316/446] implemented coco_rotation_matrix_block_size to be used in f8, f9, f19 where transform_vars_blockrotation are used. --- .../src/transform_vars_blockrotation_helpers.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index cfc34bd5d..a327e0cba 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -14,6 +14,18 @@ /* TODO: Document this file in doxygen style! */ +/** + * @brief Returns block size for block rotation matrices. + * + */ +static size_t coco_rotation_matrix_block_size(size_t const dimension) { + const double BLOCK_SIZE_RELATIVE = 1; /* for block rotations, relative to dimension */ + const size_t MAX_BLOCK_SIZE_ABSOLUTE = 40; /* for block rotations */ + + return coco_double_to_size_t(coco_double_min( + BLOCK_SIZE_RELATIVE * dimension, + MAX_BLOCK_SIZE_ABSOLUTE)); +} /** * @brief @@ -169,7 +181,8 @@ static size_t *coco_get_block_sizes(size_t *nb_blocks, size_t dimension, const c if (strcmp(suite_name, "bbob-largescale") == 0) { /*block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension / 4, 100));*/ /*old value*/ - block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension, 40)); + /*block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension, 40));*/ + block_size = coco_rotation_matrix_block_size(dimension); *nb_blocks = dimension / block_size + ((dimension % block_size) > 0); block_sizes = coco_allocate_vector_size_t(*nb_blocks); for (i = 0; i < *nb_blocks - 1; i++) { From 49c633fdaef9a6a28ff70f67c409ff249ec0b2e6 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Sun, 15 Apr 2018 22:57:22 +0200 Subject: [PATCH 317/446] updated interface.c file --- code-experiments/build/python/cython/interface.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/code-experiments/build/python/cython/interface.c b/code-experiments/build/python/cython/interface.c index 72110dc38..fd564b217 100644 --- a/code-experiments/build/python/cython/interface.c +++ b/code-experiments/build/python/cython/interface.c @@ -1891,7 +1891,6 @@ static const char __pyx_k_cocoex_exceptions[] = "cocoex.exceptions"; static const char __pyx_k_known_suite_names[] = "known_suite_names"; static const char __pyx_k_Suite_ids_line_391[] = "Suite.ids (line 391)"; static const char __pyx_k_NotImplementedError[] = "NotImplementedError"; -static const char __pyx_k_known_suite_names_2[] = "_known_suite_names"; static const char __pyx_k_number_of_variables[] = "number_of_variables"; static const char __pyx_k_with_d_constraint_s[] = " with %d constraint%s"; static const char __pyx_k_NoSuchSuiteException[] = "NoSuchSuiteException"; @@ -2029,7 +2028,6 @@ static PyObject *__pyx_n_u_initialized; static PyObject *__pyx_n_s_instance; static PyObject *__pyx_n_s_iter; static PyObject *__pyx_n_s_known_suite_names; -static PyObject *__pyx_n_s_known_suite_names_2; static PyObject *__pyx_n_s_level; static PyObject *__pyx_n_s_level_2; static PyObject *__pyx_n_s_log_level; @@ -17401,7 +17399,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_instance, __pyx_k_instance, sizeof(__pyx_k_instance), 0, 0, 1, 1}, {&__pyx_n_s_iter, __pyx_k_iter, sizeof(__pyx_k_iter), 0, 0, 1, 1}, {&__pyx_n_s_known_suite_names, __pyx_k_known_suite_names, sizeof(__pyx_k_known_suite_names), 0, 0, 1, 1}, - {&__pyx_n_s_known_suite_names_2, __pyx_k_known_suite_names_2, sizeof(__pyx_k_known_suite_names_2), 0, 0, 1, 1}, {&__pyx_n_s_level, __pyx_k_level, sizeof(__pyx_k_level), 0, 0, 1, 1}, {&__pyx_n_s_level_2, __pyx_k_level_2, sizeof(__pyx_k_level_2), 0, 0, 1, 1}, {&__pyx_n_s_log_level, __pyx_k_log_level, sizeof(__pyx_k_log_level), 0, 0, 1, 1}, @@ -17968,7 +17965,7 @@ PyMODINIT_FUNC PyInit_interface(void) * * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained"] * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] # <<<<<<<<<<<<<< - * _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] + * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] * */ __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) @@ -17988,7 +17985,7 @@ PyMODINIT_FUNC PyInit_interface(void) /* "cython/interface.pyx":12 * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained"] * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] - * _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] # <<<<<<<<<<<<<< + * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] # <<<<<<<<<<<<<< * * # _test_assignment = "seems to prevent an 'export' error (i.e. induce export) to make this module known under Linux and Windows (possibly because of the leading underscore of _interface)" */ @@ -18009,7 +18006,7 @@ PyMODINIT_FUNC PyInit_interface(void) __Pyx_INCREF(__pyx_kp_u_bbob_largescale); __Pyx_GIVEREF(__pyx_kp_u_bbob_largescale); PyList_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_bbob_largescale); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names_2, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":18 From b42e2b508914644f0e5557e55b5458463c6f1772 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Wed, 16 May 2018 18:15:08 +0200 Subject: [PATCH 318/446] Generalize factor for Rosenbrock --- code-experiments/src/f_rosenbrock.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index 28f2027b3..2cfdfd80e 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -88,7 +88,12 @@ static coco_problem_t *f_rosenbrock_bbob_problem_allocate(const size_t function, xopt[i] *= 0.75; } fopt = bbob2009_compute_fopt(function, instance); - factor = coco_double_max(1.0, sqrt((double) dimension) / 8.0); + if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ + size_t block_size = coco_rotation_matrix_block_size(dimension); + factor = coco_double_max(1.0, sqrt((double) block_size) / 8.0); + } else { + factor = coco_double_max(1.0, sqrt((double) dimension) / 8.0); + } problem = f_rosenbrock_allocate(dimension); problem = transform_vars_shift(problem, minus_one, 0); From d5a074d719e42c4f2120889126dddd39b3622a7e Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Wed, 16 May 2018 19:26:18 +0200 Subject: [PATCH 319/446] Largescale rotated Rosenbrock - definition update --- code-experiments/src/f_rosenbrock.c | 44 ++++++++++++----------------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index 2cfdfd80e..45e5ff75c 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -183,9 +183,9 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si const char *problem_id_template, const char *problem_name_template) { - double fopt; + double *xopt, fopt; coco_problem_t *problem = NULL; - double *minus_half, factor; + double *minus_one, factor; size_t i, j, k, next_bs_change; double **B; @@ -196,7 +196,6 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si size_t nb_blocks; size_t swap_range; size_t nb_swaps; - double tmp; /* Wassim: will serve to set the optimal solution "manually"*/ double *best_parameter = coco_allocate_vector(dimension); /* Manh: will serve to set the optimal solution "manually"*/ block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); @@ -204,10 +203,13 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); fopt = bbob2009_compute_fopt(function, instance); - factor = coco_double_max(1.0, sqrt((double) dimension) / 8.0); - minus_half = coco_allocate_vector(dimension); + factor = coco_double_max(1.0, sqrt((double) block_sizes[0]) / 8.0); + minus_one = coco_allocate_vector(dimension); + xopt = coco_allocate_vector(dimension); + bbob2009_compute_xopt(xopt, rseed, dimension); for (i = 0; i < dimension; ++i) { - minus_half[i] = -0.5; + minus_one[i] = -1.0; + xopt[i] *= 0.75; } B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); @@ -218,38 +220,28 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); problem = f_rosenbrock_allocate(dimension); - problem = transform_vars_shift(problem, minus_half, 0); + problem = transform_vars_shift(problem, minus_one, 0); problem = transform_vars_scale(problem, factor); problem = transform_vars_permutation(problem, P2, dimension); problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - problem = transform_obj_norm_by_dim(problem); - problem = transform_obj_shift(problem, fopt); - - /* Manh: manually set xopt = rot1^T ones(dimension)/(2*factor) */ - next_bs_change = 0; - for (k = 0; k < nb_blocks; ++k){ - for (j = 0; j < block_sizes[k]; ++j) { /* Manh: firstly, set xopt_1 = (B^T)*(P_2^T)*ones(dimension)/(2*factor) */ - tmp = 0; - for (i = 0; i < block_sizes[k]; ++i) { - tmp += B[next_bs_change + i][j]; - } - best_parameter[next_bs_change + j] = tmp / (2. * factor); - } - next_bs_change += block_sizes[k]; - } + /* Manh: manually set best parameter to zero */ - for (j = 0; j < dimension; ++j) { /* Manh: secondly, set xopt = (P_1^T)* xopt_1 */ - problem->best_parameter[P1[j]] = best_parameter[j]; - } + for (j = 0; j < dimension; ++j) { + problem->best_parameter[j] = 0.0; + } /* TODO: Check if it's unnecessairy */ + problem = transform_vars_shift(problem, xopt, 0); + problem = transform_obj_norm_by_dim(problem); + problem = transform_obj_shift(problem, fopt); + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "block-rotated_moderate"); coco_free_memory(best_parameter); - coco_free_memory(minus_half); + coco_free_memory(minus_one); coco_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); From 458d0f145c034b11bf432ab9eb34cb5920f7f113 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Wed, 16 May 2018 21:50:40 +0200 Subject: [PATCH 320/446] Use block_size instead of block_sizes - rotated rosenbrock --- code-experiments/src/f_rosenbrock.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index 45e5ff75c..353817578 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -77,7 +77,7 @@ static coco_problem_t *f_rosenbrock_bbob_problem_allocate(const size_t function, double *xopt, fopt; coco_problem_t *problem = NULL; - size_t i; + size_t i, block_size; double *minus_one, factor; minus_one = coco_allocate_vector(dimension); @@ -89,7 +89,7 @@ static coco_problem_t *f_rosenbrock_bbob_problem_allocate(const size_t function, } fopt = bbob2009_compute_fopt(function, instance); if (coco_strfind(problem_name_template, "BBOB large-scale suite") >= 0){ - size_t block_size = coco_rotation_matrix_block_size(dimension); + block_size = coco_rotation_matrix_block_size(dimension); factor = coco_double_max(1.0, sqrt((double) block_size) / 8.0); } else { factor = coco_double_max(1.0, sqrt((double) dimension) / 8.0); @@ -193,17 +193,20 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si size_t *P1 = coco_allocate_vector_size_t(dimension); size_t *P2 = coco_allocate_vector_size_t(dimension); size_t *block_sizes; + size_t block_size; size_t nb_blocks; size_t swap_range; size_t nb_swaps; double *best_parameter = coco_allocate_vector(dimension); /* Manh: will serve to set the optimal solution "manually"*/ block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + block_size = coco_rotation_matrix_block_size(dimension); + swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); fopt = bbob2009_compute_fopt(function, instance); - factor = coco_double_max(1.0, sqrt((double) block_sizes[0]) / 8.0); + factor = coco_double_max(1.0, sqrt((double) block_size) / 8.0); minus_one = coco_allocate_vector(dimension); xopt = coco_allocate_vector(dimension); bbob2009_compute_xopt(xopt, rseed, dimension); From d2f3b1cf1e3e405bb681ffaa193ef19b1d406135 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Wed, 16 May 2018 22:37:01 +0200 Subject: [PATCH 321/446] Largescale Griewank Rosenbrock - definition update --- code-experiments/src/f_griewank_rosenbrock.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index a962a2bd0..b74208dff 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -147,6 +147,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all size_t *P1 = coco_allocate_vector_size_t(dimension); size_t *P2 = coco_allocate_vector_size_t(dimension); size_t *block_sizes; + size_t block_size; size_t nb_blocks; size_t swap_range; size_t nb_swaps; @@ -155,15 +156,12 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all block_sizes = coco_get_block_sizes(&nb_blocks, dimension, "bbob-largescale"); + block_size = coco_rotation_matrix_block_size(dimension); swap_range = coco_get_swap_range(dimension, "bbob-largescale"); nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale"); fopt = bbob2009_compute_fopt(function, instance); - /*scales = coco_double_max(1.0, sqrt((double) dimension) / 8.0);*/ - scales = sqrt((double) dimension) / 8.0; - if (dimension < 8) { /* Wassim: shouldn't be true in a large scale setting */ - scales = 1.0; - } + scales = coco_double_max(1.0, sqrt((double) block_size) / 8.0); shift = coco_allocate_vector(dimension); for (i = 0; i < dimension; ++i) { shift[i] = -0.5; From 00768ec82fac3de71799c07d6647384934cb11a7 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Wed, 16 May 2018 22:49:49 +0200 Subject: [PATCH 322/446] Remove unnecessary code - largescale rosenbrock --- code-experiments/src/f_rosenbrock.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index 353817578..449d6bec4 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -229,12 +229,6 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si problem = transform_vars_blockrotation(problem, B_copy, dimension, block_sizes, nb_blocks); problem = transform_vars_permutation(problem, P1, dimension); - /* Manh: manually set best parameter to zero */ - - for (j = 0; j < dimension; ++j) { - problem->best_parameter[j] = 0.0; - } /* TODO: Check if it's unnecessairy */ - problem = transform_vars_shift(problem, xopt, 0); problem = transform_obj_norm_by_dim(problem); problem = transform_obj_shift(problem, fopt); From 75f5018153b74af27ed414bda08e17ba4c420c4e Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Wed, 16 May 2018 23:58:27 +0200 Subject: [PATCH 323/446] Penalty factor correction - Largescale Schaffers --- code-experiments/src/f_schaffers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index 752e1b7eb..fa26196b5 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -194,7 +194,7 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz problem = transform_vars_shift(problem, xopt, 0); /*problem = transform_obj_norm_by_dim(problem);*/ /* Wassim: there is already a normalization by dimension*/ - problem = transform_obj_penalize(problem, penalty_factor / (double) dimension); + problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); coco_problem_set_id(problem, problem_id_template, function, instance, dimension); From b02009f5f4d0da9f63c25b6df22ca136a00981ae Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 17 May 2018 21:01:38 +0200 Subject: [PATCH 324/446] remove unused variables --- code-experiments/src/f_rosenbrock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index 449d6bec4..e818fc2b1 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -186,7 +186,7 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si double *xopt, fopt; coco_problem_t *problem = NULL; double *minus_one, factor; - size_t i, j, k, next_bs_change; + size_t i; double **B; const double *const *B_copy; From 786e3135d860ec4ef932858ad6217f3f5a94ee29 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 24 May 2018 21:55:53 +0200 Subject: [PATCH 325/446] add tabDimsOfInterest in genericsettings --- code-postprocessing/cocopp/genericsettings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/code-postprocessing/cocopp/genericsettings.py b/code-postprocessing/cocopp/genericsettings.py index 0d2642bce..80c52f24b 100644 --- a/code-postprocessing/cocopp/genericsettings.py +++ b/code-postprocessing/cocopp/genericsettings.py @@ -24,6 +24,7 @@ """weights used to sum function evaluations and constraints evaluations in attribute DataSet.evals, if any constraints evaluations are found""" +tabDimsOfInterest = (40, 320) # dimension which are displayed in the tables target_runlengths_in_scaling_figs = [0.5, 1.2, 3, 10, 50] # used in config target_runlengths_in_single_rldistr = [0.5, 2, 10, 50] # used in config target_runlength = 10 # used in ppfigs.main From 8a4a6e8a7bab417b017abecf3f70a3cda5def1d3 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Tue, 9 Oct 2018 07:20:31 +0200 Subject: [PATCH 326/446] Update settings dictionary for largescale testbed in testbedsettings --- code-postprocessing/cocopp/testbedsettings.py | 41 ++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/code-postprocessing/cocopp/testbedsettings.py b/code-postprocessing/cocopp/testbedsettings.py index 4fa62a918..8930f8526 100644 --- a/code-postprocessing/cocopp/testbedsettings.py +++ b/code-postprocessing/cocopp/testbedsettings.py @@ -471,18 +471,49 @@ def __init__(self, targetValues): class BBOBLargeScaleTestbed(GECCOBBOBTestbed): """ Settings related to `bbob-largescale` test suite. """ - + + shortinfo_filename = 'bbob-largescale-benchmarkshortinfos.txt' + pptable_target_runlengths = [0.5, 1.2, 3, 10, 50] # used in config for expensive setting + pptable_targetsOfInterest = (10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-7) # for pptable and pptablemany dimsOfInterest = (80, 320) settings = dict( + info_filename='bbob-largescale-benchmarkinfos.txt', + shortinfo_filename=shortinfo_filename, name=testbed_name_ls, - first_dimension=20, - scenario=scenario_largescalefixed, - dimensions_to_display=[20, 40, 80, 160, 320, 640], + short_names=get_short_names(shortinfo_filename), + dimensions_to_display=(20, 40, 80, 160, 320, 640), tabDimsOfInterest=dimsOfInterest, rldDimsOfInterest=dimsOfInterest, + hardesttargetlatex='10^{-8}', # used for ppfigs, pptable and pptables + ppfigs_ftarget=1e-8, # to set target runlength in expensive setting, use genericsettings.target_runlength + ppfig2_ftarget=1e-8, + ppfigdim_target_values=(10, 1, 1e-1, 1e-2, 1e-3, 1e-5, 1e-8), + pprldistr_target_values=(10., 1e-1, 1e-4, 1e-8), + pprldmany_target_values=10 ** np.arange(2, -8.2, -0.2), + pprldmany_target_range_latex='$10^{[-8..2]}$', + ppscatter_target_values=np.logspace(-8, 2, 21), + rldValsOfInterest=(10, 1e-1, 1e-4, 1e-8), # possibly changed in config + ppfvdistr_min_target=1e-8, + functions_with_legend=(1, 24), + first_function_number=1, + last_function_number=24, + reference_values_hash_dimensions=[], + pptable_ftarget=1e-8, # value for determining the success ratio in all tables + pptable_targetsOfInterest=pptable_targetsOfInterest, + pptablemany_targetsOfInterest=pptable_targetsOfInterest, + scenario=scenario_largescalefixed, reference_algorithm_filename='', # TODO produce correct reference algo and update this line - reference_algorithm_displayname='' # TODO: should be read in from data set in reference_algorithm_filename + reference_algorithm_displayname='', # TODO: should be read in from data set in reference_algorithm_filename + pptable_target_runlengths=pptable_target_runlengths, + pptables_target_runlengths=pptable_target_runlengths, + data_format=dataformatsettings.BBOBOldDataFormat(), # we cannot assume the 2nd column have constraints evaluation + # TODO: why do we want the data format hard coded in the testbed? + # Isn't the point that the data_format should be set + # independently of the testbed constrained to the data we actually + # see, that is, not assigned here? + number_of_points=5, # nb of target function values for each decade + instancesOfInterest=None # None: consider all instances ) From adac25f8ee60abcfd1e7256d7af048fb31ef12e9 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Wed, 10 Oct 2018 21:50:28 +0200 Subject: [PATCH 327/446] Resolving conflict for interface.c --- .../build/python/cython/interface.c | 3230 ++++++++++++----- 1 file changed, 2236 insertions(+), 994 deletions(-) diff --git a/code-experiments/build/python/cython/interface.c b/code-experiments/build/python/cython/interface.c index b65a52ad8..01164a93e 100644 --- a/code-experiments/build/python/cython/interface.c +++ b/code-experiments/build/python/cython/interface.c @@ -1,13 +1,14 @@ -/* Generated by Cython 0.25.2 */ +/* Generated by Cython 0.27.3 */ #define PY_SSIZE_T_CLEAN #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) - #error Cython requires Python 2.6+ or Python 3.2+. +#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_25_2" +#define CYTHON_ABI "0_27_3" +#define CYTHON_FUTURE_DIVISION 1 #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) @@ -29,8 +30,9 @@ #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif +#define __PYX_COMMA , #ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000) + #if PY_VERSION_HEX >= 0x02070000 #define HAVE_LONG_LONG #endif #endif @@ -46,8 +48,14 @@ #define CYTHON_COMPILING_IN_CPYTHON 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS @@ -66,6 +74,10 @@ #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 #elif defined(PYSTON_VERSION) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 1 @@ -73,6 +85,8 @@ #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS @@ -97,6 +111,10 @@ #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 @@ -104,6 +122,12 @@ #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif + #if PY_VERSION_HEX < 0x02070000 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 @@ -143,6 +167,12 @@ #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 1 #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) + #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) @@ -181,19 +211,44 @@ #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif -#ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, - Py_ssize_t nargs, PyObject *kwnames); +#if PY_VERSION_HEX < 0x030700A0 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject **args, + Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast + #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords #endif #if CYTHON_FAST_PYCCALL #define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))))) + ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif +#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ @@ -277,7 +332,6 @@ #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject @@ -317,20 +371,28 @@ #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef CYTHON_RESTRICT #if defined(__GNUC__) @@ -371,6 +433,43 @@ # endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int32 uint32_t; + #endif + #endif +#else + #include +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) && __cplusplus >= 201103L + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #elif __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__ ) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif #ifndef CYTHON_INLINE #if defined(__clang__) @@ -411,14 +510,6 @@ static CYTHON_INLINE float __PYX_NAN() { __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ } -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#endif - #ifndef __PYX_EXTERN_C #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" @@ -431,7 +522,6 @@ static CYTHON_INLINE float __PYX_NAN() { #define __PYX_HAVE_API__cocoex__interface #include #include -#include #include "numpy/arrayobject.h" #include "numpy/ufuncobject.h" #include "coco.h" @@ -439,7 +529,7 @@ static CYTHON_INLINE float __PYX_NAN() { #include #endif /* _OPENMP */ -#ifdef PYREX_WITHOUT_ASSERTIONS +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) #define CYTHON_WITHOUT_ASSERTIONS #endif @@ -470,8 +560,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc #define __Pyx_sst_abs(value) abs(value) #elif SIZEOF_LONG >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) && defined (_M_X64) - #define __Pyx_sst_abs(value) _abs64(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __Pyx_sst_abs(value) llabs(value) #elif defined (__GNUC__) @@ -479,8 +569,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc #else #define __Pyx_sst_abs(value) ((value<0) ? -value : value) #endif -static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString @@ -493,23 +583,27 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif -#define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -#if PY_MAJOR_VERSION < 3 -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) -{ +static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { const Py_UNICODE *u_end = u; while (*u_end++) ; return (size_t)(u_end - u - 1); } -#else -#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen -#endif #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode @@ -518,6 +612,8 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) #define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); #if CYTHON_ASSUME_SAFE_MACROS @@ -616,10 +712,12 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) { #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } -static PyObject *__pyx_m; +static PyObject *__pyx_m = NULL; static PyObject *__pyx_d; static PyObject *__pyx_b; +static PyObject *__pyx_cython_runtime; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static PyObject *__pyx_empty_unicode; @@ -653,6 +751,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "cython/interface.pyx", + "stringsource", "__init__.pxd", "type.pxd", }; @@ -693,7 +792,7 @@ typedef struct { } __Pyx_BufFmt_Context; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":743 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -702,7 +801,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":744 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -711,7 +810,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":727 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":745 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -720,7 +819,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":728 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":746 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -729,7 +828,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":750 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -738,7 +837,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":751 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -747,7 +846,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":734 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":752 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -756,7 +855,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":735 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -765,7 +864,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":739 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":757 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -774,7 +873,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":740 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":758 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -783,7 +882,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":767 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -792,7 +891,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":750 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":768 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -801,7 +900,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":769 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -810,7 +909,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":771 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -819,7 +918,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":754 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":772 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -828,7 +927,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":773 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -837,7 +936,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":757 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -846,7 +945,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":776 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -855,7 +954,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -864,7 +963,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":761 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":779 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -873,7 +972,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":780 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -912,7 +1011,7 @@ struct __pyx_obj_6cocoex_9interface_Observer; struct __pyx_obj_6cocoex_9interface_Problem; struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":782 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -921,7 +1020,7 @@ struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":765 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":783 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -930,7 +1029,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -939,7 +1038,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":786 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -1185,23 +1284,35 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET(); +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type #else #define __Pyx_PyThreadState_declare #define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() PyErr_Occurred() #endif /* PyErrFetchRestore.proto */ #if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif #else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) #endif @@ -1318,6 +1429,7 @@ static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { /* PyObjectCallMethod1.proto */ static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); +static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg); /* append.proto */ static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x); @@ -1331,7 +1443,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, #endif /* KeywordStringCheck.proto */ -static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); +static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /* GetItemInt.proto */ #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ @@ -1351,7 +1463,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_ (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, int wraparound, int boundscheck); @@ -1380,18 +1492,30 @@ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\ __Pyx_SetItemInt_Generic(o, to_py_func(i), v))) -static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v); +static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v); static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, int wraparound, int boundscheck); +/* IsLittleEndian.proto */ +static CYTHON_INLINE int __Pyx_Is_Little_Endian(void); + /* BufferFormatCheck.proto */ -static CYTHON_INLINE int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, - __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); -static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts); static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, __Pyx_BufFmt_StackElem* stack, - __Pyx_TypeInfo* type); // PROTO + __Pyx_TypeInfo* type); + +/* BufferGetAndValidate.proto */ +#define __Pyx_GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)\ + ((obj == Py_None || obj == NULL) ?\ + (__Pyx_ZeroBuffer(buf), 0) :\ + __Pyx__GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)) +static int __Pyx__GetBufferAndValidate(Py_buffer* buf, PyObject* obj, + __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); +static void __Pyx_ZeroBuffer(Py_buffer* buf); +static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); +static Py_ssize_t __Pyx_minusones[] = { -1, -1, -1, -1, -1, -1, -1, -1 }; +static Py_ssize_t __Pyx_zeros[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; /* BufferFallbackError.proto */ static void __Pyx_RaiseBufferFallbackError(void); @@ -1476,12 +1600,22 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); /* SetVTable.proto */ static int __Pyx_SetVtable(PyObject *dict, void *vtable); +/* SetupReduce.proto */ +static int __Pyx_setup_reduce(PyObject* type_obj); + /* Import.proto */ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /* ImportFrom.proto */ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + /* CodeObjectCache.proto */ typedef struct { PyCodeObject* code_object; @@ -1524,10 +1658,6 @@ typedef struct { #endif -/* None.proto */ -static Py_ssize_t __Pyx_zeros[] = {0, 0, 0, 0, 0, 0, 0, 0}; -static Py_ssize_t __Pyx_minusones[] = {-1, -1, -1, -1, -1, -1, -1, -1}; - /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); @@ -1644,11 +1774,23 @@ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif + /* FetchCommonType.proto */ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); /* CoroutineBase.proto */ -typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyObject *); +typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyThreadState *, PyObject *); typedef struct { PyObject_HEAD __pyx_coroutine_body_t body; @@ -1668,12 +1810,30 @@ typedef struct { static __pyx_CoroutineObject *__Pyx__Coroutine_New( PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name); +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); static int __Pyx_Coroutine_clear(PyObject *self); -#if 1 || PY_VERSION_HEX < 0x030300B0 -static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue); +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); +static PyObject *__Pyx_Coroutine_Close(PyObject *self); +static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); +#define __Pyx_Coroutine_SwapException(self) {\ + __Pyx_ExceptionSwap(&(self)->exc_type, &(self)->exc_value, &(self)->exc_traceback);\ + __Pyx_Coroutine_ResetFrameBackpointer(self);\ + } +#define __Pyx_Coroutine_ResetAndClearException(self) {\ + __Pyx_ExceptionReset((self)->exc_type, (self)->exc_value, (self)->exc_traceback);\ + (self)->exc_type = (self)->exc_value = (self)->exc_traceback = NULL;\ + } +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue) #else -#define __Pyx_PyGen_FetchStopIterationValue(pvalue) PyGen_FetchStopIterationValue(pvalue) +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue) #endif +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue); +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__pyx_CoroutineObject *self); /* PatchModuleWithCoroutine.proto */ static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); @@ -1731,7 +1891,7 @@ static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; /* Module declarations from 'cpython.ref' */ -/* Module declarations from 'libc.stdlib' */ +/* Module declarations from 'cpython.mem' */ /* Module declarations from 'numpy' */ @@ -1754,6 +1914,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *); /*proto*/ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *, struct __pyx_opt_args_6cocoex_9interface_Problem_init *__pyx_optional_args); /*proto*/ static __Pyx_TypeInfo __Pyx_TypeInfo_double = { "double", NULL, sizeof(double), { 0 }, 0, 'R', 0, 0 }; #define __Pyx_MODULE_NAME "cocoex.interface" +extern int __pyx_module_is_main_cocoex__interface; int __pyx_module_is_main_cocoex__interface = 0; /* Implementation of 'cocoex.interface' */ @@ -1776,16 +1937,16 @@ static const char __pyx_k_u[] = "u'"; static const char __pyx_k_x[] = "x"; static const char __pyx_k_y[] = "y"; static const char __pyx_k__2[] = ""; -static const char __pyx_k__8[] = ","; -static const char __pyx_k__9[] = " "; static const char __pyx_k_bi[] = "bi"; static const char __pyx_k_id[] = "id"; static const char __pyx_k_np[] = "np"; -static const char __pyx_k__11[] = "'"; -static const char __pyx_k__12[] = "\""; -static const char __pyx_k__13[] = "{"; -static const char __pyx_k__14[] = "}"; -static const char __pyx_k__19[] = "_"; +static const char __pyx_k__10[] = ","; +static const char __pyx_k__11[] = " "; +static const char __pyx_k__13[] = "'"; +static const char __pyx_k__14[] = "\""; +static const char __pyx_k__15[] = "{"; +static const char __pyx_k__16[] = "}"; +static const char __pyx_k__23[] = "_"; static const char __pyx_k_all[] = "all"; static const char __pyx_k_d_d[] = "%d=%d"; static const char __pyx_k_get[] = "get"; @@ -1830,7 +1991,9 @@ static const char __pyx_k_double[] = "double"; static const char __pyx_k_encode[] = "encode"; static const char __pyx_k_format[] = "format"; static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_name_2[] = "__name__"; static const char __pyx_k_random[] = "random"; +static const char __pyx_k_reduce[] = "__reduce__"; static const char __pyx_k_s_id_r[] = "<%s(), id=%r>"; static const char __pyx_k_single[] = "single"; static const char __pyx_k_asarray[] = "asarray"; @@ -1842,13 +2005,16 @@ static const char __pyx_k_replace[] = "replace"; static const char __pyx_k_verbose[] = "verbose"; static const char __pyx_k_warning[] = "warning"; static const char __pyx_k_function[] = "function"; +static const char __pyx_k_getstate[] = "__getstate__"; static const char __pyx_k_instance[] = "instance"; static const char __pyx_k_observer[] = "observer"; static const char __pyx_k_parse_id[] = "_parse_id"; +static const char __pyx_k_setstate[] = "__setstate__"; static const char __pyx_k_TypeError[] = "TypeError"; static const char __pyx_k_dimension[] = "dimension"; static const char __pyx_k_enumerate[] = "enumerate"; static const char __pyx_k_log_level[] = "log_level"; +static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; static const char __pyx_k_traceback[] = "traceback"; static const char __pyx_k_ValueError[] = "ValueError"; static const char __pyx_k_bbob_biobj[] = "bbob-biobj"; @@ -1870,6 +2036,7 @@ static const char __pyx_k_next_problem[] = "next_problem"; static const char __pyx_k_observe_with[] = "observe_with"; static const char __pyx_k_upper_bounds[] = "upper_bounds"; static const char __pyx_k_d_dimensional[] = "%d-dimensional"; +static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; static const char __pyx_k_suite_options[] = "suite_options"; static const char __pyx_k_bbob_biobj_ext[] = "bbob-biobj-ext"; static const char __pyx_k_exception_type[] = "exception_type"; @@ -1877,17 +2044,20 @@ static const char __pyx_k_restart_number[] = "restart_number"; static const char __pyx_k_suite_instance[] = "suite_instance"; static const char __pyx_k_bbob_largescale[] = "bbob-largescale"; static const char __pyx_k_exception_value[] = "exception_value"; +static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; static const char __pyx_k_bbob_constrained[] = "bbob-constrained"; static const char __pyx_k_cocoex_interface[] = "cocoex.interface"; static const char __pyx_k_initial_solution[] = "initial_solution"; static const char __pyx_k_cocoex_exceptions[] = "cocoex.exceptions"; static const char __pyx_k_known_suite_names[] = "known_suite_names"; static const char __pyx_k_Suite_ids_line_295[] = "Suite.ids (line 295)"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; static const char __pyx_k_NotImplementedError[] = "NotImplementedError"; static const char __pyx_k_known_suite_names_2[] = "_known_suite_names"; static const char __pyx_k_number_of_variables[] = "number_of_variables"; static const char __pyx_k_with_d_constraint_s[] = " with %d constraint%s"; static const char __pyx_k_NoSuchSuiteException[] = "NoSuchSuiteException"; +static const char __pyx_k_cython_interface_pyx[] = "cython/interface.pyx"; static const char __pyx_k_final_target_fvalue1[] = "final_target_fvalue1"; static const char __pyx_k_number_of_objectives[] = "number_of_objectives"; static const char __pyx_k_expect_a_string_got_s[] = "expect a string, got %s"; @@ -1905,7 +2075,6 @@ static const char __pyx_k_s_a_s_s_problem_s_problem_d_of[] = "%s: a %s %s proble static const char __pyx_k_update_current_observer_global[] = "_update_current_observer_global"; static const char __pyx_k_Suite_s_s_s_with_d_problem_s_in[] = "Suite(\"%s\", \"%s\", \"%s\") with %d problem%s in dimension%s %s"; static const char __pyx_k_Unkown_benchmark_suite_name_s_K[] = "\nUnkown benchmark suite name %s.\nKnown suite names are %s.\nIf %s was not a typo, you can add the desired name to `known_suite_names`::\n\n >> import cocoex as ex\n >> ex.known_suite_names.append(b\"my_name\") # must be a byte string\n >> suite = ex.Suite(\"my_name\", \"\", \"\")\n COCO FATAL ERROR: coco_suite(): unknow problem suite\n\nThis will crash Python, if the suite \"my_name\" does in fact not exist. You might\nalso report back a missing name to https://github.com/numbbo/coco/issues\n"; -static const char __pyx_k_Users_hansen_git_coco_code_expe[] = "/Users/hansen/git/coco/code-experiments/build/python/cython/interface.pyx"; static const char __pyx_k_find_problem_ids_has_been_renam[] = "`find_problem_ids()` has been renamed to `ids()`"; static const char __pyx_k_get_problem_self_id_observer_No[] = "`get_problem(self, id, observer=None)` returns a `Problem` instance,\n by default unobserved, using `id: str` or index (where `id: int`) to\n identify the desired problem.\n\n All values between zero and `len(self) - 1` are valid index values::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> for index in range(len(suite)):\n ... problem = suite.get_problem(index)\n ... # work work work using problem\n ... problem.free()\n\n A shortcut for `suite.get_problem(index)` is `suite[index]`, they are\n synonym.\n\n Details:\n - Here an `index` takes values between 0 and `len(self) - 1` and can in\n principle be different from the problem index in the benchmark suite.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of `get_problem`. Otherwise Python\n might just silently die, which is e.g. a known issue of the \"bbob\"\n observer.\n\n See also `ids`, `get_problem_by_function_dimension_instance`.\n "; static const char __pyx_k_has_never_been_tested_incomment[] = "has never been tested, incomment this to start testing"; @@ -1925,6 +2094,7 @@ static const char __pyx_k_cannot_deduce_instance_id_from_s[] = "cannot deduce in static const char __pyx_k_in_Problem__initialize_problem_p[] = "in Problem._initialize(problem,...): problem is NULL"; static const char __pyx_k_index_in_the_enumerator_of_all_p[] = "index in the enumerator of all problems in this suite.\n\n Details: To get the index in the underlying C implementation, which\n usually matches `current_index` one-to-one, use::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> suite.current_index is None\n True\n >>> suite.next_problem().id[-17:].lower()\n 'bbob_f001_i01_d02'\n >>> suite.current_index, suite.indices[suite.current_index]\n (0, 0)\n\n "; static const char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous"; +static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__"; static const char __pyx_k_not_match_the_number_of_objectiv[] = "not match the number of objectives `number_of_objectives==%d`."; static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import"; static const char __pyx_k_returns_a_Problem_instance_by_de[] = "returns a `Problem` instance, by default unobserved, using function,\n dimension and instance to identify the desired problem.\n\n If a suite contains multiple problems with the same function, dimension\n and instance, the first corresponding problem is returned.\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> problem = suite.get_problem_by_function_dimension_instance(1, 2, 3)\n >>> # work work work using problem\n >>> problem.free()\n\n Details:\n - Function, dimension and instance are integer values from 1 on.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of\n `get_problem_by_function_dimension_instance`. Otherwise Python might\n just silently die, which is e.g. a known issue of the \"bbob\" observer.\n "; @@ -1953,16 +2123,15 @@ static PyObject *__pyx_kp_u_Suite_r_r_r; static PyObject *__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in; static PyObject *__pyx_n_s_TypeError; static PyObject *__pyx_kp_u_Unkown_benchmark_suite_name_s_K; -static PyObject *__pyx_kp_s_Users_hansen_git_coco_code_expe; static PyObject *__pyx_n_s_ValueError; +static PyObject *__pyx_kp_u__10; static PyObject *__pyx_kp_u__11; -static PyObject *__pyx_kp_u__12; static PyObject *__pyx_kp_u__13; static PyObject *__pyx_kp_u__14; -static PyObject *__pyx_n_u__19; +static PyObject *__pyx_kp_u__15; +static PyObject *__pyx_kp_u__16; static PyObject *__pyx_kp_u__2; -static PyObject *__pyx_kp_u__8; -static PyObject *__pyx_kp_u__9; +static PyObject *__pyx_n_u__23; static PyObject *__pyx_n_s_all; static PyObject *__pyx_n_s_append; static PyObject *__pyx_n_s_args; @@ -1978,10 +2147,12 @@ static PyObject *__pyx_n_u_bi; static PyObject *__pyx_kp_u_cannot_deduce_function_id_from_s; static PyObject *__pyx_kp_u_cannot_deduce_instance_id_from_s; static PyObject *__pyx_n_s_class; +static PyObject *__pyx_n_s_cline_in_traceback; static PyObject *__pyx_n_s_close; static PyObject *__pyx_n_s_cocoex_exceptions; static PyObject *__pyx_n_s_cocoex_interface; static PyObject *__pyx_n_s_copy; +static PyObject *__pyx_kp_s_cython_interface_pyx; static PyObject *__pyx_kp_u_d_d; static PyObject *__pyx_kp_u_d_dimensional; static PyObject *__pyx_n_u_deactivated; @@ -2010,6 +2181,7 @@ static PyObject *__pyx_kp_u_function_dimension_instance; static PyObject *__pyx_n_s_get; static PyObject *__pyx_n_s_get_problem; static PyObject *__pyx_kp_u_get_problem_self_id_observer_No; +static PyObject *__pyx_n_s_getstate; static PyObject *__pyx_kp_u_has_never_been_tested_incomment; static PyObject *__pyx_n_u_i; static PyObject *__pyx_n_s_id; @@ -2035,9 +2207,11 @@ static PyObject *__pyx_n_s_main; static PyObject *__pyx_n_s_max; static PyObject *__pyx_n_s_min; static PyObject *__pyx_n_s_name; +static PyObject *__pyx_n_s_name_2; static PyObject *__pyx_kp_u_ndarray_is_not_C_contiguous; static PyObject *__pyx_kp_u_ndarray_is_not_Fortran_contiguou; static PyObject *__pyx_n_s_next_problem; +static PyObject *__pyx_kp_s_no_default___reduce___due_to_non; static PyObject *__pyx_kp_u_not_match_the_number_of_objectiv; static PyObject *__pyx_kp_u_not_match_the_problem_dimension; static PyObject *__pyx_n_s_np; @@ -2059,6 +2233,9 @@ static PyObject *__pyx_n_s_pyx_vtable; static PyObject *__pyx_n_s_rand; static PyObject *__pyx_n_s_random; static PyObject *__pyx_n_s_range; +static PyObject *__pyx_n_s_reduce; +static PyObject *__pyx_n_s_reduce_cython; +static PyObject *__pyx_n_s_reduce_ex; static PyObject *__pyx_n_s_replace; static PyObject *__pyx_n_s_reset; static PyObject *__pyx_n_s_restart_number; @@ -2068,6 +2245,8 @@ static PyObject *__pyx_kp_u_s_a_s_s_problem_s_problem_d_of; static PyObject *__pyx_kp_u_s_id_r; static PyObject *__pyx_kp_u_s_objective; static PyObject *__pyx_n_s_send; +static PyObject *__pyx_n_s_setstate; +static PyObject *__pyx_n_s_setstate_cython; static PyObject *__pyx_n_u_single; static PyObject *__pyx_n_s_size; static PyObject *__pyx_n_s_split; @@ -2115,6 +2294,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_29__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_31__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_options); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer_global(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self, PyObject *__pyx_v_problem); /* proto */ @@ -2124,6 +2305,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __p static PyObject *__pyx_pf_6cocoex_9interface_8Observer_13result_folder___get__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, PyObject *__pyx_v_x); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_arx); /* proto */ @@ -2162,6 +2345,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__enter__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_34__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_level); /* proto */ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info); /* proto */ @@ -2181,26 +2366,32 @@ static PyObject *__pyx_tuple__4; static PyObject *__pyx_tuple__5; static PyObject *__pyx_tuple__6; static PyObject *__pyx_tuple__7; -static PyObject *__pyx_slice__23; -static PyObject *__pyx_tuple__10; -static PyObject *__pyx_tuple__15; -static PyObject *__pyx_tuple__16; +static PyObject *__pyx_tuple__8; +static PyObject *__pyx_tuple__9; +static PyObject *__pyx_slice__27; +static PyObject *__pyx_tuple__12; static PyObject *__pyx_tuple__17; static PyObject *__pyx_tuple__18; +static PyObject *__pyx_tuple__19; static PyObject *__pyx_tuple__20; static PyObject *__pyx_tuple__21; static PyObject *__pyx_tuple__22; static PyObject *__pyx_tuple__24; static PyObject *__pyx_tuple__25; static PyObject *__pyx_tuple__26; -static PyObject *__pyx_tuple__27; static PyObject *__pyx_tuple__28; static PyObject *__pyx_tuple__29; static PyObject *__pyx_tuple__30; static PyObject *__pyx_tuple__31; static PyObject *__pyx_tuple__32; static PyObject *__pyx_tuple__33; -static PyObject *__pyx_codeobj__34; +static PyObject *__pyx_tuple__34; +static PyObject *__pyx_tuple__35; +static PyObject *__pyx_tuple__36; +static PyObject *__pyx_tuple__37; +static PyObject *__pyx_tuple__38; +static PyObject *__pyx_tuple__39; +static PyObject *__pyx_codeobj__40; /* "cython/interface.pyx":69 * void bbob_problem_best_parameter_print(const coco_problem_t *problem) @@ -2377,8 +2568,11 @@ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -2387,11 +2581,13 @@ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_instance)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(0, 95, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_options)) != 0)) kw_args--; else { @@ -2798,7 +2994,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { - if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 121, __pyx_L1_error) } break; @@ -2941,9 +3137,21 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) */ - __pyx_t_13 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 136, __pyx_L7_error) - __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 136, __pyx_L7_error) - __pyx_t_15 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 136, __pyx_L7_error) + if (unlikely(__pyx_v_self->_name == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(0, 136, __pyx_L7_error) + } + __pyx_t_13 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 136, __pyx_L7_error) + if (unlikely(__pyx_v_self->_instance == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(0, 136, __pyx_L7_error) + } + __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 136, __pyx_L7_error) + if (unlikely(__pyx_v_self->_options == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(0, 136, __pyx_L7_error) + } + __pyx_t_15 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 136, __pyx_L7_error) __pyx_v_suite = coco_suite(__pyx_t_13, __pyx_t_14, __pyx_t_15); /* "cython/interface.pyx":135 @@ -2957,9 +3165,8 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - goto __pyx_L14_try_end; + goto __pyx_L12_try_end; __pyx_L7_error:; - __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; @@ -3050,13 +3257,12 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * suite = coco_suite(self._name, self._instance, self._options) * except: */ - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); goto __pyx_L1_error; - __pyx_L14_try_end:; + __pyx_L12_try_end:; } /* "cython/interface.pyx":139 @@ -3243,7 +3449,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self._indices.append(coco_problem_get_suite_dep_index(p)) * self._ids.append(coco_problem_get_id(p)) */ - goto __pyx_L19_break; + goto __pyx_L17_break; /* "cython/interface.pyx":145 * p = coco_suite_get_next_problem(suite, NULL) @@ -3263,7 +3469,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_indices, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 147, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_indices, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 147, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "cython/interface.pyx":148 @@ -3275,7 +3481,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_ids, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 148, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_ids, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "cython/interface.pyx":149 @@ -3287,7 +3493,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_names, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 149, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_names, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 149, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "cython/interface.pyx":150 @@ -3299,7 +3505,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_dimension(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 150, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_dimensions, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 150, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_dimensions, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 150, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "cython/interface.pyx":151 @@ -3311,10 +3517,10 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_number_of_objectives(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_number_of_objectives, __pyx_t_4); if (unlikely(__pyx_t_19 == -1)) __PYX_ERR(0, 151, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_number_of_objectives, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } - __pyx_L19_break:; + __pyx_L17_break:; /* "cython/interface.pyx":152 * self._dimensions.append(coco_problem_get_dimension(p)) @@ -3332,9 +3538,21 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * self.initialized = True * return self */ - __pyx_t_13 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 153, __pyx_L1_error) - __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 153, __pyx_L1_error) - __pyx_t_15 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 153, __pyx_L1_error) + if (unlikely(__pyx_v_self->_name == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(0, 153, __pyx_L1_error) + } + __pyx_t_13 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 153, __pyx_L1_error) + if (unlikely(__pyx_v_self->_instance == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(0, 153, __pyx_L1_error) + } + __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 153, __pyx_L1_error) + if (unlikely(__pyx_v_self->_options == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(0, 153, __pyx_L1_error) + } + __pyx_t_15 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 153, __pyx_L1_error) __pyx_v_self->suite = coco_suite(__pyx_t_13, __pyx_t_14, __pyx_t_15); /* "cython/interface.pyx":154 @@ -3552,6 +3770,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__py const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -3569,6 +3788,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__py } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -3741,7 +3961,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * self._current_problem = NULL * self.current_problem_ = None */ - __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 179, __pyx_L1_error) + __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 179, __pyx_L1_error) __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->_current_index, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L1_error) @@ -3953,7 +4173,9 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -3962,6 +4184,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_id)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_observer); @@ -3974,6 +4197,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; @@ -4106,9 +4330,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L11_try_end; + goto __pyx_L9_try_end; __pyx_L4_error:; - __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -4194,19 +4417,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * 1 / (id == int(id)) # int(id) might raise an exception * except: */ - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L1_error; __pyx_L5_exception_handled:; - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); - __pyx_L11_try_end:; + __pyx_L9_try_end:; } /* "cython/interface.pyx":229 @@ -4241,7 +4462,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * except: * raise NoSuchProblemException(self.name, str(id)) */ - __pyx_t_7 = PyObject_GetItem(__pyx_v_self->_indices, __pyx_v_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 230, __pyx_L14_error) + __pyx_t_7 = PyObject_GetItem(__pyx_v_self->_indices, __pyx_v_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 230, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_7); /* "cython/interface.pyx":230 @@ -4251,7 +4472,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * True, self._name).observe_with(observer) * except: */ - __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_7); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 230, __pyx_L14_error) + __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_7); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 230, __pyx_L12_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "cython/interface.pyx":231 @@ -4274,7 +4495,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_14.__pyx_n = 2; __pyx_t_14.free = Py_True; __pyx_t_14.suite_name = __pyx_t_7; - __pyx_t_3 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem(__pyx_v_self->suite, __pyx_t_13), &__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L14_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem(__pyx_v_self->suite, __pyx_t_13), &__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; @@ -4285,7 +4506,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * except: * raise NoSuchProblemException(self.name, str(id)) */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 231, __pyx_L14_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 231, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; @@ -4299,13 +4520,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } } if (!__pyx_t_3) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_observer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 231, __pyx_L14_error) + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_observer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 231, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_8); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 231, __pyx_L14_error) + __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 231, __pyx_L12_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_8); } else @@ -4313,19 +4534,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 231, __pyx_L14_error) + __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 231, __pyx_L12_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_8); } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 231, __pyx_L14_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 231, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 231, __pyx_L14_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 231, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -4333,7 +4554,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_r = __pyx_t_8; __pyx_t_8 = 0; - goto __pyx_L18_try_return; + goto __pyx_L16_try_return; /* "cython/interface.pyx":229 * except: @@ -4343,8 +4564,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * True, self._name).observe_with(observer) */ } - __pyx_L14_error:; - __Pyx_PyThreadState_assign + __pyx_L12_error:; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; @@ -4362,7 +4582,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(0, 232, __pyx_L16_except_error) + if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(0, 232, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_9); @@ -4374,16 +4594,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): */ - __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 233, __pyx_L16_except_error) + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 233, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 233, __pyx_L16_except_error) + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 233, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_12); - __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 233, __pyx_L16_except_error) + __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 233, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_v_id); __Pyx_GIVEREF(__pyx_v_id); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_id); - __pyx_t_15 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 233, __pyx_L16_except_error) + __pyx_t_15 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 233, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; @@ -4401,7 +4621,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_12, __pyx_t_15}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L16_except_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L14_except_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; @@ -4411,7 +4631,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_12, __pyx_t_15}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L16_except_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L14_except_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; @@ -4419,7 +4639,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } else #endif { - __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 233, __pyx_L16_except_error) + __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 233, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_17); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_11); __pyx_t_11 = NULL; @@ -4430,16 +4650,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_t_15); __pyx_t_12 = 0; __pyx_t_15 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L16_except_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 233, __pyx_L16_except_error) + __PYX_ERR(0, 233, __pyx_L14_except_error) } - __pyx_L16_except_error:; + __pyx_L14_except_error:; /* "cython/interface.pyx":229 * except: @@ -4448,14 +4668,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) */ - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4); goto __pyx_L1_error; - __pyx_L18_try_return:; - __Pyx_PyThreadState_assign + __pyx_L16_try_return:; __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_4); @@ -4519,9 +4737,13 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -4530,16 +4752,19 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_function)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimension)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 1); __PYX_ERR(0, 235, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_instance)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 2); __PYX_ERR(0, 235, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_observer); @@ -4552,6 +4777,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); @@ -4783,7 +5009,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ } __pyx_L4_error:; - __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; @@ -4934,14 +5159,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, * _dimension, _instance), */ - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); goto __pyx_L1_error; __pyx_L8_try_return:; - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); @@ -5463,7 +5686,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { - if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 334, __pyx_L1_error) } break; @@ -5617,7 +5840,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * if get_problem: * return self.get_problem(res[0]) */ - __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_res, __pyx_v_id); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_res, __pyx_v_id); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 338, __pyx_L1_error) /* "cython/interface.pyx":335 * res = [] @@ -5973,7 +6196,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 372, __pyx_L1_error) + __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 372, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; @@ -6044,7 +6267,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 376, __pyx_L1_error) + __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 376, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; @@ -6507,10 +6730,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) */ - __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 408, __pyx_L1_error) + __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 408, __pyx_L1_error) __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 408, __pyx_L1_error) + __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 408, __pyx_L1_error) if (((__pyx_t_4 == 1) != 0)) { __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_6 = __pyx_kp_u__2; @@ -6528,7 +6751,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 */ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_4 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 409, __pyx_L1_error) + __pyx_t_4 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 409, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (((__pyx_t_4 == 1) != 0)) { __Pyx_INCREF(__pyx_kp_u__2); @@ -6678,7 +6901,7 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ */ __pyx_t_1 = __pyx_v_self->_indices; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 412, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; goto __pyx_L0; @@ -6700,7 +6923,7 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ +static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* "cython/interface.pyx":414 * return len(self._indices) @@ -6760,7 +6983,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_ return __pyx_r; } -static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */ +static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *__pyx_cur_scope = ((struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)__pyx_generator->closure); PyObject *__pyx_r = NULL; @@ -6779,11 +7002,12 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO PyObject *__pyx_t_13 = NULL; int __pyx_t_14; char const *__pyx_t_15; + PyObject *__pyx_t_16 = NULL; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("None", 0); + __Pyx_RefNannySetupContext("__iter__", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; - case 1: goto __pyx_L28_resume_from_yield; + case 1: goto __pyx_L26_resume_from_yield; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; @@ -6840,8 +7064,6 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ /*try:*/ { { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); @@ -6865,8 +7087,6 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * if problem is None: */ { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8); @@ -6880,7 +7100,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * if problem is None: * return # StopIteration is deprecated */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_next_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 428, __pyx_L17_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_next_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 428, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -6893,10 +7113,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L17_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L15_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L17_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L15_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -6925,7 +7145,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ __Pyx_XDECREF(__pyx_r); __pyx_r = NULL; - goto __pyx_L21_try_return; + goto __pyx_L19_try_return; /* "cython/interface.pyx":429 * try: @@ -6947,9 +7167,8 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - goto __pyx_L24_try_end; - __pyx_L17_error:; - __Pyx_PyThreadState_assign + goto __pyx_L22_try_end; + __pyx_L15_error:; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -6961,13 +7180,13 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * return # StopIteration is deprecated * raise StopIteration */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L19_except_error) + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_12) { __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 432, __pyx_L19_except_error) + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 432, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_3); @@ -6984,10 +7203,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L20_except_return; + goto __pyx_L18_except_return; } - goto __pyx_L19_except_error; - __pyx_L19_except_error:; + goto __pyx_L17_except_error; + __pyx_L17_except_error:; /* "cython/interface.pyx":427 * try: @@ -6996,27 +7215,24 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * problem = s.next_problem() * if problem is None: */ - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); goto __pyx_L7_error; - __pyx_L21_try_return:; - __Pyx_PyThreadState_assign + __pyx_L19_try_return:; __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); goto __pyx_L11_try_return; - __pyx_L20_except_return:; - __Pyx_PyThreadState_assign + __pyx_L18_except_return:; __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); goto __pyx_L11_try_return; - __pyx_L24_try_end:; + __pyx_L22_try_end:; } /* "cython/interface.pyx":435 @@ -7036,10 +7252,11 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_cur_scope->__pyx_t_2 = __pyx_t_6; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; - __pyx_L28_resume_from_yield:; + __pyx_L26_resume_from_yield:; __pyx_t_4 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_4); @@ -7063,9 +7280,8 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L14_try_end; + goto __pyx_L12_try_end; __pyx_L7_error:; - __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -7107,20 +7323,18 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO * while True: * try: */ - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L5_error; __pyx_L11_try_return:; - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L4_return; - __pyx_L14_try_end:; + __pyx_L12_try_end:; } } @@ -7140,7 +7354,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; - goto __pyx_L31_bool_binop_done; + goto __pyx_L29_bool_binop_done; } __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); @@ -7165,15 +7379,14 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_L31_bool_binop_done:; + __pyx_L29_bool_binop_done:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L6; } + __pyx_L5_error:; /*exception exit:*/{ - __Pyx_PyThreadState_declare - __pyx_L5_error:; - __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __Pyx_PyThreadState_assign + __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -7190,13 +7403,13 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); if (!__pyx_t_11) { } else { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L34_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L32_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; - goto __pyx_L35_bool_binop_done; + goto __pyx_L33_bool_binop_done; } - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 439, __pyx_L34_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 439, __pyx_L32_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -7209,20 +7422,19 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_13) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L34_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L32_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L34_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L32_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_L35_bool_binop_done:; + __pyx_L33_bool_binop_done:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - __Pyx_PyThreadState_assign if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_8); @@ -7236,8 +7448,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15; goto __pyx_L1_error; - __pyx_L34_error:; - __Pyx_PyThreadState_assign + __pyx_L32_error:; if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_8); @@ -7251,7 +7462,17 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO goto __pyx_L1_error; } __pyx_L4_return: { - __pyx_t_7 = __pyx_r; + __Pyx_PyThreadState_assign + __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_6); + __pyx_t_16 = __pyx_r; __pyx_r = 0; __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); if (!__pyx_t_11) { @@ -7260,7 +7481,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; - goto __pyx_L37_bool_binop_done; + goto __pyx_L35_bool_binop_done; } __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); @@ -7285,10 +7506,21 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_L37_bool_binop_done:; + __pyx_L35_bool_binop_done:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_7; - __pyx_t_7 = 0; + __pyx_r = __pyx_t_16; + __pyx_t_16 = 0; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); + } + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9); + __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; goto __pyx_L0; } __pyx_L6:; @@ -7314,12 +7546,120 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_30__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_30__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_29__reduce_cython__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_29__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("cocoex.interface.Suite.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_32__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_5Suite_32__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_5Suite_31__setstate_cython__(((struct __pyx_obj_6cocoex_9interface_Suite *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_5Suite_31__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Suite *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("cocoex.interface.Suite.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":448 * cdef _state * @@ -7344,7 +7684,9 @@ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_se const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -7353,6 +7695,7 @@ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_se case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--; else { @@ -7434,7 +7777,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 450, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_s = __pyx_t_4; @@ -7447,7 +7790,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * s = s.replace(c, '') * options = s */ - __pyx_t_4 = __pyx_tuple__15; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; + __pyx_t_4 = __pyx_tuple__17; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; for (;;) { if (__pyx_t_5 >= 6) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS @@ -7591,8 +7934,16 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * self._state = 'initialized' * */ - __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 456, __pyx_L1_error) - __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 456, __pyx_L1_error) + if (unlikely(__pyx_v_self->_name == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(0, 456, __pyx_L1_error) + } + __pyx_t_10 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 456, __pyx_L1_error) + if (unlikely(__pyx_v_self->_options == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(0, 456, __pyx_L1_error) + } + __pyx_t_11 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 456, __pyx_L1_error) __pyx_v_self->_observer = coco_observer(__pyx_t_10, __pyx_t_11); /* "cython/interface.pyx":457 @@ -8193,6 +8544,113 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ __Pyx_RefNannyFinishContext(); } +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_10__reduce_cython__(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("cocoex.interface.Observer.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_8Observer_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_8Observer_12__setstate_cython__(((struct __pyx_obj_6cocoex_9interface_Observer *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_8Observer_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Observer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("cocoex.interface.Observer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + /* "cython/interface.pyx":496 * coco_observer_free(self._observer) * @@ -8382,7 +8840,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 529, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -8414,7 +8872,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 531, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -9110,7 +9568,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 567, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 567, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 567, __pyx_L1_error) __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 567, __pyx_L1_error) @@ -9327,6 +9785,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o } else { PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10); } + __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0; } __pyx_pybuffernd__x.diminfo[0].strides = __pyx_pybuffernd__x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__x.diminfo[0].shape = __pyx_pybuffernd__x.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 573, __pyx_L1_error) @@ -9422,7 +9881,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __Pyx_INCREF(((PyObject *)__pyx_v_self->constraint_values)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->constraint_values)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->constraint_values)); - __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 579, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 579, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 579, __pyx_L1_error) @@ -9503,7 +9962,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED s * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -9552,7 +10011,9 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solutio const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -9561,6 +10022,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solutio case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_evaluation)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { @@ -9646,7 +10108,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 610, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 610, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 610, __pyx_L1_error) __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 610, __pyx_L1_error) @@ -9863,6 +10325,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio } else { PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); } + __pyx_t_9 = __pyx_t_10 = __pyx_t_11 = 0; } __pyx_pybuffernd__y.diminfo[0].strides = __pyx_pybuffernd__y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__y.diminfo[0].shape = __pyx_pybuffernd__y.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 616, __pyx_L1_error) @@ -10181,7 +10644,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py * return self * */ - __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_list_of_observers, __pyx_v_observer); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 643, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_list_of_observers, __pyx_v_observer); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 643, __pyx_L1_error) /* "cython/interface.pyx":639 * See also: class `Observer` @@ -10365,6 +10828,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution_proposa const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -10382,6 +10846,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution_proposa } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -10831,7 +11296,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ __Pyx_INCREF(((PyObject *)__pyx_v_self->x_initial)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->x_initial)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->x_initial)); - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 691, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 691, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 691, __pyx_L1_error) @@ -10956,7 +11421,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11is_observed___get__(stru __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_v_self->_list_of_observers; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 702, __pyx_L1_error) + __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); @@ -11830,6 +12295,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17_best_parameter(PyObject const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -11847,6 +12313,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17_best_parameter(PyObject } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -11947,6 +12414,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19free(PyObject *__pyx_v_s const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -11964,6 +12432,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19free(PyObject *__pyx_v_s } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -12135,7 +12604,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; - __Pyx_WriteUnraisable("cocoex.interface.Problem.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); + __Pyx_WriteUnraisable("cocoex.interface.Problem.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); } @@ -12167,6 +12636,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23__call__(PyObject *__pyx const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -12258,7 +12728,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 789, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 789, __pyx_L1_error) __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 789, __pyx_L1_error) @@ -12475,6 +12945,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob } else { PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10); } + __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0; } __pyx_pybuffernd__x.diminfo[0].strides = __pyx_pybuffernd__x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__x.diminfo[0].shape = __pyx_pybuffernd__x.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 795, __pyx_L1_error) @@ -12603,7 +13074,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __Pyx_INCREF(((PyObject *)__pyx_v_self->y_values)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->y_values)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->y_values)); - __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 803, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 803, __pyx_L1_error) @@ -12898,7 +13369,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = PyObject_Length(__pyx_v_substr); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 818, __pyx_L1_error) + __pyx_t_6 = PyObject_Length(__pyx_v_substr); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 818, __pyx_L1_error) __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyNumber_Add(__pyx_v_i, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 818, __pyx_L1_error) @@ -12911,7 +13382,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 818, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 818, __pyx_L1_error) @@ -13008,7 +13479,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru __Pyx_XDECREF(__pyx_r); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parse_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 824, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 824, __pyx_L3_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 824, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_5; @@ -13024,7 +13495,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru */ } __pyx_L3_error:; - __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -13077,14 +13547,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru * return self._parse_id('_f') * except ValueError: */ - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L7_try_return:; - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); @@ -13176,7 +13644,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru __Pyx_XDECREF(__pyx_r); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parse_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 832, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 832, __pyx_L3_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 832, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_5; @@ -13192,7 +13660,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru */ } __pyx_L3_error:; - __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -13245,14 +13712,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru * return self._parse_id('_i') * except ValueError: */ - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L7_try_return:; - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); @@ -13607,7 +14072,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj * 2: 'bi'}.get(self.number_of_objectives, * str(self.number_of_objectives)) */ - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 860, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 860, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_int_1, __pyx_n_u_single) < 0) __PYX_ERR(0, 860, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_int_2, __pyx_n_u_bi) < 0) __PYX_ERR(0, 860, __pyx_L1_error) @@ -13952,7 +14417,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, -2L, NULL, NULL, &__pyx_slice__23, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 879, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, -2L, NULL, NULL, &__pyx_slice__27, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -14119,8 +14584,11 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_33__exit__(PyObject *__pyx const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -14129,11 +14597,13 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_33__exit__(PyObject *__pyx case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_type)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_value)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 889, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--; else { @@ -14236,9 +14706,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L10_try_end; + goto __pyx_L8_try_end; __pyx_L3_error:; - __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -14255,12 +14724,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob goto __pyx_L4_exception_handled; } __pyx_L4_exception_handled:; - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - __pyx_L10_try_end:; + __pyx_L8_try_end:; } /* "cython/interface.pyx":889 @@ -14278,9 +14746,116 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":895 - * pass - * +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_35__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_35__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_34__reduce_cython__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_34__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("cocoex.interface.Problem.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_37__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_37__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_36__setstate_cython__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("cocoex.interface.Problem.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "cython/interface.pyx":895 + * pass + * * def log_level(level=None): # <<<<<<<<<<<<<< * """`log_level(level=None)` return current log level and * set new log level if `level is not None and level`. @@ -14304,6 +14879,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, Py const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -14321,6 +14897,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, Py } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -14380,7 +14957,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v__level); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 903, __pyx_L1_error) + if (unlikely(__pyx_v__level == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(0, 903, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_v__level); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 903, __pyx_L1_error) __pyx_t_3 = __Pyx_PyStr_FromString(coco_set_log_level(__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 903, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; @@ -14408,7 +14989,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":197 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":214 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -14455,7 +15036,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":220 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -14468,7 +15049,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":223 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -14477,7 +15058,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":207 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":224 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -14486,7 +15067,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":226 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -14495,7 +15076,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":228 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -14505,7 +15086,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":212 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -14514,7 +15095,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_copy_shape = 1; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":228 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -14524,7 +15105,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L4; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -14536,7 +15117,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":216 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14550,7 +15131,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":234 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -14561,7 +15142,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L6_bool_binop_done:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":216 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14570,20 +15151,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":235 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 218, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 218, __pyx_L1_error) + __PYX_ERR(2, 235, __pyx_L1_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":216 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14592,7 +15173,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":220 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14606,7 +15187,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":238 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -14617,7 +15198,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L9_bool_binop_done:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":220 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14626,20 +15207,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":239 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< * * info.buf = PyArray_DATA(self) */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 222, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 222, __pyx_L1_error) + __PYX_ERR(2, 239, __pyx_L1_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":220 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14648,7 +15229,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":224 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":241 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -14657,7 +15238,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":225 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":242 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -14666,7 +15247,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":243 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -14676,26 +15257,26 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":246 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. - * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< + * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) # <<<<<<<<<<<<<< * info.shape = info.strides + ndim * for i in range(ndim): */ - __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); + __pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim)))); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":247 * # This is allocated as one block, strides first. - * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) + * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":231 - * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":248 + * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< * info.strides[i] = PyArray_STRIDES(self)[i] @@ -14705,7 +15286,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":249 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -14714,7 +15295,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":250 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -14724,7 +15305,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]); } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":243 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -14734,7 +15315,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L11; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":252 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -14744,7 +15325,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":253 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -14755,7 +15336,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":237 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":254 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -14764,7 +15345,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":238 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":255 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -14773,7 +15354,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":256 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -14782,7 +15363,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":242 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -14791,7 +15372,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":243 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":260 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -14803,7 +15384,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -14812,7 +15393,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":265 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -14830,7 +15411,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":250 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":267 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -14843,7 +15424,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = Py_None; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":265 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -14853,7 +15434,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L14; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":270 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -14869,7 +15450,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":272 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -14879,7 +15460,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":273 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -14889,7 +15470,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":274 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -14909,7 +15490,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":275 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -14926,7 +15507,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L19_bool_binop_done:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":274 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -14935,20 +15516,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":276 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 259, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 259, __pyx_L1_error) + __PYX_ERR(2, 276, __pyx_L1_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":274 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -14957,7 +15538,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":277 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -14969,7 +15550,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"b"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -14980,7 +15561,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"B"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":279 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -14991,7 +15572,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"h"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":280 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -15002,7 +15583,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"H"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":281 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -15013,7 +15594,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"i"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":282 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -15024,7 +15605,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"I"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":283 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -15035,7 +15616,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"l"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":284 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -15046,7 +15627,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"L"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":285 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -15057,7 +15638,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"q"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":286 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -15068,7 +15649,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Q"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":287 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -15079,7 +15660,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"f"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":288 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -15090,7 +15671,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"d"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":289 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -15101,7 +15682,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"g"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":290 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -15112,7 +15693,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zf"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":291 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -15123,7 +15704,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zd"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":275 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":292 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -15134,7 +15715,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zg"); break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":293 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -15146,33 +15727,33 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< * info.format = f * return */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 278, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 278, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 278, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 278, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __PYX_ERR(1, 278, __pyx_L1_error) + __PYX_ERR(2, 295, __pyx_L1_error) break; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":279 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":296 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -15181,17 +15762,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":297 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< * else: - * info.format = stdlib.malloc(_buffer_format_string_len) + * info.format = PyObject_Malloc(_buffer_format_string_len) */ __pyx_r = 0; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":272 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -15200,27 +15781,27 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":299 * return * else: - * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< + * info.format = PyObject_Malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 */ /*else*/ { - __pyx_v_info->format = ((char *)malloc(0xFF)); + __pyx_v_info->format = ((char *)PyObject_Malloc(0xFF)); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":300 * else: - * info.format = stdlib.malloc(_buffer_format_string_len) + * info.format = PyObject_Malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< * offset = 0 * f = _util_dtypestring(descr, info.format + 1, */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":284 - * info.format = stdlib.malloc(_buffer_format_string_len) + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":301 + * info.format = PyObject_Malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< * f = _util_dtypestring(descr, info.format + 1, @@ -15228,17 +15809,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":285 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":302 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< * info.format + _buffer_format_string_len, * &offset) */ - __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(1, 285, __pyx_L1_error) + __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == ((char *)NULL))) __PYX_ERR(2, 302, __pyx_L1_error) __pyx_v_f = __pyx_t_7; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":305 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -15248,7 +15829,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":197 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":214 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -15280,12 +15861,12 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":290 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":307 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< * if PyArray_HASFIELDS(self): - * stdlib.free(info.format) + * PyObject_Free(info.format) */ /* Python wrapper */ @@ -15304,75 +15885,75 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":308 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< - * stdlib.free(info.format) + * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): */ __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":309 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): - * stdlib.free(info.format) # <<<<<<<<<<<<<< + * PyObject_Free(info.format) # <<<<<<<<<<<<<< * if sizeof(npy_intp) != sizeof(Py_ssize_t): - * stdlib.free(info.strides) + * PyObject_Free(info.strides) */ - free(__pyx_v_info->format); + PyObject_Free(__pyx_v_info->format); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":308 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< - * stdlib.free(info.format) + * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":293 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":310 * if PyArray_HASFIELDS(self): - * stdlib.free(info.format) + * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< - * stdlib.free(info.strides) + * PyObject_Free(info.strides) * # info.shape was stored after info.strides in the same block */ __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":294 - * stdlib.free(info.format) + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":311 + * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): - * stdlib.free(info.strides) # <<<<<<<<<<<<<< + * PyObject_Free(info.strides) # <<<<<<<<<<<<<< * # info.shape was stored after info.strides in the same block * */ - free(__pyx_v_info->strides); + PyObject_Free(__pyx_v_info->strides); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":293 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":310 * if PyArray_HASFIELDS(self): - * stdlib.free(info.format) + * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< - * stdlib.free(info.strides) + * PyObject_Free(info.strides) * # info.shape was stored after info.strides in the same block */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":307 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< * if PyArray_HASFIELDS(self): - * stdlib.free(info.format) + * PyObject_Free(info.format) */ /* function exit code */ __Pyx_RefNannyFinishContext(); } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":770 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":788 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -15386,7 +15967,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":789 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -15394,13 +15975,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ * cdef inline object PyArray_MultiIterNew2(a, b): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 771, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":770 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":788 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -15419,7 +16000,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":773 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -15433,7 +16014,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":792 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -15441,13 +16022,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ * cdef inline object PyArray_MultiIterNew3(a, b, c): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 774, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 792, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":773 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -15466,7 +16047,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":776 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -15480,7 +16061,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":795 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -15488,13 +16069,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ * cdef inline object PyArray_MultiIterNew4(a, b, c, d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 777, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":776 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -15513,7 +16094,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":779 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":797 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -15527,7 +16108,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":798 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -15535,13 +16116,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 780, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":779 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":797 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -15560,7 +16141,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":782 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":800 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -15574,21 +16155,21 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< * - * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: + * cdef inline tuple PyDataType_SHAPE(dtype d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 783, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":782 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":800 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -15607,9 +16188,83 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":785 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":803 + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< + * if PyDataType_HASSUBARRAY(d): + * return d.subarray.shape + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); + + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":804 + * + * cdef inline tuple PyDataType_SHAPE(dtype d): + * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< + * return d.subarray.shape + * else: + */ + __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0); + if (__pyx_t_1) { + + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805 + * cdef inline tuple PyDataType_SHAPE(dtype d): + * if PyDataType_HASSUBARRAY(d): + * return d.subarray.shape # <<<<<<<<<<<<<< + * else: + * return () + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape)); + __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape); + goto __pyx_L0; + + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":804 + * + * cdef inline tuple PyDataType_SHAPE(dtype d): + * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< + * return d.subarray.shape + * else: + */ + } + + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":807 + * return d.subarray.shape + * else: + * return () # <<<<<<<<<<<<<< + * + * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_empty_tuple); + __pyx_r = __pyx_empty_tuple; + goto __pyx_L0; + } + + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":803 * return PyArray_MultiIterNew(5, a, b, c, d, e) * + * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< + * if PyDataType_HASSUBARRAY(d): + * return d.subarray.shape + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":809 + * return () + * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< * # Recursive utility function used in __getbuffer__ to get format * # string. The new location in the format string is returned. @@ -15636,7 +16291,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx char *__pyx_t_9; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814 * * cdef dtype child * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -15645,7 +16300,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":815 * cdef dtype child * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -15654,7 +16309,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":818 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -15663,21 +16318,21 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ if (unlikely(__pyx_v_descr->names == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(1, 794, __pyx_L1_error) + __PYX_ERR(2, 818, __pyx_L1_error) } __pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; for (;;) { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 794, __pyx_L1_error) + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(2, 818, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 794, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":819 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -15686,15 +16341,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ if (unlikely(__pyx_v_descr->fields == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 795, __pyx_L1_error) + __PYX_ERR(2, 819, __pyx_L1_error) } - __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 795, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 795, __pyx_L1_error) + if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(2, 819, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":820 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -15711,7 +16366,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(1, 796, __pyx_L1_error) + __PYX_ERR(2, 820, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); @@ -15719,51 +16374,51 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); #else - __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 796, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 796, __pyx_L1_error) + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 796, __pyx_L1_error) + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 820, __pyx_L1_error) } - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(1, 796, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(2, 820, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3)); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":822 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * */ - __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 798, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 798, __pyx_L1_error) + __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 798, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 822, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":823 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< * * if ((child.byteorder == c'>' and little_endian) or */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 799, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 823, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 799, __pyx_L1_error) + __PYX_ERR(2, 823, __pyx_L1_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":822 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -15772,7 +16427,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":825 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -15792,7 +16447,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":826 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -15809,7 +16464,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = __pyx_t_7; __pyx_L7_bool_binop_done:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":825 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -15818,20 +16473,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ if (__pyx_t_6) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":827 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * # One could encode it in the format string and have Cython * # complain instead, BUT: < and > in format strings also imply */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 803, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 803, __pyx_L1_error) + __PYX_ERR(2, 827, __pyx_L1_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":825 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -15840,7 +16495,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":837 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -15848,15 +16503,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * f += 1 */ while (1) { - __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 813, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 837, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 813, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 837, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 813, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 837, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":838 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -15865,7 +16520,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 0x78; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":839 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -15874,7 +16529,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":840 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -15885,7 +16540,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":842 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -15895,7 +16550,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":844 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -15905,19 +16560,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":845 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") */ - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 821, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 845, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":846 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -15927,20 +16582,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":847 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< * * # Until ticket #99 is fixed, use integers to avoid warnings */ - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 823, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(1, 823, __pyx_L1_error) + __PYX_ERR(2, 847, __pyx_L1_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":846 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -15949,252 +16604,252 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":850 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 826, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 826, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 850, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 826, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 850, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 98; goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":851 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 827, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 851, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 827, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 851, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 827, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 851, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 66; goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":852 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 828, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 852, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 828, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 852, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 828, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 852, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x68; goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":853 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 829, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 829, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 853, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 829, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 853, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 72; goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":854 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 830, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 830, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 854, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 830, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 854, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x69; goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":855 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 831, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 831, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 855, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 831, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 855, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 73; goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":856 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 832, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 832, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 856, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 832, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 856, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x6C; goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":857 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 833, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 833, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 857, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 833, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 857, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 76; goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":858 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 834, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 834, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 858, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 834, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 858, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x71; goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":859 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 835, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 835, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 859, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 835, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 859, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 81; goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":860 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 836, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 860, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 836, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 860, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 836, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 860, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x66; goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":861 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 837, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 861, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 837, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 861, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 837, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 861, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x64; goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":862 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 838, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 862, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 838, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 862, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 838, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 862, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x67; goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":863 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 839, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 839, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 863, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 839, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 863, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; @@ -16203,18 +16858,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":864 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 840, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 840, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 864, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 840, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 864, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; @@ -16223,18 +16878,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":865 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 841, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 841, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 865, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 841, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 865, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; @@ -16243,25 +16898,25 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":866 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 842, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 866, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 842, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 866, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 842, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 866, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 79; goto __pyx_L15; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":868 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -16269,23 +16924,23 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * else: */ /*else*/ { - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error) + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 844, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 844, __pyx_L1_error) + __PYX_ERR(2, 868, __pyx_L1_error) } __pyx_L15:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":869 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -16294,7 +16949,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":844 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -16304,7 +16959,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L13; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":873 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -16312,12 +16967,12 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * */ /*else*/ { - __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == NULL)) __PYX_ERR(1, 849, __pyx_L1_error) + __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 873, __pyx_L1_error) __pyx_v_f = __pyx_t_9; } __pyx_L13:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":818 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -16327,7 +16982,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":874 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -16337,8 +16992,8 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":785 - * return PyArray_MultiIterNew(5, a, b, c, d, e) + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":809 + * return () * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< * # Recursive utility function used in __getbuffer__ to get format @@ -16362,7 +17017,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":990 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -16377,7 +17032,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":992 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -16388,7 +17043,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":993 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -16397,7 +17052,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_baseptr = NULL; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":992 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -16407,7 +17062,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a goto __pyx_L3; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":995 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -16417,7 +17072,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a /*else*/ { Py_INCREF(__pyx_v_base); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":996 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -16428,7 +17083,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -16437,7 +17092,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":998 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -16446,7 +17101,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":990 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -16458,7 +17113,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -16472,7 +17127,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1001 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -16482,7 +17137,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1002 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -16494,7 +17149,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = Py_None; goto __pyx_L0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1001 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -16503,7 +17158,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1004 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -16517,7 +17172,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -16532,7 +17187,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":985 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -16553,7 +17208,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_array", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":986 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1010 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -16569,16 +17224,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":987 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1011 * cdef inline int import_array() except -1: * try: * _import_array() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.multiarray failed to import") */ - __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 987, __pyx_L3_error) + __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1011, __pyx_L3_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":986 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1010 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -16589,11 +17244,10 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L10_try_end; + goto __pyx_L8_try_end; __pyx_L3_error:; - __Pyx_PyThreadState_assign - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":988 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1012 * try: * _import_array() * except Exception: # <<<<<<<<<<<<<< @@ -16603,44 +17257,43 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 988, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1012, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":989 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1013 * _import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_umath() except -1: */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 989, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1013, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(1, 989, __pyx_L5_except_error) + __PYX_ERR(2, 1013, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":986 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1010 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< * _import_array() * except Exception: */ - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; - __pyx_L10_try_end:; + __pyx_L8_try_end:; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":985 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -16663,7 +17316,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":991 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1015 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -16684,7 +17337,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_umath", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":992 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1016 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -16700,16 +17353,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":993 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1017 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.umath failed to import") */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 993, __pyx_L3_error) + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1017, __pyx_L3_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":992 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1016 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -16720,11 +17373,10 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L10_try_end; + goto __pyx_L8_try_end; __pyx_L3_error:; - __Pyx_PyThreadState_assign - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":994 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1018 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -16734,44 +17386,43 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 994, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1018, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":995 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1019 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_ufunc() except -1: */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 995, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1019, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(1, 995, __pyx_L5_except_error) + __PYX_ERR(2, 1019, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":992 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1016 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< * _import_umath() * except Exception: */ - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; - __pyx_L10_try_end:; + __pyx_L8_try_end:; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":991 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1015 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -16794,7 +17445,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":997 +/* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1021 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -16815,7 +17466,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":998 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1022 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -16831,16 +17482,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":999 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1023 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.umath failed to import") */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 999, __pyx_L3_error) + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1023, __pyx_L3_error) - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":998 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1022 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -16851,11 +17502,10 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L10_try_end; + goto __pyx_L8_try_end; __pyx_L3_error:; - __Pyx_PyThreadState_assign - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1000 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1024 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -16864,42 +17514,41 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1000, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1024, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1001 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1025 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1001, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1025, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(1, 1001, __pyx_L5_except_error) + __PYX_ERR(2, 1025, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":998 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1022 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< * _import_umath() * except Exception: */ - __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; - __pyx_L10_try_end:; + __pyx_L8_try_end:; } - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":997 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1021 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -16954,8 +17603,8 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Suite(PyTypeObject *t, PyObject static void __pyx_tp_dealloc_6cocoex_9interface_Suite(PyObject *o) { struct __pyx_obj_6cocoex_9interface_Suite *p = (struct __pyx_obj_6cocoex_9interface_Suite *)o; - #if PY_VERSION_HEX >= 0x030400a1 - if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { + #if CYTHON_USE_TP_FINALIZE + if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { if (PyObject_CallFinalizerFromDealloc(o)) return; } #endif @@ -17097,6 +17746,8 @@ static PyMethodDef __pyx_methods_6cocoex_9interface_Suite[] = { {"free", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_13free, METH_NOARGS, __pyx_doc_6cocoex_9interface_5Suite_12free}, {"find_problem_ids", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_17find_problem_ids, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_5Suite_16find_problem_ids}, {"ids", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_19ids, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_5Suite_18ids}, + {"__reduce_cython__", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_30__reduce_cython__, METH_NOARGS, 0}, + {"__setstate_cython__", (PyCFunction)__pyx_pw_6cocoex_9interface_5Suite_32__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; @@ -17213,8 +17864,8 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Observer(PyTypeObject *t, PyObj static void __pyx_tp_dealloc_6cocoex_9interface_Observer(PyObject *o) { struct __pyx_obj_6cocoex_9interface_Observer *p = (struct __pyx_obj_6cocoex_9interface_Observer *)o; - #if PY_VERSION_HEX >= 0x030400a1 - if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { + #if CYTHON_USE_TP_FINALIZE + if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { if (PyObject_CallFinalizerFromDealloc(o)) return; } #endif @@ -17271,6 +17922,8 @@ static PyMethodDef __pyx_methods_6cocoex_9interface_Observer[] = { {"_update_current_observer_global", (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_3_update_current_observer_global, METH_NOARGS, __pyx_doc_6cocoex_9interface_8Observer_2_update_current_observer_global}, {"observe", (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_5observe, METH_O, __pyx_doc_6cocoex_9interface_8Observer_4observe}, {"free", (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_7free, METH_NOARGS, 0}, + {"__reduce_cython__", (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_11__reduce_cython__, METH_NOARGS, 0}, + {"__setstate_cython__", (PyCFunction)__pyx_pw_6cocoex_9interface_8Observer_13__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; @@ -17373,8 +18026,8 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Problem(PyTypeObject *t, CYTHON static void __pyx_tp_dealloc_6cocoex_9interface_Problem(PyObject *o) { struct __pyx_obj_6cocoex_9interface_Problem *p = (struct __pyx_obj_6cocoex_9interface_Problem *)o; - #if PY_VERSION_HEX >= 0x030400a1 - if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { + #if CYTHON_USE_TP_FINALIZE + if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { if (PyObject_CallFinalizerFromDealloc(o)) return; } #endif @@ -17406,22 +18059,22 @@ static int __pyx_tp_traverse_6cocoex_9interface_Problem(PyObject *o, visitproc v int e; struct __pyx_obj_6cocoex_9interface_Problem *p = (struct __pyx_obj_6cocoex_9interface_Problem *)o; if (p->y_values) { - e = (*v)(((PyObject*)p->y_values), a); if (e) return e; + e = (*v)(((PyObject *)p->y_values), a); if (e) return e; } if (p->constraint_values) { - e = (*v)(((PyObject*)p->constraint_values), a); if (e) return e; + e = (*v)(((PyObject *)p->constraint_values), a); if (e) return e; } if (p->x_initial) { - e = (*v)(((PyObject*)p->x_initial), a); if (e) return e; + e = (*v)(((PyObject *)p->x_initial), a); if (e) return e; } if (p->_lower_bounds) { - e = (*v)(((PyObject*)p->_lower_bounds), a); if (e) return e; + e = (*v)(((PyObject *)p->_lower_bounds), a); if (e) return e; } if (p->_upper_bounds) { - e = (*v)(((PyObject*)p->_upper_bounds), a); if (e) return e; + e = (*v)(((PyObject *)p->_upper_bounds), a); if (e) return e; } if (p->_largest_fvalues_of_interest) { - e = (*v)(((PyObject*)p->_largest_fvalues_of_interest), a); if (e) return e; + e = (*v)(((PyObject *)p->_largest_fvalues_of_interest), a); if (e) return e; } if (p->_suite_name) { e = (*v)(p->_suite_name, a); if (e) return e; @@ -17583,6 +18236,8 @@ static PyMethodDef __pyx_methods_6cocoex_9interface_Problem[] = { {"_parse_id", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_25_parse_id, METH_O, __pyx_doc_6cocoex_9interface_7Problem_24_parse_id}, {"__enter__", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_31__enter__, METH_NOARGS, __pyx_doc_6cocoex_9interface_7Problem_30__enter__}, {"__exit__", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_33__exit__, METH_VARARGS|METH_KEYWORDS, 0}, + {"__reduce_cython__", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_35__reduce_cython__, METH_NOARGS, 0}, + {"__setstate_cython__", (PyCFunction)__pyx_pw_6cocoex_9interface_7Problem_37__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; @@ -17709,10 +18364,10 @@ static int __pyx_tp_traverse_6cocoex_9interface___pyx_scope_struct____iter__(PyO e = (*v)(p->__pyx_v_problem, a); if (e) return e; } if (p->__pyx_v_s) { - e = (*v)(((PyObject*)p->__pyx_v_s), a); if (e) return e; + e = (*v)(((PyObject *)p->__pyx_v_s), a); if (e) return e; } if (p->__pyx_v_self) { - e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e; + e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e; } if (p->__pyx_t_0) { e = (*v)(p->__pyx_t_0, a); if (e) return e; @@ -17726,30 +18381,6 @@ static int __pyx_tp_traverse_6cocoex_9interface___pyx_scope_struct____iter__(PyO return 0; } -static int __pyx_tp_clear_6cocoex_9interface___pyx_scope_struct____iter__(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *p = (struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)o; - tmp = ((PyObject*)p->__pyx_v_problem); - p->__pyx_v_problem = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->__pyx_v_s); - p->__pyx_v_s = ((struct __pyx_obj_6cocoex_9interface_Suite *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->__pyx_v_self); - p->__pyx_v_self = ((struct __pyx_obj_6cocoex_9interface_Suite *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->__pyx_t_0); - p->__pyx_t_0 = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->__pyx_t_1); - p->__pyx_t_1 = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->__pyx_t_2); - p->__pyx_t_2 = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - static PyTypeObject __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__ = { PyVarObject_HEAD_INIT(0, 0) "cocoex.interface.__pyx_scope_struct____iter__", /*tp_name*/ @@ -17778,7 +18409,7 @@ static PyTypeObject __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__ = Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_6cocoex_9interface___pyx_scope_struct____iter__, /*tp_traverse*/ - __pyx_tp_clear_6cocoex_9interface___pyx_scope_struct____iter__, /*tp_clear*/ + 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ @@ -17813,17 +18444,31 @@ static PyMethodDef __pyx_methods[] = { }; #if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_interface(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_interface}, + {0, NULL} +}; +#endif + static struct PyModuleDef __pyx_moduledef = { - #if PY_VERSION_HEX < 0x03020000 - { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, - #else PyModuleDef_HEAD_INIT, - #endif "interface", 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #else -1, /* m_size */ + #endif __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else NULL, /* m_reload */ + #endif NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ @@ -17855,16 +18500,15 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_k_Suite_s_s_s_with_d_problem_s_in, sizeof(__pyx_k_Suite_s_s_s_with_d_problem_s_in), 0, 1, 0, 0}, {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, {&__pyx_kp_u_Unkown_benchmark_suite_name_s_K, __pyx_k_Unkown_benchmark_suite_name_s_K, sizeof(__pyx_k_Unkown_benchmark_suite_name_s_K), 0, 1, 0, 0}, - {&__pyx_kp_s_Users_hansen_git_coco_code_expe, __pyx_k_Users_hansen_git_coco_code_expe, sizeof(__pyx_k_Users_hansen_git_coco_code_expe), 0, 0, 1, 0}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, + {&__pyx_kp_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 0}, {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0}, - {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0}, {&__pyx_kp_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 0}, {&__pyx_kp_u__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0, 0}, - {&__pyx_n_u__19, __pyx_k__19, sizeof(__pyx_k__19), 0, 1, 0, 1}, + {&__pyx_kp_u__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 1, 0, 0}, + {&__pyx_kp_u__16, __pyx_k__16, sizeof(__pyx_k__16), 0, 1, 0, 0}, {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0}, - {&__pyx_kp_u__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0, 0}, - {&__pyx_kp_u__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 1, 0, 0}, + {&__pyx_n_u__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 1, 0, 1}, {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, @@ -17880,10 +18524,12 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_u_cannot_deduce_function_id_from_s, __pyx_k_cannot_deduce_function_id_from_s, sizeof(__pyx_k_cannot_deduce_function_id_from_s), 0, 1, 0, 0}, {&__pyx_kp_u_cannot_deduce_instance_id_from_s, __pyx_k_cannot_deduce_instance_id_from_s, sizeof(__pyx_k_cannot_deduce_instance_id_from_s), 0, 1, 0, 0}, {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, {&__pyx_n_s_cocoex_exceptions, __pyx_k_cocoex_exceptions, sizeof(__pyx_k_cocoex_exceptions), 0, 0, 1, 1}, {&__pyx_n_s_cocoex_interface, __pyx_k_cocoex_interface, sizeof(__pyx_k_cocoex_interface), 0, 0, 1, 1}, {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1}, + {&__pyx_kp_s_cython_interface_pyx, __pyx_k_cython_interface_pyx, sizeof(__pyx_k_cython_interface_pyx), 0, 0, 1, 0}, {&__pyx_kp_u_d_d, __pyx_k_d_d, sizeof(__pyx_k_d_d), 0, 1, 0, 0}, {&__pyx_kp_u_d_dimensional, __pyx_k_d_dimensional, sizeof(__pyx_k_d_dimensional), 0, 1, 0, 0}, {&__pyx_n_u_deactivated, __pyx_k_deactivated, sizeof(__pyx_k_deactivated), 0, 1, 0, 1}, @@ -17912,6 +18558,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, {&__pyx_n_s_get_problem, __pyx_k_get_problem, sizeof(__pyx_k_get_problem), 0, 0, 1, 1}, {&__pyx_kp_u_get_problem_self_id_observer_No, __pyx_k_get_problem_self_id_observer_No, sizeof(__pyx_k_get_problem_self_id_observer_No), 0, 1, 0, 0}, + {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, {&__pyx_kp_u_has_never_been_tested_incomment, __pyx_k_has_never_been_tested_incomment, sizeof(__pyx_k_has_never_been_tested_incomment), 0, 1, 0, 0}, {&__pyx_n_u_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 1, 0, 1}, {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, @@ -17937,9 +18584,11 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1}, {&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1}, {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1}, {&__pyx_kp_u_ndarray_is_not_C_contiguous, __pyx_k_ndarray_is_not_C_contiguous, sizeof(__pyx_k_ndarray_is_not_C_contiguous), 0, 1, 0, 0}, {&__pyx_kp_u_ndarray_is_not_Fortran_contiguou, __pyx_k_ndarray_is_not_Fortran_contiguou, sizeof(__pyx_k_ndarray_is_not_Fortran_contiguou), 0, 1, 0, 0}, {&__pyx_n_s_next_problem, __pyx_k_next_problem, sizeof(__pyx_k_next_problem), 0, 0, 1, 1}, + {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0}, {&__pyx_kp_u_not_match_the_number_of_objectiv, __pyx_k_not_match_the_number_of_objectiv, sizeof(__pyx_k_not_match_the_number_of_objectiv), 0, 1, 0, 0}, {&__pyx_kp_u_not_match_the_problem_dimension, __pyx_k_not_match_the_problem_dimension, sizeof(__pyx_k_not_match_the_problem_dimension), 0, 1, 0, 0}, {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1}, @@ -17961,6 +18610,9 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_rand, __pyx_k_rand, sizeof(__pyx_k_rand), 0, 0, 1, 1}, {&__pyx_n_s_random, __pyx_k_random, sizeof(__pyx_k_random), 0, 0, 1, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, + {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, + {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, + {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, {&__pyx_n_s_replace, __pyx_k_replace, sizeof(__pyx_k_replace), 0, 0, 1, 1}, {&__pyx_n_s_reset, __pyx_k_reset, sizeof(__pyx_k_reset), 0, 0, 1, 1}, {&__pyx_n_s_restart_number, __pyx_k_restart_number, sizeof(__pyx_k_restart_number), 0, 0, 1, 1}, @@ -17970,6 +18622,8 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_u_s_id_r, __pyx_k_s_id_r, sizeof(__pyx_k_s_id_r), 0, 1, 0, 0}, {&__pyx_kp_u_s_objective, __pyx_k_s_objective, sizeof(__pyx_k_s_objective), 0, 1, 0, 0}, {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, + {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, + {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, {&__pyx_n_u_single, __pyx_k_single, sizeof(__pyx_k_single), 0, 1, 0, 1}, {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1}, {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, @@ -18006,7 +18660,7 @@ static int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 410, __pyx_L1_error) __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 529, __pyx_L1_error) __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 552, __pyx_L1_error) - __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 989, __pyx_L1_error) + __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1013, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; @@ -18082,6 +18736,25 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7); + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__8); + __Pyx_GIVEREF(__pyx_tuple__8); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__9); + __Pyx_GIVEREF(__pyx_tuple__9); + /* "cython/interface.pyx":450 * def __cinit__(self, name, options): * if isinstance(options, dict): @@ -18089,9 +18762,9 @@ static int __Pyx_InitCachedConstants(void) { * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') */ - __pyx_tuple__10 = PyTuple_Pack(2, __pyx_kp_u__8, __pyx_kp_u__9); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__10); - __Pyx_GIVEREF(__pyx_tuple__10); + __pyx_tuple__12 = PyTuple_Pack(2, __pyx_kp_u__10, __pyx_kp_u__11); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 450, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__12); + __Pyx_GIVEREF(__pyx_tuple__12); /* "cython/interface.pyx":451 * if isinstance(options, dict): @@ -18100,9 +18773,28 @@ static int __Pyx_InitCachedConstants(void) { * s = s.replace(c, '') * options = s */ - __pyx_tuple__15 = PyTuple_Pack(6, __pyx_kp_u_u, __pyx_kp_u_u_2, __pyx_kp_u__11, __pyx_kp_u__12, __pyx_kp_u__13, __pyx_kp_u__14); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 451, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__15); - __Pyx_GIVEREF(__pyx_tuple__15); + __pyx_tuple__17 = PyTuple_Pack(6, __pyx_kp_u_u, __pyx_kp_u_u_2, __pyx_kp_u__13, __pyx_kp_u__14, __pyx_kp_u__15, __pyx_kp_u__16); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 451, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__17); + __Pyx_GIVEREF(__pyx_tuple__17); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__18); + __Pyx_GIVEREF(__pyx_tuple__18); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__19); + __Pyx_GIVEREF(__pyx_tuple__19); /* "cython/interface.pyx":529 * cdef np.npy_intp shape[1] @@ -18111,9 +18803,9 @@ static int __Pyx_InitCachedConstants(void) { * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") */ - __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_u_Problem_already_initialized); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 529, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__16); - __Pyx_GIVEREF(__pyx_tuple__16); + __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_u_Problem_already_initialized); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 529, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__20); + __Pyx_GIVEREF(__pyx_tuple__20); /* "cython/interface.pyx":531 * raise RuntimeError("Problem already initialized") @@ -18122,9 +18814,9 @@ static int __Pyx_InitCachedConstants(void) { * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) */ - __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_u_in_Problem__initialize_problem_p); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 531, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__17); - __Pyx_GIVEREF(__pyx_tuple__17); + __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_u_in_Problem__initialize_problem_p); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 531, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__21); + __Pyx_GIVEREF(__pyx_tuple__21); /* "cython/interface.pyx":586 * for the assessment of the algorithm. @@ -18133,9 +18825,9 @@ static int __Pyx_InitCachedConstants(void) { * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_has_never_been_tested_incomment); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 586, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__18); - __Pyx_GIVEREF(__pyx_tuple__18); + __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u_has_never_been_tested_incomment); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 586, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__22); + __Pyx_GIVEREF(__pyx_tuple__22); /* "cython/interface.pyx":818 * if i < 0: @@ -18144,9 +18836,9 @@ static int __Pyx_InitCachedConstants(void) { * * @property */ - __pyx_tuple__20 = PyTuple_Pack(1, __pyx_n_u__19); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 818, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__20); - __Pyx_GIVEREF(__pyx_tuple__20); + __pyx_tuple__24 = PyTuple_Pack(1, __pyx_n_u__23); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 818, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__24); + __Pyx_GIVEREF(__pyx_tuple__24); /* "cython/interface.pyx":824 * "see __init__.py" @@ -18155,9 +18847,9 @@ static int __Pyx_InitCachedConstants(void) { * except ValueError: * raise ValueError("cannot deduce function id from '%s'" % self.id) */ - __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_u_f); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 824, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__21); - __Pyx_GIVEREF(__pyx_tuple__21); + __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_u_f); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 824, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__25); + __Pyx_GIVEREF(__pyx_tuple__25); /* "cython/interface.pyx":832 * "see __init__.py" @@ -18166,9 +18858,9 @@ static int __Pyx_InitCachedConstants(void) { * except ValueError: * raise ValueError("cannot deduce instance id from '%s'" % self.id) */ - __pyx_tuple__22 = PyTuple_Pack(1, __pyx_n_u_i); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 832, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__22); - __Pyx_GIVEREF(__pyx_tuple__22); + __pyx_tuple__26 = PyTuple_Pack(1, __pyx_n_u_i); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 832, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__26); + __Pyx_GIVEREF(__pyx_tuple__26); /* "cython/interface.pyx":879 * if self.problem is not NULL: @@ -18177,106 +18869,125 @@ static int __Pyx_InitCachedConstants(void) { * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_slice__23 = PySlice_New(__pyx_int_1, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__23)) __PYX_ERR(0, 879, __pyx_L1_error) - __Pyx_GOTREF(__pyx_slice__23); - __Pyx_GIVEREF(__pyx_slice__23); + __pyx_slice__27 = PySlice_New(__pyx_int_1, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__27)) __PYX_ERR(0, 879, __pyx_L1_error) + __Pyx_GOTREF(__pyx_slice__27); + __Pyx_GIVEREF(__pyx_slice__27); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__28); + __Pyx_GIVEREF(__pyx_tuple__28); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__29); + __Pyx_GIVEREF(__pyx_tuple__29); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":235 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) */ - __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 218, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__24); - __Pyx_GIVEREF(__pyx_tuple__24); + __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(2, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__30); + __Pyx_GIVEREF(__pyx_tuple__30); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":239 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< * * info.buf = PyArray_DATA(self) */ - __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 222, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__25); - __Pyx_GIVEREF(__pyx_tuple__25); + __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(2, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__31); + __Pyx_GIVEREF(__pyx_tuple__31); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":276 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" */ - __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 259, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__26); - __Pyx_GIVEREF(__pyx_tuple__26); + __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(2, 276, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__32); + __Pyx_GIVEREF(__pyx_tuple__32); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":823 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< * * if ((child.byteorder == c'>' and little_endian) or */ - __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 799, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__27); - __Pyx_GIVEREF(__pyx_tuple__27); + __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(2, 823, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__33); + __Pyx_GIVEREF(__pyx_tuple__33); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":827 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * # One could encode it in the format string and have Cython * # complain instead, BUT: < and > in format strings also imply */ - __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 803, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__28); - __Pyx_GIVEREF(__pyx_tuple__28); + __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(2, 827, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__34); + __Pyx_GIVEREF(__pyx_tuple__34); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":847 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< * * # Until ticket #99 is fixed, use integers to avoid warnings */ - __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 823, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__29); - __Pyx_GIVEREF(__pyx_tuple__29); + __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(2, 847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__35); + __Pyx_GIVEREF(__pyx_tuple__35); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":989 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1013 * _import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_umath() except -1: */ - __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 989, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__30); - __Pyx_GIVEREF(__pyx_tuple__30); + __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(2, 1013, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__36); + __Pyx_GIVEREF(__pyx_tuple__36); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":995 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1019 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_ufunc() except -1: */ - __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 995, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__31); - __Pyx_GIVEREF(__pyx_tuple__31); + __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(2, 1019, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__37); + __Pyx_GIVEREF(__pyx_tuple__37); - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1001 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1025 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< */ - __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 1001, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__32); - __Pyx_GIVEREF(__pyx_tuple__32); + __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(2, 1025, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__38); + __Pyx_GIVEREF(__pyx_tuple__38); /* "cython/interface.pyx":895 * pass @@ -18285,10 +18996,10 @@ static int __Pyx_InitCachedConstants(void) { * """`log_level(level=None)` return current log level and * set new log level if `level is not None and level`. */ - __pyx_tuple__33 = PyTuple_Pack(2, __pyx_n_s_level, __pyx_n_s_level_2); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 895, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__33); - __Pyx_GIVEREF(__pyx_tuple__33); - __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_hansen_git_coco_code_expe, __pyx_n_s_log_level, 895, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 895, __pyx_L1_error) + __pyx_tuple__39 = PyTuple_Pack(2, __pyx_n_s_level, __pyx_n_s_level_2); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 895, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__39); + __Pyx_GIVEREF(__pyx_tuple__39); + __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_cython_interface_pyx, __pyx_n_s_log_level, 895, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 895, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -18315,12 +19026,56 @@ PyMODINIT_FUNC initinterface(void) #else PyMODINIT_FUNC PyInit_interface(void); /*proto*/ PyMODINIT_FUNC PyInit_interface(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + result = PyDict_SetItemString(moddict, to_name, value); + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) +#endif #endif { PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; + #endif #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); if (!__Pyx_RefNanny) { @@ -18347,6 +19102,9 @@ PyMODINIT_FUNC PyInit_interface(void) #ifdef __Pyx_Generator_USED if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif #ifdef __Pyx_StopAsyncIteration_USED if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif @@ -18358,15 +19116,21 @@ PyMODINIT_FUNC PyInit_interface(void) #endif #endif /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4("interface", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) #if CYTHON_COMPILING_IN_PYPY Py_INCREF(__pyx_b); #endif @@ -18421,10 +19185,12 @@ PyMODINIT_FUNC PyInit_interface(void) #endif if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Suite.tp_dict, __pyx_vtabptr_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 79, __pyx_L1_error) if (PyObject_SetAttrString(__pyx_m, "Suite", (PyObject *)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 79, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 79, __pyx_L1_error) __pyx_ptype_6cocoex_9interface_Suite = &__pyx_type_6cocoex_9interface_Suite; if (PyType_Ready(&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 441, __pyx_L1_error) __pyx_type_6cocoex_9interface_Observer.tp_print = 0; if (PyObject_SetAttrString(__pyx_m, "Observer", (PyObject *)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 441, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 441, __pyx_L1_error) __pyx_ptype_6cocoex_9interface_Observer = &__pyx_type_6cocoex_9interface_Observer; __pyx_vtabptr_6cocoex_9interface_Problem = &__pyx_vtable_6cocoex_9interface_Problem; __pyx_vtable_6cocoex_9interface_Problem._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Problem *, coco_problem_t *, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args))__pyx_f_6cocoex_9interface_7Problem__initialize; @@ -18442,6 +19208,7 @@ PyMODINIT_FUNC PyInit_interface(void) #endif if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Problem.tp_dict, __pyx_vtabptr_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 505, __pyx_L1_error) if (PyObject_SetAttrString(__pyx_m, "Problem", (PyObject *)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 505, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 505, __pyx_L1_error) __pyx_ptype_6cocoex_9interface_Problem = &__pyx_type_6cocoex_9interface_Problem; if (PyType_Ready(&__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__) < 0) __PYX_ERR(0, 414, __pyx_L1_error) __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_print = 0; @@ -18453,12 +19220,12 @@ PyMODINIT_FUNC PyInit_interface(void) #else sizeof(PyHeapTypeObject), #endif - 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(2, 9, __pyx_L1_error) - __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(1, 155, __pyx_L1_error) - __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(1, 168, __pyx_L1_error) - __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(1, 172, __pyx_L1_error) - __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(1, 181, __pyx_L1_error) - __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(1, 861, __pyx_L1_error) + 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(3, 9, __pyx_L1_error) + __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(2, 163, __pyx_L1_error) + __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(2, 185, __pyx_L1_error) + __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(2, 189, __pyx_L1_error) + __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(2, 198, __pyx_L1_error) + __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(2, 885, __pyx_L1_error) /*--- Variable import code ---*/ /*--- Function import code ---*/ /*--- Execution code ---*/ @@ -18583,7 +19350,7 @@ PyMODINIT_FUNC PyInit_interface(void) * * cdef extern from "coco.h": */ - __pyx_t_3 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(0, 18, __pyx_L1_error) + __pyx_t_3 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 18, __pyx_L1_error) /* "cython/interface.pyx":895 * pass @@ -18602,7 +19369,7 @@ PyMODINIT_FUNC PyInit_interface(void) * #cython: c_string_type=str, c_string_encoding=ascii * from __future__ import absolute_import, division, print_function, unicode_literals */ - __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_line_191, __pyx_kp_u_get_problem_self_id_observer_No) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_by_function_di, __pyx_kp_u_returns_a_Problem_instance_by_de) < 0) __PYX_ERR(0, 1, __pyx_L1_error) @@ -18611,7 +19378,7 @@ PyMODINIT_FUNC PyInit_interface(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "../../../../../anaconda/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":997 + /* "../../../../../../../anaconda2/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1021 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18627,7 +19394,7 @@ PyMODINIT_FUNC PyInit_interface(void) __Pyx_XDECREF(__pyx_t_2); if (__pyx_m) { if (__pyx_d) { - __Pyx_AddTraceback("init cocoex.interface", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("init cocoex.interface", 0, __pyx_lineno, __pyx_filename); } Py_DECREF(__pyx_m); __pyx_m = 0; } else if (!PyErr_Occurred()) { @@ -18635,10 +19402,12 @@ PyMODINIT_FUNC PyInit_interface(void) } __pyx_L0:; __Pyx_RefNannyFinishContext(); - #if PY_MAJOR_VERSION < 3 - return; - #else + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 return __pyx_m; + #else + return; #endif } @@ -18834,11 +19603,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject "raise: exception class must be a subclass of BaseException"); goto bad; } -#if PY_VERSION_HEX >= 0x03030000 if (cause) { -#else - if (cause && cause != Py_None) { -#endif PyObject *fixed_cause; if (cause == Py_None) { fixed_cause = NULL; @@ -18866,7 +19631,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject PyErr_Restore(tmp_type, tmp_value, tb); Py_XDECREF(tmp_tb); #else - PyThreadState *tstate = PyThreadState_GET(); + PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject* tmp_tb = tstate->curexc_traceback; if (tb != tmp_tb) { Py_INCREF(tb); @@ -18882,7 +19647,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject #endif /* RaiseArgTupleInvalid */ - static void __Pyx_RaiseArgtupleInvalid( +static void __Pyx_RaiseArgtupleInvalid( const char* func_name, int exact, Py_ssize_t num_min, @@ -18908,7 +19673,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject } /* RaiseDoubleKeywords */ - static void __Pyx_RaiseDoubleKeywordsError( +static void __Pyx_RaiseDoubleKeywordsError( const char* func_name, PyObject* kw_name) { @@ -18922,7 +19687,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject } /* ParseKeywords */ - static int __Pyx_ParseOptionalKeywords( +static int __Pyx_ParseOptionalKeywords( PyObject *kwds, PyObject **argnames[], PyObject *kwds2, @@ -19024,30 +19789,35 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject } /* PyCFunctionFastCall */ - #if CYTHON_FAST_PYCCALL +#if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { PyCFunctionObject *func = (PyCFunctionObject*)func_obj; PyCFunction meth = PyCFunction_GET_FUNCTION(func); PyObject *self = PyCFunction_GET_SELF(func); + int flags = PyCFunction_GET_FLAGS(func); assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))); + assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); assert(nargs >= 0); assert(nargs == 0 || args != NULL); /* _PyCFunction_FastCallDict() must not be called with an exception set, because it may clear it (directly or indirectly) and so the caller loses its exception */ assert(!PyErr_Occurred()); - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs, NULL); + if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { + return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); + } else { + return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); + } } -#endif // CYTHON_FAST_PYCCALL +#endif /* PyFunctionFastCall */ - #if CYTHON_FAST_PYCALL +#if CYTHON_FAST_PYCALL #include "frameobject.h" static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, PyObject *globals) { PyFrameObject *f; - PyThreadState *tstate = PyThreadState_GET(); + PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject **fastlocals; Py_ssize_t i; PyObject *result; @@ -19158,11 +19928,11 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_LeaveRecursiveCall(); return result; } -#endif // CPython < 3.6 -#endif // CYTHON_FAST_PYCALL +#endif +#endif /* PyObjectCallMethO */ - #if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { PyObject *self, *result; PyCFunction cfunc; @@ -19182,7 +19952,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject #endif /* PyObjectCallOneArg */ - #if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_COMPILING_IN_CPYTHON static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_New(1); @@ -19199,11 +19969,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec return __Pyx_PyFunction_FastCall(func, &arg, 1); } #endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { -#else if (likely(PyCFunction_Check(func))) { -#endif if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { return __Pyx_PyObject_CallMethO(func, arg); #if CYTHON_FAST_PYCCALL @@ -19226,7 +19992,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec #endif /* PyObjectCallNoArg */ - #if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { @@ -19234,7 +20000,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { } #endif #ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { + if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { #else if (likely(PyCFunction_Check(func))) { #endif @@ -19247,7 +20013,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { #endif /* GetModuleGlobalName */ - static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { + static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS result = PyDict_GetItem(__pyx_d, name); @@ -19265,23 +20031,38 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { } /* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE + #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if PY_VERSION_HEX >= 0x030700A2 + *type = tstate->exc_state.exc_type; + *value = tstate->exc_state.exc_value; + *tb = tstate->exc_state.exc_traceback; + #else *type = tstate->exc_type; *value = tstate->exc_value; *tb = tstate->exc_traceback; + #endif Py_XINCREF(*type); Py_XINCREF(*value); Py_XINCREF(*tb); } static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030700A2 + tmp_type = tstate->exc_state.exc_type; + tmp_value = tstate->exc_state.exc_value; + tmp_tb = tstate->exc_state.exc_traceback; + tstate->exc_state.exc_type = type; + tstate->exc_state.exc_value = value; + tstate->exc_state.exc_traceback = tb; + #else tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = type; tstate->exc_value = value; tstate->exc_traceback = tb; + #endif Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); @@ -19289,7 +20070,7 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject #endif /* GetException */ - #if CYTHON_FAST_THREAD_STATE + #if CYTHON_FAST_THREAD_STATE static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { @@ -19326,12 +20107,21 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) *value = local_value; *tb = local_tb; #if CYTHON_FAST_THREAD_STATE + #if PY_VERSION_HEX >= 0x030700A2 + tmp_type = tstate->exc_state.exc_type; + tmp_value = tstate->exc_state.exc_value; + tmp_tb = tstate->exc_state.exc_traceback; + tstate->exc_state.exc_type = local_type; + tstate->exc_state.exc_value = local_value; + tstate->exc_state.exc_traceback = local_tb; + #else tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = local_type; tstate->exc_value = local_value; tstate->exc_traceback = local_tb; + #endif Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); @@ -19350,10 +20140,8 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) } /* PyObjectCallMethod1 */ - static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { - PyObject *method, *result = NULL; - method = __Pyx_PyObject_GetAttrStr(obj, method_name); - if (unlikely(!method)) goto done; + static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + PyObject *result = NULL; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(method))) { PyObject *self = PyMethod_GET_SELF(method); @@ -19381,7 +20169,6 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) Py_INCREF(arg); PyTuple_SET_ITEM(args, 1, arg); Py_INCREF(function); - Py_DECREF(method); method = NULL; result = __Pyx_PyObject_Call(function, args, NULL); Py_DECREF(args); Py_DECREF(function); @@ -19390,13 +20177,22 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) } #endif result = __Pyx_PyObject_CallOneArg(method, arg); + goto done; +done: + return result; +} +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { + PyObject *method, *result = NULL; + method = __Pyx_PyObject_GetAttrStr(obj, method_name); + if (unlikely(!method)) goto done; + result = __Pyx__PyObject_CallMethod1(method, arg); done: Py_XDECREF(method); return result; } /* append */ - static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { + static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { if (likely(PyList_CheckExact(L))) { if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; } else { @@ -19409,7 +20205,7 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) } /* PyIntBinop */ - #if !CYTHON_COMPILING_IN_PYPY + #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { @@ -19525,7 +20321,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED #endif /* KeywordStringCheck */ - static CYTHON_INLINE int __Pyx_CheckKeywordStrings( + static int __Pyx_CheckKeywordStrings( PyObject *kwdict, const char* function_name, int kw_allowed) @@ -19539,7 +20335,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED #else while (PyDict_Next(kwdict, &pos, &key, 0)) { #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key))) + if (unlikely(!PyString_Check(key))) #endif if (unlikely(!PyUnicode_Check(key))) goto invalid_keyword_type; @@ -19565,7 +20361,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED } /* GetItemInt */ - static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; if (!j) return NULL; r = PyObject_GetItem(o, j); @@ -19576,9 +20372,12 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_ CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o); - if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, i); + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, wrapped_i); Py_INCREF(r); return r; } @@ -19591,9 +20390,12 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, i); + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); Py_INCREF(r); return r; } @@ -19646,25 +20448,49 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, } /* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE + #if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; icurexc_type; if (exc_type == err) return 1; if (unlikely(!exc_type)) return 0; - return PyErr_GivenExceptionMatches(exc_type, err); + if (unlikely(PyTuple_Check(err))) + return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); } #endif /* SwapException */ - #if CYTHON_FAST_THREAD_STATE + #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030700A2 + tmp_type = tstate->exc_state.exc_type; + tmp_value = tstate->exc_state.exc_value; + tmp_tb = tstate->exc_state.exc_traceback; + tstate->exc_state.exc_type = *type; + tstate->exc_state.exc_value = *value; + tstate->exc_state.exc_traceback = *tb; + #else tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = *type; tstate->exc_value = *value; tstate->exc_traceback = *tb; + #endif *type = tmp_type; *value = tmp_value; *tb = tmp_tb; @@ -19681,12 +20507,12 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, #endif /* ExtTypeTest */ - static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { if (unlikely(!type)) { PyErr_SetString(PyExc_SystemError, "Missing type object"); return 0; } - if (likely(PyObject_TypeCheck(obj, type))) + if (likely(__Pyx_TypeCheck(obj, type))) return 1; PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", Py_TYPE(obj)->tp_name, type->tp_name); @@ -19694,7 +20520,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, } /* SetItemInt */ - static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { + static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { int r; if (!j) return -1; r = PyObject_SetItem(o, j, v); @@ -19741,12 +20567,19 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); } -/* BufferFormatCheck */ - static CYTHON_INLINE int __Pyx_IsLittleEndian(void) { - unsigned int n = 1; - return *(unsigned char*)(&n) != 0; +/* IsLittleEndian */ + static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) +{ + union { + uint32_t u32; + uint8_t u8[4]; + } S; + S.u32 = 0x01020304; + return S.u8[0] == 4; } -static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, + +/* BufferFormatCheck */ + static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, __Pyx_BufFmt_StackElem* stack, __Pyx_TypeInfo* type) { stack[0].field = &ctx->root; @@ -20067,7 +20900,7 @@ static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) { ctx->is_complex = 0; return 0; } -static CYTHON_INLINE PyObject * +static PyObject * __pyx_buffmt_parse_array(__Pyx_BufFmt_Context* ctx, const char** tsp) { const char *ts = *tsp; @@ -20132,7 +20965,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha ++ts; break; case '<': - if (!__Pyx_IsLittleEndian()) { + if (!__Pyx_Is_Little_Endian()) { PyErr_SetString(PyExc_ValueError, "Little-endian buffer not supported on big-endian compiler"); return NULL; } @@ -20141,7 +20974,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha break; case '>': case '!': - if (__Pyx_IsLittleEndian()) { + if (__Pyx_Is_Little_Endian()) { PyErr_SetString(PyExc_ValueError, "Big-endian buffer not supported on little-endian compiler"); return NULL; } @@ -20244,24 +21077,30 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha } } } -static CYTHON_INLINE void __Pyx_ZeroBuffer(Py_buffer* buf) { + +/* BufferGetAndValidate */ + static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { + if (unlikely(info->buf == NULL)) return; + if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; + __Pyx_ReleaseBuffer(info); +} +static void __Pyx_ZeroBuffer(Py_buffer* buf) { buf->buf = NULL; buf->obj = NULL; buf->strides = __Pyx_zeros; buf->shape = __Pyx_zeros; buf->suboffsets = __Pyx_minusones; } -static CYTHON_INLINE int __Pyx_GetBufferAndValidate( +static int __Pyx__GetBufferAndValidate( Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack) { - if (obj == Py_None || obj == NULL) { + buf->buf = NULL; + if (unlikely(__Pyx_GetBuffer(obj, buf, flags) == -1)) { __Pyx_ZeroBuffer(buf); - return 0; + return -1; } - buf->buf = NULL; - if (__Pyx_GetBuffer(obj, buf, flags) == -1) goto fail; - if (buf->ndim != nd) { + if (unlikely(buf->ndim != nd)) { PyErr_Format(PyExc_ValueError, "Buffer has wrong number of dimensions (expected %d, got %d)", nd, buf->ndim); @@ -20272,7 +21111,7 @@ static CYTHON_INLINE int __Pyx_GetBufferAndValidate( __Pyx_BufFmt_Init(&ctx, stack, dtype); if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail; } - if ((unsigned)buf->itemsize != dtype->size) { + if (unlikely((unsigned)buf->itemsize != dtype->size)) { PyErr_Format(PyExc_ValueError, "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "d byte%s) does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "d byte%s)", buf->itemsize, (buf->itemsize > 1) ? "s" : "", @@ -20282,23 +21121,18 @@ static CYTHON_INLINE int __Pyx_GetBufferAndValidate( if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones; return 0; fail:; - __Pyx_ZeroBuffer(buf); + __Pyx_SafeReleaseBuffer(buf); return -1; } -static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { - if (info->buf == NULL) return; - if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; - __Pyx_ReleaseBuffer(info); -} /* BufferFallbackError */ - static void __Pyx_RaiseBufferFallbackError(void) { + static void __Pyx_RaiseBufferFallbackError(void) { PyErr_SetString(PyExc_ValueError, "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); } /* PyIntBinop */ - #if !CYTHON_COMPILING_IN_PYPY + #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { @@ -20414,13 +21248,13 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U #endif /* PyIntBinop */ - #if !CYTHON_COMPILING_IN_PYPY + #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { const long b = intval; long a = PyInt_AS_LONG(op1); - if (8 * sizeof(long) <= 53 || likely(labs(a) <= (1L << 53))) { + if (8 * sizeof(long) <= 53 || likely(labs(a) <= ((PY_LONG_LONG)1 << 53))) { return PyFloat_FromDouble((double)a / (double)b); } return PyInt_Type.tp_as_number->nb_true_divide(op1, op2); @@ -20470,7 +21304,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON default: return PyLong_Type.tp_as_number->nb_true_divide(op1, op2); } } - if ((8 * sizeof(long) <= 53 || likely(labs(a) <= (1L << 53))) + if ((8 * sizeof(long) <= 53 || likely(labs(a) <= ((PY_LONG_LONG)1 << 53))) || __Pyx_sst_abs(size) <= 52 / PyLong_SHIFT) { return PyFloat_FromDouble((double)a / (double)b); } @@ -20493,7 +21327,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON #endif /* BytesEquals */ - static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { + static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY return PyObject_RichCompareBool(s1, s2, equals); #else @@ -20511,7 +21345,16 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON } else if (length == 1) { return (equals == Py_EQ); } else { - int result = memcmp(ps1, ps2, (size_t)length); + int result; +#if CYTHON_USE_UNICODE_INTERNALS + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); return (equals == Py_EQ) ? (result == 0) : (result != 0); } } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { @@ -20531,7 +21374,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON } /* UnicodeEquals */ - static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { + static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY return PyObject_RichCompareBool(s1, s2, equals); #else @@ -20571,6 +21414,21 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { goto return_ne; } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + #if CYTHON_PEP393_ENABLED + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + #else + hash1 = ((PyUnicodeObject*)s1)->hash; + hash2 = ((PyUnicodeObject*)s2)->hash; + #endif + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif kind = __Pyx_PyUnicode_KIND(s1); if (kind != __Pyx_PyUnicode_KIND(s2)) { goto return_ne; @@ -20615,7 +21473,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON } /* WriteUnraisableException */ - static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, + static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, int full_traceback, CYTHON_UNUSED int nogil) { PyObject *old_exc, *old_val, *old_tb; @@ -20657,7 +21515,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON } /* SliceObject */ - static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, + static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) { @@ -20754,7 +21612,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON } /* dict_getitem_default */ - static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) { + static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) { PyObject* value; #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY value = PyDict_GetItemWithError(d, key); @@ -20782,7 +21640,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON } /* PyIntBinop */ - #if !CYTHON_COMPILING_IN_PYPY + #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { if (op1 == op2) { Py_RETURN_TRUE; @@ -20867,25 +21725,25 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED #endif /* RaiseTooManyValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { PyErr_Format(PyExc_ValueError, "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); } /* RaiseNeedMoreValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { PyErr_Format(PyExc_ValueError, "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", index, (index == 1) ? "" : "s"); } /* RaiseNoneIterError */ - static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { + static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); } /* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { + static int __Pyx_SetVtable(PyObject *dict, void *vtable) { #if PY_VERSION_HEX >= 0x02070000 PyObject *ob = PyCapsule_New(vtable, 0, 0); #else @@ -20902,14 +21760,90 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED return -1; } +/* SetupReduce */ + static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { + int ret; + PyObject *name_attr; + name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2); + if (likely(name_attr)) { + ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); + } else { + ret = -1; + } + if (unlikely(ret < 0)) { + PyErr_Clear(); + ret = 0; + } + Py_XDECREF(name_attr); + return ret; +} +static int __Pyx_setup_reduce(PyObject* type_obj) { + int ret = 0; + PyObject *object_reduce = NULL; + PyObject *object_reduce_ex = NULL; + PyObject *reduce = NULL; + PyObject *reduce_ex = NULL; + PyObject *reduce_cython = NULL; + PyObject *setstate = NULL; + PyObject *setstate_cython = NULL; +#if CYTHON_USE_PYTYPE_LOOKUP + if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto GOOD; +#else + if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto GOOD; +#endif +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto BAD; +#else + object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto BAD; +#endif + reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto BAD; + if (reduce_ex == object_reduce_ex) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto BAD; +#else + object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto BAD; +#endif + reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto BAD; + if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { + reduce_cython = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_cython); if (unlikely(!reduce_cython)) goto BAD; + ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto BAD; + ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto BAD; + setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate); + if (!setstate) PyErr_Clear(); + if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { + setstate_cython = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate_cython); if (unlikely(!setstate_cython)) goto BAD; + ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto BAD; + ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto BAD; + } + PyType_Modified((PyTypeObject*)type_obj); + } + } + goto GOOD; +BAD: + if (!PyErr_Occurred()) + PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name); + ret = -1; +GOOD: +#if !CYTHON_USE_PYTYPE_LOOKUP + Py_XDECREF(object_reduce); + Py_XDECREF(object_reduce_ex); +#endif + Py_XDECREF(reduce); + Py_XDECREF(reduce_ex); + Py_XDECREF(reduce_cython); + Py_XDECREF(setstate); + Py_XDECREF(setstate_cython); + return ret; +} + /* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { PyObject *empty_list = 0; PyObject *module = 0; PyObject *global_dict = 0; PyObject *empty_dict = 0; PyObject *list; - #if PY_VERSION_HEX < 0x03030000 + #if PY_MAJOR_VERSION < 3 PyObject *py_import; py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); if (!py_import) @@ -20933,17 +21867,8 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED #if PY_MAJOR_VERSION >= 3 if (level == -1) { if (strchr(__Pyx_MODULE_NAME, '.')) { - #if PY_VERSION_HEX < 0x03030000 - PyObject *py_level = PyInt_FromLong(1); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else module = PyImport_ImportModuleLevelObject( name, global_dict, empty_dict, list, 1); - #endif if (!module) { if (!PyErr_ExceptionMatches(PyExc_ImportError)) goto bad; @@ -20954,7 +21879,7 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED } #endif if (!module) { - #if PY_VERSION_HEX < 0x03030000 + #if PY_MAJOR_VERSION < 3 PyObject *py_level = PyInt_FromLong(level); if (!py_level) goto bad; @@ -20968,7 +21893,7 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED } } bad: - #if PY_VERSION_HEX < 0x03030000 + #if PY_MAJOR_VERSION < 3 Py_XDECREF(py_import); #endif Py_XDECREF(empty_list); @@ -20977,7 +21902,7 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED } /* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Format(PyExc_ImportError, @@ -20990,8 +21915,45 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED return value; } +/* CLineInTraceback */ + #ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + use_cline = PyDict_GetItem(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (PyObject_Not(use_cline) != 0) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + /* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; @@ -21071,7 +22033,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { } /* AddTraceback */ - #include "compile.h" + #include "compile.h" #include "frameobject.h" #include "traceback.h" static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( @@ -21130,18 +22092,22 @@ static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; - py_code = __pyx_find_code_object(c_line ? c_line : py_line); + PyThreadState *tstate = __Pyx_PyThreadState_Current; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); if (!py_code) { py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? c_line : py_line, py_code); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); } py_frame = PyFrame_New( - PyThreadState_GET(), /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; __Pyx_PyFrame_SetLineNumber(py_frame, py_line); @@ -21154,7 +22120,7 @@ static void __Pyx_AddTraceback(const char *funcname, int c_line, #if PY_MAJOR_VERSION < 3 static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) { if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags); - if (PyObject_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) return __pyx_pw_5numpy_7ndarray_1__getbuffer__(obj, view, flags); + if (__Pyx_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) return __pyx_pw_5numpy_7ndarray_1__getbuffer__(obj, view, flags); PyErr_Format(PyExc_TypeError, "'%.200s' does not have the buffer interface", Py_TYPE(obj)->tp_name); return -1; } @@ -21165,15 +22131,16 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { PyBuffer_Release(view); return; } - if (PyObject_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) { __pyx_pw_5numpy_7ndarray_3__releasebuffer__(obj, view); return; } - Py_DECREF(obj); + if ((0)) {} + else if (__Pyx_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) __pyx_pw_5numpy_7ndarray_3__releasebuffer__(obj, view); view->obj = NULL; + Py_DECREF(obj); } #endif - /* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + /* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) @@ -21195,7 +22162,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { @@ -21226,7 +22193,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { @@ -21257,7 +22224,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* Declarations */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { return ::std::complex< float >(x, y); @@ -21277,7 +22244,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* Arithmetic */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #else static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { return (a.real == b.real) && (a.imag == b.imag); @@ -21412,7 +22379,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* Declarations */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { return ::std::complex< double >(x, y); @@ -21432,7 +22399,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* Arithmetic */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #else static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { return (a.real == b.real) && (a.imag == b.imag); @@ -21567,7 +22534,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) { + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) { const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { @@ -21598,7 +22565,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntFromPy */ - static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { + static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { const size_t neg_one = (size_t) -1, const_zero = (size_t) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 @@ -21787,7 +22754,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 @@ -21976,7 +22943,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 @@ -22164,8 +23131,80 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { return (long) -1; } +/* FastTypeChecks */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = a->tp_base; + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; + if (!res) { + res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } + return res; +} +#endif +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { + if (likely(err == exc_type)) return 1; + if (likely(PyExceptionClass_Check(err))) { + return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); + } + return PyErr_GivenExceptionMatches(err, exc_type); +} +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { + if (likely(err == exc_type1 || err == exc_type2)) return 1; + if (likely(PyExceptionClass_Check(err))) { + return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); + } + return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); +} +#endif + /* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { PyObject* fake_module; PyTypeObject* cached_type = NULL; fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); @@ -22204,18 +23243,12 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CoroutineBase */ - #include + #include #include -static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); -static PyObject *__Pyx_Coroutine_Close(PyObject *self); -static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); #define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) -#if 1 || PY_VERSION_HEX < 0x030300B0 -static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { +static int __Pyx_PyGen__FetchStopIterationValue(CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject **pvalue) { PyObject *et, *ev, *tb; PyObject *value = NULL; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign __Pyx_ErrFetch(&et, &ev, &tb); if (!et) { Py_XDECREF(tb); @@ -22250,7 +23283,7 @@ static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { } Py_DECREF(ev); } - else if (!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { + else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { value = ev; } if (likely(value)) { @@ -22259,7 +23292,7 @@ static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { *pvalue = value; return 0; } - } else if (!PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { + } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { __Pyx_ErrRestore(et, ev, tb); return -1; } @@ -22292,7 +23325,6 @@ static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { *pvalue = value; return 0; } -#endif static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__pyx_CoroutineObject *self) { PyObject *exc_type = self->exc_type; @@ -22305,72 +23337,121 @@ void __Pyx_Coroutine_ExceptionClear(__pyx_CoroutineObject *self) { Py_XDECREF(exc_value); Py_XDECREF(exc_traceback); } -static CYTHON_INLINE -int __Pyx_Coroutine_CheckRunning(__pyx_CoroutineObject *gen) { - if (unlikely(gen->is_running)) { - PyErr_SetString(PyExc_ValueError, - "generator already executing"); - return 1; +#define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyRunningError(CYTHON_UNUSED __pyx_CoroutineObject *gen) { + const char *msg; + if (0) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_CheckExact((PyObject*)gen)) { + msg = "coroutine already executing"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) { + msg = "async generator already executing"; + #endif + } else { + msg = "generator already executing"; } - return 0; + PyErr_SetString(PyExc_ValueError, msg); } -static CYTHON_INLINE -PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value) { - PyObject *retval; +#define __Pyx_Coroutine_NotStartedError(gen) (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_NotStartedError(CYTHON_UNUSED PyObject *gen) { + const char *msg; + if (0) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_CheckExact(gen)) { + msg = "can't send non-None value to a just-started coroutine"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(gen)) { + msg = "can't send non-None value to a just-started async generator"; + #endif + } else { + msg = "can't send non-None value to a just-started generator"; + } + PyErr_SetString(PyExc_TypeError, msg); +} +#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyTerminatedError(CYTHON_UNUSED PyObject *gen, PyObject *value, CYTHON_UNUSED int closing) { + #ifdef __Pyx_Coroutine_USED + if (!closing && __Pyx_Coroutine_CheckExact(gen)) { + PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); + } else + #endif + if (value) { + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration); + else + #endif + PyErr_SetNone(PyExc_StopIteration); + } +} +static +PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) { __Pyx_PyThreadState_declare + PyThreadState *tstate; + PyObject *retval; assert(!self->is_running); if (unlikely(self->resume_label == 0)) { if (unlikely(value && value != Py_None)) { - PyErr_SetString(PyExc_TypeError, - "can't send non-None value to a " - "just-started generator"); - return NULL; + return __Pyx_Coroutine_NotStartedError((PyObject*)self); } } if (unlikely(self->resume_label == -1)) { - PyErr_SetNone(PyExc_StopIteration); - return NULL; + return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing); } +#if CYTHON_FAST_THREAD_STATE __Pyx_PyThreadState_assign - if (value) { + tstate = __pyx_tstate; +#else + tstate = __Pyx_PyThreadState_Current; +#endif + if (self->exc_type) { #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON #else if (self->exc_traceback) { PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; PyFrameObject *f = tb->tb_frame; - Py_XINCREF(__pyx_tstate->frame); + Py_XINCREF(tstate->frame); assert(f->f_back == NULL); - f->f_back = __pyx_tstate->frame; + f->f_back = tstate->frame; } #endif __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value, &self->exc_traceback); } else { __Pyx_Coroutine_ExceptionClear(self); + __Pyx_ExceptionSave(&self->exc_type, &self->exc_value, &self->exc_traceback); } self->is_running = 1; - retval = self->body((PyObject *) self, value); + retval = self->body((PyObject *) self, tstate, value); self->is_running = 0; - if (retval) { - __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value, - &self->exc_traceback); + return retval; +} +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__pyx_CoroutineObject *self) { + if (likely(self->exc_traceback)) { #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON #else - if (self->exc_traceback) { - PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; - PyFrameObject *f = tb->tb_frame; - Py_CLEAR(f->f_back); - } + PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; + PyFrameObject *f = tb->tb_frame; + Py_CLEAR(f->f_back); #endif - } else { - __Pyx_Coroutine_ExceptionClear(self); } - return retval; } static CYTHON_INLINE -PyObject *__Pyx_Coroutine_MethodReturn(PyObject *retval) { - if (unlikely(!retval && !PyErr_Occurred())) { - PyErr_SetNone(PyExc_StopIteration); +PyObject *__Pyx_Coroutine_MethodReturn(CYTHON_UNUSED PyObject* gen, PyObject *retval) { + if (unlikely(!retval)) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (!__Pyx_PyErr_Occurred()) { + PyObject *exc = PyExc_StopIteration; + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + exc = __Pyx_PyExc_StopAsyncIteration; + #endif + __Pyx_PyErr_SetNone(exc); + } } return retval; } @@ -22379,8 +23460,8 @@ PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { PyObject *ret; PyObject *val = NULL; __Pyx_Coroutine_Undelegate(gen); - __Pyx_PyGen_FetchStopIterationValue(&val); - ret = __Pyx_Coroutine_SendEx(gen, val); + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val); + ret = __Pyx_Coroutine_SendEx(gen, val, 0); Py_XDECREF(val); return ret; } @@ -22388,8 +23469,8 @@ static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { PyObject *retval; __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; PyObject *yf = gen->yieldfrom; - if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) - return NULL; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); if (yf) { PyObject *ret; gen->is_running = 1; @@ -22403,6 +23484,21 @@ static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { ret = __Pyx_Coroutine_Send(yf, value); } else #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + ret = __Pyx_async_gen_asend_send(yf, value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = _PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyCoro_CheckExact(yf)) { + ret = _PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif { if (value == Py_None) ret = Py_TYPE(yf)->tp_iternext(yf); @@ -22415,9 +23511,9 @@ static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { } retval = __Pyx_Coroutine_FinishDelegation(gen); } else { - retval = __Pyx_Coroutine_SendEx(gen, value); + retval = __Pyx_Coroutine_SendEx(gen, value, 0); } - return __Pyx_Coroutine_MethodReturn(retval); + return __Pyx_Coroutine_MethodReturn(self, retval); } static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { PyObject *retval = NULL; @@ -22435,6 +23531,19 @@ static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { if (!retval) return -1; } else + if (__Pyx_CoroutineAwait_CheckExact(yf)) { + retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf); + if (!retval) + return -1; + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + retval = __Pyx_async_gen_asend_close(yf, NULL); + } else + if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) { + retval = __Pyx_async_gen_athrow_close(yf, NULL); + } else #endif { PyObject *meth; @@ -22459,8 +23568,8 @@ static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { static PyObject *__Pyx_Generator_Next(PyObject *self) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; PyObject *yf = gen->yieldfrom; - if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) - return NULL; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); if (yf) { PyObject *ret; gen->is_running = 1; @@ -22468,6 +23577,11 @@ static PyObject *__Pyx_Generator_Next(PyObject *self) { if (__Pyx_Generator_CheckExact(yf)) { ret = __Pyx_Generator_Next(yf); } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) + if (PyGen_CheckExact(yf)) { + ret = _PyGen_Send((PyGenObject*)yf, NULL); + } else #endif ret = Py_TYPE(yf)->tp_iternext(yf); gen->is_running = 0; @@ -22476,15 +23590,15 @@ static PyObject *__Pyx_Generator_Next(PyObject *self) { } return __Pyx_Coroutine_FinishDelegation(gen); } - return __Pyx_Coroutine_SendEx(gen, Py_None); + return __Pyx_Coroutine_SendEx(gen, Py_None, 0); } static PyObject *__Pyx_Coroutine_Close(PyObject *self) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; PyObject *retval, *raised_exception; PyObject *yf = gen->yieldfrom; int err = 0; - if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) - return NULL; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); if (yf) { Py_INCREF(yf); err = __Pyx_Coroutine_CloseIter(gen, yf); @@ -22493,59 +23607,69 @@ static PyObject *__Pyx_Coroutine_Close(PyObject *self) { } if (err == 0) PyErr_SetNone(PyExc_GeneratorExit); - retval = __Pyx_Coroutine_SendEx(gen, NULL); - if (retval) { + retval = __Pyx_Coroutine_SendEx(gen, NULL, 1); + if (unlikely(retval)) { + const char *msg; Py_DECREF(retval); - PyErr_SetString(PyExc_RuntimeError, - "generator ignored GeneratorExit"); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_CheckExact(self)) { + msg = "coroutine ignored GeneratorExit"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(self)) { +#if PY_VERSION_HEX < 0x03060000 + msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)"; +#else + msg = "async generator ignored GeneratorExit"; +#endif + #endif + } else { + msg = "generator ignored GeneratorExit"; + } + PyErr_SetString(PyExc_RuntimeError, msg); return NULL; } raised_exception = PyErr_Occurred(); - if (!raised_exception - || raised_exception == PyExc_StopIteration - || raised_exception == PyExc_GeneratorExit - || PyErr_GivenExceptionMatches(raised_exception, PyExc_GeneratorExit) - || PyErr_GivenExceptionMatches(raised_exception, PyExc_StopIteration)) - { + if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) { if (raised_exception) PyErr_Clear(); Py_INCREF(Py_None); return Py_None; } return NULL; } -static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { +static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb, + PyObject *args, int close_on_genexit) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; - PyObject *typ; - PyObject *tb = NULL; - PyObject *val = NULL; PyObject *yf = gen->yieldfrom; - if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb)) - return NULL; - if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) - return NULL; + if (unlikely(gen->is_running)) + return __Pyx_Coroutine_AlreadyRunningError(gen); if (yf) { PyObject *ret; Py_INCREF(yf); - if (PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit)) { + if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) { int err = __Pyx_Coroutine_CloseIter(gen, yf); Py_DECREF(yf); __Pyx_Coroutine_Undelegate(gen); if (err < 0) - return __Pyx_Coroutine_MethodReturn(__Pyx_Coroutine_SendEx(gen, NULL)); + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); goto throw_here; } gen->is_running = 1; + if (0 #ifdef __Pyx_Generator_USED - if (__Pyx_Generator_CheckExact(yf)) { - ret = __Pyx_Coroutine_Throw(yf, args); - } else + || __Pyx_Generator_CheckExact(yf) #endif #ifdef __Pyx_Coroutine_USED - if (__Pyx_Coroutine_CheckExact(yf)) { - ret = __Pyx_Coroutine_Throw(yf, args); - } else + || __Pyx_Coroutine_CheckExact(yf) #endif - { + ) { + ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_CoroutineAwait_CheckExact(yf)) { + ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit); + #endif + } else { PyObject *meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_throw); if (unlikely(!meth)) { Py_DECREF(yf); @@ -22558,7 +23682,11 @@ static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { gen->is_running = 0; goto throw_here; } - ret = PyObject_CallObject(meth, args); + if (likely(args)) { + ret = PyObject_CallObject(meth, args); + } else { + ret = PyObject_CallFunctionObjArgs(meth, typ, val, tb, NULL); + } Py_DECREF(meth); } gen->is_running = 0; @@ -22566,14 +23694,21 @@ static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { if (!ret) { ret = __Pyx_Coroutine_FinishDelegation(gen); } - return __Pyx_Coroutine_MethodReturn(ret); + return __Pyx_Coroutine_MethodReturn(self, ret); } throw_here: __Pyx_Raise(typ, val, tb, NULL); - return __Pyx_Coroutine_MethodReturn(__Pyx_Coroutine_SendEx(gen, NULL)); + return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); } -static int __Pyx_Coroutine_traverse(PyObject *self, visitproc visit, void *arg) { - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; +static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { + PyObject *typ; + PyObject *val = NULL; + PyObject *tb = NULL; + if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb)) + return NULL; + return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1); +} +static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) { Py_VISIT(gen->closure); Py_VISIT(gen->classobj); Py_VISIT(gen->yieldfrom); @@ -22590,8 +23725,14 @@ static int __Pyx_Coroutine_clear(PyObject *self) { Py_CLEAR(gen->exc_type); Py_CLEAR(gen->exc_value); Py_CLEAR(gen->exc_traceback); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); + } +#endif Py_CLEAR(gen->gi_name); Py_CLEAR(gen->gi_qualname); + Py_CLEAR(gen->gi_modulename); return 0; } static void __Pyx_Coroutine_dealloc(PyObject *self) { @@ -22599,9 +23740,9 @@ static void __Pyx_Coroutine_dealloc(PyObject *self) { PyObject_GC_UnTrack(gen); if (gen->gi_weakreflist != NULL) PyObject_ClearWeakRefs(self); - if (gen->resume_label > 0) { + if (gen->resume_label >= 0) { PyObject_GC_Track(self); -#if PY_VERSION_HEX >= 0x030400a1 +#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE if (PyObject_CallFinalizerFromDealloc(self)) #else Py_TYPE(gen)->tp_del(self); @@ -22612,29 +23753,93 @@ static void __Pyx_Coroutine_dealloc(PyObject *self) { } PyObject_GC_UnTrack(self); } +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + /* We have to handle this case for asynchronous generators + right here, because this code has to be between UNTRACK + and GC_Del. */ + Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer); + } +#endif __Pyx_Coroutine_clear(self); PyObject_GC_Del(gen); } static void __Pyx_Coroutine_del(PyObject *self) { - PyObject *res; PyObject *error_type, *error_value, *error_traceback; __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; __Pyx_PyThreadState_declare - if (gen->resume_label <= 0) - return ; -#if PY_VERSION_HEX < 0x030400a1 + if (gen->resume_label < 0) { + return; + } +#if !CYTHON_USE_TP_FINALIZE assert(self->ob_refcnt == 0); self->ob_refcnt = 1; #endif __Pyx_PyThreadState_assign __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); - res = __Pyx_Coroutine_Close(self); - if (res == NULL) - PyErr_WriteUnraisable(self); - else - Py_DECREF(res); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self; + PyObject *finalizer = agen->ag_finalizer; + if (finalizer && !agen->ag_closed) { + PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self); + if (unlikely(!res)) { + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); + return; + } + } +#endif + if (unlikely(gen->resume_label == 0 && !error_value)) { +#ifdef __Pyx_Coroutine_USED +#ifdef __Pyx_Generator_USED + if (!__Pyx_Generator_CheckExact(self)) +#endif + { + PyObject_GC_UnTrack(self); +#if PY_MAJOR_VERSION >= 3 || defined(PyErr_WarnFormat) + if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0)) + PyErr_WriteUnraisable(self); +#else + {PyObject *msg; + char *cmsg; + #if CYTHON_COMPILING_IN_PYPY + msg = NULL; + cmsg = (char*) "coroutine was never awaited"; + #else + char *cname; + PyObject *qualname; + qualname = gen->gi_qualname; + cname = PyString_AS_STRING(qualname); + msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname); + if (unlikely(!msg)) { + PyErr_Clear(); + cmsg = (char*) "coroutine was never awaited"; + } else { + cmsg = PyString_AS_STRING(msg); + } + #endif + if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0)) + PyErr_WriteUnraisable(self); + Py_XDECREF(msg);} +#endif + PyObject_GC_Track(self); + } +#endif + } else { + PyObject *res = __Pyx_Coroutine_Close(self); + if (unlikely(!res)) { + if (PyErr_Occurred()) + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + } __Pyx_ErrRestore(error_type, error_value, error_traceback); -#if PY_VERSION_HEX < 0x030400a1 +#if !CYTHON_USE_TP_FINALIZE assert(self->ob_refcnt > 0); if (--self->ob_refcnt == 0) { return; @@ -22713,8 +23918,13 @@ static __pyx_CoroutineObject *__Pyx__Coroutine_New( PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name) { __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); - if (gen == NULL) + if (unlikely(!gen)) return NULL; + return __Pyx__Coroutine_NewInit(gen, body, closure, name, qualname, module_name); +} +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { gen->body = body; gen->closure = closure; Py_XINCREF(closure); @@ -22737,7 +23947,7 @@ static __pyx_CoroutineObject *__Pyx__Coroutine_New( } /* PatchModuleWithCoroutine */ - static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { + static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) int result; PyObject *globals, *result_obj; @@ -22777,7 +23987,10 @@ static __pyx_CoroutineObject *__Pyx__Coroutine_New( } /* PatchGeneratorABC */ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + #ifndef CYTHON_REGISTER_ABCS +#define CYTHON_REGISTER_ABCS 1 +#endif +#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) static PyObject* __Pyx_patch_abc_module(PyObject *module); static PyObject* __Pyx_patch_abc_module(PyObject *module) { module = __Pyx_Coroutine_patch_module( @@ -22797,13 +24010,13 @@ static PyObject* __Pyx_patch_abc_module(PyObject *module) { static int __Pyx_patch_abc(void) { #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) static int abc_patched = 0; - if (!abc_patched) { + if (CYTHON_REGISTER_ABCS && !abc_patched) { PyObject *module; - module = PyImport_ImportModule((PY_VERSION_HEX >= 0x03030000) ? "collections.abc" : "collections"); + module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections"); if (!module) { PyErr_WriteUnraisable(NULL); if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, - ((PY_VERSION_HEX >= 0x03030000) ? + ((PY_MAJOR_VERSION >= 3) ? "Cython module failed to register with collections.abc module" : "Cython module failed to register with collections module"), 1) < 0)) { return -1; @@ -22825,13 +24038,13 @@ static int __Pyx_patch_abc(void) { } } #else - if (0) __Pyx_Coroutine_patch_module(NULL, NULL); + if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL); #endif return 0; } /* Generator */ - static PyMethodDef __pyx_Generator_methods[] = { + static PyMethodDef __pyx_Generator_methods[] = { {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")}, {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, @@ -22899,14 +24112,16 @@ static PyTypeObject __pyx_GeneratorType_type = { 0, 0, 0, -#if PY_VERSION_HEX >= 0x030400a1 +#if CYTHON_USE_TP_FINALIZE 0, #else __Pyx_Coroutine_del, #endif 0, -#if PY_VERSION_HEX >= 0x030400a1 +#if CYTHON_USE_TP_FINALIZE __Pyx_Coroutine_del, +#elif PY_VERSION_HEX >= 0x030400a1 + 0, #endif }; static int __pyx_Generator_init(void) { @@ -22920,7 +24135,7 @@ static int __pyx_Generator_init(void) { } /* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { + static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); @@ -22936,7 +24151,7 @@ static int __pyx_Generator_init(void) { } /* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule + #ifndef __PYX_HAVE_RT_ImportModule #define __PYX_HAVE_RT_ImportModule static PyObject *__Pyx_ImportModule(const char *name) { PyObject *py_name = 0; @@ -22954,7 +24169,7 @@ static PyObject *__Pyx_ImportModule(const char *name) { #endif /* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType + #ifndef __PYX_HAVE_RT_ImportType #define __PYX_HAVE_RT_ImportType static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict) @@ -23019,7 +24234,7 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class #endif /* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { @@ -23044,6 +24259,8 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class #endif if (!*t->p) return -1; + if (PyObject_Hash(*t->p) == -1) + PyErr_Clear(); ++t; } return 0; @@ -23052,50 +24269,57 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); } -static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } -static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { -#if PY_VERSION_HEX < 0x03030000 - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; } } + } #endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} #else - if (__Pyx_PyUnicode_READY(o) == -1) return NULL; +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (PyUnicode_IS_ASCII(o)) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } #else - return PyUnicode_AsUTF8AndSize(o, length); + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} #endif #endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); } else #endif #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) @@ -23119,6 +24343,26 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type %.200s). " + "The ability to return an instance of a strict subclass of int " + "is deprecated, and may be removed in a future version of Python.", + Py_TYPE(result)->tp_name)) { + Py_DECREF(result); + return NULL; + } + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type %.200s)", + type_name, type_name, Py_TYPE(result)->tp_name); + Py_DECREF(result); + return NULL; +} static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; @@ -23126,9 +24370,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 - if (PyInt_Check(x) || PyLong_Check(x)) + if (likely(PyInt_Check(x) || PyLong_Check(x))) #else - if (PyLong_Check(x)) + if (likely(PyLong_Check(x))) #endif return __Pyx_NewRef(x); #if CYTHON_USE_TYPE_SLOTS @@ -23136,32 +24380,30 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; - res = PyNumber_Int(x); + res = m->nb_int(x); } else if (m && m->nb_long) { name = "long"; - res = PyNumber_Long(x); + res = m->nb_long(x); } #else - if (m && m->nb_int) { + if (likely(m && m->nb_int)) { name = "int"; - res = PyNumber_Long(x); + res = m->nb_int(x); } #endif #else - res = PyNumber_Int(x); + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } #endif - if (res) { + if (likely(res)) { #if PY_MAJOR_VERSION < 3 - if (!PyInt_Check(res) && !PyLong_Check(res)) { + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { #else - if (!PyLong_Check(res)) { + if (unlikely(!PyLong_CheckExact(res))) { #endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - name, name, Py_TYPE(res)->tp_name); - Py_DECREF(res); - return NULL; + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); } } else if (!PyErr_Occurred()) { From 96c65f7b77520151176854bf9120b0bd974e32f3 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Wed, 10 Oct 2018 22:18:38 +0200 Subject: [PATCH 328/446] Update known suite names in interface.c --- .../build/python/cython/interface.c | 19 ++++++----- .../build/python/cython/interface.pyx | 33 +++++++++---------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/code-experiments/build/python/cython/interface.c b/code-experiments/build/python/cython/interface.c index 01164a93e..25cf5f5a0 100644 --- a/code-experiments/build/python/cython/interface.c +++ b/code-experiments/build/python/cython/interface.c @@ -7996,7 +7996,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_8Observer_3_update_current_observer_global(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6cocoex_9interface_8Observer_2_update_current_observer_global[] = "assign the global _current_observer variable to self._observer, \n for purely technical reasons"; +static char __pyx_doc_6cocoex_9interface_8Observer_2_update_current_observer_global[] = "assign the global _current_observer variable to self._observer,\n for purely technical reasons"; static PyObject *__pyx_pw_6cocoex_9interface_8Observer_3_update_current_observer_global(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -14863,7 +14863,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36__setstate_cython__(CYTH /* Python wrapper */ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6cocoex_9interface_log_level[] = "`log_level(level=None)` return current log level and\n set new log level if `level is not None and level`.\n \n `level` must be 'error' or 'warning' or 'info' or 'debug', listed\n with increasing verbosity, or '' which doesn't change anything.\n "; +static char __pyx_doc_6cocoex_9interface_log_level[] = "`log_level(level=None)` return current log level and\n set new log level if `level is not None and level`.\n\n `level` must be 'error' or 'warning' or 'info' or 'debug', listed\n with increasing verbosity, or '' which doesn't change anything.\n "; static PyMethodDef __pyx_mdef_6cocoex_9interface_1log_level = {"log_level", (PyCFunction)__pyx_pw_6cocoex_9interface_1log_level, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6cocoex_9interface_log_level}; static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_level = 0; @@ -14934,7 +14934,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ * """ * cdef bytes _level = _bstring(level if level is not None else "") # <<<<<<<<<<<<<< * return coco_set_log_level(_level) - * */ __pyx_t_2 = (__pyx_v_level != Py_None); if ((__pyx_t_2 != 0)) { @@ -14954,7 +14953,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ * """ * cdef bytes _level = _bstring(level if level is not None else "") * return coco_set_log_level(_level) # <<<<<<<<<<<<<< - * */ __Pyx_XDECREF(__pyx_r); if (unlikely(__pyx_v__level == Py_None)) { @@ -17757,7 +17755,7 @@ static struct PyGetSetDef __pyx_getsets_6cocoex_9interface_Suite[] = { {(char *)"problem_names", __pyx_getprop_6cocoex_9interface_5Suite_problem_names, 0, (char *)"list of problem names in this `Suite`, see also `ids`", 0}, {(char *)"dimensions", __pyx_getprop_6cocoex_9interface_5Suite_dimensions, 0, (char *)"list of problem dimensions occuring at least once in this `Suite`", 0}, {(char *)"number_of_objectives", __pyx_getprop_6cocoex_9interface_5Suite_number_of_objectives, 0, (char *)"list of number of objectives occuring in this `Suite`", 0}, - {(char *)"indices", __pyx_getprop_6cocoex_9interface_5Suite_indices, 0, (char *)"list of all problem indices, deprecated.\n \n These values are (only) used to call the underlying C structures.\n Indices used in the Python interface run between 0 and `len(self)`.\n ", 0}, + {(char *)"indices", __pyx_getprop_6cocoex_9interface_5Suite_indices, 0, (char *)"list of all problem indices, deprecated.\n\n These values are (only) used to call the underlying C structures.\n Indices used in the Python interface run between 0 and `len(self)`.\n ", 0}, {(char *)"name", __pyx_getprop_6cocoex_9interface_5Suite_name, 0, (char *)"see __init__.py", 0}, {(char *)"instance", __pyx_getprop_6cocoex_9interface_5Suite_instance, 0, (char *)"instance of this suite as used to instantiate the suite via\n `Suite(name, instance, ...)`", 0}, {(char *)"options", __pyx_getprop_6cocoex_9interface_5Suite_options, 0, (char *)"options for this suite as used to instantiate the suite via\n `Suite(name, instance, options)`", 0}, @@ -19262,7 +19260,7 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) * * from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException # <<<<<<<<<<<<<< * - * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained"] + * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] */ __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); @@ -19295,11 +19293,11 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) /* "cython/interface.pyx":10 * from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException * - * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained"] # <<<<<<<<<<<<<< + * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] # <<<<<<<<<<<<<< * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] * _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] */ - __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __pyx_t_2 = PyList_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_u_bbob); __Pyx_GIVEREF(__pyx_n_u_bbob); @@ -19313,11 +19311,14 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) __Pyx_INCREF(__pyx_kp_u_bbob_constrained); __Pyx_GIVEREF(__pyx_kp_u_bbob_constrained); PyList_SET_ITEM(__pyx_t_2, 3, __pyx_kp_u_bbob_constrained); + __Pyx_INCREF(__pyx_kp_u_bbob_largescale); + __Pyx_GIVEREF(__pyx_kp_u_bbob_largescale); + PyList_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_bbob_largescale); if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":12 - * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained"] + * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] * _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] # <<<<<<<<<<<<<< * diff --git a/code-experiments/build/python/cython/interface.pyx b/code-experiments/build/python/cython/interface.pyx index 909635849..e90bed151 100755 --- a/code-experiments/build/python/cython/interface.pyx +++ b/code-experiments/build/python/cython/interface.pyx @@ -7,7 +7,7 @@ cimport numpy as np from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException -known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained"] +known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] @@ -22,18 +22,18 @@ cdef extern from "coco.h": pass ctypedef struct coco_observer_t: pass - ctypedef struct coco_suite_t: + ctypedef struct coco_suite_t: pass const char* coco_set_log_level(const char *level) coco_observer_t *coco_observer(const char *observer_name, const char *options) void coco_observer_free(coco_observer_t *self) - coco_problem_t *coco_problem_add_observer(coco_problem_t *problem, + coco_problem_t *coco_problem_add_observer(coco_problem_t *problem, coco_observer_t *observer) const char *coco_observer_get_result_folder(const coco_observer_t *observer) - coco_suite_t *coco_suite(const char *suite_name, const char *suite_instance, + coco_suite_t *coco_suite(const char *suite_name, const char *suite_instance, const char *suite_options) void coco_suite_free(coco_suite_t *suite) void coco_problem_free(coco_problem_t *problem) @@ -377,7 +377,7 @@ also report back a missing name to https://github.com/numbbo/coco/issues @property def indices(self): """list of all problem indices, deprecated. - + These values are (only) used to call the underlying C structures. Indices used in the Python interface run between 0 and `len(self)`. """ @@ -457,7 +457,7 @@ cdef class Observer: self._state = 'initialized' def _update_current_observer_global(self): - """assign the global _current_observer variable to self._observer, + """assign the global _current_observer variable to self._observer, for purely technical reasons""" global _current_observer _current_observer = self._observer @@ -494,10 +494,10 @@ cdef class Observer: coco_observer_free(self._observer) cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): - """`Problem` class instance initialization wrapper passing - a `problem_t*` C-variable to `__init__`. - - This is necessary because __cinit__ cannot be defined as cdef, only as def. + """`Problem` class instance initialization wrapper passing + a `problem_t*` C-variable to `__init__`. + + This is necessary because __cinit__ cannot be defined as cdef, only as def. """ res = Problem() res._suite_name = suite_name @@ -535,7 +535,7 @@ cdef class Problem: self._list_of_observers = [] # _problem_suite = _bstring(problem_suite) # self.problem_suite = _problem_suite - # Implicit type conversion via passing safe, + # Implicit type conversion via passing safe, # see http://docs.cython.org/src/userguide/language_basics.html self._number_of_variables = coco_problem_get_dimension(self.problem) self._number_of_objectives = coco_problem_get_number_of_objectives(self.problem) @@ -568,7 +568,7 @@ cdef class Problem: if np.size(x) != self.number_of_variables: raise ValueError( "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + - "not match the problem dimension `number_of_variables==%d`." + "not match the problem dimension `number_of_variables==%d`." % self.number_of_variables) _x = x # this is the final type conversion if self.problem is NULL: @@ -790,7 +790,7 @@ cdef class Problem: if np.size(x) != self.number_of_variables: raise ValueError( "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + - "not match the problem dimension `number_of_variables==%d`." + "not match the problem dimension `number_of_variables==%d`." % self.number_of_variables) _x = x # this is the final type conversion if self.problem is NULL: @@ -867,7 +867,7 @@ cdef class Problem: return '%s: a %s %s problem%s (problem %d of suite "%s" with name "%s")' % ( self.id, dimensional, objective, constraints, self.index, self.suite, self.name) - # self.name.replace(self.name.split()[0], + # self.name.replace(self.name.split()[0], # self.name.split()[0] + "(%d)" # % (self.index if self.index is not None else -2))) else: @@ -881,7 +881,7 @@ cdef class Problem: self.id) else: return "" - + def __enter__(self): """Allows ``with Suite(...)[index] as problem:`` (or ``Suite(...).get_problem(...)``) """ @@ -895,10 +895,9 @@ cdef class Problem: def log_level(level=None): """`log_level(level=None)` return current log level and set new log level if `level is not None and level`. - + `level` must be 'error' or 'warning' or 'info' or 'debug', listed with increasing verbosity, or '' which doesn't change anything. """ cdef bytes _level = _bstring(level if level is not None else "") return coco_set_log_level(_level) - From 0a0c61552bb9a127da551900c860e9457126723f Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 11 Oct 2018 01:26:51 +0200 Subject: [PATCH 329/446] Corrections for postprocessing --- code-postprocessing/cocopp/compall/pptables.py | 4 ++-- code-postprocessing/cocopp/ppfig.py | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/code-postprocessing/cocopp/compall/pptables.py b/code-postprocessing/cocopp/compall/pptables.py index 57f7fbe94..bcfa7e0bb 100644 --- a/code-postprocessing/cocopp/compall/pptables.py +++ b/code-postprocessing/cocopp/compall/pptables.py @@ -516,7 +516,7 @@ def main(dict_alg, sorted_algs, output_dir='.', function_targets_line=True, late # data, dispersion, isBoldArray, isItalArray, nbsucc, nbruns, testres): command_name = r'\alg%stables' % numtotext(i) # header += r'\providecommand{%s}{{%s}{}}' % (command_name, str_to_latex(strip_pathname(alg))) - if df[0] == genericsettings.tabDimsOfInterest[0]: + if df[0] == testbedsettings.current_testbed.tabDimsOfInterest[0]: additional_commands.append('\\providecommand{%s}{\\StrLeft{%s}{\\ntables}}' % (command_name, str_to_latex(strip_pathname1(alg)))) curline = [command_name + r'\hspace*{\fill}'] # each list element becomes a &-separated table entry? @@ -706,7 +706,7 @@ def main(dict_alg, sorted_algs, output_dir='.', function_targets_line=True, late if len(additional_commands) > 0: for command in additional_commands: prepend_to_file(latex_commands_file, [command]) - if len(tables_header) > 0 and df[0] == genericsettings.tabDimsOfInterest[0]: + if len(tables_header) > 0 and df[0] == testbedsettings.current_testbed.tabDimsOfInterest[0]: extraeol = [r'\hline'] res = tableXLaTeX([tables_header], spec=spec, extra_eol=extraeol, add_end_tabular=False) prepend_to_file(latex_commands_file, ['\\providecommand{\\pptablesheader}{', res, '}']) diff --git a/code-postprocessing/cocopp/ppfig.py b/code-postprocessing/cocopp/ppfig.py index 9a347114d..26b6257c4 100644 --- a/code-postprocessing/cocopp/ppfig.py +++ b/code-postprocessing/cocopp/ppfig.py @@ -211,7 +211,23 @@ def save_folder_index_file(filename, image_file_extension): links += add_image('pprldmany_20D_nzall.svg', True, 220) if os.path.isfile(os.path.join(current_dir, 'pprldmany_40D_nzall.svg')): links += add_image('pprldmany_40D_nzall.svg', True, 220) - +# if os.path.isfile(os.path.join(current_dir, 'pprldmany_320D_noiselessall.svg')): # weird way to decide what to plot +# links += "

    %s

    \n" % ' Runtime distributions (ECDFs) over all targets' +# links += add_image('pprldmany_20D_noiselessall.svg', True, 220) +# links += add_image('pprldmany_40D_noiselessall.svg', True, 220) +# links += add_image('pprldmany_80D_noiselessall.svg', True, 220) + '
    ' +# links += add_image('pprldmany_160D_noiselessall.svg', True, 220) +# links += add_image('pprldmany_320D_noiselessall.svg', True, 220) +# if os.path.isfile(os.path.join(current_dir, 'pprldmany_640D_noiselessall.svg')): +# links += add_image('pprldmany_640D_noiselessall.svg', True, 220) + if testbedsettings.current_testbed.name == 'bbob-largescale': + links += "

    %s

    \n" % ' Runtime distributions (ECDFs) over all targets' + links += add_image('pprldmany_20D_noiselessall.svg', True, 220) + links += add_image('pprldmany_40D_noiselessall.svg', True, 220) + links += add_image('pprldmany_80D_noiselessall.svg', True, 220) + '
    ' + links += add_image('pprldmany_160D_noiselessall.svg', True, 220) + links += add_image('pprldmany_320D_noiselessall.svg', True, 220) + links += add_image('pprldmany_640D_noiselessall.svg', True, 220) lines = [] with open(filename) as infile: From efee8712f80ae131624b4346a13894cbea7b6918 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 11 Oct 2018 14:18:09 +0200 Subject: [PATCH 330/446] Add benchmarkinfo files --- .../cocopp/bbob-largescale-benchmarkinfos.txt | 69 +++++++++++++++++++ .../bbob-largescale-benchmarkshortinfos.txt | 24 +++++++ code-postprocessing/cocopp/ppfig.py | 1 + 3 files changed, 94 insertions(+) create mode 100644 code-postprocessing/cocopp/bbob-largescale-benchmarkinfos.txt create mode 100644 code-postprocessing/cocopp/bbob-largescale-benchmarkshortinfos.txt diff --git a/code-postprocessing/cocopp/bbob-largescale-benchmarkinfos.txt b/code-postprocessing/cocopp/bbob-largescale-benchmarkinfos.txt new file mode 100644 index 000000000..6c51d4122 --- /dev/null +++ b/code-postprocessing/cocopp/bbob-largescale-benchmarkinfos.txt @@ -0,0 +1,69 @@ +% SEPARABLE +1 Sphere normalized with min(1, 40/n) +2 Ellipsoid separable with monotone x-transformation, condition 1e6, normalized with min(1, 40/n) +3 Rastrigin separable with both x-transformations "condition" 10 +4 Skew Rastrigin-Bueche separable, "condition" 10, skew-"condition" 100 +5 Linear slope, neutral extension outside the domain (not flat) + +% LOW OR MODERATE CONDITION +6 Attractive sector function +7 Step-ellipsoid, condition 100 +8 Rosenbrock, original +9 Rosenbrock, rotated + +% HIGH CONDITION +10 Ellipsoid with monotone x-transformation, condition 1e6 +11 Discus with monotone x-transformation, condition 1e6 +12 Bent cigar with asymmetric x-transformation, condition 1e6 +13 Sharp ridge, slope 1:100, condition 10 +14 Sum of different powers + +% MULTI-MODAL +15 Rastrigin with both x-transformations, condition 10 +16 Weierstrass with monotone x-transformation, condition 100 +17 Schaffer F7 with asymmetric x-transformation, condition 10 +18 Schaffer F7 with asymmetric x-transformation, condition 1000 +19 F8F2 composition of 2-D Griewank-Rosenbrock + +% MULTI-MODAL WITH WEAK GLOBAL STRUCTURE +20 Schwefel x*sin(x) with tridiagonal transformation, condition 10 +21 Gallagher 101 Gaussian peaks, condition up to 1000 +22 Gallagher 21 Gaussian peaks, condition up to 1000, 1000 for global opt +23 Katsuuras repetitive rugged function +24 Lunacek bi-Rastrigin, condition 100 + +% MODERATE NOISE +101 Sphere with moderate Gauss noise +102 Sphere with moderate uniform noise +103 Sphere with moderate seldom Cauchy noise +104 Rosenbrock non-rotated with moderate Gauss noise +105 Rosenbrock non-rotated with moderate uniform noise +106 Rosenbrock non-rotated with moderate seldom Cauchy noise + +% SEVERE NOISE +107 Sphere with Gauss noise +108 Sphere with uniform noise +109 Sphere with seldom Cauchy noise +110 Rosenbrock non-rotated with Gauss noise +111 Rosenbrock non-rotated with uniform noise +112 Rosenbrock non-rotated with seldom Cauchy noise +113 Step-ellipsoid with Gauss noise, condition 100 +114 Step-ellipsoid with uniform noise, condition 100 +115 Step-ellipsoid with seldom Cauchy noise, condition 100 +116 Ellipsoid with Gauss noise, monotone x-transformation, condition 1e4 +117 Ellipsoid with uniform noise, monotone x-transformation, condition 1e4 +118 Ellipsoid with seldom Cauchy noise, monotone x-transformation, condition 1e4 +119 Sum of different powers with Gauss noise +120 Sum of different powers with uniform noise +121 Sum of different powers with seldom Cauchy noise + +% SEVERE NOISE HIGHLY MULTI-MODAL +122 Schaffer F7 with Gauss noise and asymmetric x-transformation, condition 10 +123 Schaffer F7 with uniform noise and asymmetric x-transformation, condition 10 +124 Schaffer F7 with seldom Cauchy noise and asymmetric x-transformation, condition 10 +125 F8F2 composition of 2-D Griewank-Rosenbrock with Gauss noise +126 F8F2 composition of 2-D Griewank-Rosenbrock with uniform noise +127 F8F2 composition of 2-D Griewank-Rosenbrock seldom Cauchy noise +128 Gallagher 101 Gaussian peaks with Gauss noise +129 Gallagher 101 Gaussian peaks with uniform noise +130 Gallagher 101 Gaussian peaks with seldom Cauchy noise diff --git a/code-postprocessing/cocopp/bbob-largescale-benchmarkshortinfos.txt b/code-postprocessing/cocopp/bbob-largescale-benchmarkshortinfos.txt new file mode 100644 index 000000000..51f0f3a5b --- /dev/null +++ b/code-postprocessing/cocopp/bbob-largescale-benchmarkshortinfos.txt @@ -0,0 +1,24 @@ +1 Sphere +2 Ellipsoid separable +3 Rastrigin separable +4 Skew Rastrigin-Bueche separ +5 Linear slope +6 Attractive sector +7 Step-ellipsoid +8 Rosenbrock original +9 Rosenbrock rotated +10 Ellipsoid +11 Discus +12 Bent cigar +13 Sharp ridge +14 Sum of different powers +15 Rastrigin +16 Weierstrass +17 Schaffer F7, condition 10 +18 Schaffer F7, condition 1000 +19 Griewank-Rosenbrock F8F2 +20 Schwefel x*sin(x) +21 Gallagher 101 peaks +22 Gallagher 21 peaks +23 Katsuuras +24 Lunacek bi-Rastrigin \ No newline at end of file diff --git a/code-postprocessing/cocopp/ppfig.py b/code-postprocessing/cocopp/ppfig.py index 26b6257c4..deda67087 100644 --- a/code-postprocessing/cocopp/ppfig.py +++ b/code-postprocessing/cocopp/ppfig.py @@ -228,6 +228,7 @@ def save_folder_index_file(filename, image_file_extension): links += add_image('pprldmany_160D_noiselessall.svg', True, 220) links += add_image('pprldmany_320D_noiselessall.svg', True, 220) links += add_image('pprldmany_640D_noiselessall.svg', True, 220) + #TODO: Remove hardcoded part lines = [] with open(filename) as infile: From c531e51fc4e8d9aefc90f45b5db9d2faf9736446 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 11 Oct 2018 16:41:26 +0200 Subject: [PATCH 331/446] Update benchmarkinfo file --- .../cocopp/bbob-largescale-benchmarkinfos.txt | 65 +++++-------------- 1 file changed, 15 insertions(+), 50 deletions(-) diff --git a/code-postprocessing/cocopp/bbob-largescale-benchmarkinfos.txt b/code-postprocessing/cocopp/bbob-largescale-benchmarkinfos.txt index 6c51d4122..ba80af4a4 100644 --- a/code-postprocessing/cocopp/bbob-largescale-benchmarkinfos.txt +++ b/code-postprocessing/cocopp/bbob-largescale-benchmarkinfos.txt @@ -1,69 +1,34 @@ % SEPARABLE 1 Sphere normalized with min(1, 40/n) 2 Ellipsoid separable with monotone x-transformation, condition 1e6, normalized with min(1, 40/n) -3 Rastrigin separable with both x-transformations "condition" 10 -4 Skew Rastrigin-Bueche separable, "condition" 10, skew-"condition" 100 -5 Linear slope, neutral extension outside the domain (not flat) +3 Rastrigin separable with both x-transformations "condition" 10, normalized with min(1, 40/n) +4 Skew Rastrigin-Bueche separable, "condition" 10, skew-"condition" 100, normalized with min(1, 40/n) +5 Linear slope, neutral extension outside the domain (not flat), normalized with min(1, 40/n) % LOW OR MODERATE CONDITION -6 Attractive sector function -7 Step-ellipsoid, condition 100 -8 Rosenbrock, original -9 Rosenbrock, rotated +6 Attractive sector function, normalized with min(1, 40/n) +7 Step-ellipsoid, condition 100, normalized with min(1, 40/n) +8 Rosenbrock, original, normalized with min(1, 40/n) +9 Rosenbrock, rotated, normalized with min(1, 40/n) % HIGH CONDITION -10 Ellipsoid with monotone x-transformation, condition 1e6 -11 Discus with monotone x-transformation, condition 1e6 -12 Bent cigar with asymmetric x-transformation, condition 1e6 -13 Sharp ridge, slope 1:100, condition 10 -14 Sum of different powers +10 Ellipsoid with monotone x-transformation, condition 1e6, normalized with min(1, 40/n) +11 Discus with monotone x-transformation, constant proportion of distinct axis lengths, condition 1e6, normalized with min(1, 40/n) +12 Bent cigar with asymmetric x-transformation, constant proportion of distinct axis lengths, condition 1e6 +13 Sharp ridge, slope 1:100, constant proportion of distinct axis lengths, condition 10 +14 Sum of different powers, normalized with min(1, 40/n) % MULTI-MODAL -15 Rastrigin with both x-transformations, condition 10 +15 Rastrigin with both x-transformations, condition 10, normalized with min(1, 40/n) 16 Weierstrass with monotone x-transformation, condition 100 17 Schaffer F7 with asymmetric x-transformation, condition 10 18 Schaffer F7 with asymmetric x-transformation, condition 1000 -19 F8F2 composition of 2-D Griewank-Rosenbrock +19 F8F2 composition of 2-D Griewank-Rosenbrock, normalized with min(1, 40/n) % MULTI-MODAL WITH WEAK GLOBAL STRUCTURE 20 Schwefel x*sin(x) with tridiagonal transformation, condition 10 21 Gallagher 101 Gaussian peaks, condition up to 1000 22 Gallagher 21 Gaussian peaks, condition up to 1000, 1000 for global opt 23 Katsuuras repetitive rugged function -24 Lunacek bi-Rastrigin, condition 100 +24 Lunacek bi-Rastrigin, condition 100, normalized with min(1, 40/n) -% MODERATE NOISE -101 Sphere with moderate Gauss noise -102 Sphere with moderate uniform noise -103 Sphere with moderate seldom Cauchy noise -104 Rosenbrock non-rotated with moderate Gauss noise -105 Rosenbrock non-rotated with moderate uniform noise -106 Rosenbrock non-rotated with moderate seldom Cauchy noise - -% SEVERE NOISE -107 Sphere with Gauss noise -108 Sphere with uniform noise -109 Sphere with seldom Cauchy noise -110 Rosenbrock non-rotated with Gauss noise -111 Rosenbrock non-rotated with uniform noise -112 Rosenbrock non-rotated with seldom Cauchy noise -113 Step-ellipsoid with Gauss noise, condition 100 -114 Step-ellipsoid with uniform noise, condition 100 -115 Step-ellipsoid with seldom Cauchy noise, condition 100 -116 Ellipsoid with Gauss noise, monotone x-transformation, condition 1e4 -117 Ellipsoid with uniform noise, monotone x-transformation, condition 1e4 -118 Ellipsoid with seldom Cauchy noise, monotone x-transformation, condition 1e4 -119 Sum of different powers with Gauss noise -120 Sum of different powers with uniform noise -121 Sum of different powers with seldom Cauchy noise - -% SEVERE NOISE HIGHLY MULTI-MODAL -122 Schaffer F7 with Gauss noise and asymmetric x-transformation, condition 10 -123 Schaffer F7 with uniform noise and asymmetric x-transformation, condition 10 -124 Schaffer F7 with seldom Cauchy noise and asymmetric x-transformation, condition 10 -125 F8F2 composition of 2-D Griewank-Rosenbrock with Gauss noise -126 F8F2 composition of 2-D Griewank-Rosenbrock with uniform noise -127 F8F2 composition of 2-D Griewank-Rosenbrock seldom Cauchy noise -128 Gallagher 101 Gaussian peaks with Gauss noise -129 Gallagher 101 Gaussian peaks with uniform noise -130 Gallagher 101 Gaussian peaks with seldom Cauchy noise From 20ea4abd9cfcada2939c8d337f552a424c96f0eb Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 11 Oct 2018 16:43:17 +0200 Subject: [PATCH 332/446] Minor change --- code-experiments/src/suite_largescale.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 69d21d4fd..190e9812a 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -1,6 +1,6 @@ /** * @file suite_largescale.c - * @brief Implementation of the bbob large-scale suite containing 1 function in 6 large dimensions. + * @brief Implementation of the bbob large-scale suite containing 24 functions in 6 large dimensions. */ #include "coco.h" From 9ec0de650911862cbfbe7263fb8ffe0b38906a7f Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Mon, 22 Oct 2018 18:11:43 +0200 Subject: [PATCH 333/446] Temporary correction until reference algorithm is added --- code-postprocessing/cocopp/compall/pptables.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code-postprocessing/cocopp/compall/pptables.py b/code-postprocessing/cocopp/compall/pptables.py index bcfa7e0bb..13b9068f0 100644 --- a/code-postprocessing/cocopp/compall/pptables.py +++ b/code-postprocessing/cocopp/compall/pptables.py @@ -58,7 +58,8 @@ def get_table_caption(): $p = 0.05$ or $p = 10^{-k}$ when the number $k$ following the star is larger than 1, with Bonferroni correction by the number of functions (!!TOTAL-NUM-OF-FUNCTIONS!!). """ + (r"""A $\downarrow$ indicates the same tested against !!THE-REF-ALG!!. """ - if not (testbedsettings.current_testbed.name == testbedsettings.testbed_name_bi_ext) + if not (testbedsettings.current_testbed.name in (testbedsettings.testbed_name_bi_ext, + testbedsettings.testbed_name_ls)) else "") + r"""Best results are printed in bold. """ + r"""\cocoversion""") From c402e2c164b61eb3c430ae6f7a06527161cff67a Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Mon, 22 Oct 2018 18:24:29 +0200 Subject: [PATCH 334/446] Remove comments --- code-postprocessing/cocopp/ppfig.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/code-postprocessing/cocopp/ppfig.py b/code-postprocessing/cocopp/ppfig.py index deda67087..f76562e54 100644 --- a/code-postprocessing/cocopp/ppfig.py +++ b/code-postprocessing/cocopp/ppfig.py @@ -211,15 +211,6 @@ def save_folder_index_file(filename, image_file_extension): links += add_image('pprldmany_20D_nzall.svg', True, 220) if os.path.isfile(os.path.join(current_dir, 'pprldmany_40D_nzall.svg')): links += add_image('pprldmany_40D_nzall.svg', True, 220) -# if os.path.isfile(os.path.join(current_dir, 'pprldmany_320D_noiselessall.svg')): # weird way to decide what to plot -# links += "

    %s

    \n" % ' Runtime distributions (ECDFs) over all targets' -# links += add_image('pprldmany_20D_noiselessall.svg', True, 220) -# links += add_image('pprldmany_40D_noiselessall.svg', True, 220) -# links += add_image('pprldmany_80D_noiselessall.svg', True, 220) + '
    ' -# links += add_image('pprldmany_160D_noiselessall.svg', True, 220) -# links += add_image('pprldmany_320D_noiselessall.svg', True, 220) -# if os.path.isfile(os.path.join(current_dir, 'pprldmany_640D_noiselessall.svg')): -# links += add_image('pprldmany_640D_noiselessall.svg', True, 220) if testbedsettings.current_testbed.name == 'bbob-largescale': links += "

    %s

    \n" % ' Runtime distributions (ECDFs) over all targets' links += add_image('pprldmany_20D_noiselessall.svg', True, 220) From 0f4133b970413035d132047fffe14281842e1701 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 13 Dec 2018 16:52:55 +0100 Subject: [PATCH 335/446] rename --- .../{templateBBOBLSmany.tex => templateBBOBLSmultiple.tex} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename code-postprocessing/latex-templates/{templateBBOBLSmany.tex => templateBBOBLSmultiple.tex} (100%) diff --git a/code-postprocessing/latex-templates/templateBBOBLSmany.tex b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex similarity index 100% rename from code-postprocessing/latex-templates/templateBBOBLSmany.tex rename to code-postprocessing/latex-templates/templateBBOBLSmultiple.tex From 25ed7ea480f0e483e1fbabe7c6de3d149d09bd62 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 13 Dec 2018 16:59:43 +0100 Subject: [PATCH 336/446] Change documentclass --- .../templateBBOBLSmultiple.tex | 54 +------------------ 1 file changed, 1 insertion(+), 53 deletions(-) diff --git a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex index f6d6ea1a5..fedafa68d 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex @@ -1,56 +1,4 @@ -% This is "sig-alternate.tex" V2.1 April 2013 -% This file should be compiled with V2.5 of "sig-alternate.cls" May 2012 -% -% This example file demonstrates the use of the 'sig-alternate.cls' -% V2.5 LaTeX2e document class file. It is for those submitting -% articles to ACM Conference Proceedings WHO DO NOT WISH TO -% STRICTLY ADHERE TO THE SIGS (PUBS-BOARD-ENDORSED) STYLE. -% The 'sig-alternate.cls' file will produce a similar-looking, -% albeit, 'tighter' paper resulting in, invariably, fewer pages. -% -% ---------------------------------------------------------------------------------------------------------------- -% This .tex file (and associated .cls V2.5) produces: -% 1) The Permission Statement -% 2) The Conference (location) Info information -% 3) The Copyright Line with ACM data -% 4) NO page numbers -% -% as against the acm_proc_article-sp.cls file which -% DOES NOT produce 1) thru' 3) above. -% -% Using 'sig-alternate.cls' you have control, however, from within -% the source .tex file, over both the CopyrightYear -% (defaulted to 200X) and the ACM Copyright Data -% (defaulted to X-XXXXX-XX-X/XX/XX). -% e.g. -% \CopyrightYear{2007} will cause 2007 to appear in the copyright line. -% \crdata{0-12345-67-8/90/12} will cause 0-12345-67-8/90/12 to appear in the copyright line. -% -% --------------------------------------------------------------------------------------------------------------- -% This .tex source is an example which *does* use -% the .bib file (from which the .bbl file % is produced). -% REMEMBER HOWEVER: After having produced the .bbl file, -% and prior to final submission, you *NEED* to 'insert' -% your .bbl file into your source .tex file so as to provide -% ONE 'self-contained' source file. -% -% ================= IF YOU HAVE QUESTIONS ======================= -% Questions regarding the SIGS styles, SIGS policies and -% procedures, Conferences etc. should be sent to -% Adrienne Griscti (griscti@acm.org) -% -% Technical questions _only_ to -% Gerald Murray (murray@hq.acm.org) -% -% Technical questions related to COCO/BBOB to bbob@lri.fr -% =============================================================== -% -% For tracking purposes - this is V2.0 - May 2012 - -\documentclass{sig-alternate} -\pdfpagewidth=8.5in -\pdfpageheight=11in -\special{papersize=8.5in,11in} +\documentclass[sigconf]{acmart} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Packages From 6e44a4c28b22f1c7d86a0d3533f827738eab85b6 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 13 Dec 2018 21:39:11 +0100 Subject: [PATCH 337/446] Update packages --- .../latex-templates/templateBBOBLSmultiple.tex | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex index fedafa68d..737fa5668 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex @@ -2,15 +2,16 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Packages +\usepackage{booktabs} % For formal tables \usepackage{graphicx} +\usepackage{rotating} \usepackage{tabularx} -\usepackage[dvipsnames]{xcolor} +\usepackage{xspace} \usepackage{float} -\usepackage{rotating} \usepackage{xstring} % for string operations \usepackage{wasysym} % Table legend with symbols input from post-processing \usepackage{MnSymbol} % Table legend with symbols input from post-processing -%\usepackage[hidelinks]{hyperref} % make COCO papers clickable +\usepackage{ifthen} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Definitions From bdb4eb158a162af9c66f26ca610ad37bbfc24bd1 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 13 Dec 2018 21:40:49 +0100 Subject: [PATCH 338/446] Set copyright --- .../latex-templates/templateBBOBLSmultiple.tex | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex index 737fa5668..1fa238d0f 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex @@ -13,6 +13,17 @@ \usepackage{MnSymbol} % Table legend with symbols input from post-processing \usepackage{ifthen} +% Copyright +%\setcopyright{none} +%\setcopyright{acmcopyright} +%\setcopyright{acmlicensed} +\setcopyright{rightsretained} +%\setcopyright{usgov} +%\setcopyright{usgovmixed} +%\setcopyright{cagov} +%\setcopyright{cagovmixed} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Definitions From a620696b4c698f3b1f5e45caac7495b9cc202d39 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 13 Dec 2018 21:42:16 +0100 Subject: [PATCH 339/446] Update to the GECCO 2018 Data --- .../latex-templates/templateBBOBLSmultiple.tex | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex index 1fa238d0f..a858688b7 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex @@ -24,6 +24,21 @@ %\setcopyright{cagovmixed} +% DOI +\acmDOI{10.1145/123_4} + +% ISBN +\acmISBN{123-4567-24-567/18/07} + +%Conference +\acmConference[GECCO '18]{the Genetic and Evolutionary Computation Conference 2018}{July 15--19, 2018}{Kyoto, Japan} +\acmYear{2018} +\copyrightyear{2018} + +\acmPrice{15.00} + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Definitions From 6274e0682f4f4166356c1a35e99897c50e2a5cfe Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 13 Dec 2018 21:45:24 +0100 Subject: [PATCH 340/446] Update path of picture files --- .../templateBBOBLSmultiple.tex | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex index a858688b7..89490e45f 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex @@ -39,29 +39,26 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Definitions - -% Algorithm names on the right of the ECDF figures can be modified by -% uncommenting the following lines and inputting some text in the last -% brackets, make sure the algorithms are in the same order as for the post-processing: -% \newcommand{\algaperfprof}{Algorithm a short name} -% \newcommand{\algbperfprof}{Algorithm b short name} -% \newcommand{\algcperfprof}{Algorithm c short name} -% \newcommand{\algdperfprof}{Algorithm c short name} -% ... -% Algorithm names as they appear in the tables, uncomment if necessary -% \newcommand{\algatables}{\algaperfprof} % first argument in the post-processing -% \newcommand{\algbtables}{\algbperfprof} % first argument in the post-processing -% \newcommand{\algctables}{\algcperfprof} % first argument in the post-processing -% \newcommand{\algdtables}{\algdperfprof} % second argument in the post-processing +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%% TO BE EDITED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Algorithm names as they appear in the tables, uncomment and adapt if necessary +% \newcommand{\algAtables}{ALGO1} % first argument in the post-processing +% \newcommand{\algBtables}{ALGO2} % second argument in the post-processing +% \newcommand{\algCtables}{ALGO3} % third argument in the post-processing +% \newcommand{\algDtables}{ALGO4} % forth argument in the post-processing % ... % location of pictures files \newcommand{\bbobdatapath}{ppdata/} \input{\bbobdatapath bbob_pproc_commands.tex} -\graphicspath{{\bbobdatapath}} +\graphicspath{{\bbobdatapath\algsfolder}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % pre-defined commands \newcommand{\DIM}{\ensuremath{\mathrm{DIM}}} \newcommand{\aRT}{\ensuremath{\mathrm{aRT}}} From a1fce9a971d07a2c6fa8b6b6c643cbb2a832b284 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 13 Dec 2018 21:48:39 +0100 Subject: [PATCH 341/446] Update predefined commands --- .../latex-templates/templateBBOBLSmultiple.tex | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex index 89490e45f..7464ca814 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex @@ -71,22 +71,11 @@ \newcommand{\ftarget}{\ensuremath{f_\mathrm{t}}} \newcommand{\CrE}{\ensuremath{\mathrm{CrE}}} \newcommand{\change}[1]{{\color{red} #1}} +\newcommand{\TODO}[1]{{\color{orange} !!! #1 !!!}} +\newcommand{\bbobls}{{\ttfamily bbob-largescale}\xspace} - \renewcommand{\topfraction}{1} % max fraction of floats at top - \renewcommand{\bottomfraction}{1} % max fraction of floats at bottom - % Parameters for TEXT pages (not float pages): - \setcounter{topnumber}{3} - \setcounter{bottomnumber}{3} - \setcounter{totalnumber}{3} % 2 may work better - \setcounter{dbltopnumber}{4} % for 2-column pages - \renewcommand{\dbltopfraction}{1} % fit big float above 2-col. text - \renewcommand{\textfraction}{0.0} % allow minimal text w. figs - % Parameters for FLOAT pages (not text pages): - \renewcommand{\floatpagefraction}{0.80} % require fuller float pages - % N.B.: floatpagefraction MUST be less than topfraction !! - \renewcommand{\dblfloatpagefraction}{0.7} % require fuller float pages -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%% END OF PREAMBLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} From f1c8a64ecaf5e2a1f34a2e4566384ed89968a188 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 13 Dec 2018 21:58:17 +0100 Subject: [PATCH 342/446] Update main text of latex template according to biobjective template --- .../templateBBOBLSmultiple.tex | 172 +++++++----------- 1 file changed, 70 insertions(+), 102 deletions(-) diff --git a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex index 7464ca814..b26d70bdf 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex @@ -80,115 +80,83 @@ \begin{document} +\title{Black-Box Optimization Benchmarking Template for the Comparison of Multiple Algorithms on the \bbobls Testbed} +\renewcommand{\shorttitle}{Template to Compare Multiple Algorithms on the \bbobls Testbed} +\titlenote{Submission deadline: March 31st.} +%Camera-ready paper due April 24th.}} +\subtitle{Draft version} + + + +\author{Firstname Lastname} +%\authornote{tba if needed} +%\orcid{1234-5678-9012} +%\affiliation{% +% \institution{Institute for Clarity in Documentation} +% \streetaddress{P.O. Box 1212} +% \city{Dublin} +% \state{Ohio} +% \postcode{43017-6221} +%} +%\email{trovato@corporation.com} % -% --- Author Metadata here --- -\conferenceinfo{GECCO'13,} {July 6-10, 2013, Amsterdam, The Netherlands.} -\CopyrightYear{2013} -\crdata{TBA} -\clubpenalty=10000 -\widowpenalty = 10000 -% --- End of Author Metadata --- - -\title{Black-Box Optimization Benchmarking Template for the Comparison of More than Two Algorithms on the Noiseless Testbed} -\subtitle{Draft version -\titlenote{Submission deadline: March 28th.}} -%Camera-ready paper due April 16th.}} - -% -% You need the command \numberofauthors to handle the 'placement -% and alignment' of the authors beneath the title. +%\author{G.K.M. Tobin} +%\authornote{The secretary disavows any knowledge of this author's actions.} +%\affiliation{% +% \institution{Institute for Clarity in Documentation} +% \streetaddress{P.O. Box 1212} +% \city{Dublin} +% \state{Ohio} +% \postcode{43017-6221} +%} +%\email{webmaster@marysville-ohio.com} % -% For aesthetic reasons, we recommend 'three authors at a time' -% i.e. three 'name/affiliation blocks' be placed beneath the title. +%\author{Lars Th{\o}rv{\"a}ld} +%\authornote{This author is the +% one who did all the really hard work.} +%\affiliation{% +% \institution{The Th{\o}rv{\"a}ld Group} +% \streetaddress{1 Th{\o}rv{\"a}ld Circle} +% \city{Hekla} +% \country{Iceland}} +%\email{larst@affiliation.org} % -% NOTE: You are NOT restricted in how many 'rows' of -% "name/affiliations" may appear. We just ask that you restrict -% the number of 'columns' to three. +%\author{Lawrence P. Leipuner} +%\affiliation{ +% \institution{Brookhaven Laboratories} +% \streetaddress{P.O. Box 5000}} +%\email{lleipuner@researchlabs.org} % -% Because of the available 'opening page real-estate' -% we ask you to refrain from putting more than six authors -% (two rows with three columns) beneath the article title. -% More than six makes the first-page appear very cluttered indeed. +%\author{Sean Fogarty} +%\affiliation{% +% \institution{NASA Ames Research Center} +% \city{Moffett Field} +% \state{California} +% \postcode{94035}} +%\email{fogartys@amesres.org} % -% Use the \alignauthor commands to handle the names -% and affiliations for an 'aesthetic maximum' of six authors. -% Add names, affiliations, addresses for -% the seventh etc. author(s) as the argument for the -% \additionalauthors command. -% These 'additional authors' will be output/set for you -% without further effort on your part as the last section in -% the body of your article BEFORE References or any Appendices. - -\numberofauthors{1} % in this sample file, there are a *total* -% of EIGHT authors. SIX appear on the 'first-page' (for formatting -% reasons) and the remaining two appear in the \additionalauthors section. +%\author{Charles Palmer} +%\affiliation{% +% \institution{Palmer Research Laboratories} +% \streetaddress{8600 Datapoint Drive} +% \city{San Antonio} +% \state{Texas} +% \postcode{78229}} +%\email{cpalmer@prl.com} % -\author{ -% You can go ahead and credit any number of authors here, -% e.g. one 'row of three' or two rows (consisting of one row of three -% and a second row of one, two or three). +%\author{John Smith} +%\affiliation{\institution{The Th{\o}rv{\"a}ld Group}} +%\email{jsmith@affiliation.org} % -% The command \alignauthor (no curly braces needed) should -% precede each author name, affiliation/snail-mail address and -% e-mail address. Additionally, tag each line of -% affiliation/address with \affaddr, and tag the -% e-mail address with \email. -% -% 1st. author -\alignauthor -Forename Name\\ %\titlenote{Dr.~Trovato insisted his name be first.}\\ -% \affaddr{Institute for Clarity in Documentation}\\ -% \affaddr{1932 Wallamaloo Lane}\\ -% \affaddr{Wallamaloo, New Zealand}\\ -% \email{trovato@corporation.com} -%% 2nd. author -%\alignauthor -%G.K.M. Tobin\titlenote{The secretary disavows -%any knowledge of this author's actions.}\\ -% \affaddr{Institute for Clarity in Documentation}\\ -% \affaddr{P.O. Box 1212}\\ -% \affaddr{Dublin, Ohio 43017-6221}\\ -% \email{webmaster@marysville-ohio.com} -%% 3rd. author -%\alignauthor Lars Th{\o}rv{\"a}ld\titlenote{This author is the -%one who did all the really hard work.}\\ -% \affaddr{The Th{\o}rv{\"a}ld Group}\\ -% \affaddr{1 Th{\o}rv{\"a}ld Circle}\\ -% \affaddr{Hekla, Iceland}\\ -% \email{larst@affiliation.org} -%\and % use '\and' if you need 'another row' of author names -%% 4th. author -%\alignauthor Lawrence P. Leipuner\\ -% \affaddr{Brookhaven Laboratories}\\ -% \affaddr{Brookhaven National Lab}\\ -% \affaddr{P.O. Box 5000}\\ -% \email{lleipuner@researchlabs.org} -%% 5th. author -%\alignauthor Sean Fogarty\\ -% \affaddr{NASA Ames Research Center}\\ -% \affaddr{Moffett Field}\\ -% \affaddr{California 94035}\\ -% \email{fogartys@amesres.org} -%% 6th. author -%\alignauthor Charles Palmer\\ -% \affaddr{Palmer Research Laboratories}\\ -% \affaddr{8600 Datapoint Drive}\\ -% \affaddr{San Antonio, Texas 78229}\\ -% \email{cpalmer@prl.com} -} % author -%% There's nothing stopping you putting the seventh, eighth, etc. -%% author on the opening page (as the 'third row') but we ask, -%% for aesthetic reasons that you place these 'additional authors' -%% in the \additional authors block, viz. -%\additionalauthors{Additional authors: John Smith (The Th{\o}rv{\"a}ld Group, -%email: {\texttt{jsmith@affiliation.org}}) and Julius P.~Kumquat -%(The Kumquat Consortium, email: {\texttt{jpkumquat@consortium.net}}).} -%\date{30 July 1999} -%% Just remember to make sure that the TOTAL number of authors -%% is the number that will appear on the first page PLUS the -%% number that will appear in the \additionalauthors section. - -\maketitle +%\author{Julius P.~Kumquat} +%\affiliation{\institution{The Kumquat Consortium}} +%\email{jpkumquat@consortium.net} + +% The default list of authors is too long for headers} +\renewcommand{\shortauthors}{Firstname Lastname et. al.} + + + \begin{abstract} to be written \end{abstract} From ee660bd1d9734aba4b4a8387b49b0c82612e9d79 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Fri, 14 Dec 2018 04:23:29 +0100 Subject: [PATCH 343/446] Update main text of latex template according to biobjective template - one file for single, 2 or more algs --- .../templateBBOBLSmultiple.tex | 711 +++++++++++++----- .../latex-templates/templateBIOBJmultiple.tex | 2 +- 2 files changed, 524 insertions(+), 189 deletions(-) diff --git a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex index b26d70bdf..da58e994a 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex @@ -50,9 +50,35 @@ % \newcommand{\algDtables}{ALGO4} % forth argument in the post-processing % ... % location of pictures files -\newcommand{\bbobdatapath}{ppdata/} -\input{\bbobdatapath bbob_pproc_commands.tex} -\graphicspath{{\bbobdatapath\algsfolder}} +\newcommand{\bbobdatapath}{ppdata/} % change default output folder of COCO if desired + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% read in data and deal with the different number of algorithms: +\input{\bbobdatapath cocopp_commands.tex} +\ifthenelse{\isundefined{\numofalgs}} +{ + \newcommand{\numberofalgorithms}{one} +}{ + \ifthenelse{\equal{\numofalgs}{2}} + { + \newcommand{\numberofalgorithms}{two} + }{ + \newcommand{\numberofalgorithms}{three} + } +} + +\ifthenelse{\equal{\numberofalgorithms}{one}}{ + \graphicspath{{\bbobdatapath\algfolder}}}{ + \graphicspath{{\bbobdatapath\algsfolder}} +} + +\ifthenelse{\isundefined{\algorithmA}}{\newcommand{\algorithmA}{\algname}}{} +%\ifthenelse{\isundefined{\algorithmA}{\newcommand{\algorithmA}{\change{MY-ALGORITHM-NAME}}}{} % better use the previous line? +%% + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -73,6 +99,10 @@ \newcommand{\change}[1]{{\color{red} #1}} \newcommand{\TODO}[1]{{\color{orange} !!! #1 !!!}} \newcommand{\bbobls}{{\ttfamily bbob-largescale}\xspace} +\newcommand{\rot}[2][2.5]{ + \hspace*{-3.5\baselineskip}% + \begin{rotate}{90}\hspace{#1em}#2\vspace{0.5em} + \end{rotate}} %%%%%%%%%%%%%%%%%%%%%% END OF PREAMBLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -161,16 +191,33 @@ to be written \end{abstract} -% Add any ACM category that you feel is needed, not mandatory anymore -%\category{G.1.6}{Numerical Analysis}{Optimization}[global optimization, -%unconstrained optimization] -%\category{F.2.1}{Analysis of Algorithms and Problem Complexity}{Numerical Algorithms and Problems} -% Complete with anything that is needed -\terms{Algorithms} +% +% The code below should be generated by the tool at +% http://dl.acm.org/ccs.cfm +% Please copy and paste the code instead of the example below. +% + \begin{CCSXML} + + +10010147.10010178.10010205.10010208 +Computing methodologies~Continuous space search +500 + + +\end{CCSXML} + +\ccsdesc[500]{Computing methodologies~Continuous space search} + + +% We no longer use \terms command +%\terms{Algorithms} % Complete with anything that is needed -\keywords{Benchmarking, Black-box optimization} +\keywords{Benchmarking, Black-box optimization, Large scale optimization} + +\maketitle + % \section{Introduction} % @@ -178,25 +225,35 @@ % % \section{Experimental Procedure} % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{CPU Timing} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % note that the following text is just a proposal and can/should be changed to your needs: -In order to evaluate the CPU timing of the algorithm, we have run the \change{MY-ALGORITHM-NAME} on the \change{bbob test suite \cite{hansen2009fun}} with restarts for a maximum budget equal to \change{$400 (D + 2)$} function evaluations. The code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. +In order to evaluate the CPU timing of the algorithm, we have run the \change{\algorithmA} with restarts on the entire \bbobls test suite \cite{bbobls2018func} for $2 D$ function evaluations according to \cite{hansen2016exp}. The \change{C/Java/Matlab/Octave/Python} code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores \change{and (compile) options xxx}. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. +\ifthenelse{\equal{\numberofalgorithms}{one}}{}{ \change{repeat the above for any algorithm tested} - +} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Results} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Results from experiments according to \cite{hansen2016exp} and \cite{hansen2016perfass} on the -benchmark functions given in \cite{wp200901_2010,hansen2012fun} are -presented in Figures~\ref{fig:scaling}, \ref{fig:ECDFs05D} and -\ref{fig:ECDFs320D} and in Tables~\ref{tab:aRTs5} and~\ref{tab:aRTs20}. +benchmark functions given in \cite{bbobls2018func} are +presented in +%% +\ifthenelse{\equal{\numberofalgorithms}{one}}{ +Figures~\ref{fig:aRTgraphs}, \ref{fig:ECDFs}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs80} and \ref{tab:aRTs320}. +}{\ifthenelse{\equal{\numberofalgorithms}{two}}{ +Figures~\ref{fig:scaling}, \ref{fig:scatterplots}, \ref{fig:ECDFs} and \ref{fig:ECDFsingleOne}, and Tables~\ref{tab:aRTs}. +}{\ifthenelse{\equal{\numberofalgorithms}{three}}{ +Figures~\ref{fig:scaling}, \ref{fig:ECDFs}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs}. +}{}}} +%% The experiments were performed with COCO \cite{hansen2016cocoplat}, version -\change{1.0.1}, the plots were produced with version \change{1.0.4}. +\change{2.0}, the plots were produced with version \change{2.0}. The \textbf{average runtime (aRT)}, used in the figures and tables, depends on a given target function value, $\ftarget=\fopt+\Df$, and is @@ -204,10 +261,9 @@ \section{Results} evaluations executed during each trial while the best function value did not reach \ftarget, summed over all trials and divided by the number of trials that actually reached \ftarget\ -\cite{hansen2012exp,price1997dev}. \textbf{Statistical significance} -is tested with the rank-sum test for a given target $\Delta\ftarget$ -%($10^{-8}$ as in Figure~\ref{fig:scaling}) -using, for each trial, +\cite{hansen2012exp,price1997dev}. +\textbf{Statistical significance} is tested with the rank-sum test for a given +target $\Delta\ftarget$ using, for each trial, either the number of needed function evaluations to reach $\Delta\ftarget$ (inverted and multiplied by $-1$), or, if the target was not reached, the best $\Df$-value achieved, measured only up to @@ -215,254 +271,533 @@ \section{Results} unsuccessful trial under consideration. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifthenelse{\equal{\numberofalgorithms}{one}}{ + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Scaling of aRT with dimension %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{figure*} -\centering -\begin{tabular}{@{}c@{}c@{}c@{}c@{}} -\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f001}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f002}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f003}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f004}\\ -\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f005}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f006}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f007}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f008}\\ -\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f009}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f010}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f011}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f012}\\ -\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f013}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f014}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f015}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f016}\\ -\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f017}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f018}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f019}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f020}\\ -\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f021}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f022}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f023}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f024} +\begin{tabular}{l@{\hspace*{-0.0\textwidth}}l@{\hspace*{-0.0\textwidth}}l@{\hspace*{-0.0\textwidth}}l} +\includegraphics[width=0.24\textwidth]{ppfigdim_f001}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f002}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f003}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f004}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f005}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f006}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f007}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f008}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f009}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f010}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f011}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f012}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f013}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f014}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f015}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f016}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f017}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f018}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f019}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f020}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f021}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f022}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f023}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f024} \end{tabular} -\vspace*{-0.2cm} -\caption[Expected running time divided by dimension -versus dimension]{ -\label{fig:scaling} -% command defined in bbob_pproc_commands.tex: -\bbobppfigslegend{$f_1$ and $f_{24}$} % \algorithmA can be defined above, see above -} -% +\vspace{-3ex} + \caption{\label{fig:aRTgraphs} + \bbobppfigdimlegend{$f_1$ and $f_{24}$} + } \end{figure*} - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Empirical Cumulative Distribution Functions (ECDFs) per function group -% for dimension 5. + +% Table showing the average runtime (aRT in number of function +% evaluations) for functions $f_1$--$f_{24} for dimension 80$. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\rot}[2][2.5]{ - \hspace*{-3.5\baselineskip}% - \begin{rotate}{90}\hspace{#1em}#2 - \end{rotate}} -\newcommand{\includeperfprof}[1]{% include and annotate at the side - \input{\bbobdatapath #1}% - \includegraphics[width=0.4135\textwidth,trim=0mm 0mm 34mm 10mm, clip]{#1}% - \raisebox{.037\textwidth}{\parbox[b][.3\textwidth]{.0868\textwidth}{\begin{scriptsize} - \perfprofsidepanel % this is "\algaperfprof \vfill \algbperfprof \vfill" etc - \end{scriptsize}}} -} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{figure*} -\begin{tabular}{@{}c@{}c@{}} - separable fcts & moderate fcts \\ - \includeperfprof{pprldmany_80D_separ} & - \includeperfprof{pprldmany_80D_lcond} \\ -ill-conditioned fcts & multi-modal fcts \\ - \includeperfprof{pprldmany_80D_hcond} & - \includeperfprof{pprldmany_80D_multi} \\ - weakly structured multi-modal fcts & all functions\\ - \includeperfprof{pprldmany_80D_mult2} & - \includeperfprof{pprldmany_80D_noiselessall} - \end{tabular} -\caption{ -\label{fig:ECDFs80D} -\bbobECDFslegend{80} + + +\begin{table*}\tiny +%\hfill80-D\hfill~\\[1ex] +{\normalsize \color{red} +\ifthenelse{\isundefined{\algorithmG}}{}{more than 6 algorithms: please split the tables below by hand until it fits to the page limits} } -\end{figure*} +\mbox{\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\pptableheader + +\input{\bbobdatapath\algfolder pptable_f001_80D} +\input{\bbobdatapath\algfolder pptable_f002_80D} +\input{\bbobdatapath\algfolder pptable_f003_80D} +\input{\bbobdatapath\algfolder pptable_f004_80D} +\input{\bbobdatapath\algfolder pptable_f005_80D} +\input{\bbobdatapath\algfolder pptable_f006_80D} +\input{\bbobdatapath\algfolder pptable_f007_80D} +\input{\bbobdatapath\algfolder pptable_f008_80D} +\input{\bbobdatapath\algfolder pptable_f009_80D} +\input{\bbobdatapath\algfolder pptable_f010_80D} +\input{\bbobdatapath\algfolder pptable_f011_80D} +\input{\bbobdatapath\algfolder pptable_f012_80D} + +\pptablefooter +\end{minipage} +\hspace{0.002\textwidth} +\begin{minipage}[t]{0.499\textwidth}\tiny +\centering + +\pptableheader + +\input{\bbobdatapath\algfolder pptable_f013_80D} +\input{\bbobdatapath\algfolder pptable_f014_80D} +\input{\bbobdatapath\algfolder pptable_f015_80D} +\input{\bbobdatapath\algfolder pptable_f016_80D} +\input{\bbobdatapath\algfolder pptable_f017_80D} +\input{\bbobdatapath\algfolder pptable_f018_80D} +\input{\bbobdatapath\algfolder pptable_f019_80D} +\input{\bbobdatapath\algfolder pptable_f020_80D} +\input{\bbobdatapath\algfolder pptable_f021_80D} +\input{\bbobdatapath\algfolder pptable_f022_80D} +\input{\bbobdatapath\algfolder pptable_f023_80D} +\input{\bbobdatapath\algfolder pptable_f024_80D} + +\pptablefooter +\end{minipage}} + +\caption[Table of aRTs]{\label{tab:aRTs80}\bbobpptablecaption{dimension $80$} +} +\end{table*} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Empirical Cumulative Distribution Functions (ECDFs) per function group -% for dimension 20. + +% Table showing the average runtime (aRT in number of function +% evaluations) for functions $f_1$--$f_{24} for dimension 320$. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{figure*} - \begin{tabular}{@{}c@{}c@{}} - separable fcts & moderate fcts \\ - \includeperfprof{pprldmany_320D_separ} & - \includeperfprof{pprldmany_320D_lcond} \\ -ill-conditioned fcts & multi-modal fcts \\ - \includeperfprof{pprldmany_320D_hcond} & - \includeperfprof{pprldmany_320D_multi} \\ - weakly structured multi-modal fcts & all functions\\ - \includeperfprof{pprldmany_320D_mult2} & - \includeperfprof{pprldmany_320D_noiselessall} - \end{tabular} -\caption{ -\label{fig:ECDFs320D} -\bbobECDFslegend{320} +\begin{table*}\tiny +%\hfill320-D\hfill~\\[1ex] +\mbox{\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\pptableheader + +\input{\bbobdatapath\algfolder pptable_f001_320D} +\input{\bbobdatapath\algfolder pptable_f002_320D} +\input{\bbobdatapath\algfolder pptable_f003_320D} +\input{\bbobdatapath\algfolder pptable_f004_320D} +\input{\bbobdatapath\algfolder pptable_f005_320D} +\input{\bbobdatapath\algfolder pptable_f006_320D} +\input{\bbobdatapath\algfolder pptable_f007_320D} +\input{\bbobdatapath\algfolder pptable_f008_320D} +\input{\bbobdatapath\algfolder pptable_f009_320D} +\input{\bbobdatapath\algfolder pptable_f010_320D} +\input{\bbobdatapath\algfolder pptable_f011_320D} +\input{\bbobdatapath\algfolder pptable_f012_320D} + +\pptablefooter + +\end{minipage} +\hspace{0.002\textwidth} +\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\pptableheader + +\input{\bbobdatapath\algfolder pptable_f013_320D} +\input{\bbobdatapath\algfolder pptable_f014_320D} +\input{\bbobdatapath\algfolder pptable_f015_320D} +\input{\bbobdatapath\algfolder pptable_f016_320D} +\input{\bbobdatapath\algfolder pptable_f017_320D} +\input{\bbobdatapath\algfolder pptable_f018_320D} +\input{\bbobdatapath\algfolder pptable_f019_320D} +\input{\bbobdatapath\algfolder pptable_f020_320D} +\input{\bbobdatapath\algfolder pptable_f021_320D} +\input{\bbobdatapath\algfolder pptable_f022_320D} +\input{\bbobdatapath\algfolder pptable_f023_320D} +\input{\bbobdatapath\algfolder pptable_f024_320D} + +\pptablefooter + +\end{minipage}} + +\caption[Table of aRTs]{\label{tab:aRTs320}\bbobpptablecaption{dimension $320$} } -\end{figure*} +\end{table*} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Average runtime (aRT in number of function evaluations) -% divided by the best aRT measured during BBOB-2009 (given in the respective -% first row) for functions $f_1$--$f_{24}$ for dimension 5. +% Empirical cumulative distribution functions (ECDFs) per function group. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{table*}\tiny -%\hfill5-D\hfill~\\[1ex] -\mbox{\begin{minipage}[t]{0.499\textwidth}\tiny -\centering -\input{\bbobdatapath pptables_f001_80D} -\input{\bbobdatapath pptables_f002_80D} +\begin{figure*} +\begin{tabular}{l@{\hspace*{-0.00\textwidth}}l@{\hspace*{0.01\textwidth}}|l@{\hspace*{-0.00\textwidth}}l} +\multicolumn{2}{c}{$D=80$} & \multicolumn{2}{c}{$D=320$}\\[-0.5ex] +\rot[3]{all functions} +\includegraphics[width=0.2362\textwidth]{pprldistr_80D_noiselessall} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_noiselessall} & +\includegraphics[width=0.2362\textwidth]{pprldistr_320D_noiselessall} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_noiselessall} \\[-0.2em] +\rot[2.9]{separable fcts} +\includegraphics[width=0.2362\textwidth]{pprldistr_80D_separ} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_separ} & +\includegraphics[width=0.2362\textwidth]{pprldistr_320D_separ} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_separ} \\[-0.2em] +\rot[1.45]{misc.\ moderate fcts} +\includegraphics[width=0.2362\textwidth]{pprldistr_80D_lcond} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_lcond} & +\includegraphics[width=0.2362\textwidth]{pprldistr_320D_lcond} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_lcond} \\[-0.2em] +\rot[1.5]{ill-conditioned fcts} +\includegraphics[width=0.2362\textwidth]{pprldistr_80D_hcond} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_hcond} & +\includegraphics[width=0.2362\textwidth]{pprldistr_320D_hcond} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_hcond} \\[-0.2em] +\rot[2.3]{multi-modal fcts} +\includegraphics[width=0.2362\textwidth]{pprldistr_80D_multi} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_multi} & +\includegraphics[width=0.2362\textwidth]{pprldistr_320D_multi} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_multi} \\[-0.2em] +\rot[1.7]{weak structure fcts} +\includegraphics[width=0.2362\textwidth]{pprldistr_80D_mult2} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_mult2} & +\includegraphics[width=0.2362\textwidth]{pprldistr_320D_mult2} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_mult2} +\vspace*{-1ex} +\end{tabular} + \caption{\label{fig:ECDFs} + \bbobpprldistrlegend{} + } +\end{figure*} -\input{\bbobdatapath pptables_f003_80D} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\input{\bbobdatapath pptables_f004_80D} +% ECDFs per function -\input{\bbobdatapath pptables_f005_80D} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} +\centering +\begin{tabular}{l@{\hspace*{-0.00\textwidth}}l@{\hspace*{0.01\textwidth}}|l@{\hspace*{-0.00\textwidth}}l} +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f101}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f104}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f107}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f110}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f113}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f102}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f105}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f108}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f111}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f114}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f103}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f106}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f109}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f112}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f115}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f116}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f119}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f122}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f125}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f128}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f117}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f120}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f123}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f126} +\vspace*{-1ex} +\end{tabular} + \caption{\label{fig:ECDFsingleOne} + \bbobecdfcaptionsinglefunctionssingledim{$\!\!$s 20 to 640} +} +\end{figure*} -\input{\bbobdatapath pptables_f006_80D} -\input{\bbobdatapath pptables_f007_80D} -\input{\bbobdatapath pptables_f008_80D} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\input{\bbobdatapath pptables_f009_80D} +}{} % end of 1 algorithm template -\input{\bbobdatapath pptables_f010_80D} -\input{\bbobdatapath pptables_f011_80D} -\input{\bbobdatapath pptables_f012_80D} -\end{minipage} -\hspace{0.002\textwidth} -\begin{minipage}[t]{0.499\textwidth}\tiny -\centering -\input{\bbobdatapath pptables_f013_80D} -\input{\bbobdatapath pptables_f014_80D} +\ifthenelse{\equal{\numberofalgorithms}{two} \or \equal{\numberofalgorithms}{three}}{ -\input{\bbobdatapath pptables_f015_80D} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\input{\bbobdatapath pptables_f016_80D} +% Scaling of aRT with dimension -\input{\bbobdatapath pptables_f017_80D} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\input{\bbobdatapath pptables_f018_80D} +\begin{figure*} +\centering +\begin{tabular}{@{}c@{}c@{}c@{}c@{}} +\includegraphics[width=0.24\textwidth]{ppfigs_f001}& +\includegraphics[width=0.24\textwidth]{ppfigs_f002}& +\includegraphics[width=0.24\textwidth]{ppfigs_f003}& +\includegraphics[width=0.24\textwidth]{ppfigs_f004}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f005}& +\includegraphics[width=0.24\textwidth]{ppfigs_f006}& +\includegraphics[width=0.24\textwidth]{ppfigs_f007}& +\includegraphics[width=0.24\textwidth]{ppfigs_f008}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f009}& +\includegraphics[width=0.24\textwidth]{ppfigs_f010}& +\includegraphics[width=0.24\textwidth]{ppfigs_f011}& +\includegraphics[width=0.24\textwidth]{ppfigs_f012}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f013}& +\includegraphics[width=0.24\textwidth]{ppfigs_f014}& +\includegraphics[width=0.24\textwidth]{ppfigs_f015}& +\includegraphics[width=0.24\textwidth]{ppfigs_f016}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f017}& +\includegraphics[width=0.24\textwidth]{ppfigs_f018}& +\includegraphics[width=0.24\textwidth]{ppfigs_f019}& +\includegraphics[width=0.24\textwidth]{ppfigs_f020}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f021}& +\includegraphics[width=0.24\textwidth]{ppfigs_f022}& +\includegraphics[width=0.24\textwidth]{ppfigs_f023}& +\includegraphics[width=0.24\textwidth]{ppfigs_f024} +\end{tabular} +\vspace*{-0.3cm} +\caption[Average running time (\aRT) divided by dimension +versus dimension in log-log presentation]{ +\label{fig:scaling} +\bbobppfigslegend{$f_1$ and $f_{24}$}. +} +% +\end{figure*} -\input{\bbobdatapath pptables_f019_80D} -\input{\bbobdatapath pptables_f020_80D} -\input{\bbobdatapath pptables_f021_80D} -\input{\bbobdatapath pptables_f022_80D} -\input{\bbobdatapath pptables_f023_80D} -\input{\bbobdatapath pptables_f024_80D} -\end{minipage}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Empirical cumulative distribution functions (ECDFs) per function group. - \caption{\label{tab:aRTs80} - \bbobpptablesmanylegend{dimension $80$}{110} % Bonferroni correction: #dimensions * #functions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} + \begin{tabular}{l@{\hspace*{-0.00\textwidth}}l@{\hspace*{0.01\textwidth}}|l@{\hspace*{-0.00\textwidth}}l} + \multicolumn{2}{c}{80-D} & \multicolumn{2}{c}{320-D} \\ + \rot[2.9]{all functions} + \includegraphics[height=0.14\textheight]{pprldistr_80D_noiselessall} & + \includegraphics[height=0.14\textheight]{pplogabs_80D_noiselessall} & + \includegraphics[height=0.14\textheight]{pprldistr_320D_noiselessall} & + \includegraphics[height=0.14\textheight]{pplogabs_320D_noiselessall}\\ + \rot[2.7]{separable fcts} + \includegraphics[height=0.14\textheight]{pprldistr_80D_separ} & + \includegraphics[height=0.14\textheight]{pplogabs_80D_separ} & + \includegraphics[height=0.14\textheight]{pprldistr_320D_separ} & + \includegraphics[height=0.14\textheight]{pplogabs_320D_separ} \\ + \rot[2.75]{moderate fcts} + \includegraphics[height=0.14\textheight]{pprldistr_80D_lcond} & + \includegraphics[height=0.14\textheight]{pplogabs_80D_lcond} & + \includegraphics[height=0.14\textheight]{pprldistr_320D_lcond} & + \includegraphics[height=0.14\textheight]{pplogabs_320D_lcond}\\ + \rot[1.4]{ill-conditioned fcts} + \includegraphics[height=0.14\textheight]{pprldistr_80D_hcond} & + \includegraphics[height=0.14\textheight]{pplogabs_80D_hcond} & + \includegraphics[height=0.14\textheight]{pprldistr_320D_hcond} & + \includegraphics[height=0.14\textheight]{pplogabs_320D_hcond} \\ + \rot[2.1]{multi-modal fcts} + \includegraphics[height=0.14\textheight]{pprldistr_80D_multi} & + \includegraphics[height=0.14\textheight]{pplogabs_80D_multi} & + \includegraphics[height=0.14\textheight]{pprldistr_320D_multi} & + \includegraphics[height=0.14\textheight]{pplogabs_320D_multi} \\ + \rot[1.4]{weak structure fcts} + \includegraphics[height=0.14\textheight]{pprldistr_80D_mult2} & + \includegraphics[height=0.14\textheight]{pplogabs_80D_mult2} & + \includegraphics[height=0.14\textheight]{pprldistr_320D_mult2} & + \includegraphics[height=0.14\textheight]{pplogabs_320D_mult2}\\ + \end{tabular} +\vspace*{-0.2cm} + \caption{\label{fig:ECDFs} + \bbobpprldistrlegendtwo{} } -\end{table*} +\end{figure*} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Average runtime (aRT in number of function evaluations) -% divided by the best aRT measured during BBOB-2009 (given in the respective -% first row) for functions $f_1$--$f_{24}$ for dimension 20. +% ECDFs per function in dimension 160 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{table*}\tiny -%\hfill20-D\hfill~\\[1ex] -\mbox{\begin{minipage}[t]{0.499\textwidth}\tiny +\begin{figure*} \centering -\input{\bbobdatapath pptables_f001_320D} - -\input{\bbobdatapath pptables_f002_320D} - -\input{\bbobdatapath pptables_f003_320D} - -\input{\bbobdatapath pptables_f004_320D} - -\input{\bbobdatapath pptables_f005_320D} - -\input{\bbobdatapath pptables_f006_320D} +\begin{tabular}{@{}l@{}l@{}l@{}l@{}l@{}} +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f001_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f002_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f003_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f004_160D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f005_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f006_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f007_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f008_160D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f009_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f010_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f011_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f012_160D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f013_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f014_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f015_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f016_160D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f017_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f018_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f019_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f020_160D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f021_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f022_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f023_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f024_160D} +\end{tabular} + \caption{\label{fig:ECDFsingleOne} + \bbobecdfcaptionsinglefunctionssingledim{160} +} +\end{figure*} -\input{\bbobdatapath pptables_f007_320D} -\input{\bbobdatapath pptables_f008_320D} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Table showing the average runtime (aRT in number of function +% evaluations) divided by the best aRT measured during BBOB-2009 (given in the +% first row of each cell) for functions $f_1$--$f_{24}$. -\input{\bbobdatapath pptables_f009_320D} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*} +\mbox{\begin{minipage}[t]{0.495\textwidth} +\centering +80-D\\[5pt] +\tiny +\pptablesheader +\input{\bbobdatapath\algsfolder pptables_f001_80D} +\input{\bbobdatapath\algsfolder pptables_f002_80D} +\input{\bbobdatapath\algsfolder pptables_f003_80D} +\input{\bbobdatapath\algsfolder pptables_f004_80D} +\input{\bbobdatapath\algsfolder pptables_f005_80D} +\input{\bbobdatapath\algsfolder pptables_f006_80D} +\input{\bbobdatapath\algsfolder pptables_f007_80D} +\input{\bbobdatapath\algsfolder pptables_f008_80D} +\input{\bbobdatapath\algsfolder pptables_f009_80D} +\input{\bbobdatapath\algsfolder pptables_f010_80D} +\input{\bbobdatapath\algsfolder pptables_f011_80D} +\input{\bbobdatapath\algsfolder pptables_f012_80D} +\input{\bbobdatapath\algsfolder pptables_f013_80D} +\input{\bbobdatapath\algsfolder pptables_f014_80D} +\input{\bbobdatapath\algsfolder pptables_f015_80D} +\input{\bbobdatapath\algsfolder pptables_f016_80D} +\input{\bbobdatapath\algsfolder pptables_f017_80D} +\input{\bbobdatapath\algsfolder pptables_f018_80D} +\input{\bbobdatapath\algsfolder pptables_f019_80D} +\input{\bbobdatapath\algsfolder pptables_f020_80D} +\input{\bbobdatapath\algsfolder pptables_f021_80D} +\input{\bbobdatapath\algsfolder pptables_f022_80D} +\input{\bbobdatapath\algsfolder pptables_f023_80D} +\input{\bbobdatapath\algsfolder pptables_f024_80D} +\end{tabularx} +\end{minipage}} +\hspace{0.002\textwidth} +\mbox{\begin{minipage}[t]{0.495\textwidth} +\centering +320-D\\[5pt] +\tiny +\pptablesheader +\input{\bbobdatapath\algsfolder pptables_f001_320D} +\input{\bbobdatapath\algsfolder pptables_f002_320D} +\input{\bbobdatapath\algsfolder pptables_f003_320D} +\input{\bbobdatapath\algsfolder pptables_f004_320D} +\input{\bbobdatapath\algsfolder pptables_f005_320D} +\input{\bbobdatapath\algsfolder pptables_f006_320D} +\input{\bbobdatapath\algsfolder pptables_f007_320D} +\input{\bbobdatapath\algsfolder pptables_f008_320D} +\input{\bbobdatapath\algsfolder pptables_f009_320D} +\input{\bbobdatapath\algsfolder pptables_f010_320D} +\input{\bbobdatapath\algsfolder pptables_f011_320D} +\input{\bbobdatapath\algsfolder pptables_f012_320D} +\input{\bbobdatapath\algsfolder pptables_f013_320D} +\input{\bbobdatapath\algsfolder pptables_f014_320D} +\input{\bbobdatapath\algsfolder pptables_f015_320D} +\input{\bbobdatapath\algsfolder pptables_f016_320D} +\input{\bbobdatapath\algsfolder pptables_f017_320D} +\input{\bbobdatapath\algsfolder pptables_f018_320D} +\input{\bbobdatapath\algsfolder pptables_f019_320D} +\input{\bbobdatapath\algsfolder pptables_f020_320D} +\input{\bbobdatapath\algsfolder pptables_f021_320D} +\input{\bbobdatapath\algsfolder pptables_f022_320D} +\input{\bbobdatapath\algsfolder pptables_f023_320D} +\input{\bbobdatapath\algsfolder pptables_f024_320D} +\end{tabularx} +\end{minipage}} -\input{\bbobdatapath pptables_f010_320D} +\caption{\label{tab:aRTs} +\bbobpptablesmanylegend{dimensions $80$ (left) and $320$ (right)} +} +\end{table*} -\input{\bbobdatapath pptables_f011_320D} -\input{\bbobdatapath pptables_f012_320D} -\end{minipage} -\hspace{0.002\textwidth} -\begin{minipage}[t]{0.499\textwidth}\tiny -\centering -\input{\bbobdatapath pptables_f013_320D} +}{} % end of all that comes for 2 or 3+ algorithms -\input{\bbobdatapath pptables_f014_320D} -\input{\bbobdatapath pptables_f015_320D} -\input{\bbobdatapath pptables_f016_320D} +\ifthenelse{\equal{\numberofalgorithms}{two}}{ -\input{\bbobdatapath pptables_f017_320D} -\input{\bbobdatapath pptables_f018_320D} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Scatter plots per function. -\input{\bbobdatapath pptables_f019_320D} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\input{\bbobdatapath pptables_f020_320D} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\input{\bbobdatapath pptables_f021_320D} +\begin{figure*} +\begin{tabular}{*{4}{@{}c@{}}} + \includegraphics[height=0.2\textwidth]{ppscatter_f001}& + \includegraphics[height=0.2\textwidth]{ppscatter_f002}& + \includegraphics[height=0.2\textwidth]{ppscatter_f003}& + \includegraphics[height=0.2\textwidth]{ppscatter_f004}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f005}& + \includegraphics[height=0.2\textwidth]{ppscatter_f006}& + \includegraphics[height=0.2\textwidth]{ppscatter_f007}& + \includegraphics[height=0.2\textwidth]{ppscatter_f008}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f009}& + \includegraphics[height=0.2\textwidth]{ppscatter_f010}& + \includegraphics[height=0.2\textwidth]{ppscatter_f011}& + \includegraphics[height=0.2\textwidth]{ppscatter_f012}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f013}& + \includegraphics[height=0.2\textwidth]{ppscatter_f014}& + \includegraphics[height=0.2\textwidth]{ppscatter_f015}& + \includegraphics[height=0.2\textwidth]{ppscatter_f016}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f017}& + \includegraphics[height=0.2\textwidth]{ppscatter_f018}& + \includegraphics[height=0.2\textwidth]{ppscatter_f019}& + \includegraphics[height=0.2\textwidth]{ppscatter_f020}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f021}& + \includegraphics[height=0.2\textwidth]{ppscatter_f022}& + \includegraphics[height=0.2\textwidth]{ppscatter_f023}& + \includegraphics[height=0.2\textwidth]{ppscatter_f024} +\end{tabular} +\caption{\label{fig:scatterplots} +\bbobppscatterlegend{$f_1$--$f_{24}$} +} +\end{figure*} -\input{\bbobdatapath pptables_f022_320D} -\input{\bbobdatapath pptables_f023_320D} -\input{\bbobdatapath pptables_f024_320D} -\end{minipage}} - \caption{\label{tab:aRTs320} - \bbobpptablesmanylegend{dimension $320$}{110} % Bonferroni correction: #dimensions * #functions } -\end{table*} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/code-postprocessing/latex-templates/templateBIOBJmultiple.tex b/code-postprocessing/latex-templates/templateBIOBJmultiple.tex index 7c311b1f9..138acb44e 100644 --- a/code-postprocessing/latex-templates/templateBIOBJmultiple.tex +++ b/code-postprocessing/latex-templates/templateBIOBJmultiple.tex @@ -49,7 +49,7 @@ % \newcommand{\algAtables}{ALGO1} % first argument in the post-processing % \newcommand{\algBtables}{ALGO2} % second argument in the post-processing % \newcommand{\algCtables}{ALGO3} % third argument in the post-processing -% \newcommand{\algDtables}{ALGO4} % forth argument in the post-processing +% \newcommand{\algDtables}{ALGO4} % fourth argument in the post-processing % ... % location of pictures files \newcommand{\bbobdatapath}{ppdata/} % change default output folder of COCO if desired From 26ba06ebcb88c66446d213b030aefcf2accda5fd Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Sun, 16 Dec 2018 17:14:30 +0100 Subject: [PATCH 344/446] Update main text of latex template - one file for single, 2 or more algs --- .../templateBBOBLSmultiple.tex | 132 +++++++++--------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex index da58e994a..7adf5093d 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex @@ -247,9 +247,9 @@ \section{Results} \ifthenelse{\equal{\numberofalgorithms}{one}}{ Figures~\ref{fig:aRTgraphs}, \ref{fig:ECDFs}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs80} and \ref{tab:aRTs320}. }{\ifthenelse{\equal{\numberofalgorithms}{two}}{ -Figures~\ref{fig:scaling}, \ref{fig:scatterplots}, \ref{fig:ECDFs} and \ref{fig:ECDFsingleOne}, and Tables~\ref{tab:aRTs}. +Figures~\ref{fig:scaling}, \ref{fig:scatterplots}, \ref{fig:ECDFs80D}, \ref{fig:ECDFs320D} and \ref{fig:ECDFsingleOne}, and Tables~\ref{tab:aRTs}. }{\ifthenelse{\equal{\numberofalgorithms}{three}}{ -Figures~\ref{fig:scaling}, \ref{fig:ECDFs}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs}. +Figures~\ref{fig:scaling}, \ref{fig:ECDFs80D}, \ref{fig:ECDFs320D}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs}. }{}}} %% The experiments were performed with COCO \cite{hansen2016cocoplat}, version @@ -486,30 +486,30 @@ \section{Results} \begin{figure*} \centering \begin{tabular}{l@{\hspace*{-0.00\textwidth}}l@{\hspace*{0.01\textwidth}}|l@{\hspace*{-0.00\textwidth}}l} -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f101}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f104}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f107}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f110}\\[-0.2em] -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f113}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f102}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f105}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f108}\\[-0.2em] -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f111}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f114}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f103}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f106}\\[-0.2em] -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f109}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f112}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f115}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f116}\\[-0.2em] -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f119}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f122}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f125}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f128}\\[-0.2em] -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f117}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f120}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f123}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f126} +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f001}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f002}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f003}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f004}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f005}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f006}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f007}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f008}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f009}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f010}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f011}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f012}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f013}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f014}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f015}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f016}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f017}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f018}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f019}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f020}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f021}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f022}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f023}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f024} \vspace*{-1ex} \end{tabular} \caption{\label{fig:ECDFsingleOne} @@ -564,7 +564,7 @@ \section{Results} \includegraphics[width=0.24\textwidth]{ppfigs_f023}& \includegraphics[width=0.24\textwidth]{ppfigs_f024} \end{tabular} -\vspace*{-0.3cm} +\vspace*{-0.2cm} \caption[Average running time (\aRT) divided by dimension versus dimension in log-log presentation]{ \label{fig:scaling} @@ -581,50 +581,47 @@ \section{Results} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Empirical cumulative distribution functions (ECDFs) per function group. +% Empirical cumulative distribution functions (ECDFs) per function group +% for dimensions 80 and 320 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \begin{figure*} - \begin{tabular}{l@{\hspace*{-0.00\textwidth}}l@{\hspace*{0.01\textwidth}}|l@{\hspace*{-0.00\textwidth}}l} - \multicolumn{2}{c}{80-D} & \multicolumn{2}{c}{320-D} \\ - \rot[2.9]{all functions} - \includegraphics[height=0.14\textheight]{pprldistr_80D_noiselessall} & - \includegraphics[height=0.14\textheight]{pplogabs_80D_noiselessall} & - \includegraphics[height=0.14\textheight]{pprldistr_320D_noiselessall} & - \includegraphics[height=0.14\textheight]{pplogabs_320D_noiselessall}\\ - \rot[2.7]{separable fcts} - \includegraphics[height=0.14\textheight]{pprldistr_80D_separ} & - \includegraphics[height=0.14\textheight]{pplogabs_80D_separ} & - \includegraphics[height=0.14\textheight]{pprldistr_320D_separ} & - \includegraphics[height=0.14\textheight]{pplogabs_320D_separ} \\ - \rot[2.75]{moderate fcts} - \includegraphics[height=0.14\textheight]{pprldistr_80D_lcond} & - \includegraphics[height=0.14\textheight]{pplogabs_80D_lcond} & - \includegraphics[height=0.14\textheight]{pprldistr_320D_lcond} & - \includegraphics[height=0.14\textheight]{pplogabs_320D_lcond}\\ - \rot[1.4]{ill-conditioned fcts} - \includegraphics[height=0.14\textheight]{pprldistr_80D_hcond} & - \includegraphics[height=0.14\textheight]{pplogabs_80D_hcond} & - \includegraphics[height=0.14\textheight]{pprldistr_320D_hcond} & - \includegraphics[height=0.14\textheight]{pplogabs_320D_hcond} \\ - \rot[2.1]{multi-modal fcts} - \includegraphics[height=0.14\textheight]{pprldistr_80D_multi} & - \includegraphics[height=0.14\textheight]{pplogabs_80D_multi} & - \includegraphics[height=0.14\textheight]{pprldistr_320D_multi} & - \includegraphics[height=0.14\textheight]{pplogabs_320D_multi} \\ - \rot[1.4]{weak structure fcts} - \includegraphics[height=0.14\textheight]{pprldistr_80D_mult2} & - \includegraphics[height=0.14\textheight]{pplogabs_80D_mult2} & - \includegraphics[height=0.14\textheight]{pprldistr_320D_mult2} & - \includegraphics[height=0.14\textheight]{pplogabs_320D_mult2}\\ + \begin{tabular}{@{}c@{\hspace*{0.05\textwidth}}c@{}} + separable fcts & moderate fcts \\ + \includeperfprof{pprldmany_80D_separ} & + \includeperfprof{pprldmany_80D_lcond} \\ +ill-conditioned fcts & multi-modal fcts \\ + \includeperfprof{pprldmany_80D_hcond} & + \includeperfprof{pprldmany_80D_multi} \\ + weakly structured multi-modal fcts & all functions\\ + \includeperfprof{pprldmany_80D_mult2} & + \includeperfprof{pprldmany_80D_noiselessall} \end{tabular} -\vspace*{-0.2cm} - \caption{\label{fig:ECDFs} - \bbobpprldistrlegendtwo{} - } +\caption{ +\label{fig:ECDFs80D} +\bbobECDFslegend{80} +} \end{figure*} +\begin{figure*} + \begin{tabular}{@{}c@{\hspace*{0.05\textwidth}}c@{}} + separable fcts & moderate fcts \\ + \includeperfprof{pprldmany_320D_separ} & + \includeperfprof{pprldmany_320D_lcond} \\ +ill-conditioned fcts & multi-modal fcts \\ + \includeperfprof{pprldmany_320D_hcond} & + \includeperfprof{pprldmany_320D_multi} \\ + weakly structured multi-modal fcts & all functions\\ + \includeperfprof{pprldmany_320D_mult2} & + \includeperfprof{pprldmany_320D_noiselessall} + \end{tabular} +\caption{ +\label{fig:ECDFs320D} +\bbobECDFslegend{320} +} +\end{figure*} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -670,11 +667,14 @@ \section{Results} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Table showing the average runtime (aRT in number of function -% evaluations) divided by the best aRT measured during BBOB-2009 (given in the -% first row of each cell) for functions $f_1$--$f_{24}$. +% evaluations) for functions $f_1$--$f_{24}$. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{table*} +%\hfill80-D\hfill~\\[1ex] +{\normalsize \color{red} +\ifthenelse{\isundefined{\algorithmG}}{}{more than 6 algorithms: please split the tables below by hand until it fits to the page limits} +} \mbox{\begin{minipage}[t]{0.495\textwidth} \centering 80-D\\[5pt] From 7e19e73ed910d6961e1dd54d5b30a5c15ae96926 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Sun, 16 Dec 2018 17:16:46 +0100 Subject: [PATCH 345/446] remove files - keep one file for 1, 2 or more algs --- .../latex-templates/templateBBOBLSarticle.tex | 1023 +++++++++++------ .../latex-templates/templateBBOBLScmp.tex | 481 -------- .../templateBBOBLSmultiple.tex | 822 ------------- 3 files changed, 696 insertions(+), 1630 deletions(-) delete mode 100644 code-postprocessing/latex-templates/templateBBOBLScmp.tex delete mode 100644 code-postprocessing/latex-templates/templateBBOBLSmultiple.tex diff --git a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex index 190753536..7adf5093d 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex @@ -1,93 +1,91 @@ -% This is "sig-alternate.tex" V2.1 April 2013 -% This file should be compiled with V2.5 of "sig-alternate.cls" May 2012 -% -% This example file demonstrates the use of the 'sig-alternate.cls' -% V2.5 LaTeX2e document class file. It is for those submitting -% articles to ACM Conference Proceedings WHO DO NOT WISH TO -% STRICTLY ADHERE TO THE SIGS (PUBS-BOARD-ENDORSED) STYLE. -% The 'sig-alternate.cls' file will produce a similar-looking, -% albeit, 'tighter' paper resulting in, invariably, fewer pages. -% -% ---------------------------------------------------------------------------------------------------------------- -% This .tex file (and associated .cls V2.5) produces: -% 1) The Permission Statement -% 2) The Conference (location) Info information -% 3) The Copyright Line with ACM data -% 4) NO page numbers -% -% as against the acm_proc_article-sp.cls file which -% DOES NOT produce 1) thru' 3) above. -% -% Using 'sig-alternate.cls' you have control, however, from within -% the source .tex file, over both the CopyrightYear -% (defaulted to 200X) and the ACM Copyright Data -% (defaulted to X-XXXXX-XX-X/XX/XX). -% e.g. -% \CopyrightYear{2007} will cause 2007 to appear in the copyright line. -% \crdata{0-12345-67-8/90/12} will cause 0-12345-67-8/90/12 to appear in the copyright line. -% -% --------------------------------------------------------------------------------------------------------------- -% This .tex source is an example which *does* use -% the .bib file (from which the .bbl file % is produced). -% REMEMBER HOWEVER: After having produced the .bbl file, -% and prior to final submission, you *NEED* to 'insert' -% your .bbl file into your source .tex file so as to provide -% ONE 'self-contained' source file. -% -% ================= IF YOU HAVE QUESTIONS ======================= -% Questions regarding the SIGS styles, SIGS policies and -% procedures, Conferences etc. should be sent to -% Adrienne Griscti (griscti@acm.org) -% -% Technical questions _only_ to -% Gerald Murray (murray@hq.acm.org) -% -% Technical questions related to COCO/BBOB to bbob@lri.fr -% =============================================================== -% -% For tracking purposes - this is V2.0 - May 2012 - -\documentclass{sig-alternate} +\documentclass[sigconf]{acmart} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages +\usepackage{booktabs} % For formal tables \usepackage{graphicx} \usepackage{rotating} -\usepackage[dvipsnames]{xcolor} % color is sufficient -%\usepackage[hidelinks]{hyperref} % make COCO papers clickable - - -\pdfpagewidth=8.5in -\pdfpageheight=11in -\special{papersize=8.5in,11in} - - \renewcommand{\topfraction}{1} % max fraction of floats at top - \renewcommand{\bottomfraction}{1} % max fraction of floats at bottom - % Parameters for TEXT pages (not float pages): - \setcounter{topnumber}{3} - \setcounter{bottomnumber}{3} - \setcounter{totalnumber}{3} % 2 may work better - \setcounter{dbltopnumber}{4} % for 2-column pages - \renewcommand{\dbltopfraction}{1} % fit big float above 2-col. text - \renewcommand{\textfraction}{0.0} % allow minimal text w. figs - % Parameters for FLOAT pages (not text pages): - \renewcommand{\floatpagefraction}{0.80} % require fuller float pages - % N.B.: floatpagefraction MUST be less than topfraction !! - \renewcommand{\dblfloatpagefraction}{0.7} % require fuller float pages +\usepackage{tabularx} +\usepackage{xspace} +\usepackage{float} +\usepackage{xstring} % for string operations +\usepackage{wasysym} % Table legend with symbols input from post-processing +\usepackage{MnSymbol} % Table legend with symbols input from post-processing +\usepackage{ifthen} + +% Copyright +%\setcopyright{none} +%\setcopyright{acmcopyright} +%\setcopyright{acmlicensed} +\setcopyright{rightsretained} +%\setcopyright{usgov} +%\setcopyright{usgovmixed} +%\setcopyright{cagov} +%\setcopyright{cagovmixed} + + +% DOI +\acmDOI{10.1145/123_4} + +% ISBN +\acmISBN{123-4567-24-567/18/07} + +%Conference +\acmConference[GECCO '18]{the Genetic and Evolutionary Computation Conference 2018}{July 15--19, 2018}{Kyoto, Japan} +\acmYear{2018} +\copyrightyear{2018} + +\acmPrice{15.00} + -%%%%%%%%%%%%%%%%%%%%%% END OF PREAMBLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% TO BE EDITED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% rungeneric.py writes data into a subfolder of ppdata -\newcommand{\bbobdatapath}{ppdata/} % default output folder of rungeneric.py -\input{\bbobdatapath bbob_pproc_commands.tex} % provide default of algname and algfolder -% \renewcommand{\algname}{MYNAME} % name of algorithm as it should appear in the text -% \renewcommand{\algfolder}{ABC/} % subfolder of \bbobdatapath for processed algorithm + +% Algorithm names as they appear in the tables, uncomment and adapt if necessary +% \newcommand{\algAtables}{ALGO1} % first argument in the post-processing +% \newcommand{\algBtables}{ALGO2} % second argument in the post-processing +% \newcommand{\algCtables}{ALGO3} % third argument in the post-processing +% \newcommand{\algDtables}{ALGO4} % forth argument in the post-processing +% ... +% location of pictures files +\newcommand{\bbobdatapath}{ppdata/} % change default output folder of COCO if desired + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% read in data and deal with the different number of algorithms: +\input{\bbobdatapath cocopp_commands.tex} +\ifthenelse{\isundefined{\numofalgs}} +{ + \newcommand{\numberofalgorithms}{one} +}{ + \ifthenelse{\equal{\numofalgs}{2}} + { + \newcommand{\numberofalgorithms}{two} + }{ + \newcommand{\numberofalgorithms}{three} + } +} + +\ifthenelse{\equal{\numberofalgorithms}{one}}{ + \graphicspath{{\bbobdatapath\algfolder}}}{ + \graphicspath{{\bbobdatapath\algsfolder}} +} + +\ifthenelse{\isundefined{\algorithmA}}{\newcommand{\algorithmA}{\algname}}{} +%\ifthenelse{\isundefined{\algorithmA}{\newcommand{\algorithmA}{\change{MY-ALGORITHM-NAME}}}{} % better use the previous line? +%% + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\graphicspath{{\bbobdatapath\algfolder}} + +% pre-defined commands \newcommand{\DIM}{\ensuremath{\mathrm{DIM}}} \newcommand{\aRT}{\ensuremath{\mathrm{aRT}}} \newcommand{\FEvals}{\ensuremath{\mathrm{FEvals}}} @@ -99,191 +97,214 @@ \newcommand{\ftarget}{\ensuremath{f_\mathrm{t}}} \newcommand{\CrE}{\ensuremath{\mathrm{CrE}}} \newcommand{\change}[1]{{\color{red} #1}} +\newcommand{\TODO}[1]{{\color{orange} !!! #1 !!!}} +\newcommand{\bbobls}{{\ttfamily bbob-largescale}\xspace} +\newcommand{\rot}[2][2.5]{ + \hspace*{-3.5\baselineskip}% + \begin{rotate}{90}\hspace{#1em}#2\vspace{0.5em} + \end{rotate}} + + +%%%%%%%%%%%%%%%%%%%%%% END OF PREAMBLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} -% -% --- Author Metadata here --- -\conferenceinfo{GECCO'13,} {July 6-10, 2013, Amsterdam, The Netherlands.} -\CopyrightYear{2013} -\crdata{TBA} -\clubpenalty=10000 -\widowpenalty = 10000 -% --- End of Author Metadata --- - -\title{Black-Box Optimization Benchmarking Template for Noiseless Function -Testbed -% \titlenote{If needed} -} -\subtitle{Draft version -\titlenote{Submission deadline: March 28th.}} -%Camera-ready paper due April 17th.}} + +\title{Black-Box Optimization Benchmarking Template for the Comparison of Multiple Algorithms on the \bbobls Testbed} +\renewcommand{\shorttitle}{Template to Compare Multiple Algorithms on the \bbobls Testbed} +\titlenote{Submission deadline: March 31st.} +%Camera-ready paper due April 24th.}} +\subtitle{Draft version} + + + +\author{Firstname Lastname} +%\authornote{tba if needed} +%\orcid{1234-5678-9012} +%\affiliation{% +% \institution{Institute for Clarity in Documentation} +% \streetaddress{P.O. Box 1212} +% \city{Dublin} +% \state{Ohio} +% \postcode{43017-6221} +%} +%\email{trovato@corporation.com} % -% You need the command \numberofauthors to handle the 'placement -% and alignment' of the authors beneath the title. -% -% For aesthetic reasons, we recommend 'three authors at a time' -% i.e. three 'name/affiliation blocks' be placed beneath the title. +%\author{G.K.M. Tobin} +%\authornote{The secretary disavows any knowledge of this author's actions.} +%\affiliation{% +% \institution{Institute for Clarity in Documentation} +% \streetaddress{P.O. Box 1212} +% \city{Dublin} +% \state{Ohio} +% \postcode{43017-6221} +%} +%\email{webmaster@marysville-ohio.com} % -% NOTE: You are NOT restricted in how many 'rows' of -% "name/affiliations" may appear. We just ask that you restrict -% the number of 'columns' to three. +%\author{Lars Th{\o}rv{\"a}ld} +%\authornote{This author is the +% one who did all the really hard work.} +%\affiliation{% +% \institution{The Th{\o}rv{\"a}ld Group} +% \streetaddress{1 Th{\o}rv{\"a}ld Circle} +% \city{Hekla} +% \country{Iceland}} +%\email{larst@affiliation.org} % -% Because of the available 'opening page real-estate' -% we ask you to refrain from putting more than six authors -% (two rows with three columns) beneath the article title. -% More than six makes the first-page appear very cluttered indeed. +%\author{Lawrence P. Leipuner} +%\affiliation{ +% \institution{Brookhaven Laboratories} +% \streetaddress{P.O. Box 5000}} +%\email{lleipuner@researchlabs.org} % -% Use the \alignauthor commands to handle the names -% and affiliations for an 'aesthetic maximum' of six authors. -% Add names, affiliations, addresses for -% the seventh etc. author(s) as the argument for the -% \additionalauthors command. -% These 'additional authors' will be output/set for you -% without further effort on your part as the last section in -% the body of your article BEFORE References or any Appendices. - -\numberofauthors{1} % in this sample file, there are a *total* -% of EIGHT authors. SIX appear on the 'first-page' (for formatting -% reasons) and the remaining two appear in the \additionalauthors section. +%\author{Sean Fogarty} +%\affiliation{% +% \institution{NASA Ames Research Center} +% \city{Moffett Field} +% \state{California} +% \postcode{94035}} +%\email{fogartys@amesres.org} % -\author{ -% You can go ahead and credit any number of authors here, -% e.g. one 'row of three' or two rows (consisting of one row of three -% and a second row of one, two or three). +%\author{Charles Palmer} +%\affiliation{% +% \institution{Palmer Research Laboratories} +% \streetaddress{8600 Datapoint Drive} +% \city{San Antonio} +% \state{Texas} +% \postcode{78229}} +%\email{cpalmer@prl.com} % -% The command \alignauthor (no curly braces needed) should -% precede each author name, affiliation/snail-mail address and -% e-mail address. Additionally, tag each line of -% affiliation/address with \affaddr, and tag the -% e-mail address with \email. +%\author{John Smith} +%\affiliation{\institution{The Th{\o}rv{\"a}ld Group}} +%\email{jsmith@affiliation.org} % -% 1st. author -\alignauthor -Forename Name\\ %\titlenote{Dr.~Trovato insisted his name be first.}\\ -% \affaddr{Institute for Clarity in Documentation}\\ -% \affaddr{1932 Wallamaloo Lane}\\ -% \affaddr{Wallamaloo, New Zealand}\\ -% \email{trovato@corporation.com} -%% 2nd. author -%\alignauthor -%G.K.M. Tobin\titlenote{The secretary disavows -%any knowledge of this author's actions.}\\ -% \affaddr{Institute for Clarity in Documentation}\\ -% \affaddr{P.O. Box 1212}\\ -% \affaddr{Dublin, Ohio 43017-6221}\\ -% \email{webmaster@marysville-ohio.com} -%% 3rd. author -%\alignauthor Lars Th{\o}rv{\"a}ld\titlenote{This author is the -%one who did all the really hard work.}\\ -% \affaddr{The Th{\o}rv{\"a}ld Group}\\ -% \affaddr{1 Th{\o}rv{\"a}ld Circle}\\ -% \affaddr{Hekla, Iceland}\\ -% \email{larst@affiliation.org} -%\and % use '\and' if you need 'another row' of author names -%% 4th. author -%\alignauthor Lawrence P. Leipuner\\ -% \affaddr{Brookhaven Laboratories}\\ -% \affaddr{Brookhaven National Lab}\\ -% \affaddr{P.O. Box 5000}\\ -% \email{lleipuner@researchlabs.org} -%% 5th. author -%\alignauthor Sean Fogarty\\ -% \affaddr{NASA Ames Research Center}\\ -% \affaddr{Moffett Field}\\ -% \affaddr{California 94035}\\ -% \email{fogartys@amesres.org} -%% 6th. author -%\alignauthor Charles Palmer\\ -% \affaddr{Palmer Research Laboratories}\\ -% \affaddr{8600 Datapoint Drive}\\ -% \affaddr{San Antonio, Texas 78229}\\ -% \email{cpalmer@prl.com} -} % author -%% There's nothing stopping you putting the seventh, eighth, etc. -%% author on the opening page (as the 'third row') but we ask, -%% for aesthetic reasons that you place these 'additional authors' -%% in the \additional authors block, viz. -%\additionalauthors{Additional authors: John Smith (The Th{\o}rv{\"a}ld Group, -%email: {\texttt{jsmith@affiliation.org}}) and Julius P.~Kumquat -%(The Kumquat Consortium, email: {\texttt{jpkumquat@consortium.net}}).} -%\date{30 July 1999} -%% Just remember to make sure that the TOTAL number of authors -%% is the number that will appear on the first page PLUS the -%% number that will appear in the \additionalauthors section. +%\author{Julius P.~Kumquat} +%\affiliation{\institution{The Kumquat Consortium}} +%\email{jpkumquat@consortium.net} + +% The default list of authors is too long for headers} +\renewcommand{\shortauthors}{Firstname Lastname et. al.} + + -\maketitle \begin{abstract} to be written \end{abstract} -% Add any ACM category that you feel is needed, not mandatory anymore -%\category{G.1.6}{Numerical Analysis}{Optimization}[global optimization, -%unconstrained optimization] -%\category{F.2.1}{Analysis of Algorithms and Problem Complexity}{Numerical Algorithms and Problems} -% Complete with anything that is needed -\terms{Algorithms} +% +% The code below should be generated by the tool at +% http://dl.acm.org/ccs.cfm +% Please copy and paste the code instead of the example below. +% + \begin{CCSXML} + + +10010147.10010178.10010205.10010208 +Computing methodologies~Continuous space search +500 + + +\end{CCSXML} + +\ccsdesc[500]{Computing methodologies~Continuous space search} + + +% We no longer use \terms command +%\terms{Algorithms} % Complete with anything that is needed -\keywords{Benchmarking, Black-box optimization} +\keywords{Benchmarking, Black-box optimization, Large scale optimization} + +\maketitle + % \section{Introduction} % % \section{Algorithm Presentation} % % \section{Experimental Procedure} -% \subsection{Parameter Tuning} % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{CPU Timing} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % note that the following text is just a proposal and can/should be changed to your needs: -In order to evaluate the CPU timing of the algorithm, we have run the \change{MY-ALGORITHM-NAME} on the \change{bbob test suite \cite{hansen2009fun}} with restarts for a maximum budget equal to \change{$400 (D + 2)$} function evaluations. The code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. +In order to evaluate the CPU timing of the algorithm, we have run the \change{\algorithmA} with restarts on the entire \bbobls test suite \cite{bbobls2018func} for $2 D$ function evaluations according to \cite{hansen2016exp}. The \change{C/Java/Matlab/Octave/Python} code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores \change{and (compile) options xxx}. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. +\ifthenelse{\equal{\numberofalgorithms}{one}}{}{ +\change{repeat the above for any algorithm tested} +} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Results} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Results of \algname\ from experiments according to \cite{hansen2016exp} and \cite{hansen2016perfass} on the benchmark -functions given in \cite{wp200901_2010,hansen2012fun} are presented in -Figures~\ref{fig:aRTgraphs}, \ref{fig:RLDs}, \ref{tab:aRTloss}, and \ref{fig:aRTlogloss} and in -Tables~\ref{tab:aRTs}. The experiments were performed with COCO \cite{hansen2016cocoplat}, version \change{1.0.1}, the plots were produced with version \change{1.0.4}. +Results from experiments according to \cite{hansen2016exp} and \cite{hansen2016perfass} on the +benchmark functions given in \cite{bbobls2018func} are +presented in +%% +\ifthenelse{\equal{\numberofalgorithms}{one}}{ +Figures~\ref{fig:aRTgraphs}, \ref{fig:ECDFs}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs80} and \ref{tab:aRTs320}. +}{\ifthenelse{\equal{\numberofalgorithms}{two}}{ +Figures~\ref{fig:scaling}, \ref{fig:scatterplots}, \ref{fig:ECDFs80D}, \ref{fig:ECDFs320D} and \ref{fig:ECDFsingleOne}, and Tables~\ref{tab:aRTs}. +}{\ifthenelse{\equal{\numberofalgorithms}{three}}{ +Figures~\ref{fig:scaling}, \ref{fig:ECDFs80D}, \ref{fig:ECDFs320D}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs}. +}{}}} +%% +The experiments were performed with COCO \cite{hansen2016cocoplat}, version +\change{2.0}, the plots were produced with version \change{2.0}. + +The \textbf{average runtime (aRT)}, used in the figures and tables, +depends on a given target function value, $\ftarget=\fopt+\Df$, and is +computed over all relevant trials as the number of function +evaluations executed during each trial while the best function value +did not reach \ftarget, summed over all trials and divided by the +number of trials that actually reached \ftarget\ +\cite{hansen2012exp,price1997dev}. +\textbf{Statistical significance} is tested with the rank-sum test for a given +target $\Delta\ftarget$ using, for each trial, +either the number of needed function evaluations to reach +$\Delta\ftarget$ (inverted and multiplied by $-1$), or, if the target +was not reached, the best $\Df$-value achieved, measured only up to +the smallest number of overall function evaluations for any +unsuccessful trial under consideration. + + +\ifthenelse{\equal{\numberofalgorithms}{one}}{ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Scaling of aRT with dimension %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{figure*} -\begin{tabular}{l@{\hspace*{-0.025\textwidth}}l@{\hspace*{-0.025\textwidth}}l@{\hspace*{-0.025\textwidth}}l} -\includegraphics[width=0.268\textwidth]{ppfigdim_f001}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f002}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f003}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f004}\\[-2.2ex] -\includegraphics[width=0.268\textwidth]{ppfigdim_f005}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f006}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f007}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f008}\\[-2.2ex] -\includegraphics[width=0.268\textwidth]{ppfigdim_f009}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f010}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f011}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f012}\\[-2.2ex] -\includegraphics[width=0.268\textwidth]{ppfigdim_f013}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f014}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f015}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f016}\\[-2.2ex] -\includegraphics[width=0.268\textwidth]{ppfigdim_f017}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f018}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f019}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f020}\\[-2.2ex] -\includegraphics[width=0.268\textwidth]{ppfigdim_f021}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f022}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f023}& -\includegraphics[width=0.268\textwidth]{ppfigdim_f024} +\begin{tabular}{l@{\hspace*{-0.0\textwidth}}l@{\hspace*{-0.0\textwidth}}l@{\hspace*{-0.0\textwidth}}l} +\includegraphics[width=0.24\textwidth]{ppfigdim_f001}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f002}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f003}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f004}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f005}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f006}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f007}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f008}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f009}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f010}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f011}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f012}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f013}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f014}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f015}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f016}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f017}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f018}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f019}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f020}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f021}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f022}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f023}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f024} \end{tabular} \vspace{-3ex} \caption{\label{fig:aRTgraphs} @@ -295,143 +316,491 @@ \section{Results} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Table showing the average runtime (aRT in number of function -% evaluations) divided by the best aRT measured during BBOB-2009 (given in the -% first row of each cell) for functions $f_1$--$f_{24}$. +% evaluations) for functions $f_1$--$f_{24} for dimension 80$. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{table*} -\centering {\tiny -\parbox{0.499\textwidth}{\centering - {\small 80-D}\\ - \input{\bbobdatapath\algfolder pptable_80D_noiselessall}}% -\parbox{0.499\textwidth}{\centering - {\small 320-D}\\ - \input{\bbobdatapath\algfolder pptable_320D_noiselessall}}}% - \caption[Table of aRTs]{\label{tab:aRTs}\bbobpptablecaption{} + + +\begin{table*}\tiny +%\hfill80-D\hfill~\\[1ex] +{\normalsize \color{red} +\ifthenelse{\isundefined{\algorithmG}}{}{more than 6 algorithms: please split the tables below by hand until it fits to the page limits} +} +\mbox{\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\pptableheader + +\input{\bbobdatapath\algfolder pptable_f001_80D} +\input{\bbobdatapath\algfolder pptable_f002_80D} +\input{\bbobdatapath\algfolder pptable_f003_80D} +\input{\bbobdatapath\algfolder pptable_f004_80D} +\input{\bbobdatapath\algfolder pptable_f005_80D} +\input{\bbobdatapath\algfolder pptable_f006_80D} +\input{\bbobdatapath\algfolder pptable_f007_80D} +\input{\bbobdatapath\algfolder pptable_f008_80D} +\input{\bbobdatapath\algfolder pptable_f009_80D} +\input{\bbobdatapath\algfolder pptable_f010_80D} +\input{\bbobdatapath\algfolder pptable_f011_80D} +\input{\bbobdatapath\algfolder pptable_f012_80D} + +\pptablefooter + +\end{minipage} +\hspace{0.002\textwidth} +\begin{minipage}[t]{0.499\textwidth}\tiny +\centering + +\pptableheader + +\input{\bbobdatapath\algfolder pptable_f013_80D} +\input{\bbobdatapath\algfolder pptable_f014_80D} +\input{\bbobdatapath\algfolder pptable_f015_80D} +\input{\bbobdatapath\algfolder pptable_f016_80D} +\input{\bbobdatapath\algfolder pptable_f017_80D} +\input{\bbobdatapath\algfolder pptable_f018_80D} +\input{\bbobdatapath\algfolder pptable_f019_80D} +\input{\bbobdatapath\algfolder pptable_f020_80D} +\input{\bbobdatapath\algfolder pptable_f021_80D} +\input{\bbobdatapath\algfolder pptable_f022_80D} +\input{\bbobdatapath\algfolder pptable_f023_80D} +\input{\bbobdatapath\algfolder pptable_f024_80D} + +\pptablefooter +\end{minipage}} + +\caption[Table of aRTs]{\label{tab:aRTs80}\bbobpptablecaption{dimension $80$} } \end{table*} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Table showing the average runtime (aRT in number of function +% evaluations) for functions $f_1$--$f_{24} for dimension 320$. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*}\tiny +%\hfill320-D\hfill~\\[1ex] +\mbox{\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\pptableheader + +\input{\bbobdatapath\algfolder pptable_f001_320D} +\input{\bbobdatapath\algfolder pptable_f002_320D} +\input{\bbobdatapath\algfolder pptable_f003_320D} +\input{\bbobdatapath\algfolder pptable_f004_320D} +\input{\bbobdatapath\algfolder pptable_f005_320D} +\input{\bbobdatapath\algfolder pptable_f006_320D} +\input{\bbobdatapath\algfolder pptable_f007_320D} +\input{\bbobdatapath\algfolder pptable_f008_320D} +\input{\bbobdatapath\algfolder pptable_f009_320D} +\input{\bbobdatapath\algfolder pptable_f010_320D} +\input{\bbobdatapath\algfolder pptable_f011_320D} +\input{\bbobdatapath\algfolder pptable_f012_320D} + +\pptablefooter + +\end{minipage} +\hspace{0.002\textwidth} +\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\pptableheader + +\input{\bbobdatapath\algfolder pptable_f013_320D} +\input{\bbobdatapath\algfolder pptable_f014_320D} +\input{\bbobdatapath\algfolder pptable_f015_320D} +\input{\bbobdatapath\algfolder pptable_f016_320D} +\input{\bbobdatapath\algfolder pptable_f017_320D} +\input{\bbobdatapath\algfolder pptable_f018_320D} +\input{\bbobdatapath\algfolder pptable_f019_320D} +\input{\bbobdatapath\algfolder pptable_f020_320D} +\input{\bbobdatapath\algfolder pptable_f021_320D} +\input{\bbobdatapath\algfolder pptable_f022_320D} +\input{\bbobdatapath\algfolder pptable_f023_320D} +\input{\bbobdatapath\algfolder pptable_f024_320D} + +\pptablefooter + +\end{minipage}} + +\caption[Table of aRTs]{\label{tab:aRTs320}\bbobpptablecaption{dimension $320$} +} +\end{table*} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Empirical cumulative distribution functions (ECDFs) per function group. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\rot}[2][2.5]{ - \hspace*{-3.5\baselineskip}% - \begin{rotate}{90}\hspace{#1em}#2 - \end{rotate}} + \begin{figure*} -\begin{tabular}{l@{\hspace*{-0.025\textwidth}}l@{\hspace*{-0.00\textwidth}}|l@{\hspace*{-0.025\textwidth}}l} +\begin{tabular}{l@{\hspace*{-0.00\textwidth}}l@{\hspace*{0.01\textwidth}}|l@{\hspace*{-0.00\textwidth}}l} \multicolumn{2}{c}{$D=80$} & \multicolumn{2}{c}{$D=320$}\\[-0.5ex] -\rot{separable fcts} -\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_separ} & -\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_separ} & -\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_separ} & -\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_separ} \\[-2ex] -\rot[1]{misc.\ moderate fcts} -\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_lcond} & -\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_lcond} & -\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_lcond} & -\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_lcond} \\[-2ex] -\rot[1.3]{ill-conditioned fcts} -\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_hcond} & -\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_hcond} & -\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_hcond} & -\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_hcond} \\[-2ex] -\rot[1.6]{multi-modal fcts} -\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_multi} & -\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_multi} & -\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_multi} & -\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_multi} \\[-2ex] -\rot[1.0]{weak structure fcts} -\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_mult2} & -\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_mult2} & -\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_mult2} & -\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_mult2}\\[-2ex] -\rot{all functions} -\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_80D_noiselessall} & -\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_80D_noiselessall} & -\includegraphics[width=0.268\textwidth,trim=0 0 0 13mm, clip]{pprldistr_320D_noiselessall} & -\includegraphics[width=0.2362\textwidth,trim=2.40cm 0 0 13mm, clip]{ppfvdistr_320D_noiselessall} -\vspace*{-0.5ex} +\rot[3]{all functions} +\includegraphics[width=0.2362\textwidth]{pprldistr_80D_noiselessall} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_noiselessall} & +\includegraphics[width=0.2362\textwidth]{pprldistr_320D_noiselessall} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_noiselessall} \\[-0.2em] +\rot[2.9]{separable fcts} +\includegraphics[width=0.2362\textwidth]{pprldistr_80D_separ} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_separ} & +\includegraphics[width=0.2362\textwidth]{pprldistr_320D_separ} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_separ} \\[-0.2em] +\rot[1.45]{misc.\ moderate fcts} +\includegraphics[width=0.2362\textwidth]{pprldistr_80D_lcond} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_lcond} & +\includegraphics[width=0.2362\textwidth]{pprldistr_320D_lcond} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_lcond} \\[-0.2em] +\rot[1.5]{ill-conditioned fcts} +\includegraphics[width=0.2362\textwidth]{pprldistr_80D_hcond} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_hcond} & +\includegraphics[width=0.2362\textwidth]{pprldistr_320D_hcond} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_hcond} \\[-0.2em] +\rot[2.3]{multi-modal fcts} +\includegraphics[width=0.2362\textwidth]{pprldistr_80D_multi} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_multi} & +\includegraphics[width=0.2362\textwidth]{pprldistr_320D_multi} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_multi} \\[-0.2em] +\rot[1.7]{weak structure fcts} +\includegraphics[width=0.2362\textwidth]{pprldistr_80D_mult2} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_mult2} & +\includegraphics[width=0.2362\textwidth]{pprldistr_320D_mult2} & +\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_mult2} +\vspace*{-1ex} \end{tabular} -\caption{\label{fig:RLDs} - \bbobpprldistrlegend{} + \caption{\label{fig:ECDFs} + \bbobpprldistrlegend{} } \end{figure*} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% ECDFs per function %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} +\centering +\begin{tabular}{l@{\hspace*{-0.00\textwidth}}l@{\hspace*{0.01\textwidth}}|l@{\hspace*{-0.00\textwidth}}l} +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f001}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f002}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f003}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f004}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f005}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f006}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f007}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f008}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f009}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f010}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f011}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f012}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f013}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f014}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f015}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f016}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f017}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f018}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f019}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f020}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f021}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f022}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f023}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f024} +\vspace*{-1ex} +\end{tabular} + \caption{\label{fig:ECDFsingleOne} + \bbobecdfcaptionsinglefunctionssingledim{$\!\!$s 20 to 640} +} +\end{figure*} + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% aRT loss ratios (figure and table) +}{} % end of 1 algorithm template + + + + +\ifthenelse{\equal{\numberofalgorithms}{two} \or \equal{\numberofalgorithms}{three}}{ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{figure} + +% Scaling of aRT with dimension + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{figure*} \centering -\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_noiselessall}% -\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_noiselessall}% -\\[-6.2ex] -\parbox{0.49\columnwidth}{\centering 80-D}% -\parbox{0.49\columnwidth}{\centering 320-D}\\[5ex] -% -\input{\bbobdatapath\algfolder pploglosstable_80D_noiselessall}\\ -\input{\bbobdatapath\algfolder pploglosstable_320D_noiselessall} -\caption{\label{tab:aRTloss}% -\bbobloglosstablecaption{} +\begin{tabular}{@{}c@{}c@{}c@{}c@{}} +\includegraphics[width=0.24\textwidth]{ppfigs_f001}& +\includegraphics[width=0.24\textwidth]{ppfigs_f002}& +\includegraphics[width=0.24\textwidth]{ppfigs_f003}& +\includegraphics[width=0.24\textwidth]{ppfigs_f004}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f005}& +\includegraphics[width=0.24\textwidth]{ppfigs_f006}& +\includegraphics[width=0.24\textwidth]{ppfigs_f007}& +\includegraphics[width=0.24\textwidth]{ppfigs_f008}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f009}& +\includegraphics[width=0.24\textwidth]{ppfigs_f010}& +\includegraphics[width=0.24\textwidth]{ppfigs_f011}& +\includegraphics[width=0.24\textwidth]{ppfigs_f012}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f013}& +\includegraphics[width=0.24\textwidth]{ppfigs_f014}& +\includegraphics[width=0.24\textwidth]{ppfigs_f015}& +\includegraphics[width=0.24\textwidth]{ppfigs_f016}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f017}& +\includegraphics[width=0.24\textwidth]{ppfigs_f018}& +\includegraphics[width=0.24\textwidth]{ppfigs_f019}& +\includegraphics[width=0.24\textwidth]{ppfigs_f020}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f021}& +\includegraphics[width=0.24\textwidth]{ppfigs_f022}& +\includegraphics[width=0.24\textwidth]{ppfigs_f023}& +\includegraphics[width=0.24\textwidth]{ppfigs_f024} +\end{tabular} +\vspace*{-0.2cm} +\caption[Average running time (\aRT) divided by dimension +versus dimension in log-log presentation]{ +\label{fig:scaling} +\bbobppfigslegend{$f_1$ and $f_{24}$}. +} +% +\end{figure*} + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Empirical cumulative distribution functions (ECDFs) per function group +% for dimensions 80 and 320 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{figure*} + \begin{tabular}{@{}c@{\hspace*{0.05\textwidth}}c@{}} + separable fcts & moderate fcts \\ + \includeperfprof{pprldmany_80D_separ} & + \includeperfprof{pprldmany_80D_lcond} \\ +ill-conditioned fcts & multi-modal fcts \\ + \includeperfprof{pprldmany_80D_hcond} & + \includeperfprof{pprldmany_80D_multi} \\ + weakly structured multi-modal fcts & all functions\\ + \includeperfprof{pprldmany_80D_mult2} & + \includeperfprof{pprldmany_80D_noiselessall} + \end{tabular} +\caption{ +\label{fig:ECDFs80D} +\bbobECDFslegend{80} +} +\end{figure*} + + +\begin{figure*} + \begin{tabular}{@{}c@{\hspace*{0.05\textwidth}}c@{}} + separable fcts & moderate fcts \\ + \includeperfprof{pprldmany_320D_separ} & + \includeperfprof{pprldmany_320D_lcond} \\ +ill-conditioned fcts & multi-modal fcts \\ + \includeperfprof{pprldmany_320D_hcond} & + \includeperfprof{pprldmany_320D_multi} \\ + weakly structured multi-modal fcts & all functions\\ + \includeperfprof{pprldmany_320D_mult2} & + \includeperfprof{pprldmany_320D_noiselessall} + \end{tabular} +\caption{ +\label{fig:ECDFs320D} +\bbobECDFslegend{320} } -\end{figure} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% aRT loss ratios per function group - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{figure} -\begin{tabular}{@{}l@{}@{}l@{}} -\multicolumn{1}{c}{80-D} & \multicolumn{1}{c}{320-D}\\ -%\rot{all functions} -%\hspace*{-2mm} -\rot{separable fcts} -\hspace*{-2mm} -\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_separ} & -\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_separ}\\[-2ex] -\rot[2]{moderate fcts} -\hspace*{-2mm} -\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_lcond} & -\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_lcond}\\[-2ex] -\rot[1.3]{ill-conditioned fcts} -\hspace*{-2mm} -\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_hcond} & -\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_hcond}\\[-2ex] -\rot[1.6]{multi-modal fcts} -\hspace*{-2mm} -\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_multi} & -\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_multi}\\[-2ex] -\rot[1.0]{weak structure fcts} -\hspace*{-2mm} -\includegraphics[width=0.24\textwidth,trim=0 0 16mm 12mm, clip]{pplogloss_80D_mult2} & -\includegraphics[width=0.24\textwidth,trim=7mm 0 9mm 12mm, clip]{pplogloss_320D_mult2} -\vspace*{-0.5ex} +\end{figure*} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% ECDFs per function in dimension 160 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} +\centering +\begin{tabular}{@{}l@{}l@{}l@{}l@{}l@{}} +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f001_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f002_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f003_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f004_160D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f005_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f006_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f007_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f008_160D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f009_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f010_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f011_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f012_160D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f013_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f014_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f015_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f016_160D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f017_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f018_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f019_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f020_160D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f021_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f022_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f023_160D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f024_160D} \end{tabular} -\caption{\label{fig:aRTlogloss}% - \bbobloglossfigurecaption{} + \caption{\label{fig:ECDFsingleOne} + \bbobecdfcaptionsinglefunctionssingledim{160} } -\end{figure} +\end{figure*} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Table showing the average runtime (aRT in number of function +% evaluations) for functions $f_1$--$f_{24}$. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*} +%\hfill80-D\hfill~\\[1ex] +{\normalsize \color{red} +\ifthenelse{\isundefined{\algorithmG}}{}{more than 6 algorithms: please split the tables below by hand until it fits to the page limits} +} +\mbox{\begin{minipage}[t]{0.495\textwidth} +\centering +80-D\\[5pt] +\tiny +\pptablesheader +\input{\bbobdatapath\algsfolder pptables_f001_80D} +\input{\bbobdatapath\algsfolder pptables_f002_80D} +\input{\bbobdatapath\algsfolder pptables_f003_80D} +\input{\bbobdatapath\algsfolder pptables_f004_80D} +\input{\bbobdatapath\algsfolder pptables_f005_80D} +\input{\bbobdatapath\algsfolder pptables_f006_80D} +\input{\bbobdatapath\algsfolder pptables_f007_80D} +\input{\bbobdatapath\algsfolder pptables_f008_80D} +\input{\bbobdatapath\algsfolder pptables_f009_80D} +\input{\bbobdatapath\algsfolder pptables_f010_80D} +\input{\bbobdatapath\algsfolder pptables_f011_80D} +\input{\bbobdatapath\algsfolder pptables_f012_80D} +\input{\bbobdatapath\algsfolder pptables_f013_80D} +\input{\bbobdatapath\algsfolder pptables_f014_80D} +\input{\bbobdatapath\algsfolder pptables_f015_80D} +\input{\bbobdatapath\algsfolder pptables_f016_80D} +\input{\bbobdatapath\algsfolder pptables_f017_80D} +\input{\bbobdatapath\algsfolder pptables_f018_80D} +\input{\bbobdatapath\algsfolder pptables_f019_80D} +\input{\bbobdatapath\algsfolder pptables_f020_80D} +\input{\bbobdatapath\algsfolder pptables_f021_80D} +\input{\bbobdatapath\algsfolder pptables_f022_80D} +\input{\bbobdatapath\algsfolder pptables_f023_80D} +\input{\bbobdatapath\algsfolder pptables_f024_80D} +\end{tabularx} +\end{minipage}} +\hspace{0.002\textwidth} +\mbox{\begin{minipage}[t]{0.495\textwidth} +\centering +320-D\\[5pt] +\tiny +\pptablesheader +\input{\bbobdatapath\algsfolder pptables_f001_320D} +\input{\bbobdatapath\algsfolder pptables_f002_320D} +\input{\bbobdatapath\algsfolder pptables_f003_320D} +\input{\bbobdatapath\algsfolder pptables_f004_320D} +\input{\bbobdatapath\algsfolder pptables_f005_320D} +\input{\bbobdatapath\algsfolder pptables_f006_320D} +\input{\bbobdatapath\algsfolder pptables_f007_320D} +\input{\bbobdatapath\algsfolder pptables_f008_320D} +\input{\bbobdatapath\algsfolder pptables_f009_320D} +\input{\bbobdatapath\algsfolder pptables_f010_320D} +\input{\bbobdatapath\algsfolder pptables_f011_320D} +\input{\bbobdatapath\algsfolder pptables_f012_320D} +\input{\bbobdatapath\algsfolder pptables_f013_320D} +\input{\bbobdatapath\algsfolder pptables_f014_320D} +\input{\bbobdatapath\algsfolder pptables_f015_320D} +\input{\bbobdatapath\algsfolder pptables_f016_320D} +\input{\bbobdatapath\algsfolder pptables_f017_320D} +\input{\bbobdatapath\algsfolder pptables_f018_320D} +\input{\bbobdatapath\algsfolder pptables_f019_320D} +\input{\bbobdatapath\algsfolder pptables_f020_320D} +\input{\bbobdatapath\algsfolder pptables_f021_320D} +\input{\bbobdatapath\algsfolder pptables_f022_320D} +\input{\bbobdatapath\algsfolder pptables_f023_320D} +\input{\bbobdatapath\algsfolder pptables_f024_320D} +\end{tabularx} +\end{minipage}} + +\caption{\label{tab:aRTs} +\bbobpptablesmanylegend{dimensions $80$ (left) and $320$ (right)} +} +\end{table*} + +}{} % end of all that comes for 2 or 3+ algorithms + + +\ifthenelse{\equal{\numberofalgorithms}{two}}{ + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Scatter plots per function. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%\section{Discussion} % and or conclusion, summary... %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} +\begin{tabular}{*{4}{@{}c@{}}} + \includegraphics[height=0.2\textwidth]{ppscatter_f001}& + \includegraphics[height=0.2\textwidth]{ppscatter_f002}& + \includegraphics[height=0.2\textwidth]{ppscatter_f003}& + \includegraphics[height=0.2\textwidth]{ppscatter_f004}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f005}& + \includegraphics[height=0.2\textwidth]{ppscatter_f006}& + \includegraphics[height=0.2\textwidth]{ppscatter_f007}& + \includegraphics[height=0.2\textwidth]{ppscatter_f008}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f009}& + \includegraphics[height=0.2\textwidth]{ppscatter_f010}& + \includegraphics[height=0.2\textwidth]{ppscatter_f011}& + \includegraphics[height=0.2\textwidth]{ppscatter_f012}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f013}& + \includegraphics[height=0.2\textwidth]{ppscatter_f014}& + \includegraphics[height=0.2\textwidth]{ppscatter_f015}& + \includegraphics[height=0.2\textwidth]{ppscatter_f016}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f017}& + \includegraphics[height=0.2\textwidth]{ppscatter_f018}& + \includegraphics[height=0.2\textwidth]{ppscatter_f019}& + \includegraphics[height=0.2\textwidth]{ppscatter_f020}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f021}& + \includegraphics[height=0.2\textwidth]{ppscatter_f022}& + \includegraphics[height=0.2\textwidth]{ppscatter_f023}& + \includegraphics[height=0.2\textwidth]{ppscatter_f024} +\end{tabular} +\caption{\label{fig:scatterplots} +\bbobppscatterlegend{$f_1$--$f_{24}$} +} +\end{figure*} + + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % The following two commands are all you need in the % initial runs of your .tex file to @@ -449,5 +818,5 @@ \section{Results} % ACM needs 'a single self-contained file'! % -\clearpage % otherwise the last figure might be missing +% \clearpage % otherwise the last figure might be missing \end{document} diff --git a/code-postprocessing/latex-templates/templateBBOBLScmp.tex b/code-postprocessing/latex-templates/templateBBOBLScmp.tex deleted file mode 100644 index 7bb28249c..000000000 --- a/code-postprocessing/latex-templates/templateBBOBLScmp.tex +++ /dev/null @@ -1,481 +0,0 @@ -% This is "sig-alternate.tex" V2.1 April 2013 -% This file should be compiled with V2.5 of "sig-alternate.cls" May 2012 -% -% This example file demonstrates the use of the 'sig-alternate.cls' -% V2.5 LaTeX2e document class file. It is for those submitting -% articles to ACM Conference Proceedings WHO DO NOT WISH TO -% STRICTLY ADHERE TO THE SIGS (PUBS-BOARD-ENDORSED) STYLE. -% The 'sig-alternate.cls' file will produce a similar-looking, -% albeit, 'tighter' paper resulting in, invariably, fewer pages. -% -% ---------------------------------------------------------------------------------------------------------------- -% This .tex file (and associated .cls V2.5) produces: -% 1) The Permission Statement -% 2) The Conference (location) Info information -% 3) The Copyright Line with ACM data -% 4) NO page numbers -% -% as against the acm_proc_article-sp.cls file which -% DOES NOT produce 1) thru' 3) above. -% -% Using 'sig-alternate.cls' you have control, however, from within -% the source .tex file, over both the CopyrightYear -% (defaulted to 200X) and the ACM Copyright Data -% (defaulted to X-XXXXX-XX-X/XX/XX). -% e.g. -% \CopyrightYear{2007} will cause 2007 to appear in the copyright line. -% \crdata{0-12345-67-8/90/12} will cause 0-12345-67-8/90/12 to appear in the copyright line. -% -% --------------------------------------------------------------------------------------------------------------- -% This .tex source is an example which *does* use -% the .bib file (from which the .bbl file % is produced). -% REMEMBER HOWEVER: After having produced the .bbl file, -% and prior to final submission, you *NEED* to 'insert' -% your .bbl file into your source .tex file so as to provide -% ONE 'self-contained' source file. -% -% ================= IF YOU HAVE QUESTIONS ======================= -% Questions regarding the SIGS styles, SIGS policies and -% procedures, Conferences etc. should be sent to -% Adrienne Griscti (griscti@acm.org) -% -% Technical questions _only_ to -% Gerald Murray (murray@hq.acm.org) -% -% Technical questions related to COCO/BBOB to bbob@lri.fr -% =============================================================== -% -% For tracking purposes - this is V2.0 - May 2012 - -\documentclass{sig-alternate} -\pdfpagewidth=8.5in -\pdfpageheight=11in -\special{papersize=8.5in,11in} - \renewcommand{\topfraction}{1} % max fraction of floats at top - \renewcommand{\bottomfraction}{1} % max fraction of floats at bottom - % Parameters for TEXT pages (not float pages): - \setcounter{topnumber}{3} - \setcounter{bottomnumber}{3} - \setcounter{totalnumber}{3} % 2 may work better - \setcounter{dbltopnumber}{4} % for 2-column pages - \renewcommand{\dbltopfraction}{1} % fit big float above 2-col. text - \renewcommand{\textfraction}{0.0} % allow minimal text w. figs - % Parameters for FLOAT pages (not text pages): - \renewcommand{\floatpagefraction}{0.80} % require fuller float pages - % N.B.: floatpagefraction MUST be less than topfraction !! - \renewcommand{\dblfloatpagefraction}{0.7} % require fuller float pages - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Packages -\usepackage{graphicx} -\usepackage{tabularx} -\usepackage[dvipsnames]{xcolor} -\usepackage{float} -\usepackage{rotating} -\usepackage{xstring} % for string operations -\usepackage{wasysym} % Table legend with symbols input from post-processing -\usepackage{MnSymbol} % Table legend with symbols input from post-processing -%\usepackage[hidelinks]{hyperref} % make COCO papers clickable - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Definitions - -% specify acronyms for algorithm1 (1st arg. of post-processing) and algorithm2 (2nd arg.) -%\newcommand{\algorithmA}{algorithmB} % first argument in the post-processing -%\newcommand{\algorithmB}{algorithmB} % second argument in the post-processing -% for the short acronyms in the tables, adjust the following to lines if required. -%\newcommand{\algorithmAshort}{algA} % first argument in the post-processing -%\newcommand{\algorithmBshort}{algB} % second argument in the post-processing - -% location of pictures files -\newcommand{\bbobdatapath}{ppdata/} -\input{\bbobdatapath bbob_pproc_commands.tex} -\graphicspath{{\bbobdatapath}} - -% pre-defined commands -\newcommand{\DIM}{\ensuremath{\mathrm{DIM}}} -\newcommand{\aRT}{\ensuremath{\mathrm{aRT}}} -\newcommand{\FEvals}{\ensuremath{\mathrm{FEvals}}} -\newcommand{\nruns}{\ensuremath{\mathrm{Nruns}}} -\newcommand{\Dfb}{\ensuremath{\Delta f_{\mathrm{best}}}} -\newcommand{\Df}{\ensuremath{\Delta f}} -\newcommand{\nbFEs}{\ensuremath{\mathrm{\#FEs}}} -\newcommand{\fopt}{\ensuremath{f_\mathrm{opt}}} -\newcommand{\ftarget}{\ensuremath{f_\mathrm{t}}} -\newcommand{\CrE}{\ensuremath{\mathrm{CrE}}} -\newcommand{\change}[1]{{\color{red} #1}} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\begin{document} - -% -% --- Author Metadata here --- -\conferenceinfo{GECCO'13,} {July 6-10, 2013, Amsterdam, The Netherlands.} -\CopyrightYear{2013} -\crdata{TBA} -\clubpenalty=10000 -\widowpenalty = 10000 -% --- End of Author Metadata --- - -\title{Black-Box Optimization Benchmarking Template for the Comparison of Two Algorithms on the Noiseless Testbed} -\subtitle{Draft version -\titlenote{Submission deadline: March 28th.}} -%Camera-ready paper due April 16th.}} - -% -% You need the command \numberofauthors to handle the 'placement -% and alignment' of the authors beneath the title. -% -% For aesthetic reasons, we recommend 'three authors at a time' -% i.e. three 'name/affiliation blocks' be placed beneath the title. -% -% NOTE: You are NOT restricted in how many 'rows' of -% "name/affiliations" may appear. We just ask that you restrict -% the number of 'columns' to three. -% -% Because of the available 'opening page real-estate' -% we ask you to refrain from putting more than six authors -% (two rows with three columns) beneath the article title. -% More than six makes the first-page appear very cluttered indeed. -% -% Use the \alignauthor commands to handle the names -% and affiliations for an 'aesthetic maximum' of six authors. -% Add names, affiliations, addresses for -% the seventh etc. author(s) as the argument for the -% \additionalauthors command. -% These 'additional authors' will be output/set for you -% without further effort on your part as the last section in -% the body of your article BEFORE References or any Appendices. - -\numberofauthors{1} % in this sample file, there are a *total* -% of EIGHT authors. SIX appear on the 'first-page' (for formatting -% reasons) and the remaining two appear in the \additionalauthors section. -% -\author{ -% You can go ahead and credit any number of authors here, -% e.g. one 'row of three' or two rows (consisting of one row of three -% and a second row of one, two or three). -% -% The command \alignauthor (no curly braces needed) should -% precede each author name, affiliation/snail-mail address and -% e-mail address. Additionally, tag each line of -% affiliation/address with \affaddr, and tag the -% e-mail address with \email. -% -% 1st. author -\alignauthor -Forename Name\\ %\titlenote{Dr.~Trovato insisted his name be first.}\\ -% \affaddr{Institute for Clarity in Documentation}\\ -% \affaddr{1932 Wallamaloo Lane}\\ -% \affaddr{Wallamaloo, New Zealand}\\ -% \email{trovato@corporation.com} -%% 2nd. author -%\alignauthor -%G.K.M. Tobin\titlenote{The secretary disavows -%any knowledge of this author's actions.}\\ -% \affaddr{Institute for Clarity in Documentation}\\ -% \affaddr{P.O. Box 1212}\\ -% \affaddr{Dublin, Ohio 43017-6221}\\ -% \email{webmaster@marysville-ohio.com} -%% 3rd. author -%\alignauthor Lars Th{\o}rv{\"a}ld\titlenote{This author is the -%one who did all the really hard work.}\\ -% \affaddr{The Th{\o}rv{\"a}ld Group}\\ -% \affaddr{1 Th{\o}rv{\"a}ld Circle}\\ -% \affaddr{Hekla, Iceland}\\ -% \email{larst@affiliation.org} -%\and % use '\and' if you need 'another row' of author names -%% 4th. author -%\alignauthor Lawrence P. Leipuner\\ -% \affaddr{Brookhaven Laboratories}\\ -% \affaddr{Brookhaven National Lab}\\ -% \affaddr{P.O. Box 5000}\\ -% \email{lleipuner@researchlabs.org} -%% 5th. author -%\alignauthor Sean Fogarty\\ -% \affaddr{NASA Ames Research Center}\\ -% \affaddr{Moffett Field}\\ -% \affaddr{California 94035}\\ -% \email{fogartys@amesres.org} -%% 6th. author -%\alignauthor Charles Palmer\\ -% \affaddr{Palmer Research Laboratories}\\ -% \affaddr{8600 Datapoint Drive}\\ -% \affaddr{San Antonio, Texas 78229}\\ -% \email{cpalmer@prl.com} -} % author -%% There's nothing stopping you putting the seventh, eighth, etc. -%% author on the opening page (as the 'third row') but we ask, -%% for aesthetic reasons that you place these 'additional authors' -%% in the \additional authors block, viz. -%\additionalauthors{Additional authors: John Smith (The Th{\o}rv{\"a}ld Group, -%email: {\texttt{jsmith@affiliation.org}}) and Julius P.~Kumquat -%(The Kumquat Consortium, email: {\texttt{jpkumquat@consortium.net}}).} -%\date{30 July 1999} -%% Just remember to make sure that the TOTAL number of authors -%% is the number that will appear on the first page PLUS the -%% number that will appear in the \additionalauthors section. - -\maketitle -\begin{abstract} -to be written -\end{abstract} - -% Add any ACM category that you feel is needed, not mandatory anymore -%\category{G.1.6}{Numerical Analysis}{Optimization}[global optimization, -%unconstrained optimization] -%\category{F.2.1}{Analysis of Algorithms and Problem Complexity}{Numerical Algorithms and Problems} - -% Complete with anything that is needed -\terms{Algorithms} - -% Complete with anything that is needed -\keywords{Benchmarking, Black-box optimization} - -% \section{Introduction} -% -% \section{Algorithm Presentation} -% -% \section{Experimental Procedure} -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{CPU Timing} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% note that the following text is just a proposal and can/should be changed to your needs: -In order to evaluate the CPU timing of the algorithm, we have run the \change{MY-ALGORITHM-NAME} on the \change{bbob test suite \cite{hansen2009fun}} with restarts for a maximum budget equal to \change{$400 (D + 2)$} function evaluations. The code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. - -\change{repeat the above for the second algorithm} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Results} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -Results from experiments according to \cite{hansen2016exp} and \cite{hansen2016perfass} on the benchmark -functions given in \cite{wp200901_2010,hansen2012fun} are presented in -Figures~\ref{fig:scaling}, \ref{fig:scatterplots} and \ref{fig:RLDs} and -in Table~\ref{tab:aRTs}. The experiments were performed with COCO \cite{hansen2016cocoplat}, -version \change{1.0.1}, the plots were produced with version \change{1.0.4}. - -The \textbf{average runtime (aRT)}, used in the figures and table, depends on a -given target function value, $\ftarget=\fopt+\Df$, and is computed over all relevant trials -as the number of function evaluations executed during each trial while the best -function value did not reach \ftarget, summed over all trials -and divided by the number of trials that actually reached \ftarget\ -\cite{hansen2012exp,price1997dev}. -\textbf{Statistical significance} is tested with the rank-sum test for a given -target $\Delta\ftarget$ ($10^{-8}$ as in Figure~\ref{fig:scaling}) using, -for each trial, either the number of needed function evaluations to reach -$\Delta\ftarget$ (inverted and multiplied by $-1$), or, if the target was not -reached, the best $\Df$-value achieved, measured only up to the smallest number -of overall function evaluations for any unsuccessful trial under consideration. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Scaling of aRT with dimension - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{figure*} -\centering -\begin{tabular}{@{}c@{}c@{}c@{}c@{}} -\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f001}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f002}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f003}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f004}\\ -\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f005}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f006}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f007}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f008}\\ -\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f009}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f010}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f011}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f012}\\ -\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f013}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f014}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f015}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f016}\\ -\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f017}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f018}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f019}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.8cm 0.5cm 0.5cm, clip]{ppfigs_f020}\\ -\includegraphics[width=0.253\textwidth, trim= 0.7cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f021}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f022}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f023}& -\includegraphics[width=0.238\textwidth, trim= 1.8cm 0.0cm 0.5cm 0.5cm, clip]{ppfigs_f024} -\end{tabular} -\vspace*{-0.2cm} -\caption[Expected running time divided by dimension versus dimension]{ -\label{fig:scaling} -\bbobppfigslegend{$f_1$ and $f_{24}$}. % note: \algorithmA and \algorithmB can be defined above -} -% -\end{figure*} - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Scatter plots per function. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\rot}[2][2.5]{ - \hspace*{-3.5\baselineskip}% - \begin{rotate}{90}\hspace{#1em}#2 - \end{rotate}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\begin{figure*} -\begin{tabular}{*{4}{@{}c@{}}} -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 1 Sphere\hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f001}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 2 Ellipsoid separable\hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f002}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 3 Rastrigin separable\hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f003}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 4 Skew Rastrigin-Bueche\hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f004}\\[-2.2ex] -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 5 Linear slope \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f005}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 6 Attractive sector \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f006}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 7 Step-ellipsoid \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f007}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 8 Rosenbrock original \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f008}\\[-2.2ex] -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 9 Rosenbrock rotated \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f009}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 10 Ellipsoid \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f010}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 11 Discus \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f011}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 12 Bent cigar \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f012}\\[-2.2ex] -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 13 Sharp ridge \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f013}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf~~14 Sum of diff.\ powers \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f014}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 15 Rastrigin \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f015}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 16 Weierstrass \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f016}\\[-2.2ex] -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 17 Schaffer F7, cond.10 \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f017}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 18 Schaffer F7, cond.1000 \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f018}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 19 Griewank-Rosenbrock \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f019}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 20 Schwefel x*sin(x) \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f020}\\[-2.2ex] -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 21 Gallagher 101 peaks \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f021}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 22 Gallagher 21 peaks \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f022}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 23 Katsuuras \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f023}& -\begin{turn}{90}\parbox{0.21\textwidth}{\hfill\sf 24 Lunacek bi-Rastrigin \hfill~}\end{turn} - \includegraphics[height=0.21\textwidth, trim= 37mm 0mm 20mm 9mm, clip]{ppscatter_f024} -\end{tabular} -\caption{\label{fig:scatterplots} -\bbobppscatterlegend{$f_1$--$f_{24}$} -} -\end{figure*} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Empirical cumulative distribution functions (ECDFs) per function group. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{figure*} - \begin{tabular}{l@{\hspace*{-0.025\textwidth}}l|l@{\hspace*{-0.025\textwidth}}l} - \multicolumn{2}{c}{80-D} & \multicolumn{2}{c}{320-D} \\ - \rot{separable fcts} - \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_separ} & - \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_separ} & - \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_separ} & - \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_separ} \\ - \rot[2]{moderate fcts} - \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_lcond} & - \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_lcond} & - \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_lcond} & - \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_lcond}\\ - \rot[1.3]{ill-conditioned fcts} - \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_hcond} & - \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_hcond} & - \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_hcond} & - \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_hcond} \\ - \rot[1.6]{multi-modal fcts} - \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_multi} & - \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_multi} & - \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_multi} & - \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_multi} \\ - \rot[1.0]{weak structure fcts} - \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_80D_mult2} & - \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_mult2} & - \includegraphics[width=0.268\textwidth,trim= 0mm 0mm 0mm 15mm, clip]{pprldistr_320D_mult2} & - \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_mult2}\\ - \rot{all functions} - \includegraphics[width=0.268\textwidth,trim=0cm 0mm 0mm 15mm, clip]{pprldistr_80D_noiselessall} & - \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_80D_noiselessall} & - \includegraphics[width=0.268\textwidth,trim=0cm 0mm 0mm 15mm, clip]{pprldistr_320D_noiselessall} & - \includegraphics[width=0.2375\textwidth,trim=2.3cm 0mm 0mm 15mm, clip]{pplogabs_320D_noiselessall} - \end{tabular} -\vspace*{-0.2cm} - \caption{\label{fig:RLDs} - \bbobpprldistrlegendtwo{} - } -\end{figure*} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Table showing the average runtime (aRT in number of function -% evaluations) divided by the best aRT measured during BBOB-2009 (given in the -% first row of each cell) for functions $f_1$--$f_{24}$. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{table*} -\centering -\hfill80-D\hfill320-D\hfill~\\[1ex] -\tiny -\mbox{ -\input{\bbobdatapath pptable2_80D_noiselessall}\hfill% -\input{\bbobdatapath pptable2_320D_noiselessall}} -\caption{\label{tab:aRTs} -\bbobpptablestwolegend{48} -} -\end{table*} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% The following two commands are all you need in the -% initial runs of your .tex file to -% produce the bibliography for the citations in your paper. -\bibliographystyle{abbrv} -\bibliography{bbob} % bbob.bib is the name of the Bibliography in this case -% You must have a proper ".bib" file -% and remember to run: -% latex bibtex latex latex -% to resolve all references -% to create the ~.bbl file. Insert that ~.bbl file into -% the .tex source file and comment out -% the command \texttt{{\char'134}thebibliography}. -% -% ACM needs 'a single self-contained file'! -% - -% \clearpage % otherwise the last figure might be missing -\end{document} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex b/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex deleted file mode 100644 index 7adf5093d..000000000 --- a/code-postprocessing/latex-templates/templateBBOBLSmultiple.tex +++ /dev/null @@ -1,822 +0,0 @@ -\documentclass[sigconf]{acmart} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Packages -\usepackage{booktabs} % For formal tables -\usepackage{graphicx} -\usepackage{rotating} -\usepackage{tabularx} -\usepackage{xspace} -\usepackage{float} -\usepackage{xstring} % for string operations -\usepackage{wasysym} % Table legend with symbols input from post-processing -\usepackage{MnSymbol} % Table legend with symbols input from post-processing -\usepackage{ifthen} - -% Copyright -%\setcopyright{none} -%\setcopyright{acmcopyright} -%\setcopyright{acmlicensed} -\setcopyright{rightsretained} -%\setcopyright{usgov} -%\setcopyright{usgovmixed} -%\setcopyright{cagov} -%\setcopyright{cagovmixed} - - -% DOI -\acmDOI{10.1145/123_4} - -% ISBN -\acmISBN{123-4567-24-567/18/07} - -%Conference -\acmConference[GECCO '18]{the Genetic and Evolutionary Computation Conference 2018}{July 15--19, 2018}{Kyoto, Japan} -\acmYear{2018} -\copyrightyear{2018} - -\acmPrice{15.00} - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%% TO BE EDITED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Algorithm names as they appear in the tables, uncomment and adapt if necessary -% \newcommand{\algAtables}{ALGO1} % first argument in the post-processing -% \newcommand{\algBtables}{ALGO2} % second argument in the post-processing -% \newcommand{\algCtables}{ALGO3} % third argument in the post-processing -% \newcommand{\algDtables}{ALGO4} % forth argument in the post-processing -% ... -% location of pictures files -\newcommand{\bbobdatapath}{ppdata/} % change default output folder of COCO if desired - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% read in data and deal with the different number of algorithms: -\input{\bbobdatapath cocopp_commands.tex} -\ifthenelse{\isundefined{\numofalgs}} -{ - \newcommand{\numberofalgorithms}{one} -}{ - \ifthenelse{\equal{\numofalgs}{2}} - { - \newcommand{\numberofalgorithms}{two} - }{ - \newcommand{\numberofalgorithms}{three} - } -} - -\ifthenelse{\equal{\numberofalgorithms}{one}}{ - \graphicspath{{\bbobdatapath\algfolder}}}{ - \graphicspath{{\bbobdatapath\algsfolder}} -} - -\ifthenelse{\isundefined{\algorithmA}}{\newcommand{\algorithmA}{\algname}}{} -%\ifthenelse{\isundefined{\algorithmA}{\newcommand{\algorithmA}{\change{MY-ALGORITHM-NAME}}}{} % better use the previous line? -%% - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -% pre-defined commands -\newcommand{\DIM}{\ensuremath{\mathrm{DIM}}} -\newcommand{\aRT}{\ensuremath{\mathrm{aRT}}} -\newcommand{\FEvals}{\ensuremath{\mathrm{FEvals}}} -\newcommand{\nruns}{\ensuremath{\mathrm{Nruns}}} -\newcommand{\Dfb}{\ensuremath{\Delta f_{\mathrm{best}}}} -\newcommand{\Df}{\ensuremath{\Delta f}} -\newcommand{\nbFEs}{\ensuremath{\mathrm{\#FEs}}} -\newcommand{\fopt}{\ensuremath{f_\mathrm{opt}}} -\newcommand{\ftarget}{\ensuremath{f_\mathrm{t}}} -\newcommand{\CrE}{\ensuremath{\mathrm{CrE}}} -\newcommand{\change}[1]{{\color{red} #1}} -\newcommand{\TODO}[1]{{\color{orange} !!! #1 !!!}} -\newcommand{\bbobls}{{\ttfamily bbob-largescale}\xspace} -\newcommand{\rot}[2][2.5]{ - \hspace*{-3.5\baselineskip}% - \begin{rotate}{90}\hspace{#1em}#2\vspace{0.5em} - \end{rotate}} - - -%%%%%%%%%%%%%%%%%%%%%% END OF PREAMBLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\begin{document} - - -\title{Black-Box Optimization Benchmarking Template for the Comparison of Multiple Algorithms on the \bbobls Testbed} -\renewcommand{\shorttitle}{Template to Compare Multiple Algorithms on the \bbobls Testbed} -\titlenote{Submission deadline: March 31st.} -%Camera-ready paper due April 24th.}} -\subtitle{Draft version} - - - -\author{Firstname Lastname} -%\authornote{tba if needed} -%\orcid{1234-5678-9012} -%\affiliation{% -% \institution{Institute for Clarity in Documentation} -% \streetaddress{P.O. Box 1212} -% \city{Dublin} -% \state{Ohio} -% \postcode{43017-6221} -%} -%\email{trovato@corporation.com} -% -%\author{G.K.M. Tobin} -%\authornote{The secretary disavows any knowledge of this author's actions.} -%\affiliation{% -% \institution{Institute for Clarity in Documentation} -% \streetaddress{P.O. Box 1212} -% \city{Dublin} -% \state{Ohio} -% \postcode{43017-6221} -%} -%\email{webmaster@marysville-ohio.com} -% -%\author{Lars Th{\o}rv{\"a}ld} -%\authornote{This author is the -% one who did all the really hard work.} -%\affiliation{% -% \institution{The Th{\o}rv{\"a}ld Group} -% \streetaddress{1 Th{\o}rv{\"a}ld Circle} -% \city{Hekla} -% \country{Iceland}} -%\email{larst@affiliation.org} -% -%\author{Lawrence P. Leipuner} -%\affiliation{ -% \institution{Brookhaven Laboratories} -% \streetaddress{P.O. Box 5000}} -%\email{lleipuner@researchlabs.org} -% -%\author{Sean Fogarty} -%\affiliation{% -% \institution{NASA Ames Research Center} -% \city{Moffett Field} -% \state{California} -% \postcode{94035}} -%\email{fogartys@amesres.org} -% -%\author{Charles Palmer} -%\affiliation{% -% \institution{Palmer Research Laboratories} -% \streetaddress{8600 Datapoint Drive} -% \city{San Antonio} -% \state{Texas} -% \postcode{78229}} -%\email{cpalmer@prl.com} -% -%\author{John Smith} -%\affiliation{\institution{The Th{\o}rv{\"a}ld Group}} -%\email{jsmith@affiliation.org} -% -%\author{Julius P.~Kumquat} -%\affiliation{\institution{The Kumquat Consortium}} -%\email{jpkumquat@consortium.net} - -% The default list of authors is too long for headers} -\renewcommand{\shortauthors}{Firstname Lastname et. al.} - - - -\begin{abstract} -to be written -\end{abstract} - - -% -% The code below should be generated by the tool at -% http://dl.acm.org/ccs.cfm -% Please copy and paste the code instead of the example below. -% - \begin{CCSXML} - - -10010147.10010178.10010205.10010208 -Computing methodologies~Continuous space search -500 - - -\end{CCSXML} - -\ccsdesc[500]{Computing methodologies~Continuous space search} - - -% We no longer use \terms command -%\terms{Algorithms} - -% Complete with anything that is needed -\keywords{Benchmarking, Black-box optimization, Large scale optimization} - -\maketitle - - -% \section{Introduction} -% -% \section{Algorithm Presentation} -% -% \section{Experimental Procedure} -% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{CPU Timing} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% note that the following text is just a proposal and can/should be changed to your needs: -In order to evaluate the CPU timing of the algorithm, we have run the \change{\algorithmA} with restarts on the entire \bbobls test suite \cite{bbobls2018func} for $2 D$ function evaluations according to \cite{hansen2016exp}. The \change{C/Java/Matlab/Octave/Python} code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores \change{and (compile) options xxx}. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. - -\ifthenelse{\equal{\numberofalgorithms}{one}}{}{ -\change{repeat the above for any algorithm tested} -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Results} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -Results from experiments according to \cite{hansen2016exp} and \cite{hansen2016perfass} on the -benchmark functions given in \cite{bbobls2018func} are -presented in -%% -\ifthenelse{\equal{\numberofalgorithms}{one}}{ -Figures~\ref{fig:aRTgraphs}, \ref{fig:ECDFs}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs80} and \ref{tab:aRTs320}. -}{\ifthenelse{\equal{\numberofalgorithms}{two}}{ -Figures~\ref{fig:scaling}, \ref{fig:scatterplots}, \ref{fig:ECDFs80D}, \ref{fig:ECDFs320D} and \ref{fig:ECDFsingleOne}, and Tables~\ref{tab:aRTs}. -}{\ifthenelse{\equal{\numberofalgorithms}{three}}{ -Figures~\ref{fig:scaling}, \ref{fig:ECDFs80D}, \ref{fig:ECDFs320D}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs}. -}{}}} -%% -The experiments were performed with COCO \cite{hansen2016cocoplat}, version -\change{2.0}, the plots were produced with version \change{2.0}. - -The \textbf{average runtime (aRT)}, used in the figures and tables, -depends on a given target function value, $\ftarget=\fopt+\Df$, and is -computed over all relevant trials as the number of function -evaluations executed during each trial while the best function value -did not reach \ftarget, summed over all trials and divided by the -number of trials that actually reached \ftarget\ -\cite{hansen2012exp,price1997dev}. -\textbf{Statistical significance} is tested with the rank-sum test for a given -target $\Delta\ftarget$ using, for each trial, -either the number of needed function evaluations to reach -$\Delta\ftarget$ (inverted and multiplied by $-1$), or, if the target -was not reached, the best $\Df$-value achieved, measured only up to -the smallest number of overall function evaluations for any -unsuccessful trial under consideration. - - -\ifthenelse{\equal{\numberofalgorithms}{one}}{ - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Scaling of aRT with dimension - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{figure*} -\begin{tabular}{l@{\hspace*{-0.0\textwidth}}l@{\hspace*{-0.0\textwidth}}l@{\hspace*{-0.0\textwidth}}l} -\includegraphics[width=0.24\textwidth]{ppfigdim_f001}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f002}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f003}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f004}\\[-1ex] -\includegraphics[width=0.24\textwidth]{ppfigdim_f005}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f006}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f007}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f008}\\[-1ex] -\includegraphics[width=0.24\textwidth]{ppfigdim_f009}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f010}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f011}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f012}\\[-1ex] -\includegraphics[width=0.24\textwidth]{ppfigdim_f013}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f014}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f015}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f016}\\[-1ex] -\includegraphics[width=0.24\textwidth]{ppfigdim_f017}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f018}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f019}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f020}\\[-1ex] -\includegraphics[width=0.24\textwidth]{ppfigdim_f021}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f022}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f023}& -\includegraphics[width=0.24\textwidth]{ppfigdim_f024} -\end{tabular} -\vspace{-3ex} - \caption{\label{fig:aRTgraphs} - \bbobppfigdimlegend{$f_1$ and $f_{24}$} - } -\end{figure*} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Table showing the average runtime (aRT in number of function -% evaluations) for functions $f_1$--$f_{24} for dimension 80$. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -\begin{table*}\tiny -%\hfill80-D\hfill~\\[1ex] -{\normalsize \color{red} -\ifthenelse{\isundefined{\algorithmG}}{}{more than 6 algorithms: please split the tables below by hand until it fits to the page limits} -} -\mbox{\begin{minipage}[t]{0.499\textwidth}\tiny -\centering -\pptableheader - -\input{\bbobdatapath\algfolder pptable_f001_80D} -\input{\bbobdatapath\algfolder pptable_f002_80D} -\input{\bbobdatapath\algfolder pptable_f003_80D} -\input{\bbobdatapath\algfolder pptable_f004_80D} -\input{\bbobdatapath\algfolder pptable_f005_80D} -\input{\bbobdatapath\algfolder pptable_f006_80D} -\input{\bbobdatapath\algfolder pptable_f007_80D} -\input{\bbobdatapath\algfolder pptable_f008_80D} -\input{\bbobdatapath\algfolder pptable_f009_80D} -\input{\bbobdatapath\algfolder pptable_f010_80D} -\input{\bbobdatapath\algfolder pptable_f011_80D} -\input{\bbobdatapath\algfolder pptable_f012_80D} - -\pptablefooter - -\end{minipage} -\hspace{0.002\textwidth} -\begin{minipage}[t]{0.499\textwidth}\tiny -\centering - -\pptableheader - -\input{\bbobdatapath\algfolder pptable_f013_80D} -\input{\bbobdatapath\algfolder pptable_f014_80D} -\input{\bbobdatapath\algfolder pptable_f015_80D} -\input{\bbobdatapath\algfolder pptable_f016_80D} -\input{\bbobdatapath\algfolder pptable_f017_80D} -\input{\bbobdatapath\algfolder pptable_f018_80D} -\input{\bbobdatapath\algfolder pptable_f019_80D} -\input{\bbobdatapath\algfolder pptable_f020_80D} -\input{\bbobdatapath\algfolder pptable_f021_80D} -\input{\bbobdatapath\algfolder pptable_f022_80D} -\input{\bbobdatapath\algfolder pptable_f023_80D} -\input{\bbobdatapath\algfolder pptable_f024_80D} - -\pptablefooter -\end{minipage}} - -\caption[Table of aRTs]{\label{tab:aRTs80}\bbobpptablecaption{dimension $80$} -} -\end{table*} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Table showing the average runtime (aRT in number of function -% evaluations) for functions $f_1$--$f_{24} for dimension 320$. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{table*}\tiny -%\hfill320-D\hfill~\\[1ex] -\mbox{\begin{minipage}[t]{0.499\textwidth}\tiny -\centering -\pptableheader - -\input{\bbobdatapath\algfolder pptable_f001_320D} -\input{\bbobdatapath\algfolder pptable_f002_320D} -\input{\bbobdatapath\algfolder pptable_f003_320D} -\input{\bbobdatapath\algfolder pptable_f004_320D} -\input{\bbobdatapath\algfolder pptable_f005_320D} -\input{\bbobdatapath\algfolder pptable_f006_320D} -\input{\bbobdatapath\algfolder pptable_f007_320D} -\input{\bbobdatapath\algfolder pptable_f008_320D} -\input{\bbobdatapath\algfolder pptable_f009_320D} -\input{\bbobdatapath\algfolder pptable_f010_320D} -\input{\bbobdatapath\algfolder pptable_f011_320D} -\input{\bbobdatapath\algfolder pptable_f012_320D} - -\pptablefooter - -\end{minipage} -\hspace{0.002\textwidth} -\begin{minipage}[t]{0.499\textwidth}\tiny -\centering -\pptableheader - -\input{\bbobdatapath\algfolder pptable_f013_320D} -\input{\bbobdatapath\algfolder pptable_f014_320D} -\input{\bbobdatapath\algfolder pptable_f015_320D} -\input{\bbobdatapath\algfolder pptable_f016_320D} -\input{\bbobdatapath\algfolder pptable_f017_320D} -\input{\bbobdatapath\algfolder pptable_f018_320D} -\input{\bbobdatapath\algfolder pptable_f019_320D} -\input{\bbobdatapath\algfolder pptable_f020_320D} -\input{\bbobdatapath\algfolder pptable_f021_320D} -\input{\bbobdatapath\algfolder pptable_f022_320D} -\input{\bbobdatapath\algfolder pptable_f023_320D} -\input{\bbobdatapath\algfolder pptable_f024_320D} - -\pptablefooter - -\end{minipage}} - -\caption[Table of aRTs]{\label{tab:aRTs320}\bbobpptablecaption{dimension $320$} -} -\end{table*} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Empirical cumulative distribution functions (ECDFs) per function group. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\begin{figure*} -\begin{tabular}{l@{\hspace*{-0.00\textwidth}}l@{\hspace*{0.01\textwidth}}|l@{\hspace*{-0.00\textwidth}}l} -\multicolumn{2}{c}{$D=80$} & \multicolumn{2}{c}{$D=320$}\\[-0.5ex] -\rot[3]{all functions} -\includegraphics[width=0.2362\textwidth]{pprldistr_80D_noiselessall} & -\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_noiselessall} & -\includegraphics[width=0.2362\textwidth]{pprldistr_320D_noiselessall} & -\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_noiselessall} \\[-0.2em] -\rot[2.9]{separable fcts} -\includegraphics[width=0.2362\textwidth]{pprldistr_80D_separ} & -\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_separ} & -\includegraphics[width=0.2362\textwidth]{pprldistr_320D_separ} & -\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_separ} \\[-0.2em] -\rot[1.45]{misc.\ moderate fcts} -\includegraphics[width=0.2362\textwidth]{pprldistr_80D_lcond} & -\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_lcond} & -\includegraphics[width=0.2362\textwidth]{pprldistr_320D_lcond} & -\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_lcond} \\[-0.2em] -\rot[1.5]{ill-conditioned fcts} -\includegraphics[width=0.2362\textwidth]{pprldistr_80D_hcond} & -\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_hcond} & -\includegraphics[width=0.2362\textwidth]{pprldistr_320D_hcond} & -\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_hcond} \\[-0.2em] -\rot[2.3]{multi-modal fcts} -\includegraphics[width=0.2362\textwidth]{pprldistr_80D_multi} & -\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_multi} & -\includegraphics[width=0.2362\textwidth]{pprldistr_320D_multi} & -\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_multi} \\[-0.2em] -\rot[1.7]{weak structure fcts} -\includegraphics[width=0.2362\textwidth]{pprldistr_80D_mult2} & -\includegraphics[width=0.2362\textwidth]{ppfvdistr_80D_mult2} & -\includegraphics[width=0.2362\textwidth]{pprldistr_320D_mult2} & -\includegraphics[width=0.2362\textwidth]{ppfvdistr_320D_mult2} -\vspace*{-1ex} -\end{tabular} - \caption{\label{fig:ECDFs} - \bbobpprldistrlegend{} - } -\end{figure*} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% ECDFs per function - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{figure*} -\centering -\begin{tabular}{l@{\hspace*{-0.00\textwidth}}l@{\hspace*{0.01\textwidth}}|l@{\hspace*{-0.00\textwidth}}l} -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f001}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f002}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f003}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f004}\\[-0.2em] -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f005}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f006}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f007}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f008}\\[-0.2em] -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f009}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f010}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f011}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f012}\\[-0.2em] -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f013}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f014}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f015}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f016}\\[-0.2em] -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f017}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f018}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f019}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f020}\\[-0.2em] -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f021}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f022}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f023}& -\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f024} -\vspace*{-1ex} -\end{tabular} - \caption{\label{fig:ECDFsingleOne} - \bbobecdfcaptionsinglefunctionssingledim{$\!\!$s 20 to 640} -} -\end{figure*} - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -}{} % end of 1 algorithm template - - - - - -\ifthenelse{\equal{\numberofalgorithms}{two} \or \equal{\numberofalgorithms}{three}}{ - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Scaling of aRT with dimension - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\begin{figure*} -\centering -\begin{tabular}{@{}c@{}c@{}c@{}c@{}} -\includegraphics[width=0.24\textwidth]{ppfigs_f001}& -\includegraphics[width=0.24\textwidth]{ppfigs_f002}& -\includegraphics[width=0.24\textwidth]{ppfigs_f003}& -\includegraphics[width=0.24\textwidth]{ppfigs_f004}\\[-0.25em] -\includegraphics[width=0.24\textwidth]{ppfigs_f005}& -\includegraphics[width=0.24\textwidth]{ppfigs_f006}& -\includegraphics[width=0.24\textwidth]{ppfigs_f007}& -\includegraphics[width=0.24\textwidth]{ppfigs_f008}\\[-0.25em] -\includegraphics[width=0.24\textwidth]{ppfigs_f009}& -\includegraphics[width=0.24\textwidth]{ppfigs_f010}& -\includegraphics[width=0.24\textwidth]{ppfigs_f011}& -\includegraphics[width=0.24\textwidth]{ppfigs_f012}\\[-0.25em] -\includegraphics[width=0.24\textwidth]{ppfigs_f013}& -\includegraphics[width=0.24\textwidth]{ppfigs_f014}& -\includegraphics[width=0.24\textwidth]{ppfigs_f015}& -\includegraphics[width=0.24\textwidth]{ppfigs_f016}\\[-0.25em] -\includegraphics[width=0.24\textwidth]{ppfigs_f017}& -\includegraphics[width=0.24\textwidth]{ppfigs_f018}& -\includegraphics[width=0.24\textwidth]{ppfigs_f019}& -\includegraphics[width=0.24\textwidth]{ppfigs_f020}\\[-0.25em] -\includegraphics[width=0.24\textwidth]{ppfigs_f021}& -\includegraphics[width=0.24\textwidth]{ppfigs_f022}& -\includegraphics[width=0.24\textwidth]{ppfigs_f023}& -\includegraphics[width=0.24\textwidth]{ppfigs_f024} -\end{tabular} -\vspace*{-0.2cm} -\caption[Average running time (\aRT) divided by dimension -versus dimension in log-log presentation]{ -\label{fig:scaling} -\bbobppfigslegend{$f_1$ and $f_{24}$}. -} -% -\end{figure*} - - - - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Empirical cumulative distribution functions (ECDFs) per function group -% for dimensions 80 and 320 - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\begin{figure*} - \begin{tabular}{@{}c@{\hspace*{0.05\textwidth}}c@{}} - separable fcts & moderate fcts \\ - \includeperfprof{pprldmany_80D_separ} & - \includeperfprof{pprldmany_80D_lcond} \\ -ill-conditioned fcts & multi-modal fcts \\ - \includeperfprof{pprldmany_80D_hcond} & - \includeperfprof{pprldmany_80D_multi} \\ - weakly structured multi-modal fcts & all functions\\ - \includeperfprof{pprldmany_80D_mult2} & - \includeperfprof{pprldmany_80D_noiselessall} - \end{tabular} -\caption{ -\label{fig:ECDFs80D} -\bbobECDFslegend{80} -} -\end{figure*} - - -\begin{figure*} - \begin{tabular}{@{}c@{\hspace*{0.05\textwidth}}c@{}} - separable fcts & moderate fcts \\ - \includeperfprof{pprldmany_320D_separ} & - \includeperfprof{pprldmany_320D_lcond} \\ -ill-conditioned fcts & multi-modal fcts \\ - \includeperfprof{pprldmany_320D_hcond} & - \includeperfprof{pprldmany_320D_multi} \\ - weakly structured multi-modal fcts & all functions\\ - \includeperfprof{pprldmany_320D_mult2} & - \includeperfprof{pprldmany_320D_noiselessall} - \end{tabular} -\caption{ -\label{fig:ECDFs320D} -\bbobECDFslegend{320} -} -\end{figure*} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% ECDFs per function in dimension 160 - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{figure*} -\centering -\begin{tabular}{@{}l@{}l@{}l@{}l@{}l@{}} -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f001_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f002_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f003_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f004_160D}\\ -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f005_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f006_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f007_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f008_160D}\\ -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f009_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f010_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f011_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f012_160D}\\ -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f013_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f014_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f015_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f016_160D}\\ -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f017_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f018_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f019_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f020_160D}\\ -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f021_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f022_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f023_160D}& -\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f024_160D} -\end{tabular} - \caption{\label{fig:ECDFsingleOne} - \bbobecdfcaptionsinglefunctionssingledim{160} -} -\end{figure*} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Table showing the average runtime (aRT in number of function -% evaluations) for functions $f_1$--$f_{24}$. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{table*} -%\hfill80-D\hfill~\\[1ex] -{\normalsize \color{red} -\ifthenelse{\isundefined{\algorithmG}}{}{more than 6 algorithms: please split the tables below by hand until it fits to the page limits} -} -\mbox{\begin{minipage}[t]{0.495\textwidth} -\centering -80-D\\[5pt] -\tiny -\pptablesheader -\input{\bbobdatapath\algsfolder pptables_f001_80D} -\input{\bbobdatapath\algsfolder pptables_f002_80D} -\input{\bbobdatapath\algsfolder pptables_f003_80D} -\input{\bbobdatapath\algsfolder pptables_f004_80D} -\input{\bbobdatapath\algsfolder pptables_f005_80D} -\input{\bbobdatapath\algsfolder pptables_f006_80D} -\input{\bbobdatapath\algsfolder pptables_f007_80D} -\input{\bbobdatapath\algsfolder pptables_f008_80D} -\input{\bbobdatapath\algsfolder pptables_f009_80D} -\input{\bbobdatapath\algsfolder pptables_f010_80D} -\input{\bbobdatapath\algsfolder pptables_f011_80D} -\input{\bbobdatapath\algsfolder pptables_f012_80D} -\input{\bbobdatapath\algsfolder pptables_f013_80D} -\input{\bbobdatapath\algsfolder pptables_f014_80D} -\input{\bbobdatapath\algsfolder pptables_f015_80D} -\input{\bbobdatapath\algsfolder pptables_f016_80D} -\input{\bbobdatapath\algsfolder pptables_f017_80D} -\input{\bbobdatapath\algsfolder pptables_f018_80D} -\input{\bbobdatapath\algsfolder pptables_f019_80D} -\input{\bbobdatapath\algsfolder pptables_f020_80D} -\input{\bbobdatapath\algsfolder pptables_f021_80D} -\input{\bbobdatapath\algsfolder pptables_f022_80D} -\input{\bbobdatapath\algsfolder pptables_f023_80D} -\input{\bbobdatapath\algsfolder pptables_f024_80D} -\end{tabularx} -\end{minipage}} -\hspace{0.002\textwidth} -\mbox{\begin{minipage}[t]{0.495\textwidth} -\centering -320-D\\[5pt] -\tiny -\pptablesheader -\input{\bbobdatapath\algsfolder pptables_f001_320D} -\input{\bbobdatapath\algsfolder pptables_f002_320D} -\input{\bbobdatapath\algsfolder pptables_f003_320D} -\input{\bbobdatapath\algsfolder pptables_f004_320D} -\input{\bbobdatapath\algsfolder pptables_f005_320D} -\input{\bbobdatapath\algsfolder pptables_f006_320D} -\input{\bbobdatapath\algsfolder pptables_f007_320D} -\input{\bbobdatapath\algsfolder pptables_f008_320D} -\input{\bbobdatapath\algsfolder pptables_f009_320D} -\input{\bbobdatapath\algsfolder pptables_f010_320D} -\input{\bbobdatapath\algsfolder pptables_f011_320D} -\input{\bbobdatapath\algsfolder pptables_f012_320D} -\input{\bbobdatapath\algsfolder pptables_f013_320D} -\input{\bbobdatapath\algsfolder pptables_f014_320D} -\input{\bbobdatapath\algsfolder pptables_f015_320D} -\input{\bbobdatapath\algsfolder pptables_f016_320D} -\input{\bbobdatapath\algsfolder pptables_f017_320D} -\input{\bbobdatapath\algsfolder pptables_f018_320D} -\input{\bbobdatapath\algsfolder pptables_f019_320D} -\input{\bbobdatapath\algsfolder pptables_f020_320D} -\input{\bbobdatapath\algsfolder pptables_f021_320D} -\input{\bbobdatapath\algsfolder pptables_f022_320D} -\input{\bbobdatapath\algsfolder pptables_f023_320D} -\input{\bbobdatapath\algsfolder pptables_f024_320D} -\end{tabularx} -\end{minipage}} - -\caption{\label{tab:aRTs} -\bbobpptablesmanylegend{dimensions $80$ (left) and $320$ (right)} -} -\end{table*} - - -}{} % end of all that comes for 2 or 3+ algorithms - - - -\ifthenelse{\equal{\numberofalgorithms}{two}}{ - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Scatter plots per function. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\begin{figure*} -\begin{tabular}{*{4}{@{}c@{}}} - \includegraphics[height=0.2\textwidth]{ppscatter_f001}& - \includegraphics[height=0.2\textwidth]{ppscatter_f002}& - \includegraphics[height=0.2\textwidth]{ppscatter_f003}& - \includegraphics[height=0.2\textwidth]{ppscatter_f004}\\[-0.6em] - \includegraphics[height=0.2\textwidth]{ppscatter_f005}& - \includegraphics[height=0.2\textwidth]{ppscatter_f006}& - \includegraphics[height=0.2\textwidth]{ppscatter_f007}& - \includegraphics[height=0.2\textwidth]{ppscatter_f008}\\[-0.6em] - \includegraphics[height=0.2\textwidth]{ppscatter_f009}& - \includegraphics[height=0.2\textwidth]{ppscatter_f010}& - \includegraphics[height=0.2\textwidth]{ppscatter_f011}& - \includegraphics[height=0.2\textwidth]{ppscatter_f012}\\[-0.6em] - \includegraphics[height=0.2\textwidth]{ppscatter_f013}& - \includegraphics[height=0.2\textwidth]{ppscatter_f014}& - \includegraphics[height=0.2\textwidth]{ppscatter_f015}& - \includegraphics[height=0.2\textwidth]{ppscatter_f016}\\[-0.6em] - \includegraphics[height=0.2\textwidth]{ppscatter_f017}& - \includegraphics[height=0.2\textwidth]{ppscatter_f018}& - \includegraphics[height=0.2\textwidth]{ppscatter_f019}& - \includegraphics[height=0.2\textwidth]{ppscatter_f020}\\[-0.6em] - \includegraphics[height=0.2\textwidth]{ppscatter_f021}& - \includegraphics[height=0.2\textwidth]{ppscatter_f022}& - \includegraphics[height=0.2\textwidth]{ppscatter_f023}& - \includegraphics[height=0.2\textwidth]{ppscatter_f024} -\end{tabular} -\caption{\label{fig:scatterplots} -\bbobppscatterlegend{$f_1$--$f_{24}$} -} -\end{figure*} - - - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% The following two commands are all you need in the -% initial runs of your .tex file to -% produce the bibliography for the citations in your paper. -\bibliographystyle{abbrv} -\bibliography{bbob} % bbob.bib is the name of the Bibliography in this case -% You must have a proper ".bib" file -% and remember to run: -% latex bibtex latex latex -% to resolve all references -% to create the ~.bbl file. Insert that ~.bbl file into -% the .tex source file and comment out -% the command \texttt{{\char'134}thebibliography}. -% -% ACM needs 'a single self-contained file'! -% - -% \clearpage % otherwise the last figure might be missing -\end{document} From f4f834027777bd171285e523565ffeccbfe882d2 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Sun, 16 Dec 2018 17:57:20 +0100 Subject: [PATCH 346/446] Title correction --- code-postprocessing/latex-templates/bbob.bib | 8 ++++++++ .../latex-templates/templateBBOBLSarticle.tex | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/code-postprocessing/latex-templates/bbob.bib b/code-postprocessing/latex-templates/bbob.bib index 847efc4fc..c760971bb 100644 --- a/code-postprocessing/latex-templates/bbob.bib +++ b/code-postprocessing/latex-templates/bbob.bib @@ -10,6 +10,14 @@ @ARTICLE{hansen2016perfass year = 2016 } +@ARTICLE{bbobls2018func, + author = {}, + title = {}, + journal = {ArXiv e-prints}, + volume = {}, + year = 2019 +} + @ARTICLE{biobj2016perfass, author = {Brockhoff, D. and Tu{\v s}ar, T. and Tu{\v s}ar, D. and Wagner, T. and Hansen, N. and Auger, A.}, diff --git a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex index 7adf5093d..0f87266e8 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex @@ -110,7 +110,7 @@ \begin{document} -\title{Black-Box Optimization Benchmarking Template for the Comparison of Multiple Algorithms on the \bbobls Testbed} +\title{Black-Box Optimization Benchmarking Template for the Comparison of Algorithms on the \bbobls Testbed} \renewcommand{\shorttitle}{Template to Compare Multiple Algorithms on the \bbobls Testbed} \titlenote{Submission deadline: March 31st.} %Camera-ready paper due April 24th.}} From 67a299884ef1fb5389a277fd6e4afedcf8dd2201 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Sun, 16 Dec 2018 18:18:31 +0100 Subject: [PATCH 347/446] Short title correction --- code-postprocessing/latex-templates/templateBBOBLSarticle.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex index 0f87266e8..0caa1342c 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex @@ -111,7 +111,7 @@ \title{Black-Box Optimization Benchmarking Template for the Comparison of Algorithms on the \bbobls Testbed} -\renewcommand{\shorttitle}{Template to Compare Multiple Algorithms on the \bbobls Testbed} +\renewcommand{\shorttitle}{Template to Compare Algorithms on the \bbobls Testbed} \titlenote{Submission deadline: March 31st.} %Camera-ready paper due April 24th.}} \subtitle{Draft version} From 55488765689ec6060d2c453a0379863a02680850 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Mon, 17 Dec 2018 14:41:04 +0100 Subject: [PATCH 348/446] Newcommand to distinguish 2 or 3+ algos --- .../latex-templates/templateBBOBLSarticle.tex | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex index 0caa1342c..ed6bb52ba 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex @@ -61,7 +61,7 @@ { \newcommand{\numberofalgorithms}{one} }{ - \ifthenelse{\equal{\numofalgs}{2}} + \ifthenelse{\isundefined{\algorithmC}} { \newcommand{\numberofalgorithms}{two} }{ @@ -103,7 +103,15 @@ \hspace*{-3.5\baselineskip}% \begin{rotate}{90}\hspace{#1em}#2\vspace{0.5em} \end{rotate}} - +\newcommand{\includeperfprof}[1]{% include and annotate at the side + \input{\bbobdatapath\algsfolder #1}% + \includegraphics[height=0.24\textheight]{#1}% + %\raisebox{.12\textheight}{ + %\parbox[b][.24\textheight]{.0868\textwidth}{\begin{scriptsize} + % \perfprofsidepanel % this is "\algaperfprof \vfill \algbperfprof \vfill" etc + %\end{scriptsize}} + %} +} %%%%%%%%%%%%%%%%%%%%%% END OF PREAMBLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -797,26 +805,16 @@ \section{Results} -} +} % end of 2 algorithms template + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% The following two commands are all you need in the -% initial runs of your .tex file to -% produce the bibliography for the citations in your paper. -\bibliographystyle{abbrv} + +\bibliographystyle{ACM-Reference-Format} \bibliography{bbob} % bbob.bib is the name of the Bibliography in this case -% You must have a proper ".bib" file -% and remember to run: -% latex bibtex latex latex -% to resolve all references -% to create the ~.bbl file. Insert that ~.bbl file into -% the .tex source file and comment out -% the command \texttt{{\char'134}thebibliography}. -% -% ACM needs 'a single self-contained file'! -% -% \clearpage % otherwise the last figure might be missing +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \end{document} From 52774db630bc4de2d5b1477de1af33b9f10c7aba Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Mon, 17 Dec 2018 15:16:44 +0100 Subject: [PATCH 349/446] Add (empty for now) reference - Update main text of latex template according to unified template --- code-postprocessing/latex-templates/bbob.bib | 16 +++--- .../latex-templates/templateBBOBLSarticle.tex | 52 ++++++++++++++----- 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/code-postprocessing/latex-templates/bbob.bib b/code-postprocessing/latex-templates/bbob.bib index c760971bb..8e1fedf7f 100644 --- a/code-postprocessing/latex-templates/bbob.bib +++ b/code-postprocessing/latex-templates/bbob.bib @@ -1,6 +1,14 @@ % This file was created with JabRef 2.7.2. % Encoding: MacRoman +@ARTICLE{bbobls2019func, + author = {}, + title = {}, + journal = {}, + volume = {}, + year = 2019 +} + @ARTICLE{hansen2016perfass, author = {Hansen, N. and Auger, A and Brockhoff, D. and Tu{\v s}ar, D. and Tu{\v s}ar, T.}, @@ -10,14 +18,6 @@ @ARTICLE{hansen2016perfass year = 2016 } -@ARTICLE{bbobls2018func, - author = {}, - title = {}, - journal = {ArXiv e-prints}, - volume = {}, - year = 2019 -} - @ARTICLE{biobj2016perfass, author = {Brockhoff, D. and Tu{\v s}ar, T. and Tu{\v s}ar, D. and Wagner, T. and Hansen, N. and Auger, A.}, diff --git a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex index ed6bb52ba..cc80be6c1 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex @@ -238,7 +238,7 @@ \section{CPU Timing} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % note that the following text is just a proposal and can/should be changed to your needs: -In order to evaluate the CPU timing of the algorithm, we have run the \change{\algorithmA} with restarts on the entire \bbobls test suite \cite{bbobls2018func} for $2 D$ function evaluations according to \cite{hansen2016exp}. The \change{C/Java/Matlab/Octave/Python} code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores \change{and (compile) options xxx}. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. +In order to evaluate the CPU timing of the algorithm, we have run the \change{\algorithmA} with restarts on the entire \bbobls test suite \cite{bbobls2019func} for $2 D$ function evaluations according to \cite{hansen2016exp}. The \change{C/Java/Matlab/Octave/Python} code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores \change{and (compile) options xxx}. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. \ifthenelse{\equal{\numberofalgorithms}{one}}{}{ \change{repeat the above for any algorithm tested} @@ -249,15 +249,15 @@ \section{Results} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Results from experiments according to \cite{hansen2016exp} and \cite{hansen2016perfass} on the -benchmark functions given in \cite{bbobls2018func} are +benchmark functions given in \cite{bbobls2019func} are presented in %% \ifthenelse{\equal{\numberofalgorithms}{one}}{ Figures~\ref{fig:aRTgraphs}, \ref{fig:ECDFs}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs80} and \ref{tab:aRTs320}. }{\ifthenelse{\equal{\numberofalgorithms}{two}}{ -Figures~\ref{fig:scaling}, \ref{fig:scatterplots}, \ref{fig:ECDFs80D}, \ref{fig:ECDFs320D} and \ref{fig:ECDFsingleOne}, and Tables~\ref{tab:aRTs}. +Figures~\ref{fig:scaling}, \ref{fig:scatterplots}, \ref{fig:ECDFs80D}, \ref{fig:ECDFs320D} and \ref{fig:ECDFsingleOne}, and Tables~\ref{tab:aRTs80} and \ref{tab:aRTs320}. }{\ifthenelse{\equal{\numberofalgorithms}{three}}{ -Figures~\ref{fig:scaling}, \ref{fig:ECDFs80D}, \ref{fig:ECDFs320D}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs}. +Figures~\ref{fig:scaling}, \ref{fig:ECDFs80D}, \ref{fig:ECDFs320D}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs80} and \ref{tab:aRTs320}. }{}}} %% The experiments were performed with COCO \cite{hansen2016cocoplat}, version @@ -675,18 +675,16 @@ \section{Results} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Table showing the average runtime (aRT in number of function -% evaluations) for functions $f_1$--$f_{24}$. +% evaluations) for functions $f_1$--$f_{24}$ for dimension 80. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{table*} +\begin{table*}\tiny %\hfill80-D\hfill~\\[1ex] {\normalsize \color{red} \ifthenelse{\isundefined{\algorithmG}}{}{more than 6 algorithms: please split the tables below by hand until it fits to the page limits} } \mbox{\begin{minipage}[t]{0.495\textwidth} \centering -80-D\\[5pt] -\tiny \pptablesheader \input{\bbobdatapath\algsfolder pptables_f001_80D} \input{\bbobdatapath\algsfolder pptables_f002_80D} @@ -700,6 +698,12 @@ \section{Results} \input{\bbobdatapath\algsfolder pptables_f010_80D} \input{\bbobdatapath\algsfolder pptables_f011_80D} \input{\bbobdatapath\algsfolder pptables_f012_80D} +\end{tabularx} +\end{minipage} +\hspace{0.002\textwidth} +\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\pptablesheader \input{\bbobdatapath\algsfolder pptables_f013_80D} \input{\bbobdatapath\algsfolder pptables_f014_80D} \input{\bbobdatapath\algsfolder pptables_f015_80D} @@ -714,11 +718,27 @@ \section{Results} \input{\bbobdatapath\algsfolder pptables_f024_80D} \end{tabularx} \end{minipage}} -\hspace{0.002\textwidth} + +\caption{\label{tab:aRTs80} +\bbobpptablesmanylegend{dimension $80$} +} +\end{table*} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Table showing the average runtime (aRT in number of function +% evaluations) for functions $f_1$--$f_{24}$ for dimension 320. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*}\tiny +%\hfill80-D\hfill~\\[1ex] +{\normalsize \color{red} +\ifthenelse{\isundefined{\algorithmG}}{}{more than 6 algorithms: please split the tables below by hand until it fits to the page limits} +} \mbox{\begin{minipage}[t]{0.495\textwidth} \centering -320-D\\[5pt] -\tiny \pptablesheader \input{\bbobdatapath\algsfolder pptables_f001_320D} \input{\bbobdatapath\algsfolder pptables_f002_320D} @@ -732,6 +752,12 @@ \section{Results} \input{\bbobdatapath\algsfolder pptables_f010_320D} \input{\bbobdatapath\algsfolder pptables_f011_320D} \input{\bbobdatapath\algsfolder pptables_f012_320D} +\end{tabularx} +\end{minipage} +\hspace{0.002\textwidth} +\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\pptablesheader \input{\bbobdatapath\algsfolder pptables_f013_320D} \input{\bbobdatapath\algsfolder pptables_f014_320D} \input{\bbobdatapath\algsfolder pptables_f015_320D} @@ -747,8 +773,8 @@ \section{Results} \end{tabularx} \end{minipage}} -\caption{\label{tab:aRTs} -\bbobpptablesmanylegend{dimensions $80$ (left) and $320$ (right)} +\caption{\label{tab:aRTs320} +\bbobpptablesmanylegend{dimension $320$} } \end{table*} From ca204aac8341dcf9be582d7e3566d58378956492 Mon Sep 17 00:00:00 2001 From: brockhof Date: Tue, 8 Jan 2019 12:49:16 +0100 Subject: [PATCH 350/446] corrected a few things, I spotted during proof-reading of the pull request #1823 --- code-experiments/src/coco_suite.c | 6 ++++-- code-experiments/src/f_attractive_sector.c | 4 ++-- code-experiments/src/f_gallagher.c | 2 -- code-experiments/src/suite_largescale.c | 1 - code-experiments/src/transform_obj_norm_by_dim.c | 1 - code-experiments/src/transform_vars_permblockdiag.c | 11 +++++------ code-postprocessing/cocopp/comp2/ppfig2.py | 1 - code-postprocessing/cocopp/comp2/ppscatter.py | 2 +- code-postprocessing/cocopp/compall/ppfigs.py | 8 ++------ .../{bbob_pproc => cocopp}/tth_C/CHANGES | 0 .../{bbob_pproc => cocopp}/tth_C/INSTALL | 0 .../{bbob_pproc => cocopp}/tth_C/latex2gif | 0 .../{bbob_pproc => cocopp}/tth_C/license.txt | 0 .../{bbob_pproc => cocopp}/tth_C/ps2gif | 0 .../{bbob_pproc => cocopp}/tth_C/ps2png | 0 .../{bbob_pproc => cocopp}/tth_C/tth | Bin .../{bbob_pproc => cocopp}/tth_C/tth.1 | 0 .../{bbob_pproc => cocopp}/tth_C/tth.c | 0 .../{bbob_pproc => cocopp}/tth_C/tth.gif | Bin .../{bbob_pproc => cocopp}/tth_C/tth_manual.html | 0 .../{bbob_pproc => cocopp}/tth_C/tthsplit.c | 0 21 files changed, 14 insertions(+), 22 deletions(-) rename code-postprocessing/{bbob_pproc => cocopp}/tth_C/CHANGES (100%) rename code-postprocessing/{bbob_pproc => cocopp}/tth_C/INSTALL (100%) rename code-postprocessing/{bbob_pproc => cocopp}/tth_C/latex2gif (100%) rename code-postprocessing/{bbob_pproc => cocopp}/tth_C/license.txt (100%) rename code-postprocessing/{bbob_pproc => cocopp}/tth_C/ps2gif (100%) rename code-postprocessing/{bbob_pproc => cocopp}/tth_C/ps2png (100%) rename code-postprocessing/{bbob_pproc => cocopp}/tth_C/tth (100%) mode change 100755 => 100644 rename code-postprocessing/{bbob_pproc => cocopp}/tth_C/tth.1 (100%) rename code-postprocessing/{bbob_pproc => cocopp}/tth_C/tth.c (100%) rename code-postprocessing/{bbob_pproc => cocopp}/tth_C/tth.gif (100%) rename code-postprocessing/{bbob_pproc => cocopp}/tth_C/tth_manual.html (100%) rename code-postprocessing/{bbob_pproc => cocopp}/tth_C/tthsplit.c (100%) diff --git a/code-experiments/src/coco_suite.c b/code-experiments/src/coco_suite.c index 48779f4e5..624660f8b 100644 --- a/code-experiments/src/coco_suite.c +++ b/code-experiments/src/coco_suite.c @@ -70,8 +70,10 @@ static const char *coco_suite_get_instances_by_year(const coco_suite_t *suite, c } else if (strcmp(suite->suite_name, "bbob-biobj-ext") == 0) { year_string = suite_biobj_ext_get_instances_by_year(year); } else if (strcmp(suite->suite_name, "bbob-constrained") == 0) { - year_string = suite_cons_bbob_get_instances_by_year(year); } else if (strcmp(suite->suite_name, "bbob-largescale") == 0) { - year_string = suite_largescale_get_instances_by_year(year); } else { + year_string = suite_cons_bbob_get_instances_by_year(year); + } else if (strcmp(suite->suite_name, "bbob-largescale") == 0) { + year_string = suite_largescale_get_instances_by_year(year); + } else { coco_error("coco_suite_get_instances_by_year(): suite '%s' has no years defined", suite->suite_name); return NULL; } diff --git a/code-experiments/src/f_attractive_sector.c b/code-experiments/src/f_attractive_sector.c index c785607cd..e6f14c10a 100644 --- a/code-experiments/src/f_attractive_sector.c +++ b/code-experiments/src/f_attractive_sector.c @@ -159,7 +159,7 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c const double *const *B2_copy; const double condition = 10.0; size_t *P11, *P12, *P21, *P22; - size_t *block_sizes1, *block_sizes2;/* each of R and Q migh have its own parameter values */ + size_t *block_sizes1, *block_sizes2;/* each of R and Q might have its own parameter values */ size_t nb_blocks1, nb_blocks2; size_t swap_range1, swap_range2; size_t nb_swaps1, nb_swaps2; @@ -177,7 +177,7 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c B1 = coco_allocate_blockmatrix(dimension, block_sizes1, nb_blocks1); B2 = coco_allocate_blockmatrix(dimension, block_sizes2, nb_blocks2); - B1_copy = (const double *const *)B1;/* Wassim: silences the warning, not sure it prevents the modification of B at all levels*/ + B1_copy = (const double *const *)B1; /* Wassim: silences the warning, not sure it prevents the modification of B at all levels*/ B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 66f2cad55..1d0aebb3b 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -6,8 +6,6 @@ #include #include -/*Wassim: timing TODO: remove*/ - #include "coco.h" #include "coco_problem.c" #include "coco_utilities.c" diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 190e9812a..27d60d630 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -16,7 +16,6 @@ #include "f_rastrigin.c" #include "f_schaffers.c" #include "f_schwefel_generalized.c" -/*#include "f_sharp_ridge.c"*/ #include "f_sharp_ridge_generalized.c" #include "f_sphere.c" #include "f_step_ellipsoid.c" diff --git a/code-experiments/src/transform_obj_norm_by_dim.c b/code-experiments/src/transform_obj_norm_by_dim.c index 0d367d379..b231cb060 100644 --- a/code-experiments/src/transform_obj_norm_by_dim.c +++ b/code-experiments/src/transform_obj_norm_by_dim.c @@ -29,6 +29,5 @@ static coco_problem_t *transform_obj_norm_by_dim(coco_problem_t *inner_problem) problem = coco_problem_transformed_allocate(inner_problem, NULL, NULL, "transform_obj_norm_by_dim"); problem->evaluate_function = transform_obj_norm_by_dim_evaluate; - /*problem->best_value[0] *= 1;*/ /*shouldn't matter*/ return problem; } diff --git a/code-experiments/src/transform_vars_permblockdiag.c b/code-experiments/src/transform_vars_permblockdiag.c index e1327c1d3..70d4f4216 100644 --- a/code-experiments/src/transform_vars_permblockdiag.c +++ b/code-experiments/src/transform_vars_permblockdiag.c @@ -6,7 +6,6 @@ #include "coco.h" #include "coco_problem.c" -/* #include "large_scale_transformations.c" */ #include "transform_vars_permutation_helpers.c" #include "transform_vars_blockrotation_helpers.c" @@ -38,12 +37,12 @@ static void transform_vars_permblockdiag_evaluate(coco_problem_t *problem, const data = (transform_vars_permblockdiag_t *) coco_problem_transformed_get_data(problem); inner_problem = coco_problem_transformed_get_inner_problem(problem); for (i = 0; i < inner_problem->number_of_variables; ++i) { - current_blocksize = data->block_size_map[data->P2[i]];/*the block_size is that of the permuted line*/ + current_blocksize = data->block_size_map[data->P2[i]]; /* the block_size is that of the permuted line */ first_non_zero_ind = data->first_non_zero_map[data->P2[i]]; data->x[i] = 0; - /*compute data->x[i] = < B[P2[i]] , x[P1] > */ - for (j = first_non_zero_ind; j < first_non_zero_ind + current_blocksize; ++j) {/*blocksize[P2[i]]*/ - data->x[i] += data->B[data->P2[i]][j - first_non_zero_ind] * x[data->P1[j]];/*all B lines start at 0*/ + /* compute data->x[i] = < B[P2[i]] , x[P1] > */ + for (j = first_non_zero_ind; j < first_non_zero_ind + current_blocksize; ++j) { /* blocksize[P2[i]] */ + data->x[i] += data->B[data->P2[i]][j - first_non_zero_ind] * x[data->P1[j]]; /* all B lines start at 0 */ } } @@ -102,7 +101,7 @@ static coco_problem_t *transform_vars_permblockdiag(coco_problem_t *inner_proble } current_blocksize=block_sizes[idx_blocksize]; data->block_size_map[i] = current_blocksize; - data->first_non_zero_map[i] = next_bs_change - current_blocksize;/* next_bs_change serves also as a cumsum for blocksizes*/ + data->first_non_zero_map[i] = next_bs_change - current_blocksize; /* next_bs_change serves also as a cumsum for blocksizes */ } problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_permblockdiag_free, "transform_vars_permblockdiag"); diff --git a/code-postprocessing/cocopp/comp2/ppfig2.py b/code-postprocessing/cocopp/comp2/ppfig2.py index fb4bbabbd..d2dda1292 100644 --- a/code-postprocessing/cocopp/comp2/ppfig2.py +++ b/code-postprocessing/cocopp/comp2/ppfig2.py @@ -56,7 +56,6 @@ fthresh = 1e-8 xmax = 1000 -#dimension_index = dict([(dimensions[i], i) for i in range(len(dimensions))]) def _generateData(entry0, entry1, fthresh=None, downsampling=None): diff --git a/code-postprocessing/cocopp/comp2/ppscatter.py b/code-postprocessing/cocopp/comp2/ppscatter.py index fa3e103a5..2a8ada3bd 100644 --- a/code-postprocessing/cocopp/comp2/ppscatter.py +++ b/code-postprocessing/cocopp/comp2/ppscatter.py @@ -75,7 +75,7 @@ def prepare_figure_caption(): %d:{\color{blue}$\star$}, %d:$\circ$, %d:{\color{red}$\Box$}, - %d:{\color{magenta}$\Diamond$}. """ %tuple(testbedsettings.current_testbed.dimensions_to_display) + %d:{\color{magenta}$\Diamond$}. """ % tuple(testbedsettings.current_testbed.dimensions_to_display) if genericsettings.runlength_based_targets: diff --git a/code-postprocessing/cocopp/compall/ppfigs.py b/code-postprocessing/cocopp/compall/ppfigs.py index 634a118b1..559f3e26b 100644 --- a/code-postprocessing/cocopp/compall/ppfigs.py +++ b/code-postprocessing/cocopp/compall/ppfigs.py @@ -142,7 +142,7 @@ def prepare_ecdfs_figure_caption(): else: figure_caption = ecdfs_figure_caption_standard + refalgtext else: - figure_caption = ecdfs_figure_caption_standard + warnings.warn("Current settings do not support ppfigdim caption.") return figure_caption @@ -374,17 +374,13 @@ def beautify(legend=False, rightlegend=False): axisHandle.set_xticks(dimticklist) axisHandle.set_xticklabels([str(n) for n in dimannlist]) - import numpy dim_min_margin = testbedsettings.current_testbed.dimensions_to_display[0] * 0.9 dim_max_margin = testbedsettings.current_testbed.dimensions_to_display[-1] * 1.125 if rightlegend: - #plt.xlim(1.8, 101) # 101 is 10 ** (numpy.log10(45/1.8)*1.25) * 1.8 - #plt.xlim(19.8, 4500) # Wassim: for large-scale, the following is tentative plt.xlim( dim_min_margin, 10 ** (numpy.log10(dim_max_margin / dim_min_margin)*1.25) * dim_min_margin) else: - #plt.xlim(1.8, 45) # Should depend on xmin and xmax - plt.xlim(dim_min_margin, dim_max_margin) # Wassim: for large-scale + plt.xlim(dim_min_margin, dim_max_margin) if 1 < 3: tick_locs = [n for n in axisHandle.get_yticks() diff --git a/code-postprocessing/bbob_pproc/tth_C/CHANGES b/code-postprocessing/cocopp/tth_C/CHANGES similarity index 100% rename from code-postprocessing/bbob_pproc/tth_C/CHANGES rename to code-postprocessing/cocopp/tth_C/CHANGES diff --git a/code-postprocessing/bbob_pproc/tth_C/INSTALL b/code-postprocessing/cocopp/tth_C/INSTALL similarity index 100% rename from code-postprocessing/bbob_pproc/tth_C/INSTALL rename to code-postprocessing/cocopp/tth_C/INSTALL diff --git a/code-postprocessing/bbob_pproc/tth_C/latex2gif b/code-postprocessing/cocopp/tth_C/latex2gif similarity index 100% rename from code-postprocessing/bbob_pproc/tth_C/latex2gif rename to code-postprocessing/cocopp/tth_C/latex2gif diff --git a/code-postprocessing/bbob_pproc/tth_C/license.txt b/code-postprocessing/cocopp/tth_C/license.txt similarity index 100% rename from code-postprocessing/bbob_pproc/tth_C/license.txt rename to code-postprocessing/cocopp/tth_C/license.txt diff --git a/code-postprocessing/bbob_pproc/tth_C/ps2gif b/code-postprocessing/cocopp/tth_C/ps2gif similarity index 100% rename from code-postprocessing/bbob_pproc/tth_C/ps2gif rename to code-postprocessing/cocopp/tth_C/ps2gif diff --git a/code-postprocessing/bbob_pproc/tth_C/ps2png b/code-postprocessing/cocopp/tth_C/ps2png similarity index 100% rename from code-postprocessing/bbob_pproc/tth_C/ps2png rename to code-postprocessing/cocopp/tth_C/ps2png diff --git a/code-postprocessing/bbob_pproc/tth_C/tth b/code-postprocessing/cocopp/tth_C/tth old mode 100755 new mode 100644 similarity index 100% rename from code-postprocessing/bbob_pproc/tth_C/tth rename to code-postprocessing/cocopp/tth_C/tth diff --git a/code-postprocessing/bbob_pproc/tth_C/tth.1 b/code-postprocessing/cocopp/tth_C/tth.1 similarity index 100% rename from code-postprocessing/bbob_pproc/tth_C/tth.1 rename to code-postprocessing/cocopp/tth_C/tth.1 diff --git a/code-postprocessing/bbob_pproc/tth_C/tth.c b/code-postprocessing/cocopp/tth_C/tth.c similarity index 100% rename from code-postprocessing/bbob_pproc/tth_C/tth.c rename to code-postprocessing/cocopp/tth_C/tth.c diff --git a/code-postprocessing/bbob_pproc/tth_C/tth.gif b/code-postprocessing/cocopp/tth_C/tth.gif similarity index 100% rename from code-postprocessing/bbob_pproc/tth_C/tth.gif rename to code-postprocessing/cocopp/tth_C/tth.gif diff --git a/code-postprocessing/bbob_pproc/tth_C/tth_manual.html b/code-postprocessing/cocopp/tth_C/tth_manual.html similarity index 100% rename from code-postprocessing/bbob_pproc/tth_C/tth_manual.html rename to code-postprocessing/cocopp/tth_C/tth_manual.html diff --git a/code-postprocessing/bbob_pproc/tth_C/tthsplit.c b/code-postprocessing/cocopp/tth_C/tthsplit.c similarity index 100% rename from code-postprocessing/bbob_pproc/tth_C/tthsplit.c rename to code-postprocessing/cocopp/tth_C/tthsplit.c From 10056c0454007e0e83da1eddb6c3bc2d39d06c82 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Sun, 13 Jan 2019 19:58:59 +0100 Subject: [PATCH 351/446] reduced lines size of reference algorithm from 6 to 4 --- code-postprocessing/cocopp/compall/pprldmany.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-postprocessing/cocopp/compall/pprldmany.py b/code-postprocessing/cocopp/compall/pprldmany.py index 1df997115..5b0ede6d1 100644 --- a/code-postprocessing/cocopp/compall/pprldmany.py +++ b/code-postprocessing/cocopp/compall/pprldmany.py @@ -690,7 +690,7 @@ def main(dictAlg, order=None, outputdir='.', info='default', # Display data lines = [] if displaybest: - args = {'ls': '-', 'linewidth': 6, 'marker': 'D', 'markersize': 11., + args = {'ls': '-', 'linewidth': 4, 'marker': 'D', 'markersize': 11., 'markeredgewidth': 1.5, 'markerfacecolor': refcolor, 'markeredgecolor': refcolor, 'color': refcolor, 'label': testbedsettings.current_testbed.reference_algorithm_displayname, From 4a945a7f9bb6a3ceb7076c3342be002892f8dc9f Mon Sep 17 00:00:00 2001 From: nikohansen Date: Sun, 13 Jan 2019 20:25:46 +0100 Subject: [PATCH 352/446] keep the order of algorithms from input, resolving issue #1831 Done by using OrderedDict instead of dict for algorithms dicts and removing the sortings that were placed at several points. --- .../cocopp/compall/pprldmany.py | 4 +- code-postprocessing/cocopp/ppfig.py | 2 +- code-postprocessing/cocopp/pproc.py | 16 ++++---- code-postprocessing/cocopp/toolsdivers.py | 39 ++++++++++++++++++- 4 files changed, 49 insertions(+), 12 deletions(-) diff --git a/code-postprocessing/cocopp/compall/pprldmany.py b/code-postprocessing/cocopp/compall/pprldmany.py index 5b0ede6d1..33d8327df 100644 --- a/code-postprocessing/cocopp/compall/pprldmany.py +++ b/code-postprocessing/cocopp/compall/pprldmany.py @@ -565,7 +565,7 @@ def main(dictAlg, order=None, outputdir='.', info='default', tmp = pp.dictAlgByDim(dictAlg) algorithms_with_data = [a for a in dictAlg.keys() if dictAlg[a] != []] - algorithms_with_data.sort() + # algorithms_with_data.sort() # dictAlg now is an OrderedDict, hence sorting isn't desired if len(algorithms_with_data) > 1 and len(tmp) != 1 and dimension is None: raise ValueError('We never integrate over dimension for more than one algorithm.') @@ -627,7 +627,7 @@ def main(dictAlg, order=None, outputdir='.', info='default', # for j, t in enumerate(testbedsettings.current_testbed.ecdf_target_values(1e2, f)): # funcsolved[j].add(f) - for alg in sorted(algorithms_with_data): + for alg in algorithms_with_data: x = [np.inf] * perfprofsamplesize runlengthunsucc = [] try: diff --git a/code-postprocessing/cocopp/ppfig.py b/code-postprocessing/cocopp/ppfig.py index 815bf2a34..496017033 100644 --- a/code-postprocessing/cocopp/ppfig.py +++ b/code-postprocessing/cocopp/ppfig.py @@ -874,7 +874,7 @@ def get_plotting_styles(algorithms, only_foreground=False): foreground_algorithms = [key for key in algorithms if key in genericsettings.foreground_algorithm_list] - foreground_algorithms.sort() + # foreground_algorithms.sort() # sorting is not desired, we want to be able to control the order! plotting_styles.append(PlottingStyle({}, {}, foreground_algorithms if len(foreground_algorithms) > 0 else algorithms, diff --git a/code-postprocessing/cocopp/pproc.py b/code-postprocessing/cocopp/pproc.py index bf845d49d..add190dfb 100644 --- a/code-postprocessing/cocopp/pproc.py +++ b/code-postprocessing/cocopp/pproc.py @@ -2696,9 +2696,9 @@ def store_reference_values(ds_list): testbedsettings.update_reference_values(key[0], value.get_reference_values_hash()) -class DictAlg(dict): - def __init__(self, d={}): - dict.__init__(self, d) # was: super.__init(d) +class DictAlg(OrderedDict): + def __init__(self, d=()): + OrderedDict.__init__(self, d) # was: super.__init(d) def by_dim(self): return dictAlgByDim(self) # TODO: put here actual implementation @@ -2741,7 +2741,7 @@ def dictAlgByDim(dictAlg): % (alg, d)) warnings.warn(txt) - res.setdefault(d, {}).setdefault(alg, tmp) + res.setdefault(d, OrderedDict()).setdefault(alg, tmp) # Only the first data for a given algorithm in a given dimension #for alg, dsList in dictAlg.items(): @@ -2768,7 +2768,7 @@ def dictAlgByDim2(dictAlg, remove_empty=False): for alg, dsList in dictAlg.items(): for i in dsList: - res.setdefault(i.dim, {}).setdefault(alg, DataSetList()).append(i) + res.setdefault(i.dim, OrderedDict()).setdefault(alg, DataSetList()).append(i) if remove_empty: raise NotImplementedError @@ -2814,7 +2814,7 @@ def dictAlgByFun(dictAlg): % (alg, f)) warnings.warn(txt) - res.setdefault(f, {}).setdefault(alg, tmp) + res.setdefault(f, OrderedDict()).setdefault(alg, tmp) # Only the first data for a given algorithm in a given dimension return res @@ -2859,7 +2859,7 @@ def dictAlgByNoi(dictAlg): % (alg, stmp)) warnings.warn(txt) - res.setdefault(n, {}).setdefault(alg, tmp) + res.setdefault(n, OrderedDict()).setdefault(alg, tmp) # Only the first data for a given algorithm in a given dimension return res @@ -2897,7 +2897,7 @@ def dictAlgByFuncGroup(dictAlg): % (alg, g)) warnings.warn(txt) - res.setdefault(g, {}).setdefault(alg, tmp) + res.setdefault(g, OrderedDict()).setdefault(alg, tmp) # Only the first data for a given algorithm in a given dimension return res diff --git a/code-postprocessing/cocopp/toolsdivers.py b/code-postprocessing/cocopp/toolsdivers.py index 18258f890..6ac999d1b 100644 --- a/code-postprocessing/cocopp/toolsdivers.py +++ b/code-postprocessing/cocopp/toolsdivers.py @@ -7,6 +7,7 @@ from __future__ import absolute_import, print_function import os, time, warnings +from collections import OrderedDict as _OrderedDict import numpy as np from matplotlib import pyplot as plt from subprocess import CalledProcessError, STDOUT @@ -74,6 +75,42 @@ def as_string(self): return ' ' + ' '.join(self) + ' ' +class AlgorithmList(list): + """Not in use. Not necessary when the algorithm dict is an `OrderedDict` anyway. + + A `list` representing the algorithm name arguments in original order. + + The method `ordered_dict` allows to transform an algorithm `dict` into an + `OrderedDict` using the order in self. + + >>> from cocopp.toolsdivers import AlgorithmList + >>> l = ['b', 'a', 'c'] + >>> al = AlgorithmList(l) + >>> d = dict(zip(l[-1::-1], [1, 2, 3])) + >>> for i, name in enumerate(al.ordered_dict(d)): + ... assert name == l[i] + + """ + def ordered_dict(self, algorithms_dict): + """return algorithms_dict as `OrderedDict` in order of self. + + Keys that are not in self are sorted using `sorted`. + """ + if set(algorithms_dict) != set(self): + warnings.warn("keys in algorithm dict: \n%s\n" + "do not agree with original algorithm list: \n%s\n" + % (str(algorithms_dict.keys()), str(self))) + res = _OrderedDict() + for name in self: + if name in algorithms_dict: + res[name] = algorithms_dict[name] + for name in sorted(algorithms_dict): + if name not in res: + res[name] = algorithms_dict[name] + assert res == algorithms_dict # compares keys and values + return res + + def print_done(message=' done'): """prints a message with time stamp""" print(message, '(' + time.asctime() + ').') @@ -362,4 +399,4 @@ def path_in_package(sub_path=""): """return the absolute path prepended to `subpath` in this module. """ egg_info = pkg_resources.require('cocopp')[0] - return os.path.join(egg_info.location, egg_info.project_name, sub_path) \ No newline at end of file + return os.path.join(egg_info.location, egg_info.project_name, sub_path) From 8e78a1b42c36f9bfb03c49a4c6d31d8043c3ad5f Mon Sep 17 00:00:00 2001 From: brockhof Date: Tue, 15 Jan 2019 16:55:45 +0100 Subject: [PATCH 353/446] reverted observer_bbob.c to its version in the master branch removed a TODO in transform_vars_brs.c --- code-experiments/src/observer_bbob.c | 33 +++-------------------- code-experiments/src/transform_vars_brs.c | 2 +- 2 files changed, 4 insertions(+), 31 deletions(-) diff --git a/code-experiments/src/observer_bbob.c b/code-experiments/src/observer_bbob.c index 5803e0ae3..99b813e56 100644 --- a/code-experiments/src/observer_bbob.c +++ b/code-experiments/src/observer_bbob.c @@ -9,8 +9,6 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *problem); static void logger_bbob_free(void *logger); -#define MAX_NB_DIMS 10 /* TODO: remove in favor of a dynamically set value */ - /** * @brief The bbob observer data type. */ @@ -19,43 +17,18 @@ typedef struct { * problems). For example, the following global variables from logger_bbob.c could be stored here: */ size_t current_dim; size_t current_fun_id; - size_t info_file_first_instance; - size_t number_of_dimensions; - size_t dimensions_in_current_info_file[MAX_NB_DIMS]; - int logger_is_open; + /* ... and others */ } observer_bbob_data_t; -/** - * @brief frees the data of bbob observer - */ -static void observer_bbob_data_free(void *data){ - /*coco_free_memory(((observer_bbob_data_t *)data)->dimensions_in_current_info_file);*/ - (void) data; /* to silence warning*/ -} - - /** * @brief Initializes the bbob observer. */ static void observer_bbob(coco_observer_t *observer, const char *options, coco_option_keys_t **option_keys) { - size_t i; - observer_bbob_data_t *observer_bbob; - observer_bbob = (observer_bbob_data_t *) coco_allocate_memory(sizeof(*observer_bbob)); - observer_bbob->current_dim = 0; - observer_bbob->current_fun_id = 0; - observer_bbob->info_file_first_instance = 0; - observer_bbob->number_of_dimensions = MAX_NB_DIMS; - for (i = 0; i < observer_bbob->number_of_dimensions; i++) { - observer_bbob->dimensions_in_current_info_file[i] = 0; - } - observer_bbob->logger_is_open = 0; - observer->logger_allocate_function = logger_bbob; observer->logger_free_function = logger_bbob_free; - observer->data_free_function = observer_bbob_data_free; - observer->data = observer_bbob; - + observer->data_free_function = NULL; + observer->data = NULL; *option_keys = NULL; diff --git a/code-experiments/src/transform_vars_brs.c b/code-experiments/src/transform_vars_brs.c index e25cff28d..b0eadf55c 100644 --- a/code-experiments/src/transform_vars_brs.c +++ b/code-experiments/src/transform_vars_brs.c @@ -43,7 +43,7 @@ static void transform_vars_brs_evaluate(coco_problem_t *problem, const double *x * from 1, we use all even indices since C starts indexing * with 0. */ - if (x[i] > 0.0 && i % 2 == 0) { /*TODO: Documentation: the condition should be Tosz(x_i - x_i^opt) > 0 in stead of z_i > 0*/ + if (x[i] > 0.0 && i % 2 == 0) { factor *= 10.0; } data->x[i] = factor * x[i]; From 1669bc3ab4337cfee38f7de4a4e78e43d3d22dbb Mon Sep 17 00:00:00 2001 From: brockhof Date: Tue, 15 Jan 2019 16:57:24 +0100 Subject: [PATCH 354/446] removed unnecessary `old_....c` file --- .../src/old_large_scale_transformations.c | 320 ------------------ 1 file changed, 320 deletions(-) delete mode 100644 code-experiments/src/old_large_scale_transformations.c diff --git a/code-experiments/src/old_large_scale_transformations.c b/code-experiments/src/old_large_scale_transformations.c deleted file mode 100644 index a0570ec97..000000000 --- a/code-experiments/src/old_large_scale_transformations.c +++ /dev/null @@ -1,320 +0,0 @@ -#include -#include -#include "coco.h" - -#include "coco_random.c" /*tmp*/ -#include "suite_bbob_legacy_code.c" /*tmp*/ - -#include /*tmp*/ - -/* TODO: Document this file in doxygen style! */ - -static const size_t BBOB_MAX_BLOCK_SIZE_ABSOLUTE = 40; /* for block rotations */ -static const double BBOB_MAX_BLOCK_SIZE_RELATIVE = 1; /* for block rotations, relative to dimension */ - -static double *ls_random_data;/* global variable used to generate the random permutations */ -/** - * ls_allocate_blockmatrix(n, m, bs): - * - * Allocate a ${n} by ${m} block matrix of nb_blocks block sizes block_sizes structured as an array of pointers - * to double arrays. - * each row constains only the block_sizes[i] possibly non-zero elements - */ -static double **ls_allocate_blockmatrix(const size_t n, const size_t* block_sizes, const size_t nb_blocks) { - double **matrix = NULL; - size_t current_blocksize; - size_t next_bs_change; - size_t idx_blocksize; - size_t i; - size_t sum_block_sizes; - - sum_block_sizes = 0; - for (i = 0; i < nb_blocks; i++){ - sum_block_sizes += block_sizes[i]; - } - assert(sum_block_sizes == n); - - matrix = (double **) coco_allocate_memory(sizeof(double *) * n); - idx_blocksize = 0; - next_bs_change = block_sizes[idx_blocksize]; - - for (i = 0; i < n; ++i) { - if (i >= next_bs_change) { - idx_blocksize++; - next_bs_change += block_sizes[idx_blocksize]; - } - current_blocksize=block_sizes[idx_blocksize]; - matrix[i] = coco_allocate_vector(current_blocksize); - - } - return matrix; -} - - -/* - * frees a block diagonal matrix (same as a matrix but in case of change, easier to update separatly from free_matrix) - */ -static void ls_free_block_matrix(double **matrix, const size_t n) { - size_t i; - for (i = 0; i < n; ++i) { - if (matrix[i] != NULL) { - coco_free_memory(matrix[i]); - matrix[i] = NULL; - } - } - coco_free_memory(matrix); -} - - - -/** - * ls_compute_blockrotation(B, seed, DIM): - * - * Compute a ${DIM}x${DIM} block-diagonal matrix based on ${seed} and block_sizes and stores it in ${B}. - * B is a 2D vector with DIM lines and each line has blocksize(line) elements (the zeros are not stored) - */ -static void ls_compute_blockrotation(double **B, long seed, size_t n, size_t *block_sizes, size_t nb_blocks) { - double prod; - /*double *gvect;*/ - double **current_block; - size_t i, j, k; /* Loop over pairs of column vectors. */ - size_t idx_block, current_blocksize,cumsum_prev_block_sizes, sum_block_sizes; - size_t nb_entries; - coco_random_state_t *rng = coco_random_new((uint32_t) seed); - - nb_entries = 0; - sum_block_sizes = 0; - for (i = 0; i < nb_blocks; i++){ - sum_block_sizes += block_sizes[i]; - nb_entries += block_sizes[i] * block_sizes[i]; - } - assert(sum_block_sizes == n); - - cumsum_prev_block_sizes = 0;/* shift in rows to account for the previous blocks */ - for (idx_block = 0; idx_block < nb_blocks; idx_block++) { - current_blocksize = block_sizes[idx_block]; - current_block = bbob2009_allocate_matrix(current_blocksize, current_blocksize); - for (i = 0; i < current_blocksize; i++) { - for (j = 0; j < current_blocksize; j++) { - current_block[i][j] = coco_random_normal(rng); - } - } - - for (i = 0; i < current_blocksize; i++) { - for (j = 0; j < i; j++) { - prod = 0; - for (k = 0; k < current_blocksize; k++){ - prod += current_block[k][i] * current_block[k][j]; - } - for (k = 0; k < current_blocksize; k++){ - current_block[k][i] -= prod * current_block[k][j]; - } - } - prod = 0; - for (k = 0; k < current_blocksize; k++){ - prod += current_block[k][i] * current_block[k][i]; - } - for (k = 0; k < current_blocksize; k++){ - current_block[k][i] /= sqrt(prod); - } - } - - /* now fill the block matrix*/ - for (i = 0 ; i < current_blocksize; i++) { - for (j = 0; j < current_blocksize; j++) { - B[i + cumsum_prev_block_sizes][j]=current_block[i][j]; - } - } - - cumsum_prev_block_sizes+=current_blocksize; - /*current_gvect_pos += current_blocksize * current_blocksize;*/ - ls_free_block_matrix(current_block, current_blocksize); - } - /*coco_free_memory(gvect);*/ - coco_random_free(rng); -} - -/* - * makes a copy of a block_matrix - */ -static double **ls_copy_block_matrix(const double *const *B, const size_t dimension, const size_t *block_sizes, const size_t nb_blocks) { - double **dest; - size_t i, j, idx_blocksize, current_blocksize, next_bs_change; - - dest = ls_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - idx_blocksize = 0; - current_blocksize = block_sizes[idx_blocksize]; - next_bs_change = block_sizes[idx_blocksize]; - assert(nb_blocks != 0); /*tmp*/ /*to silence warning*/ - for (i = 0; i < dimension; i++) { - if (i >= next_bs_change) { - idx_blocksize++; - next_bs_change += block_sizes[idx_blocksize]; - } - current_blocksize=block_sizes[idx_blocksize]; - for (j = 0; j < current_blocksize; j++) { - dest[i][j] = B[i][j]; - } - } - return dest; -} - -/** - * Comparison function used for sorting. - * In our case, it serves as a random permutation generator - */ -static int f_compare_doubles_for_random_permutation(const void *a, const void *b) { - double temp = ls_random_data[*(const size_t *) a] - ls_random_data[*(const size_t *) b]; - if (temp > 0) - return 1; - else if (temp < 0) - return -1; - else - return 0; -} - -/* - * generates a random, uniformly sampled, permutation and puts it in P - */ -static void ls_compute_random_permutation(size_t *P, long seed, size_t n) { - unsigned long i; - coco_random_state_t *rng = coco_random_new((uint32_t) seed); - ls_random_data = coco_allocate_vector(n); - for (i = 0; i < n; i++){ - P[i] = (size_t) i; - ls_random_data[i] = coco_random_uniform(rng); - } - qsort(P, n, sizeof(size_t), f_compare_doubles_for_random_permutation); - coco_random_free(rng); -} - - -/* - * returns a uniformly distributed integer between lower_bound and upper_bound using seed. - */ -static long ls_rand_int(long lower_bound, long upper_bound, coco_random_state_t *rng){ - long range; - range = upper_bound - lower_bound + 1; - return ((long)(coco_random_uniform(rng) * (double) range)) + lower_bound; -} - - - -/* - * generates a random permutation resulting from nb_swaps truncated uniform swaps of range swap_range - * missing paramteters: dynamic_not_static pool, seems empirically irrelevant - * for now so dynamic is implemented (simple since no need for tracking indices - * if swap_range is the largest possible size_t value ( (size_t) -1 ), a random uniform permutation is generated - */ -static void ls_compute_truncated_uniform_swap_permutation(size_t *P, long seed, size_t n, size_t nb_swaps, size_t swap_range) { - unsigned long i, idx_swap; - size_t lower_bound, upper_bound, first_swap_var, second_swap_var, tmp; - size_t *idx_order; - coco_random_state_t *rng = coco_random_new((uint32_t) seed); - - ls_random_data = coco_allocate_vector(n); - idx_order = coco_allocate_vector_size_t(n); - for (i = 0; i < n; i++){ - P[i] = (size_t) i; - idx_order[i] = (size_t) i; - ls_random_data[i] = coco_random_uniform(rng); - } - - if (swap_range > 0) { - /*sort the random data in random_data and arange idx_order accordingly*/ - /*did not use ls_compute_random_permutation to only use the seed once*/ - qsort(idx_order, n, sizeof(size_t), f_compare_doubles_for_random_permutation); - for (idx_swap = 0; idx_swap < nb_swaps; idx_swap++) { - first_swap_var = idx_order[idx_swap]; - if (first_swap_var < swap_range) { - lower_bound = 0; - } - else{ - lower_bound = first_swap_var - swap_range; - } - if (first_swap_var + swap_range > n - 1) { - upper_bound = n - 1; - } - else{ - upper_bound = first_swap_var + swap_range; - } - - second_swap_var = (size_t) ls_rand_int((long) lower_bound, (long) upper_bound, rng); - while (first_swap_var == second_swap_var) { - second_swap_var = (size_t) ls_rand_int((long) lower_bound, (long) upper_bound, rng); - } - /* swap*/ - tmp = P[first_swap_var]; - P[first_swap_var] = P[second_swap_var]; - P[second_swap_var] = tmp; - } - } else { - if ( swap_range == (size_t) -1) { - /* generate random permutation instead */ - ls_compute_random_permutation(P, seed, n); - } - - } - coco_random_free(rng); -} - - - -/* - * duplicates a size_t vector - */ -static size_t *coco_duplicate_size_t_vector(const size_t *src, const size_t number_of_elements) { - size_t i; - size_t *dst; - - assert(src != NULL); - assert(number_of_elements > 0); - - dst = coco_allocate_vector_size_t(number_of_elements); - for (i = 0; i < number_of_elements; ++i) { - dst[i] = src[i]; - } - return dst; -} - - -/* - * returns the list of block_sizes and sets nb_blocks to its correct value - * TODO: update with chosen parameter setting - */ -static size_t *ls_get_block_sizes(size_t *nb_blocks, size_t dimension){ - size_t *block_sizes; - size_t block_size; - size_t i; - - block_size = coco_double_to_size_t(bbob2009_fmin( - (double) BBOB_MAX_BLOCK_SIZE_RELATIVE * dimension, - BBOB_MAX_BLOCK_SIZE_ABSOLUTE)); - *nb_blocks = dimension / block_size + ((dimension % block_size) > 0); - block_sizes = coco_allocate_vector_size_t(*nb_blocks); - for (i = 0; i < *nb_blocks - 1; i++) { - block_sizes[i] = block_size; - } - block_sizes[*nb_blocks - 1] = dimension - (*nb_blocks - 1) * block_size; /*add rest*/ - return block_sizes; -} - - -/* - * return the swap_range corresponding to the problem - */ -static size_t ls_get_swap_range(size_t dimension){ - return dimension / 3; -} - - -/* - * return the number of swaps corresponding to the problem - */ -size_t ls_get_nb_swaps(size_t dimension){ - return dimension; -} - - - - From 31c8443291c0679e1c235806c1c3b8144856f2ae Mon Sep 17 00:00:00 2001 From: brockhof Date: Thu, 17 Jan 2019 15:23:58 +0100 Subject: [PATCH 355/446] added year `0000` of instances to initiate the tests --- code-experiments/src/suite_largescale.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 27d60d630..7d293f937 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -42,7 +42,7 @@ static coco_suite_t *suite_largescale_initialize(void) { * @brief Sets the instances associated with years for the bbob large-scale suite. */ static const char *suite_largescale_get_instances_by_year(const int year) { - if (year == 2016) { + if (year == 2016 || year == 0) { return "1-15"; } else { From 3b976262a3af54fdcb8901f82be435bf79ec92c3 Mon Sep 17 00:00:00 2001 From: brockhof Date: Tue, 22 Jan 2019 15:11:57 +0100 Subject: [PATCH 356/446] added regression test (`do.py test-suites`) to the AppVeyor and CircleCI configuration --- .circleci/config.yml | 9 +++++++++ appveyor.yml | 1 + 2 files changed, 10 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 941caf2ed..ef4313010 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -93,6 +93,10 @@ jobs: name: Run coco C tests command: python do.py test-c no_output_timeout: 1800 + - run: + name: Run regression test + command: python do.py test-suites + no_output_timeout: 1800 test_ubuntu_latest_python2: docker: @@ -180,6 +184,11 @@ jobs: name: Run coco C tests command: python do.py test-c no_output_timeout: 1800 + - run: + name: Run regression test + command: python do.py test-suites + no_output_timeout: 1800 + workflows: diff --git a/appveyor.yml b/appveyor.yml index 57e5d1258..9c9e61de5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -33,4 +33,5 @@ test_script: - cmd: python do.py test-java - cmd: python do.py test-preprocessing - cmd: python do.py test-postprocessing + - cmd: python do.py test-suites # - cmd: python do.py test-postprocessing-all From 995a778b7f6b82c3197d60f302d7aa99adab9d28 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Mon, 28 Jan 2019 13:58:26 +0100 Subject: [PATCH 357/446] Remove coco_random_new usage from f_gallagher --- code-experiments/src/f_gallagher.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 1d0aebb3b..cbc32440a 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -286,7 +286,7 @@ static void f_gallagher_sub_evaluate_core(coco_problem_t *problem_i, const doubl * @brief Allocates the basic gallagher sub problem. */ static coco_problem_t *f_gallagher_sub_problem_allocate(const size_t number_of_variables) { - + coco_problem_t *problem_i = coco_problem_allocate_from_scalars("gallagher_sub function", f_gallagher_sub_evaluate_core, f_gallagher_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); f_gallagher_versatile_data_t *versatile_data_tmp; @@ -382,7 +382,7 @@ static coco_problem_t *f_gallagher_problem_allocate(const size_t number_of_varia coco_problem_set_id(problem, "%s_d%04lu", "gallagher", number_of_variables); problem->best_value[0] = 0; - + /* Compute best solution */ /*f_gallagher_evaluate_core(problem, problem->best_parameter, problem->best_value);*/ return problem; @@ -411,7 +411,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz size_t idx_blocksize, current_blocksize, next_bs_change; /* needed for the rotated y_i*/ /*size_t swap_range; size_t nb_swaps;*/ - coco_random_state_t *rng = coco_random_new((uint32_t) rseed); + double *tmp_uniform; + long peak_seed; const size_t peaks_21 = 21; const size_t peaks_101 = 101; double a = 0.8, b, c; @@ -465,21 +466,23 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz } versatile_data->B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); versatile_data->B = coco_copy_block_matrix(B_copy, dimension, block_sizes, nb_blocks); - + alpha_i_vals = coco_allocate_vector(number_of_peaks - 1); for (i = 0; i < number_of_peaks - 1; i++) { alpha_i_vals[i] = pow(maxcondition, (double) (i) / ((double) (number_of_peaks - 2))); } P_alpha_i = coco_allocate_vector_size_t(number_of_peaks - 1);/* random permutation of the alpha_i's to allow sampling without replacement*/ coco_compute_random_permutation(P_alpha_i, rseed + 4000000, number_of_peaks - 1); - + tmp_uniform = coco_allocate_vector(dimension); for (peak_index = 0; peak_index < number_of_peaks; peak_index++) { + peak_seed = rseed + (long) peak_index * (long) 1000000; + bbob2009_unif(tmp_uniform, dimension, peak_seed); /*TODO: To be discussed*/ problem_i = &(versatile_data->sub_problems[peak_index]); /* compute transformation parameters: */ /* y_i and block-rotate it once and for all */ y_i = coco_allocate_vector(dimension); for (i = 0; i < dimension; i++) { - y_i[i] = b * coco_random_uniform(rng) - c; /* Wassim: not sure the random numbers are used in the same order as for the standard case*/ + y_i[i] = b * tmp_uniform[i] - c; /* Wassim: not sure the random numbers are used in the same order as for the standard case*/ } y_i_tmp = coco_allocate_vector(dimension); /* block rotate y_i */ @@ -530,13 +533,13 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz /* Wassim: TODO: re-activate*/ /*problem = transform_vars_gallagher_blockrotation(problem);*//* block-matrix in versatile_data*/ - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "large_scale_block_rotated"); - coco_random_free(rng); coco_free_block_matrix(B, dimension); + coco_free_memory(tmp_uniform); /*coco_free_memory(P1); coco_free_memory(P2);*/ coco_free_memory(block_sizes); @@ -544,6 +547,3 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_free_memory(P_alpha_i); return problem; } - - - From 0a053fc3793a072e615d15f5fd738eeae6cfe31f Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Mon, 28 Jan 2019 14:17:02 +0100 Subject: [PATCH 358/446] Remove coco_random_new usage from f_lunacek_bi_rastrigin --- code-experiments/src/f_lunacek_bi_rastrigin.c | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index 5006a9457..5b179febb 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -211,7 +211,7 @@ static void f_lunacek_bi_rastrigin_versatile_data_free(coco_problem_t *problem) * @brief Uses the core function to evaluate the sub problem. */ static void f_lunacek_bi_rastrigin_sub_evaluate_core(coco_problem_t *problem, const double *x, double *y) { - + assert(problem->number_of_objectives == 1); y[0] = f_sphere_raw(x, problem->number_of_variables); } @@ -221,7 +221,7 @@ static void f_lunacek_bi_rastrigin_sub_evaluate_core(coco_problem_t *problem, co * @brief Allocates the basic lunacek_bi_rastrigin sub problem. */ static coco_problem_t *f_lunacek_bi_rastrigin_sub_problem_allocate(const size_t number_of_variables) { - + coco_problem_t *problem_i = coco_problem_allocate_from_scalars("lunacek_bi_rastrigin_sub function", f_lunacek_bi_rastrigin_sub_evaluate_core, NULL, number_of_variables, -5.0, 5.0, 0.0); problem_i->versatile_data = NULL; @@ -266,7 +266,7 @@ static double f_lunacek_bi_rastrigin_core(const double *x, const size_t number_o * @brief Uses the core function to evaluate the COCO problem. */ static void f_lunacek_bi_rastrigin_evaluate_core(coco_problem_t *problem, const double *x, double *y) { - + assert(problem->number_of_objectives == 1); y[0] = f_lunacek_bi_rastrigin_core(x, problem->number_of_variables, ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)); assert(y[0] + 1e-13 >= problem->best_value[0]); @@ -276,10 +276,10 @@ static void f_lunacek_bi_rastrigin_evaluate_core(coco_problem_t *problem, const * @brief Allocates the basic lunacek_bi_rastrigin problem. */ static coco_problem_t *f_lunacek_bi_rastrigin_problem_allocate(const size_t number_of_variables) { - + coco_problem_t *problem = coco_problem_allocate_from_scalars("lunacek_bi_rastrigin function", f_lunacek_bi_rastrigin_evaluate_core, f_lunacek_bi_rastrigin_versatile_data_free, number_of_variables, -5.0, 5.0, 0.0); - + problem->versatile_data = (f_lunacek_bi_rastrigin_versatile_data_t *) coco_allocate_memory(sizeof(f_lunacek_bi_rastrigin_versatile_data_t)); ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->x_hat = coco_allocate_vector(number_of_variables); /* Manh: Allocate x_hat in versatile_data */ coco_problem_set_id(problem, "%s_d%04lu", "lunacek_bi_rastrigin", number_of_variables); @@ -314,7 +314,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat double condition = 100.0; double mu0, mu1, d = 1.0, s; double *mu0_vector, *mu1_vector, *sign_vector; /* Wassim sign vector designate the 1^+_- vector*/ - coco_random_state_t *rng = coco_random_new((uint32_t) rseed); + double *tmp_normal; fopt = bbob2009_compute_fopt(function, instance); s = 1. - 0.5 / (sqrt((double) (dimension + 20)) - 4.1); @@ -357,9 +357,11 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat ((f_lunacek_bi_rastrigin_versatile_data_t *) problem->versatile_data)->sub_problem_mu1 = f_lunacek_bi_rastrigin_sub_problem_allocate(dimension); /* set sign_vector */ + tmp_normal = coco_allocate_vector(dimension); + bbob2009_gauss(tmp_normal, dimension, rseed); sign_vector = coco_allocate_vector(dimension); for ( i = 0; i < dimension; i++) { /* set sign(x_opt)*/ - if ( coco_random_normal(rng) < 0.0) {/* Wassim: noraml is used here but unif for Schweffel!!! */ + if ( tmp_normal[i] < 0.0) {/* Wassim: noraml is used here but unif for Schweffel!!! */ sign_vector[i] = -1.0; } else { sign_vector[i] = 1.0; @@ -374,13 +376,13 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat *sub_problem_tmp = transform_vars_shift(*sub_problem_tmp, mu1_vector, 0); *sub_problem_tmp = transform_obj_scale(*sub_problem_tmp, s); /* Manh: need to use s */ *sub_problem_tmp = transform_obj_shift(*sub_problem_tmp, d * (double) dimension); - + /* transformations on main problem */ problem = transform_vars_permutation(problem, P22, dimension); problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_conditioning(problem, condition); - + problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P11, dimension); @@ -399,12 +401,12 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat /* f_lunacek_bi_rastrigin_evaluate_core(problem, problem->best_parameter, problem->best_value); printf("\n %f , x_opt[0]= %f\n", problem->best_value[0], problem->best_parameter[0]);*/ /* Wassim: for testing purposes, might end up being the one kept though*/ - + coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "block-rotated_weakly-structured"); - coco_random_free(rng); + coco_free_memory(tmp_normal); coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); coco_free_memory(P11); @@ -418,4 +420,3 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat coco_free_memory(sign_vector); return problem; } - From 8bf6c09f887225ae59b54b571b5efe5433eb1428 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Mon, 28 Jan 2019 14:33:11 +0100 Subject: [PATCH 359/446] Remove coco_random_new usage from transform_vars_blockrotation_helpers --- .../transform_vars_blockrotation_helpers.c | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index a327e0cba..5fc924036 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -40,17 +40,17 @@ static double **coco_allocate_blockmatrix(const size_t n, const size_t* block_si size_t idx_blocksize; size_t i; size_t sum_block_sizes; - + sum_block_sizes = 0; for (i = 0; i < nb_blocks; i++){ sum_block_sizes += block_sizes[i]; } assert(sum_block_sizes == n); - + matrix = (double **) coco_allocate_memory(sizeof(double *) * n); idx_blocksize = 0; next_bs_change = block_sizes[idx_blocksize]; - + for (i = 0; i < n; ++i) { if (i >= next_bs_change) { idx_blocksize++; @@ -58,7 +58,7 @@ static double **coco_allocate_blockmatrix(const size_t n, const size_t* block_si } current_blocksize=block_sizes[idx_blocksize]; matrix[i] = coco_allocate_vector(current_blocksize); - + } return matrix; } @@ -90,9 +90,8 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * double **current_block; size_t i, j, k; /* Loop over pairs of column vectors. */ size_t idx_block, current_blocksize,cumsum_prev_block_sizes, sum_block_sizes; - size_t nb_entries; - coco_random_state_t *rng = coco_random_new((uint32_t) seed); - + size_t nb_entries, current_nb_entries; + double *tmp_normal; nb_entries = 0; sum_block_sizes = 0; for (i = 0; i < nb_blocks; i++){ @@ -100,17 +99,21 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * nb_entries += block_sizes[i] * block_sizes[i]; } assert(sum_block_sizes == n); - + cumsum_prev_block_sizes = 0;/* shift in rows to account for the previous blocks */ for (idx_block = 0; idx_block < nb_blocks; idx_block++) { current_blocksize = block_sizes[idx_block]; current_block = bbob2009_allocate_matrix(current_blocksize, current_blocksize); + current_nb_entries = current_blocksize * current_blocksize; + tmp_normal = coco_allocate_vector(current_nb_entries); + bbob2009_gauss(tmp_normal, current_nb_entries, seed + (long) 1000000 * (long) idx_block);/* TODO: To be discussed */ + for (i = 0; i < current_blocksize; i++) { for (j = 0; j < current_blocksize; j++) { - current_block[i][j] = coco_random_normal(rng); + current_block[i][j] = tmp_normal[i * j + j]; } } - + for (i = 0; i < current_blocksize; i++) { for (j = 0; j < i; j++) { prod = 0; @@ -129,20 +132,20 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * current_block[k][i] /= sqrt(prod); } } - + /* now fill the block matrix*/ for (i = 0 ; i < current_blocksize; i++) { for (j = 0; j < current_blocksize; j++) { B[i + cumsum_prev_block_sizes][j]=current_block[i][j]; } } - + cumsum_prev_block_sizes+=current_blocksize; /*current_gvect_pos += current_blocksize * current_blocksize;*/ coco_free_block_matrix(current_block, current_blocksize); + coco_free_memory(tmp_normal); } /*coco_free_memory(gvect);*/ - coco_random_free(rng); } /** @@ -151,7 +154,7 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * static double **coco_copy_block_matrix(const double *const *B, const size_t dimension, const size_t *block_sizes, const size_t nb_blocks) { double **dest; size_t i, j, idx_blocksize, current_blocksize, next_bs_change; - + dest = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); idx_blocksize = 0; current_blocksize = block_sizes[idx_blocksize]; @@ -178,7 +181,7 @@ static size_t *coco_get_block_sizes(size_t *nb_blocks, size_t dimension, const c size_t *block_sizes; size_t block_size; int i; - + if (strcmp(suite_name, "bbob-largescale") == 0) { /*block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension / 4, 100));*/ /*old value*/ /*block_size = coco_double_to_size_t(bbob2009_fmin((double)dimension, 40));*/ @@ -194,6 +197,3 @@ static size_t *coco_get_block_sizes(size_t *nb_blocks, size_t dimension, const c return NULL; } } - - - From a80b59c1afd7844f2daf92e885c8d04c8a9a06fd Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Mon, 28 Jan 2019 14:37:40 +0100 Subject: [PATCH 360/446] Compute blockrotation based on seed and block sizes --- code-experiments/src/transform_vars_blockrotation_helpers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index 5fc924036..dc639af59 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -106,7 +106,7 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * current_block = bbob2009_allocate_matrix(current_blocksize, current_blocksize); current_nb_entries = current_blocksize * current_blocksize; tmp_normal = coco_allocate_vector(current_nb_entries); - bbob2009_gauss(tmp_normal, current_nb_entries, seed + (long) 1000000 * (long) idx_block);/* TODO: To be discussed */ + bbob2009_gauss(tmp_normal, current_nb_entries, seed + (long) 1000000 * (long) current_blocksize);/* TODO: To be discussed */ for (i = 0; i < current_blocksize; i++) { for (j = 0; j < current_blocksize; j++) { From 4f67c1ff83ae06265dbb43e0724444a171078446 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Mon, 28 Jan 2019 16:14:22 +0100 Subject: [PATCH 361/446] Removing usage of coco_random_new in transform_vars_permutation_helpers --- .../src/transform_vars_permutation_helpers.c | 58 +++++++++++++------ 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/code-experiments/src/transform_vars_permutation_helpers.c b/code-experiments/src/transform_vars_permutation_helpers.c index e95e611bf..cb36e2365 100644 --- a/code-experiments/src/transform_vars_permutation_helpers.c +++ b/code-experiments/src/transform_vars_permutation_helpers.c @@ -35,14 +35,17 @@ static int f_compare_doubles_for_random_permutation(const void *a, const void *b */ static void coco_compute_random_permutation(size_t *P, long seed, size_t n) { long i; - coco_random_state_t *rng = coco_random_new((uint32_t) seed); + double *tmp_normal; + + tmp_normal = coco_allocate_vector(n); + bbob2009_gauss(tmp_normal, n, seed); perm_random_data = coco_allocate_vector(n); for (i = 0; i < n; i++){ P[i] = (size_t) i; - perm_random_data[i] = coco_random_uniform(rng); + perm_random_data[i] = tmp_normal[i]; } qsort(P, n, sizeof(size_t), f_compare_doubles_for_random_permutation); - coco_random_free(rng); + coco_free_memory(tmp_normal); } @@ -53,10 +56,26 @@ static void coco_compute_random_permutation(size_t *P, long seed, size_t n) { static long coco_random_unif_int(long lower_bound, long upper_bound, coco_random_state_t *rng){ long range; range = upper_bound - lower_bound + 1; + printf("%ld\n", ((long)(coco_random_uniform(rng) * (double) range)) + lower_bound); return ((long)(coco_random_uniform(rng) * (double) range)) + lower_bound; } +/** + * @brief returns a uniformly distributed integer between lower_bound and upper_bound using seed + * without using coco_random_new. + */ +static long coco_random_unif_integer(long lower_bound, long upper_bound, long seed){ + long range, rand_int; + double *tmp_uniform; + tmp_uniform=coco_allocate_vector(1); + bbob2009_unif(tmp_uniform, 1, seed); + range = upper_bound - lower_bound + 1; + rand_int = ((long)(tmp_uniform[0] * (double) range)) + lower_bound; + coco_free_memory(tmp_uniform); + return rand_int; +} + /** * @brief generates a random permutation resulting from nb_swaps truncated uniform swaps of range swap_range @@ -65,19 +84,22 @@ static long coco_random_unif_int(long lower_bound, long upper_bound, coco_random * if swap_range is the largest possible size_t value ( (size_t) -1 ), a random uniform permutation is generated */ static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed, size_t n, size_t nb_swaps, size_t swap_range) { - long i, idx_swap; + long i, idx_swap, tmp_seed; size_t lower_bound, upper_bound, first_swap_var, second_swap_var, tmp; size_t *idx_order; - coco_random_state_t *rng = coco_random_new((uint32_t) seed); - + double *tmp_uniform; + tmp_uniform = coco_allocate_vector(n); + bbob2009_unif(tmp_uniform, n, seed); + + perm_random_data = coco_allocate_vector(n); idx_order = coco_allocate_vector_size_t(n); for (i = 0; i < n; i++){ P[i] = (size_t) i; idx_order[i] = (size_t) i; - perm_random_data[i] = coco_random_uniform(rng); + perm_random_data[i] = tmp_uniform[i]; } - + if (swap_range > 0) { /*sort the random data in random_data and arange idx_order accordingly*/ /*did not use coco_compute_random_permutation to only use the seed once*/ @@ -96,10 +118,12 @@ static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed else{ upper_bound = first_swap_var + swap_range; } - - second_swap_var = (size_t) coco_random_unif_int((long) lower_bound, (long) upper_bound, rng); + + tmp_seed = 0; + second_swap_var = (size_t) coco_random_unif_integer((long) lower_bound, (long) upper_bound, seed); while (first_swap_var == second_swap_var) { - second_swap_var = (size_t) coco_random_unif_int((long) lower_bound, (long) upper_bound, rng); + tmp_seed += 1; + second_swap_var = (size_t) coco_random_unif_integer((long) lower_bound, (long) upper_bound, seed + tmp_seed + 5000000); } /* swap*/ tmp = P[first_swap_var]; @@ -111,9 +135,9 @@ static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed /* generate random permutation instead */ coco_compute_random_permutation(P, seed, n); } - + } - coco_random_free(rng); + coco_free_memory(tmp_uniform); } @@ -124,10 +148,10 @@ static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed static size_t *coco_duplicate_size_t_vector(const size_t *src, const size_t number_of_elements) { size_t i; size_t *dst; - + assert(src != NULL); assert(number_of_elements > 0); - + dst = coco_allocate_vector_size_t(number_of_elements); for (i = 0; i < number_of_elements; ++i) { dst[i] = src[i]; @@ -161,7 +185,3 @@ size_t coco_get_nb_swaps(size_t dimension, const char *suite_name){ return (size_t) NULL; } } - - - - From c2fb2d604cbc97873c10ff240b2e293b80f9aace Mon Sep 17 00:00:00 2001 From: brockhof Date: Fri, 1 Feb 2019 11:42:02 +0100 Subject: [PATCH 362/446] some small corrections here and there --- .../build/python/cython/interface.c | 17 +++++++---------- .../build/python/cython/interface.pyx | 4 ++-- .../cocopp/latex_commands_for_html.html | 4 ++-- code-postprocessing/cocopp/pptable.py | 2 +- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/code-experiments/build/python/cython/interface.c b/code-experiments/build/python/cython/interface.c index 5a0dfd4de..6230e64a6 100644 --- a/code-experiments/build/python/cython/interface.c +++ b/code-experiments/build/python/cython/interface.c @@ -19260,7 +19260,7 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) * * from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException # <<<<<<<<<<<<<< * - * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] + * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-largescale"] */ __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); @@ -19293,11 +19293,11 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) /* "cython/interface.pyx":10 * from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException * - * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] # <<<<<<<<<<<<<< - * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] + * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-largescale"] # <<<<<<<<<<<<<< + * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained"] * _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] */ - __pyx_t_2 = PyList_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_u_bbob); __Pyx_GIVEREF(__pyx_n_u_bbob); @@ -19308,18 +19308,15 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) __Pyx_INCREF(__pyx_kp_u_bbob_biobj_ext); __Pyx_GIVEREF(__pyx_kp_u_bbob_biobj_ext); PyList_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_bbob_biobj_ext); - __Pyx_INCREF(__pyx_kp_u_bbob_constrained); - __Pyx_GIVEREF(__pyx_kp_u_bbob_constrained); - PyList_SET_ITEM(__pyx_t_2, 3, __pyx_kp_u_bbob_constrained); __Pyx_INCREF(__pyx_kp_u_bbob_largescale); __Pyx_GIVEREF(__pyx_kp_u_bbob_largescale); - PyList_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_bbob_largescale); + PyList_SET_ITEM(__pyx_t_2, 3, __pyx_kp_u_bbob_largescale); if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":12 - * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] - * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] + * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-largescale"] + * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained"] * _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] # <<<<<<<<<<<<<< * * # _test_assignment = "seems to prevent an 'export' error (i.e. induce export) to make this module known under Linux and Windows (possibly because of the leading underscore of _interface)" diff --git a/code-experiments/build/python/cython/interface.pyx b/code-experiments/build/python/cython/interface.pyx index e90bed151..57203fd3e 100755 --- a/code-experiments/build/python/cython/interface.pyx +++ b/code-experiments/build/python/cython/interface.pyx @@ -7,8 +7,8 @@ cimport numpy as np from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException -known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] -# known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] +known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-largescale"] +# known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained"] _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] # _test_assignment = "seems to prevent an 'export' error (i.e. induce export) to make this module known under Linux and Windows (possibly because of the leading underscore of _interface)" diff --git a/code-postprocessing/cocopp/latex_commands_for_html.html b/code-postprocessing/cocopp/latex_commands_for_html.html index d673205ae..fd21d0293 100644 --- a/code-postprocessing/cocopp/latex_commands_for_html.html +++ b/code-postprocessing/cocopp/latex_commands_for_html.html @@ -972,7 +972,7 @@ Entries, succeeded by a star, are statistically significantly better (according to the rank-sum test) when compared to all other algorithms of the table, with p = 0.05 or p = 10−k when the number k following the star is larger - than 1, with Bonferroni correction by the number of functions (24). A ↓ indicates the same tested against . Best results are printed in bold. + than 1, with Bonferroni correction by the number of functions (24). Best results are printed in bold. ??COCOVERSION??
    @@ -1023,5 +1023,5 @@ TEX by TTH, -version 4.08.
    On 25 May 2018, 17:54. +version 4.08.
    On 28 Jan 2019, 11:36. diff --git a/code-postprocessing/cocopp/pptable.py b/code-postprocessing/cocopp/pptable.py index b71f7fa3e..e2d7912d0 100644 --- a/code-postprocessing/cocopp/pptable.py +++ b/code-postprocessing/cocopp/pptable.py @@ -81,7 +81,7 @@ def get_table_caption(): """ table_caption_no_reference_algorithm = r"""% Average runtime (\aRT) to reach given targets, measured - in number of function evaluations. For each function, the \aRT\ + in number of function evaluations in #1. For each function, the \aRT\ and, in braces as dispersion measure, the half difference between 10 and 90\%-tile of (bootstrapped) runtimes is shown for the different target !!DF!!-values as shown in the top row. From c5a82322941729e712247d766363afd480374208 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Mon, 11 Feb 2019 10:56:30 +0100 Subject: [PATCH 363/446] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 224c0b71e..4cf71d956 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ numbbo/coco: Comparing Continuous Optimizers ============================================ [![CircleCI](https://circleci.com/gh/numbbo/coco/tree/master.svg?style=shield)](https://circleci.com/gh/numbbo/coco/tree/master) +[![Build status](https://ci.appveyor.com/api/projects/status/6ma1i8xsby9v3r8i/branch/master?svg=true)](https://ci.appveyor.com/project/nikohansen/coco-28e3ab1txqzfiw9/branch/master) [This code](https://github.com/numbbo/coco) reimplements the original Comparing Continous Optimizer platform, now rewritten fully in `ANSI C` and `Python` with From 750d1017f31bd8a1938046e3a6440f0a0b9fc50b Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 14 Feb 2019 01:33:10 +0100 Subject: [PATCH 364/446] Remove coco_random_unif_int that is replaced by coco_random_unif_integer without using coco_random_new --- .../src/transform_vars_permutation_helpers.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/code-experiments/src/transform_vars_permutation_helpers.c b/code-experiments/src/transform_vars_permutation_helpers.c index cb36e2365..cb6eab568 100644 --- a/code-experiments/src/transform_vars_permutation_helpers.c +++ b/code-experiments/src/transform_vars_permutation_helpers.c @@ -49,21 +49,10 @@ static void coco_compute_random_permutation(size_t *P, long seed, size_t n) { } -/** - * @brief returns a uniformly distributed integer between lower_bound and upper_bound using seed. - * Wassim: move to coco_utilities? - */ -static long coco_random_unif_int(long lower_bound, long upper_bound, coco_random_state_t *rng){ - long range; - range = upper_bound - lower_bound + 1; - printf("%ld\n", ((long)(coco_random_uniform(rng) * (double) range)) + lower_bound); - return ((long)(coco_random_uniform(rng) * (double) range)) + lower_bound; -} - - /** * @brief returns a uniformly distributed integer between lower_bound and upper_bound using seed * without using coco_random_new. + * Move to coco_utilities? */ static long coco_random_unif_integer(long lower_bound, long upper_bound, long seed){ long range, rand_int; From f8db9301d34055895037b0e86044769fed753567 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 14 Feb 2019 02:12:44 +0100 Subject: [PATCH 365/446] Skip test of constrained suite in coco_test.py --- code-experiments/build/python/coco_test.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code-experiments/build/python/coco_test.py b/code-experiments/build/python/coco_test.py index 788e7006a..4e465157f 100755 --- a/code-experiments/build/python/coco_test.py +++ b/code-experiments/build/python/coco_test.py @@ -26,7 +26,7 @@ def read_test_vectors(fd): test_vectors = number_of_test_vectors * [None] for i in range(number_of_test_vectors): line = fd.readline().rstrip() - test_vectors[i] = np.fromstring(line, dtype=float, sep=" ") + test_vectors[i] = np.fromstring(line, dtype=float, sep=" ") return test_vectors def process_test_cases(fd, suite_name, test_vectors): @@ -42,7 +42,7 @@ def process_test_cases(fd, suite_name, test_vectors): number_of_testcases += 1 ## A test case is a 4-tuple (deprecated_problem_index, problem_index, test_vector_id, - ## expected_y) separated by a tab. + ## expected_y) separated by a tab. deprecated_problem_index, problem_index, test_vector_id, expected_y = test_case.split() ## Do type conversion. Python gurus probably know an elegant ## one line solution... @@ -64,7 +64,7 @@ def process_test_cases(fd, suite_name, test_vectors): elif number_of_failures == 100: print("... further failed tests suppressed ...") print("%i of %i tests passed (failure rate %.2f%%)" % (number_of_testcases - number_of_failures, number_of_testcases, (100.0 * number_of_failures) / number_of_testcases)) - if number_of_failures > 0: + if number_of_failures > 0: sys.exit(-1) def process_testfile(testfile): @@ -118,7 +118,7 @@ def _clean_up(folder, start_matches, protected): `start_matches`, where `""` matches any string, and which are not in `protected`. - CAVEAT: use with care, as with `"", ""` as second and third arguments + CAVEAT: use with care, as with `"", ""` as second and third arguments this deletes all folder entries like `rm *` does. """ if not os.path.isdir(folder): return @@ -139,7 +139,7 @@ def main(args): run_doctests() print('doctests done.\nRunning example_experiment:'), sys.stdout.flush() example_experiment.main() - run_constrained_suite_test() + # run_constrained_suite_test() for arg in args if args else default_testcases: if arg is None or arg == 'None': break From bbc74ab881e3e76da27a86e683a8d2fc6785283e Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Thu, 14 Feb 2019 02:53:37 +0100 Subject: [PATCH 366/446] Minor warning fix --- code-experiments/src/transform_vars_blockrotation_helpers.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index dc639af59..61cd3bbc5 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -23,8 +23,8 @@ static size_t coco_rotation_matrix_block_size(size_t const dimension) { const size_t MAX_BLOCK_SIZE_ABSOLUTE = 40; /* for block rotations */ return coco_double_to_size_t(coco_double_min( - BLOCK_SIZE_RELATIVE * dimension, - MAX_BLOCK_SIZE_ABSOLUTE)); + BLOCK_SIZE_RELATIVE * (double)dimension, + (double)MAX_BLOCK_SIZE_ABSOLUTE)); } /** From 4e26e8c86930f7c6cc2d291b1e3b5a0c9caef9ac Mon Sep 17 00:00:00 2001 From: brockhof Date: Thu, 14 Feb 2019 17:46:15 +0100 Subject: [PATCH 367/446] incommented constrained test in case bbob-constrained is defined --- code-experiments/build/python/coco_test.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code-experiments/build/python/coco_test.py b/code-experiments/build/python/coco_test.py index 4e465157f..13d89c696 100755 --- a/code-experiments/build/python/coco_test.py +++ b/code-experiments/build/python/coco_test.py @@ -12,6 +12,7 @@ import cocoex as ex from cocoex import Suite from cocoex.utilities import about_equal +from cocoex import known_suite_names import example_experiment default_testcases = ["bbob2009_testcases.txt"] @@ -139,7 +140,8 @@ def main(args): run_doctests() print('doctests done.\nRunning example_experiment:'), sys.stdout.flush() example_experiment.main() - # run_constrained_suite_test() + if "bbob-constrained" in known_suite_names: + run_constrained_suite_test() for arg in args if args else default_testcases: if arg is None or arg == 'None': break From 51ceb6f952743a8c78b5c93f7fe9bc14054489b4 Mon Sep 17 00:00:00 2001 From: brockhof Date: Fri, 15 Feb 2019 15:52:42 +0100 Subject: [PATCH 368/446] update LaTeX templates with GECCO 2019 data --- .../latex-templates/templateBBOBLSarticle.tex | 6 +++--- code-postprocessing/latex-templates/templateBBOBarticle.tex | 6 +++--- code-postprocessing/latex-templates/templateBBOBcmp.tex | 6 +++--- code-postprocessing/latex-templates/templateBBOBmany.tex | 6 +++--- .../latex-templates/templateBIOBJarticle.tex | 6 +++--- .../latex-templates/templateBIOBJmultiple.tex | 6 +++--- .../latex-templates/templateNOISYarticle.tex | 6 +++--- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex index cc80be6c1..c4275014e 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex @@ -31,9 +31,9 @@ \acmISBN{123-4567-24-567/18/07} %Conference -\acmConference[GECCO '18]{the Genetic and Evolutionary Computation Conference 2018}{July 15--19, 2018}{Kyoto, Japan} -\acmYear{2018} -\copyrightyear{2018} +\acmConference[GECCO '19]{the Genetic and Evolutionary Computation Conference 2019}{July 13--17, 2019}{Prague, Czech Republic} +\acmYear{2019} +\copyrightyear{2019} \acmPrice{15.00} diff --git a/code-postprocessing/latex-templates/templateBBOBarticle.tex b/code-postprocessing/latex-templates/templateBBOBarticle.tex index 830d852a3..00a32b61a 100644 --- a/code-postprocessing/latex-templates/templateBBOBarticle.tex +++ b/code-postprocessing/latex-templates/templateBBOBarticle.tex @@ -24,9 +24,9 @@ \acmISBN{123-4567-24-567/18/07} %Conference -\acmConference[GECCO '18]{the Genetic and Evolutionary Computation Conference 2018}{July 15--19, 2018}{Kyoto, Japan} -\acmYear{2018} -\copyrightyear{2018} +\acmConference[GECCO '19]{the Genetic and Evolutionary Computation Conference 2019}{July 13--17, 2019}{Prague, Czech Republic} +\acmYear{2019} +\copyrightyear{2019} \acmPrice{15.00} diff --git a/code-postprocessing/latex-templates/templateBBOBcmp.tex b/code-postprocessing/latex-templates/templateBBOBcmp.tex index 37739e30c..5406b8626 100644 --- a/code-postprocessing/latex-templates/templateBBOBcmp.tex +++ b/code-postprocessing/latex-templates/templateBBOBcmp.tex @@ -46,9 +46,9 @@ \acmISBN{123-4567-24-567/18/07} %Conference -\acmConference[GECCO '18]{the Genetic and Evolutionary Computation Conference 2018}{July 15--19, 2018}{Kyoto, Japan} -\acmYear{2018} -\copyrightyear{2018} +\acmConference[GECCO '19]{the Genetic and Evolutionary Computation Conference 2019}{July 13--17, 2019}{Prague, Czech Republic} +\acmYear{2019} +\copyrightyear{2019} \acmPrice{15.00} diff --git a/code-postprocessing/latex-templates/templateBBOBmany.tex b/code-postprocessing/latex-templates/templateBBOBmany.tex index 8f71138bc..581d900cb 100644 --- a/code-postprocessing/latex-templates/templateBBOBmany.tex +++ b/code-postprocessing/latex-templates/templateBBOBmany.tex @@ -49,9 +49,9 @@ \acmISBN{123-4567-24-567/18/07} %Conference -\acmConference[GECCO '18]{the Genetic and Evolutionary Computation Conference 2018}{July 15--19, 2018}{Kyoto, Japan} -\acmYear{2018} -\copyrightyear{2018} +\acmConference[GECCO '19]{the Genetic and Evolutionary Computation Conference 2019}{July 13--17, 2019}{Prague, Czech Republic} +\acmYear{2019} +\copyrightyear{2019} \acmPrice{15.00} diff --git a/code-postprocessing/latex-templates/templateBIOBJarticle.tex b/code-postprocessing/latex-templates/templateBIOBJarticle.tex index dec2e329e..f62067c3d 100644 --- a/code-postprocessing/latex-templates/templateBIOBJarticle.tex +++ b/code-postprocessing/latex-templates/templateBIOBJarticle.tex @@ -24,9 +24,9 @@ \acmISBN{123-4567-24-567/18/07} %Conference -\acmConference[GECCO '18]{the Genetic and Evolutionary Computation Conference 2018}{July 15--19, 2018}{Kyoto, Japan} -\acmYear{2018} -\copyrightyear{2018} +\acmConference[GECCO '19]{the Genetic and Evolutionary Computation Conference 2019}{July 13--17, 2019}{Prague, Czech Republic} +\acmYear{2019} +\copyrightyear{2019} \acmPrice{15.00} diff --git a/code-postprocessing/latex-templates/templateBIOBJmultiple.tex b/code-postprocessing/latex-templates/templateBIOBJmultiple.tex index 138acb44e..60782ffc3 100644 --- a/code-postprocessing/latex-templates/templateBIOBJmultiple.tex +++ b/code-postprocessing/latex-templates/templateBIOBJmultiple.tex @@ -31,9 +31,9 @@ \acmISBN{123-4567-24-567/18/07} %Conference -\acmConference[GECCO '18]{the Genetic and Evolutionary Computation Conference 2018}{July 15--19, 2018}{Kyoto, Japan} -\acmYear{2018} -\copyrightyear{2018} +\acmConference[GECCO '19]{the Genetic and Evolutionary Computation Conference 2019}{July 13--17, 2019}{Prague, Czech Republic} +\acmYear{2019} +\copyrightyear{2019} \acmPrice{15.00} diff --git a/code-postprocessing/latex-templates/templateNOISYarticle.tex b/code-postprocessing/latex-templates/templateNOISYarticle.tex index ad8d1706f..d26e96fe0 100644 --- a/code-postprocessing/latex-templates/templateNOISYarticle.tex +++ b/code-postprocessing/latex-templates/templateNOISYarticle.tex @@ -41,9 +41,9 @@ \acmISBN{123-4567-24-567/18/07} %Conference -\acmConference[GECCO '18]{the Genetic and Evolutionary Computation Conference 2018}{July 15--19, 2018}{Kyoto, Japan} -\acmYear{2018} -\copyrightyear{2018} +\acmConference[GECCO '19]{the Genetic and Evolutionary Computation Conference 2019}{July 13--17, 2019}{Prague, Czech Republic} +\acmYear{2019} +\copyrightyear{2019} \acmPrice{15.00} From b066fb7489f0f596220bec44044e40d582dd4826 Mon Sep 17 00:00:00 2001 From: brockhof Date: Fri, 15 Feb 2019 15:57:17 +0100 Subject: [PATCH 369/446] updated submission deadline for GECCO 2019 --- code-postprocessing/latex-templates/templateBBOBLSarticle.tex | 2 +- code-postprocessing/latex-templates/templateBBOBarticle.tex | 2 +- code-postprocessing/latex-templates/templateBBOBcmp.tex | 2 +- code-postprocessing/latex-templates/templateBBOBmany.tex | 2 +- code-postprocessing/latex-templates/templateBIOBJarticle.tex | 2 +- code-postprocessing/latex-templates/templateBIOBJmultiple.tex | 2 +- code-postprocessing/latex-templates/templateNOISYarticle.tex | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex index c4275014e..482fc5ff5 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex @@ -120,7 +120,7 @@ \title{Black-Box Optimization Benchmarking Template for the Comparison of Algorithms on the \bbobls Testbed} \renewcommand{\shorttitle}{Template to Compare Algorithms on the \bbobls Testbed} -\titlenote{Submission deadline: March 31st.} +\titlenote{Submission deadline: April 3rd.} %Camera-ready paper due April 24th.}} \subtitle{Draft version} diff --git a/code-postprocessing/latex-templates/templateBBOBarticle.tex b/code-postprocessing/latex-templates/templateBBOBarticle.tex index 00a32b61a..1ff186f22 100644 --- a/code-postprocessing/latex-templates/templateBBOBarticle.tex +++ b/code-postprocessing/latex-templates/templateBBOBarticle.tex @@ -64,7 +64,7 @@ \title{Black-Box Optimization Benchmarking Template for Noiseless Function Testbed} -\titlenote{Submission deadline: March 31st.} +\titlenote{Submission deadline: April 3rd.} %Camera-ready paper due April 24th.}} \subtitle{Draft version} diff --git a/code-postprocessing/latex-templates/templateBBOBcmp.tex b/code-postprocessing/latex-templates/templateBBOBcmp.tex index 5406b8626..64bc0f91a 100644 --- a/code-postprocessing/latex-templates/templateBBOBcmp.tex +++ b/code-postprocessing/latex-templates/templateBBOBcmp.tex @@ -92,7 +92,7 @@ \title{Black-Box Optimization Benchmarking Template for the Comparison of Two Algorithms on the Noiseless Testbed} \renewcommand{\shorttitle}{Black-Box Optimization Benchmarking Template for Two Algorithms} -\titlenote{Submission deadline: March 31st.} +\titlenote{Submission deadline: April 3rd.} %Camera-ready paper due April 24th.}} \subtitle{Draft version} diff --git a/code-postprocessing/latex-templates/templateBBOBmany.tex b/code-postprocessing/latex-templates/templateBBOBmany.tex index 581d900cb..bd973ab22 100644 --- a/code-postprocessing/latex-templates/templateBBOBmany.tex +++ b/code-postprocessing/latex-templates/templateBBOBmany.tex @@ -95,7 +95,7 @@ \title{Black-Box Optimization Benchmarking Template for the Comparison of More than Two Algorithms on the Noiseless Testbed} \renewcommand{\shorttitle}{Black-Box Optimization Benchmarking Template for More Than Two Algorithms} -\titlenote{Submission deadline: March 31st.} +\titlenote{Submission deadline: April 3rd.} %Camera-ready paper due April 24th.}} \subtitle{Draft version} diff --git a/code-postprocessing/latex-templates/templateBIOBJarticle.tex b/code-postprocessing/latex-templates/templateBIOBJarticle.tex index f62067c3d..de923908e 100644 --- a/code-postprocessing/latex-templates/templateBIOBJarticle.tex +++ b/code-postprocessing/latex-templates/templateBIOBJarticle.tex @@ -70,7 +70,7 @@ \title{Black-Box Optimization Benchmarking Template for the Bi-Objective \bbobbiobj Test Suite} \renewcommand{\shorttitle}{Template for Benchmarking Single Algorithms on the \bbobbiobj Testbed} -\titlenote{Submission deadline: March 31st.} +\titlenote{Submission deadline: April 3rd.} %Camera-ready paper due April 24th.}} \subtitle{Draft version} diff --git a/code-postprocessing/latex-templates/templateBIOBJmultiple.tex b/code-postprocessing/latex-templates/templateBIOBJmultiple.tex index 60782ffc3..fe1a658b8 100644 --- a/code-postprocessing/latex-templates/templateBIOBJmultiple.tex +++ b/code-postprocessing/latex-templates/templateBIOBJmultiple.tex @@ -85,7 +85,7 @@ \title{Black-Box Optimization Benchmarking Template for the Comparison of Multiple Algorithms on the Biobjective \bbobbiobj Testbed} \renewcommand{\shorttitle}{Template to Compare Multiple Algorithms on the \bbobbiobj Testbed} -\titlenote{Submission deadline: March 31st.} +\titlenote{Submission deadline: April 3rd.} %Camera-ready paper due April 24th.}} \subtitle{Draft version} diff --git a/code-postprocessing/latex-templates/templateNOISYarticle.tex b/code-postprocessing/latex-templates/templateNOISYarticle.tex index d26e96fe0..c26811401 100644 --- a/code-postprocessing/latex-templates/templateNOISYarticle.tex +++ b/code-postprocessing/latex-templates/templateNOISYarticle.tex @@ -121,7 +121,7 @@ \title{Black-Box Optimization Benchmarking Template for the Comparison of Algorithms on the \bbobnoisy Testbed} \renewcommand{\shorttitle}{Template to Compare Algorithms on the \bbobnoisy Testbed} -\titlenote{Submission deadline: March 31st.} +\titlenote{Submission deadline: April 3rd.} %Camera-ready paper due April 24th.}} \subtitle{Draft version} From e943d06a1f594f17c7dc30a248f4c4701bf52f8d Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Mon, 18 Feb 2019 15:20:10 +0100 Subject: [PATCH 370/446] A "clean" implementation of the mixed-integer suites (without any rw problems) + fixed some postprocessing warnings and large-scale leaks --- code-experiments/build/c/Makefile.in | 2 +- code-experiments/build/c/example_experiment.c | 147 +- code-experiments/build/java/CocoJNI.c | 22 + code-experiments/build/java/CocoJNI.java | 1 + .../build/java/ExampleExperiment.java | 8 +- code-experiments/build/java/Problem.java | 6 + code-experiments/build/matlab/cocoCall.c | 82 +- code-experiments/build/matlab/cocoCall.m | 6 +- code-experiments/build/matlab/cocoObserver.m | 4 + .../build/matlab/exampleexperiment.m | 16 +- code-experiments/build/matlab/my_optimizer.m | 8 +- .../build/python/cython/interface.c | 8123 ++++++++++------- .../build/python/cython/interface.pyx | 30 +- code-experiments/build/python/demo.py | 2 + .../build/python/python/__init__.py | 4 +- code-experiments/build/python/setup.py.in | 6 +- code-experiments/src/coco.h | 6 + code-experiments/src/coco_internal.h | 14 +- code-experiments/src/coco_observer.c | 31 +- code-experiments/src/coco_problem.c | 77 +- code-experiments/src/coco_string.c | 21 +- code-experiments/src/coco_suite.c | 75 +- code-experiments/src/coco_utilities.c | 47 + code-experiments/src/f_attractive_sector.c | 2 +- .../src/f_bent_cigar_generalized.c | 2 +- code-experiments/src/f_different_powers.c | 2 +- code-experiments/src/f_discus_generalized.c | 2 +- code-experiments/src/f_ellipsoid.c | 2 +- code-experiments/src/f_gallagher.c | 3 +- code-experiments/src/f_griewank_rosenbrock.c | 2 +- code-experiments/src/f_katsuura.c | 2 +- code-experiments/src/f_lunacek_bi_rastrigin.c | 2 +- code-experiments/src/f_rastrigin.c | 2 +- code-experiments/src/f_rosenbrock.c | 3 +- code-experiments/src/f_schaffers.c | 2 +- code-experiments/src/f_schwefel_generalized.c | 2 +- .../src/f_sharp_ridge_generalized.c | 2 +- code-experiments/src/f_step_ellipsoid.c | 2 +- code-experiments/src/f_weierstrass.c | 2 +- code-experiments/src/logger_bbob.c | 27 +- code-experiments/src/logger_biobj.c | 52 +- code-experiments/src/observer_biobj.c | 2 +- code-experiments/src/suite_bbob.c | 2 +- code-experiments/src/suite_biobj.c | 387 +- .../src/suite_biobj_best_values_hyp.c | 13 +- .../src/transform_vars_blockrotation.c | 8 +- .../transform_vars_blockrotation_helpers.c | 4 +- .../src/transform_vars_permutation.c | 1 + .../src/transform_vars_permutation_helpers.c | 6 +- .../test/integration-test/Makefile.in | 8 +- .../test/integration-test/Makefile_win_gcc.in | 9 +- .../test/integration-test/test_biobj.c | 2 +- .../test_instance_extraction.c | 3 + .../test/unit-test/test_coco_problem.c | 9 +- .../test/unit-test/test_coco_string.c | 2 +- .../test/unit-test/test_coco_suite.c | 2 +- .../test/unit-test/test_coco_utilities.c | 20 +- .../test/unit-test/test_logger_biobj.c | 4 +- code-experiments/test/unit-test/unit_test.c | 18 +- code-postprocessing/cocopp/bestalg.py | 5 +- code-postprocessing/cocopp/captions.py | 19 +- code-postprocessing/cocopp/compall/ppfigs.py | 14 +- .../cocopp/compall/pprldmany.py | 9 +- .../cocopp/compall/pptables.py | 20 +- .../cocopp/latex_commands_for_html.html | 278 +- code-postprocessing/cocopp/pprldistr.py | 8 +- code-postprocessing/cocopp/pptable.py | 4 +- .../cocopp/preparetexforhtml.py | 4 + code-postprocessing/cocopp/rungeneric.py | 5 +- code-postprocessing/cocopp/test.py | 41 +- code-postprocessing/cocopp/testbedsettings.py | 71 +- .../latex-templates/templateNOISYarticle.tex | 24 +- do.py | 33 +- 73 files changed, 5762 insertions(+), 4124 deletions(-) diff --git a/code-experiments/build/c/Makefile.in b/code-experiments/build/c/Makefile.in index 55d86f0d5..50329112c 100644 --- a/code-experiments/build/c/Makefile.in +++ b/code-experiments/build/c/Makefile.in @@ -33,4 +33,4 @@ example_experiment: example_experiment.o coco.o coco.o: coco.h coco.c ${CC} -c ${CCFLAGS} -o coco.o coco.c example_experiment.o: coco.h coco.c example_experiment.c - ${CC} -c ${CCFLAGS} -o example_experiment.o example_experiment.c \ No newline at end of file + ${CC} -c ${CCFLAGS} -o example_experiment.o example_experiment.c diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index 1543b11c4..ed51fb752 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "coco.h" @@ -60,7 +61,9 @@ static void evaluate_constraint(const double *x, double *y) { /* Declarations of all functions implemented in this file (so that their order is not important): */ void example_experiment(const char *suite_name, + const char *suite_options, const char *observer_name, + const char *observer_options, coco_random_state_t *random_generator); void my_random_search(evaluate_function_t evaluate_func, @@ -70,14 +73,18 @@ void my_random_search(evaluate_function_t evaluate_func, const size_t number_of_constraints, const double *lower_bounds, const double *upper_bounds, + const size_t number_of_integer_variables, const size_t max_budget, coco_random_state_t *random_generator); -void my_grid_search(evaluate_function_t evaluate, +void my_grid_search(evaluate_function_t evaluate_func, + evaluate_function_t evaluate_cons, const size_t dimension, const size_t number_of_objectives, + const size_t number_of_constraints, const double *lower_bounds, const double *upper_bounds, + const size_t number_of_integer_variables, const size_t max_budget); /* Structure and functions needed for timing the experiment */ @@ -96,7 +103,7 @@ static void timing_data_finalize(timing_data_t *timing_data); /** * The main method initializes the random number generator and calls the example experiment on the - * bi-objective suite. + * bbob suite. */ int main(void) { @@ -108,21 +115,30 @@ int main(void) { printf("Running the example experiment... (might take time, be patient)\n"); fflush(stdout); - /** + /** * Start the actual experiments on a test suite and use a matching logger, for - * example one of the following: + * example one of the following: * bbob 24 unconstrained noiseless single-objective functions * bbob-biobj 55 unconstrained noiseless bi-objective functions * bbob-biobj-ext 92 unconstrained noiseless bi-objective functions * [bbob-constrained* 48 constrained noiseless single-objective functions] - * [bbob-largescale* 24 unconstrained noiseless single-objective functions in large dimension] + * bbob-largescale 24 unconstrained noiseless single-objective functions in large dimension + * bbob-mixint 24 unconstrained noiseless single-objective functions with mixed-integer variables + * bbob-biobj-mixint 92 unconstrained noiseless bi-objective functions with mixed-integer variables * * Suites with a star are partly implemented but not yet fully supported. * * Adapt to your need. Note that the experiment is run according * to the settings, defined in example_experiment(...) below. */ - example_experiment("bbob", "bbob", random_generator); + coco_set_log_level("info"); + + /** + * For more details on how to change the default suite and observer options, see + * http://numbbo.github.io/coco-doc/C/#suite-parameters and + * http://numbbo.github.io/coco-doc/C/#observer-parameters. */ + + example_experiment("bbob", "", "bbob", "result_folder: RS_on_bbob", random_generator); printf("Done!\n"); fflush(stdout); @@ -137,12 +153,16 @@ int main(void) { * that can serve also as a timing experiment. * * @param suite_name Name of the suite (e.g. "bbob" or "bbob-biobj"). - * @param observer_name Name of the observer matching with the chosen suite (e.g. "bbob-biobj" + * @param suite_options Options of the suite (e.g. "dimensions: 2,3,5,10,20 instance_indices: 1-5"). + * @param observer_name Name of the observer matching with the chosen suite (e.g. "bbob-biobj" * when using the "bbob-biobj-ext" suite). + * @param observer_options Options of the observer (e.g. "result_folder: folder_name") * @param random_generator The random number generator. */ void example_experiment(const char *suite_name, + const char *suite_options, const char *observer_name, + const char *observer_options, coco_random_state_t *random_generator) { size_t run; @@ -150,40 +170,27 @@ void example_experiment(const char *suite_name, coco_observer_t *observer; timing_data_t *timing_data; - /* Set some options for the observer. See documentation for other options. */ - char *observer_options = - coco_strdupf("result_folder: RS_on_%s " - "algorithm_name: RS " - "algorithm_info: \"A simple random search algorithm\"", suite_name); - - /* Initialize the suite and observer. - * - * For more details on how to change the default options, see - * http://numbbo.github.io/coco-doc/C/#suite-parameters and - * http://numbbo.github.io/coco-doc/C/#observer-parameters. */ - suite = coco_suite(suite_name, "", ""); + /* Initialize the suite and observer. */ + suite = coco_suite(suite_name, "", suite_options); observer = coco_observer(observer_name, observer_options); - coco_free_memory(observer_options); /* Initialize timing */ timing_data = timing_data_initialize(suite); /* Iterate over all problems in the suite */ while ((PROBLEM = coco_suite_get_next_problem(suite, observer)) != NULL) { - + size_t dimension = coco_problem_get_dimension(PROBLEM); /* Run the algorithm at least once */ for (run = 1; run <= 1 + INDEPENDENT_RESTARTS; run++) { - long evaluations_done = (long) (coco_problem_get_evaluations(PROBLEM) + + long evaluations_done = (long) (coco_problem_get_evaluations(PROBLEM) + coco_problem_get_evaluations_constraints(PROBLEM)); long evaluations_remaining = (long) (dimension * BUDGET_MULTIPLIER) - evaluations_done; - /* Break the loop if the target was hit or there are no more remaining evaluations */ - if ((coco_problem_final_target_hit(PROBLEM) && - coco_problem_get_number_of_constraints(PROBLEM) == 0) - || (evaluations_remaining <= 0)) + /* Break the loop if there are no more remaining evaluations */ + if (evaluations_remaining <= 0) break; /* Call the optimization algorithm for the remaining number of evaluations */ @@ -194,9 +201,10 @@ void example_experiment(const char *suite_name, coco_problem_get_number_of_constraints(PROBLEM), coco_problem_get_smallest_values_of_interest(PROBLEM), coco_problem_get_largest_values_of_interest(PROBLEM), + coco_problem_get_number_of_integer_variables(PROBLEM), (size_t) evaluations_remaining, random_generator); - + /* Break the loop if the algorithm performed no evaluations or an unexpected thing happened */ if (coco_problem_get_evaluations(PROBLEM) == evaluations_done) { printf("WARNING: Budget has not been exhausted (%lu/%lu evaluations done)!\n", @@ -222,13 +230,15 @@ void example_experiment(const char *suite_name, /** * A random search algorithm that can be used for single- as well as multi-objective optimization. * - * @param evaluate_function The function used to evaluate the objective function. - * @param evaluate_constraint The function used to evaluate the constraints. + * @param evaluate_func The function used to evaluate the objective function. + * @param evaluate_cons The function used to evaluate the constraints. * @param dimension The number of variables. * @param number_of_objectives The number of objectives. * @param number_of_constraints The number of constraints. * @param lower_bounds The lower bounds of the region of interested (a vector containing dimension values). * @param upper_bounds The upper bounds of the region of interested (a vector containing dimension values). + * @param number_of_integer_variables The number of integer variables (if > 0, all integer variables come + * before any continuous ones). * @param max_budget The maximal number of evaluations. * @param random_generator Pointer to a random number generator able to produce uniformly and normally * distributed random numbers. @@ -240,6 +250,7 @@ void my_random_search(evaluate_function_t evaluate_func, const size_t number_of_constraints, const double *lower_bounds, const double *upper_bounds, + const size_t number_of_integer_variables, const size_t max_budget, coco_random_state_t *random_generator) { @@ -248,18 +259,24 @@ void my_random_search(evaluate_function_t evaluate_func, double *constraints_values = NULL; double range; size_t i, j; - + if (number_of_constraints > 0 ) constraints_values = coco_allocate_vector(number_of_constraints); - for (i = 0; i < max_budget; ++i) { + coco_problem_get_initial_solution(PROBLEM, x); + evaluate_func(x, functions_values); + + for (i = 1; i < max_budget; ++i) { /* Construct x as a random point between the lower and upper bounds */ for (j = 0; j < dimension; ++j) { range = upper_bounds[j] - lower_bounds[j]; x[j] = lower_bounds[j] + coco_random_uniform(random_generator) * range; + /* Round the variable if integer */ + if (j < number_of_integer_variables) + x[j] = floor(x[j] + 0.5); } - + /* Evaluate COCO's constraints function if problem is constrained */ if (number_of_constraints > 0 ) evaluate_cons(x, constraints_values); @@ -278,61 +295,92 @@ void my_random_search(evaluate_function_t evaluate_func, /** * A grid search optimizer that can be used for single- as well as multi-objective optimization. * - * @param evaluate The evaluation function used to evaluate the solutions. + * @param evaluate_func The evaluation function used to evaluate the solutions. + * @param evaluate_cons The function used to evaluate the constraints. * @param dimension The number of variables. * @param number_of_objectives The number of objectives. + * @param number_of_constraints The number of constraints. * @param lower_bounds The lower bounds of the region of interested (a vector containing dimension values). * @param upper_bounds The upper bounds of the region of interested (a vector containing dimension values). + * @param number_of_integer_variables The number of integer variables (if > 0, all integer variables come + * before any continuous ones). * @param max_budget The maximal number of evaluations. * * If max_budget is not enough to cover even the smallest possible grid, only the first max_budget * nodes of the grid are evaluated. */ -void my_grid_search(evaluate_function_t evaluate, +void my_grid_search(evaluate_function_t evaluate_func, + evaluate_function_t evaluate_cons, const size_t dimension, const size_t number_of_objectives, + const size_t number_of_constraints, const double *lower_bounds, const double *upper_bounds, + const size_t number_of_integer_variables, const size_t max_budget) { + double *x = coco_allocate_vector(dimension); - double *y = coco_allocate_vector(number_of_objectives); + double *func_values = coco_allocate_vector(number_of_objectives); + double *cons_values = NULL; long *nodes = (long *) coco_allocate_memory(sizeof(long) * dimension); double *grid_step = coco_allocate_vector(dimension); size_t i, j; size_t evaluations = 0; - long max_nodes = (long) floor(pow((double) max_budget, 1.0 / (double) dimension)) - 1; - - /* Take care of the borderline case */ - if (max_nodes < 1) max_nodes = 1; + long *max_nodes = (long *) coco_allocate_memory(sizeof(long) * dimension); + long integer_nodes = 1; /* Initialization */ for (j = 0; j < dimension; j++) { nodes[j] = 0; - grid_step[j] = (upper_bounds[j] - lower_bounds[j]) / (double) max_nodes; + if (j < number_of_integer_variables) { + grid_step[j] = 1; + max_nodes[j] = (long) floor(upper_bounds[j] + 0.5); + assert(fabs(lower_bounds[j]) < 1e-6); + assert(max_nodes[j] > 0); + integer_nodes *= max_nodes[j]; + } + else { + max_nodes[j] = (long) floor(pow((double) max_budget / (double) integer_nodes, + 1 / (double) (dimension - number_of_integer_variables))) - 1; + /* Take care of the borderline case */ + if (max_nodes[j] < 1) + max_nodes[j] = 1; + grid_step[j] = (upper_bounds[j] - lower_bounds[j]) / (double) max_nodes[j]; + } } + if (number_of_constraints > 0 ) + cons_values = coco_allocate_vector(number_of_constraints); + while (evaluations < max_budget) { + /* Stop if there are no more nodes */ + if ((number_of_integer_variables == dimension) && (evaluations >= integer_nodes)) + break; + /* Construct x and evaluate it */ for (j = 0; j < dimension; j++) { x[j] = lower_bounds[j] + grid_step[j] * (double) nodes[j]; } - /* Call the evaluate function to evaluate x on the current problem (this is where all the COCO logging - * is performed) */ - evaluate(x, y); + /* Evaluate COCO's constraints function if problem is constrained */ + if (number_of_constraints > 0 ) + evaluate_cons(x, cons_values); + + /* Call COCO's evaluate function where all the logging is performed */ + evaluate_func(x, func_values); evaluations++; /* Inside the grid, move to the next node */ - if (nodes[0] < max_nodes) { + if (nodes[0] < max_nodes[0]) { nodes[0]++; } /* At an outside node of the grid, move to the next level */ - else if (max_nodes > 0) { + else if (max_nodes[0] > 0) { for (j = 1; j < dimension; j++) { - if (nodes[j] < max_nodes) { + if (nodes[j] < max_nodes[j]) { nodes[j]++; for (i = 0; i < j; i++) nodes[i] = 0; @@ -341,15 +389,18 @@ void my_grid_search(evaluate_function_t evaluate, } /* At the end of the grid, exit */ - if ((j == dimension) && (nodes[j - 1] == max_nodes)) + if ((j == dimension) && (nodes[j - 1] == max_nodes[j - 1])) break; } } coco_free_memory(x); - coco_free_memory(y); + coco_free_memory(func_values); + if (number_of_constraints > 0 ) + coco_free_memory(cons_values); coco_free_memory(nodes); coco_free_memory(grid_step); + coco_free_memory(max_nodes); } /** diff --git a/code-experiments/build/java/CocoJNI.c b/code-experiments/build/java/CocoJNI.c index 5615609cd..5b3bdea07 100644 --- a/code-experiments/build/java/CocoJNI.c +++ b/code-experiments/build/java/CocoJNI.c @@ -440,6 +440,28 @@ JNIEXPORT jdoubleArray JNICALL Java_CocoJNI_cocoProblemGetLargestValuesOfInteres return jresult; } +/* + * Class: CocoJNI + * Method: cocoProblemGetNumberOfIntegerVariables + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_CocoJNI_cocoProblemGetNumberOfIntegerVariables +(JNIEnv *jenv, jclass interface_cls, jlong jproblem_pointer) { + + coco_problem_t *problem = NULL; + jint jresult; + + /* This test is both to prevent warning because interface_cls was not used and to check for exceptions */ + if (interface_cls == NULL) { + jclass Exception = (*jenv)->FindClass(jenv, "java/lang/Exception"); + (*jenv)->ThrowNew(jenv, Exception, "Exception in cocoProblemGetNumberOfIntegerVariables\n"); + } + + problem = (coco_problem_t *) jproblem_pointer; + jresult = (jint) coco_problem_get_number_of_integer_variables(problem); + return jresult; +} + /* * Class: CocoJNI * Method: cocoProblemGetLargestFValuesOfInterest diff --git a/code-experiments/build/java/CocoJNI.java b/code-experiments/build/java/CocoJNI.java index 2a0e29199..ec4d224ff 100644 --- a/code-experiments/build/java/CocoJNI.java +++ b/code-experiments/build/java/CocoJNI.java @@ -36,6 +36,7 @@ public class CocoJNI { public static native double[] cocoProblemGetSmallestValuesOfInterest(long problemPointer); public static native double[] cocoProblemGetLargestValuesOfInterest(long problemPointer); + public static native int cocoProblemGetNumberOfIntegerVariables(long problemPointer); public static native double[] cocoProblemGetLargestFValuesOfInterest(long problemPointer); diff --git a/code-experiments/build/java/ExampleExperiment.java b/code-experiments/build/java/ExampleExperiment.java index cb06e7b03..b2869ce7b 100644 --- a/code-experiments/build/java/ExampleExperiment.java +++ b/code-experiments/build/java/ExampleExperiment.java @@ -71,7 +71,11 @@ public static void main(String[] args) { * bbob-biobj 55 unconstrained noiseless bi-objective functions * bbob-biobj-ext 92 unconstrained noiseless bi-objective functions * bbob-largescale 24 unconstrained noiseless single-objective functions in large dimension - * bbob-constrained 48 constrained noiseless single-objective functions + * [bbob-constrained* 48 constrained noiseless single-objective functions] + * bbob-mixint 24 unconstrained noiseless single-objective functions with mixed-integer variables + * bbob-biobj-mixint 92 unconstrained noiseless bi-objective functions with mixed-integer variables + * + * Suites with a star are partly implemented but not yet fully supported. * * Adapt to your need. Note that the experiment is run according * to the settings, defined in exampleExperiment(...) below. @@ -135,6 +139,7 @@ public static void exampleExperiment(String suiteName, String observerName, Rand PROBLEM.getNumberOfConstraints(), PROBLEM.getSmallestValuesOfInterest(), PROBLEM.getLargestValuesOfInterest(), + PROBLEM.getNumberOfIntegerVariabls(), evaluationsRemaining, randomGenerator); @@ -171,6 +176,7 @@ public static void myRandomSearch(Function f, int numberOfConstraints, double[] lowerBounds, double[] upperBounds, + int numberOfIntegerVariables, long maxBudget, Random randomGenerator) { diff --git a/code-experiments/build/java/Problem.java b/code-experiments/build/java/Problem.java index 8b05f3a32..44ae811de 100644 --- a/code-experiments/build/java/Problem.java +++ b/code-experiments/build/java/Problem.java @@ -12,6 +12,7 @@ public class Problem { private double[] lower_bounds; private double[] upper_bounds; + private int number_of_integer_variables; private String id; private String name; @@ -33,6 +34,7 @@ public Problem(long pointer) throws Exception { this.lower_bounds = CocoJNI.cocoProblemGetSmallestValuesOfInterest(pointer); this.upper_bounds = CocoJNI.cocoProblemGetLargestValuesOfInterest(pointer); + this.number_of_integer_variables = CocoJNI.cocoProblemGetNumberOfIntegerVariables(pointer); this.id = CocoJNI.cocoProblemGetId(pointer); this.name = CocoJNI.cocoProblemGetName(pointer); @@ -95,6 +97,10 @@ public double[] getLargestValuesOfInterest() { public double getLargestValueOfInterest(int index) { return this.upper_bounds[index]; } + + public int getNumberOfIntegerVariabls() { + return this.number_of_integer_variables; + } public double[] getLargestFValuesOfInterest() { return CocoJNI.cocoProblemGetLargestFValuesOfInterest(pointer); diff --git a/code-experiments/build/matlab/cocoCall.c b/code-experiments/build/matlab/cocoCall.c index 0b537a92e..944819424 100644 --- a/code-experiments/build/matlab/cocoCall.c +++ b/code-experiments/build/matlab/cocoCall.c @@ -31,7 +31,7 @@ void cocoEvaluateFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *pr mexErrMsgIdAndTxt("cocoEvaluateFunction:notDoubleArray","Input x must be an array of doubles."); } /* test if input dimension is consistent with problem dimension */ - if(!(mxGetN(prhs[1]) == 1 & mxGetM(prhs[1]) == coco_problem_get_dimension(problem)) + if(!(mxGetN(prhs[1]) == 1 & mxGetM(prhs[1]) == coco_problem_get_dimension(problem)) & !(mxGetM(prhs[1]) == 1 & mxGetN(prhs[1]) == coco_problem_get_dimension(problem))) { mexErrMsgIdAndTxt("cocoEvaluateFunction:wrongDimension", "Input x does not comply with problem dimension."); } @@ -67,7 +67,7 @@ void cocoEvaluateConstraint(int nlhs, mxArray *plhs[], int nrhs, const mxArray * mexErrMsgIdAndTxt("cocoEvaluateConstraint:notDoubleArray","Input x must be an array of doubles."); } /* test if input dimension is consistent with problem dimension */ - if(!(mxGetN(prhs[1]) == 1 & mxGetM(prhs[1]) == coco_problem_get_dimension(problem)) + if(!(mxGetN(prhs[1]) == 1 & mxGetM(prhs[1]) == coco_problem_get_dimension(problem)) & !(mxGetM(prhs[1]) == 1 & mxGetN(prhs[1]) == coco_problem_get_dimension(problem))) { mexErrMsgIdAndTxt("cocoEvaluateConstraint:wrongDimension", "Input x does not comply with problem dimension."); } @@ -87,7 +87,7 @@ void cocoObserver(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) char *observer_options; coco_observer_t *observer = NULL; size_t *res; - + /* check for proper number of arguments */ if(nrhs!=2) { mexErrMsgIdAndTxt("cocoObserver:nrhs","Two inputs required."); @@ -108,7 +108,7 @@ void cocoObserverFree(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] { coco_observer_t *observer; size_t *ref; - + /* check for proper number of arguments */ if(nrhs!=1) { mexErrMsgIdAndTxt("cocoObserverFree:nrhs","One input required."); @@ -126,22 +126,22 @@ void cocoProblemAddObserver(int nlhs, mxArray *plhs[], int nrhs, const mxArray * coco_observer_t *observer; coco_problem_t *observedproblem; size_t *ref, *ref2; - + /* check for proper number of arguments */ if(nrhs!=2) { mexErrMsgIdAndTxt("cocoProblemAddObserver:nrhs","Two inputs required."); } - + /* get the suite */ ref = (size_t *)mxGetData(prhs[0]); problem = (coco_problem_t *)(*ref); /* get the observer */ ref2 = (size_t *)mxGetData(prhs[1]); observer = (coco_observer_t *)(*ref2); - + /* call coco_problem_add_observer() */ observedproblem = coco_problem_add_observer(problem, observer); - + /* prepare the return value */ plhs[0] = mxCreateNumericMatrix(1, 1 ,mxINT64_CLASS, mxREAL); ref = (size_t *)mxGetData(plhs[0]); @@ -152,7 +152,7 @@ void cocoProblemFinalTargetHit(int nlhs, mxArray *plhs[], int nrhs, const mxArra { size_t *ref; coco_problem_t *problem = NULL; - const mwSize dims[2] = {1, 1}; + const mwSize dims[2] = {1, 1}; size_t *res; /* check for proper number of arguments */ @@ -277,7 +277,7 @@ void cocoProblemGetInitialSolution(int nlhs, mxArray *plhs[], int nrhs, const mx /* get the problem */ ref = (size_t *)mxGetData(prhs[0]); problem = (coco_problem_t *)(*ref); - + nb_dim = coco_problem_get_dimension(problem); plhs[0] = mxCreateDoubleMatrix(1, nb_dim, mxREAL); v = mxGetPr(plhs[0]); @@ -302,7 +302,7 @@ void cocoProblemGetLargestFValuesOfInterest(int nlhs, mxArray *plhs[], int nrhs, /* get the problem */ ref = (size_t *)mxGetData(prhs[0]); problem = (coco_problem_t *)(*ref); - + nb_obj = coco_problem_get_number_of_objectives(problem); plhs[0] = mxCreateDoubleMatrix(1, nb_obj, mxREAL); v = mxGetPr(plhs[0]); @@ -329,7 +329,7 @@ void cocoProblemGetLargestValuesOfInterest(int nlhs, mxArray *plhs[], int nrhs, /* get the problem */ ref = (size_t *)mxGetData(prhs[0]); problem = (coco_problem_t *)(*ref); - + nb_dim = coco_problem_get_dimension(problem); plhs[0] = mxCreateDoubleMatrix(1, nb_dim, mxREAL); v = mxGetPr(plhs[0]); @@ -399,6 +399,26 @@ void cocoProblemGetNumberOfConstraints(int nlhs, mxArray *plhs[], int nrhs, cons res[0] = coco_problem_get_number_of_constraints(problem); } +void cocoProblemGetNumberOfIntegerVariables(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) +{ + size_t *ref; + coco_problem_t *problem = NULL; + const mwSize dims[2] = {1, 1}; + size_t *res; + + /* check for proper number of arguments */ + if(nrhs!=1) { + mexErrMsgIdAndTxt("cocoProblemGetNumberOfIntegerVariables:nrhs","One input required."); + } + /* get the problem */ + ref = (size_t *)mxGetData(prhs[0]); + problem = (coco_problem_t *)(*ref); + /* prepare the return value */ + plhs[0] = mxCreateNumericArray(2, dims, mxINT32_CLASS, mxREAL); + res = (size_t *)mxGetData(plhs[0]); + res[0] = coco_problem_get_number_of_integer_variables(problem); +} + void cocoProblemGetSmallestValuesOfInterest(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { size_t *ref; @@ -447,22 +467,22 @@ void cocoProblemRemoveObserver(int nlhs, mxArray *plhs[], int nrhs, const mxArra coco_problem_t *unobservedproblem; size_t *ref; size_t *ref2; - + /* check for proper number of arguments */ if(nrhs!=2) { mexErrMsgIdAndTxt("cocoProblemREmoveObserver:nrhs","Two inputs required."); } - + /* get the suite */ ref = (size_t *)mxGetData(prhs[0]); problem = (coco_problem_t *)(*ref); /* get the observer */ ref2 = (size_t *)mxGetData(prhs[1]); observer = (coco_observer_t *)(*ref2); - + /* call coco_problem_remove_observer() */ unobservedproblem = coco_problem_remove_observer(problem, observer); - + /* prepare the return value */ plhs[0] = mxCreateNumericMatrix(1, 1 ,mxINT64_CLASS, mxREAL); ref = (size_t *)mxGetData(plhs[0]); @@ -471,7 +491,7 @@ void cocoProblemRemoveObserver(int nlhs, mxArray *plhs[], int nrhs, const mxArra void cocoSetLogLevel(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { - + char *level; const char *res; @@ -494,7 +514,7 @@ void cocoSuite(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) char *suite_options; coco_suite_t *suite = NULL; size_t *res; - + /* check for proper number of arguments */ if(nrhs!=3) { mexErrMsgIdAndTxt("cocoSuite:nrhs","Three inputs required."); @@ -517,7 +537,7 @@ void cocoSuiteFree(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { coco_suite_t *suite = NULL; size_t *ref; - + /* check for proper number of arguments */ if(nrhs!=1) { mexErrMsgIdAndTxt("cocoSuiteFree:nrhs","One input required."); @@ -536,22 +556,22 @@ void cocoSuiteGetNextProblem(int nlhs, mxArray *plhs[], int nrhs, const mxArray coco_problem_t *problem; size_t *ref; size_t *ref2; - + /* check for proper number of arguments */ if(nrhs!=2) { mexErrMsgIdAndTxt("cocoSuiteGetNextProblem:nrhs","Two inputs required."); } - + /* get the suite */ ref = (size_t *)mxGetData(prhs[0]); suite = (coco_suite_t *)(*ref); /* get the observer */ ref2 = (size_t *)mxGetData(prhs[1]); observer = (coco_observer_t *)(*ref2); - + /* call coco_suite_get_next_problem() */ problem = coco_suite_get_next_problem(suite, observer); - + /* prepare the return value */ plhs[0] = mxCreateNumericMatrix(1, 1 ,mxINT64_CLASS, mxREAL); ref = (size_t *)mxGetData(plhs[0]); @@ -563,17 +583,17 @@ void cocoSuiteGetProblem(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prh coco_suite_t *problem_suite; size_t findex; coco_problem_t *pb = NULL; - size_t *res; + size_t *res; size_t *ref; /* check for proper number of arguments */ if(nrhs!=2) { mexErrMsgIdAndTxt("cocoSuiteGetProblem:nrhs","Two inputs required.\n Try \'help cocoSuiteGetProblem.m\'."); } - /* get problem_suite */ + /* get problem_suite */ ref = (size_t *)mxGetData(prhs[0]); problem_suite = (coco_suite_t *)(*ref); - + /* get function_index */ findex = (size_t)mxGetScalar(prhs[1]); /* call coco_suite_get_problem() */ @@ -581,11 +601,11 @@ void cocoSuiteGetProblem(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prh /* prepare the return value */ plhs[0] = mxCreateNumericMatrix(1, 1 ,mxINT64_CLASS, mxREAL); res = (size_t *)mxGetData(plhs[0]); - *res = (size_t)pb; + *res = (size_t)pb; } /** @brief The gateway function, calling all Coco functionality from Matlab - * + * * Called as * * out = cocoCall('functionName', arguments). @@ -607,7 +627,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) for(i = 0; cocofunction[i]; i++){ cocofunction[i] = tolower(cocofunction[i]); } - + /* Now the big 'switch' accessing all supported Coco functions. */ if (strcmp(cocofunction, "cocoevaluatefunction") == 0) { cocoEvaluateFunction(nlhs, plhs, nrhs-1, prhs+1); @@ -643,6 +663,8 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) cocoProblemGetNumberOfObjectives(nlhs, plhs, nrhs-1, prhs+1); } else if (strcmp(cocofunction, "cocoproblemgetnumberofconstraints") == 0) { cocoProblemGetNumberOfConstraints(nlhs, plhs, nrhs-1, prhs+1); + } else if (strcmp(cocofunction, "cocoproblemgetnumberofintegervariables") == 0) { + cocoProblemGetNumberOfIntegerVariables(nlhs, plhs, nrhs-1, prhs+1); } else if (strcmp(cocofunction, "cocoproblemgetsmallestvaluesofinterest") == 0) { cocoProblemGetSmallestValuesOfInterest(nlhs, plhs, nrhs-1, prhs+1); } else if (strcmp(cocofunction, "cocoproblemisvalid") == 0) { @@ -662,6 +684,6 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else { coco_warning("Function string '%s' not supported", cocofunction); } - + mxFree(cocofunction); } diff --git a/code-experiments/build/matlab/cocoCall.m b/code-experiments/build/matlab/cocoCall.m index 94f661b62..577885889 100644 --- a/code-experiments/build/matlab/cocoCall.m +++ b/code-experiments/build/matlab/cocoCall.m @@ -39,10 +39,14 @@ % * cocoProblemGetLargestValuesOfInterest: problem % Returns a vector of size 'dimension' with upper bounds of the region % of interest in the decision space for the given problem. -% * cocoProblemGetName: problem +% * cocoProblemGetName: problem % Returns the name of the problem. % * cocoProblemGetNumberOfObjectives: problem % Returns the number of objectives of the problem. +% * cocoProblemGetNumberOfConstraints: problem +% Returns the number of constraints of the problem. +% * cocoProblemGetNumberOfIntegerVariables: problem +% Returns the number of integer variables of the problem. % * cocoProblemGetSmallestValuesOfInterest: problem % Returns a vector of size 'dimension' with lower bounds of the region % of interest in the decision space for the given problem. diff --git a/code-experiments/build/matlab/cocoObserver.m b/code-experiments/build/matlab/cocoObserver.m index 915a19878..688588e35 100644 --- a/code-experiments/build/matlab/cocoObserver.m +++ b/code-experiments/build/matlab/cocoObserver.m @@ -62,6 +62,10 @@ % outputting f values and corresponds to the number % of digits to be printed after the decimal point. % The default value is 15. +% "log_discrete_as_int: VALUE" determines whether the values +% of integer variables (in mixed-integer problems) +% are logged as integers (1) or not (0 - in this case +% they are logged as doubles). The default value is 0. % % Returns: % The constructed observer object or NULL if observer_name equals NULL, "" or diff --git a/code-experiments/build/matlab/exampleexperiment.m b/code-experiments/build/matlab/exampleexperiment.m index ca52ae0fe..384404b5b 100644 --- a/code-experiments/build/matlab/exampleexperiment.m +++ b/code-experiments/build/matlab/exampleexperiment.m @@ -26,11 +26,15 @@ % choose a test suite and a matching logger, for % example one of the following: % -% bbob 24 unconstrained noiseless single-objective functions -% bbob-biobj 55 unconstrained noiseless bi-objective functions -% bbob-biobj-ext 92 unconstrained noiseless bi-objective functions -% bbob-largescale 24 unconstrained noiseless single-objective functions in large dimensions -% bbob-constrained 48 constrained noiseless single-objective functions +% bbob 24 unconstrained noiseless single-objective functions +% bbob-biobj 55 unconstrained noiseless bi-objective functions +% bbob-biobj-ext 92 unconstrained noiseless bi-objective functions +% bbob-largescale 24 unconstrained noiseless single-objective functions in large dimensions +% [bbob-constrained* 48 constrained noiseless single-objective functions] +% bbob-mixint 24 unconstrained noiseless single-objective functions with mixed-integer variables +% bbob-biobj-mixint 92 unconstrained noiseless bi-objective functions with mixed-integer variables +% +% Suites with a star are partly implemented but not yet fully supported. % suite_name = 'bbob'; observer_name = 'bbob'; @@ -98,6 +102,8 @@ my_optimizer(problem,... cocoProblemGetSmallestValuesOfInterest(problem),... cocoProblemGetLargestValuesOfInterest(problem),... + cocoProblemGetNumberOfIntegerVariables(problem),... + cocoProblemGetNumberOfConstraints(problem),... BUDGET_MULTIPLIER*dimension - doneEvalsBefore); % check whether things went wrong or whether experiment is over: diff --git a/code-experiments/build/matlab/my_optimizer.m b/code-experiments/build/matlab/my_optimizer.m index f5aaf47f3..a98af5e58 100644 --- a/code-experiments/build/matlab/my_optimizer.m +++ b/code-experiments/build/matlab/my_optimizer.m @@ -1,9 +1,13 @@ -function my_optimizer (problem, lower_bounds, upper_bounds, budget) +function my_optimizer (problem, lower_bounds, upper_bounds, num_integer_vars, num_constraints, budget) n = length(lower_bounds); delta = upper_bounds - lower_bounds; for i= 1:budget x = lower_bounds + rand(1,n) .* delta; - if cocoProblemGetNumberOfConstraints(problem) > 0 + % Round the variable values that need to be integer + if num_integer_vars > 0 + x(1:num_integer_vars) = round(x(1:num_integer_vars)); + end + if num_constraints > 0 cocoEvaluateConstraint(problem, x); end cocoEvaluateFunction(problem, x); diff --git a/code-experiments/build/python/cython/interface.c b/code-experiments/build/python/cython/interface.c index 6230e64a6..cab419a1c 100644 --- a/code-experiments/build/python/cython/interface.c +++ b/code-experiments/build/python/cython/interface.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.27.3 */ +/* Generated by Cython 0.28.3 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,7 +7,7 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_27_3" +#define CYTHON_ABI "0_28_3" #define CYTHON_FUTURE_DIVISION 1 #include #ifndef offsetof @@ -183,6 +183,103 @@ #undef BASE #undef MASK #endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int32 uint32_t; + #endif + #endif +#else + #include +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) && __cplusplus >= 201103L + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #elif __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__ ) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) #define Py_OptimizeFlag 0 #endif @@ -211,12 +308,12 @@ #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif -#if PY_VERSION_HEX < 0x030700A0 || !defined(METH_FASTCALL) +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject **args, + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast @@ -228,6 +325,18 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_PYSTON + #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif #if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 #define __Pyx_PyThreadState_Current PyThreadState_GET() #elif PY_VERSION_HEX >= 0x03060000 @@ -237,6 +346,36 @@ #else #define __Pyx_PyThreadState_Current _PyThreadState_Current #endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; // PyThread_create_key reports success always +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif // TSS (Thread Specific Storage) API #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -249,6 +388,11 @@ #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) #endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +#else +#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) +#endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ @@ -293,18 +437,6 @@ #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 @@ -321,6 +453,7 @@ #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact + #define PyObject_Unicode PyObject_Str #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) @@ -332,7 +465,11 @@ #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) +#else + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) +#endif #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type @@ -367,16 +504,10 @@ #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t #endif #if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) + #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods @@ -394,96 +525,6 @@ unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif #if defined(WIN32) || defined(MS_WINDOWS) #define _USE_MATH_DEFINES @@ -520,6 +561,7 @@ static CYTHON_INLINE float __PYX_NAN() { #define __PYX_HAVE__cocoex__interface #define __PYX_HAVE_API__cocoex__interface +/* Early includes */ #include #include #include "numpy/arrayobject.h" @@ -609,7 +651,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); #define __Pyx_PySequence_Tuple(obj)\ @@ -717,7 +759,7 @@ static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } static PyObject *__pyx_m = NULL; static PyObject *__pyx_d; static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime; +static PyObject *__pyx_cython_runtime = NULL; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static PyObject *__pyx_empty_unicode; @@ -792,7 +834,7 @@ typedef struct { } __Pyx_BufFmt_Context; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":743 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":730 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -801,7 +843,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":744 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -810,7 +852,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":745 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -819,7 +861,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":746 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -828,7 +870,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":750 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -837,7 +879,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -846,7 +888,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":739 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -855,7 +897,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":740 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -864,7 +906,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":757 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":744 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -873,7 +915,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":745 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -882,7 +924,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":767 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":754 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -891,7 +933,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":755 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -900,7 +942,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":769 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":756 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -909,7 +951,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -918,7 +960,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":772 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -927,7 +969,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":773 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -936,7 +978,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":775 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -945,7 +987,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":776 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -954,7 +996,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":778 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":765 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -963,7 +1005,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":779 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":766 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -972,7 +1014,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":767 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -1011,7 +1053,7 @@ struct __pyx_obj_6cocoex_9interface_Observer; struct __pyx_obj_6cocoex_9interface_Problem; struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":782 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":769 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -1020,7 +1062,7 @@ struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":770 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -1029,7 +1071,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":784 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":771 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -1038,7 +1080,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":786 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":773 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -1049,7 +1091,7 @@ typedef npy_cdouble __pyx_t_5numpy_complex_t; struct __pyx_opt_args_6cocoex_9interface_Problem_init; struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize; -/* "cython/interface.pyx":496 +/* "cython/interface.pyx":500 * coco_observer_free(self._observer) * * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< @@ -1062,7 +1104,7 @@ struct __pyx_opt_args_6cocoex_9interface_Problem_init { PyObject *suite_name; }; -/* "cython/interface.pyx":526 +/* "cython/interface.pyx":531 * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< @@ -1074,7 +1116,7 @@ struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize { PyObject *free; }; -/* "cython/interface.pyx":79 +/* "cython/interface.pyx":83 * cdef coco_observer_t* _current_observer * * cdef class Suite: # <<<<<<<<<<<<<< @@ -1100,7 +1142,7 @@ struct __pyx_obj_6cocoex_9interface_Suite { }; -/* "cython/interface.pyx":441 +/* "cython/interface.pyx":445 * s is self or s.free() * * cdef class Observer: # <<<<<<<<<<<<<< @@ -1116,7 +1158,7 @@ struct __pyx_obj_6cocoex_9interface_Observer { }; -/* "cython/interface.pyx":505 +/* "cython/interface.pyx":509 * res._suite_name = suite_name * return res._initialize(problem, free) * cdef class Problem: # <<<<<<<<<<<<<< @@ -1136,6 +1178,7 @@ struct __pyx_obj_6cocoex_9interface_Problem { size_t _number_of_variables; size_t _number_of_objectives; size_t _number_of_constraints; + size_t _number_of_integer_variables; PyObject *_suite_name; PyObject *_list_of_observers; PyObject *_problem_index; @@ -1145,7 +1188,7 @@ struct __pyx_obj_6cocoex_9interface_Problem { }; -/* "cython/interface.pyx":414 +/* "cython/interface.pyx":418 * return len(self._indices) * * def __iter__(self): # <<<<<<<<<<<<<< @@ -1164,7 +1207,7 @@ struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ { -/* "cython/interface.pyx":79 +/* "cython/interface.pyx":83 * cdef coco_observer_t* _current_observer * * cdef class Suite: # <<<<<<<<<<<<<< @@ -1178,7 +1221,7 @@ struct __pyx_vtabstruct_6cocoex_9interface_Suite { static struct __pyx_vtabstruct_6cocoex_9interface_Suite *__pyx_vtabptr_6cocoex_9interface_Suite; -/* "cython/interface.pyx":505 +/* "cython/interface.pyx":509 * res._suite_name = suite_name * return res._initialize(problem, free) * cdef class Problem: # <<<<<<<<<<<<<< @@ -1257,16 +1300,7 @@ static struct __pyx_vtabstruct_6cocoex_9interface_Problem *__pyx_vtabptr_6cocoex /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif @@ -1281,20 +1315,46 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type +/* PyCFunctionFastCall.proto */ +#if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); #else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() +#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) #endif -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); +#else +#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) +#endif +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) @@ -1332,32 +1392,6 @@ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ const char* function_name); -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - /* PyObjectCallNoArg.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); @@ -1391,6 +1425,17 @@ static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* s return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); } +/* PyObjectFormatAndDecref.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f); +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObject* f); + +/* IncludeStringH.proto */ +#include + +/* JoinPyUnicode.proto */ +static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char); + /* SaveResetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) @@ -1442,9 +1487,6 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) #endif -/* KeywordStringCheck.proto */ -static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); - /* GetItemInt.proto */ #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ @@ -1467,13 +1509,45 @@ static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, int wraparound, int boundscheck); -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +/* ObjectGetItem.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key); #else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) +#endif + +/* KeywordStringCheck.proto */ +static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); + +/* PyObjectFormat.proto */ +#if CYTHON_USE_UNICODE_WRITER +static PyObject* __Pyx_PyObject_Format(PyObject* s, PyObject* f); +#else +#define __Pyx_PyObject_Format(s, f) PyObject_Format(s, f) +#endif + +/* BuildPyUnicode.proto */ +static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength, + int prepend_sign, char padding_char); + +/* CIntToPyUnicode.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char); + +/* PyUnicode_Unicode.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj); + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) #endif +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) /* SwapException.proto */ #if CYTHON_FAST_THREAD_STATE @@ -1536,9 +1610,6 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, long i (inplace ? PyNumber_InPlaceTrueDivide(op1, op2) : PyNumber_TrueDivide(op1, op2)) #endif -/* IncludeStringH.proto */ -#include - /* BytesEquals.proto */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); @@ -1556,9 +1627,42 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( PyObject** py_start, PyObject** py_stop, PyObject** py_slice, int has_cstart, int has_cstop, int wraparound); +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + /* dict_getitem_default.proto */ static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value); +/* UnpackUnboundCMethod.proto */ +typedef struct { + PyObject *type; + PyObject **method_name; + PyCFunction func; + PyObject *method; + int flag; +} __Pyx_CachedCFunction; + +/* CallUnboundCMethod1.proto */ +static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); +#else +#define __Pyx_CallUnboundCMethod1(cfunc, self, arg) __Pyx__CallUnboundCMethod1(cfunc, self, arg) +#endif + +/* CallUnboundCMethod2.proto */ +static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1 +static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2); +#else +#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2) +#endif + /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace); @@ -1569,23 +1673,13 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, i /* DictGetItem.proto */ #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY -static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { - PyObject *value; - value = PyDict_GetItemWithError(d, key); - if (unlikely(!value)) { - if (!PyErr_Occurred()) { - PyObject* args = PyTuple_Pack(1, key); - if (likely(args)) - PyErr_SetObject(PyExc_KeyError, args); - Py_XDECREF(args); - } - return NULL; - } - Py_INCREF(value); - return value; -} +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); +#define __Pyx_PyObject_Dict_GetItem(obj, name)\ + (likely(PyDict_CheckExact(obj)) ?\ + __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) #else - #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) #endif /* RaiseTooManyValuesToUnpack.proto */ @@ -1597,6 +1691,20 @@ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); /* RaiseNoneIterError.proto */ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); +/* PyObject_GenericGetAttrNoDict.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr +#endif + +/* PyObject_GenericGetAttr.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr +#endif + /* SetVTable.proto */ static int __Pyx_SetVtable(PyObject *dict, void *vtable); @@ -1774,18 +1882,6 @@ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif - /* FetchCommonType.proto */ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); @@ -1804,14 +1900,15 @@ typedef struct { PyObject *gi_name; PyObject *gi_qualname; PyObject *gi_modulename; + PyObject *gi_code; int resume_label; char is_running; } __pyx_CoroutineObject; static __pyx_CoroutineObject *__Pyx__Coroutine_New( - PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *closure, + PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name); static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( - __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *closure, + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name); static int __Pyx_Coroutine_clear(PyObject *self); static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); @@ -1845,8 +1942,8 @@ static int __Pyx_patch_abc(void); #define __Pyx_Generator_USED static PyTypeObject *__pyx_GeneratorType = 0; #define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType) -#define __Pyx_Generator_New(body, closure, name, qualname, module_name)\ - __Pyx__Coroutine_New(__pyx_GeneratorType, body, closure, name, qualname, module_name) +#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\ + __Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name) static PyObject *__Pyx_Generator_Next(PyObject *self); static int __pyx_Generator_init(void); @@ -1930,36 +2027,49 @@ static PyObject *__pyx_builtin_RuntimeError; static PyObject *__pyx_builtin_range; static PyObject *__pyx_builtin_ImportError; static const char __pyx_k_C[] = "C"; +static const char __pyx_k_a[] = ": a "; +static const char __pyx_k_d[] = "d"; static const char __pyx_k_f[] = "_f"; static const char __pyx_k_i[] = "_i"; static const char __pyx_k_s[] = "s"; static const char __pyx_k_u[] = "u'"; static const char __pyx_k_x[] = "x"; static const char __pyx_k_y[] = "y"; +static const char __pyx_k_If[] = ".\nIf "; static const char __pyx_k__2[] = ""; +static const char __pyx_k__8[] = ", "; +static const char __pyx_k__9[] = ")"; static const char __pyx_k_bi[] = "bi"; static const char __pyx_k_id[] = "id"; static const char __pyx_k_np[] = "np"; -static const char __pyx_k__10[] = ","; +static const char __pyx_k__10[] = "\", \""; static const char __pyx_k__11[] = " "; -static const char __pyx_k__13[] = "'"; -static const char __pyx_k__14[] = "\""; -static const char __pyx_k__15[] = "{"; -static const char __pyx_k__16[] = "}"; -static const char __pyx_k__23[] = "_"; +static const char __pyx_k__12[] = "="; +static const char __pyx_k__15[] = ","; +static const char __pyx_k__17[] = "'"; +static const char __pyx_k__18[] = "\""; +static const char __pyx_k__19[] = "{"; +static const char __pyx_k__20[] = "}"; +static const char __pyx_k__27[] = "_"; +static const char __pyx_k__31[] = "\")"; +static const char __pyx_k__32[] = "<"; +static const char __pyx_k__34[] = ">"; static const char __pyx_k_all[] = "all"; -static const char __pyx_k_d_d[] = "%d=%d"; +static const char __pyx_k_and[] = "and"; static const char __pyx_k_get[] = "get"; static const char __pyx_k_inf[] = "inf"; static const char __pyx_k_max[] = "max"; static const char __pyx_k_min[] = "min"; static const char __pyx_k_sys[] = "sys"; static const char __pyx_k_u_2[] = "u\""; +static const char __pyx_k_None[] = "None"; static const char __pyx_k_args[] = "args"; static const char __pyx_k_bbob[] = "bbob"; static const char __pyx_k_copy[] = "copy"; static const char __pyx_k_find[] = "find"; static const char __pyx_k_free[] = "free"; +static const char __pyx_k_id_2[] = " id="; +static const char __pyx_k_id_3[] = "(), id="; static const char __pyx_k_iter[] = "__iter__"; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_name[] = "name"; @@ -1969,6 +2079,8 @@ static const char __pyx_k_send[] = "send"; static const char __pyx_k_size[] = "size"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_what[] = "what"; +static const char __pyx_k_with[] = "\") with "; +static const char __pyx_k_Suite[] = "Suite("; static const char __pyx_k_array[] = "array"; static const char __pyx_k_ascii[] = "ascii"; static const char __pyx_k_class[] = "__class__"; @@ -1994,13 +2106,17 @@ static const char __pyx_k_import[] = "__import__"; static const char __pyx_k_name_2[] = "__name__"; static const char __pyx_k_random[] = "random"; static const char __pyx_k_reduce[] = "__reduce__"; -static const char __pyx_k_s_id_r[] = "<%s(), id=%r>"; static const char __pyx_k_single[] = "single"; +static const char __pyx_k_with_2[] = " with "; +static const char __pyx_k_with_3[] = "with"; +static const char __pyx_k_Suite_2[] = "Suite(\""; static const char __pyx_k_asarray[] = "asarray"; static const char __pyx_k_dealloc[] = "__dealloc__"; +static const char __pyx_k_index_2[] = ", index="; static const char __pyx_k_indices[] = "indices"; static const char __pyx_k_level_2[] = "_level"; static const char __pyx_k_options[] = "options"; +static const char __pyx_k_problem[] = " problem"; static const char __pyx_k_replace[] = "replace"; static const char __pyx_k_verbose[] = "verbose"; static const char __pyx_k_warning[] = "warning"; @@ -2008,29 +2124,33 @@ static const char __pyx_k_function[] = "function"; static const char __pyx_k_getstate[] = "__getstate__"; static const char __pyx_k_instance[] = "instance"; static const char __pyx_k_observer[] = "observer"; +static const char __pyx_k_of_suite[] = " of suite \""; static const char __pyx_k_parse_id[] = "_parse_id"; static const char __pyx_k_setstate[] = "__setstate__"; static const char __pyx_k_TypeError[] = "TypeError"; static const char __pyx_k_dimension[] = "dimension"; static const char __pyx_k_enumerate[] = "enumerate"; static const char __pyx_k_log_level[] = "log_level"; +static const char __pyx_k_problem_2[] = " (problem "; static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; static const char __pyx_k_traceback[] = "traceback"; +static const char __pyx_k_with_name[] = "\" with name \""; static const char __pyx_k_ValueError[] = "ValueError"; static const char __pyx_k_bbob_biobj[] = "bbob-biobj"; +static const char __pyx_k_constraint[] = " constraint"; static const char __pyx_k_dimensions[] = "dimensions"; static const char __pyx_k_evaluation[] = "evaluation"; static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; static const char __pyx_k_suite_name[] = "suite_name"; static const char __pyx_k_ImportError[] = "ImportError"; -static const char __pyx_k_Suite_r_r_r[] = "Suite(%r, %r, %r)"; +static const char __pyx_k_bbob_mixint[] = "bbob-mixint"; static const char __pyx_k_deactivated[] = "deactivated"; static const char __pyx_k_get_problem[] = "get_problem"; static const char __pyx_k_initialized[] = "initialized"; static const char __pyx_k_s_objective[] = "%s-objective"; static const char __pyx_k_RuntimeError[] = "RuntimeError"; static const char __pyx_k_Suite___iter[] = "Suite.__iter__"; -static const char __pyx_k_id_s_index_d[] = " id=%s, index=%d"; +static const char __pyx_k_in_dimension[] = " in dimension"; static const char __pyx_k_lower_bounds[] = "lower_bounds"; static const char __pyx_k_next_problem[] = "next_problem"; static const char __pyx_k_observe_with[] = "observe_with"; @@ -2048,33 +2168,35 @@ static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; static const char __pyx_k_bbob_constrained[] = "bbob-constrained"; static const char __pyx_k_cocoex_interface[] = "cocoex.interface"; static const char __pyx_k_initial_solution[] = "initial_solution"; +static const char __pyx_k_integer_variable[] = " integer variable"; +static const char __pyx_k_bbob_biobj_mixint[] = "bbob-biobj-mixint"; static const char __pyx_k_cocoex_exceptions[] = "cocoex.exceptions"; static const char __pyx_k_known_suite_names[] = "known_suite_names"; -static const char __pyx_k_Suite_ids_line_295[] = "Suite.ids (line 295)"; +static const char __pyx_k_Suite_ids_line_299[] = "Suite.ids (line 299)"; static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; static const char __pyx_k_NotImplementedError[] = "NotImplementedError"; static const char __pyx_k_known_suite_names_2[] = "_known_suite_names"; static const char __pyx_k_number_of_variables[] = "number_of_variables"; -static const char __pyx_k_with_d_constraint_s[] = " with %d constraint%s"; static const char __pyx_k_NoSuchSuiteException[] = "NoSuchSuiteException"; static const char __pyx_k_cython_interface_pyx[] = "cython\\interface.pyx"; static const char __pyx_k_final_target_fvalue1[] = "final_target_fvalue1"; static const char __pyx_k_number_of_objectives[] = "number_of_objectives"; +static const char __pyx_k_Known_suite_names_are[] = ".\nKnown suite names are "; static const char __pyx_k_expect_a_string_got_s[] = "expect a string, got %s"; static const char __pyx_k_number_of_constraints[] = "number_of_constraints"; static const char __pyx_k_NoSuchProblemException[] = "NoSuchProblemException"; static const char __pyx_k_InvalidProblemException[] = "InvalidProblemException"; static const char __pyx_k_finalized_invalid_problem[] = "finalized/invalid problem"; static const char __pyx_k_No_suite_with_name_s_found[] = "No suite with name '%s' found"; -static const char __pyx_k_Suite_get_problem_line_191[] = "Suite.get_problem (line 191)"; +static const char __pyx_k_Suite_get_problem_line_195[] = "Suite.get_problem (line 195)"; static const char __pyx_k_Problem_already_initialized[] = "Problem already initialized"; +static const char __pyx_k_Unkown_benchmark_suite_name[] = "\nUnkown benchmark suite name "; static const char __pyx_k_finalized_invalid_problem_2[] = ""; static const char __pyx_k_function_dimension_instance[] = "function: {}, dimension: {}, instance: {}"; static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous"; -static const char __pyx_k_s_a_s_s_problem_s_problem_d_of[] = "%s: a %s %s problem%s (problem %d of suite \"%s\" with name \"%s\")"; +static const char __pyx_k_number_of_integer_variables[] = "number_of_integer_variables"; static const char __pyx_k_update_current_observer_global[] = "_update_current_observer_global"; -static const char __pyx_k_Suite_s_s_s_with_d_problem_s_in[] = "Suite(\"%s\", \"%s\", \"%s\") with %d problem%s in dimension%s %s"; -static const char __pyx_k_Unkown_benchmark_suite_name_s_K[] = "\nUnkown benchmark suite name %s.\nKnown suite names are %s.\nIf %s was not a typo, you can add the desired name to `known_suite_names`::\n\n >> import cocoex as ex\n >> ex.known_suite_names.append(b\"my_name\") # must be a byte string\n >> suite = ex.Suite(\"my_name\", \"\", \"\")\n COCO FATAL ERROR: coco_suite(): unknow problem suite\n\nThis will crash Python, if the suite \"my_name\" does in fact not exist. You might\nalso report back a missing name to https://github.com/numbbo/coco/issues\n"; +static const char __pyx_k_was_not_a_typo_you_can_add_the[] = " was not a typo, you can add the desired name to `known_suite_names`::\n\n >> import cocoex as ex\n >> ex.known_suite_names.append(b\"my_name\") # must be a byte string\n >> suite = ex.Suite(\"my_name\", \"\", \"\")\n COCO FATAL ERROR: coco_suite(): unknow problem suite\n\nThis will crash Python, if the suite \"my_name\" does in fact not exist. You might\nalso report back a missing name to https://github.com/numbbo/coco/issues\n"; static const char __pyx_k_find_problem_ids_has_been_renam[] = "`find_problem_ids()` has been renamed to `ids()`"; static const char __pyx_k_get_problem_self_id_observer_No[] = "`get_problem(self, id, observer=None)` returns a `Problem` instance,\n by default unobserved, using `id: str` or index (where `id: int`) to\n identify the desired problem.\n\n All values between zero and `len(self) - 1` are valid index values::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> for index in range(len(suite)):\n ... problem = suite.get_problem(index)\n ... # work work work using problem\n ... problem.free()\n\n A shortcut for `suite.get_problem(index)` is `suite[index]`, they are\n synonym.\n\n Details:\n - Here an `index` takes values between 0 and `len(self) - 1` and can in\n principle be different from the problem index in the benchmark suite.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of `get_problem`. Otherwise Python\n might just silently die, which is e.g. a known issue of the \"bbob\"\n observer.\n\n See also `ids`, `get_problem_by_function_dimension_instance`.\n "; static const char __pyx_k_has_never_been_tested_incomment[] = "has never been tested, incomment this to start testing"; @@ -2086,8 +2208,8 @@ static const char __pyx_k_Dimension_np_size_x_d_of_input_x[] = "Dimension, `np.s static const char __pyx_k_Dimension_np_size_y_d_of_input_y[] = "Dimension, `np.size(y)==%d`, of input `y` does "; static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd"; static const char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported"; -static const char __pyx_k_Suite_current_index___get___line[] = "Suite.current_index.__get__ (line 348)"; -static const char __pyx_k_Suite_get_problem_by_function_di[] = "Suite.get_problem_by_function_dimension_instance (line 235)"; +static const char __pyx_k_Suite_current_index___get___line[] = "Suite.current_index.__get__ (line 352)"; +static const char __pyx_k_Suite_get_problem_by_function_di[] = "Suite.get_problem_by_function_dimension_instance (line 239)"; static const char __pyx_k_Suite_has_been_finalized_free_ed[] = "Suite has been finalized/free'ed"; static const char __pyx_k_cannot_deduce_function_id_from_s[] = "cannot deduce function id from '%s'"; static const char __pyx_k_cannot_deduce_instance_id_from_s[] = "cannot deduce instance id from '%s'"; @@ -2104,35 +2226,47 @@ static PyObject *__pyx_kp_u_Dimension_np_size_x_d_of_input_x; static PyObject *__pyx_kp_u_Dimension_np_size_y_d_of_input_y; static PyObject *__pyx_kp_u_Format_string_allocated_too_shor; static PyObject *__pyx_kp_u_Format_string_allocated_too_shor_2; +static PyObject *__pyx_kp_u_If; static PyObject *__pyx_n_s_ImportError; static PyObject *__pyx_n_s_InvalidProblemException; +static PyObject *__pyx_kp_u_Known_suite_names_are; static PyObject *__pyx_n_s_NoSuchProblemException; static PyObject *__pyx_n_s_NoSuchSuiteException; static PyObject *__pyx_kp_u_No_suite_with_name_s_found; static PyObject *__pyx_kp_u_Non_native_byte_order_not_suppor; +static PyObject *__pyx_kp_u_None; static PyObject *__pyx_n_s_NotImplementedError; static PyObject *__pyx_kp_u_Problem_already_initialized; static PyObject *__pyx_n_s_RuntimeError; +static PyObject *__pyx_kp_u_Suite; +static PyObject *__pyx_kp_u_Suite_2; static PyObject *__pyx_n_s_Suite___iter; static PyObject *__pyx_kp_u_Suite_current_index___get___line; static PyObject *__pyx_kp_u_Suite_get_problem_by_function_di; -static PyObject *__pyx_kp_u_Suite_get_problem_line_191; +static PyObject *__pyx_kp_u_Suite_get_problem_line_195; static PyObject *__pyx_kp_u_Suite_has_been_finalized_free_ed; -static PyObject *__pyx_kp_u_Suite_ids_line_295; -static PyObject *__pyx_kp_u_Suite_r_r_r; -static PyObject *__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in; +static PyObject *__pyx_kp_u_Suite_ids_line_299; static PyObject *__pyx_n_s_TypeError; -static PyObject *__pyx_kp_u_Unkown_benchmark_suite_name_s_K; +static PyObject *__pyx_kp_u_Unkown_benchmark_suite_name; static PyObject *__pyx_n_s_ValueError; static PyObject *__pyx_kp_u__10; static PyObject *__pyx_kp_u__11; -static PyObject *__pyx_kp_u__13; -static PyObject *__pyx_kp_u__14; +static PyObject *__pyx_kp_u__12; static PyObject *__pyx_kp_u__15; -static PyObject *__pyx_kp_u__16; +static PyObject *__pyx_kp_u__17; +static PyObject *__pyx_kp_u__18; +static PyObject *__pyx_kp_u__19; static PyObject *__pyx_kp_u__2; -static PyObject *__pyx_n_u__23; +static PyObject *__pyx_kp_u__20; +static PyObject *__pyx_n_u__27; +static PyObject *__pyx_kp_u__31; +static PyObject *__pyx_kp_u__32; +static PyObject *__pyx_kp_u__34; +static PyObject *__pyx_kp_u__8; +static PyObject *__pyx_kp_u__9; +static PyObject *__pyx_kp_u_a; static PyObject *__pyx_n_s_all; +static PyObject *__pyx_n_u_and; static PyObject *__pyx_n_s_append; static PyObject *__pyx_n_s_args; static PyObject *__pyx_n_s_array; @@ -2141,8 +2275,10 @@ static PyObject *__pyx_n_u_ascii; static PyObject *__pyx_n_u_bbob; static PyObject *__pyx_kp_u_bbob_biobj; static PyObject *__pyx_kp_u_bbob_biobj_ext; +static PyObject *__pyx_kp_u_bbob_biobj_mixint; static PyObject *__pyx_kp_u_bbob_constrained; static PyObject *__pyx_kp_u_bbob_largescale; +static PyObject *__pyx_kp_u_bbob_mixint; static PyObject *__pyx_n_u_bi; static PyObject *__pyx_kp_u_cannot_deduce_function_id_from_s; static PyObject *__pyx_kp_u_cannot_deduce_instance_id_from_s; @@ -2151,9 +2287,10 @@ static PyObject *__pyx_n_s_cline_in_traceback; static PyObject *__pyx_n_s_close; static PyObject *__pyx_n_s_cocoex_exceptions; static PyObject *__pyx_n_s_cocoex_interface; +static PyObject *__pyx_kp_u_constraint; static PyObject *__pyx_n_s_copy; static PyObject *__pyx_kp_s_cython_interface_pyx; -static PyObject *__pyx_kp_u_d_d; +static PyObject *__pyx_n_u_d; static PyObject *__pyx_kp_u_d_dimensional; static PyObject *__pyx_n_u_deactivated; static PyObject *__pyx_n_s_dealloc; @@ -2185,17 +2322,21 @@ static PyObject *__pyx_n_s_getstate; static PyObject *__pyx_kp_u_has_never_been_tested_incomment; static PyObject *__pyx_n_u_i; static PyObject *__pyx_n_s_id; -static PyObject *__pyx_kp_u_id_s_index_d; +static PyObject *__pyx_kp_u_id_2; +static PyObject *__pyx_kp_u_id_3; static PyObject *__pyx_kp_u_ids_id_snippets_get_problem_Fal; static PyObject *__pyx_n_s_import; static PyObject *__pyx_kp_u_in_Problem__initialize_problem_p; +static PyObject *__pyx_kp_u_in_dimension; static PyObject *__pyx_n_s_index; +static PyObject *__pyx_kp_u_index_2; static PyObject *__pyx_kp_u_index_in_the_enumerator_of_all_p; static PyObject *__pyx_n_s_indices; static PyObject *__pyx_n_s_inf; static PyObject *__pyx_n_s_initial_solution; static PyObject *__pyx_n_u_initialized; static PyObject *__pyx_n_s_instance; +static PyObject *__pyx_kp_u_integer_variable; static PyObject *__pyx_n_s_iter; static PyObject *__pyx_n_s_known_suite_names; static PyObject *__pyx_n_s_known_suite_names_2; @@ -2216,6 +2357,7 @@ static PyObject *__pyx_kp_u_not_match_the_number_of_objectiv; static PyObject *__pyx_kp_u_not_match_the_problem_dimension; static PyObject *__pyx_n_s_np; static PyObject *__pyx_n_s_number_of_constraints; +static PyObject *__pyx_n_s_number_of_integer_variables; static PyObject *__pyx_n_s_number_of_objectives; static PyObject *__pyx_n_s_number_of_variables; static PyObject *__pyx_n_s_numpy; @@ -2223,12 +2365,15 @@ static PyObject *__pyx_kp_u_numpy_core_multiarray_failed_to; static PyObject *__pyx_kp_u_numpy_core_umath_failed_to_impor; static PyObject *__pyx_n_s_observe_with; static PyObject *__pyx_n_s_observer; +static PyObject *__pyx_kp_u_of_suite; static PyObject *__pyx_n_s_ones; static PyObject *__pyx_n_s_options; static PyObject *__pyx_n_s_order; static PyObject *__pyx_n_s_parse_id; static PyObject *__pyx_n_s_print; static PyObject *__pyx_n_u_print; +static PyObject *__pyx_kp_u_problem; +static PyObject *__pyx_kp_u_problem_2; static PyObject *__pyx_n_s_pyx_vtable; static PyObject *__pyx_n_s_rand; static PyObject *__pyx_n_s_random; @@ -2241,8 +2386,6 @@ static PyObject *__pyx_n_s_reset; static PyObject *__pyx_n_s_restart_number; static PyObject *__pyx_kp_u_returns_a_Problem_instance_by_de; static PyObject *__pyx_n_u_s; -static PyObject *__pyx_kp_u_s_a_s_s_problem_s_problem_d_of; -static PyObject *__pyx_kp_u_s_id_r; static PyObject *__pyx_kp_u_s_objective; static PyObject *__pyx_n_s_send; static PyObject *__pyx_n_s_setstate; @@ -2265,8 +2408,12 @@ static PyObject *__pyx_n_s_update_current_observer_global; static PyObject *__pyx_n_s_upper_bounds; static PyObject *__pyx_n_s_verbose; static PyObject *__pyx_n_u_warning; +static PyObject *__pyx_kp_u_was_not_a_typo_you_can_add_the; static PyObject *__pyx_n_s_what; -static PyObject *__pyx_kp_u_with_d_constraint_s; +static PyObject *__pyx_kp_u_with; +static PyObject *__pyx_kp_u_with_2; +static PyObject *__pyx_n_u_with_3; +static PyObject *__pyx_kp_u_with_name; static PyObject *__pyx_n_s_x; static PyObject *__pyx_n_s_y; static PyObject *__pyx_n_s_zeros; @@ -2322,6 +2469,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27number_of_integer_variables___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self); /* proto */ @@ -2354,6 +2502,7 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Suite(PyTypeObject *t, PyObject static PyObject *__pyx_tp_new_6cocoex_9interface_Observer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_6cocoex_9interface_Problem(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_6cocoex_9interface___pyx_scope_struct____iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get = {0, &__pyx_n_s_get, 0, 0, 0}; static PyObject *__pyx_float_1_0; static PyObject *__pyx_int_0; static PyObject *__pyx_int_1; @@ -2366,35 +2515,36 @@ static PyObject *__pyx_tuple__4; static PyObject *__pyx_tuple__5; static PyObject *__pyx_tuple__6; static PyObject *__pyx_tuple__7; -static PyObject *__pyx_tuple__8; -static PyObject *__pyx_tuple__9; -static PyObject *__pyx_slice__27; -static PyObject *__pyx_tuple__12; -static PyObject *__pyx_tuple__17; -static PyObject *__pyx_tuple__18; -static PyObject *__pyx_tuple__19; -static PyObject *__pyx_tuple__20; +static PyObject *__pyx_slice__33; +static PyObject *__pyx_tuple__13; +static PyObject *__pyx_tuple__14; +static PyObject *__pyx_tuple__16; static PyObject *__pyx_tuple__21; static PyObject *__pyx_tuple__22; +static PyObject *__pyx_tuple__23; static PyObject *__pyx_tuple__24; static PyObject *__pyx_tuple__25; static PyObject *__pyx_tuple__26; static PyObject *__pyx_tuple__28; static PyObject *__pyx_tuple__29; static PyObject *__pyx_tuple__30; -static PyObject *__pyx_tuple__31; -static PyObject *__pyx_tuple__32; -static PyObject *__pyx_tuple__33; -static PyObject *__pyx_tuple__34; static PyObject *__pyx_tuple__35; static PyObject *__pyx_tuple__36; static PyObject *__pyx_tuple__37; static PyObject *__pyx_tuple__38; static PyObject *__pyx_tuple__39; -static PyObject *__pyx_codeobj__40; - -/* "cython/interface.pyx":69 - * void bbob_problem_best_parameter_print(const coco_problem_t *problem) +static PyObject *__pyx_tuple__40; +static PyObject *__pyx_tuple__41; +static PyObject *__pyx_tuple__42; +static PyObject *__pyx_tuple__43; +static PyObject *__pyx_tuple__44; +static PyObject *__pyx_tuple__45; +static PyObject *__pyx_tuple__46; +static PyObject *__pyx_codeobj__47; +/* Late includes */ + +/* "cython/interface.pyx":73 + * void bbob_biobj_problem_best_parameter_print(const coco_problem_t *problem) * * cdef bytes _bstring(s): # <<<<<<<<<<<<<< * if type(s) is bytes: @@ -2411,7 +2561,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("_bstring", 0); - /* "cython/interface.pyx":70 + /* "cython/interface.pyx":74 * * cdef bytes _bstring(s): * if type(s) is bytes: # <<<<<<<<<<<<<< @@ -2422,7 +2572,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":71 + /* "cython/interface.pyx":75 * cdef bytes _bstring(s): * if type(s) is bytes: * return s # <<<<<<<<<<<<<< @@ -2434,7 +2584,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { __pyx_r = ((PyObject*)__pyx_v_s); goto __pyx_L0; - /* "cython/interface.pyx":70 + /* "cython/interface.pyx":74 * * cdef bytes _bstring(s): * if type(s) is bytes: # <<<<<<<<<<<<<< @@ -2443,7 +2593,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { */ } - /* "cython/interface.pyx":72 + /* "cython/interface.pyx":76 * if type(s) is bytes: * return s * if isinstance(s, (str, unicode)): # <<<<<<<<<<<<<< @@ -2462,9 +2612,9 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { __pyx_t_2 = __pyx_t_1; __pyx_L5_bool_binop_done:; __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { + if (likely(__pyx_t_1)) { - /* "cython/interface.pyx":73 + /* "cython/interface.pyx":77 * return s * if isinstance(s, (str, unicode)): * return s.encode('ascii') # why not s.encode('ascii') ? # <<<<<<<<<<<<<< @@ -2472,17 +2622,17 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * raise TypeError("expect a string, got %s" % str(type(s))) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 73, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 73, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 73, __pyx_L1_error) + if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 77, __pyx_L1_error) __pyx_r = ((PyObject*)__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L0; - /* "cython/interface.pyx":72 + /* "cython/interface.pyx":76 * if type(s) is bytes: * return s * if isinstance(s, (str, unicode)): # <<<<<<<<<<<<<< @@ -2491,7 +2641,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { */ } - /* "cython/interface.pyx":75 + /* "cython/interface.pyx":79 * return s.encode('ascii') # why not s.encode('ascii') ? * else: * raise TypeError("expect a string, got %s" % str(type(s))) # <<<<<<<<<<<<<< @@ -2499,32 +2649,21 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * cdef coco_observer_t* _current_observer */ /*else*/ { - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), ((PyObject *)Py_TYPE(__pyx_v_s))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_s))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_s))); - PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)Py_TYPE(__pyx_v_s))); - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_expect_a_string_got_s, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_expect_a_string_got_s, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 75, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 75, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(0, 75, __pyx_L1_error) + __PYX_ERR(0, 79, __pyx_L1_error) } - /* "cython/interface.pyx":69 - * void bbob_problem_best_parameter_print(const coco_problem_t *problem) + /* "cython/interface.pyx":73 + * void bbob_biobj_problem_best_parameter_print(const coco_problem_t *problem) * * cdef bytes _bstring(s): # <<<<<<<<<<<<<< * if type(s) is bytes: @@ -2543,7 +2682,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { return __pyx_r; } -/* "cython/interface.pyx":95 +/* "cython/interface.pyx":99 * cdef initialized * * def __cinit__(self, suite_name, suite_instance, suite_options): # <<<<<<<<<<<<<< @@ -2579,23 +2718,23 @@ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_name)) != 0)) kw_args--; + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_suite_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_instance)) != 0)) kw_args--; + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_suite_instance)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(0, 95, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(0, 99, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: - if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_options)) != 0)) kw_args--; + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_suite_options)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(0, 95, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(0, 99, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 95, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 99, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -2610,7 +2749,7 @@ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 95, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 99, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -2631,14 +2770,14 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("__cinit__", 0); - /* "cython/interface.pyx":97 + /* "cython/interface.pyx":101 * def __cinit__(self, suite_name, suite_instance, suite_options): * cdef np.npy_intp shape[1] # probably completely useless * self._name = _bstring(suite_name) # <<<<<<<<<<<<<< * self._instance = _bstring(suite_instance if suite_instance is not None else "") * self._options = _bstring(suite_options if suite_options is not None else "") */ - __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_suite_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) + __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_suite_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_name); @@ -2646,7 +2785,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __pyx_v_self->_name = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":98 + /* "cython/interface.pyx":102 * cdef np.npy_intp shape[1] # probably completely useless * self._name = _bstring(suite_name) * self._instance = _bstring(suite_instance if suite_instance is not None else "") # <<<<<<<<<<<<<< @@ -2661,7 +2800,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_1 = __pyx_kp_u__2; } - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 98, __pyx_L1_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_3); @@ -2670,7 +2809,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __pyx_v_self->_instance = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":99 + /* "cython/interface.pyx":103 * self._name = _bstring(suite_name) * self._instance = _bstring(suite_instance if suite_instance is not None else "") * self._options = _bstring(suite_options if suite_options is not None else "") # <<<<<<<<<<<<<< @@ -2685,7 +2824,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_3 = __pyx_kp_u__2; } - __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error) + __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_1); @@ -2694,7 +2833,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __pyx_v_self->_options = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":100 + /* "cython/interface.pyx":104 * self._instance = _bstring(suite_instance if suite_instance is not None else "") * self._options = _bstring(suite_options if suite_options is not None else "") * self._current_problem = NULL # <<<<<<<<<<<<<< @@ -2703,7 +2842,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex */ __pyx_v_self->_current_problem = NULL; - /* "cython/interface.pyx":101 + /* "cython/interface.pyx":105 * self._options = _bstring(suite_options if suite_options is not None else "") * self._current_problem = NULL * self.current_problem_ = None # <<<<<<<<<<<<<< @@ -2716,7 +2855,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_DECREF(__pyx_v_self->current_problem_); __pyx_v_self->current_problem_ = Py_None; - /* "cython/interface.pyx":102 + /* "cython/interface.pyx":106 * self._current_problem = NULL * self.current_problem_ = None * self._current_index = None # <<<<<<<<<<<<<< @@ -2729,7 +2868,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_DECREF(__pyx_v_self->_current_index); __pyx_v_self->_current_index = Py_None; - /* "cython/interface.pyx":103 + /* "cython/interface.pyx":107 * self.current_problem_ = None * self._current_index = None * self.initialized = False # <<<<<<<<<<<<<< @@ -2742,18 +2881,18 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_False; - /* "cython/interface.pyx":104 + /* "cython/interface.pyx":108 * self._current_index = None * self.initialized = False * self._initialize() # <<<<<<<<<<<<<< * assert self.initialized * cdef _initialize(self): */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Suite *)__pyx_v_self->__pyx_vtab)->_initialize(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Suite *)__pyx_v_self->__pyx_vtab)->_initialize(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":105 + /* "cython/interface.pyx":109 * self.initialized = False * self._initialize() * assert self.initialized # <<<<<<<<<<<<<< @@ -2762,15 +2901,15 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 105, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 109, __pyx_L1_error) if (unlikely(!__pyx_t_2)) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 105, __pyx_L1_error) + __PYX_ERR(0, 109, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":95 + /* "cython/interface.pyx":99 * cdef initialized * * def __cinit__(self, suite_name, suite_instance, suite_options): # <<<<<<<<<<<<<< @@ -2791,7 +2930,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex return __pyx_r; } -/* "cython/interface.pyx":106 +/* "cython/interface.pyx":110 * self._initialize() * assert self.initialized * cdef _initialize(self): # <<<<<<<<<<<<<< @@ -2813,38 +2952,39 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ Py_ssize_t __pyx_t_5; PyObject *(*__pyx_t_6)(PyObject *); int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; + Py_UCS4 __pyx_t_8; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; PyObject *__pyx_t_12 = NULL; - char const *__pyx_t_13; + PyObject *__pyx_t_13 = NULL; char const *__pyx_t_14; char const *__pyx_t_15; - PyObject *__pyx_t_16 = NULL; + char const *__pyx_t_16; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; - int __pyx_t_19; + PyObject *__pyx_t_19 = NULL; + int __pyx_t_20; __Pyx_RefNannySetupContext("_initialize", 0); - /* "cython/interface.pyx":114 + /* "cython/interface.pyx":118 * cdef bytes _old_level * * if self.initialized: # <<<<<<<<<<<<<< * self.reset() * self._ids = [] */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 114, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 118, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":115 + /* "cython/interface.pyx":119 * * if self.initialized: * self.reset() # <<<<<<<<<<<<<< * self._ids = [] * self._indices = [] */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 115, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -2857,16 +2997,16 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":114 + /* "cython/interface.pyx":118 * cdef bytes _old_level * * if self.initialized: # <<<<<<<<<<<<<< @@ -2875,14 +3015,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":116 + /* "cython/interface.pyx":120 * if self.initialized: * self.reset() * self._ids = [] # <<<<<<<<<<<<<< * self._indices = [] * self._names = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_ids); @@ -2890,14 +3030,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_ids = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":117 + /* "cython/interface.pyx":121 * self.reset() * self._ids = [] * self._indices = [] # <<<<<<<<<<<<<< * self._names = [] * self._dimensions = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_indices); @@ -2905,14 +3045,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_indices = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":118 + /* "cython/interface.pyx":122 * self._ids = [] * self._indices = [] * self._names = [] # <<<<<<<<<<<<<< * self._dimensions = [] * self._number_of_objectives = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_names); @@ -2920,14 +3060,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_names = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":119 + /* "cython/interface.pyx":123 * self._indices = [] * self._names = [] * self._dimensions = [] # <<<<<<<<<<<<<< * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_dimensions); @@ -2935,14 +3075,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_dimensions = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":120 + /* "cython/interface.pyx":124 * self._names = [] * self._dimensions = [] * self._number_of_objectives = [] # <<<<<<<<<<<<<< * if self._name not in [_bstring(name) for name in known_suite_names]: * raise NoSuchSuiteException(""" */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_number_of_objectives); @@ -2950,24 +3090,24 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_number_of_objectives = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":121 + /* "cython/interface.pyx":125 * self._dimensions = [] * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: # <<<<<<<<<<<<<< * raise NoSuchSuiteException(""" * Unkown benchmark suite name %s. */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { - __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { @@ -2975,17 +3115,17 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 125, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 125, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } @@ -2995,7 +3135,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 121, __pyx_L1_error) + else __PYX_ERR(0, 125, __pyx_L1_error) } break; } @@ -3003,109 +3143,143 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 121, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_self->_name, __pyx_t_2, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_self->_name, __pyx_t_2, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = (__pyx_t_1 != 0); - if (__pyx_t_7) { + if (unlikely(__pyx_t_7)) { - /* "cython/interface.pyx":122 + /* "cython/interface.pyx":126 * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: * raise NoSuchSuiteException(""" # <<<<<<<<<<<<<< * Unkown benchmark suite name %s. * Known suite names are %s. */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 126, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyTuple_New(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = 0; + __pyx_t_8 = 127; + __Pyx_INCREF(__pyx_kp_u_Unkown_benchmark_suite_name); + __pyx_t_5 += 29; + __Pyx_GIVEREF(__pyx_kp_u_Unkown_benchmark_suite_name); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_Unkown_benchmark_suite_name); - /* "cython/interface.pyx":134 + /* "cython/interface.pyx":138 * This will crash Python, if the suite "my_name" does in fact not exist. You might * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) # <<<<<<<<<<<<<< * try: * suite = coco_suite(self._name, self._instance, self._options) */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 134, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 134, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_INCREF(__pyx_v_self->_name); - __Pyx_GIVEREF(__pyx_v_self->_name); - PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_self->_name); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3); - __Pyx_INCREF(__pyx_v_self->_name); - __Pyx_GIVEREF(__pyx_v_self->_name); - PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_self->_name); - __pyx_t_3 = 0; - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Unkown_benchmark_suite_name_s_K, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = NULL; + __pyx_t_9 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_v_self->_name), __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_8; + __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_9); + __pyx_t_9 = 0; + __Pyx_INCREF(__pyx_kp_u_Known_suite_names_are); + __pyx_t_5 += 24; + __Pyx_GIVEREF(__pyx_kp_u_Known_suite_names_are); + PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u_Known_suite_names_are); + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_10), __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_8; + __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_9); + __pyx_t_9 = 0; + __Pyx_INCREF(__pyx_kp_u_If); + __pyx_t_5 += 5; + __Pyx_GIVEREF(__pyx_kp_u_If); + PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_kp_u_If); + __pyx_t_9 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_v_self->_name), __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_8; + __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_t_9); + __pyx_t_9 = 0; + __Pyx_INCREF(__pyx_kp_u_was_not_a_typo_you_can_add_the); + __pyx_t_5 += 442; + __Pyx_GIVEREF(__pyx_kp_u_was_not_a_typo_you_can_add_the); + PyTuple_SET_ITEM(__pyx_t_3, 6, __pyx_kp_u_was_not_a_typo_you_can_add_the); + + /* "cython/interface.pyx":126 + * self._number_of_objectives = [] + * if self._name not in [_bstring(name) for name in known_suite_names]: + * raise NoSuchSuiteException(""" # <<<<<<<<<<<<<< + * Unkown benchmark suite name %s. + * Known suite names are %s. + */ + __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_3, 7, __pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_8)) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } - if (!__pyx_t_8) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (!__pyx_t_3) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_9}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_9}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 122, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_9); + __pyx_t_9 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 122, __pyx_L1_error) + __PYX_ERR(0, 126, __pyx_L1_error) - /* "cython/interface.pyx":121 + /* "cython/interface.pyx":125 * self._dimensions = [] * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: # <<<<<<<<<<<<<< @@ -3114,7 +3288,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":135 + /* "cython/interface.pyx":139 * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) * try: # <<<<<<<<<<<<<< @@ -3124,13 +3298,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_10); + __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_13); /*try:*/ { - /* "cython/interface.pyx":136 + /* "cython/interface.pyx":140 * """ % (self._name, str(known_suite_names), self._name)) * try: * suite = coco_suite(self._name, self._instance, self._options) # <<<<<<<<<<<<<< @@ -3139,22 +3313,22 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ if (unlikely(__pyx_v_self->_name == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 136, __pyx_L7_error) + __PYX_ERR(0, 140, __pyx_L7_error) } - __pyx_t_13 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 136, __pyx_L7_error) + __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 140, __pyx_L7_error) if (unlikely(__pyx_v_self->_instance == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 136, __pyx_L7_error) + __PYX_ERR(0, 140, __pyx_L7_error) } - __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 136, __pyx_L7_error) + __pyx_t_15 = __Pyx_PyBytes_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 140, __pyx_L7_error) if (unlikely(__pyx_v_self->_options == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 136, __pyx_L7_error) + __PYX_ERR(0, 140, __pyx_L7_error) } - __pyx_t_15 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 136, __pyx_L7_error) - __pyx_v_suite = coco_suite(__pyx_t_13, __pyx_t_14, __pyx_t_15); + __pyx_t_16 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_16) && PyErr_Occurred())) __PYX_ERR(0, 140, __pyx_L7_error) + __pyx_v_suite = coco_suite(__pyx_t_14, __pyx_t_15, __pyx_t_16); - /* "cython/interface.pyx":135 + /* "cython/interface.pyx":139 * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) * try: # <<<<<<<<<<<<<< @@ -3162,18 +3336,18 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * except: */ } - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; goto __pyx_L12_try_end; __pyx_L7_error:; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":137 + /* "cython/interface.pyx":141 * try: * suite = coco_suite(self._name, self._instance, self._options) * except: # <<<<<<<<<<<<<< @@ -3182,90 +3356,90 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite._initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_9) < 0) __PYX_ERR(0, 137, __pyx_L9_except_error) + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_10) < 0) __PYX_ERR(0, 141, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_9); + __Pyx_GOTREF(__pyx_t_10); - /* "cython/interface.pyx":138 + /* "cython/interface.pyx":142 * suite = coco_suite(self._name, self._instance, self._options) * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) # <<<<<<<<<<<<<< * if suite == NULL: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) */ - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 138, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_16 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 138, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_16); - __pyx_t_17 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_17)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_17); + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_17 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 142, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_17); + __pyx_t_18 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_18 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_18)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_18); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); + __Pyx_DECREF_SET(__pyx_t_3, function); } } - if (!__pyx_t_17) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L9_except_error) - __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; - __Pyx_GOTREF(__pyx_t_3); + if (!__pyx_t_18) { + __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L9_except_error) + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_GOTREF(__pyx_t_9); } else { #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_8)) { - PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_16}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L9_except_error) - __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_18, __pyx_t_17}; + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L9_except_error) + __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; } else #endif #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { - PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_16}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L9_except_error) - __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_18, __pyx_t_17}; + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L9_except_error) + __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; } else #endif { - __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 138, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_18); - __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL; - __Pyx_GIVEREF(__pyx_t_16); - PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_16); - __pyx_t_16 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; + __pyx_t_19 = PyTuple_New(1+1); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 142, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_19); + __Pyx_GIVEREF(__pyx_t_18); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_18); __pyx_t_18 = NULL; + __Pyx_GIVEREF(__pyx_t_17); + PyTuple_SET_ITEM(__pyx_t_19, 0+1, __pyx_t_17); + __pyx_t_17 = 0; + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_19, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; } } - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 138, __pyx_L9_except_error) + __Pyx_Raise(__pyx_t_9, 0, 0, 0); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __PYX_ERR(0, 142, __pyx_L9_except_error) } __pyx_L9_except_error:; - /* "cython/interface.pyx":135 + /* "cython/interface.pyx":139 * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) * try: # <<<<<<<<<<<<<< * suite = coco_suite(self._name, self._instance, self._options) * except: */ - __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13); goto __pyx_L1_error; __pyx_L12_try_end:; } - /* "cython/interface.pyx":139 + /* "cython/interface.pyx":143 * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * if suite == NULL: # <<<<<<<<<<<<<< @@ -3273,70 +3447,70 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * while True: */ __pyx_t_7 = ((__pyx_v_suite == NULL) != 0); - if (__pyx_t_7) { + if (unlikely(__pyx_t_7)) { - /* "cython/interface.pyx":140 + /* "cython/interface.pyx":144 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * if suite == NULL: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) # <<<<<<<<<<<<<< * while True: * old_level = log_level('warning') */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 140, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) + __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; + __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_3)) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } - if (!__pyx_t_3) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 140, __pyx_L1_error) + if (!__pyx_t_9) { + __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_9); + __Pyx_GOTREF(__pyx_t_10); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_9); + PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_2}; + __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_9); + PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_2}; + __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL; + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9); __pyx_t_9 = NULL; __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_9, 0, 0, 0); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_Raise(__pyx_t_10, 0, 0, 0); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __PYX_ERR(0, 144, __pyx_L1_error) - /* "cython/interface.pyx":139 + /* "cython/interface.pyx":143 * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * if suite == NULL: # <<<<<<<<<<<<<< @@ -3345,7 +3519,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":141 + /* "cython/interface.pyx":145 * if suite == NULL: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * while True: # <<<<<<<<<<<<<< @@ -3354,22 +3528,22 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ while (1) { - /* "cython/interface.pyx":142 + /* "cython/interface.pyx":146 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * while True: * old_level = log_level('warning') # <<<<<<<<<<<<<< * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) */ - __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 146, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF_SET(__pyx_v_old_level, __pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":143 + /* "cython/interface.pyx":147 * while True: * old_level = log_level('warning') * p = coco_suite_get_next_problem(suite, NULL) # <<<<<<<<<<<<<< @@ -3378,61 +3552,61 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ __pyx_v_p = coco_suite_get_next_problem(__pyx_v_suite, NULL); - /* "cython/interface.pyx":144 + /* "cython/interface.pyx":148 * old_level = log_level('warning') * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) # <<<<<<<<<<<<<< * if not p: * break */ - __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 144, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_8); + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); + __Pyx_DECREF_SET(__pyx_t_10, function); } } - if (!__pyx_t_8) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_old_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error) + if (!__pyx_t_3) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_old_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_9)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_old_level}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PyFunction_Check(__pyx_t_10)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_old_level}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_old_level}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_old_level}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { - __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL; + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_old_level); __Pyx_GIVEREF(__pyx_v_old_level); PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_old_level); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } } - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":145 + /* "cython/interface.pyx":149 * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) * if not p: # <<<<<<<<<<<<<< @@ -3442,7 +3616,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_t_7 = ((!(__pyx_v_p != 0)) != 0); if (__pyx_t_7) { - /* "cython/interface.pyx":146 + /* "cython/interface.pyx":150 * log_level(old_level) * if not p: * break # <<<<<<<<<<<<<< @@ -3451,7 +3625,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ goto __pyx_L17_break; - /* "cython/interface.pyx":145 + /* "cython/interface.pyx":149 * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) * if not p: # <<<<<<<<<<<<<< @@ -3460,69 +3634,69 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":147 + /* "cython/interface.pyx":151 * if not p: * break * self._indices.append(coco_problem_get_suite_dep_index(p)) # <<<<<<<<<<<<<< * self._ids.append(coco_problem_get_id(p)) * self._names.append(coco_problem_get_name(p)) */ - __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 147, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_indices, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 147, __pyx_L1_error) + __pyx_t_20 = __Pyx_PyObject_Append(__pyx_v_self->_indices, __pyx_t_4); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":148 + /* "cython/interface.pyx":152 * break * self._indices.append(coco_problem_get_suite_dep_index(p)) * self._ids.append(coco_problem_get_id(p)) # <<<<<<<<<<<<<< * self._names.append(coco_problem_get_name(p)) * self._dimensions.append(coco_problem_get_dimension(p)) */ - __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_ids, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 148, __pyx_L1_error) + __pyx_t_20 = __Pyx_PyObject_Append(__pyx_v_self->_ids, __pyx_t_4); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 152, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":149 + /* "cython/interface.pyx":153 * self._indices.append(coco_problem_get_suite_dep_index(p)) * self._ids.append(coco_problem_get_id(p)) * self._names.append(coco_problem_get_name(p)) # <<<<<<<<<<<<<< * self._dimensions.append(coco_problem_get_dimension(p)) * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) */ - __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 149, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_names, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 149, __pyx_L1_error) + __pyx_t_20 = __Pyx_PyObject_Append(__pyx_v_self->_names, __pyx_t_4); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":150 + /* "cython/interface.pyx":154 * self._ids.append(coco_problem_get_id(p)) * self._names.append(coco_problem_get_name(p)) * self._dimensions.append(coco_problem_get_dimension(p)) # <<<<<<<<<<<<<< * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) * coco_suite_free(suite) */ - __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_dimension(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 150, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_dimension(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_dimensions, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 150, __pyx_L1_error) + __pyx_t_20 = __Pyx_PyObject_Append(__pyx_v_self->_dimensions, __pyx_t_4); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 154, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":151 + /* "cython/interface.pyx":155 * self._names.append(coco_problem_get_name(p)) * self._dimensions.append(coco_problem_get_dimension(p)) * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) # <<<<<<<<<<<<<< * coco_suite_free(suite) * self.suite = coco_suite(self._name, self._instance, self._options) */ - __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_number_of_objectives(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_number_of_objectives(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_number_of_objectives, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 151, __pyx_L1_error) + __pyx_t_20 = __Pyx_PyObject_Append(__pyx_v_self->_number_of_objectives, __pyx_t_4); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_L17_break:; - /* "cython/interface.pyx":152 + /* "cython/interface.pyx":156 * self._dimensions.append(coco_problem_get_dimension(p)) * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) * coco_suite_free(suite) # <<<<<<<<<<<<<< @@ -3531,7 +3705,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ coco_suite_free(__pyx_v_suite); - /* "cython/interface.pyx":153 + /* "cython/interface.pyx":157 * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) * coco_suite_free(suite) * self.suite = coco_suite(self._name, self._instance, self._options) # <<<<<<<<<<<<<< @@ -3540,22 +3714,22 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ if (unlikely(__pyx_v_self->_name == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 153, __pyx_L1_error) + __PYX_ERR(0, 157, __pyx_L1_error) } - __pyx_t_13 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 153, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L1_error) if (unlikely(__pyx_v_self->_instance == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 153, __pyx_L1_error) + __PYX_ERR(0, 157, __pyx_L1_error) } - __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 153, __pyx_L1_error) + __pyx_t_15 = __Pyx_PyBytes_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L1_error) if (unlikely(__pyx_v_self->_options == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 153, __pyx_L1_error) + __PYX_ERR(0, 157, __pyx_L1_error) } - __pyx_t_15 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 153, __pyx_L1_error) - __pyx_v_self->suite = coco_suite(__pyx_t_13, __pyx_t_14, __pyx_t_15); + __pyx_t_16 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_16) && PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L1_error) + __pyx_v_self->suite = coco_suite(__pyx_t_14, __pyx_t_15, __pyx_t_16); - /* "cython/interface.pyx":154 + /* "cython/interface.pyx":158 * coco_suite_free(suite) * self.suite = coco_suite(self._name, self._instance, self._options) * self.initialized = True # <<<<<<<<<<<<<< @@ -3568,7 +3742,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_True; - /* "cython/interface.pyx":155 + /* "cython/interface.pyx":159 * self.suite = coco_suite(self._name, self._instance, self._options) * self.initialized = True * return self # <<<<<<<<<<<<<< @@ -3580,7 +3754,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":106 + /* "cython/interface.pyx":110 * self._initialize() * assert self.initialized * cdef _initialize(self): # <<<<<<<<<<<<<< @@ -3593,11 +3767,11 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_16); + __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_17); __Pyx_XDECREF(__pyx_t_18); + __Pyx_XDECREF(__pyx_t_19); __Pyx_AddTraceback("cocoex.interface.Suite._initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -3608,7 +3782,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ return __pyx_r; } -/* "cython/interface.pyx":156 +/* "cython/interface.pyx":160 * self.initialized = True * return self * def reset(self): # <<<<<<<<<<<<<< @@ -3639,7 +3813,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("reset", 0); - /* "cython/interface.pyx":159 + /* "cython/interface.pyx":163 * """reset to original state, affecting `next_problem()`, * `current_problem`, `current_index`""" * self._current_index = None # <<<<<<<<<<<<<< @@ -3652,24 +3826,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->_current_index); __pyx_v_self->_current_index = Py_None; - /* "cython/interface.pyx":160 + /* "cython/interface.pyx":164 * `current_problem`, `current_index`""" * self._current_index = None * if self.current_problem_: # <<<<<<<<<<<<<< * self.current_problem_.free() * self.current_problem_ = None */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 160, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 164, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":161 + /* "cython/interface.pyx":165 * self._current_index = None * if self.current_problem_: * self.current_problem_.free() # <<<<<<<<<<<<<< * self.current_problem_ = None * self._current_problem = NULL */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 161, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -3682,16 +3856,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 161, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 165, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 161, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 165, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":160 + /* "cython/interface.pyx":164 * `current_problem`, `current_index`""" * self._current_index = None * if self.current_problem_: # <<<<<<<<<<<<<< @@ -3700,7 +3874,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc */ } - /* "cython/interface.pyx":162 + /* "cython/interface.pyx":166 * if self.current_problem_: * self.current_problem_.free() * self.current_problem_ = None # <<<<<<<<<<<<<< @@ -3713,7 +3887,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->current_problem_); __pyx_v_self->current_problem_ = Py_None; - /* "cython/interface.pyx":163 + /* "cython/interface.pyx":167 * self.current_problem_.free() * self.current_problem_ = None * self._current_problem = NULL # <<<<<<<<<<<<<< @@ -3722,7 +3896,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc */ __pyx_v_self->_current_problem = NULL; - /* "cython/interface.pyx":156 + /* "cython/interface.pyx":160 * self.initialized = True * return self * def reset(self): # <<<<<<<<<<<<<< @@ -3745,7 +3919,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":164 +/* "cython/interface.pyx":168 * self.current_problem_ = None * self._current_problem = NULL * def next_problem(self, observer=None): # <<<<<<<<<<<<<< @@ -3778,12 +3952,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__py switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_observer); + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_observer); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "next_problem") < 0)) __PYX_ERR(0, 164, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "next_problem") < 0)) __PYX_ERR(0, 168, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3797,7 +3971,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("next_problem", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 164, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("next_problem", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 168, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.next_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -3825,31 +3999,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("next_problem", 0); - /* "cython/interface.pyx":172 + /* "cython/interface.pyx":176 * cdef size_t index * global _current_observer * if not self.initialized: # <<<<<<<<<<<<<< * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 172, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 176, __pyx_L1_error) __pyx_t_2 = ((!__pyx_t_1) != 0); - if (__pyx_t_2) { + if (unlikely(__pyx_t_2)) { - /* "cython/interface.pyx":173 + /* "cython/interface.pyx":177 * global _current_observer * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * if self.current_problem_: * self.current_problem_.free() */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 173, __pyx_L1_error) + __PYX_ERR(0, 177, __pyx_L1_error) - /* "cython/interface.pyx":172 + /* "cython/interface.pyx":176 * cdef size_t index * global _current_observer * if not self.initialized: # <<<<<<<<<<<<<< @@ -3858,24 +4032,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ } - /* "cython/interface.pyx":174 + /* "cython/interface.pyx":178 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: # <<<<<<<<<<<<<< * self.current_problem_.free() * if self._current_index is None: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 174, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 178, __pyx_L1_error) if (__pyx_t_2) { - /* "cython/interface.pyx":175 + /* "cython/interface.pyx":179 * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: * self.current_problem_.free() # <<<<<<<<<<<<<< * if self._current_index is None: * self._current_index = -1 */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { @@ -3888,16 +4062,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o } } if (__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":174 + /* "cython/interface.pyx":178 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: # <<<<<<<<<<<<<< @@ -3906,7 +4080,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ } - /* "cython/interface.pyx":176 + /* "cython/interface.pyx":180 * if self.current_problem_: * self.current_problem_.free() * if self._current_index is None: # <<<<<<<<<<<<<< @@ -3917,7 +4091,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":177 + /* "cython/interface.pyx":181 * self.current_problem_.free() * if self._current_index is None: * self._current_index = -1 # <<<<<<<<<<<<<< @@ -3930,7 +4104,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __Pyx_DECREF(__pyx_v_self->_current_index); __pyx_v_self->_current_index = __pyx_int_neg_1; - /* "cython/interface.pyx":176 + /* "cython/interface.pyx":180 * if self.current_problem_: * self.current_problem_.free() * if self._current_index is None: # <<<<<<<<<<<<<< @@ -3939,14 +4113,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ } - /* "cython/interface.pyx":178 + /* "cython/interface.pyx":182 * if self._current_index is None: * self._current_index = -1 * self._current_index += 1 # <<<<<<<<<<<<<< * if self._current_index >= len(self): * self._current_problem = NULL */ - __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_current_index, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 178, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_current_index, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_current_index); @@ -3954,23 +4128,23 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_v_self->_current_index = __pyx_t_3; __pyx_t_3 = 0; - /* "cython/interface.pyx":179 + /* "cython/interface.pyx":183 * self._current_index = -1 * self._current_index += 1 * if self._current_index >= len(self): # <<<<<<<<<<<<<< * self._current_problem = NULL * self.current_problem_ = None */ - __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 179, __pyx_L1_error) - __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error) + __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 183, __pyx_L1_error) + __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->_current_index, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->_current_index, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 183, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 179, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 183, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_1) { - /* "cython/interface.pyx":180 + /* "cython/interface.pyx":184 * self._current_index += 1 * if self._current_index >= len(self): * self._current_problem = NULL # <<<<<<<<<<<<<< @@ -3979,7 +4153,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ __pyx_v_self->_current_problem = NULL; - /* "cython/interface.pyx":181 + /* "cython/interface.pyx":185 * if self._current_index >= len(self): * self._current_problem = NULL * self.current_problem_ = None # <<<<<<<<<<<<<< @@ -3992,7 +4166,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __Pyx_DECREF(__pyx_v_self->current_problem_); __pyx_v_self->current_problem_ = Py_None; - /* "cython/interface.pyx":179 + /* "cython/interface.pyx":183 * self._current_index = -1 * self._current_index += 1 * if self._current_index >= len(self): # <<<<<<<<<<<<<< @@ -4002,7 +4176,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o goto __pyx_L6; } - /* "cython/interface.pyx":184 + /* "cython/interface.pyx":188 * # self._current_index = -1 # or use reset? * else: * index = self.indices[self._current_index] # "conversion" to size_t # <<<<<<<<<<<<<< @@ -4010,16 +4184,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * self.suite, index) */ /*else*/ { - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 184, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_v_self->_current_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 184, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_v_self->_current_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 184, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_index = __pyx_t_7; - /* "cython/interface.pyx":185 + /* "cython/interface.pyx":189 * else: * index = self.indices[self._current_index] # "conversion" to size_t * self._current_problem = coco_suite_get_problem( # <<<<<<<<<<<<<< @@ -4028,7 +4202,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ __pyx_v_self->_current_problem = coco_suite_get_problem(__pyx_v_self->suite, __pyx_v_index); - /* "cython/interface.pyx":188 + /* "cython/interface.pyx":192 * self.suite, index) * self.current_problem_ = Problem_init(self._current_problem, * True, self._name) # <<<<<<<<<<<<<< @@ -4038,7 +4212,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_3 = __pyx_v_self->_name; __Pyx_INCREF(__pyx_t_3); - /* "cython/interface.pyx":187 + /* "cython/interface.pyx":191 * self._current_problem = coco_suite_get_problem( * self.suite, index) * self.current_problem_ = Problem_init(self._current_problem, # <<<<<<<<<<<<<< @@ -4048,7 +4222,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_8.__pyx_n = 2; __pyx_t_8.free = Py_True; __pyx_t_8.suite_name = __pyx_t_3; - __pyx_t_4 = __pyx_f_6cocoex_9interface_Problem_init(__pyx_v_self->_current_problem, &__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L1_error) + __pyx_t_4 = __pyx_f_6cocoex_9interface_Problem_init(__pyx_v_self->_current_problem, &__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_4); @@ -4057,14 +4231,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_v_self->current_problem_ = __pyx_t_4; __pyx_t_4 = 0; - /* "cython/interface.pyx":189 + /* "cython/interface.pyx":193 * self.current_problem_ = Problem_init(self._current_problem, * True, self._name) * self.current_problem_.observe_with(observer) # <<<<<<<<<<<<<< * return self.current_problem_ * def get_problem(self, id, observer=None): */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 189, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -4077,13 +4251,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o } } if (!__pyx_t_5) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 189, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 189, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else @@ -4091,19 +4265,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 189, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 189, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 189, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -4113,7 +4287,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o } __pyx_L6:; - /* "cython/interface.pyx":190 + /* "cython/interface.pyx":194 * True, self._name) * self.current_problem_.observe_with(observer) * return self.current_problem_ # <<<<<<<<<<<<<< @@ -4125,7 +4299,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_r = __pyx_v_self->current_problem_; goto __pyx_L0; - /* "cython/interface.pyx":164 + /* "cython/interface.pyx":168 * self.current_problem_ = None * self._current_problem = NULL * def next_problem(self, observer=None): # <<<<<<<<<<<<<< @@ -4147,7 +4321,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":191 +/* "cython/interface.pyx":195 * self.current_problem_.observe_with(observer) * return self.current_problem_ * def get_problem(self, id, observer=None): # <<<<<<<<<<<<<< @@ -4182,17 +4356,17 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_id)) != 0)) kw_args--; + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_id)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_observer); + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_observer); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem") < 0)) __PYX_ERR(0, 191, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem") < 0)) __PYX_ERR(0, 195, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -4208,7 +4382,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_problem", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 191, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 195, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -4244,31 +4418,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob PyObject *__pyx_t_17 = NULL; __Pyx_RefNannySetupContext("get_problem", 0); - /* "cython/interface.pyx":222 + /* "cython/interface.pyx":226 * See also `ids`, `get_problem_by_function_dimension_instance`. * """ * if not self.initialized: # <<<<<<<<<<<<<< * raise ValueError("Suite has been finalized/free'ed") * index = id */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 222, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 226, __pyx_L1_error) __pyx_t_2 = ((!__pyx_t_1) != 0); - if (__pyx_t_2) { + if (unlikely(__pyx_t_2)) { - /* "cython/interface.pyx":223 + /* "cython/interface.pyx":227 * """ * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * index = id * try: */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 223, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 223, __pyx_L1_error) + __PYX_ERR(0, 227, __pyx_L1_error) - /* "cython/interface.pyx":222 + /* "cython/interface.pyx":226 * See also `ids`, `get_problem_by_function_dimension_instance`. * """ * if not self.initialized: # <<<<<<<<<<<<<< @@ -4277,7 +4451,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ } - /* "cython/interface.pyx":224 + /* "cython/interface.pyx":228 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * index = id # <<<<<<<<<<<<<< @@ -4287,7 +4461,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_INCREF(__pyx_v_id); __pyx_v_index = __pyx_v_id; - /* "cython/interface.pyx":225 + /* "cython/interface.pyx":229 * raise ValueError("Suite has been finalized/free'ed") * index = id * try: # <<<<<<<<<<<<<< @@ -4303,23 +4477,23 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XGOTREF(__pyx_t_6); /*try:*/ { - /* "cython/interface.pyx":226 + /* "cython/interface.pyx":230 * index = id * try: * 1 / (id == int(id)) # int(id) might raise an exception # <<<<<<<<<<<<<< * except: * index = self._ids.index(id) */ - __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 226, __pyx_L4_error) + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = PyObject_RichCompare(__pyx_v_id, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 226, __pyx_L4_error) + __pyx_t_7 = PyObject_RichCompare(__pyx_v_id, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 230, __pyx_L4_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 226, __pyx_L4_error) + __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":225 + /* "cython/interface.pyx":229 * raise ValueError("Suite has been finalized/free'ed") * index = id * try: # <<<<<<<<<<<<<< @@ -4335,7 +4509,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":227 + /* "cython/interface.pyx":231 * try: * 1 / (id == int(id)) # int(id) might raise an exception * except: # <<<<<<<<<<<<<< @@ -4344,19 +4518,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 227, __pyx_L6_except_error) + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 231, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_8); - /* "cython/interface.pyx":228 + /* "cython/interface.pyx":232 * 1 / (id == int(id)) # int(id) might raise an exception * except: * index = self._ids.index(id) # <<<<<<<<<<<<<< * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), */ - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ids, __pyx_n_s_index); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 228, __pyx_L6_except_error) + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ids, __pyx_n_s_index); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 232, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { @@ -4369,13 +4543,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } } if (!__pyx_t_11) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 228, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 232, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_9); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_v_id}; - __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 228, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 232, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_9); } else @@ -4383,19 +4557,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_v_id}; - __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 228, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 232, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_9); } else #endif { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 228, __pyx_L6_except_error) + __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 232, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL; __Pyx_INCREF(__pyx_v_id); __Pyx_GIVEREF(__pyx_v_id); PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_id); - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 228, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 232, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } @@ -4410,7 +4584,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } __pyx_L6_except_error:; - /* "cython/interface.pyx":225 + /* "cython/interface.pyx":229 * raise ValueError("Suite has been finalized/free'ed") * index = id * try: # <<<<<<<<<<<<<< @@ -4430,7 +4604,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_L9_try_end:; } - /* "cython/interface.pyx":229 + /* "cython/interface.pyx":233 * except: * index = self._ids.index(id) * try: # <<<<<<<<<<<<<< @@ -4446,7 +4620,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { - /* "cython/interface.pyx":230 + /* "cython/interface.pyx":234 * index = self._ids.index(id) * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< @@ -4455,27 +4629,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ __Pyx_XDECREF(__pyx_r); - /* "cython/interface.pyx":231 + /* "cython/interface.pyx":235 * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< * except: * raise NoSuchProblemException(self.name, str(id)) */ - __pyx_t_7 = PyObject_GetItem(__pyx_v_self->_indices, __pyx_v_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 230, __pyx_L12_error) + __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_self->_indices, __pyx_v_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 234, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_7); - /* "cython/interface.pyx":230 + /* "cython/interface.pyx":234 * index = self._ids.index(id) * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< * True, self._name).observe_with(observer) * except: */ - __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_7); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 230, __pyx_L12_error) + __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_7); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 234, __pyx_L12_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":231 + /* "cython/interface.pyx":235 * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< @@ -4485,7 +4659,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_7 = __pyx_v_self->_name; __Pyx_INCREF(__pyx_t_7); - /* "cython/interface.pyx":230 + /* "cython/interface.pyx":234 * index = self._ids.index(id) * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< @@ -4495,18 +4669,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_14.__pyx_n = 2; __pyx_t_14.free = Py_True; __pyx_t_14.suite_name = __pyx_t_7; - __pyx_t_3 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem(__pyx_v_self->suite, __pyx_t_13), &__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L12_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem(__pyx_v_self->suite, __pyx_t_13), &__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":231 + /* "cython/interface.pyx":235 * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< * except: * raise NoSuchProblemException(self.name, str(id)) */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 231, __pyx_L12_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 235, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; @@ -4520,13 +4694,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } } if (!__pyx_t_3) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_observer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 231, __pyx_L12_error) + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_observer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 235, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_8); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 231, __pyx_L12_error) + __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 235, __pyx_L12_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_8); } else @@ -4534,19 +4708,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 231, __pyx_L12_error) + __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 235, __pyx_L12_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_8); } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 231, __pyx_L12_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 235, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 231, __pyx_L12_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 235, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -4556,7 +4730,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_8 = 0; goto __pyx_L16_try_return; - /* "cython/interface.pyx":229 + /* "cython/interface.pyx":233 * except: * index = self._ids.index(id) * try: # <<<<<<<<<<<<<< @@ -4573,7 +4747,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "cython/interface.pyx":232 + /* "cython/interface.pyx":236 * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) * except: # <<<<<<<<<<<<<< @@ -4582,37 +4756,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(0, 232, __pyx_L14_except_error) + if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(0, 236, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_9); - /* "cython/interface.pyx":233 + /* "cython/interface.pyx":237 * True, self._name).observe_with(observer) * except: * raise NoSuchProblemException(self.name, str(id)) # <<<<<<<<<<<<<< * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): */ - __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 233, __pyx_L14_except_error) + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 237, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 233, __pyx_L14_except_error) + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 237, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_12); - __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 233, __pyx_L14_except_error) + __pyx_t_11 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_id); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 237, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_11); - __Pyx_INCREF(__pyx_v_id); - __Pyx_GIVEREF(__pyx_v_id); - PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_id); - __pyx_t_15 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 233, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_15); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = NULL; + __pyx_t_15 = NULL; __pyx_t_16 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { - __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); - if (likely(__pyx_t_11)) { + __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); - __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); __pyx_t_16 = 1; @@ -4620,48 +4788,48 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { - PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_12, __pyx_t_15}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L14_except_error) - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_12, __pyx_t_11}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L14_except_error) + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { - PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_12, __pyx_t_15}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L14_except_error) - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_12, __pyx_t_11}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L14_except_error) + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { - __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 233, __pyx_L14_except_error) + __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 237, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_17); - if (__pyx_t_11) { - __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_11); __pyx_t_11 = NULL; + if (__pyx_t_15) { + __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_15); __pyx_t_15 = NULL; } __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_16, __pyx_t_12); - __Pyx_GIVEREF(__pyx_t_15); - PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_t_15); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_t_11); __pyx_t_12 = 0; - __pyx_t_15 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L14_except_error) + __pyx_t_11 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 233, __pyx_L14_except_error) + __PYX_ERR(0, 237, __pyx_L14_except_error) } __pyx_L14_except_error:; - /* "cython/interface.pyx":229 + /* "cython/interface.pyx":233 * except: * index = self._ids.index(id) * try: # <<<<<<<<<<<<<< @@ -4681,7 +4849,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob goto __pyx_L0; } - /* "cython/interface.pyx":191 + /* "cython/interface.pyx":195 * self.current_problem_.observe_with(observer) * return self.current_problem_ * def get_problem(self, id, observer=None): # <<<<<<<<<<<<<< @@ -4709,7 +4877,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":235 +/* "cython/interface.pyx":239 * raise NoSuchProblemException(self.name, str(id)) * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): # <<<<<<<<<<<<<< @@ -4750,29 +4918,29 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_function)) != 0)) kw_args--; + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_function)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimension)) != 0)) kw_args--; + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dimension)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 1); __PYX_ERR(0, 235, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 1); __PYX_ERR(0, 239, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: - if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_instance)) != 0)) kw_args--; + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_instance)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 2); __PYX_ERR(0, 235, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 2); __PYX_ERR(0, 239, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_observer); + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_observer); if (value) { values[3] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem_by_function_dimension_instance") < 0)) __PYX_ERR(0, 235, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem_by_function_dimension_instance") < 0)) __PYX_ERR(0, 239, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -4792,7 +4960,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 235, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 239, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.get_problem_by_function_dimension_instance", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -4831,61 +4999,61 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim PyObject *__pyx_t_18 = NULL; __Pyx_RefNannySetupContext("get_problem_by_function_dimension_instance", 0); - /* "cython/interface.pyx":259 + /* "cython/interface.pyx":263 * just silently die, which is e.g. a known issue of the "bbob" observer. * """ * cdef size_t _function = function # "conversion" to size_t # <<<<<<<<<<<<<< * cdef size_t _dimension = dimension # "conversion" to size_t * cdef size_t _instance = instance # "conversion" to size_t */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_function); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_function); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 263, __pyx_L1_error) __pyx_v__function = __pyx_t_1; - /* "cython/interface.pyx":260 + /* "cython/interface.pyx":264 * """ * cdef size_t _function = function # "conversion" to size_t * cdef size_t _dimension = dimension # "conversion" to size_t # <<<<<<<<<<<<<< * cdef size_t _instance = instance # "conversion" to size_t * */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_dimension); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 260, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_dimension); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 264, __pyx_L1_error) __pyx_v__dimension = __pyx_t_1; - /* "cython/interface.pyx":261 + /* "cython/interface.pyx":265 * cdef size_t _function = function # "conversion" to size_t * cdef size_t _dimension = dimension # "conversion" to size_t * cdef size_t _instance = instance # "conversion" to size_t # <<<<<<<<<<<<<< * * if not self.initialized: */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_instance); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 261, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_instance); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 265, __pyx_L1_error) __pyx_v__instance = __pyx_t_1; - /* "cython/interface.pyx":263 + /* "cython/interface.pyx":267 * cdef size_t _instance = instance # "conversion" to size_t * * if not self.initialized: # <<<<<<<<<<<<<< * raise ValueError("Suite has been finalized/free'ed") * try: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 263, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 267, __pyx_L1_error) __pyx_t_3 = ((!__pyx_t_2) != 0); - if (__pyx_t_3) { + if (unlikely(__pyx_t_3)) { - /* "cython/interface.pyx":264 + /* "cython/interface.pyx":268 * * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, */ - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 264, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 264, __pyx_L1_error) + __PYX_ERR(0, 268, __pyx_L1_error) - /* "cython/interface.pyx":263 + /* "cython/interface.pyx":267 * cdef size_t _instance = instance # "conversion" to size_t * * if not self.initialized: # <<<<<<<<<<<<<< @@ -4894,7 +5062,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ } - /* "cython/interface.pyx":265 + /* "cython/interface.pyx":269 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * try: # <<<<<<<<<<<<<< @@ -4910,7 +5078,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_XGOTREF(__pyx_t_7); /*try:*/ { - /* "cython/interface.pyx":266 + /* "cython/interface.pyx":270 * raise ValueError("Suite has been finalized/free'ed") * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, # <<<<<<<<<<<<<< @@ -4919,7 +5087,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ __Pyx_XDECREF(__pyx_r); - /* "cython/interface.pyx":268 + /* "cython/interface.pyx":272 * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, * _dimension, _instance), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< @@ -4929,7 +5097,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_8 = __pyx_v_self->_name; __Pyx_INCREF(__pyx_t_8); - /* "cython/interface.pyx":266 + /* "cython/interface.pyx":270 * raise ValueError("Suite has been finalized/free'ed") * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, # <<<<<<<<<<<<<< @@ -4939,18 +5107,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_10.__pyx_n = 2; __pyx_t_10.free = Py_True; __pyx_t_10.suite_name = __pyx_t_8; - __pyx_t_9 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem_by_function_dimension_instance(__pyx_v_self->suite, __pyx_v__function, __pyx_v__dimension, __pyx_v__instance), &__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 266, __pyx_L4_error) + __pyx_t_9 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem_by_function_dimension_instance(__pyx_v_self->suite, __pyx_v__function, __pyx_v__dimension, __pyx_v__instance), &__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 270, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "cython/interface.pyx":268 + /* "cython/interface.pyx":272 * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, * _dimension, _instance), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< * except: * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 268, __pyx_L4_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 272, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; @@ -4964,13 +5132,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim } } if (!__pyx_t_9) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L4_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_4); } else @@ -4978,19 +5146,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L4_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 268, __pyx_L4_error) + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 272, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_observer); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } @@ -5000,7 +5168,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_4 = 0; goto __pyx_L8_try_return; - /* "cython/interface.pyx":265 + /* "cython/interface.pyx":269 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * try: # <<<<<<<<<<<<<< @@ -5014,7 +5182,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":269 + /* "cython/interface.pyx":273 * _dimension, _instance), * True, self._name).observe_with(observer) * except: # <<<<<<<<<<<<<< @@ -5023,26 +5191,26 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem_by_function_dimension_instance", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_11) < 0) __PYX_ERR(0, 269, __pyx_L6_except_error) + if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_11) < 0) __PYX_ERR(0, 273, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_11); - /* "cython/interface.pyx":270 + /* "cython/interface.pyx":274 * True, self._name).observe_with(observer) * except: * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, # <<<<<<<<<<<<<< * dimension, * instance)) */ - __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 270, __pyx_L6_except_error) + __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_12); - __pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 270, __pyx_L6_except_error) + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_13); - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_function_dimension_instance, __pyx_n_s_format); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 270, __pyx_L6_except_error) + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_function_dimension_instance, __pyx_n_s_format); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_15); - /* "cython/interface.pyx":272 + /* "cython/interface.pyx":276 * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, * dimension, * instance)) # <<<<<<<<<<<<<< @@ -5064,7 +5232,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[4] = {__pyx_t_16, __pyx_v_function, __pyx_v_dimension, __pyx_v_instance}; - __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 270, __pyx_L6_except_error) + __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_14); } else @@ -5072,13 +5240,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[4] = {__pyx_t_16, __pyx_v_function, __pyx_v_dimension, __pyx_v_instance}; - __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 270, __pyx_L6_except_error) + __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_14); } else #endif { - __pyx_t_18 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 270, __pyx_L6_except_error) + __pyx_t_18 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_18); if (__pyx_t_16) { __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_16); __pyx_t_16 = NULL; @@ -5092,7 +5260,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_INCREF(__pyx_v_instance); __Pyx_GIVEREF(__pyx_v_instance); PyTuple_SET_ITEM(__pyx_t_18, 2+__pyx_t_17, __pyx_v_instance); - __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_18, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 270, __pyx_L6_except_error) + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_18, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } @@ -5112,7 +5280,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_13, __pyx_t_14}; - __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 270, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -5122,7 +5290,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_13, __pyx_t_14}; - __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 270, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -5130,7 +5298,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim } else #endif { - __pyx_t_18 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 270, __pyx_L6_except_error) + __pyx_t_18 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_18); if (__pyx_t_15) { __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_15); __pyx_t_15 = NULL; @@ -5141,18 +5309,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_t_14); __pyx_t_13 = 0; __pyx_t_14 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_18, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 270, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_18, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_ERR(0, 270, __pyx_L6_except_error) + __PYX_ERR(0, 274, __pyx_L6_except_error) } __pyx_L6_except_error:; - /* "cython/interface.pyx":265 + /* "cython/interface.pyx":269 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * try: # <<<<<<<<<<<<<< @@ -5172,7 +5340,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim goto __pyx_L0; } - /* "cython/interface.pyx":235 + /* "cython/interface.pyx":239 * raise NoSuchProblemException(self.name, str(id)) * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): # <<<<<<<<<<<<<< @@ -5200,7 +5368,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim return __pyx_r; } -/* "cython/interface.pyx":274 +/* "cython/interface.pyx":278 * instance)) * * def __getitem__(self, key): # <<<<<<<<<<<<<< @@ -5234,7 +5402,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("__getitem__", 0); - /* "cython/interface.pyx":277 + /* "cython/interface.pyx":281 * """`self[i]` is a synonym for `self.get_problem(i)`, see `get_problem` * """ * return self.get_problem(key) # <<<<<<<<<<<<<< @@ -5242,7 +5410,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o * def free(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 277, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -5255,13 +5423,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_key}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -5269,19 +5437,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_key}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_key); __Pyx_GIVEREF(__pyx_v_key); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_key); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } @@ -5291,7 +5459,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":274 + /* "cython/interface.pyx":278 * instance)) * * def __getitem__(self, key): # <<<<<<<<<<<<<< @@ -5313,7 +5481,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":279 +/* "cython/interface.pyx":283 * return self.get_problem(key) * * def free(self): # <<<<<<<<<<<<<< @@ -5341,7 +5509,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc int __pyx_t_1; __Pyx_RefNannySetupContext("free", 0); - /* "cython/interface.pyx":281 + /* "cython/interface.pyx":285 * def free(self): * """free underlying C structures""" * if self.suite: # for some reason __dealloc__ cannot be called here # <<<<<<<<<<<<<< @@ -5351,7 +5519,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc __pyx_t_1 = (__pyx_v_self->suite != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":282 + /* "cython/interface.pyx":286 * """free underlying C structures""" * if self.suite: # for some reason __dealloc__ cannot be called here * coco_suite_free(self.suite) # <<<<<<<<<<<<<< @@ -5360,7 +5528,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc */ coco_suite_free(__pyx_v_self->suite); - /* "cython/interface.pyx":281 + /* "cython/interface.pyx":285 * def free(self): * """free underlying C structures""" * if self.suite: # for some reason __dealloc__ cannot be called here # <<<<<<<<<<<<<< @@ -5369,7 +5537,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc */ } - /* "cython/interface.pyx":283 + /* "cython/interface.pyx":287 * if self.suite: # for some reason __dealloc__ cannot be called here * coco_suite_free(self.suite) * self.suite = NULL # <<<<<<<<<<<<<< @@ -5378,7 +5546,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc */ __pyx_v_self->suite = NULL; - /* "cython/interface.pyx":284 + /* "cython/interface.pyx":288 * coco_suite_free(self.suite) * self.suite = NULL * self.initialized = False # not (yet) visible from outside # <<<<<<<<<<<<<< @@ -5391,7 +5559,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_False; - /* "cython/interface.pyx":279 + /* "cython/interface.pyx":283 * return self.get_problem(key) * * def free(self): # <<<<<<<<<<<<<< @@ -5406,7 +5574,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":285 +/* "cython/interface.pyx":289 * self.suite = NULL * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -5430,7 +5598,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c int __pyx_t_1; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "cython/interface.pyx":286 + /* "cython/interface.pyx":290 * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): * if self.suite: # <<<<<<<<<<<<<< @@ -5440,7 +5608,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c __pyx_t_1 = (__pyx_v_self->suite != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":287 + /* "cython/interface.pyx":291 * def __dealloc__(self): * if self.suite: * coco_suite_free(self.suite) # <<<<<<<<<<<<<< @@ -5449,7 +5617,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c */ coco_suite_free(__pyx_v_self->suite); - /* "cython/interface.pyx":286 + /* "cython/interface.pyx":290 * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): * if self.suite: # <<<<<<<<<<<<<< @@ -5458,7 +5626,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c */ } - /* "cython/interface.pyx":285 + /* "cython/interface.pyx":289 * self.suite = NULL * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -5470,7 +5638,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c __Pyx_RefNannyFinishContext(); } -/* "cython/interface.pyx":289 +/* "cython/interface.pyx":293 * coco_suite_free(self.suite) * * def find_problem_ids(self, *args, **kwargs): # <<<<<<<<<<<<<< @@ -5505,20 +5673,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(CYTHON_UN PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("find_problem_ids", 0); - /* "cython/interface.pyx":291 + /* "cython/interface.pyx":295 * def find_problem_ids(self, *args, **kwargs): * """has been renamed to `ids`""" * raise NotImplementedError( # <<<<<<<<<<<<<< * "`find_problem_ids()` has been renamed to `ids()`") * */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 291, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 291, __pyx_L1_error) + __PYX_ERR(0, 295, __pyx_L1_error) - /* "cython/interface.pyx":289 + /* "cython/interface.pyx":293 * coco_suite_free(self.suite) * * def find_problem_ids(self, *args, **kwargs): # <<<<<<<<<<<<<< @@ -5536,7 +5704,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(CYTHON_UN return __pyx_r; } -/* "cython/interface.pyx":295 +/* "cython/interface.pyx":299 * * * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< @@ -5580,12 +5748,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self if (kw_args > 0 && likely(kw_args <= 2)) { Py_ssize_t index; for (index = 0; index < 2 && kw_args > 0; index++) { - PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]); + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, *__pyx_pyargnames[index]); if (value) { values[index] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "ids") < 0)) __PYX_ERR(0, 295, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "ids") < 0)) __PYX_ERR(0, 299, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) < 0) { goto __pyx_L5_argtuple_error; @@ -5596,7 +5764,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("ids", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 295, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("ids", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 299, __pyx_L3_error) __pyx_L3_error:; __Pyx_DECREF(__pyx_v_id_snippets); __pyx_v_id_snippets = 0; __Pyx_AddTraceback("cocoex.interface.Suite.ids", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -5630,22 +5798,23 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; int __pyx_t_12; - int __pyx_t_13; + Py_UCS4 __pyx_t_13; + int __pyx_t_14; __Pyx_RefNannySetupContext("ids", 0); - /* "cython/interface.pyx":333 + /* "cython/interface.pyx":337 * * """ * res = [] # <<<<<<<<<<<<<< * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_res = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":334 + /* "cython/interface.pyx":338 * """ * res = [] * for idx, id in enumerate(self._ids): # <<<<<<<<<<<<<< @@ -5658,26 +5827,26 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_2 = __pyx_v_self->_ids; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 334, __pyx_L1_error) + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 334, __pyx_L1_error) + __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 334, __pyx_L1_error) + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 338, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 334, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 334, __pyx_L1_error) + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 338, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 334, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } @@ -5687,7 +5856,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 334, __pyx_L1_error) + else __PYX_ERR(0, 338, __pyx_L1_error) } break; } @@ -5697,33 +5866,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_5 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_1); - __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 334, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; __pyx_t_5 = 0; - /* "cython/interface.pyx":335 + /* "cython/interface.pyx":339 * res = [] * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): # <<<<<<<<<<<<<< * if verbose: * print(" id=%s, index=%d" % (id, idx)) */ - __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 335, __pyx_L1_error) + __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __pyx_v_id_snippets; __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0; for (;;) { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 335, __pyx_L1_error) + __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 339, __pyx_L1_error) #else - __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 335, __pyx_L1_error) + __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_8); __pyx_t_8 = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_id, __pyx_n_s_find); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 335, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_id, __pyx_n_s_find); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { @@ -5736,13 +5905,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco } } if (!__pyx_t_10) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_i); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 335, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_i); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_v_i}; - __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 335, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_8); } else @@ -5750,81 +5919,89 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_v_i}; - __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 335, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_8); } else #endif { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 335, __pyx_L1_error) + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL; __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_i); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 335, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 335, __pyx_L1_error) + __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 335, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 335, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_all, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 335, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 335, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 339, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_12) { - /* "cython/interface.pyx":336 + /* "cython/interface.pyx":340 * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): * if verbose: # <<<<<<<<<<<<<< * print(" id=%s, index=%d" % (id, idx)) * res.append(id) */ - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_verbose); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 336, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_verbose); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 340, __pyx_L1_error) if (__pyx_t_12) { - /* "cython/interface.pyx":337 + /* "cython/interface.pyx":341 * if all([id.find(i) >= 0 for i in id_snippets]): * if verbose: * print(" id=%s, index=%d" % (id, idx)) # <<<<<<<<<<<<<< * res.append(id) * if get_problem: */ - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(__pyx_v_id); - __Pyx_GIVEREF(__pyx_v_id); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_id); - __Pyx_INCREF(__pyx_v_idx); - __Pyx_GIVEREF(__pyx_v_idx); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_idx); - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_id_s_index_d, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_7 = 0; + __pyx_t_13 = 127; + __Pyx_INCREF(__pyx_kp_u_id_2); + __pyx_t_7 += 5; + __Pyx_GIVEREF(__pyx_kp_u_id_2); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_id_2); + __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_v_id), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); - __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_13; + __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u_index_2); + __pyx_t_7 += 8; + __Pyx_GIVEREF(__pyx_kp_u_index_2); + PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u_index_2); + __pyx_t_5 = __Pyx_PyObject_Format(__pyx_v_idx, __pyx_n_u_d); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 341, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_13; + __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_6, 4, __pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 341, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":336 + /* "cython/interface.pyx":340 * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): * if verbose: # <<<<<<<<<<<<<< @@ -5833,16 +6010,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco */ } - /* "cython/interface.pyx":338 + /* "cython/interface.pyx":342 * if verbose: * print(" id=%s, index=%d" % (id, idx)) * res.append(id) # <<<<<<<<<<<<<< * if get_problem: * return self.get_problem(res[0]) */ - __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_res, __pyx_v_id); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_res, __pyx_v_id); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 342, __pyx_L1_error) - /* "cython/interface.pyx":335 + /* "cython/interface.pyx":339 * res = [] * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): # <<<<<<<<<<<<<< @@ -5851,7 +6028,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco */ } - /* "cython/interface.pyx":334 + /* "cython/interface.pyx":338 * """ * res = [] * for idx, id in enumerate(self._ids): # <<<<<<<<<<<<<< @@ -5862,17 +6039,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":339 + /* "cython/interface.pyx":343 * print(" id=%s, index=%d" % (id, idx)) * res.append(id) * if get_problem: # <<<<<<<<<<<<<< * return self.get_problem(res[0]) * return res */ - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_get_problem); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_get_problem); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 343, __pyx_L1_error) if (__pyx_t_12) { - /* "cython/interface.pyx":340 + /* "cython/interface.pyx":344 * res.append(id) * if get_problem: * return self.get_problem(res[0]) # <<<<<<<<<<<<<< @@ -5880,9 +6057,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -5895,14 +6072,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco } } if (!__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -5911,20 +6088,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6); __pyx_t_6 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -5934,7 +6111,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":339 + /* "cython/interface.pyx":343 * print(" id=%s, index=%d" % (id, idx)) * res.append(id) * if get_problem: # <<<<<<<<<<<<<< @@ -5943,7 +6120,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco */ } - /* "cython/interface.pyx":341 + /* "cython/interface.pyx":345 * if get_problem: * return self.get_problem(res[0]) * return res # <<<<<<<<<<<<<< @@ -5955,7 +6132,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_r = __pyx_v_res; goto __pyx_L0; - /* "cython/interface.pyx":295 + /* "cython/interface.pyx":299 * * * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< @@ -5985,7 +6162,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco return __pyx_r; } -/* "cython/interface.pyx":344 +/* "cython/interface.pyx":348 * * @property * def current_problem(self): # <<<<<<<<<<<<<< @@ -6011,7 +6188,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(st __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":346 + /* "cython/interface.pyx":350 * def current_problem(self): * """current "open/active" problem to be benchmarked""" * return self.current_problem_ # <<<<<<<<<<<<<< @@ -6023,7 +6200,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(st __pyx_r = __pyx_v_self->current_problem_; goto __pyx_L0; - /* "cython/interface.pyx":344 + /* "cython/interface.pyx":348 * * @property * def current_problem(self): # <<<<<<<<<<<<<< @@ -6038,7 +6215,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(st return __pyx_r; } -/* "cython/interface.pyx":348 +/* "cython/interface.pyx":352 * return self.current_problem_ * @property * def current_index(self): # <<<<<<<<<<<<<< @@ -6064,7 +6241,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(stru __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":364 + /* "cython/interface.pyx":368 * * """ * return self._current_index # <<<<<<<<<<<<<< @@ -6076,7 +6253,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(stru __pyx_r = __pyx_v_self->_current_index; goto __pyx_L0; - /* "cython/interface.pyx":348 + /* "cython/interface.pyx":352 * return self.current_problem_ * @property * def current_index(self): # <<<<<<<<<<<<<< @@ -6091,7 +6268,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(stru return __pyx_r; } -/* "cython/interface.pyx":366 +/* "cython/interface.pyx":370 * return self._current_index * @property * def problem_names(self): # <<<<<<<<<<<<<< @@ -6118,7 +6295,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":368 + /* "cython/interface.pyx":372 * def problem_names(self): * """list of problem names in this `Suite`, see also `ids`""" * return list(self._names) # <<<<<<<<<<<<<< @@ -6126,13 +6303,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru * def dimensions(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PySequence_List(__pyx_v_self->_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L1_error) + __pyx_t_1 = PySequence_List(__pyx_v_self->_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":366 + /* "cython/interface.pyx":370 * return self._current_index * @property * def problem_names(self): # <<<<<<<<<<<<<< @@ -6151,7 +6328,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru return __pyx_r; } -/* "cython/interface.pyx":370 +/* "cython/interface.pyx":374 * return list(self._names) * @property * def dimensions(self): # <<<<<<<<<<<<<< @@ -6181,7 +6358,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct int __pyx_t_4; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":372 + /* "cython/interface.pyx":376 * def dimensions(self): * """list of problem dimensions occuring at least once in this `Suite`""" * return sorted(set(self._dimensions)) # <<<<<<<<<<<<<< @@ -6189,19 +6366,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct * def number_of_objectives(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PySet_New(__pyx_v_self->_dimensions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 372, __pyx_L1_error) + __pyx_t_2 = PySet_New(__pyx_v_self->_dimensions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 376, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 372, __pyx_L1_error) + __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 376, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 372, __pyx_L1_error) + __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 376, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":370 + /* "cython/interface.pyx":374 * return list(self._names) * @property * def dimensions(self): # <<<<<<<<<<<<<< @@ -6222,7 +6399,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct return __pyx_r; } -/* "cython/interface.pyx":374 +/* "cython/interface.pyx":378 * return sorted(set(self._dimensions)) * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -6252,7 +6429,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get int __pyx_t_4; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":376 + /* "cython/interface.pyx":380 * def number_of_objectives(self): * """list of number of objectives occuring in this `Suite`""" * return sorted(set(self._number_of_objectives)) # <<<<<<<<<<<<<< @@ -6260,19 +6437,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get * def indices(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PySet_New(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 376, __pyx_L1_error) + __pyx_t_2 = PySet_New(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 376, __pyx_L1_error) + __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 376, __pyx_L1_error) + __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 380, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":374 + /* "cython/interface.pyx":378 * return sorted(set(self._dimensions)) * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -6293,7 +6470,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get return __pyx_r; } -/* "cython/interface.pyx":378 +/* "cython/interface.pyx":382 * return sorted(set(self._number_of_objectives)) * @property * def indices(self): # <<<<<<<<<<<<<< @@ -6320,7 +6497,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":384 + /* "cython/interface.pyx":388 * Indices used in the Python interface run between 0 and `len(self)`. * """ * return list(self._indices) # <<<<<<<<<<<<<< @@ -6328,13 +6505,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py * def name(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PySequence_List(__pyx_v_self->_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 384, __pyx_L1_error) + __pyx_t_1 = PySequence_List(__pyx_v_self->_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":378 + /* "cython/interface.pyx":382 * return sorted(set(self._number_of_objectives)) * @property * def indices(self): # <<<<<<<<<<<<<< @@ -6353,7 +6530,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":386 +/* "cython/interface.pyx":390 * return list(self._indices) * @property * def name(self): # <<<<<<<<<<<<<< @@ -6379,7 +6556,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_o __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":388 + /* "cython/interface.pyx":392 * def name(self): * """see __init__.py""" * return self._name # <<<<<<<<<<<<<< @@ -6391,7 +6568,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_o __pyx_r = __pyx_v_self->_name; goto __pyx_L0; - /* "cython/interface.pyx":386 + /* "cython/interface.pyx":390 * return list(self._indices) * @property * def name(self): # <<<<<<<<<<<<<< @@ -6406,7 +6583,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":390 +/* "cython/interface.pyx":394 * return self._name * @property * def instance(self): # <<<<<<<<<<<<<< @@ -6432,7 +6609,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __p __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":393 + /* "cython/interface.pyx":397 * """instance of this suite as used to instantiate the suite via * `Suite(name, instance, ...)`""" * return self._instance # <<<<<<<<<<<<<< @@ -6444,7 +6621,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __p __pyx_r = __pyx_v_self->_instance; goto __pyx_L0; - /* "cython/interface.pyx":390 + /* "cython/interface.pyx":394 * return self._name * @property * def instance(self): # <<<<<<<<<<<<<< @@ -6459,7 +6636,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __p return __pyx_r; } -/* "cython/interface.pyx":395 +/* "cython/interface.pyx":399 * return self._instance * @property * def options(self): # <<<<<<<<<<<<<< @@ -6485,7 +6662,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":398 + /* "cython/interface.pyx":402 * """options for this suite as used to instantiate the suite via * `Suite(name, instance, options)`""" * return self._options # <<<<<<<<<<<<<< @@ -6497,7 +6674,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __py __pyx_r = __pyx_v_self->_options; goto __pyx_L0; - /* "cython/interface.pyx":395 + /* "cython/interface.pyx":399 * return self._instance * @property * def options(self): # <<<<<<<<<<<<<< @@ -6512,7 +6689,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":401 +/* "cython/interface.pyx":405 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -6537,10 +6714,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":402 + /* "cython/interface.pyx":406 * @property * def info(self): * return str(self) # <<<<<<<<<<<<<< @@ -6548,19 +6724,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 402, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 402, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":401 + /* "cython/interface.pyx":405 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -6571,7 +6741,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cocoex.interface.Suite.info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -6580,7 +6749,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":403 +/* "cython/interface.pyx":407 * def info(self): * return str(self) * def __repr__(self): # <<<<<<<<<<<<<< @@ -6605,12 +6774,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_2; + Py_UCS4 __pyx_t_3; PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("__repr__", 0); - /* "cython/interface.pyx":404 + /* "cython/interface.pyx":408 * return str(self) * def __repr__(self): * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets # <<<<<<<<<<<<<< @@ -6618,31 +6788,64 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 404, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 404, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 404, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 404, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); - __pyx_t_1 = 0; __pyx_t_2 = 0; - __pyx_t_3 = 0; - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Suite_r_r_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 404, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_3 = 127; + __Pyx_INCREF(__pyx_kp_u_Suite); + __pyx_t_2 += 6; + __Pyx_GIVEREF(__pyx_kp_u_Suite); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Suite); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 408, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; + __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; + __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u__8); + __pyx_t_2 += 2; + __Pyx_GIVEREF(__pyx_kp_u__8); + PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__8); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 408, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_5), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; + __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4); + __pyx_t_4 = 0; + __Pyx_INCREF(__pyx_kp_u__8); + __pyx_t_2 += 2; + __Pyx_GIVEREF(__pyx_kp_u__8); + PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u__8); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 408, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; + __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u__9); + __pyx_t_2 += 1; + __Pyx_GIVEREF(__pyx_kp_u__9); + PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u__9); + __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 7, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 408, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; goto __pyx_L0; - /* "cython/interface.pyx":403 + /* "cython/interface.pyx":407 * def info(self): * return str(self) * def __repr__(self): # <<<<<<<<<<<<<< @@ -6653,9 +6856,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cocoex.interface.Suite.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -6664,7 +6866,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ return __pyx_r; } -/* "cython/interface.pyx":405 +/* "cython/interface.pyx":409 * def __repr__(self): * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets * def __str__(self): # <<<<<<<<<<<<<< @@ -6689,18 +6891,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - Py_ssize_t __pyx_t_4; + Py_ssize_t __pyx_t_2; + Py_UCS4 __pyx_t_3; + PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; + Py_ssize_t __pyx_t_6; + Py_UCS4 __pyx_t_7; PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; __Pyx_RefNannySetupContext("__str__", 0); - /* "cython/interface.pyx":406 + /* "cython/interface.pyx":410 * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets * def __str__(self): * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ # <<<<<<<<<<<<<< @@ -6708,136 +6908,200 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 * len(self), '' if len(self) == 1 else 's', */ __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyTuple_New(14); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 410, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = 0; + __pyx_t_3 = 127; + __Pyx_INCREF(__pyx_kp_u_Suite_2); + __pyx_t_2 += 7; + __Pyx_GIVEREF(__pyx_kp_u_Suite_2); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Suite_2); - /* "cython/interface.pyx":407 + /* "cython/interface.pyx":411 * def __str__(self): * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ * % (self.name, self.instance, self.options, # <<<<<<<<<<<<<< * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 407, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 407, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 407, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 411, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; + __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u__10); + __pyx_t_2 += 4; + __Pyx_GIVEREF(__pyx_kp_u__10); + PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__10); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 411, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_5), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; + __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4); + __pyx_t_4 = 0; + __Pyx_INCREF(__pyx_kp_u__10); + __pyx_t_2 += 4; + __Pyx_GIVEREF(__pyx_kp_u__10); + PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u__10); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 411, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; + __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u_with); + __pyx_t_2 += 8; + __Pyx_GIVEREF(__pyx_kp_u_with); + PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u_with); - /* "cython/interface.pyx":408 + /* "cython/interface.pyx":412 * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ * % (self.name, self.instance, self.options, * len(self), '' if len(self) == 1 else 's', # <<<<<<<<<<<<<< * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) */ - __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 408, __pyx_L1_error) - __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 408, __pyx_L1_error) + __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_6, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 408, __pyx_L1_error) - if (((__pyx_t_4 == 1) != 0)) { + __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u_problem); + __pyx_t_2 += 8; + __Pyx_GIVEREF(__pyx_kp_u_problem); + PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_kp_u_problem); + __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 412, __pyx_L1_error) + if (((__pyx_t_6 == 1) != 0)) { __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_6 = __pyx_kp_u__2; + __pyx_t_5 = __pyx_kp_u__2; } else { __Pyx_INCREF(__pyx_n_u_s); - __pyx_t_6 = __pyx_n_u_s; + __pyx_t_5 = __pyx_n_u_s; } + __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 412, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; + __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_1, 9, __pyx_t_4); + __pyx_t_4 = 0; + __Pyx_INCREF(__pyx_kp_u_in_dimension); + __pyx_t_2 += 13; + __Pyx_GIVEREF(__pyx_kp_u_in_dimension); + PyTuple_SET_ITEM(__pyx_t_1, 10, __pyx_kp_u_in_dimension); - /* "cython/interface.pyx":409 + /* "cython/interface.pyx":413 * % (self.name, self.instance, self.options, * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', # <<<<<<<<<<<<<< * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 409, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_4 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 409, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (((__pyx_t_4 == 1) != 0)) { + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 413, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 413, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (((__pyx_t_6 == 1) != 0)) { __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_7 = __pyx_kp_u__2; + __pyx_t_4 = __pyx_kp_u__2; } else { __Pyx_INCREF(__pyx_n_u_s); - __pyx_t_7 = __pyx_n_u_s; + __pyx_t_4 = __pyx_n_u_s; } + __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 413, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; + __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 11, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u__11); + __pyx_t_2 += 1; + __Pyx_GIVEREF(__pyx_kp_u__11); + PyTuple_SET_ITEM(__pyx_t_1, 12, __pyx_kp_u__11); - /* "cython/interface.pyx":410 + /* "cython/interface.pyx":414 * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) # <<<<<<<<<<<<<< * def __len__(self): * return len(self._indices) */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 410, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 414, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = 0; + __pyx_t_7 = 127; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 410, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_8); - PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); - __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_min, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 410, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_8, __pyx_n_u_d); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); + __pyx_t_4 = 0; + __Pyx_INCREF(__pyx_kp_u__12); + __pyx_t_6 += 1; + __Pyx_GIVEREF(__pyx_kp_u__12); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_kp_u__12); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 410, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 410, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); - __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 410, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 410, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_8); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); - __pyx_t_8 = 0; - __pyx_t_9 = 0; - __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 410, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_8, __pyx_n_u_d); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; + __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_1, 13, __pyx_t_4); + __pyx_t_4 = 0; - /* "cython/interface.pyx":407 + /* "cython/interface.pyx":410 + * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets * def __str__(self): - * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ - * % (self.name, self.instance, self.options, # <<<<<<<<<<<<<< + * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ # <<<<<<<<<<<<<< + * % (self.name, self.instance, self.options, * len(self), '' if len(self) == 1 else 's', - * '' if len(self.dimensions) == 1 else 's', */ - __pyx_t_10 = PyTuple_New(7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 407, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_10, 4, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_10, 5, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_10, 6, __pyx_t_9); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_3 = 0; - __pyx_t_5 = 0; - __pyx_t_6 = 0; - __pyx_t_7 = 0; - __pyx_t_9 = 0; - __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 407, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_r = __pyx_t_9; - __pyx_t_9 = 0; + __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 14, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 410, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":405 + /* "cython/interface.pyx":409 * def __repr__(self): * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets * def __str__(self): # <<<<<<<<<<<<<< @@ -6848,14 +7112,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("cocoex.interface.Suite.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -6864,7 +7123,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 return __pyx_r; } -/* "cython/interface.pyx":411 +/* "cython/interface.pyx":415 * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): # <<<<<<<<<<<<<< @@ -6892,7 +7151,7 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ Py_ssize_t __pyx_t_2; __Pyx_RefNannySetupContext("__len__", 0); - /* "cython/interface.pyx":412 + /* "cython/interface.pyx":416 * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): * return len(self._indices) # <<<<<<<<<<<<<< @@ -6901,12 +7160,12 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ */ __pyx_t_1 = __pyx_v_self->_indices; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 416, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; goto __pyx_L0; - /* "cython/interface.pyx":411 + /* "cython/interface.pyx":415 * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): # <<<<<<<<<<<<<< @@ -6925,7 +7184,7 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ } static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ -/* "cython/interface.pyx":414 +/* "cython/interface.pyx":418 * return len(self._indices) * * def __iter__(self): # <<<<<<<<<<<<<< @@ -6959,7 +7218,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_ if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)Py_None); __Pyx_INCREF(Py_None); - __PYX_ERR(0, 414, __pyx_L1_error) + __PYX_ERR(0, 418, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } @@ -6967,7 +7226,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_ __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); { - __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6cocoex_9interface_5Suite_28generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_Suite___iter, __pyx_n_s_cocoex_interface); if (unlikely(!gen)) __PYX_ERR(0, 414, __pyx_L1_error) + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6cocoex_9interface_5Suite_28generator, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_Suite___iter, __pyx_n_s_cocoex_interface); if (unlikely(!gen)) __PYX_ERR(0, 418, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; @@ -6998,8 +7257,8 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO PyObject *__pyx_t_9 = NULL; int __pyx_t_10; int __pyx_t_11; - int __pyx_t_12; - PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_12 = NULL; + int __pyx_t_13; int __pyx_t_14; char const *__pyx_t_15; PyObject *__pyx_t_16 = NULL; @@ -7013,9 +7272,9 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO return NULL; } __pyx_L3_first_run:; - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 414, __pyx_L1_error) + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 418, __pyx_L1_error) - /* "cython/interface.pyx":421 + /* "cython/interface.pyx":425 * rewinds the suite to the initial state. """ * if 1 < 3: * s = self # <<<<<<<<<<<<<< @@ -7026,14 +7285,14 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); __pyx_cur_scope->__pyx_v_s = __pyx_cur_scope->__pyx_v_self; - /* "cython/interface.pyx":422 + /* "cython/interface.pyx":426 * if 1 < 3: * s = self * s.reset() # <<<<<<<<<<<<<< * else: * s = Suite(self.name, self.instance, self.options) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_reset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 422, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_reset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -7046,16 +7305,16 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 422, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 422, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":425 + /* "cython/interface.pyx":429 * else: * s = Suite(self.name, self.instance, self.options) * try: # <<<<<<<<<<<<<< @@ -7070,7 +7329,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XGOTREF(__pyx_t_6); /*try:*/ { - /* "cython/interface.pyx":426 + /* "cython/interface.pyx":430 * s = Suite(self.name, self.instance, self.options) * try: * while True: # <<<<<<<<<<<<<< @@ -7079,7 +7338,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ while (1) { - /* "cython/interface.pyx":427 + /* "cython/interface.pyx":431 * try: * while True: * try: # <<<<<<<<<<<<<< @@ -7093,14 +7352,14 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XGOTREF(__pyx_t_9); /*try:*/ { - /* "cython/interface.pyx":428 + /* "cython/interface.pyx":432 * while True: * try: * problem = s.next_problem() # <<<<<<<<<<<<<< * if problem is None: * return # StopIteration is deprecated */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_next_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 428, __pyx_L15_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_next_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 432, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -7113,10 +7372,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L15_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L15_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L15_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L15_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -7125,7 +7384,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":429 + /* "cython/interface.pyx":433 * try: * problem = s.next_problem() * if problem is None: # <<<<<<<<<<<<<< @@ -7136,7 +7395,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_11 = (__pyx_t_10 != 0); if (__pyx_t_11) { - /* "cython/interface.pyx":430 + /* "cython/interface.pyx":434 * problem = s.next_problem() * if problem is None: * return # StopIteration is deprecated # <<<<<<<<<<<<<< @@ -7147,7 +7406,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_r = NULL; goto __pyx_L19_try_return; - /* "cython/interface.pyx":429 + /* "cython/interface.pyx":433 * try: * problem = s.next_problem() * if problem is None: # <<<<<<<<<<<<<< @@ -7156,7 +7415,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ } - /* "cython/interface.pyx":427 + /* "cython/interface.pyx":431 * try: * while True: * try: # <<<<<<<<<<<<<< @@ -7173,25 +7432,28 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":432 + /* "cython/interface.pyx":436 * return # StopIteration is deprecated * raise StopIteration * except NoSuchProblemException: # <<<<<<<<<<<<<< * return # StopIteration is deprecated * raise StopIteration */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L17_except_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_12) { + __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 436, __pyx_L17_except_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_12); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; + if (__pyx_t_13) { __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 432, __pyx_L17_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 436, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GOTREF(__pyx_t_1); - /* "cython/interface.pyx":433 + /* "cython/interface.pyx":437 * raise StopIteration * except NoSuchProblemException: * return # StopIteration is deprecated # <<<<<<<<<<<<<< @@ -7208,7 +7470,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO goto __pyx_L17_except_error; __pyx_L17_except_error:; - /* "cython/interface.pyx":427 + /* "cython/interface.pyx":431 * try: * while True: * try: # <<<<<<<<<<<<<< @@ -7235,7 +7497,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_L22_try_end:; } - /* "cython/interface.pyx":435 + /* "cython/interface.pyx":439 * return # StopIteration is deprecated * raise StopIteration * yield problem # <<<<<<<<<<<<<< @@ -7266,10 +7528,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_6 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_6); - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 435, __pyx_L7_error) + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 439, __pyx_L7_error) } - /* "cython/interface.pyx":425 + /* "cython/interface.pyx":429 * else: * s = Suite(self.name, self.instance, self.options) * try: # <<<<<<<<<<<<<< @@ -7282,11 +7544,12 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L12_try_end; __pyx_L7_error:; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":436 + /* "cython/interface.pyx":440 * raise StopIteration * yield problem * except: # <<<<<<<<<<<<<< @@ -7295,28 +7558,28 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 436, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 440, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GOTREF(__pyx_t_3); - /* "cython/interface.pyx":437 + /* "cython/interface.pyx":441 * yield problem * except: * raise # <<<<<<<<<<<<<< * finally: # makes this ctrl-c safe, at least it should * s is self or s.free() */ - __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_1); - __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; - __PYX_ERR(0, 437, __pyx_L9_except_error) + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; + __PYX_ERR(0, 441, __pyx_L9_except_error) } __pyx_L9_except_error:; - /* "cython/interface.pyx":425 + /* "cython/interface.pyx":429 * else: * s = Suite(self.name, self.instance, self.options) * try: # <<<<<<<<<<<<<< @@ -7338,7 +7601,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } - /* "cython/interface.pyx":439 + /* "cython/interface.pyx":443 * raise * finally: # makes this ctrl-c safe, at least it should * s is self or s.free() # <<<<<<<<<<<<<< @@ -7350,46 +7613,47 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); if (!__pyx_t_11) { } else { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; + __pyx_t_3 = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L29_bool_binop_done; } - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 439, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_13 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_13)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_13); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 443, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_12 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); + __Pyx_DECREF_SET(__pyx_t_1, function); } } - if (__pyx_t_13) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (__pyx_t_12) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_INCREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; + __pyx_t_3 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_L29_bool_binop_done:; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L6; } __pyx_L5_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_6); @@ -7398,42 +7662,42 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_7); - __pyx_t_12 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename; + __pyx_t_13 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename; { __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); if (!__pyx_t_11) { } else { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L32_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L32_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; + __pyx_t_3 = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L33_bool_binop_done; } - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 439, __pyx_L32_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_13 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_13)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_13); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 443, __pyx_L32_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_12 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); + __Pyx_DECREF_SET(__pyx_t_1, function); } } - if (__pyx_t_13) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L32_error) - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (__pyx_t_12) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L32_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L32_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L32_error) } __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_INCREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; + __pyx_t_3 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_L33_bool_binop_done:; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_9); @@ -7446,7 +7710,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ErrRestore(__pyx_t_6, __pyx_t_5, __pyx_t_4); __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; - __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15; + __pyx_lineno = __pyx_t_13; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15; goto __pyx_L1_error; __pyx_L32_error:; if (PY_MAJOR_VERSION >= 3) { @@ -7477,37 +7741,37 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); if (!__pyx_t_11) { } else { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; + __pyx_t_3 = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L35_bool_binop_done; } - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 439, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_13 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_13)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_13); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 443, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_12 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); + __Pyx_DECREF_SET(__pyx_t_1, function); } } - if (__pyx_t_13) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (__pyx_t_12) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_INCREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; + __pyx_t_3 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_L35_bool_binop_done:; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_16; __pyx_t_16 = 0; if (PY_MAJOR_VERSION >= 3) { @@ -7527,7 +7791,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); - /* "cython/interface.pyx":414 + /* "cython/interface.pyx":418 * return len(self._indices) * * def __iter__(self): # <<<<<<<<<<<<<< @@ -7542,7 +7806,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_12); __Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; @@ -7584,7 +7848,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_29__reduce_cython__(CYTHON_U * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -7637,7 +7901,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_31__setstate_cython__(CYTHON * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -7660,7 +7924,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_31__setstate_cython__(CYTHON return __pyx_r; } -/* "cython/interface.pyx":448 +/* "cython/interface.pyx":452 * cdef _state * * def __cinit__(self, name, options): # <<<<<<<<<<<<<< @@ -7693,17 +7957,17 @@ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_se kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--; + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(0, 448, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(0, 452, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 448, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 452, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -7716,7 +7980,7 @@ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_se } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 448, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 452, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Observer.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -7748,7 +8012,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_RefNannySetupContext("__cinit__", 0); __Pyx_INCREF(__pyx_v_options); - /* "cython/interface.pyx":449 + /* "cython/interface.pyx":453 * * def __cinit__(self, name, options): * if isinstance(options, dict): # <<<<<<<<<<<<<< @@ -7759,57 +8023,51 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":450 + /* "cython/interface.pyx":454 * def __cinit__(self, name, options): * if isinstance(options, dict): * s = str(options).replace(',', ' ') # <<<<<<<<<<<<<< * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') */ - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 450, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_options); - __Pyx_GIVEREF(__pyx_v_options); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_options); - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 450, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_replace); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 450, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_s = __pyx_t_4; - __pyx_t_4 = 0; + __pyx_v_s = __pyx_t_3; + __pyx_t_3 = 0; - /* "cython/interface.pyx":451 + /* "cython/interface.pyx":455 * if isinstance(options, dict): * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: # <<<<<<<<<<<<<< * s = s.replace(c, '') * options = s */ - __pyx_t_4 = __pyx_tuple__17; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; + __pyx_t_3 = __pyx_tuple__21; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0; for (;;) { if (__pyx_t_5 >= 6) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 451, __pyx_L1_error) + __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 455, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 451, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 455, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); #endif - __Pyx_XDECREF_SET(__pyx_v_c, ((PyObject*)__pyx_t_3)); - __pyx_t_3 = 0; + __Pyx_XDECREF_SET(__pyx_v_c, ((PyObject*)__pyx_t_4)); + __pyx_t_4 = 0; - /* "cython/interface.pyx":452 + /* "cython/interface.pyx":456 * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') # <<<<<<<<<<<<<< * options = s * self._name = _bstring(name) */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 452, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 456, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; @@ -7826,21 +8084,21 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_c, __pyx_kp_u__2}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 456, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_t_4); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_c, __pyx_kp_u__2}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 456, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_t_4); } else #endif { - __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 452, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 456, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; @@ -7851,15 +8109,15 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_INCREF(__pyx_kp_u__2); __Pyx_GIVEREF(__pyx_kp_u__2); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_kp_u__2); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 456, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_3); - __pyx_t_3 = 0; + __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_4); + __pyx_t_4 = 0; - /* "cython/interface.pyx":451 + /* "cython/interface.pyx":455 * if isinstance(options, dict): * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: # <<<<<<<<<<<<<< @@ -7867,9 +8125,9 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * options = s */ } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":453 + /* "cython/interface.pyx":457 * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') * options = s # <<<<<<<<<<<<<< @@ -7879,7 +8137,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_INCREF(__pyx_v_s); __Pyx_DECREF_SET(__pyx_v_options, __pyx_v_s); - /* "cython/interface.pyx":449 + /* "cython/interface.pyx":453 * * def __cinit__(self, name, options): * if isinstance(options, dict): # <<<<<<<<<<<<<< @@ -7888,22 +8146,22 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc */ } - /* "cython/interface.pyx":454 + /* "cython/interface.pyx":458 * s = s.replace(c, '') * options = s * self._name = _bstring(name) # <<<<<<<<<<<<<< * self._options = _bstring(options if options is not None else "") * self._observer = coco_observer(self._name, self._options) */ - __pyx_t_4 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 454, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 458, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_name); __Pyx_DECREF(__pyx_v_self->_name); - __pyx_v_self->_name = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; + __pyx_v_self->_name = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; - /* "cython/interface.pyx":455 + /* "cython/interface.pyx":459 * options = s * self._name = _bstring(name) * self._options = _bstring(options if options is not None else "") # <<<<<<<<<<<<<< @@ -7913,21 +8171,21 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __pyx_t_2 = (__pyx_v_options != Py_None); if ((__pyx_t_2 != 0)) { __Pyx_INCREF(__pyx_v_options); - __pyx_t_4 = __pyx_v_options; + __pyx_t_3 = __pyx_v_options; } else { __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_4 = __pyx_kp_u__2; + __pyx_t_3 = __pyx_kp_u__2; } - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_4 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 459, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->_options); __Pyx_DECREF(__pyx_v_self->_options); - __pyx_v_self->_options = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_v_self->_options = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; - /* "cython/interface.pyx":456 + /* "cython/interface.pyx":460 * self._name = _bstring(name) * self._options = _bstring(options if options is not None else "") * self._observer = coco_observer(self._name, self._options) # <<<<<<<<<<<<<< @@ -7936,17 +8194,17 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc */ if (unlikely(__pyx_v_self->_name == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 456, __pyx_L1_error) + __PYX_ERR(0, 460, __pyx_L1_error) } - __pyx_t_10 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 456, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 460, __pyx_L1_error) if (unlikely(__pyx_v_self->_options == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 456, __pyx_L1_error) + __PYX_ERR(0, 460, __pyx_L1_error) } - __pyx_t_11 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 456, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 460, __pyx_L1_error) __pyx_v_self->_observer = coco_observer(__pyx_t_10, __pyx_t_11); - /* "cython/interface.pyx":457 + /* "cython/interface.pyx":461 * self._options = _bstring(options if options is not None else "") * self._observer = coco_observer(self._name, self._options) * self._state = 'initialized' # <<<<<<<<<<<<<< @@ -7959,7 +8217,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->_state); __pyx_v_self->_state = __pyx_n_u_initialized; - /* "cython/interface.pyx":448 + /* "cython/interface.pyx":452 * cdef _state * * def __cinit__(self, name, options): # <<<<<<<<<<<<<< @@ -7986,7 +8244,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":459 +/* "cython/interface.pyx":463 * self._state = 'initialized' * * def _update_current_observer_global(self): # <<<<<<<<<<<<<< @@ -8014,7 +8272,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer coco_observer_t *__pyx_t_1; __Pyx_RefNannySetupContext("_update_current_observer_global", 0); - /* "cython/interface.pyx":463 + /* "cython/interface.pyx":467 * for purely technical reasons""" * global _current_observer * _current_observer = self._observer # <<<<<<<<<<<<<< @@ -8024,7 +8282,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer __pyx_t_1 = __pyx_v_self->_observer; __pyx_v_6cocoex_9interface__current_observer = __pyx_t_1; - /* "cython/interface.pyx":459 + /* "cython/interface.pyx":463 * self._state = 'initialized' * * def _update_current_observer_global(self): # <<<<<<<<<<<<<< @@ -8039,7 +8297,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer return __pyx_r; } -/* "cython/interface.pyx":465 +/* "cython/interface.pyx":469 * _current_observer = self._observer * * def observe(self, problem): # <<<<<<<<<<<<<< @@ -8070,14 +8328,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("observe", 0); - /* "cython/interface.pyx":469 + /* "cython/interface.pyx":473 * calling `problem.observe_with(self)`. * """ * problem.observe_with(self) # <<<<<<<<<<<<<< * return self * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 469, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -8090,13 +8348,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 469, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 469, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -8104,19 +8362,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 469, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 469, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 469, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } @@ -8124,7 +8382,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":470 + /* "cython/interface.pyx":474 * """ * problem.observe_with(self) * return self # <<<<<<<<<<<<<< @@ -8136,7 +8394,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":465 + /* "cython/interface.pyx":469 * _current_observer = self._observer * * def observe(self, problem): # <<<<<<<<<<<<<< @@ -8158,7 +8416,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj return __pyx_r; } -/* "cython/interface.pyx":473 +/* "cython/interface.pyx":477 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -8184,7 +8442,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":477 + /* "cython/interface.pyx":481 * `self` before. * """ * return self._name # <<<<<<<<<<<<<< @@ -8196,7 +8454,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __py __pyx_r = __pyx_v_self->_name; goto __pyx_L0; - /* "cython/interface.pyx":473 + /* "cython/interface.pyx":477 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -8211,7 +8469,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":479 +/* "cython/interface.pyx":483 * return self._name * @property * def options(self): # <<<<<<<<<<<<<< @@ -8237,7 +8495,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct _ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":480 + /* "cython/interface.pyx":484 * @property * def options(self): * return self._options # <<<<<<<<<<<<<< @@ -8249,7 +8507,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct _ __pyx_r = __pyx_v_self->_options; goto __pyx_L0; - /* "cython/interface.pyx":479 + /* "cython/interface.pyx":483 * return self._name * @property * def options(self): # <<<<<<<<<<<<<< @@ -8264,7 +8522,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct _ return __pyx_r; } -/* "cython/interface.pyx":482 +/* "cython/interface.pyx":486 * return self._options * @property * def state(self): # <<<<<<<<<<<<<< @@ -8290,7 +8548,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __p __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":483 + /* "cython/interface.pyx":487 * @property * def state(self): * return self._state # <<<<<<<<<<<<<< @@ -8302,7 +8560,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __p __pyx_r = __pyx_v_self->_state; goto __pyx_L0; - /* "cython/interface.pyx":482 + /* "cython/interface.pyx":486 * return self._options * @property * def state(self): # <<<<<<<<<<<<<< @@ -8317,7 +8575,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __p return __pyx_r; } -/* "cython/interface.pyx":485 +/* "cython/interface.pyx":489 * return self._state * @property * def result_folder(self): # <<<<<<<<<<<<<< @@ -8344,7 +8602,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_13result_folder___get__(s PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":486 + /* "cython/interface.pyx":490 * @property * def result_folder(self): * return coco_observer_get_result_folder(self._observer) # <<<<<<<<<<<<<< @@ -8352,13 +8610,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_13result_folder___get__(s * def free(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyStr_FromString(coco_observer_get_result_folder(__pyx_v_self->_observer)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 486, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyStr_FromString(coco_observer_get_result_folder(__pyx_v_self->_observer)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":485 + /* "cython/interface.pyx":489 * return self._state * @property * def result_folder(self): # <<<<<<<<<<<<<< @@ -8377,7 +8635,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_13result_folder___get__(s return __pyx_r; } -/* "cython/interface.pyx":488 +/* "cython/interface.pyx":492 * return coco_observer_get_result_folder(self._observer) * * def free(self): # <<<<<<<<<<<<<< @@ -8406,14 +8664,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("free", 0); - /* "cython/interface.pyx":489 + /* "cython/interface.pyx":493 * * def free(self): * self.__dealloc__() # <<<<<<<<<<<<<< * self._observer = NULL * self._state = 'deactivated' */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dealloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 489, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dealloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -8426,16 +8684,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 489, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 493, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 489, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 493, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":490 + /* "cython/interface.pyx":494 * def free(self): * self.__dealloc__() * self._observer = NULL # <<<<<<<<<<<<<< @@ -8444,7 +8702,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c */ __pyx_v_self->_observer = NULL; - /* "cython/interface.pyx":491 + /* "cython/interface.pyx":495 * self.__dealloc__() * self._observer = NULL * self._state = 'deactivated' # <<<<<<<<<<<<<< @@ -8457,7 +8715,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c __Pyx_DECREF(__pyx_v_self->_state); __pyx_v_self->_state = __pyx_n_u_deactivated; - /* "cython/interface.pyx":488 + /* "cython/interface.pyx":492 * return coco_observer_get_result_folder(self._observer) * * def free(self): # <<<<<<<<<<<<<< @@ -8480,7 +8738,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c return __pyx_r; } -/* "cython/interface.pyx":492 +/* "cython/interface.pyx":496 * self._observer = NULL * self._state = 'deactivated' * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -8504,7 +8762,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ int __pyx_t_1; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "cython/interface.pyx":493 + /* "cython/interface.pyx":497 * self._state = 'deactivated' * def __dealloc__(self): * if self._observer != NULL: # <<<<<<<<<<<<<< @@ -8514,7 +8772,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ __pyx_t_1 = ((__pyx_v_self->_observer != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":494 + /* "cython/interface.pyx":498 * def __dealloc__(self): * if self._observer != NULL: * coco_observer_free(self._observer) # <<<<<<<<<<<<<< @@ -8523,7 +8781,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ */ coco_observer_free(__pyx_v_self->_observer); - /* "cython/interface.pyx":493 + /* "cython/interface.pyx":497 * self._state = 'deactivated' * def __dealloc__(self): * if self._observer != NULL: # <<<<<<<<<<<<<< @@ -8532,7 +8790,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ */ } - /* "cython/interface.pyx":492 + /* "cython/interface.pyx":496 * self._observer = NULL * self._state = 'deactivated' * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -8575,7 +8833,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_10__reduce_cython__(CYTHO * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -8628,7 +8886,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_12__setstate_cython__(CYT * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -8651,7 +8909,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_12__setstate_cython__(CYT return __pyx_r; } -/* "cython/interface.pyx":496 +/* "cython/interface.pyx":500 * coco_observer_free(self._observer) * * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< @@ -8677,19 +8935,19 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v } } - /* "cython/interface.pyx":502 + /* "cython/interface.pyx":506 * This is necessary because __cinit__ cannot be defined as cdef, only as def. * """ * res = Problem() # <<<<<<<<<<<<<< * res._suite_name = suite_name * return res._initialize(problem, free) */ - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6cocoex_9interface_Problem), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 502, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6cocoex_9interface_Problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_res = ((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":503 + /* "cython/interface.pyx":507 * """ * res = Problem() * res._suite_name = suite_name # <<<<<<<<<<<<<< @@ -8702,7 +8960,7 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v __Pyx_DECREF(__pyx_v_res->_suite_name); __pyx_v_res->_suite_name = __pyx_v_suite_name; - /* "cython/interface.pyx":504 + /* "cython/interface.pyx":508 * res = Problem() * res._suite_name = suite_name * return res._initialize(problem, free) # <<<<<<<<<<<<<< @@ -8712,13 +8970,13 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v __Pyx_XDECREF(__pyx_r); __pyx_t_2.__pyx_n = 1; __pyx_t_2.free = __pyx_v_free; - __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Problem *)__pyx_v_res->__pyx_vtab)->_initialize(__pyx_v_res, __pyx_v_problem, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Problem *)__pyx_v_res->__pyx_vtab)->_initialize(__pyx_v_res, __pyx_v_problem, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":496 + /* "cython/interface.pyx":500 * coco_observer_free(self._observer) * * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< @@ -8738,7 +8996,7 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v return __pyx_r; } -/* "cython/interface.pyx":523 +/* "cython/interface.pyx":528 * cdef _initial_solution_proposal_calls * cdef initialized * def __cinit__(self): # <<<<<<<<<<<<<< @@ -8767,7 +9025,7 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__", 0); - /* "cython/interface.pyx":525 + /* "cython/interface.pyx":530 * def __cinit__(self): * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize # <<<<<<<<<<<<<< @@ -8780,7 +9038,7 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_False; - /* "cython/interface.pyx":523 + /* "cython/interface.pyx":528 * cdef _initial_solution_proposal_calls * cdef initialized * def __cinit__(self): # <<<<<<<<<<<<<< @@ -8794,7 +9052,7 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco return __pyx_r; } -/* "cython/interface.pyx":526 +/* "cython/interface.pyx":531 * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< @@ -8816,6 +9074,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob PyObject *__pyx_t_7 = NULL; size_t __pyx_t_8; size_t __pyx_t_9; + size_t __pyx_t_10; __Pyx_RefNannySetupContext("_initialize", 0); if (__pyx_optional_args) { if (__pyx_optional_args->__pyx_n > 0) { @@ -8823,30 +9082,30 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } - /* "cython/interface.pyx":528 + /* "cython/interface.pyx":533 * cdef _initialize(self, coco_problem_t* problem, free=True): * cdef np.npy_intp shape[1] * if self.initialized: # <<<<<<<<<<<<<< * raise RuntimeError("Problem already initialized") * if problem == NULL: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 528, __pyx_L1_error) - if (__pyx_t_1) { + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 533, __pyx_L1_error) + if (unlikely(__pyx_t_1)) { - /* "cython/interface.pyx":529 + /* "cython/interface.pyx":534 * cdef np.npy_intp shape[1] * if self.initialized: * raise RuntimeError("Problem already initialized") # <<<<<<<<<<<<<< * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 529, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 529, __pyx_L1_error) + __PYX_ERR(0, 534, __pyx_L1_error) - /* "cython/interface.pyx":528 + /* "cython/interface.pyx":533 * cdef _initialize(self, coco_problem_t* problem, free=True): * cdef np.npy_intp shape[1] * if self.initialized: # <<<<<<<<<<<<<< @@ -8855,7 +9114,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ } - /* "cython/interface.pyx":530 + /* "cython/interface.pyx":535 * if self.initialized: * raise RuntimeError("Problem already initialized") * if problem == NULL: # <<<<<<<<<<<<<< @@ -8863,22 +9122,22 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self.problem = problem */ __pyx_t_1 = ((__pyx_v_problem == NULL) != 0); - if (__pyx_t_1) { + if (unlikely(__pyx_t_1)) { - /* "cython/interface.pyx":531 + /* "cython/interface.pyx":536 * raise RuntimeError("Problem already initialized") * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") # <<<<<<<<<<<<<< * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 531, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 531, __pyx_L1_error) + __PYX_ERR(0, 536, __pyx_L1_error) - /* "cython/interface.pyx":530 + /* "cython/interface.pyx":535 * if self.initialized: * raise RuntimeError("Problem already initialized") * if problem == NULL: # <<<<<<<<<<<<<< @@ -8887,7 +9146,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ } - /* "cython/interface.pyx":532 + /* "cython/interface.pyx":537 * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") * self.problem = problem # <<<<<<<<<<<<<< @@ -8896,14 +9155,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->problem = __pyx_v_problem; - /* "cython/interface.pyx":533 + /* "cython/interface.pyx":538 * raise ValueError("in Problem._initialize(problem,...): problem is NULL") * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) # <<<<<<<<<<<<<< * self._do_free = free * self._list_of_observers = [] */ - __pyx_t_2 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 533, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_problem_index); @@ -8911,7 +9170,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_v_self->_problem_index = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":534 + /* "cython/interface.pyx":539 * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) * self._do_free = free # <<<<<<<<<<<<<< @@ -8924,14 +9183,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_v_self->_do_free); __pyx_v_self->_do_free = __pyx_v_free; - /* "cython/interface.pyx":535 + /* "cython/interface.pyx":540 * self._problem_index = coco_problem_get_suite_dep_index(self.problem) * self._do_free = free * self._list_of_observers = [] # <<<<<<<<<<<<<< * # _problem_suite = _bstring(problem_suite) * # self.problem_suite = _problem_suite */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 535, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_list_of_observers); @@ -8939,7 +9198,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_v_self->_list_of_observers = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":540 + /* "cython/interface.pyx":545 * # Implicit type conversion via passing safe, * # see http://docs.cython.org/src/userguide/language_basics.html * self._number_of_variables = coco_problem_get_dimension(self.problem) # <<<<<<<<<<<<<< @@ -8948,37 +9207,46 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->_number_of_variables = coco_problem_get_dimension(__pyx_v_self->problem); - /* "cython/interface.pyx":541 + /* "cython/interface.pyx":546 * # see http://docs.cython.org/src/userguide/language_basics.html * self._number_of_variables = coco_problem_get_dimension(self.problem) * self._number_of_objectives = coco_problem_get_number_of_objectives(self.problem) # <<<<<<<<<<<<<< * self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) - * self.y_values = np.zeros(self._number_of_objectives) + * self._number_of_integer_variables = coco_problem_get_number_of_integer_variables(self.problem) */ __pyx_v_self->_number_of_objectives = coco_problem_get_number_of_objectives(__pyx_v_self->problem); - /* "cython/interface.pyx":542 + /* "cython/interface.pyx":547 * self._number_of_variables = coco_problem_get_dimension(self.problem) * self._number_of_objectives = coco_problem_get_number_of_objectives(self.problem) * self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) # <<<<<<<<<<<<<< + * self._number_of_integer_variables = coco_problem_get_number_of_integer_variables(self.problem) * self.y_values = np.zeros(self._number_of_objectives) - * self.constraint_values = np.zeros(self._number_of_constraints) */ __pyx_v_self->_number_of_constraints = coco_problem_get_number_of_constraints(__pyx_v_self->problem); - /* "cython/interface.pyx":543 + /* "cython/interface.pyx":548 * self._number_of_objectives = coco_problem_get_number_of_objectives(self.problem) * self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) + * self._number_of_integer_variables = coco_problem_get_number_of_integer_variables(self.problem) # <<<<<<<<<<<<<< + * self.y_values = np.zeros(self._number_of_objectives) + * self.constraint_values = np.zeros(self._number_of_constraints) + */ + __pyx_v_self->_number_of_integer_variables = coco_problem_get_number_of_integer_variables(__pyx_v_self->problem); + + /* "cython/interface.pyx":549 + * self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) + * self._number_of_integer_variables = coco_problem_get_number_of_integer_variables(self.problem) * self.y_values = np.zeros(self._number_of_objectives) # <<<<<<<<<<<<<< * self.constraint_values = np.zeros(self._number_of_constraints) * self.x_initial = np.zeros(self._number_of_variables) */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 543, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 543, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 543, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -8991,14 +9259,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_5) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 543, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 543, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -9007,45 +9275,45 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 543, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 543, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 543, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 543, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->y_values); __Pyx_DECREF(((PyObject *)__pyx_v_self->y_values)); __pyx_v_self->y_values = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":544 - * self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) + /* "cython/interface.pyx":550 + * self._number_of_integer_variables = coco_problem_get_number_of_integer_variables(self.problem) * self.y_values = np.zeros(self._number_of_objectives) * self.constraint_values = np.zeros(self._number_of_constraints) # <<<<<<<<<<<<<< * self.x_initial = np.zeros(self._number_of_variables) * self._initial_solution_proposal_calls = 0 */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 544, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 544, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 544, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { @@ -9058,14 +9326,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 544, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 544, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -9074,45 +9342,45 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 544, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 544, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 544, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 544, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->constraint_values); __Pyx_DECREF(((PyObject *)__pyx_v_self->constraint_values)); __pyx_v_self->constraint_values = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":545 + /* "cython/interface.pyx":551 * self.y_values = np.zeros(self._number_of_objectives) * self.constraint_values = np.zeros(self._number_of_constraints) * self.x_initial = np.zeros(self._number_of_variables) # <<<<<<<<<<<<<< * self._initial_solution_proposal_calls = 0 * ## FIXME: Inefficient because we copy the bounds instead of */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 545, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 545, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 545, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { @@ -9125,14 +9393,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -9141,33 +9409,33 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 545, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_6); __pyx_t_6 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 545, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->x_initial); __Pyx_DECREF(((PyObject *)__pyx_v_self->x_initial)); __pyx_v_self->x_initial = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":546 + /* "cython/interface.pyx":552 * self.constraint_values = np.zeros(self._number_of_constraints) * self.x_initial = np.zeros(self._number_of_variables) * self._initial_solution_proposal_calls = 0 # <<<<<<<<<<<<<< @@ -9180,27 +9448,27 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_v_self->_initial_solution_proposal_calls); __pyx_v_self->_initial_solution_proposal_calls = __pyx_int_0; - /* "cython/interface.pyx":549 + /* "cython/interface.pyx":555 * ## FIXME: Inefficient because we copy the bounds instead of * ## sharing the data. * self._lower_bounds = -np.inf * np.ones(self._number_of_variables) # <<<<<<<<<<<<<< * self._upper_bounds = np.inf * np.ones(self._number_of_variables) * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_2 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { @@ -9213,14 +9481,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_4) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_5); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; - __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -9229,54 +9497,54 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; - __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 549, __pyx_L1_error) + if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_6); __Pyx_GOTREF(__pyx_v_self->_lower_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_lower_bounds)); __pyx_v_self->_lower_bounds = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":550 + /* "cython/interface.pyx":556 * ## sharing the data. * self._lower_bounds = -np.inf * np.ones(self._number_of_variables) * self._upper_bounds = np.inf * np.ones(self._number_of_variables) # <<<<<<<<<<<<<< * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { @@ -9289,14 +9557,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_3) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -9305,37 +9573,37 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2); __pyx_t_2 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyNumber_Multiply(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_7 = PyNumber_Multiply(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 550, __pyx_L1_error) + if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_self->_upper_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_upper_bounds)); __pyx_v_self->_upper_bounds = ((PyArrayObject *)__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":552 + /* "cython/interface.pyx":558 * self._upper_bounds = np.inf * np.ones(self._number_of_variables) * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): # <<<<<<<<<<<<<< @@ -9343,10 +9611,11 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] */ __pyx_t_8 = __pyx_v_self->_number_of_variables; - for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { - __pyx_v_i = __pyx_t_9; + __pyx_t_9 = __pyx_t_8; + for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { + __pyx_v_i = __pyx_t_10; - /* "cython/interface.pyx":553 + /* "cython/interface.pyx":559 * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -9356,19 +9625,19 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_1 = ((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem) != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":554 + /* "cython/interface.pyx":560 * for i in range(self._number_of_variables): * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] # <<<<<<<<<<<<<< * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] */ - __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 554, __pyx_L1_error) + __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_lower_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 554, __pyx_L1_error) + if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_lower_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":553 + /* "cython/interface.pyx":559 * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -9377,7 +9646,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ } - /* "cython/interface.pyx":555 + /* "cython/interface.pyx":561 * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -9387,19 +9656,19 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_1 = ((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem) != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":556 + /* "cython/interface.pyx":562 * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] # <<<<<<<<<<<<<< * self._largest_fvalues_of_interest = None * self.initialized = True */ - __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_upper_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 556, __pyx_L1_error) + if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_upper_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 562, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":555 + /* "cython/interface.pyx":561 * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -9409,7 +9678,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } - /* "cython/interface.pyx":557 + /* "cython/interface.pyx":563 * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] * self._largest_fvalues_of_interest = None # <<<<<<<<<<<<<< @@ -9422,7 +9691,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(((PyObject *)__pyx_v_self->_largest_fvalues_of_interest)); __pyx_v_self->_largest_fvalues_of_interest = ((PyArrayObject *)Py_None); - /* "cython/interface.pyx":558 + /* "cython/interface.pyx":564 * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] * self._largest_fvalues_of_interest = None * self.initialized = True # <<<<<<<<<<<<<< @@ -9435,7 +9704,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_True; - /* "cython/interface.pyx":559 + /* "cython/interface.pyx":565 * self._largest_fvalues_of_interest = None * self.initialized = True * return self # <<<<<<<<<<<<<< @@ -9447,7 +9716,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":526 + /* "cython/interface.pyx":531 * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< @@ -9471,7 +9740,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":560 +/* "cython/interface.pyx":566 * self.initialized = True * return self * def constraint(self, x): # <<<<<<<<<<<<<< @@ -9516,22 +9785,22 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_pybuffernd__x.data = NULL; __pyx_pybuffernd__x.rcbuffer = &__pyx_pybuffer__x; - /* "cython/interface.pyx":562 + /* "cython/interface.pyx":568 * def constraint(self, x): * """see __init__.py""" * if self.number_of_constraints <= 0: # <<<<<<<<<<<<<< * return # return None, prevent Python kernel from dying * # or should we return `[]` for zero constraints? */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 562, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 562, __pyx_L1_error) + __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 562, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 568, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { - /* "cython/interface.pyx":563 + /* "cython/interface.pyx":569 * """see __init__.py""" * if self.number_of_constraints <= 0: * return # return None, prevent Python kernel from dying # <<<<<<<<<<<<<< @@ -9542,7 +9811,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "cython/interface.pyx":562 + /* "cython/interface.pyx":568 * def constraint(self, x): * """see __init__.py""" * if self.number_of_constraints <= 0: # <<<<<<<<<<<<<< @@ -9551,35 +9820,35 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o */ } - /* "cython/interface.pyx":567 + /* "cython/interface.pyx":573 * # `[]` is more likely to produce quietly unexpected result? * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') # <<<<<<<<<<<<<< * if np.size(x) != self.number_of_variables: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 567, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 567, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 567, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); - __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 567, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 567, __pyx_L1_error) - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 567, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 567, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 567, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 567, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 567, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -9587,16 +9856,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":568 + /* "cython/interface.pyx":574 * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -9610,13 +9879,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o } } if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else @@ -9624,43 +9893,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else #endif { - __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_x); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_3) { + if (unlikely(__pyx_t_3)) { - /* "cython/interface.pyx":570 + /* "cython/interface.pyx":576 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 570, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 570, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -9674,13 +9943,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o } } if (!__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -9688,73 +9957,68 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 570, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 570, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":572 + /* "cython/interface.pyx":578 * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) # <<<<<<<<<<<<<< * _x = x # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 578, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":570 + /* "cython/interface.pyx":576 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":569 + /* "cython/interface.pyx":575 * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: * raise ValueError( # <<<<<<<<<<<<<< * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." */ - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 569, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 569, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 569, __pyx_L1_error) + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(0, 575, __pyx_L1_error) - /* "cython/interface.pyx":568 + /* "cython/interface.pyx":574 * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< @@ -9763,20 +10027,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o */ } - /* "cython/interface.pyx":573 + /* "cython/interface.pyx":579 * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) * _x = x # this is the final type conversion # <<<<<<<<<<<<<< * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 573, __pyx_L1_error) - __pyx_t_1 = __pyx_v_x; - __Pyx_INCREF(__pyx_t_1); + if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 579, __pyx_L1_error) + __pyx_t_4 = __pyx_v_x; + __Pyx_INCREF(__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__x.rcbuffer->pybuffer); - __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); + __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_4), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); if (unlikely(__pyx_t_7 < 0)) { PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)__pyx_v__x, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) { @@ -9788,12 +10052,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0; } __pyx_pybuffernd__x.diminfo[0].strides = __pyx_pybuffernd__x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__x.diminfo[0].shape = __pyx_pybuffernd__x.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 573, __pyx_L1_error) + if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 579, __pyx_L1_error) } - __pyx_v__x = ((PyArrayObject *)__pyx_t_1); - __pyx_t_1 = 0; + __pyx_v__x = ((PyArrayObject *)__pyx_t_4); + __pyx_t_4 = 0; - /* "cython/interface.pyx":574 + /* "cython/interface.pyx":580 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -9801,40 +10065,40 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o * coco_evaluate_constraint(self.problem, */ __pyx_t_3 = ((__pyx_v_self->problem == NULL) != 0); - if (__pyx_t_3) { + if (unlikely(__pyx_t_3)) { - /* "cython/interface.pyx":575 + /* "cython/interface.pyx":581 * _x = x # this is the final type conversion * if self.problem is NULL: * raise InvalidProblemException() # <<<<<<<<<<<<<< * coco_evaluate_constraint(self.problem, * np.PyArray_DATA(_x), */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 575, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); + __Pyx_DECREF_SET(__pyx_t_1, function); } } if (__pyx_t_6) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 581, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 581, __pyx_L1_error) } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 575, __pyx_L1_error) + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(0, 581, __pyx_L1_error) - /* "cython/interface.pyx":574 + /* "cython/interface.pyx":580 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -9843,27 +10107,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o */ } - /* "cython/interface.pyx":578 + /* "cython/interface.pyx":584 * coco_evaluate_constraint(self.problem, * np.PyArray_DATA(_x), * np.PyArray_DATA(self.constraint_values)) # <<<<<<<<<<<<<< * return np.array(self.constraint_values, copy=True) * def recommend(self, arx): */ - __pyx_t_1 = ((PyObject *)__pyx_v_self->constraint_values); - __Pyx_INCREF(__pyx_t_1); + __pyx_t_4 = ((PyObject *)__pyx_v_self->constraint_values); + __Pyx_INCREF(__pyx_t_4); - /* "cython/interface.pyx":576 + /* "cython/interface.pyx":582 * if self.problem is NULL: * raise InvalidProblemException() * coco_evaluate_constraint(self.problem, # <<<<<<<<<<<<<< * np.PyArray_DATA(_x), * np.PyArray_DATA(self.constraint_values)) */ - coco_evaluate_constraint(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_1)))); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + coco_evaluate_constraint(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_4)))); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":579 + /* "cython/interface.pyx":585 * np.PyArray_DATA(_x), * np.PyArray_DATA(self.constraint_values)) * return np.array(self.constraint_values, copy=True) # <<<<<<<<<<<<<< @@ -9871,29 +10135,29 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o * """Recommend a solution, return `None`. */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 579, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 585, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(((PyObject *)__pyx_v_self->constraint_values)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->constraint_values)); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->constraint_values)); - __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 579, __pyx_L1_error) + PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self->constraint_values)); + __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 579, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 579, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 585, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":560 + /* "cython/interface.pyx":566 * self.initialized = True * return self * def constraint(self, x): # <<<<<<<<<<<<<< @@ -9927,7 +10191,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":580 +/* "cython/interface.pyx":586 * np.PyArray_DATA(self.constraint_values)) * return np.array(self.constraint_values, copy=True) * def recommend(self, arx): # <<<<<<<<<<<<<< @@ -9955,20 +10219,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED s PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("recommend", 0); - /* "cython/interface.pyx":586 + /* "cython/interface.pyx":592 * for the assessment of the algorithm. * """ * raise NotImplementedError("has never been tested, incomment this to start testing") # <<<<<<<<<<<<<< * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 586, __pyx_L1_error) + __PYX_ERR(0, 592, __pyx_L1_error) - /* "cython/interface.pyx":580 + /* "cython/interface.pyx":586 * np.PyArray_DATA(self.constraint_values)) * return np.array(self.constraint_values, copy=True) * def recommend(self, arx): # <<<<<<<<<<<<<< @@ -9986,7 +10250,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED s return __pyx_r; } -/* "cython/interface.pyx":599 +/* "cython/interface.pyx":605 * coco_recommend_solution(self.problem, np.PyArray_DATA(_x)) * * def logger_biobj_feed_solution(self, evaluation, y): # <<<<<<<<<<<<<< @@ -10020,17 +10284,17 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solutio kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_evaluation)) != 0)) kw_args--; + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_evaluation)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, 1); __PYX_ERR(0, 599, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, 1); __PYX_ERR(0, 605, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "logger_biobj_feed_solution") < 0)) __PYX_ERR(0, 599, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "logger_biobj_feed_solution") < 0)) __PYX_ERR(0, 605, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -10043,7 +10307,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solutio } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 599, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 605, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.logger_biobj_feed_solution", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -10081,45 +10345,45 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __pyx_pybuffernd__y.data = NULL; __pyx_pybuffernd__y.rcbuffer = &__pyx_pybuffer__y; - /* "cython/interface.pyx":608 + /* "cython/interface.pyx":614 * with new indicator reference values. * """ * cdef size_t _evaluation = evaluation # "conversion" to size_t # <<<<<<<<<<<<<< * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_evaluation); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 608, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_evaluation); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 614, __pyx_L1_error) __pyx_v__evaluation = __pyx_t_1; - /* "cython/interface.pyx":610 + /* "cython/interface.pyx":616 * cdef size_t _evaluation = evaluation # "conversion" to size_t * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') # <<<<<<<<<<<<<< * if np.size(y) != self.number_of_objectives: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 610, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 610, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 610, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); - __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 610, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 610, __pyx_L1_error) - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 610, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 616, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 610, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 610, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 610, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 610, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 616, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -10127,16 +10391,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __Pyx_DECREF_SET(__pyx_v_y, __pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":611 + /* "cython/interface.pyx":617 * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') * if np.size(y) != self.number_of_objectives: # <<<<<<<<<<<<<< * raise ValueError( * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 611, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 611, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -10150,13 +10414,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio } } if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 611, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_y}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 611, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else @@ -10164,43 +10428,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_y}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 611, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else #endif { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 611, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_y); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 611, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 611, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 611, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 611, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_7) { + if (unlikely(__pyx_t_7)) { - /* "cython/interface.pyx":613 + /* "cython/interface.pyx":619 * if np.size(y) != self.number_of_objectives: * raise ValueError( * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + # <<<<<<<<<<<<<< * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 613, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 613, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -10214,13 +10478,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio } } if (!__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 613, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_y}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 613, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else @@ -10228,73 +10492,68 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_y}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 613, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 613, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_y); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 613, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 613, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":615 + /* "cython/interface.pyx":621 * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) # <<<<<<<<<<<<<< * _y = y # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_number_of_objectiv, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_number_of_objectiv, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":613 + /* "cython/interface.pyx":619 * if np.size(y) != self.number_of_objectives: * raise ValueError( * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + # <<<<<<<<<<<<<< * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) */ - __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 613, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":612 + /* "cython/interface.pyx":618 * y = np.array(y, copy=False, dtype=np.double, order='C') * if np.size(y) != self.number_of_objectives: * raise ValueError( # <<<<<<<<<<<<<< * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + * "not match the number of objectives `number_of_objectives==%d`." */ - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 612, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 612, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 612, __pyx_L1_error) + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(0, 618, __pyx_L1_error) - /* "cython/interface.pyx":611 + /* "cython/interface.pyx":617 * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') * if np.size(y) != self.number_of_objectives: # <<<<<<<<<<<<<< @@ -10303,20 +10562,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio */ } - /* "cython/interface.pyx":616 + /* "cython/interface.pyx":622 * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) * _y = y # this is the final type conversion # <<<<<<<<<<<<<< * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_y) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_y, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 616, __pyx_L1_error) - __pyx_t_3 = __pyx_v_y; - __Pyx_INCREF(__pyx_t_3); + if (!(likely(((__pyx_v_y) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_y, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 622, __pyx_L1_error) + __pyx_t_4 = __pyx_v_y; + __Pyx_INCREF(__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__y.rcbuffer->pybuffer); - __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__y.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_3), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); + __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__y.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_4), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); if (unlikely(__pyx_t_8 < 0)) { PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd__y.rcbuffer->pybuffer, (PyObject*)__pyx_v__y, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) { @@ -10328,12 +10587,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __pyx_t_9 = __pyx_t_10 = __pyx_t_11 = 0; } __pyx_pybuffernd__y.diminfo[0].strides = __pyx_pybuffernd__y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__y.diminfo[0].shape = __pyx_pybuffernd__y.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 616, __pyx_L1_error) + if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 622, __pyx_L1_error) } - __pyx_v__y = ((PyArrayObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_v__y = ((PyArrayObject *)__pyx_t_4); + __pyx_t_4 = 0; - /* "cython/interface.pyx":617 + /* "cython/interface.pyx":623 * % self.number_of_objectives) * _y = y # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -10341,40 +10600,40 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) */ __pyx_t_7 = ((__pyx_v_self->problem == NULL) != 0); - if (__pyx_t_7) { + if (unlikely(__pyx_t_7)) { - /* "cython/interface.pyx":618 + /* "cython/interface.pyx":624 * _y = y # this is the final type conversion * if self.problem is NULL: * raise InvalidProblemException() # <<<<<<<<<<<<<< * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) * */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 618, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 624, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); + __Pyx_DECREF_SET(__pyx_t_3, function); } } if (__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 618, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 624, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 618, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 624, __pyx_L1_error) } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 618, __pyx_L1_error) + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(0, 624, __pyx_L1_error) - /* "cython/interface.pyx":617 + /* "cython/interface.pyx":623 * % self.number_of_objectives) * _y = y # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -10383,7 +10642,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio */ } - /* "cython/interface.pyx":619 + /* "cython/interface.pyx":625 * if self.problem is NULL: * raise InvalidProblemException() * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) # <<<<<<<<<<<<<< @@ -10391,13 +10650,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyInt_From_int(coco_logger_biobj_feed_solution(__pyx_v_self->problem, __pyx_v__evaluation, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__y))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; + __pyx_t_4 = __Pyx_PyInt_From_int(coco_logger_biobj_feed_solution(__pyx_v_self->problem, __pyx_v__evaluation, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__y))))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 625, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":599 + /* "cython/interface.pyx":605 * coco_recommend_solution(self.problem, np.PyArray_DATA(_x)) * * def logger_biobj_feed_solution(self, evaluation, y): # <<<<<<<<<<<<<< @@ -10431,7 +10690,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio return __pyx_r; } -/* "cython/interface.pyx":622 +/* "cython/interface.pyx":628 * * * def add_observer(self, observer): # <<<<<<<<<<<<<< @@ -10462,7 +10721,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("add_observer", 0); - /* "cython/interface.pyx":625 + /* "cython/interface.pyx":631 * """`add_observer(self, observer: Observer)`, see `observe_with`. * """ * return self.observe_with(observer) # <<<<<<<<<<<<<< @@ -10470,7 +10729,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx * def observe_with(self, observer): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 625, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -10483,13 +10742,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_observer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 625, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_observer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 625, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -10497,19 +10756,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 625, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 625, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_observer); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 625, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } @@ -10519,7 +10778,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":622 + /* "cython/interface.pyx":628 * * * def add_observer(self, observer): # <<<<<<<<<<<<<< @@ -10541,7 +10800,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx return __pyx_r; } -/* "cython/interface.pyx":627 +/* "cython/interface.pyx":633 * return self.observe_with(observer) * * def observe_with(self, observer): # <<<<<<<<<<<<<< @@ -10573,17 +10832,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py int __pyx_t_5; __Pyx_RefNannySetupContext("observe_with", 0); - /* "cython/interface.pyx":639 + /* "cython/interface.pyx":645 * See also: class `Observer` * """ * if observer: # <<<<<<<<<<<<<< * assert self.problem * observer._update_current_observer_global() */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_observer); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 639, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_observer); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 645, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":640 + /* "cython/interface.pyx":646 * """ * if observer: * assert self.problem # <<<<<<<<<<<<<< @@ -10594,19 +10853,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 640, __pyx_L1_error) + __PYX_ERR(0, 646, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":641 + /* "cython/interface.pyx":647 * if observer: * assert self.problem * observer._update_current_observer_global() # <<<<<<<<<<<<<< * self.problem = coco_problem_add_observer(self.problem, _current_observer) * self._list_of_observers.append(observer) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_observer, __pyx_n_s_update_current_observer_global); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 641, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_observer, __pyx_n_s_update_current_observer_global); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 647, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -10619,16 +10878,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 641, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 641, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":642 + /* "cython/interface.pyx":648 * assert self.problem * observer._update_current_observer_global() * self.problem = coco_problem_add_observer(self.problem, _current_observer) # <<<<<<<<<<<<<< @@ -10637,16 +10896,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py */ __pyx_v_self->problem = coco_problem_add_observer(__pyx_v_self->problem, __pyx_v_6cocoex_9interface__current_observer); - /* "cython/interface.pyx":643 + /* "cython/interface.pyx":649 * observer._update_current_observer_global() * self.problem = coco_problem_add_observer(self.problem, _current_observer) * self._list_of_observers.append(observer) # <<<<<<<<<<<<<< * return self * */ - __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_list_of_observers, __pyx_v_observer); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 643, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_list_of_observers, __pyx_v_observer); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 649, __pyx_L1_error) - /* "cython/interface.pyx":639 + /* "cython/interface.pyx":645 * See also: class `Observer` * """ * if observer: # <<<<<<<<<<<<<< @@ -10655,7 +10914,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py */ } - /* "cython/interface.pyx":644 + /* "cython/interface.pyx":650 * self.problem = coco_problem_add_observer(self.problem, _current_observer) * self._list_of_observers.append(observer) * return self # <<<<<<<<<<<<<< @@ -10667,7 +10926,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":627 + /* "cython/interface.pyx":633 * return self.observe_with(observer) * * def observe_with(self, observer): # <<<<<<<<<<<<<< @@ -10688,7 +10947,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py return __pyx_r; } -/* "cython/interface.pyx":646 +/* "cython/interface.pyx":652 * return self * * def _f0(self, x): # <<<<<<<<<<<<<< @@ -10719,7 +10978,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("_f0", 0); - /* "cython/interface.pyx":648 + /* "cython/interface.pyx":654 * def _f0(self, x): * """"inofficial" interface to `self` with target f-value of zero. """ * return self(x) - self.final_target_fvalue1 # <<<<<<<<<<<<<< @@ -10739,13 +10998,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 648, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 648, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -10753,27 +11012,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 648, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 648, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 648, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_final_target_fvalue1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 648, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_final_target_fvalue1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 648, __pyx_L1_error) + __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -10781,7 +11040,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":646 + /* "cython/interface.pyx":652 * return self * * def _f0(self, x): # <<<<<<<<<<<<<< @@ -10803,7 +11062,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co return __pyx_r; } -/* "cython/interface.pyx":650 +/* "cython/interface.pyx":656 * return self(x) - self.final_target_fvalue1 * * def initial_solution_proposal(self, restart_number=None): # <<<<<<<<<<<<<< @@ -10836,12 +11095,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution_proposa switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_restart_number); + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_restart_number); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "initial_solution_proposal") < 0)) __PYX_ERR(0, 650, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "initial_solution_proposal") < 0)) __PYX_ERR(0, 656, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -10855,7 +11114,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution_proposa } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("initial_solution_proposal", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 650, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("initial_solution_proposal", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 656, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.initial_solution_proposal", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -10883,7 +11142,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __Pyx_RefNannySetupContext("initial_solution_proposal", 0); __Pyx_INCREF(__pyx_v_restart_number); - /* "cython/interface.pyx":676 + /* "cython/interface.pyx":682 * * """ * if restart_number is None: # <<<<<<<<<<<<<< @@ -10894,7 +11153,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":677 + /* "cython/interface.pyx":683 * """ * if restart_number is None: * restart_number = self._initial_solution_proposal_calls # <<<<<<<<<<<<<< @@ -10906,14 +11165,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __Pyx_DECREF_SET(__pyx_v_restart_number, __pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":678 + /* "cython/interface.pyx":684 * if restart_number is None: * restart_number = self._initial_solution_proposal_calls * self._initial_solution_proposal_calls += 1 # count calls without explicit argument # <<<<<<<<<<<<<< * if restart_number <= 0: * return self.initial_solution */ - __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_initial_solution_proposal_calls, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 678, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_initial_solution_proposal_calls, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_initial_solution_proposal_calls); @@ -10921,7 +11180,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_v_self->_initial_solution_proposal_calls = __pyx_t_3; __pyx_t_3 = 0; - /* "cython/interface.pyx":676 + /* "cython/interface.pyx":682 * * """ * if restart_number is None: # <<<<<<<<<<<<<< @@ -10930,19 +11189,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa */ } - /* "cython/interface.pyx":679 + /* "cython/interface.pyx":685 * restart_number = self._initial_solution_proposal_calls * self._initial_solution_proposal_calls += 1 # count calls without explicit argument * if restart_number <= 0: # <<<<<<<<<<<<<< * return self.initial_solution * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) */ - __pyx_t_3 = PyObject_RichCompare(__pyx_v_restart_number, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 679, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 679, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_restart_number, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_2) { - /* "cython/interface.pyx":680 + /* "cython/interface.pyx":686 * self._initial_solution_proposal_calls += 1 # count calls without explicit argument * if restart_number <= 0: * return self.initial_solution # <<<<<<<<<<<<<< @@ -10950,13 +11209,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa * if self.number_of_constraints > 0: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 680, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 686, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":679 + /* "cython/interface.pyx":685 * restart_number = self._initial_solution_proposal_calls * self._initial_solution_proposal_calls += 1 # count calls without explicit argument * if restart_number <= 0: # <<<<<<<<<<<<<< @@ -10965,22 +11224,22 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa */ } - /* "cython/interface.pyx":681 + /* "cython/interface.pyx":687 * if restart_number <= 0: * return self.initial_solution * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) # <<<<<<<<<<<<<< * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rand); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rand); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { @@ -10993,14 +11252,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa } } if (!__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -11009,34 +11268,34 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rand); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rand); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { @@ -11049,14 +11308,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa } } if (!__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -11065,48 +11324,48 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_rv_triangular = __pyx_t_7; __pyx_t_7 = 0; - /* "cython/interface.pyx":682 + /* "cython/interface.pyx":688 * return self.initial_solution * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) * if self.number_of_constraints > 0: # <<<<<<<<<<<<<< * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 682, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 682, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 682, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_2) { - /* "cython/interface.pyx":683 + /* "cython/interface.pyx":689 * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) # <<<<<<<<<<<<<< @@ -11114,14 +11373,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa * self.upper_bounds - self.lower_bounds) / 2 */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 683, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = __Pyx_PyInt_SubtractObjC(__pyx_v_rv_triangular, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 683, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyInt_SubtractObjC(__pyx_v_rv_triangular, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = PyNumber_Multiply(__pyx_float_1_0, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 683, __pyx_L1_error) + __pyx_t_3 = PyNumber_Multiply(__pyx_float_1_0, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 683, __pyx_L1_error) + __pyx_t_7 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -11129,7 +11388,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_t_7 = 0; goto __pyx_L0; - /* "cython/interface.pyx":682 + /* "cython/interface.pyx":688 * return self.initial_solution * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) * if self.number_of_constraints > 0: # <<<<<<<<<<<<<< @@ -11138,7 +11397,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa */ } - /* "cython/interface.pyx":684 + /* "cython/interface.pyx":690 * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( # <<<<<<<<<<<<<< @@ -11146,55 +11405,55 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 684, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - /* "cython/interface.pyx":685 + /* "cython/interface.pyx":691 * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( * self.upper_bounds - self.lower_bounds) / 2 # <<<<<<<<<<<<<< * @property * def initial_solution(self): */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_upper_bounds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_upper_bounds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_8 = PyNumber_Subtract(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_8 = PyNumber_Subtract(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":684 + /* "cython/interface.pyx":690 * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( # <<<<<<<<<<<<<< * self.upper_bounds - self.lower_bounds) / 2 * @property */ - __pyx_t_4 = PyNumber_Multiply(__pyx_v_rv_triangular, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 684, __pyx_L1_error) + __pyx_t_4 = PyNumber_Multiply(__pyx_v_rv_triangular, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "cython/interface.pyx":685 + /* "cython/interface.pyx":691 * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( * self.upper_bounds - self.lower_bounds) / 2 # <<<<<<<<<<<<<< * @property * def initial_solution(self): */ - __pyx_t_8 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_4, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_4, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":684 + /* "cython/interface.pyx":690 * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( # <<<<<<<<<<<<<< * self.upper_bounds - self.lower_bounds) / 2 * @property */ - __pyx_t_4 = PyNumber_Add(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 684, __pyx_L1_error) + __pyx_t_4 = PyNumber_Add(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; @@ -11202,7 +11461,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":650 + /* "cython/interface.pyx":656 * return self(x) - self.final_target_fvalue1 * * def initial_solution_proposal(self, restart_number=None): # <<<<<<<<<<<<<< @@ -11228,7 +11487,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa return __pyx_r; } -/* "cython/interface.pyx":687 +/* "cython/interface.pyx":693 * self.upper_bounds - self.lower_bounds) / 2 * @property * def initial_solution(self): # <<<<<<<<<<<<<< @@ -11258,7 +11517,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":690 + /* "cython/interface.pyx":696 * """return feasible initial solution""" * coco_problem_get_initial_solution(self.problem, * np.PyArray_DATA(self.x_initial)) # <<<<<<<<<<<<<< @@ -11268,7 +11527,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ __pyx_t_1 = ((PyObject *)__pyx_v_self->x_initial); __Pyx_INCREF(__pyx_t_1); - /* "cython/interface.pyx":689 + /* "cython/interface.pyx":695 * def initial_solution(self): * """return feasible initial solution""" * coco_problem_get_initial_solution(self.problem, # <<<<<<<<<<<<<< @@ -11278,7 +11537,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ coco_problem_get_initial_solution(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_1)))); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":691 + /* "cython/interface.pyx":697 * coco_problem_get_initial_solution(self.problem, * np.PyArray_DATA(self.x_initial)) * return np.array(self.x_initial, copy=True) # <<<<<<<<<<<<<< @@ -11286,20 +11545,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ * def observers(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 691, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 691, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 691, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self->x_initial)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->x_initial)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->x_initial)); - __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 691, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 691, __pyx_L1_error) - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 691, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 697, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -11308,7 +11567,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":687 + /* "cython/interface.pyx":693 * self.upper_bounds - self.lower_bounds) / 2 * @property * def initial_solution(self): # <<<<<<<<<<<<<< @@ -11330,7 +11589,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ return __pyx_r; } -/* "cython/interface.pyx":693 +/* "cython/interface.pyx":699 * return np.array(self.x_initial, copy=True) * @property * def observers(self): # <<<<<<<<<<<<<< @@ -11356,7 +11615,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9observers___get__(struct __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":695 + /* "cython/interface.pyx":701 * def observers(self): * """list of observers wrapped around this problem""" * return self._list_of_observers # <<<<<<<<<<<<<< @@ -11368,7 +11627,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9observers___get__(struct __pyx_r = __pyx_v_self->_list_of_observers; goto __pyx_L0; - /* "cython/interface.pyx":693 + /* "cython/interface.pyx":699 * return np.array(self.x_initial, copy=True) * @property * def observers(self): # <<<<<<<<<<<<<< @@ -11383,7 +11642,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9observers___get__(struct return __pyx_r; } -/* "cython/interface.pyx":697 +/* "cython/interface.pyx":703 * return self._list_of_observers * @property * def is_observed(self): # <<<<<<<<<<<<<< @@ -11411,7 +11670,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11is_observed___get__(stru Py_ssize_t __pyx_t_2; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":702 + /* "cython/interface.pyx":708 * See also: the list of observers in property `observers`. * """ * return len(self._list_of_observers) # <<<<<<<<<<<<<< @@ -11421,15 +11680,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11is_observed___get__(stru __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_v_self->_list_of_observers; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 702, __pyx_L1_error) + __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error) + __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":697 + /* "cython/interface.pyx":703 * return self._list_of_observers * @property * def is_observed(self): # <<<<<<<<<<<<<< @@ -11448,7 +11707,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11is_observed___get__(stru return __pyx_r; } -/* "cython/interface.pyx":707 +/* "cython/interface.pyx":713 * # this is a class definition which is instantiated automatically!? * """Number of variables this problem instance expects as input.""" * def __get__(self): # <<<<<<<<<<<<<< @@ -11475,7 +11734,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":708 + /* "cython/interface.pyx":714 * """Number of variables this problem instance expects as input.""" * def __get__(self): * return self._number_of_variables # <<<<<<<<<<<<<< @@ -11483,13 +11742,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge * def dimension(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 708, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":707 + /* "cython/interface.pyx":713 * # this is a class definition which is instantiated automatically!? * """Number of variables this problem instance expects as input.""" * def __get__(self): # <<<<<<<<<<<<<< @@ -11508,7 +11767,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge return __pyx_r; } -/* "cython/interface.pyx":710 +/* "cython/interface.pyx":716 * return self._number_of_variables * @property * def dimension(self): # <<<<<<<<<<<<<< @@ -11535,7 +11794,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":712 + /* "cython/interface.pyx":718 * def dimension(self): * """alias for `number_of_variables` of the input space""" * return self._number_of_variables # <<<<<<<<<<<<<< @@ -11543,13 +11802,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct * def number_of_objectives(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 712, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":710 + /* "cython/interface.pyx":716 * return self._number_of_variables * @property * def dimension(self): # <<<<<<<<<<<<<< @@ -11568,7 +11827,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct return __pyx_r; } -/* "cython/interface.pyx":714 +/* "cython/interface.pyx":720 * return self._number_of_variables * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -11595,7 +11854,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":716 + /* "cython/interface.pyx":722 * def number_of_objectives(self): * "number of objectives, if equal to 1, call returns a scalar" * return self._number_of_objectives # <<<<<<<<<<<<<< @@ -11603,13 +11862,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g * def number_of_constraints(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 716, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":714 + /* "cython/interface.pyx":720 * return self._number_of_variables * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -11628,7 +11887,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g return __pyx_r; } -/* "cython/interface.pyx":718 +/* "cython/interface.pyx":724 * return self._number_of_objectives * @property * def number_of_constraints(self): # <<<<<<<<<<<<<< @@ -11655,21 +11914,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":720 + /* "cython/interface.pyx":726 * def number_of_constraints(self): * "number of constraints" * return self._number_of_constraints # <<<<<<<<<<<<<< * @property - * def lower_bounds(self): + * def number_of_integer_variables(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 720, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":718 + /* "cython/interface.pyx":724 * return self._number_of_objectives * @property * def number_of_constraints(self): # <<<<<<<<<<<<<< @@ -11688,9 +11947,69 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___ return __pyx_r; } -/* "cython/interface.pyx":722 +/* "cython/interface.pyx":728 + * return self._number_of_constraints + * @property + * def number_of_integer_variables(self): # <<<<<<<<<<<<<< + * "number of integer variables" + * return self._number_of_integer_variables + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_27number_of_integer_variables_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6cocoex_9interface_7Problem_27number_of_integer_variables_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6cocoex_9interface_7Problem_27number_of_integer_variables___get__(((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27number_of_integer_variables___get__(struct __pyx_obj_6cocoex_9interface_Problem *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "cython/interface.pyx":730 + * def number_of_integer_variables(self): + * "number of integer variables" + * return self._number_of_integer_variables # <<<<<<<<<<<<<< + * @property + * def lower_bounds(self): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_integer_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 730, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "cython/interface.pyx":728 * return self._number_of_constraints * @property + * def number_of_integer_variables(self): # <<<<<<<<<<<<<< + * "number of integer variables" + * return self._number_of_integer_variables + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("cocoex.interface.Problem.number_of_integer_variables.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "cython/interface.pyx":732 + * return self._number_of_integer_variables + * @property * def lower_bounds(self): # <<<<<<<<<<<<<< * """depending on the test bed, these are not necessarily strict bounds * """ @@ -11714,7 +12033,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(str __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":725 + /* "cython/interface.pyx":735 * """depending on the test bed, these are not necessarily strict bounds * """ * return self._lower_bounds # <<<<<<<<<<<<<< @@ -11726,8 +12045,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(str __pyx_r = ((PyObject *)__pyx_v_self->_lower_bounds); goto __pyx_L0; - /* "cython/interface.pyx":722 - * return self._number_of_constraints + /* "cython/interface.pyx":732 + * return self._number_of_integer_variables * @property * def lower_bounds(self): # <<<<<<<<<<<<<< * """depending on the test bed, these are not necessarily strict bounds @@ -11741,7 +12060,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(str return __pyx_r; } -/* "cython/interface.pyx":727 +/* "cython/interface.pyx":737 * return self._lower_bounds * @property * def upper_bounds(self): # <<<<<<<<<<<<<< @@ -11767,7 +12086,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(str __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":730 + /* "cython/interface.pyx":740 * """depending on the test bed, these are not necessarily strict bounds * """ * return self._upper_bounds # <<<<<<<<<<<<<< @@ -11779,7 +12098,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(str __pyx_r = ((PyObject *)__pyx_v_self->_upper_bounds); goto __pyx_L0; - /* "cython/interface.pyx":727 + /* "cython/interface.pyx":737 * return self._lower_bounds * @property * def upper_bounds(self): # <<<<<<<<<<<<<< @@ -11794,7 +12113,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(str return __pyx_r; } -/* "cython/interface.pyx":732 +/* "cython/interface.pyx":742 * return self._upper_bounds * @property * def evaluations(self): # <<<<<<<<<<<<<< @@ -11821,7 +12140,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":733 + /* "cython/interface.pyx":743 * @property * def evaluations(self): * return coco_problem_get_evaluations(self.problem) # <<<<<<<<<<<<<< @@ -11829,13 +12148,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru * def evaluations_constraints(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 733, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 743, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":732 + /* "cython/interface.pyx":742 * return self._upper_bounds * @property * def evaluations(self): # <<<<<<<<<<<<<< @@ -11854,7 +12173,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru return __pyx_r; } -/* "cython/interface.pyx":735 +/* "cython/interface.pyx":745 * return coco_problem_get_evaluations(self.problem) * @property * def evaluations_constraints(self): # <<<<<<<<<<<<<< @@ -11881,7 +12200,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_23evaluations_constraints_ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":736 + /* "cython/interface.pyx":746 * @property * def evaluations_constraints(self): * return coco_problem_get_evaluations_constraints(self.problem) # <<<<<<<<<<<<<< @@ -11889,13 +12208,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_23evaluations_constraints_ * def final_target_hit(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations_constraints(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 736, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations_constraints(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":735 + /* "cython/interface.pyx":745 * return coco_problem_get_evaluations(self.problem) * @property * def evaluations_constraints(self): # <<<<<<<<<<<<<< @@ -11914,7 +12233,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_23evaluations_constraints_ return __pyx_r; } -/* "cython/interface.pyx":738 +/* "cython/interface.pyx":748 * return coco_problem_get_evaluations_constraints(self.problem) * @property * def final_target_hit(self): # <<<<<<<<<<<<<< @@ -11941,7 +12260,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":741 + /* "cython/interface.pyx":751 * """return 1 if the final target is known and has been hit, 0 otherwise * """ * assert(self.problem) # <<<<<<<<<<<<<< @@ -11952,12 +12271,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 741, __pyx_L1_error) + __PYX_ERR(0, 751, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":742 + /* "cython/interface.pyx":752 * """ * assert(self.problem) * return coco_problem_final_target_hit(self.problem) # <<<<<<<<<<<<<< @@ -11965,13 +12284,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ * #def final_target_fvalue1(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(coco_problem_final_target_hit(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 742, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(coco_problem_final_target_hit(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":738 + /* "cython/interface.pyx":748 * return coco_problem_get_evaluations_constraints(self.problem) * @property * def final_target_hit(self): # <<<<<<<<<<<<<< @@ -11990,7 +12309,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ return __pyx_r; } -/* "cython/interface.pyx":748 +/* "cython/interface.pyx":758 * # return coco_problem_get_final_target_fvalue1(self.problem) * @property * def best_observed_fvalue1(self): # <<<<<<<<<<<<<< @@ -12017,7 +12336,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":749 + /* "cython/interface.pyx":759 * @property * def best_observed_fvalue1(self): * assert(self.problem) # <<<<<<<<<<<<<< @@ -12028,12 +12347,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 749, __pyx_L1_error) + __PYX_ERR(0, 759, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":750 + /* "cython/interface.pyx":760 * def best_observed_fvalue1(self): * assert(self.problem) * return coco_problem_get_best_observed_fvalue1(self.problem) # <<<<<<<<<<<<<< @@ -12041,13 +12360,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ * def largest_fvalues_of_interest(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_best_observed_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_best_observed_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":748 + /* "cython/interface.pyx":758 * # return coco_problem_get_final_target_fvalue1(self.problem) * @property * def best_observed_fvalue1(self): # <<<<<<<<<<<<<< @@ -12066,7 +12385,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ return __pyx_r; } -/* "cython/interface.pyx":752 +/* "cython/interface.pyx":762 * return coco_problem_get_best_observed_fvalue1(self.problem) * @property * def largest_fvalues_of_interest(self): # <<<<<<<<<<<<<< @@ -12098,11 +12417,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter PyObject *__pyx_t_5 = NULL; size_t __pyx_t_6; size_t __pyx_t_7; - PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_8; PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":754 + /* "cython/interface.pyx":764 * def largest_fvalues_of_interest(self): * "largest f-values of interest (defined only for multi-objective problems)" * assert(self.problem) # <<<<<<<<<<<<<< @@ -12113,12 +12433,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 754, __pyx_L1_error) + __PYX_ERR(0, 764, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":755 + /* "cython/interface.pyx":765 * "largest f-values of interest (defined only for multi-objective problems)" * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -12136,98 +12456,99 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "cython/interface.pyx":756 + /* "cython/interface.pyx":766 * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: * self._largest_fvalues_of_interest = np.asarray( # <<<<<<<<<<<<<< * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) * return self._largest_fvalues_of_interest */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 756, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 756, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":757 + /* "cython/interface.pyx":767 * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: * self._largest_fvalues_of_interest = np.asarray( * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) # <<<<<<<<<<<<<< * return self._largest_fvalues_of_interest * */ - __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 757, __pyx_L1_error) + __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __pyx_v_self->_number_of_objectives; - for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { - __pyx_v_i = __pyx_t_7; - __pyx_t_8 = PyFloat_FromDouble((coco_problem_get_largest_fvalues_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 757, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 757, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_7 = __pyx_t_6; + for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { + __pyx_v_i = __pyx_t_8; + __pyx_t_9 = PyFloat_FromDouble((coco_problem_get_largest_fvalues_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 767, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 767, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } - __pyx_t_8 = NULL; + __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_8)) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } - if (!__pyx_t_8) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) + if (!__pyx_t_9) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 766, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 766, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 756, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; + __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 766, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL; __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "cython/interface.pyx":756 + /* "cython/interface.pyx":766 * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: * self._largest_fvalues_of_interest = np.asarray( # <<<<<<<<<<<<<< * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) * return self._largest_fvalues_of_interest */ - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 756, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_largest_fvalues_of_interest); __Pyx_DECREF(((PyObject *)__pyx_v_self->_largest_fvalues_of_interest)); __pyx_v_self->_largest_fvalues_of_interest = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":755 + /* "cython/interface.pyx":765 * "largest f-values of interest (defined only for multi-objective problems)" * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -12236,7 +12557,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter */ } - /* "cython/interface.pyx":758 + /* "cython/interface.pyx":768 * self._largest_fvalues_of_interest = np.asarray( * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) * return self._largest_fvalues_of_interest # <<<<<<<<<<<<<< @@ -12248,7 +12569,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter __pyx_r = ((PyObject *)__pyx_v_self->_largest_fvalues_of_interest); goto __pyx_L0; - /* "cython/interface.pyx":752 + /* "cython/interface.pyx":762 * return coco_problem_get_best_observed_fvalue1(self.problem) * @property * def largest_fvalues_of_interest(self): # <<<<<<<<<<<<<< @@ -12261,8 +12582,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("cocoex.interface.Problem.largest_fvalues_of_interest.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -12271,12 +12592,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter return __pyx_r; } -/* "cython/interface.pyx":760 +/* "cython/interface.pyx":770 * return self._largest_fvalues_of_interest * * def _best_parameter(self, what=None): # <<<<<<<<<<<<<< * if what == 'print': - * bbob_problem_best_parameter_print(self.problem) + * if self._number_of_objectives == 2: */ /* Python wrapper */ @@ -12303,12 +12624,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17_best_parameter(PyObject switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_what); + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_what); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_best_parameter") < 0)) __PYX_ERR(0, 760, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_best_parameter") < 0)) __PYX_ERR(0, 770, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -12322,7 +12643,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17_best_parameter(PyObject } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_best_parameter", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 760, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("_best_parameter", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 770, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem._best_parameter", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -12341,40 +12662,72 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ int __pyx_t_1; __Pyx_RefNannySetupContext("_best_parameter", 0); - /* "cython/interface.pyx":761 + /* "cython/interface.pyx":771 * * def _best_parameter(self, what=None): * if what == 'print': # <<<<<<<<<<<<<< - * bbob_problem_best_parameter_print(self.problem) - * + * if self._number_of_objectives == 2: + * bbob_biobj_problem_best_parameter_print(self.problem) */ - __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_what, __pyx_n_u_print, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 761, __pyx_L1_error) + __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_what, __pyx_n_u_print, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 771, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":762 + /* "cython/interface.pyx":772 + * def _best_parameter(self, what=None): + * if what == 'print': + * if self._number_of_objectives == 2: # <<<<<<<<<<<<<< + * bbob_biobj_problem_best_parameter_print(self.problem) + * else: + */ + __pyx_t_1 = ((__pyx_v_self->_number_of_objectives == 2) != 0); + if (__pyx_t_1) { + + /* "cython/interface.pyx":773 + * if what == 'print': + * if self._number_of_objectives == 2: + * bbob_biobj_problem_best_parameter_print(self.problem) # <<<<<<<<<<<<<< + * else: + * bbob_problem_best_parameter_print(self.problem) + */ + bbob_biobj_problem_best_parameter_print(__pyx_v_self->problem); + + /* "cython/interface.pyx":772 * def _best_parameter(self, what=None): * if what == 'print': - * bbob_problem_best_parameter_print(self.problem) # <<<<<<<<<<<<<< + * if self._number_of_objectives == 2: # <<<<<<<<<<<<<< + * bbob_biobj_problem_best_parameter_print(self.problem) + * else: + */ + goto __pyx_L4; + } + + /* "cython/interface.pyx":775 + * bbob_biobj_problem_best_parameter_print(self.problem) + * else: + * bbob_problem_best_parameter_print(self.problem) # <<<<<<<<<<<<<< * * def free(self, force=False): */ - bbob_problem_best_parameter_print(__pyx_v_self->problem); + /*else*/ { + bbob_problem_best_parameter_print(__pyx_v_self->problem); + } + __pyx_L4:; - /* "cython/interface.pyx":761 + /* "cython/interface.pyx":771 * * def _best_parameter(self, what=None): * if what == 'print': # <<<<<<<<<<<<<< - * bbob_problem_best_parameter_print(self.problem) - * + * if self._number_of_objectives == 2: + * bbob_biobj_problem_best_parameter_print(self.problem) */ } - /* "cython/interface.pyx":760 + /* "cython/interface.pyx":770 * return self._largest_fvalues_of_interest * * def _best_parameter(self, what=None): # <<<<<<<<<<<<<< * if what == 'print': - * bbob_problem_best_parameter_print(self.problem) + * if self._number_of_objectives == 2: */ /* function exit code */ @@ -12389,8 +12742,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ return __pyx_r; } -/* "cython/interface.pyx":764 - * bbob_problem_best_parameter_print(self.problem) +/* "cython/interface.pyx":777 + * bbob_problem_best_parameter_print(self.problem) * * def free(self, force=False): # <<<<<<<<<<<<<< * """Free the given test problem. @@ -12422,12 +12775,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19free(PyObject *__pyx_v_s switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_force); + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_force); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "free") < 0)) __PYX_ERR(0, 764, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "free") < 0)) __PYX_ERR(0, 777, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -12441,7 +12794,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19free(PyObject *__pyx_v_s } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("free", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 764, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("free", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 777, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.free", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -12461,7 +12814,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c int __pyx_t_2; __Pyx_RefNannySetupContext("free", 0); - /* "cython/interface.pyx":773 + /* "cython/interface.pyx":786 * exception. * """ * if self.problem != NULL and (self._do_free or force): # <<<<<<<<<<<<<< @@ -12474,18 +12827,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c __pyx_t_1 = __pyx_t_2; goto __pyx_L4_bool_binop_done; } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 773, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 786, __pyx_L1_error) if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L4_bool_binop_done; } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 773, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 786, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "cython/interface.pyx":774 + /* "cython/interface.pyx":787 * """ * if self.problem != NULL and (self._do_free or force): * coco_problem_free(self.problem) # <<<<<<<<<<<<<< @@ -12494,7 +12847,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c */ coco_problem_free(__pyx_v_self->problem); - /* "cython/interface.pyx":775 + /* "cython/interface.pyx":788 * if self.problem != NULL and (self._do_free or force): * coco_problem_free(self.problem) * self.problem = NULL # <<<<<<<<<<<<<< @@ -12503,7 +12856,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c */ __pyx_v_self->problem = NULL; - /* "cython/interface.pyx":773 + /* "cython/interface.pyx":786 * exception. * """ * if self.problem != NULL and (self._do_free or force): # <<<<<<<<<<<<<< @@ -12512,8 +12865,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c */ } - /* "cython/interface.pyx":764 - * bbob_problem_best_parameter_print(self.problem) + /* "cython/interface.pyx":777 + * bbob_problem_best_parameter_print(self.problem) * * def free(self, force=False): # <<<<<<<<<<<<<< * """Free the given test problem. @@ -12532,7 +12885,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c return __pyx_r; } -/* "cython/interface.pyx":777 +/* "cython/interface.pyx":790 * self.problem = NULL * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -12557,14 +12910,14 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ int __pyx_t_2; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "cython/interface.pyx":781 + /* "cython/interface.pyx":794 * # free let the problem_free() call(s) in coco_suite_t crash, hence * # the possibility to set _do_free = False * if self._do_free and self.problem != NULL: # this is not guaranteed to work, see above link # <<<<<<<<<<<<<< * coco_problem_free(self.problem) * */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 781, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 794, __pyx_L1_error) if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; @@ -12575,7 +12928,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "cython/interface.pyx":782 + /* "cython/interface.pyx":795 * # the possibility to set _do_free = False * if self._do_free and self.problem != NULL: # this is not guaranteed to work, see above link * coco_problem_free(self.problem) # <<<<<<<<<<<<<< @@ -12584,7 +12937,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ */ coco_problem_free(__pyx_v_self->problem); - /* "cython/interface.pyx":781 + /* "cython/interface.pyx":794 * # free let the problem_free() call(s) in coco_suite_t crash, hence * # the possibility to set _do_free = False * if self._do_free and self.problem != NULL: # this is not guaranteed to work, see above link # <<<<<<<<<<<<<< @@ -12593,7 +12946,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ */ } - /* "cython/interface.pyx":777 + /* "cython/interface.pyx":790 * self.problem = NULL * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -12609,7 +12962,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ __Pyx_RefNannyFinishContext(); } -/* "cython/interface.pyx":785 +/* "cython/interface.pyx":798 * * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): * def __call__(self, x): # <<<<<<<<<<<<<< @@ -12643,11 +12996,11 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23__call__(PyObject *__pyx kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 785, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 798, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { goto __pyx_L5_argtuple_error; @@ -12658,7 +13011,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23__call__(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 785, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 798, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -12694,7 +13047,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_pybuffernd__x.data = NULL; __pyx_pybuffernd__x.rcbuffer = &__pyx_pybuffer__x; - /* "cython/interface.pyx":788 + /* "cython/interface.pyx":801 * """return objective function value of input `x`""" * cdef np.ndarray[double, ndim=1, mode="c"] _x * assert self.initialized # <<<<<<<<<<<<<< @@ -12703,43 +13056,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 788, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 801, __pyx_L1_error) if (unlikely(!__pyx_t_1)) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 788, __pyx_L1_error) + __PYX_ERR(0, 801, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":789 + /* "cython/interface.pyx":802 * cdef np.ndarray[double, ndim=1, mode="c"] _x * assert self.initialized * x = np.array(x, copy=False, dtype=np.double, order='C') # <<<<<<<<<<<<<< * if np.size(x) != self.number_of_variables: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 789, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 789, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 789, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); - __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 789, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 789, __pyx_L1_error) - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 789, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 802, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 789, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 789, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 789, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 789, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 802, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -12747,16 +13100,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":790 + /* "cython/interface.pyx":803 * assert self.initialized * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 790, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 790, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -12770,13 +13123,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob } } if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 790, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 790, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else @@ -12784,43 +13137,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 790, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else #endif { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 790, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_x); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 790, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 790, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 790, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 790, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_1) { + if (unlikely(__pyx_t_1)) { - /* "cython/interface.pyx":792 + /* "cython/interface.pyx":805 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 792, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 792, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -12834,13 +13187,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob } } if (!__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 792, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 792, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else @@ -12848,73 +13201,68 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 792, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 792, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 792, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 792, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":794 + /* "cython/interface.pyx":807 * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) # <<<<<<<<<<<<<< * _x = x # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 794, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 794, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":792 + /* "cython/interface.pyx":805 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 792, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":791 + /* "cython/interface.pyx":804 * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: * raise ValueError( # <<<<<<<<<<<<<< * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." */ - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 791, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 804, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 791, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 791, __pyx_L1_error) + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(0, 804, __pyx_L1_error) - /* "cython/interface.pyx":790 + /* "cython/interface.pyx":803 * assert self.initialized * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< @@ -12923,20 +13271,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ } - /* "cython/interface.pyx":795 + /* "cython/interface.pyx":808 * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) * _x = x # this is the final type conversion # <<<<<<<<<<<<<< * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 795, __pyx_L1_error) - __pyx_t_3 = __pyx_v_x; - __Pyx_INCREF(__pyx_t_3); + if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 808, __pyx_L1_error) + __pyx_t_4 = __pyx_v_x; + __Pyx_INCREF(__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__x.rcbuffer->pybuffer); - __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_3), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); + __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_4), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); if (unlikely(__pyx_t_7 < 0)) { PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)__pyx_v__x, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) { @@ -12948,12 +13296,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0; } __pyx_pybuffernd__x.diminfo[0].strides = __pyx_pybuffernd__x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__x.diminfo[0].shape = __pyx_pybuffernd__x.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 795, __pyx_L1_error) + if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 808, __pyx_L1_error) } - __pyx_v__x = ((PyArrayObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_v__x = ((PyArrayObject *)__pyx_t_4); + __pyx_t_4 = 0; - /* "cython/interface.pyx":796 + /* "cython/interface.pyx":809 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -12961,40 +13309,40 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob * coco_evaluate_function(self.problem, */ __pyx_t_1 = ((__pyx_v_self->problem == NULL) != 0); - if (__pyx_t_1) { + if (unlikely(__pyx_t_1)) { - /* "cython/interface.pyx":797 + /* "cython/interface.pyx":810 * _x = x # this is the final type conversion * if self.problem is NULL: * raise InvalidProblemException() # <<<<<<<<<<<<<< * coco_evaluate_function(self.problem, * np.PyArray_DATA(_x), */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 797, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 810, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); + __Pyx_DECREF_SET(__pyx_t_3, function); } } if (__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 797, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 797, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 810, __pyx_L1_error) } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 797, __pyx_L1_error) + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(0, 810, __pyx_L1_error) - /* "cython/interface.pyx":796 + /* "cython/interface.pyx":809 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -13003,27 +13351,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ } - /* "cython/interface.pyx":800 + /* "cython/interface.pyx":813 * coco_evaluate_function(self.problem, * np.PyArray_DATA(_x), * np.PyArray_DATA(self.y_values)) # <<<<<<<<<<<<<< * if self._number_of_objectives == 1: * return self.y_values[0] */ - __pyx_t_3 = ((PyObject *)__pyx_v_self->y_values); - __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = ((PyObject *)__pyx_v_self->y_values); + __Pyx_INCREF(__pyx_t_4); - /* "cython/interface.pyx":798 + /* "cython/interface.pyx":811 * if self.problem is NULL: * raise InvalidProblemException() * coco_evaluate_function(self.problem, # <<<<<<<<<<<<<< * np.PyArray_DATA(_x), * np.PyArray_DATA(self.y_values)) */ - coco_evaluate_function(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_3)))); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + coco_evaluate_function(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_4)))); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":801 + /* "cython/interface.pyx":814 * np.PyArray_DATA(_x), * np.PyArray_DATA(self.y_values)) * if self._number_of_objectives == 1: # <<<<<<<<<<<<<< @@ -13033,7 +13381,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_t_1 = ((__pyx_v_self->_number_of_objectives == 1) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":802 + /* "cython/interface.pyx":815 * np.PyArray_DATA(self.y_values)) * if self._number_of_objectives == 1: * return self.y_values[0] # <<<<<<<<<<<<<< @@ -13041,13 +13389,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->y_values), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 802, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; + __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->y_values), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 815, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":801 + /* "cython/interface.pyx":814 * np.PyArray_DATA(_x), * np.PyArray_DATA(self.y_values)) * if self._number_of_objectives == 1: # <<<<<<<<<<<<<< @@ -13056,7 +13404,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ } - /* "cython/interface.pyx":803 + /* "cython/interface.pyx":816 * if self._number_of_objectives == 1: * return self.y_values[0] * return np.array(self.y_values, copy=True) # <<<<<<<<<<<<<< @@ -13064,29 +13412,29 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 816, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(((PyObject *)__pyx_v_self->y_values)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->y_values)); - PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->y_values)); - __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) + PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self->y_values)); + __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 803, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 803, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 816, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":785 + /* "cython/interface.pyx":798 * * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): * def __call__(self, x): # <<<<<<<<<<<<<< @@ -13120,7 +13468,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":806 +/* "cython/interface.pyx":819 * * @property * def id(self): # <<<<<<<<<<<<<< @@ -13148,7 +13496,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":808 + /* "cython/interface.pyx":821 * def id(self): * "id as string without spaces or weird characters" * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -13158,7 +13506,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":809 + /* "cython/interface.pyx":822 * "id as string without spaces or weird characters" * if self.problem is not NULL: * return coco_problem_get_id(self.problem) # <<<<<<<<<<<<<< @@ -13166,13 +13514,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o * def _parse_id(self, substr): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 809, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":808 + /* "cython/interface.pyx":821 * def id(self): * "id as string without spaces or weird characters" * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -13181,7 +13529,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o */ } - /* "cython/interface.pyx":806 + /* "cython/interface.pyx":819 * * @property * def id(self): # <<<<<<<<<<<<<< @@ -13202,7 +13550,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":811 +/* "cython/interface.pyx":824 * return coco_problem_get_id(self.problem) * * def _parse_id(self, substr): # <<<<<<<<<<<<<< @@ -13236,7 +13584,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o Py_ssize_t __pyx_t_6; __Pyx_RefNannySetupContext("_parse_id", 0); - /* "cython/interface.pyx":813 + /* "cython/interface.pyx":826 * def _parse_id(self, substr): * "search `substr` in `id` and return converted `int` up to '_'" * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -13246,7 +13594,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o __pyx_t_1 = ((__pyx_v_self->problem == NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":814 + /* "cython/interface.pyx":827 * "search `substr` in `id` and return converted `int` up to '_'" * if self.problem is NULL: * return None # <<<<<<<<<<<<<< @@ -13254,11 +13602,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o * if i < 0: */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(Py_None); - __pyx_r = Py_None; + __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "cython/interface.pyx":813 + /* "cython/interface.pyx":826 * def _parse_id(self, substr): * "search `substr` in `id` and return converted `int` up to '_'" * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -13267,16 +13614,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o */ } - /* "cython/interface.pyx":815 + /* "cython/interface.pyx":828 * if self.problem is NULL: * return None * i = self.id.find(substr) # <<<<<<<<<<<<<< * if i < 0: * raise ValueError() */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 815, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_find); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 815, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_find); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; @@ -13290,13 +13637,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o } } if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_substr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 815, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_substr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_substr}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 815, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else @@ -13304,19 +13651,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_substr}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 815, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 815, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_substr); __Pyx_GIVEREF(__pyx_v_substr); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_substr); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 815, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } @@ -13325,32 +13672,32 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o __pyx_v_i = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":816 + /* "cython/interface.pyx":829 * return None * i = self.id.find(substr) * if i < 0: # <<<<<<<<<<<<<< * raise ValueError() * return int(self.id[i + len(substr):].split('_')[0]) */ - __pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 816, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 816, __pyx_L1_error) + __pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 829, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (__pyx_t_1) { + if (unlikely(__pyx_t_1)) { - /* "cython/interface.pyx":817 + /* "cython/interface.pyx":830 * i = self.id.find(substr) * if i < 0: * raise ValueError() # <<<<<<<<<<<<<< * return int(self.id[i + len(substr):].split('_')[0]) * */ - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_ValueError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 817, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_ValueError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 817, __pyx_L1_error) + __PYX_ERR(0, 830, __pyx_L1_error) - /* "cython/interface.pyx":816 + /* "cython/interface.pyx":829 * return None * i = self.id.find(substr) * if i < 0: # <<<<<<<<<<<<<< @@ -13359,7 +13706,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o */ } - /* "cython/interface.pyx":818 + /* "cython/interface.pyx":831 * if i < 0: * raise ValueError() * return int(self.id[i + len(substr):].split('_')[0]) # <<<<<<<<<<<<<< @@ -13367,35 +13714,35 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 818, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = PyObject_Length(__pyx_v_substr); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 818, __pyx_L1_error) - __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 818, __pyx_L1_error) + __pyx_t_6 = PyObject_Length(__pyx_v_substr); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 831, __pyx_L1_error) + __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyNumber_Add(__pyx_v_i, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 818, __pyx_L1_error) + __pyx_t_5 = PyNumber_Add(__pyx_v_i, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, 0, &__pyx_t_5, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 818, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, 0, &__pyx_t_5, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 818, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 818, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 818, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 818, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":811 + /* "cython/interface.pyx":824 * return coco_problem_get_id(self.problem) * * def _parse_id(self, substr): # <<<<<<<<<<<<<< @@ -13418,7 +13765,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":821 +/* "cython/interface.pyx":834 * * @property * def id_function(self): # <<<<<<<<<<<<<< @@ -13453,7 +13800,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":823 + /* "cython/interface.pyx":836 * def id_function(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13469,7 +13816,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "cython/interface.pyx":824 + /* "cython/interface.pyx":837 * "see __init__.py" * try: * return self._parse_id('_f') # <<<<<<<<<<<<<< @@ -13477,16 +13824,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru * raise ValueError("cannot deduce function id from '%s'" % self.id) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parse_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 824, __pyx_L3_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parse_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 837, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 824, __pyx_L3_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 837, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L7_try_return; - /* "cython/interface.pyx":823 + /* "cython/interface.pyx":836 * def id_function(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13498,7 +13845,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "cython/interface.pyx":825 + /* "cython/interface.pyx":838 * try: * return self._parse_id('_f') * except ValueError: # <<<<<<<<<<<<<< @@ -13508,39 +13855,34 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); if (__pyx_t_6) { __Pyx_AddTraceback("cocoex.interface.Problem.id_function.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 825, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 838, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_7); - /* "cython/interface.pyx":826 + /* "cython/interface.pyx":839 * return self._parse_id('_f') * except ValueError: * raise ValueError("cannot deduce function id from '%s'" % self.id) # <<<<<<<<<<<<<< * * @property */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 826, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 839, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_cannot_deduce_function_id_from_s, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 826, __pyx_L5_except_error) + __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_cannot_deduce_function_id_from_s, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 839, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 826, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 839, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); - __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 826, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_ERR(0, 826, __pyx_L5_except_error) + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __PYX_ERR(0, 839, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "cython/interface.pyx":823 + /* "cython/interface.pyx":836 * def id_function(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13560,7 +13902,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru goto __pyx_L0; } - /* "cython/interface.pyx":821 + /* "cython/interface.pyx":834 * * @property * def id_function(self): # <<<<<<<<<<<<<< @@ -13583,7 +13925,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru return __pyx_r; } -/* "cython/interface.pyx":829 +/* "cython/interface.pyx":842 * * @property * def id_instance(self): # <<<<<<<<<<<<<< @@ -13618,7 +13960,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":831 + /* "cython/interface.pyx":844 * def id_instance(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13634,7 +13976,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "cython/interface.pyx":832 + /* "cython/interface.pyx":845 * "see __init__.py" * try: * return self._parse_id('_i') # <<<<<<<<<<<<<< @@ -13642,16 +13984,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru * raise ValueError("cannot deduce instance id from '%s'" % self.id) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parse_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 832, __pyx_L3_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parse_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 845, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 832, __pyx_L3_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 845, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L7_try_return; - /* "cython/interface.pyx":831 + /* "cython/interface.pyx":844 * def id_instance(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13663,7 +14005,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "cython/interface.pyx":833 + /* "cython/interface.pyx":846 * try: * return self._parse_id('_i') * except ValueError: # <<<<<<<<<<<<<< @@ -13673,39 +14015,34 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); if (__pyx_t_6) { __Pyx_AddTraceback("cocoex.interface.Problem.id_instance.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 833, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 846, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_7); - /* "cython/interface.pyx":834 + /* "cython/interface.pyx":847 * return self._parse_id('_i') * except ValueError: * raise ValueError("cannot deduce instance id from '%s'" % self.id) # <<<<<<<<<<<<<< * * @property */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 834, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 847, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_cannot_deduce_instance_id_from_s, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 834, __pyx_L5_except_error) + __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_cannot_deduce_instance_id_from_s, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 847, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 834, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 847, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); - __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 834, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_ERR(0, 834, __pyx_L5_except_error) + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __PYX_ERR(0, 847, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "cython/interface.pyx":831 + /* "cython/interface.pyx":844 * def id_instance(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13725,7 +14062,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru goto __pyx_L0; } - /* "cython/interface.pyx":829 + /* "cython/interface.pyx":842 * * @property * def id_instance(self): # <<<<<<<<<<<<<< @@ -13748,7 +14085,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru return __pyx_r; } -/* "cython/interface.pyx":837 +/* "cython/interface.pyx":850 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -13776,7 +14113,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":838 + /* "cython/interface.pyx":851 * @property * def name(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -13786,7 +14123,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":839 + /* "cython/interface.pyx":852 * def name(self): * if self.problem is not NULL: * return coco_problem_get_name(self.problem) # <<<<<<<<<<<<<< @@ -13794,13 +14131,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 839, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 852, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":838 + /* "cython/interface.pyx":851 * @property * def name(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -13809,7 +14146,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx */ } - /* "cython/interface.pyx":837 + /* "cython/interface.pyx":850 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -13830,7 +14167,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx return __pyx_r; } -/* "cython/interface.pyx":842 +/* "cython/interface.pyx":855 * * @property * def index(self): # <<<<<<<<<<<<<< @@ -13856,7 +14193,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":844 + /* "cython/interface.pyx":857 * def index(self): * """problem index in the benchmark `Suite` of origin""" * return self._problem_index # <<<<<<<<<<<<<< @@ -13868,7 +14205,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __py __pyx_r = __pyx_v_self->_problem_index; goto __pyx_L0; - /* "cython/interface.pyx":842 + /* "cython/interface.pyx":855 * * @property * def index(self): # <<<<<<<<<<<<<< @@ -13883,7 +14220,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":847 +/* "cython/interface.pyx":860 * * @property * def suite(self): # <<<<<<<<<<<<<< @@ -13909,7 +14246,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":849 + /* "cython/interface.pyx":862 * def suite(self): * """benchmark suite this problem is from""" * return self._suite_name # <<<<<<<<<<<<<< @@ -13921,7 +14258,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __py __pyx_r = __pyx_v_self->_suite_name; goto __pyx_L0; - /* "cython/interface.pyx":847 + /* "cython/interface.pyx":860 * * @property * def suite(self): # <<<<<<<<<<<<<< @@ -13936,7 +14273,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":852 +/* "cython/interface.pyx":865 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -13961,10 +14298,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":854 + /* "cython/interface.pyx":867 * def info(self): * """see __init__.py""" * return str(self) # <<<<<<<<<<<<<< @@ -13972,19 +14308,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx * def __str__(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 854, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 854, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":852 + /* "cython/interface.pyx":865 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -13995,7 +14325,6 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cocoex.interface.Problem.info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -14004,7 +14333,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx return __pyx_r; } -/* "cython/interface.pyx":856 +/* "cython/interface.pyx":869 * return str(self) * * def __str__(self): # <<<<<<<<<<<<<< @@ -14029,6 +14358,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj PyObject *__pyx_v_dimensional = NULL; PyObject *__pyx_v_objective = NULL; PyObject *__pyx_v_constraints = NULL; + PyObject *__pyx_v_integer_variables = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -14036,11 +14366,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; + Py_ssize_t __pyx_t_6; + Py_UCS4 __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; __Pyx_RefNannySetupContext("__str__", 0); - /* "cython/interface.pyx":857 + /* "cython/interface.pyx":870 * * def __str__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -14050,240 +14382,434 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":858 + /* "cython/interface.pyx":871 * def __str__(self): * if self.problem is not NULL: * dimensional = "%d-dimensional" % self.dimension # <<<<<<<<<<<<<< * objective = "%s-objective" % { * 1: 'single', */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 858, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_d_dimensional, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 858, __pyx_L1_error) + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_d_dimensional, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_dimensional = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":860 + /* "cython/interface.pyx":873 * dimensional = "%d-dimensional" % self.dimension * objective = "%s-objective" % { * 1: 'single', # <<<<<<<<<<<<<< * 2: 'bi'}.get(self.number_of_objectives, * str(self.number_of_objectives)) */ - __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 860, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_int_1, __pyx_n_u_single) < 0) __PYX_ERR(0, 860, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_3, __pyx_int_2, __pyx_n_u_bi) < 0) __PYX_ERR(0, 860, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_int_1, __pyx_n_u_single) < 0) __PYX_ERR(0, 873, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_int_2, __pyx_n_u_bi) < 0) __PYX_ERR(0, 873, __pyx_L1_error) - /* "cython/interface.pyx":861 + /* "cython/interface.pyx":874 * objective = "%s-objective" % { * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, # <<<<<<<<<<<<<< * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 861, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - /* "cython/interface.pyx":862 + /* "cython/interface.pyx":875 * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, * str(self.number_of_objectives)) # <<<<<<<<<<<<<< * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 862, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 862, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 862, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":861 + /* "cython/interface.pyx":874 * objective = "%s-objective" % { * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, # <<<<<<<<<<<<<< * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( */ - __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 861, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_t_3, __pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 874, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "cython/interface.pyx":859 + /* "cython/interface.pyx":872 * if self.problem is not NULL: * dimensional = "%d-dimensional" % self.dimension * objective = "%s-objective" % { # <<<<<<<<<<<<<< * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, */ - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_s_objective, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 859, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_v_objective = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; + __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_s_objective, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 872, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_objective = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; - /* "cython/interface.pyx":863 + /* "cython/interface.pyx":876 * 2: 'bi'}.get(self.number_of_objectives, * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( # <<<<<<<<<<<<<< * " with %d constraint%s" % (self.number_of_constraints, * "s" if self.number_of_constraints > 1 else "") */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 863, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 863, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 876, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_4, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 863, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 876, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_4 = __pyx_kp_u__2; + __pyx_t_5 = __pyx_kp_u__2; } else { - /* "cython/interface.pyx":864 + /* "cython/interface.pyx":877 * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, # <<<<<<<<<<<<<< * "s" if self.number_of_constraints > 1 else "") * ) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 864, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = 0; + __pyx_t_7 = 127; + __Pyx_INCREF(__pyx_kp_u_with_2); + __pyx_t_6 += 6; + __Pyx_GIVEREF(__pyx_kp_u_with_2); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_with_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 877, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_Format(__pyx_t_4, __pyx_n_u_d); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 877, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u_constraint); + __pyx_t_6 += 11; + __Pyx_GIVEREF(__pyx_kp_u_constraint); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_constraint); - /* "cython/interface.pyx":865 + /* "cython/interface.pyx":878 * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, * "s" if self.number_of_constraints > 1 else "") # <<<<<<<<<<<<<< * ) - * return '%s: a %s %s problem%s (problem %d of suite "%s" with name "%s")' % ( + * integer_variables = "" if self.number_of_integer_variables == 0 else ( */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 865, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 865, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 865, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (__pyx_t_7) { + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 878, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = PyObject_RichCompare(__pyx_t_4, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 878, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 878, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__pyx_t_9) { __Pyx_INCREF(__pyx_n_u_s); - __pyx_t_5 = __pyx_n_u_s; + __pyx_t_3 = __pyx_n_u_s; } else { __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_5 = __pyx_kp_u__2; + __pyx_t_3 = __pyx_kp_u__2; } + __pyx_t_8 = __Pyx_PyUnicode_Unicode(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 878, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_8); + __pyx_t_8 = 0; - /* "cython/interface.pyx":864 + /* "cython/interface.pyx":877 * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, # <<<<<<<<<<<<<< * "s" if self.number_of_constraints > 1 else "") * ) */ - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 864, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); - __pyx_t_2 = 0; - __pyx_t_5 = 0; - __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_with_d_constraint_s, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 864, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_4 = __pyx_t_5; - __pyx_t_5 = 0; + __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 877, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_5 = __pyx_t_8; + __pyx_t_8 = 0; } - __pyx_v_constraints = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; + __pyx_v_constraints = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; - /* "cython/interface.pyx":867 + /* "cython/interface.pyx":880 * "s" if self.number_of_constraints > 1 else "") * ) - * return '%s: a %s %s problem%s (problem %d of suite "%s" with name "%s")' % ( # <<<<<<<<<<<<<< - * self.id, dimensional, objective, constraints, self.index, - * self.suite, self.name) + * integer_variables = "" if self.number_of_integer_variables == 0 else ( # <<<<<<<<<<<<<< + * " %s %d integer variable%s" % ("and" if constraints != "" else "with", + * self.number_of_integer_variables, */ - __Pyx_XDECREF(__pyx_r); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 880, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_8, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 880, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 880, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + __Pyx_INCREF(__pyx_kp_u__2); + __pyx_t_5 = __pyx_kp_u__2; + } else { - /* "cython/interface.pyx":868 + /* "cython/interface.pyx":881 * ) - * return '%s: a %s %s problem%s (problem %d of suite "%s" with name "%s")' % ( - * self.id, dimensional, objective, constraints, self.index, # <<<<<<<<<<<<<< - * self.suite, self.name) - * # self.name.replace(self.name.split()[0], + * integer_variables = "" if self.number_of_integer_variables == 0 else ( + * " %s %d integer variable%s" % ("and" if constraints != "" else "with", # <<<<<<<<<<<<<< + * self.number_of_integer_variables, + * "s" if self.number_of_integer_variables > 1 else "") */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 868, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 868, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = PyTuple_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 881, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = 0; + __pyx_t_7 = 127; + __Pyx_INCREF(__pyx_kp_u__11); + __pyx_t_6 += 1; + __Pyx_GIVEREF(__pyx_kp_u__11); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__11); + __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_constraints, __pyx_kp_u__2, Py_NE)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 881, __pyx_L1_error) + if ((__pyx_t_9 != 0)) { + __Pyx_INCREF(__pyx_n_u_and); + __pyx_t_8 = __pyx_n_u_and; + } else { + __Pyx_INCREF(__pyx_n_u_with_3); + __pyx_t_8 = __pyx_n_u_with_3; + } + __pyx_t_3 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 881, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_kp_u__11); + __pyx_t_6 += 1; + __Pyx_GIVEREF(__pyx_kp_u__11); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__11); + + /* "cython/interface.pyx":882 + * integer_variables = "" if self.number_of_integer_variables == 0 else ( + * " %s %d integer variable%s" % ("and" if constraints != "" else "with", + * self.number_of_integer_variables, # <<<<<<<<<<<<<< + * "s" if self.number_of_integer_variables > 1 else "") + * ) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 882, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = __Pyx_PyObject_Format(__pyx_t_3, __pyx_n_u_d); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 882, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_8); + __pyx_t_8 = 0; + __Pyx_INCREF(__pyx_kp_u_integer_variable); + __pyx_t_6 += 17; + __Pyx_GIVEREF(__pyx_kp_u_integer_variable); + PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_integer_variable); + + /* "cython/interface.pyx":883 + * " %s %d integer variable%s" % ("and" if constraints != "" else "with", + * self.number_of_integer_variables, + * "s" if self.number_of_integer_variables > 1 else "") # <<<<<<<<<<<<<< + * ) + * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_9) { + __Pyx_INCREF(__pyx_n_u_s); + __pyx_t_8 = __pyx_n_u_s; + } else { + __Pyx_INCREF(__pyx_kp_u__2); + __pyx_t_8 = __pyx_kp_u__2; + } + __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_t_4); + __pyx_t_4 = 0; - /* "cython/interface.pyx":869 - * return '%s: a %s %s problem%s (problem %d of suite "%s" with name "%s")' % ( - * self.id, dimensional, objective, constraints, self.index, - * self.suite, self.name) # <<<<<<<<<<<<<< - * # self.name.replace(self.name.split()[0], - * # self.name.split()[0] + "(%d)" + /* "cython/interface.pyx":881 + * ) + * integer_variables = "" if self.number_of_integer_variables == 0 else ( + * " %s %d integer variable%s" % ("and" if constraints != "" else "with", # <<<<<<<<<<<<<< + * self.number_of_integer_variables, + * "s" if self.number_of_integer_variables > 1 else "") */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_suite); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 869, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 869, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_2, 6, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 881, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_5 = __pyx_t_4; + __pyx_t_4 = 0; + } + __pyx_v_integer_variables = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; - /* "cython/interface.pyx":868 - * ) - * return '%s: a %s %s problem%s (problem %d of suite "%s" with name "%s")' % ( - * self.id, dimensional, objective, constraints, self.index, # <<<<<<<<<<<<<< + /* "cython/interface.pyx":885 + * "s" if self.number_of_integer_variables > 1 else "") + * ) + * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( # <<<<<<<<<<<<<< + * self.id, dimensional, objective, constraints, integer_variables, self.index, + * self.suite, self.name) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = PyTuple_New(15); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 885, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = 0; + __pyx_t_7 = 127; + + /* "cython/interface.pyx":886 + * ) + * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( + * self.id, dimensional, objective, constraints, integer_variables, self.index, # <<<<<<<<<<<<<< * self.suite, self.name) * # self.name.replace(self.name.split()[0], */ - __pyx_t_3 = PyTuple_New(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 868, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 886, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 886, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u_a); + __pyx_t_6 += 4; + __Pyx_GIVEREF(__pyx_kp_u_a); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_kp_u_a); __Pyx_INCREF(__pyx_v_dimensional); + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_dimensional) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_dimensional) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_v_dimensional); __Pyx_GIVEREF(__pyx_v_dimensional); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_dimensional); + PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_dimensional); + __Pyx_INCREF(__pyx_kp_u__11); + __pyx_t_6 += 1; + __Pyx_GIVEREF(__pyx_kp_u__11); + PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_kp_u__11); __Pyx_INCREF(__pyx_v_objective); + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_objective) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_objective) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_v_objective); __Pyx_GIVEREF(__pyx_v_objective); - PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_objective); - __Pyx_INCREF(__pyx_v_constraints); - __Pyx_GIVEREF(__pyx_v_constraints); - PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_constraints); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_v_objective); + __Pyx_INCREF(__pyx_kp_u_problem); + __pyx_t_6 += 8; + __Pyx_GIVEREF(__pyx_kp_u_problem); + PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_kp_u_problem); + __pyx_t_2 = __Pyx_PyUnicode_Unicode(__pyx_v_constraints); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 886, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 6, __pyx_t_2); - __pyx_t_4 = 0; - __pyx_t_5 = 0; - __pyx_t_6 = 0; + PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_t_2); __pyx_t_2 = 0; - - /* "cython/interface.pyx":867 - * "s" if self.number_of_constraints > 1 else "") - * ) - * return '%s: a %s %s problem%s (problem %d of suite "%s" with name "%s")' % ( # <<<<<<<<<<<<<< - * self.id, dimensional, objective, constraints, self.index, - * self.suite, self.name) + __pyx_t_2 = __Pyx_PyUnicode_Unicode(__pyx_v_integer_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 886, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_5, 7, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u_problem_2); + __pyx_t_6 += 10; + __Pyx_GIVEREF(__pyx_kp_u_problem_2); + PyTuple_SET_ITEM(__pyx_t_5, 8, __pyx_kp_u_problem_2); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 886, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_2, __pyx_n_u_d); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 886, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 9, __pyx_t_4); + __pyx_t_4 = 0; + __Pyx_INCREF(__pyx_kp_u_of_suite); + __pyx_t_6 += 11; + __Pyx_GIVEREF(__pyx_kp_u_of_suite); + PyTuple_SET_ITEM(__pyx_t_5, 10, __pyx_kp_u_of_suite); + + /* "cython/interface.pyx":887 + * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( + * self.id, dimensional, objective, constraints, integer_variables, self.index, + * self.suite, self.name) # <<<<<<<<<<<<<< + * # self.name.replace(self.name.split()[0], + * # self.name.split()[0] + "(%d)" */ - __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_s_a_s_s_problem_s_problem_d_of, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 867, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_suite); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 887, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 887, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_5, 11, __pyx_t_2); __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_kp_u_with_name); + __pyx_t_6 += 13; + __Pyx_GIVEREF(__pyx_kp_u_with_name); + PyTuple_SET_ITEM(__pyx_t_5, 12, __pyx_kp_u_with_name); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 887, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_2), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 887, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7; + __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 13, __pyx_t_4); + __pyx_t_4 = 0; + __Pyx_INCREF(__pyx_kp_u__31); + __pyx_t_6 += 2; + __Pyx_GIVEREF(__pyx_kp_u__31); + PyTuple_SET_ITEM(__pyx_t_5, 14, __pyx_kp_u__31); + + /* "cython/interface.pyx":885 + * "s" if self.number_of_integer_variables > 1 else "") + * ) + * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( # <<<<<<<<<<<<<< + * self.id, dimensional, objective, constraints, integer_variables, self.index, + * self.suite, self.name) + */ + __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_5, 15, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 885, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":857 + /* "cython/interface.pyx":870 * * def __str__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -14292,7 +14818,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj */ } - /* "cython/interface.pyx":874 + /* "cython/interface.pyx":892 * # % (self.index if self.index is not None else -2))) * else: * return "finalized/invalid problem" # <<<<<<<<<<<<<< @@ -14306,7 +14832,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj goto __pyx_L0; } - /* "cython/interface.pyx":856 + /* "cython/interface.pyx":869 * return str(self) * * def __str__(self): # <<<<<<<<<<<<<< @@ -14320,19 +14846,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("cocoex.interface.Problem.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_dimensional); __Pyx_XDECREF(__pyx_v_objective); __Pyx_XDECREF(__pyx_v_constraints); + __Pyx_XDECREF(__pyx_v_integer_variables); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "cython/interface.pyx":876 +/* "cython/interface.pyx":894 * return "finalized/invalid problem" * * def __repr__(self): # <<<<<<<<<<<<<< @@ -14358,11 +14885,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; + Py_ssize_t __pyx_t_3; + Py_UCS4 __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; __Pyx_RefNannySetupContext("__repr__", 0); - /* "cython/interface.pyx":877 + /* "cython/interface.pyx":895 * * def __repr__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -14372,7 +14902,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":878 + /* "cython/interface.pyx":896 * def __repr__(self): * if self.problem is not NULL: * return "<%s(), id=%r>" % ( # <<<<<<<<<<<<<< @@ -14380,88 +14910,104 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob * # self.problem_suite, self.problem_index, */ __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 896, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = 0; + __pyx_t_4 = 127; + __Pyx_INCREF(__pyx_kp_u__32); + __pyx_t_3 += 1; + __Pyx_GIVEREF(__pyx_kp_u__32); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__32); - /* "cython/interface.pyx":879 + /* "cython/interface.pyx":897 * if self.problem is not NULL: * return "<%s(), id=%r>" % ( * repr(self.__class__).split()[1][1:-2], # <<<<<<<<<<<<<< * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 879, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_Repr(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 879, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 879, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 897, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = PyObject_Repr(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 897, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_split); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 897, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); + __Pyx_DECREF_SET(__pyx_t_6, function); } } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 879, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_7) { + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 897, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 879, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 897, __pyx_L1_error) } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 879, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, -2L, NULL, NULL, &__pyx_slice__27, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 879, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "cython/interface.pyx":881 - * repr(self.__class__).split()[1][1:-2], - * # self.problem_suite, self.problem_index, - * self.id) # <<<<<<<<<<<<<< - * else: - * return "" - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 881, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - - /* "cython/interface.pyx":879 - * if self.problem is not NULL: - * return "<%s(), id=%r>" % ( - * repr(self.__class__).split()[1][1:-2], # <<<<<<<<<<<<<< + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 897, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_6, 1, -2L, NULL, NULL, &__pyx_slice__33, 1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 897, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_5), __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 897, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_4; + __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6); + __pyx_t_6 = 0; + __Pyx_INCREF(__pyx_kp_u_id_3); + __pyx_t_3 += 7; + __Pyx_GIVEREF(__pyx_kp_u_id_3); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_id_3); + + /* "cython/interface.pyx":899 + * repr(self.__class__).split()[1][1:-2], * # self.problem_suite, self.problem_index, - * self.id) + * self.id) # <<<<<<<<<<<<<< + * else: + * return "" */ - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 879, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); - __pyx_t_2 = 0; - __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 899, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_6), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 899, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4; + __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_kp_u__34); + __pyx_t_3 += 1; + __Pyx_GIVEREF(__pyx_kp_u__34); + PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__34); - /* "cython/interface.pyx":878 + /* "cython/interface.pyx":896 * def __repr__(self): * if self.problem is not NULL: * return "<%s(), id=%r>" % ( # <<<<<<<<<<<<<< * repr(self.__class__).split()[1][1:-2], * # self.problem_suite, self.problem_index, */ - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_s_id_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 878, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 896, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; goto __pyx_L0; - /* "cython/interface.pyx":877 + /* "cython/interface.pyx":895 * * def __repr__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -14470,7 +15016,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob */ } - /* "cython/interface.pyx":883 + /* "cython/interface.pyx":901 * self.id) * else: * return "" # <<<<<<<<<<<<<< @@ -14484,7 +15030,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob goto __pyx_L0; } - /* "cython/interface.pyx":876 + /* "cython/interface.pyx":894 * return "finalized/invalid problem" * * def __repr__(self): # <<<<<<<<<<<<<< @@ -14495,8 +15041,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("cocoex.interface.Problem.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -14505,7 +15052,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":885 +/* "cython/interface.pyx":903 * return "" * * def __enter__(self): # <<<<<<<<<<<<<< @@ -14532,7 +15079,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__enter__(struct __pyx_o __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__enter__", 0); - /* "cython/interface.pyx":888 + /* "cython/interface.pyx":906 * """Allows ``with Suite(...)[index] as problem:`` (or ``Suite(...).get_problem(...)``) * """ * return self # <<<<<<<<<<<<<< @@ -14544,7 +15091,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__enter__(struct __pyx_o __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":885 + /* "cython/interface.pyx":903 * return "" * * def __enter__(self): # <<<<<<<<<<<<<< @@ -14559,7 +15106,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__enter__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":889 +/* "cython/interface.pyx":907 * """ * return self * def __exit__(self, exception_type, exception_value, traceback): # <<<<<<<<<<<<<< @@ -14595,23 +15142,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_33__exit__(PyObject *__pyx kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_type)) != 0)) kw_args--; + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exception_type)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: - if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_value)) != 0)) kw_args--; + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exception_value)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 889, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 907, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: - if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--; + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 889, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 907, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 889, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 907, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -14626,7 +15173,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_33__exit__(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 889, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 907, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -14650,7 +15197,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("__exit__", 0); - /* "cython/interface.pyx":890 + /* "cython/interface.pyx":908 * return self * def __exit__(self, exception_type, exception_value, traceback): * try: # <<<<<<<<<<<<<< @@ -14666,14 +15213,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "cython/interface.pyx":891 + /* "cython/interface.pyx":909 * def __exit__(self, exception_type, exception_value, traceback): * try: * self.free() # <<<<<<<<<<<<<< * except: * pass */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_free); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 891, __pyx_L3_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_free); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 909, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { @@ -14686,16 +15233,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob } } if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 891, __pyx_L3_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 909, __pyx_L3_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 891, __pyx_L3_error) + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 909, __pyx_L3_error) } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":890 + /* "cython/interface.pyx":908 * return self * def __exit__(self, exception_type, exception_value, traceback): * try: # <<<<<<<<<<<<<< @@ -14712,7 +15259,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":892 + /* "cython/interface.pyx":910 * try: * self.free() * except: # <<<<<<<<<<<<<< @@ -14731,7 +15278,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob __pyx_L8_try_end:; } - /* "cython/interface.pyx":889 + /* "cython/interface.pyx":907 * """ * return self * def __exit__(self, exception_type, exception_value, traceback): # <<<<<<<<<<<<<< @@ -14777,7 +15324,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_34__reduce_cython__(CYTHON * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -14830,7 +15377,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36__setstate_cython__(CYTH * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -14853,7 +15400,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36__setstate_cython__(CYTH return __pyx_r; } -/* "cython/interface.pyx":895 +/* "cython/interface.pyx":913 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< @@ -14887,12 +15434,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, Py switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_level); + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_level); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log_level") < 0)) __PYX_ERR(0, 895, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log_level") < 0)) __PYX_ERR(0, 913, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -14906,7 +15453,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, Py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("log_level", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 895, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("log_level", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 913, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.log_level", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -14929,7 +15476,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ char const *__pyx_t_4; __Pyx_RefNannySetupContext("log_level", 0); - /* "cython/interface.pyx":902 + /* "cython/interface.pyx":920 * with increasing verbosity, or '' which doesn't change anything. * """ * cdef bytes _level = _bstring(level if level is not None else "") # <<<<<<<<<<<<<< @@ -14943,13 +15490,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_1 = __pyx_kp_u__2; } - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 902, __pyx_L1_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 920, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v__level = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":903 + /* "cython/interface.pyx":921 * """ * cdef bytes _level = _bstring(level if level is not None else "") * return coco_set_log_level(_level) # <<<<<<<<<<<<<< @@ -14957,16 +15504,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ __Pyx_XDECREF(__pyx_r); if (unlikely(__pyx_v__level == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 903, __pyx_L1_error) + __PYX_ERR(0, 921, __pyx_L1_error) } - __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_v__level); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 903, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyStr_FromString(coco_set_log_level(__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 903, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_v__level); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 921, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyStr_FromString(coco_set_log_level(__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":895 + /* "cython/interface.pyx":913 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< @@ -14987,12 +15534,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ return __pyx_r; } -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":214 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":215 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< * # This implementation of getbuffer is geared towards Cython - * # requirements, and does not yet fullfill the PEP. + * # requirements, and does not yet fulfill the PEP. */ /* Python wrapper */ @@ -15009,7 +15556,6 @@ static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx } static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { - int __pyx_v_copy_shape; int __pyx_v_i; int __pyx_v_ndim; int __pyx_v_endian_detector; @@ -15018,7 +15564,6 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P char *__pyx_v_f; PyArray_Descr *__pyx_v_descr = 0; int __pyx_v_offset; - int __pyx_v_hasfields; int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -15026,38 +15571,28 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P PyObject *__pyx_t_3 = NULL; int __pyx_t_4; int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - char *__pyx_t_7; - __Pyx_RefNannySetupContext("__getbuffer__", 0); - if (__pyx_v_info != NULL) { - __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(__pyx_v_info->obj); - } - - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":220 - * # of flags - * - * if info == NULL: return # <<<<<<<<<<<<<< - * - * cdef int copy_shape, i, ndim - */ - __pyx_t_1 = ((__pyx_v_info == NULL) != 0); - if (__pyx_t_1) { - __pyx_r = 0; - goto __pyx_L0; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + char *__pyx_t_8; + if (__pyx_v_info == NULL) { + PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete"); + return -1; } + __Pyx_RefNannySetupContext("__getbuffer__", 0); + __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(__pyx_v_info->obj); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":222 * - * cdef int copy_shape, i, ndim + * cdef int i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< * cdef bint little_endian = ((&endian_detector)[0] != 0) * */ __pyx_v_endian_detector = 1; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":224 - * cdef int copy_shape, i, ndim + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":223 + * cdef int i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< * @@ -15065,59 +15600,18 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":225 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< * - * if sizeof(npy_intp) != sizeof(Py_ssize_t): + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":228 - * ndim = PyArray_NDIM(self) - * - * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< - * copy_shape = 1 - * else: - */ - __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); - if (__pyx_t_1) { - - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":229 - * - * if sizeof(npy_intp) != sizeof(Py_ssize_t): - * copy_shape = 1 # <<<<<<<<<<<<<< - * else: - * copy_shape = 0 - */ - __pyx_v_copy_shape = 1; - - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":227 * ndim = PyArray_NDIM(self) * - * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< - * copy_shape = 1 - * else: - */ - goto __pyx_L4; - } - - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":231 - * copy_shape = 1 - * else: - * copy_shape = 0 # <<<<<<<<<<<<<< - * - * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) - */ - /*else*/ { - __pyx_v_copy_shape = 0; - } - __pyx_L4:; - - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":233 - * copy_shape = 0 - * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") @@ -15126,10 +15620,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; - goto __pyx_L6_bool_binop_done; + goto __pyx_L4_bool_binop_done; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":228 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -15138,32 +15632,32 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0); __pyx_t_1 = __pyx_t_2; - __pyx_L6_bool_binop_done:; + __pyx_L4_bool_binop_done:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":233 - * copy_shape = 0 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":227 + * ndim = PyArray_NDIM(self) * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") */ - if (__pyx_t_1) { + if (unlikely(__pyx_t_1)) { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":229 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 235, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 235, __pyx_L1_error) + __PYX_ERR(2, 229, __pyx_L1_error) - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":233 - * copy_shape = 0 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":227 + * ndim = PyArray_NDIM(self) * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): @@ -15171,7 +15665,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":237 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":231 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -15182,10 +15676,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; - goto __pyx_L9_bool_binop_done; + goto __pyx_L7_bool_binop_done; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":238 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":232 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -15194,31 +15688,31 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0); __pyx_t_1 = __pyx_t_2; - __pyx_L9_bool_binop_done:; + __pyx_L7_bool_binop_done:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":237 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":231 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") */ - if (__pyx_t_1) { + if (unlikely(__pyx_t_1)) { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":233 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< * * info.buf = PyArray_DATA(self) */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 239, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 239, __pyx_L1_error) + __PYX_ERR(2, 233, __pyx_L1_error) - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":237 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":231 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -15227,35 +15721,35 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":241 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":235 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< * info.ndim = ndim - * if copy_shape: + * if sizeof(npy_intp) != sizeof(Py_ssize_t): */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":242 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":236 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< - * if copy_shape: + * if sizeof(npy_intp) != sizeof(Py_ssize_t): * # Allocate new buffer for strides and shape info. */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":243 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":237 * info.buf = PyArray_DATA(self) * info.ndim = ndim - * if copy_shape: # <<<<<<<<<<<<<< + * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. */ - __pyx_t_1 = (__pyx_v_copy_shape != 0); + __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":240 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) # <<<<<<<<<<<<<< @@ -15264,7 +15758,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim)))); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":247 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":241 * # This is allocated as one block, strides first. * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -15273,7 +15767,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":242 * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -15281,10 +15775,11 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * info.shape[i] = PyArray_DIMS(self)[i] */ __pyx_t_4 = __pyx_v_ndim; - for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { - __pyx_v_i = __pyx_t_5; + __pyx_t_5 = __pyx_t_4; + for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { + __pyx_v_i = __pyx_t_6; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":249 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":243 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -15293,7 +15788,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":250 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":244 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -15303,17 +15798,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]); } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":243 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":237 * info.buf = PyArray_DATA(self) * info.ndim = ndim - * if copy_shape: # <<<<<<<<<<<<<< + * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. */ - goto __pyx_L11; + goto __pyx_L9; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":252 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":246 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -15323,7 +15818,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":247 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -15332,9 +15827,9 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(__pyx_v_self)); } - __pyx_L11:; + __pyx_L9:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":248 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -15343,7 +15838,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":249 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -15352,7 +15847,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":250 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -15361,7 +15856,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":253 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -15370,7 +15865,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":254 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -15382,85 +15877,32 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":257 * cdef int offset * - * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< - * - * if not hasfields and not copy_shape: - */ - __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":265 - * cdef bint hasfields = PyDataType_HASFIELDS(descr) - * - * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< - * # do not call releasebuffer - * info.obj = None - */ - __pyx_t_2 = ((!(__pyx_v_hasfields != 0)) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L15_bool_binop_done; - } - __pyx_t_2 = ((!(__pyx_v_copy_shape != 0)) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L15_bool_binop_done:; - if (__pyx_t_1) { - - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":267 - * if not hasfields and not copy_shape: - * # do not call releasebuffer - * info.obj = None # <<<<<<<<<<<<<< - * else: - * # need to call releasebuffer - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_info->obj); - __Pyx_DECREF(__pyx_v_info->obj); - __pyx_v_info->obj = Py_None; - - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":265 - * cdef bint hasfields = PyDataType_HASFIELDS(descr) - * - * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< - * # do not call releasebuffer - * info.obj = None - */ - goto __pyx_L14; - } - - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":270 - * else: - * # need to call releasebuffer - * info.obj = self # <<<<<<<<<<<<<< + * info.obj = self # <<<<<<<<<<<<<< * - * if not hasfields: + * if not PyDataType_HASFIELDS(descr): */ - /*else*/ { - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - __Pyx_GOTREF(__pyx_v_info->obj); - __Pyx_DECREF(__pyx_v_info->obj); - __pyx_v_info->obj = ((PyObject *)__pyx_v_self); - } - __pyx_L14:; + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); + __pyx_v_info->obj = ((PyObject *)__pyx_v_self); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":272 - * info.obj = self + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":259 + * info.obj = self * - * if not hasfields: # <<<<<<<<<<<<<< + * if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<< * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or */ - __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); + __pyx_t_1 = ((!(PyDataType_HASFIELDS(__pyx_v_descr) != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":260 * - * if not hasfields: + * if not PyDataType_HASFIELDS(descr): * t = descr.type_num # <<<<<<<<<<<<<< * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): @@ -15468,8 +15910,8 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":274 - * if not hasfields: + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":261 + * if not PyDataType_HASFIELDS(descr): * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< * (descr.byteorder == c'<' and not little_endian)): @@ -15477,18 +15919,18 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_t_2 = ((__pyx_v_descr->byteorder == '>') != 0); if (!__pyx_t_2) { - goto __pyx_L20_next_or; + goto __pyx_L15_next_or; } else { } __pyx_t_2 = (__pyx_v_little_endian != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; - goto __pyx_L19_bool_binop_done; + goto __pyx_L14_bool_binop_done; } - __pyx_L20_next_or:; + __pyx_L15_next_or:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":275 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":262 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -15499,36 +15941,36 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; - goto __pyx_L19_bool_binop_done; + goto __pyx_L14_bool_binop_done; } __pyx_t_2 = ((!(__pyx_v_little_endian != 0)) != 0); __pyx_t_1 = __pyx_t_2; - __pyx_L19_bool_binop_done:; + __pyx_L14_bool_binop_done:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":274 - * if not hasfields: + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":261 + * if not PyDataType_HASFIELDS(descr): * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") */ - if (__pyx_t_1) { + if (unlikely(__pyx_t_1)) { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":263 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 276, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 276, __pyx_L1_error) + __PYX_ERR(2, 263, __pyx_L1_error) - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":274 - * if not hasfields: + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":261 + * if not PyDataType_HASFIELDS(descr): * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< * (descr.byteorder == c'<' and not little_endian)): @@ -15536,7 +15978,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":264 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -15548,7 +15990,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"b"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":265 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -15559,7 +16001,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"B"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":279 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":266 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -15570,7 +16012,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"h"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -15581,7 +16023,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"H"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -15592,7 +16034,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"i"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -15603,7 +16045,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"I"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -15614,7 +16056,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"l"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":284 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -15625,7 +16067,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"L"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":285 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -15636,7 +16078,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"q"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -15647,7 +16089,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Q"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":287 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -15658,7 +16100,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"f"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":275 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -15669,7 +16111,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"d"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -15680,7 +16122,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"g"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":277 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -15691,7 +16133,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zf"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":278 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -15702,7 +16144,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zd"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":279 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -15713,7 +16155,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zg"); break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":293 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":280 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -15725,33 +16167,28 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":295 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":282 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< * info.format = f * return */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 295, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 295, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 282, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 295, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); - __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 295, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_6, 0, 0, 0); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __PYX_ERR(2, 295, __pyx_L1_error) + __PYX_ERR(2, 282, __pyx_L1_error) break; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":296 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":283 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -15760,7 +16197,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":297 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":284 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -15770,16 +16207,16 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_r = 0; goto __pyx_L0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":272 - * info.obj = self + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":259 + * info.obj = self * - * if not hasfields: # <<<<<<<<<<<<<< + * if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<< * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or */ } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":299 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":286 * return * else: * info.format = PyObject_Malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -15789,7 +16226,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->format = ((char *)PyObject_Malloc(0xFF)); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":300 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":287 * else: * info.format = PyObject_Malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -15798,7 +16235,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":301 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":288 * info.format = PyObject_Malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -15807,17 +16244,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":302 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":289 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< * info.format + _buffer_format_string_len, * &offset) */ - __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == ((char *)NULL))) __PYX_ERR(2, 302, __pyx_L1_error) - __pyx_v_f = __pyx_t_7; + __pyx_t_8 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_8 == ((char *)NULL))) __PYX_ERR(2, 289, __pyx_L1_error) + __pyx_v_f = __pyx_t_8; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":305 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":292 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -15827,12 +16264,12 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":215 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< * # This implementation of getbuffer is geared towards Cython - * # requirements, and does not yet fullfill the PEP. + * # requirements, and does not yet fulfill the PEP. */ /* function exit code */ @@ -15840,18 +16277,18 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; - if (__pyx_v_info != NULL && __pyx_v_info->obj != NULL) { + if (__pyx_v_info->obj != NULL) { __Pyx_GOTREF(__pyx_v_info->obj); - __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = NULL; + __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; } goto __pyx_L2; __pyx_L0:; - if (__pyx_v_info != NULL && __pyx_v_info->obj == Py_None) { - __Pyx_GOTREF(Py_None); - __Pyx_DECREF(Py_None); __pyx_v_info->obj = NULL; + if (__pyx_v_info->obj == Py_None) { + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; } __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_descr); @@ -15859,7 +16296,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":307 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":294 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -15883,7 +16320,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":308 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":295 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -15893,7 +16330,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":309 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":296 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * PyObject_Free(info.format) # <<<<<<<<<<<<<< @@ -15902,7 +16339,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ PyObject_Free(__pyx_v_info->format); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":308 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":295 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -15911,7 +16348,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":310 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":297 * if PyArray_HASFIELDS(self): * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -15921,7 +16358,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":311 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":298 * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * PyObject_Free(info.strides) # <<<<<<<<<<<<<< @@ -15930,7 +16367,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ PyObject_Free(__pyx_v_info->strides); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":310 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":297 * if PyArray_HASFIELDS(self): * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -15939,7 +16376,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":307 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":294 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -15951,7 +16388,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":788 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":775 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -15965,7 +16402,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":789 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":776 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -15973,13 +16410,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ * cdef inline object PyArray_MultiIterNew2(a, b): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 789, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":788 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":775 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -15998,7 +16435,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":791 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":778 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -16012,7 +16449,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":792 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":779 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -16020,13 +16457,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ * cdef inline object PyArray_MultiIterNew3(a, b, c): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 792, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":778 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -16045,7 +16482,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":794 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":781 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -16059,7 +16496,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":782 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -16067,13 +16504,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ * cdef inline object PyArray_MultiIterNew4(a, b, c, d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 795, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":781 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -16092,7 +16529,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":797 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":784 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -16106,7 +16543,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":785 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -16114,13 +16551,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 798, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 785, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":797 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":784 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -16139,7 +16576,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":800 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":787 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -16153,7 +16590,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":788 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -16161,13 +16598,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ * cdef inline tuple PyDataType_SHAPE(dtype d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 801, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 788, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":800 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":787 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -16186,7 +16623,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":803 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":790 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -16200,7 +16637,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ int __pyx_t_1; __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":804 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":791 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -16210,7 +16647,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0); if (__pyx_t_1) { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":805 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":792 * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape # <<<<<<<<<<<<<< @@ -16222,7 +16659,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape); goto __pyx_L0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":804 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":791 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -16231,7 +16668,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ */ } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":807 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":794 * return d.subarray.shape * else: * return () # <<<<<<<<<<<<<< @@ -16245,7 +16682,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ goto __pyx_L0; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":790 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -16260,7 +16697,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ return __pyx_r; } -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":809 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":796 * return () * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -16289,7 +16726,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx char *__pyx_t_9; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":801 * * cdef dtype child * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -16298,7 +16735,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":802 * cdef dtype child * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -16307,7 +16744,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":805 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -16316,21 +16753,21 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ if (unlikely(__pyx_v_descr->names == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(2, 818, __pyx_L1_error) + __PYX_ERR(2, 805, __pyx_L1_error) } __pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; for (;;) { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(2, 818, __pyx_L1_error) + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(2, 805, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 818, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":819 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":806 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -16339,15 +16776,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ if (unlikely(__pyx_v_descr->fields == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(2, 819, __pyx_L1_error) + __PYX_ERR(2, 806, __pyx_L1_error) } - __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 819, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(2, 819, __pyx_L1_error) + if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(2, 806, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":807 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -16356,15 +16793,11 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ if (likely(__pyx_v_fields != Py_None)) { PyObject* sequence = __pyx_v_fields; - #if !CYTHON_COMPILING_IN_PYPY - Py_ssize_t size = Py_SIZE(sequence); - #else - Py_ssize_t size = PySequence_Size(sequence); - #endif + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(2, 820, __pyx_L1_error) + __PYX_ERR(2, 807, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); @@ -16372,51 +16805,51 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); #else - __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 820, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 820, __pyx_L1_error) + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 820, __pyx_L1_error) + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 807, __pyx_L1_error) } - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(2, 820, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(2, 807, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3)); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":809 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * */ - __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 822, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 822, __pyx_L1_error) + __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 822, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 809, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); - if (__pyx_t_6) { + if (unlikely(__pyx_t_6)) { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":810 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< * * if ((child.byteorder == c'>' and little_endian) or */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 823, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 823, __pyx_L1_error) + __PYX_ERR(2, 810, __pyx_L1_error) - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":809 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -16425,7 +16858,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":825 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":812 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -16445,7 +16878,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":813 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -16462,29 +16895,29 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = __pyx_t_7; __pyx_L7_bool_binop_done:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":825 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":812 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") */ - if (__pyx_t_6) { + if (unlikely(__pyx_t_6)) { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":814 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * # One could encode it in the format string and have Cython * # complain instead, BUT: < and > in format strings also imply */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 827, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 827, __pyx_L1_error) + __PYX_ERR(2, 814, __pyx_L1_error) - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":825 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":812 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -16493,7 +16926,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":824 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -16501,15 +16934,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * f += 1 */ while (1) { - __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 837, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 824, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 837, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 824, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 837, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 824, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":825 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -16518,7 +16951,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 0x78; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":826 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -16527,7 +16960,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":827 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -16538,7 +16971,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":829 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -16548,7 +16981,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":831 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -16558,19 +16991,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":832 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") */ - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 845, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 832, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":846 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":833 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -16578,22 +17011,22 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * */ __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); - if (__pyx_t_6) { + if (unlikely(__pyx_t_6)) { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":847 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":834 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< * * # Until ticket #99 is fixed, use integers to avoid warnings */ - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 847, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 834, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(2, 847, __pyx_L1_error) + __PYX_ERR(2, 834, __pyx_L1_error) - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":846 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":833 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -16602,252 +17035,252 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":837 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 850, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 837, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 850, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 837, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 850, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 837, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 98; goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":851 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":838 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 851, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 838, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 851, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 838, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 851, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 838, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 66; goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":852 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":839 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 852, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 839, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 852, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 839, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 852, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 839, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x68; goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":853 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 853, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 840, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 853, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 840, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 853, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 840, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 72; goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":854 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 854, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 854, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 841, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 854, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 841, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x69; goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":855 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 855, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 855, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 842, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 855, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 842, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 73; goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":856 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":843 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 856, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 843, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 856, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 843, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 856, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 843, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x6C; goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":857 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 857, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 857, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 844, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 857, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 844, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 76; goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":858 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":845 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 858, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 845, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 858, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 845, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 858, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 845, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x71; goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":859 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":846 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 859, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 859, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 846, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 859, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 846, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 81; goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":860 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":847 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 860, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 860, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 847, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 860, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 847, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x66; goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":861 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":848 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 861, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 861, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 848, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 861, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 848, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x64; goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":862 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":849 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 862, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 862, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 849, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 862, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 849, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x67; goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":863 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":850 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 863, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 863, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 850, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 863, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 850, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; @@ -16856,18 +17289,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":864 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":851 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 864, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 851, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 864, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 851, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 864, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 851, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; @@ -16876,18 +17309,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":865 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":852 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 865, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 852, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 865, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 852, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 865, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 852, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; @@ -16896,25 +17329,25 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":866 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":853 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 866, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 866, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 853, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 866, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 853, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_6) { + if (likely(__pyx_t_6)) { (__pyx_v_f[0]) = 79; goto __pyx_L15; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":868 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":855 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -16922,23 +17355,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * else: */ /*else*/ { - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 868, __pyx_L1_error) + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 868, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 868, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 868, __pyx_L1_error) + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(2, 855, __pyx_L1_error) } __pyx_L15:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":869 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":856 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -16947,7 +17375,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":831 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -16957,7 +17385,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L13; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":873 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":860 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -16965,12 +17393,12 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * */ /*else*/ { - __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 873, __pyx_L1_error) + __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 860, __pyx_L1_error) __pyx_v_f = __pyx_t_9; } __pyx_L13:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":805 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -16980,7 +17408,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":874 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":861 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -16990,7 +17418,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":809 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":796 * return () * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -17015,7 +17443,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":990 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":977 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -17030,7 +17458,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":992 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":979 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -17041,7 +17469,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":993 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":980 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -17050,7 +17478,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_baseptr = NULL; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":992 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":979 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -17060,7 +17488,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a goto __pyx_L3; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":995 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":982 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -17070,7 +17498,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a /*else*/ { Py_INCREF(__pyx_v_base); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":996 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":983 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -17081,7 +17509,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":997 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":984 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -17090,7 +17518,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":998 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":985 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -17099,7 +17527,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":990 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":977 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -17111,7 +17539,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1000 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":987 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -17125,7 +17553,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1001 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":988 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -17135,7 +17563,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1002 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":989 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -17143,11 +17571,10 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py * return arr.base */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(Py_None); - __pyx_r = Py_None; + __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1001 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":988 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -17156,7 +17583,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1004 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":991 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -17170,7 +17597,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1000 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":987 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -17185,7 +17612,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1009 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":996 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -17206,7 +17633,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_array", 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1010 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":997 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -17222,16 +17649,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1011 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":998 * cdef inline int import_array() except -1: * try: * _import_array() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.multiarray failed to import") */ - __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1011, __pyx_L3_error) + __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 998, __pyx_L3_error) - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1010 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":997 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -17245,7 +17672,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1012 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":999 * try: * _import_array() * except Exception: # <<<<<<<<<<<<<< @@ -17255,28 +17682,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1012, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 999, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1013 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1000 * _import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_umath() except -1: */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1013, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1000, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 1013, __pyx_L5_except_error) + __PYX_ERR(2, 1000, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1010 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":997 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -17291,7 +17718,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_L8_try_end:; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1009 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":996 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -17314,7 +17741,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1015 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1002 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -17335,7 +17762,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_umath", 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1016 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1003 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -17351,16 +17778,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1017 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1004 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.umath failed to import") */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1017, __pyx_L3_error) + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1004, __pyx_L3_error) - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1016 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1003 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -17374,7 +17801,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1018 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1005 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -17384,28 +17811,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1018, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1005, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1019 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1006 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_ufunc() except -1: */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1019, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1006, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 1019, __pyx_L5_except_error) + __PYX_ERR(2, 1006, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1016 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1003 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -17420,7 +17847,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_L8_try_end:; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1015 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1002 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -17443,7 +17870,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1021 +/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1008 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -17464,7 +17891,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1022 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1009 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -17480,16 +17907,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1023 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1010 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.umath failed to import") */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1023, __pyx_L3_error) + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1010, __pyx_L3_error) - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1022 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1009 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -17503,7 +17930,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1024 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1011 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -17512,26 +17939,26 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1024, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1011, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1025 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1012 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1025, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1012, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 1025, __pyx_L5_except_error) + __PYX_ERR(2, 1012, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1022 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1009 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -17546,7 +17973,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_L8_try_end:; } - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1021 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1008 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18165,6 +18592,10 @@ static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_number_of_constraints return __pyx_pw_6cocoex_9interface_7Problem_21number_of_constraints_1__get__(o); } +static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_number_of_integer_variables(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6cocoex_9interface_7Problem_27number_of_integer_variables_1__get__(o); +} + static PyObject *__pyx_getprop_6cocoex_9interface_7Problem_lower_bounds(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_6cocoex_9interface_7Problem_12lower_bounds_1__get__(o); } @@ -18247,6 +18678,7 @@ static struct PyGetSetDef __pyx_getsets_6cocoex_9interface_Problem[] = { {(char *)"dimension", __pyx_getprop_6cocoex_9interface_7Problem_dimension, 0, (char *)"alias for `number_of_variables` of the input space", 0}, {(char *)"number_of_objectives", __pyx_getprop_6cocoex_9interface_7Problem_number_of_objectives, 0, (char *)"number of objectives, if equal to 1, call returns a scalar", 0}, {(char *)"number_of_constraints", __pyx_getprop_6cocoex_9interface_7Problem_number_of_constraints, 0, (char *)"number of constraints", 0}, + {(char *)"number_of_integer_variables", __pyx_getprop_6cocoex_9interface_7Problem_number_of_integer_variables, 0, (char *)"number of integer variables", 0}, {(char *)"lower_bounds", __pyx_getprop_6cocoex_9interface_7Problem_lower_bounds, 0, (char *)"depending on the test bed, these are not necessarily strict bounds\n ", 0}, {(char *)"upper_bounds", __pyx_getprop_6cocoex_9interface_7Problem_upper_bounds, 0, (char *)"depending on the test bed, these are not necessarily strict bounds\n ", 0}, {(char *)"evaluations", __pyx_getprop_6cocoex_9interface_7Problem_evaluations, 0, (char *)0, 0}, @@ -18479,35 +18911,47 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_k_Dimension_np_size_y_d_of_input_y, sizeof(__pyx_k_Dimension_np_size_y_d_of_input_y), 0, 1, 0, 0}, {&__pyx_kp_u_Format_string_allocated_too_shor, __pyx_k_Format_string_allocated_too_shor, sizeof(__pyx_k_Format_string_allocated_too_shor), 0, 1, 0, 0}, {&__pyx_kp_u_Format_string_allocated_too_shor_2, __pyx_k_Format_string_allocated_too_shor_2, sizeof(__pyx_k_Format_string_allocated_too_shor_2), 0, 1, 0, 0}, + {&__pyx_kp_u_If, __pyx_k_If, sizeof(__pyx_k_If), 0, 1, 0, 0}, {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, {&__pyx_n_s_InvalidProblemException, __pyx_k_InvalidProblemException, sizeof(__pyx_k_InvalidProblemException), 0, 0, 1, 1}, + {&__pyx_kp_u_Known_suite_names_are, __pyx_k_Known_suite_names_are, sizeof(__pyx_k_Known_suite_names_are), 0, 1, 0, 0}, {&__pyx_n_s_NoSuchProblemException, __pyx_k_NoSuchProblemException, sizeof(__pyx_k_NoSuchProblemException), 0, 0, 1, 1}, {&__pyx_n_s_NoSuchSuiteException, __pyx_k_NoSuchSuiteException, sizeof(__pyx_k_NoSuchSuiteException), 0, 0, 1, 1}, {&__pyx_kp_u_No_suite_with_name_s_found, __pyx_k_No_suite_with_name_s_found, sizeof(__pyx_k_No_suite_with_name_s_found), 0, 1, 0, 0}, {&__pyx_kp_u_Non_native_byte_order_not_suppor, __pyx_k_Non_native_byte_order_not_suppor, sizeof(__pyx_k_Non_native_byte_order_not_suppor), 0, 1, 0, 0}, + {&__pyx_kp_u_None, __pyx_k_None, sizeof(__pyx_k_None), 0, 1, 0, 0}, {&__pyx_n_s_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 0, 1, 1}, {&__pyx_kp_u_Problem_already_initialized, __pyx_k_Problem_already_initialized, sizeof(__pyx_k_Problem_already_initialized), 0, 1, 0, 0}, {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1}, + {&__pyx_kp_u_Suite, __pyx_k_Suite, sizeof(__pyx_k_Suite), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_2, __pyx_k_Suite_2, sizeof(__pyx_k_Suite_2), 0, 1, 0, 0}, {&__pyx_n_s_Suite___iter, __pyx_k_Suite___iter, sizeof(__pyx_k_Suite___iter), 0, 0, 1, 1}, {&__pyx_kp_u_Suite_current_index___get___line, __pyx_k_Suite_current_index___get___line, sizeof(__pyx_k_Suite_current_index___get___line), 0, 1, 0, 0}, {&__pyx_kp_u_Suite_get_problem_by_function_di, __pyx_k_Suite_get_problem_by_function_di, sizeof(__pyx_k_Suite_get_problem_by_function_di), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_get_problem_line_191, __pyx_k_Suite_get_problem_line_191, sizeof(__pyx_k_Suite_get_problem_line_191), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_get_problem_line_195, __pyx_k_Suite_get_problem_line_195, sizeof(__pyx_k_Suite_get_problem_line_195), 0, 1, 0, 0}, {&__pyx_kp_u_Suite_has_been_finalized_free_ed, __pyx_k_Suite_has_been_finalized_free_ed, sizeof(__pyx_k_Suite_has_been_finalized_free_ed), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_ids_line_295, __pyx_k_Suite_ids_line_295, sizeof(__pyx_k_Suite_ids_line_295), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_r_r_r, __pyx_k_Suite_r_r_r, sizeof(__pyx_k_Suite_r_r_r), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_k_Suite_s_s_s_with_d_problem_s_in, sizeof(__pyx_k_Suite_s_s_s_with_d_problem_s_in), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_ids_line_299, __pyx_k_Suite_ids_line_299, sizeof(__pyx_k_Suite_ids_line_299), 0, 1, 0, 0}, {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, - {&__pyx_kp_u_Unkown_benchmark_suite_name_s_K, __pyx_k_Unkown_benchmark_suite_name_s_K, sizeof(__pyx_k_Unkown_benchmark_suite_name_s_K), 0, 1, 0, 0}, + {&__pyx_kp_u_Unkown_benchmark_suite_name, __pyx_k_Unkown_benchmark_suite_name, sizeof(__pyx_k_Unkown_benchmark_suite_name), 0, 1, 0, 0}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, {&__pyx_kp_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 0}, {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0}, - {&__pyx_kp_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 0}, - {&__pyx_kp_u__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0, 0}, + {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0}, {&__pyx_kp_u__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 1, 0, 0}, - {&__pyx_kp_u__16, __pyx_k__16, sizeof(__pyx_k__16), 0, 1, 0, 0}, + {&__pyx_kp_u__17, __pyx_k__17, sizeof(__pyx_k__17), 0, 1, 0, 0}, + {&__pyx_kp_u__18, __pyx_k__18, sizeof(__pyx_k__18), 0, 1, 0, 0}, + {&__pyx_kp_u__19, __pyx_k__19, sizeof(__pyx_k__19), 0, 1, 0, 0}, {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0}, - {&__pyx_n_u__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 1, 0, 1}, + {&__pyx_kp_u__20, __pyx_k__20, sizeof(__pyx_k__20), 0, 1, 0, 0}, + {&__pyx_n_u__27, __pyx_k__27, sizeof(__pyx_k__27), 0, 1, 0, 1}, + {&__pyx_kp_u__31, __pyx_k__31, sizeof(__pyx_k__31), 0, 1, 0, 0}, + {&__pyx_kp_u__32, __pyx_k__32, sizeof(__pyx_k__32), 0, 1, 0, 0}, + {&__pyx_kp_u__34, __pyx_k__34, sizeof(__pyx_k__34), 0, 1, 0, 0}, + {&__pyx_kp_u__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0, 0}, + {&__pyx_kp_u__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 1, 0, 0}, + {&__pyx_kp_u_a, __pyx_k_a, sizeof(__pyx_k_a), 0, 1, 0, 0}, {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, + {&__pyx_n_u_and, __pyx_k_and, sizeof(__pyx_k_and), 0, 1, 0, 1}, {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1}, @@ -18516,8 +18960,10 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_u_bbob, __pyx_k_bbob, sizeof(__pyx_k_bbob), 0, 1, 0, 1}, {&__pyx_kp_u_bbob_biobj, __pyx_k_bbob_biobj, sizeof(__pyx_k_bbob_biobj), 0, 1, 0, 0}, {&__pyx_kp_u_bbob_biobj_ext, __pyx_k_bbob_biobj_ext, sizeof(__pyx_k_bbob_biobj_ext), 0, 1, 0, 0}, + {&__pyx_kp_u_bbob_biobj_mixint, __pyx_k_bbob_biobj_mixint, sizeof(__pyx_k_bbob_biobj_mixint), 0, 1, 0, 0}, {&__pyx_kp_u_bbob_constrained, __pyx_k_bbob_constrained, sizeof(__pyx_k_bbob_constrained), 0, 1, 0, 0}, {&__pyx_kp_u_bbob_largescale, __pyx_k_bbob_largescale, sizeof(__pyx_k_bbob_largescale), 0, 1, 0, 0}, + {&__pyx_kp_u_bbob_mixint, __pyx_k_bbob_mixint, sizeof(__pyx_k_bbob_mixint), 0, 1, 0, 0}, {&__pyx_n_u_bi, __pyx_k_bi, sizeof(__pyx_k_bi), 0, 1, 0, 1}, {&__pyx_kp_u_cannot_deduce_function_id_from_s, __pyx_k_cannot_deduce_function_id_from_s, sizeof(__pyx_k_cannot_deduce_function_id_from_s), 0, 1, 0, 0}, {&__pyx_kp_u_cannot_deduce_instance_id_from_s, __pyx_k_cannot_deduce_instance_id_from_s, sizeof(__pyx_k_cannot_deduce_instance_id_from_s), 0, 1, 0, 0}, @@ -18526,9 +18972,10 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, {&__pyx_n_s_cocoex_exceptions, __pyx_k_cocoex_exceptions, sizeof(__pyx_k_cocoex_exceptions), 0, 0, 1, 1}, {&__pyx_n_s_cocoex_interface, __pyx_k_cocoex_interface, sizeof(__pyx_k_cocoex_interface), 0, 0, 1, 1}, + {&__pyx_kp_u_constraint, __pyx_k_constraint, sizeof(__pyx_k_constraint), 0, 1, 0, 0}, {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1}, {&__pyx_kp_s_cython_interface_pyx, __pyx_k_cython_interface_pyx, sizeof(__pyx_k_cython_interface_pyx), 0, 0, 1, 0}, - {&__pyx_kp_u_d_d, __pyx_k_d_d, sizeof(__pyx_k_d_d), 0, 1, 0, 0}, + {&__pyx_n_u_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 1, 0, 1}, {&__pyx_kp_u_d_dimensional, __pyx_k_d_dimensional, sizeof(__pyx_k_d_dimensional), 0, 1, 0, 0}, {&__pyx_n_u_deactivated, __pyx_k_deactivated, sizeof(__pyx_k_deactivated), 0, 1, 0, 1}, {&__pyx_n_s_dealloc, __pyx_k_dealloc, sizeof(__pyx_k_dealloc), 0, 0, 1, 1}, @@ -18560,17 +19007,21 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_u_has_never_been_tested_incomment, __pyx_k_has_never_been_tested_incomment, sizeof(__pyx_k_has_never_been_tested_incomment), 0, 1, 0, 0}, {&__pyx_n_u_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 1, 0, 1}, {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, - {&__pyx_kp_u_id_s_index_d, __pyx_k_id_s_index_d, sizeof(__pyx_k_id_s_index_d), 0, 1, 0, 0}, + {&__pyx_kp_u_id_2, __pyx_k_id_2, sizeof(__pyx_k_id_2), 0, 1, 0, 0}, + {&__pyx_kp_u_id_3, __pyx_k_id_3, sizeof(__pyx_k_id_3), 0, 1, 0, 0}, {&__pyx_kp_u_ids_id_snippets_get_problem_Fal, __pyx_k_ids_id_snippets_get_problem_Fal, sizeof(__pyx_k_ids_id_snippets_get_problem_Fal), 0, 1, 0, 0}, {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, {&__pyx_kp_u_in_Problem__initialize_problem_p, __pyx_k_in_Problem__initialize_problem_p, sizeof(__pyx_k_in_Problem__initialize_problem_p), 0, 1, 0, 0}, + {&__pyx_kp_u_in_dimension, __pyx_k_in_dimension, sizeof(__pyx_k_in_dimension), 0, 1, 0, 0}, {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1}, + {&__pyx_kp_u_index_2, __pyx_k_index_2, sizeof(__pyx_k_index_2), 0, 1, 0, 0}, {&__pyx_kp_u_index_in_the_enumerator_of_all_p, __pyx_k_index_in_the_enumerator_of_all_p, sizeof(__pyx_k_index_in_the_enumerator_of_all_p), 0, 1, 0, 0}, {&__pyx_n_s_indices, __pyx_k_indices, sizeof(__pyx_k_indices), 0, 0, 1, 1}, {&__pyx_n_s_inf, __pyx_k_inf, sizeof(__pyx_k_inf), 0, 0, 1, 1}, {&__pyx_n_s_initial_solution, __pyx_k_initial_solution, sizeof(__pyx_k_initial_solution), 0, 0, 1, 1}, {&__pyx_n_u_initialized, __pyx_k_initialized, sizeof(__pyx_k_initialized), 0, 1, 0, 1}, {&__pyx_n_s_instance, __pyx_k_instance, sizeof(__pyx_k_instance), 0, 0, 1, 1}, + {&__pyx_kp_u_integer_variable, __pyx_k_integer_variable, sizeof(__pyx_k_integer_variable), 0, 1, 0, 0}, {&__pyx_n_s_iter, __pyx_k_iter, sizeof(__pyx_k_iter), 0, 0, 1, 1}, {&__pyx_n_s_known_suite_names, __pyx_k_known_suite_names, sizeof(__pyx_k_known_suite_names), 0, 0, 1, 1}, {&__pyx_n_s_known_suite_names_2, __pyx_k_known_suite_names_2, sizeof(__pyx_k_known_suite_names_2), 0, 0, 1, 1}, @@ -18591,6 +19042,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_u_not_match_the_problem_dimension, __pyx_k_not_match_the_problem_dimension, sizeof(__pyx_k_not_match_the_problem_dimension), 0, 1, 0, 0}, {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1}, {&__pyx_n_s_number_of_constraints, __pyx_k_number_of_constraints, sizeof(__pyx_k_number_of_constraints), 0, 0, 1, 1}, + {&__pyx_n_s_number_of_integer_variables, __pyx_k_number_of_integer_variables, sizeof(__pyx_k_number_of_integer_variables), 0, 0, 1, 1}, {&__pyx_n_s_number_of_objectives, __pyx_k_number_of_objectives, sizeof(__pyx_k_number_of_objectives), 0, 0, 1, 1}, {&__pyx_n_s_number_of_variables, __pyx_k_number_of_variables, sizeof(__pyx_k_number_of_variables), 0, 0, 1, 1}, {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1}, @@ -18598,12 +19050,15 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_u_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 1, 0, 0}, {&__pyx_n_s_observe_with, __pyx_k_observe_with, sizeof(__pyx_k_observe_with), 0, 0, 1, 1}, {&__pyx_n_s_observer, __pyx_k_observer, sizeof(__pyx_k_observer), 0, 0, 1, 1}, + {&__pyx_kp_u_of_suite, __pyx_k_of_suite, sizeof(__pyx_k_of_suite), 0, 1, 0, 0}, {&__pyx_n_s_ones, __pyx_k_ones, sizeof(__pyx_k_ones), 0, 0, 1, 1}, {&__pyx_n_s_options, __pyx_k_options, sizeof(__pyx_k_options), 0, 0, 1, 1}, {&__pyx_n_s_order, __pyx_k_order, sizeof(__pyx_k_order), 0, 0, 1, 1}, {&__pyx_n_s_parse_id, __pyx_k_parse_id, sizeof(__pyx_k_parse_id), 0, 0, 1, 1}, {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, {&__pyx_n_u_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 1, 0, 1}, + {&__pyx_kp_u_problem, __pyx_k_problem, sizeof(__pyx_k_problem), 0, 1, 0, 0}, + {&__pyx_kp_u_problem_2, __pyx_k_problem_2, sizeof(__pyx_k_problem_2), 0, 1, 0, 0}, {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, {&__pyx_n_s_rand, __pyx_k_rand, sizeof(__pyx_k_rand), 0, 0, 1, 1}, {&__pyx_n_s_random, __pyx_k_random, sizeof(__pyx_k_random), 0, 0, 1, 1}, @@ -18616,8 +19071,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_restart_number, __pyx_k_restart_number, sizeof(__pyx_k_restart_number), 0, 0, 1, 1}, {&__pyx_kp_u_returns_a_Problem_instance_by_de, __pyx_k_returns_a_Problem_instance_by_de, sizeof(__pyx_k_returns_a_Problem_instance_by_de), 0, 1, 0, 0}, {&__pyx_n_u_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 1, 0, 1}, - {&__pyx_kp_u_s_a_s_s_problem_s_problem_d_of, __pyx_k_s_a_s_s_problem_s_problem_d_of, sizeof(__pyx_k_s_a_s_s_problem_s_problem_d_of), 0, 1, 0, 0}, - {&__pyx_kp_u_s_id_r, __pyx_k_s_id_r, sizeof(__pyx_k_s_id_r), 0, 1, 0, 0}, {&__pyx_kp_u_s_objective, __pyx_k_s_objective, sizeof(__pyx_k_s_objective), 0, 1, 0, 0}, {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, @@ -18640,25 +19093,29 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_upper_bounds, __pyx_k_upper_bounds, sizeof(__pyx_k_upper_bounds), 0, 0, 1, 1}, {&__pyx_n_s_verbose, __pyx_k_verbose, sizeof(__pyx_k_verbose), 0, 0, 1, 1}, {&__pyx_n_u_warning, __pyx_k_warning, sizeof(__pyx_k_warning), 0, 1, 0, 1}, + {&__pyx_kp_u_was_not_a_typo_you_can_add_the, __pyx_k_was_not_a_typo_you_can_add_the, sizeof(__pyx_k_was_not_a_typo_you_can_add_the), 0, 1, 0, 0}, {&__pyx_n_s_what, __pyx_k_what, sizeof(__pyx_k_what), 0, 0, 1, 1}, - {&__pyx_kp_u_with_d_constraint_s, __pyx_k_with_d_constraint_s, sizeof(__pyx_k_with_d_constraint_s), 0, 1, 0, 0}, + {&__pyx_kp_u_with, __pyx_k_with, sizeof(__pyx_k_with), 0, 1, 0, 0}, + {&__pyx_kp_u_with_2, __pyx_k_with_2, sizeof(__pyx_k_with_2), 0, 1, 0, 0}, + {&__pyx_n_u_with_3, __pyx_k_with_3, sizeof(__pyx_k_with_3), 0, 1, 0, 1}, + {&__pyx_kp_u_with_name, __pyx_k_with_name, sizeof(__pyx_k_with_name), 0, 1, 0, 0}, {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1}, {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1}, {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 75, __pyx_L1_error) - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 173, __pyx_L1_error) - __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 291, __pyx_L1_error) - __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 334, __pyx_L1_error) - __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 335, __pyx_L1_error) - __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 337, __pyx_L1_error) - __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(0, 410, __pyx_L1_error) - __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 410, __pyx_L1_error) - __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 529, __pyx_L1_error) - __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 552, __pyx_L1_error) - __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1013, __pyx_L1_error) + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 79, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 177, __pyx_L1_error) + __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 295, __pyx_L1_error) + __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 341, __pyx_L1_error) + __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(0, 414, __pyx_L1_error) + __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 414, __pyx_L1_error) + __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 534, __pyx_L1_error) + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 558, __pyx_L1_error) + __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1000, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; @@ -18668,69 +19125,69 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "cython/interface.pyx":73 + /* "cython/interface.pyx":77 * return s * if isinstance(s, (str, unicode)): * return s.encode('ascii') # why not s.encode('ascii') ? # <<<<<<<<<<<<<< * else: * raise TypeError("expect a string, got %s" % str(type(s))) */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_u_ascii); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 73, __pyx_L1_error) + __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_u_ascii); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); - /* "cython/interface.pyx":142 + /* "cython/interface.pyx":146 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * while True: * old_level = log_level('warning') # <<<<<<<<<<<<<< * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) */ - __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_u_warning); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 142, __pyx_L1_error) + __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_u_warning); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 146, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "cython/interface.pyx":173 + /* "cython/interface.pyx":177 * global _current_observer * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * if self.current_problem_: * self.current_problem_.free() */ - __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 173, __pyx_L1_error) + __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "cython/interface.pyx":223 + /* "cython/interface.pyx":227 * """ * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * index = id * try: */ - __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 223, __pyx_L1_error) + __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "cython/interface.pyx":264 + /* "cython/interface.pyx":268 * * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, */ - __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 264, __pyx_L1_error) + __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 268, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); - /* "cython/interface.pyx":291 + /* "cython/interface.pyx":295 * def find_problem_ids(self, *args, **kwargs): * """has been renamed to `ids`""" * raise NotImplementedError( # <<<<<<<<<<<<<< * "`find_problem_ids()` has been renamed to `ids()`") * */ - __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_find_problem_ids_has_been_renam); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 291, __pyx_L1_error) + __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_find_problem_ids_has_been_renam); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7); @@ -18740,40 +19197,40 @@ static int __Pyx_InitCachedConstants(void) { * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__8); - __Pyx_GIVEREF(__pyx_tuple__8); + __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__13); + __Pyx_GIVEREF(__pyx_tuple__13); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__9); - __Pyx_GIVEREF(__pyx_tuple__9); + __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__14); + __Pyx_GIVEREF(__pyx_tuple__14); - /* "cython/interface.pyx":450 + /* "cython/interface.pyx":454 * def __cinit__(self, name, options): * if isinstance(options, dict): * s = str(options).replace(',', ' ') # <<<<<<<<<<<<<< * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') */ - __pyx_tuple__12 = PyTuple_Pack(2, __pyx_kp_u__10, __pyx_kp_u__11); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__12); - __Pyx_GIVEREF(__pyx_tuple__12); + __pyx_tuple__16 = PyTuple_Pack(2, __pyx_kp_u__15, __pyx_kp_u__11); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 454, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__16); + __Pyx_GIVEREF(__pyx_tuple__16); - /* "cython/interface.pyx":451 + /* "cython/interface.pyx":455 * if isinstance(options, dict): * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: # <<<<<<<<<<<<<< * s = s.replace(c, '') * options = s */ - __pyx_tuple__17 = PyTuple_Pack(6, __pyx_kp_u_u, __pyx_kp_u_u_2, __pyx_kp_u__13, __pyx_kp_u__14, __pyx_kp_u__15, __pyx_kp_u__16); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 451, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__17); - __Pyx_GIVEREF(__pyx_tuple__17); + __pyx_tuple__21 = PyTuple_Pack(6, __pyx_kp_u_u, __pyx_kp_u_u_2, __pyx_kp_u__17, __pyx_kp_u__18, __pyx_kp_u__19, __pyx_kp_u__20); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 455, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__21); + __Pyx_GIVEREF(__pyx_tuple__21); /* "(tree fragment)":2 * def __reduce_cython__(self): @@ -18781,95 +19238,95 @@ static int __Pyx_InitCachedConstants(void) { * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__18); - __Pyx_GIVEREF(__pyx_tuple__18); + __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__22); + __Pyx_GIVEREF(__pyx_tuple__22); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__19); - __Pyx_GIVEREF(__pyx_tuple__19); + __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__23); + __Pyx_GIVEREF(__pyx_tuple__23); - /* "cython/interface.pyx":529 + /* "cython/interface.pyx":534 * cdef np.npy_intp shape[1] * if self.initialized: * raise RuntimeError("Problem already initialized") # <<<<<<<<<<<<<< * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") */ - __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_u_Problem_already_initialized); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 529, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__20); - __Pyx_GIVEREF(__pyx_tuple__20); + __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_u_Problem_already_initialized); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 534, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__24); + __Pyx_GIVEREF(__pyx_tuple__24); - /* "cython/interface.pyx":531 + /* "cython/interface.pyx":536 * raise RuntimeError("Problem already initialized") * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") # <<<<<<<<<<<<<< * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) */ - __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_u_in_Problem__initialize_problem_p); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 531, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__21); - __Pyx_GIVEREF(__pyx_tuple__21); + __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_u_in_Problem__initialize_problem_p); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 536, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__25); + __Pyx_GIVEREF(__pyx_tuple__25); - /* "cython/interface.pyx":586 + /* "cython/interface.pyx":592 * for the assessment of the algorithm. * """ * raise NotImplementedError("has never been tested, incomment this to start testing") # <<<<<<<<<<<<<< * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u_has_never_been_tested_incomment); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 586, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__22); - __Pyx_GIVEREF(__pyx_tuple__22); + __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_u_has_never_been_tested_incomment); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 592, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__26); + __Pyx_GIVEREF(__pyx_tuple__26); - /* "cython/interface.pyx":818 + /* "cython/interface.pyx":831 * if i < 0: * raise ValueError() * return int(self.id[i + len(substr):].split('_')[0]) # <<<<<<<<<<<<<< * * @property */ - __pyx_tuple__24 = PyTuple_Pack(1, __pyx_n_u__23); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 818, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__24); - __Pyx_GIVEREF(__pyx_tuple__24); + __pyx_tuple__28 = PyTuple_Pack(1, __pyx_n_u__27); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 831, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__28); + __Pyx_GIVEREF(__pyx_tuple__28); - /* "cython/interface.pyx":824 + /* "cython/interface.pyx":837 * "see __init__.py" * try: * return self._parse_id('_f') # <<<<<<<<<<<<<< * except ValueError: * raise ValueError("cannot deduce function id from '%s'" % self.id) */ - __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_u_f); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 824, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__25); - __Pyx_GIVEREF(__pyx_tuple__25); + __pyx_tuple__29 = PyTuple_Pack(1, __pyx_n_u_f); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 837, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__29); + __Pyx_GIVEREF(__pyx_tuple__29); - /* "cython/interface.pyx":832 + /* "cython/interface.pyx":845 * "see __init__.py" * try: * return self._parse_id('_i') # <<<<<<<<<<<<<< * except ValueError: * raise ValueError("cannot deduce instance id from '%s'" % self.id) */ - __pyx_tuple__26 = PyTuple_Pack(1, __pyx_n_u_i); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 832, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__26); - __Pyx_GIVEREF(__pyx_tuple__26); + __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_u_i); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 845, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__30); + __Pyx_GIVEREF(__pyx_tuple__30); - /* "cython/interface.pyx":879 + /* "cython/interface.pyx":897 * if self.problem is not NULL: * return "<%s(), id=%r>" % ( * repr(self.__class__).split()[1][1:-2], # <<<<<<<<<<<<<< * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_slice__27 = PySlice_New(__pyx_int_1, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__27)) __PYX_ERR(0, 879, __pyx_L1_error) - __Pyx_GOTREF(__pyx_slice__27); - __Pyx_GIVEREF(__pyx_slice__27); + __pyx_slice__33 = PySlice_New(__pyx_int_1, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__33)) __PYX_ERR(0, 897, __pyx_L1_error) + __Pyx_GOTREF(__pyx_slice__33); + __Pyx_GIVEREF(__pyx_slice__33); /* "(tree fragment)":2 * def __reduce_cython__(self): @@ -18877,127 +19334,127 @@ static int __Pyx_InitCachedConstants(void) { * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__28); - __Pyx_GIVEREF(__pyx_tuple__28); + __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__35); + __Pyx_GIVEREF(__pyx_tuple__35); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__29); - __Pyx_GIVEREF(__pyx_tuple__29); + __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__36); + __Pyx_GIVEREF(__pyx_tuple__36); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":229 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) */ - __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(2, 235, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__30); - __Pyx_GIVEREF(__pyx_tuple__30); + __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(2, 229, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__37); + __Pyx_GIVEREF(__pyx_tuple__37); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":233 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< * * info.buf = PyArray_DATA(self) */ - __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(2, 239, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__31); - __Pyx_GIVEREF(__pyx_tuple__31); + __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(2, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__38); + __Pyx_GIVEREF(__pyx_tuple__38); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":263 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" */ - __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(2, 276, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__32); - __Pyx_GIVEREF(__pyx_tuple__32); + __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(2, 263, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__39); + __Pyx_GIVEREF(__pyx_tuple__39); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":810 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< * * if ((child.byteorder == c'>' and little_endian) or */ - __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(2, 823, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__33); - __Pyx_GIVEREF(__pyx_tuple__33); + __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(2, 810, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__40); + __Pyx_GIVEREF(__pyx_tuple__40); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":814 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * # One could encode it in the format string and have Cython * # complain instead, BUT: < and > in format strings also imply */ - __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(2, 827, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__34); - __Pyx_GIVEREF(__pyx_tuple__34); + __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(2, 814, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__41); + __Pyx_GIVEREF(__pyx_tuple__41); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":847 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":834 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< * * # Until ticket #99 is fixed, use integers to avoid warnings */ - __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(2, 847, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__35); - __Pyx_GIVEREF(__pyx_tuple__35); + __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(2, 834, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__42); + __Pyx_GIVEREF(__pyx_tuple__42); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1013 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1000 * _import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_umath() except -1: */ - __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(2, 1013, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__36); - __Pyx_GIVEREF(__pyx_tuple__36); + __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(2, 1000, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__43); + __Pyx_GIVEREF(__pyx_tuple__43); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1019 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1006 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_ufunc() except -1: */ - __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(2, 1019, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__37); - __Pyx_GIVEREF(__pyx_tuple__37); + __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(2, 1006, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__44); + __Pyx_GIVEREF(__pyx_tuple__44); - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1025 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1012 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< */ - __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(2, 1025, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__38); - __Pyx_GIVEREF(__pyx_tuple__38); + __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(2, 1012, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__45); + __Pyx_GIVEREF(__pyx_tuple__45); - /* "cython/interface.pyx":895 + /* "cython/interface.pyx":913 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< * """`log_level(level=None)` return current log level and * set new log level if `level is not None and level`. */ - __pyx_tuple__39 = PyTuple_Pack(2, __pyx_n_s_level, __pyx_n_s_level_2); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 895, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__39); - __Pyx_GIVEREF(__pyx_tuple__39); - __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_cython_interface_pyx, __pyx_n_s_log_level, 895, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 895, __pyx_L1_error) + __pyx_tuple__46 = PyTuple_Pack(2, __pyx_n_s_level, __pyx_n_s_level_2); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 913, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__46); + __Pyx_GIVEREF(__pyx_tuple__46); + __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_cython_interface_pyx, __pyx_n_s_log_level, 913, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 913, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -19006,6 +19463,7 @@ static int __Pyx_InitCachedConstants(void) { } static int __Pyx_InitGlobals(void) { + __pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type; if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); __pyx_float_1_0 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_float_1_0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) @@ -19018,42 +19476,215 @@ static int __Pyx_InitGlobals(void) { return -1; } -#if PY_MAJOR_VERSION < 3 -PyMODINIT_FUNC initinterface(void); /*proto*/ -PyMODINIT_FUNC initinterface(void) -#else -PyMODINIT_FUNC PyInit_interface(void); /*proto*/ -PyMODINIT_FUNC PyInit_interface(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); +static int __Pyx_modinit_global_init_code(void); /*proto*/ +static int __Pyx_modinit_variable_export_code(void); /*proto*/ +static int __Pyx_modinit_function_export_code(void); /*proto*/ +static int __Pyx_modinit_type_init_code(void); /*proto*/ +static int __Pyx_modinit_type_import_code(void); /*proto*/ +static int __Pyx_modinit_variable_import_code(void); /*proto*/ +static int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; } -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; } -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + __pyx_vtabptr_6cocoex_9interface_Suite = &__pyx_vtable_6cocoex_9interface_Suite; + __pyx_vtable_6cocoex_9interface_Suite._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Suite *))__pyx_f_6cocoex_9interface_5Suite__initialize; + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 83, __pyx_L1_error) + __pyx_type_6cocoex_9interface_Suite.tp_print = 0; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6cocoex_9interface_Suite.tp_dictoffset && __pyx_type_6cocoex_9interface_Suite.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_6cocoex_9interface_Suite.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + #if CYTHON_COMPILING_IN_CPYTHON + { + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 83, __pyx_L1_error) + if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { + __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__.doc = __pyx_doc_6cocoex_9interface_5Suite_10__getitem__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__; + } + } + #endif + #if CYTHON_COMPILING_IN_CPYTHON + { + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__iter__"); if (unlikely(!wrapper)) __PYX_ERR(0, 83, __pyx_L1_error) + if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { + __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__.doc = __pyx_doc_6cocoex_9interface_5Suite_26__iter__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__; + } + } + #endif + if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Suite.tp_dict, __pyx_vtabptr_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 83, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "Suite", (PyObject *)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 83, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 83, __pyx_L1_error) + __pyx_ptype_6cocoex_9interface_Suite = &__pyx_type_6cocoex_9interface_Suite; + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 445, __pyx_L1_error) + __pyx_type_6cocoex_9interface_Observer.tp_print = 0; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6cocoex_9interface_Observer.tp_dictoffset && __pyx_type_6cocoex_9interface_Observer.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_6cocoex_9interface_Observer.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + if (PyObject_SetAttrString(__pyx_m, "Observer", (PyObject *)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 445, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 445, __pyx_L1_error) + __pyx_ptype_6cocoex_9interface_Observer = &__pyx_type_6cocoex_9interface_Observer; + __pyx_vtabptr_6cocoex_9interface_Problem = &__pyx_vtable_6cocoex_9interface_Problem; + __pyx_vtable_6cocoex_9interface_Problem._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Problem *, coco_problem_t *, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args))__pyx_f_6cocoex_9interface_7Problem__initialize; + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 509, __pyx_L1_error) + __pyx_type_6cocoex_9interface_Problem.tp_print = 0; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6cocoex_9interface_Problem.tp_dictoffset && __pyx_type_6cocoex_9interface_Problem.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_6cocoex_9interface_Problem.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + #if CYTHON_COMPILING_IN_CPYTHON + { + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Problem, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 509, __pyx_L1_error) + if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { + __pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__.doc = __pyx_doc_6cocoex_9interface_7Problem_22__call__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__; + } + } + #endif + if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Problem.tp_dict, __pyx_vtabptr_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 509, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "Problem", (PyObject *)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 509, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 509, __pyx_L1_error) + __pyx_ptype_6cocoex_9interface_Problem = &__pyx_type_6cocoex_9interface_Problem; + if (PyType_Ready(&__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__) < 0) __PYX_ERR(0, 418, __pyx_L1_error) + __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_print = 0; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_dictoffset && __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + } + __pyx_ptype_6cocoex_9interface___pyx_scope_struct____iter__ = &__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__; + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyTypeObject), + #else + sizeof(PyHeapTypeObject), + #endif + 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(3, 9, __pyx_L1_error) + __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(2, 164, __pyx_L1_error) + __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(2, 186, __pyx_L1_error) + __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(2, 190, __pyx_L1_error) + __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(2, 199, __pyx_L1_error) + __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(2, 872, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + + +#if PY_MAJOR_VERSION < 3 +#ifdef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC void +#else +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#endif +#else +#ifdef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#endif +#endif +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) + #define CYTHON_SMALL_CODE __attribute__((optimize("Os"))) +#else + #define CYTHON_SMALL_CODE +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC initinterface(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initinterface(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_interface(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_interface(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + result = PyDict_SetItemString(moddict, to_name, value); + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; return module; @@ -19073,17 +19704,19 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) __Pyx_RefNannyDeclarations #if CYTHON_PEP489_MULTI_PHASE_INIT if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); #endif #if CYTHON_REFNANNY - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); - if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); - } - #endif - __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_interface(void)", 0); +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_interface(void)", 0); if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) @@ -19153,79 +19786,14 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global init code ---*/ - /*--- Variable export code ---*/ - /*--- Function export code ---*/ - /*--- Type init code ---*/ - __pyx_vtabptr_6cocoex_9interface_Suite = &__pyx_vtable_6cocoex_9interface_Suite; - __pyx_vtable_6cocoex_9interface_Suite._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Suite *))__pyx_f_6cocoex_9interface_5Suite__initialize; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 79, __pyx_L1_error) - __pyx_type_6cocoex_9interface_Suite.tp_print = 0; - #if CYTHON_COMPILING_IN_CPYTHON - { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 79, __pyx_L1_error) - if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { - __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base; - __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__.doc = __pyx_doc_6cocoex_9interface_5Suite_10__getitem__; - ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__; - } - } - #endif - #if CYTHON_COMPILING_IN_CPYTHON - { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__iter__"); if (unlikely(!wrapper)) __PYX_ERR(0, 79, __pyx_L1_error) - if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { - __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base; - __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__.doc = __pyx_doc_6cocoex_9interface_5Suite_26__iter__; - ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__; - } - } - #endif - if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Suite.tp_dict, __pyx_vtabptr_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 79, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Suite", (PyObject *)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 79, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 79, __pyx_L1_error) - __pyx_ptype_6cocoex_9interface_Suite = &__pyx_type_6cocoex_9interface_Suite; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 441, __pyx_L1_error) - __pyx_type_6cocoex_9interface_Observer.tp_print = 0; - if (PyObject_SetAttrString(__pyx_m, "Observer", (PyObject *)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 441, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 441, __pyx_L1_error) - __pyx_ptype_6cocoex_9interface_Observer = &__pyx_type_6cocoex_9interface_Observer; - __pyx_vtabptr_6cocoex_9interface_Problem = &__pyx_vtable_6cocoex_9interface_Problem; - __pyx_vtable_6cocoex_9interface_Problem._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Problem *, coco_problem_t *, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args))__pyx_f_6cocoex_9interface_7Problem__initialize; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 505, __pyx_L1_error) - __pyx_type_6cocoex_9interface_Problem.tp_print = 0; - #if CYTHON_COMPILING_IN_CPYTHON - { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Problem, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 505, __pyx_L1_error) - if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { - __pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__ = *((PyWrapperDescrObject *)wrapper)->d_base; - __pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__.doc = __pyx_doc_6cocoex_9interface_7Problem_22__call__; - ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__; - } - } - #endif - if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Problem.tp_dict, __pyx_vtabptr_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 505, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Problem", (PyObject *)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 505, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 505, __pyx_L1_error) - __pyx_ptype_6cocoex_9interface_Problem = &__pyx_type_6cocoex_9interface_Problem; - if (PyType_Ready(&__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__) < 0) __PYX_ERR(0, 414, __pyx_L1_error) - __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_print = 0; - __pyx_ptype_6cocoex_9interface___pyx_scope_struct____iter__ = &__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__; - /*--- Type import code ---*/ - __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", - #if CYTHON_COMPILING_IN_PYPY - sizeof(PyTypeObject), - #else - sizeof(PyHeapTypeObject), - #endif - 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(3, 9, __pyx_L1_error) - __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(2, 163, __pyx_L1_error) - __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(2, 185, __pyx_L1_error) - __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(2, 189, __pyx_L1_error) - __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(2, 198, __pyx_L1_error) - __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(2, 885, __pyx_L1_error) - /*--- Variable import code ---*/ - /*--- Function import code ---*/ + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + (void)__Pyx_modinit_function_export_code(); + if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; + if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error; + (void)__Pyx_modinit_variable_import_code(); + (void)__Pyx_modinit_function_import_code(); /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) @@ -19260,7 +19828,7 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) * * from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException # <<<<<<<<<<<<<< * - * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-largescale"] + * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale", */ __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); @@ -19293,11 +19861,11 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) /* "cython/interface.pyx":10 * from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException * - * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-largescale"] # <<<<<<<<<<<<<< - * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained"] - * _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] + * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale", # <<<<<<<<<<<<<< + * "bbob-mixint", "bbob-biobj-mixint"] + * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] */ - __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __pyx_t_2 = PyList_New(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_u_bbob); __Pyx_GIVEREF(__pyx_n_u_bbob); @@ -19308,20 +19876,29 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) __Pyx_INCREF(__pyx_kp_u_bbob_biobj_ext); __Pyx_GIVEREF(__pyx_kp_u_bbob_biobj_ext); PyList_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_bbob_biobj_ext); + __Pyx_INCREF(__pyx_kp_u_bbob_constrained); + __Pyx_GIVEREF(__pyx_kp_u_bbob_constrained); + PyList_SET_ITEM(__pyx_t_2, 3, __pyx_kp_u_bbob_constrained); __Pyx_INCREF(__pyx_kp_u_bbob_largescale); __Pyx_GIVEREF(__pyx_kp_u_bbob_largescale); - PyList_SET_ITEM(__pyx_t_2, 3, __pyx_kp_u_bbob_largescale); + PyList_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_bbob_largescale); + __Pyx_INCREF(__pyx_kp_u_bbob_mixint); + __Pyx_GIVEREF(__pyx_kp_u_bbob_mixint); + PyList_SET_ITEM(__pyx_t_2, 5, __pyx_kp_u_bbob_mixint); + __Pyx_INCREF(__pyx_kp_u_bbob_biobj_mixint); + __Pyx_GIVEREF(__pyx_kp_u_bbob_biobj_mixint); + PyList_SET_ITEM(__pyx_t_2, 6, __pyx_kp_u_bbob_biobj_mixint); if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":12 - * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-largescale"] - * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained"] - * _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] # <<<<<<<<<<<<<< + /* "cython/interface.pyx":13 + * "bbob-mixint", "bbob-biobj-mixint"] + * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] + * _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale", # <<<<<<<<<<<<<< + * "bbob-mixint", "bbob-biobj-mixint"] * - * # _test_assignment = "seems to prevent an 'export' error (i.e. induce export) to make this module known under Linux and Windows (possibly because of the leading underscore of _interface)" */ - __pyx_t_2 = PyList_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __pyx_t_2 = PyList_New(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_u_bbob); __Pyx_GIVEREF(__pyx_n_u_bbob); @@ -19338,28 +19915,34 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) __Pyx_INCREF(__pyx_kp_u_bbob_largescale); __Pyx_GIVEREF(__pyx_kp_u_bbob_largescale); PyList_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_bbob_largescale); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names_2, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_INCREF(__pyx_kp_u_bbob_mixint); + __Pyx_GIVEREF(__pyx_kp_u_bbob_mixint); + PyList_SET_ITEM(__pyx_t_2, 5, __pyx_kp_u_bbob_mixint); + __Pyx_INCREF(__pyx_kp_u_bbob_biobj_mixint); + __Pyx_GIVEREF(__pyx_kp_u_bbob_biobj_mixint); + PyList_SET_ITEM(__pyx_t_2, 6, __pyx_kp_u_bbob_biobj_mixint); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names_2, __pyx_t_2) < 0) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":18 + /* "cython/interface.pyx":20 * * # Must initialize numpy or risk segfaults * np.import_array() # <<<<<<<<<<<<<< * * cdef extern from "coco.h": */ - __pyx_t_3 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 18, __pyx_L1_error) + __pyx_t_3 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 20, __pyx_L1_error) - /* "cython/interface.pyx":895 + /* "cython/interface.pyx":913 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< * """`log_level(level=None)` return current log level and * set new log level if `level is not None and level`. */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6cocoex_9interface_1log_level, NULL, __pyx_n_s_cocoex_interface); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 895, __pyx_L1_error) + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6cocoex_9interface_1log_level, NULL, __pyx_n_s_cocoex_interface); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_log_level, __pyx_t_2) < 0) __PYX_ERR(0, 895, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_log_level, __pyx_t_2) < 0) __PYX_ERR(0, 913, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":1 @@ -19369,14 +19952,14 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) */ __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_line_191, __pyx_kp_u_get_problem_self_id_observer_No) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_line_195, __pyx_kp_u_get_problem_self_id_observer_No) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_by_function_di, __pyx_kp_u_returns_a_Problem_instance_by_de) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_ids_line_295, __pyx_kp_u_ids_id_snippets_get_problem_Fal) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_ids_line_299, __pyx_kp_u_ids_id_snippets_get_problem_Fal) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_current_index___get___line, __pyx_kp_u_index_in_the_enumerator_of_all_p) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1021 + /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1008 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -19427,6 +20010,20 @@ static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { } #endif +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + /* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); @@ -19461,37 +20058,240 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg } #endif -/* PyErrFetchRestore */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; +/* PyCFunctionFastCall */ +#if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { + PyCFunctionObject *func = (PyCFunctionObject*)func_obj; + PyCFunction meth = PyCFunction_GET_FUNCTION(func); + PyObject *self = PyCFunction_GET_SELF(func); + int flags = PyCFunction_GET_FLAGS(func); + assert(PyCFunction_Check(func)); + assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); + assert(nargs >= 0); + assert(nargs == 0 || args != NULL); + /* _PyCFunction_FastCallDict() must not be called with an exception set, + because it may clear it (directly or indirectly) and so the + caller loses its exception */ + assert(!PyErr_Occurred()); + if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { + return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); + } else { + return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); + } } #endif -/* RaiseException */ -#if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL +#include "frameobject.h" +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = f->f_localsplus; + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { + return NULL; + } + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = PyCFunction_GET_FUNCTION(func); + self = PyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallOneArg */ +#if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_New(1); + if (unlikely(!args)) return NULL; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +#if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCall(func, &arg, 1); + } +#endif + if (likely(PyCFunction_Check(func))) { + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, arg); +#if CYTHON_FAST_PYCCALL + } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { + return __Pyx_PyCFunction_FastCall(func, &arg, 1); +#endif + } + } + return __Pyx__PyObject_CallOneArg(func, arg); +} +#else +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_Pack(1, arg); + if (unlikely(!args)) return NULL; + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +} +#endif + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, + CYTHON_UNUSED PyObject *cause) { + __Pyx_PyThreadState_declare + Py_XINCREF(type); + if (!value || value == Py_None) value = NULL; else Py_INCREF(value); @@ -19738,256 +20538,53 @@ static int __Pyx_ParseOptionalKeywords( PyUnicode_Compare(**name, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; } } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION < 3 + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + return -1; } -#endif /* PyObjectCallNoArg */ #if CYTHON_COMPILING_IN_CPYTHON @@ -20014,10 +20611,19 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 + result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); + if (likely(result)) { + Py_INCREF(result); + } else if (unlikely(PyErr_Occurred())) { + result = NULL; + } else { +#else result = PyDict_GetItem(__pyx_d, name); if (likely(result)) { Py_INCREF(result); } else { +#endif #else result = PyObject_GetItem(__pyx_d, name); if (!result) { @@ -20028,8 +20634,89 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { return result; } +/* PyObjectFormatAndDecref */ + static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f) { + if (unlikely(!s)) return NULL; + if (likely(PyUnicode_CheckExact(s))) return s; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_CheckExact(s))) { + PyObject *result = PyUnicode_FromEncodedObject(s, NULL, "strict"); + Py_DECREF(s); + return result; + } + #endif + return __Pyx_PyObject_FormatAndDecref(s, f); +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObject* f) { + PyObject *result = PyObject_Format(s, f); + Py_DECREF(s); + return result; +} + +/* JoinPyUnicode */ + static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, + CYTHON_UNUSED Py_UCS4 max_char) { +#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *result_uval; + int result_ukind; + Py_ssize_t i, char_pos; + void *result_udata; +#if CYTHON_PEP393_ENABLED + result_uval = PyUnicode_New(result_ulength, max_char); + if (unlikely(!result_uval)) return NULL; + result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; + result_udata = PyUnicode_DATA(result_uval); +#else + result_uval = PyUnicode_FromUnicode(NULL, result_ulength); + if (unlikely(!result_uval)) return NULL; + result_ukind = sizeof(Py_UNICODE); + result_udata = PyUnicode_AS_UNICODE(result_uval); +#endif + char_pos = 0; + for (i=0; i < value_count; i++) { + int ukind; + Py_ssize_t ulength; + void *udata; + PyObject *uval = PyTuple_GET_ITEM(value_tuple, i); + if (unlikely(__Pyx_PyUnicode_READY(uval))) + goto bad; + ulength = __Pyx_PyUnicode_GET_LENGTH(uval); + if (unlikely(!ulength)) + continue; + if (unlikely(char_pos + ulength < 0)) + goto overflow; + ukind = __Pyx_PyUnicode_KIND(uval); + udata = __Pyx_PyUnicode_DATA(uval); + if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) { + memcpy((char *)result_udata + char_pos * result_ukind, udata, (size_t) (ulength * result_ukind)); + } else { + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters) + _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); + #else + Py_ssize_t j; + for (j=0; j < ulength; j++) { + Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); + __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); + } + #endif + } + char_pos += ulength; + } + return result_uval; +overflow: + PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); +bad: + Py_DECREF(result_uval); + return NULL; +#else + result_ulength++; + value_count++; + return PyUnicode_Join(__pyx_empty_unicode, value_tuple); +#endif +} + /* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE + #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #if PY_VERSION_HEX >= 0x030700A2 *type = tstate->exc_state.exc_type; @@ -20068,7 +20755,7 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject #endif /* GetException */ - #if CYTHON_FAST_THREAD_STATE + #if CYTHON_FAST_THREAD_STATE static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { @@ -20138,7 +20825,7 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) } /* PyObjectCallMethod1 */ - static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { PyObject *result = NULL; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(method))) { @@ -20180,17 +20867,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) return result; } static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { - PyObject *method, *result = NULL; + PyObject *method, *result; method = __Pyx_PyObject_GetAttrStr(obj, method_name); - if (unlikely(!method)) goto done; + if (unlikely(!method)) return NULL; result = __Pyx__PyObject_CallMethod1(method, arg); -done: - Py_XDECREF(method); + Py_DECREF(method); return result; } /* append */ - static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { + static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { if (likely(PyList_CheckExact(L))) { if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; } else { @@ -20203,7 +20889,7 @@ static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name } /* PyIntBinop */ - #if !CYTHON_COMPILING_IN_PYPY + #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { @@ -20241,6 +20927,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED goto long_long; #endif } + CYTHON_FALLTHROUGH; case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -20251,6 +20938,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED goto long_long; #endif } + CYTHON_FALLTHROUGH; case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -20261,6 +20949,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED goto long_long; #endif } + CYTHON_FALLTHROUGH; case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -20271,6 +20960,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED goto long_long; #endif } + CYTHON_FALLTHROUGH; case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -20281,6 +20971,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED goto long_long; #endif } + CYTHON_FALLTHROUGH; case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -20291,6 +20982,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED goto long_long; #endif } + CYTHON_FALLTHROUGH; default: return PyLong_Type.tp_as_number->nb_add(op1, op2); } } @@ -20318,48 +21010,8 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED } #endif -/* KeywordStringCheck */ - static int __Pyx_CheckKeywordStrings( - PyObject *kwdict, - const char* function_name, - int kw_allowed) -{ - PyObject* key = 0; - Py_ssize_t pos = 0; -#if CYTHON_COMPILING_IN_PYPY - if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) - goto invalid_keyword; - return 1; -#else - while (PyDict_Next(kwdict, &pos, &key, 0)) { - #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_Check(key))) - #endif - if (unlikely(!PyUnicode_Check(key))) - goto invalid_keyword_type; - } - if ((!kw_allowed) && unlikely(key)) - goto invalid_keyword; - return 1; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - return 0; -#endif -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif - return 0; -} - /* GetItemInt */ - static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; if (!j) return NULL; r = PyObject_GetItem(o, j); @@ -20437,41 +21089,381 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, return m->sq_item(o, i); } } -#else - if (is_list || PySequence_Check(o)) { - return PySequence_GetItem(o, i); +#else + if (is_list || PySequence_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + +/* ObjectGetItem */ + #if CYTHON_USE_TYPE_SLOTS +static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { + PyObject *runerr; + Py_ssize_t key_value; + PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence; + if (unlikely(!(m && m->sq_item))) { + PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name); + return NULL; + } + key_value = __Pyx_PyIndex_AsSsize_t(index); + if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); + } + if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { + PyErr_Clear(); + PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name); + } + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) { + PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping; + if (likely(m && m->mp_subscript)) { + return m->mp_subscript(obj, key); + } + return __Pyx_PyObject_GetIndex(obj, key); +} +#endif + +/* KeywordStringCheck */ + static int __Pyx_CheckKeywordStrings( + PyObject *kwdict, + const char* function_name, + int kw_allowed) +{ + PyObject* key = 0; + Py_ssize_t pos = 0; +#if CYTHON_COMPILING_IN_PYPY + if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) + goto invalid_keyword; + return 1; +#else + while (PyDict_Next(kwdict, &pos, &key, 0)) { + #if PY_MAJOR_VERSION < 3 + if (unlikely(!PyString_Check(key))) + #endif + if (unlikely(!PyUnicode_Check(key))) + goto invalid_keyword_type; + } + if ((!kw_allowed) && unlikely(key)) + goto invalid_keyword; + return 1; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + return 0; +#endif +invalid_keyword: + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION < 3 + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif + return 0; +} + +/* PyObjectFormat */ + #if CYTHON_USE_UNICODE_WRITER +static PyObject* __Pyx_PyObject_Format(PyObject* obj, PyObject* format_spec) { + int ret; + _PyUnicodeWriter writer; + if (likely(PyFloat_CheckExact(obj))) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x03040000 + _PyUnicodeWriter_Init(&writer, 0); +#else + _PyUnicodeWriter_Init(&writer); +#endif + ret = _PyFloat_FormatAdvancedWriter( + &writer, + obj, + format_spec, 0, PyUnicode_GET_LENGTH(format_spec)); + } else if (likely(PyLong_CheckExact(obj))) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x03040000 + _PyUnicodeWriter_Init(&writer, 0); +#else + _PyUnicodeWriter_Init(&writer); +#endif + ret = _PyLong_FormatAdvancedWriter( + &writer, + obj, + format_spec, 0, PyUnicode_GET_LENGTH(format_spec)); + } else { + return PyObject_Format(obj, format_spec); + } + if (unlikely(ret == -1)) { + _PyUnicodeWriter_Dealloc(&writer); + return NULL; + } + return _PyUnicodeWriter_Finish(&writer); +} +#endif + +/* CIntToDigits */ + static const char DIGIT_PAIRS_10[2*10*10+1] = { + "00010203040506070809" + "10111213141516171819" + "20212223242526272829" + "30313233343536373839" + "40414243444546474849" + "50515253545556575859" + "60616263646566676869" + "70717273747576777879" + "80818283848586878889" + "90919293949596979899" +}; +static const char DIGIT_PAIRS_8[2*8*8+1] = { + "0001020304050607" + "1011121314151617" + "2021222324252627" + "3031323334353637" + "4041424344454647" + "5051525354555657" + "6061626364656667" + "7071727374757677" +}; +static const char DIGITS_HEX[2*16+1] = { + "0123456789abcdef" + "0123456789ABCDEF" +}; + +/* BuildPyUnicode */ + static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength, + int prepend_sign, char padding_char) { + PyObject *uval; + Py_ssize_t uoffset = ulength - clength; +#if CYTHON_USE_UNICODE_INTERNALS + Py_ssize_t i; +#if CYTHON_PEP393_ENABLED + void *udata; + uval = PyUnicode_New(ulength, 127); + if (unlikely(!uval)) return NULL; + udata = PyUnicode_DATA(uval); +#else + Py_UNICODE *udata; + uval = PyUnicode_FromUnicode(NULL, ulength); + if (unlikely(!uval)) return NULL; + udata = PyUnicode_AS_UNICODE(uval); +#endif + if (uoffset > 0) { + i = 0; + if (prepend_sign) { + __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, 0, '-'); + i++; + } + for (; i < uoffset; i++) { + __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, i, padding_char); + } + } + for (i=0; i < clength; i++) { + __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, uoffset+i, chars[i]); + } +#else + { + uval = NULL; + PyObject *sign = NULL, *padding = NULL; + if (uoffset > 0) { + prepend_sign = !!prepend_sign; + if (uoffset > prepend_sign) { + padding = PyUnicode_FromOrdinal(padding_char); + if (likely(padding) && uoffset > prepend_sign + 1) { + PyObject *tmp; + PyObject *repeat = PyInt_FromSize_t(uoffset - prepend_sign); + if (unlikely(!repeat)) goto done_or_error; + tmp = PyNumber_Multiply(padding, repeat); + Py_DECREF(repeat); + Py_DECREF(padding); + padding = tmp; + } + if (unlikely(!padding)) goto done_or_error; + } + if (prepend_sign) { + sign = PyUnicode_FromOrdinal('-'); + if (unlikely(!sign)) goto done_or_error; + } + } + uval = PyUnicode_DecodeASCII(chars, clength, NULL); + if (likely(uval) && padding) { + PyObject *tmp = PyNumber_Add(padding, uval); + Py_DECREF(uval); + uval = tmp; + } + if (likely(uval) && sign) { + PyObject *tmp = PyNumber_Add(sign, uval); + Py_DECREF(uval); + uval = tmp; + } +done_or_error: + Py_XDECREF(padding); + Py_XDECREF(sign); + } +#endif + return uval; +} + +/* CIntToPyUnicode */ + #ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned short uint16_t; + #else + typedef unsigned __int16 uint16_t; + #endif + #endif +#else + #include +#endif +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) { + char digits[sizeof(Py_ssize_t)*3+2]; + char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2; + const char *hex_digits = DIGITS_HEX; + Py_ssize_t length, ulength; + int prepend_sign, last_one_off; + Py_ssize_t remaining; + const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0; + const int is_unsigned = neg_one > const_zero; + if (format_char == 'X') { + hex_digits += 16; + format_char = 'x'; + } + remaining = value; + last_one_off = 0; + dpos = end; + do { + int digit_pos; + switch (format_char) { + case 'o': + digit_pos = abs((int)(remaining % (8*8))); + remaining = (Py_ssize_t) (remaining / (8*8)); + dpos -= 2; + *(uint16_t*)dpos = ((uint16_t*)DIGIT_PAIRS_8)[digit_pos]; + last_one_off = (digit_pos < 8); + break; + case 'd': + digit_pos = abs((int)(remaining % (10*10))); + remaining = (Py_ssize_t) (remaining / (10*10)); + dpos -= 2; + *(uint16_t*)dpos = ((uint16_t*)DIGIT_PAIRS_10)[digit_pos]; + last_one_off = (digit_pos < 10); + break; + case 'x': + *(--dpos) = hex_digits[abs((int)(remaining % 16))]; + remaining = (Py_ssize_t) (remaining / 16); + break; + default: + assert(0); + break; + } + } while (unlikely(remaining != 0)); + if (last_one_off) { + assert(*dpos == '0'); + dpos++; + } + length = end - dpos; + ulength = length; + prepend_sign = 0; + if (!is_unsigned && value <= neg_one) { + if (padding_char == ' ' || width <= length + 1) { + *(--dpos) = '-'; + ++length; + } else { + prepend_sign = 1; + } + ++ulength; + } + if (width > ulength) { + ulength = width; + } + if (ulength == 1) { + return PyUnicode_FromOrdinal(*dpos); + } + return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char); +} + +/* PyUnicode_Unicode */ + static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj) { + if (unlikely(obj == Py_None)) + obj = __pyx_kp_u_None; + return __Pyx_NewRef(obj); +} + +/* FastTypeChecks */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = a->tp_base; + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; } - -/* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; icurexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { + if (likely(err == exc_type1 || err == exc_type2)) return 1; + if (likely(PyExceptionClass_Check(err))) { + return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); + } + return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); } #endif /* SwapException */ - #if CYTHON_FAST_THREAD_STATE + #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; #if PY_VERSION_HEX >= 0x030700A2 @@ -20505,7 +21497,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, #endif /* ExtTypeTest */ - static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { if (unlikely(!type)) { PyErr_SetString(PyExc_SystemError, "Missing type object"); return 0; @@ -20518,7 +21510,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, } /* SetItemInt */ - static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { + static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { int r; if (!j) return -1; r = PyObject_SetItem(o, j, v); @@ -20566,7 +21558,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje } /* IsLittleEndian */ - static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) + static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) { union { uint32_t u32; @@ -20577,7 +21569,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje } /* BufferFormatCheck */ - static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, + static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, __Pyx_BufFmt_StackElem* stack, __Pyx_TypeInfo* type) { stack[0].field = &ctx->root; @@ -21036,6 +22028,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha __Pyx_BufFmt_RaiseUnexpectedChar('Z'); return NULL; } + CYTHON_FALLTHROUGH; case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I': case 'l': case 'L': case 'q': case 'Q': case 'f': case 'd': case 'g': @@ -21048,6 +22041,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha ++ts; break; } + CYTHON_FALLTHROUGH; case 's': if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; ctx->enc_count = ctx->new_count; @@ -21077,7 +22071,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha } /* BufferGetAndValidate */ - static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { + static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { if (unlikely(info->buf == NULL)) return; if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; __Pyx_ReleaseBuffer(info); @@ -21124,13 +22118,13 @@ fail:; } /* BufferFallbackError */ - static void __Pyx_RaiseBufferFallbackError(void) { + static void __Pyx_RaiseBufferFallbackError(void) { PyErr_SetString(PyExc_ValueError, "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); } /* PyIntBinop */ - #if !CYTHON_COMPILING_IN_PYPY + #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { @@ -21168,6 +22162,7 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U goto long_long; #endif } + CYTHON_FALLTHROUGH; case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -21178,6 +22173,7 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U goto long_long; #endif } + CYTHON_FALLTHROUGH; case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -21188,6 +22184,7 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U goto long_long; #endif } + CYTHON_FALLTHROUGH; case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -21198,6 +22195,7 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U goto long_long; #endif } + CYTHON_FALLTHROUGH; case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -21208,6 +22206,7 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U goto long_long; #endif } + CYTHON_FALLTHROUGH; case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -21218,6 +22217,7 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U goto long_long; #endif } + CYTHON_FALLTHROUGH; default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2); } } @@ -21246,7 +22246,7 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U #endif /* PyIntBinop */ - #if !CYTHON_COMPILING_IN_PYPY + #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { @@ -21274,31 +22274,37 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } + CYTHON_FALLTHROUGH; case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT && 1 * PyLong_SHIFT < 53) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } + CYTHON_FALLTHROUGH; case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT && 2 * PyLong_SHIFT < 53) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } + CYTHON_FALLTHROUGH; case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT && 2 * PyLong_SHIFT < 53) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } + CYTHON_FALLTHROUGH; case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT && 3 * PyLong_SHIFT < 53) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } + CYTHON_FALLTHROUGH; case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT && 3 * PyLong_SHIFT < 53) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } + CYTHON_FALLTHROUGH; default: return PyLong_Type.tp_as_number->nb_true_divide(op1, op2); } } @@ -21325,7 +22331,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON #endif /* BytesEquals */ - static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { + static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY return PyObject_RichCompareBool(s1, s2, equals); #else @@ -21372,7 +22378,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON } /* UnicodeEquals */ - static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { + static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY return PyObject_RichCompareBool(s1, s2, equals); #else @@ -21471,7 +22477,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON } /* WriteUnraisableException */ - static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, + static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, int full_traceback, CYTHON_UNUSED int nogil) { PyObject *old_exc, *old_val, *old_tb; @@ -21513,7 +22519,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON } /* SliceObject */ - static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, + static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) { @@ -21609,8 +22615,161 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON return NULL; } +/* PyErrExceptionMatches */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; icurexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; + if (unlikely(PyTuple_Check(err))) + return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); +} +#endif + +/* UnpackUnboundCMethod */ + static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { + PyObject *method; + method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); + if (unlikely(!method)) + return -1; + target->method = method; +#if CYTHON_COMPILING_IN_CPYTHON + #if PY_MAJOR_VERSION >= 3 + if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type))) + #endif + { + PyMethodDescrObject *descr = (PyMethodDescrObject*) method; + target->func = descr->d_method->ml_meth; + target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST); + } +#endif + return 0; +} + +/* CallUnboundCMethod1 */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) { + if (likely(cfunc->func)) { + int flag = cfunc->flag; + if (flag == METH_O) { + return (*(cfunc->func))(self, arg); + } else if (PY_VERSION_HEX >= 0x030600B1 && flag == METH_FASTCALL) { + if (PY_VERSION_HEX >= 0x030700A0) { + return (*(__Pyx_PyCFunctionFast)cfunc->func)(self, &arg, 1); + } else { + return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, &arg, 1, NULL); + } + } else if (PY_VERSION_HEX >= 0x030700A0 && flag == (METH_FASTCALL | METH_KEYWORDS)) { + return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, &arg, 1, NULL); + } + } + return __Pyx__CallUnboundCMethod1(cfunc, self, arg); +} +#endif +static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){ + PyObject *args, *result = NULL; + if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; +#if CYTHON_COMPILING_IN_CPYTHON + if (cfunc->func && (cfunc->flag & METH_VARARGS)) { + args = PyTuple_New(1); + if (unlikely(!args)) goto bad; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + if (cfunc->flag & METH_KEYWORDS) + result = (*(PyCFunctionWithKeywords)cfunc->func)(self, args, NULL); + else + result = (*cfunc->func)(self, args); + } else { + args = PyTuple_New(2); + if (unlikely(!args)) goto bad; + Py_INCREF(self); + PyTuple_SET_ITEM(args, 0, self); + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 1, arg); + result = __Pyx_PyObject_Call(cfunc->method, args, NULL); + } +#else + args = PyTuple_Pack(2, self, arg); + if (unlikely(!args)) goto bad; + result = __Pyx_PyObject_Call(cfunc->method, args, NULL); +#endif +bad: + Py_XDECREF(args); + return result; +} + +/* CallUnboundCMethod2 */ + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1 +static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) { + if (likely(cfunc->func)) { + PyObject *args[2] = {arg1, arg2}; + if (cfunc->flag == METH_FASTCALL) { + #if PY_VERSION_HEX >= 0x030700A0 + return (*(__Pyx_PyCFunctionFast)cfunc->func)(self, args, 2); + #else + return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, args, 2, NULL); + #endif + } + #if PY_VERSION_HEX >= 0x030700A0 + if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS)) + return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, args, 2, NULL); + #endif + } + return __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2); +} +#endif +static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){ + PyObject *args, *result = NULL; + if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; +#if CYTHON_COMPILING_IN_CPYTHON + if (cfunc->func && (cfunc->flag & METH_VARARGS)) { + args = PyTuple_New(2); + if (unlikely(!args)) goto bad; + Py_INCREF(arg1); + PyTuple_SET_ITEM(args, 0, arg1); + Py_INCREF(arg2); + PyTuple_SET_ITEM(args, 1, arg2); + if (cfunc->flag & METH_KEYWORDS) + result = (*(PyCFunctionWithKeywords)cfunc->func)(self, args, NULL); + else + result = (*cfunc->func)(self, args); + } else { + args = PyTuple_New(3); + if (unlikely(!args)) goto bad; + Py_INCREF(self); + PyTuple_SET_ITEM(args, 0, self); + Py_INCREF(arg1); + PyTuple_SET_ITEM(args, 1, arg1); + Py_INCREF(arg2); + PyTuple_SET_ITEM(args, 2, arg2); + result = __Pyx_PyObject_Call(cfunc->method, args, NULL); + } +#else + args = PyTuple_Pack(3, self, arg1, arg2); + if (unlikely(!args)) goto bad; + result = __Pyx_PyObject_Call(cfunc->method, args, NULL); +#endif +bad: + Py_XDECREF(args); + return result; +} + /* dict_getitem_default */ - static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) { + static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) { PyObject* value; #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY value = PyDict_GetItemWithError(d, key); @@ -21620,6 +22779,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON value = default_value; } Py_INCREF(value); + if ((1)); #else if (PyString_CheckExact(key) || PyUnicode_CheckExact(key) || PyInt_CheckExact(key)) { value = PyDict_GetItem(d, key); @@ -21627,18 +22787,19 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON value = default_value; } Py_INCREF(value); - } else { - if (default_value == Py_None) - default_value = NULL; - value = PyObject_CallMethodObjArgs( - d, __pyx_n_s_get, key, default_value, NULL); } #endif + else { + if (default_value == Py_None) + value = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_get, d, key); + else + value = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_get, d, key, default_value); + } return value; } /* PyIntBinop */ - #if !CYTHON_COMPILING_IN_PYPY + #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { if (op1 == op2) { Py_RETURN_TRUE; @@ -21670,31 +22831,37 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } + CYTHON_FALLTHROUGH; case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } + CYTHON_FALLTHROUGH; case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } + CYTHON_FALLTHROUGH; case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } + CYTHON_FALLTHROUGH; case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } + CYTHON_FALLTHROUGH; case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } + CYTHON_FALLTHROUGH; #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15 default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ); #else @@ -21722,26 +22889,95 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED } #endif +/* DictGetItem */ + #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) + PyErr_SetObject(PyExc_KeyError, args); + Py_XDECREF(args); + } + return NULL; + } + Py_INCREF(value); + return value; +} +#endif + /* RaiseTooManyValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { PyErr_Format(PyExc_ValueError, "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); } /* RaiseNeedMoreValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { PyErr_Format(PyExc_ValueError, "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", index, (index == 1) ? "" : "s"); } /* RaiseNoneIterError */ - static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { + static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); } +/* PyObject_GenericGetAttrNoDict */ + #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'%.50s' object has no attribute '%U'", + tp->tp_name, attr_name); +#else + "'%.50s' object has no attribute '%.400s'", + tp->tp_name, PyString_AS_STRING(attr_name)); +#endif + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { + PyObject *descr; + PyTypeObject *tp = Py_TYPE(obj); + if (unlikely(!PyString_Check(attr_name))) { + return PyObject_GenericGetAttr(obj, attr_name); + } + assert(!tp->tp_dictoffset); + descr = _PyType_Lookup(tp, attr_name); + if (unlikely(!descr)) { + return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } + Py_INCREF(descr); + #if PY_MAJOR_VERSION < 3 + if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif + { + descrgetfunc f = Py_TYPE(descr)->tp_descr_get; + if (unlikely(f)) { + PyObject *res = f(descr, obj, (PyObject *)tp); + Py_DECREF(descr); + return res; + } + } + return descr; +} +#endif + +/* PyObject_GenericGetAttr */ + #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { + if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { + return PyObject_GenericGetAttr(obj, attr_name); + } + return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); +} +#endif + /* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { + static int __Pyx_SetVtable(PyObject *dict, void *vtable) { #if PY_VERSION_HEX >= 0x02070000 PyObject *ob = PyCapsule_New(vtable, 0, 0); #else @@ -21759,7 +22995,7 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED } /* SetupReduce */ - static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { + static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { int ret; PyObject *name_attr; name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2); @@ -21835,7 +23071,7 @@ static int __Pyx_setup_reduce(PyObject* type_obj) { } /* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { PyObject *empty_list = 0; PyObject *module = 0; PyObject *global_dict = 0; @@ -21900,7 +23136,7 @@ static int __Pyx_setup_reduce(PyObject* type_obj) { } /* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Format(PyExc_ImportError, @@ -21914,18 +23150,21 @@ static int __Pyx_setup_reduce(PyObject* type_obj) { } /* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK + #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { PyObject *use_cline; PyObject *ptype, *pvalue, *ptraceback; #if CYTHON_COMPILING_IN_CPYTHON PyObject **cython_runtime_dict; #endif + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); #if CYTHON_COMPILING_IN_CPYTHON cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); if (likely(cython_runtime_dict)) { - use_cline = PyDict_GetItem(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); + use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); } else #endif { @@ -21951,7 +23190,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li #endif /* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; @@ -22031,7 +23270,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { } /* AddTraceback */ - #include "compile.h" + #include "compile.h" #include "frameobject.h" #include "traceback.h" static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( @@ -22137,8 +23376,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif - /* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + /* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) @@ -22160,7 +23399,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { @@ -22191,7 +23430,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { @@ -22222,7 +23461,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* Declarations */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { return ::std::complex< float >(x, y); @@ -22242,7 +23481,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* Arithmetic */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #else static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { return (a.real == b.real) && (a.imag == b.imag); @@ -22377,7 +23616,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* Declarations */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { return ::std::complex< double >(x, y); @@ -22397,7 +23636,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* Arithmetic */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #else static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { return (a.real == b.real) && (a.imag == b.imag); @@ -22532,7 +23771,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) { + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) { const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { @@ -22563,7 +23802,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntFromPy */ - static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { + static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { const size_t neg_one = (size_t) -1, const_zero = (size_t) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 @@ -22752,7 +23991,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 @@ -22941,7 +24180,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 @@ -23129,80 +24368,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { return (long) -1; } -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - /* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { PyObject* fake_module; PyTypeObject* cached_type = NULL; fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); @@ -23241,7 +24408,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj } /* CoroutineBase */ - #include + #include #include #define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) static int __Pyx_PyGen__FetchStopIterationValue(CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject **pvalue) { @@ -23340,7 +24507,7 @@ static void __Pyx__Coroutine_AlreadyRunningError(CYTHON_UNUSED __pyx_CoroutineOb const char *msg; if (0) { #ifdef __Pyx_Coroutine_USED - } else if (__Pyx_Coroutine_CheckExact((PyObject*)gen)) { + } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { msg = "coroutine already executing"; #endif #ifdef __Pyx_AsyncGen_USED @@ -23357,7 +24524,7 @@ static void __Pyx__Coroutine_NotStartedError(CYTHON_UNUSED PyObject *gen) { const char *msg; if (0) { #ifdef __Pyx_Coroutine_USED - } else if (__Pyx_Coroutine_CheckExact(gen)) { + } else if (__Pyx_Coroutine_Check(gen)) { msg = "can't send non-None value to a just-started coroutine"; #endif #ifdef __Pyx_AsyncGen_USED @@ -23372,7 +24539,7 @@ static void __Pyx__Coroutine_NotStartedError(CYTHON_UNUSED PyObject *gen) { #define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL) static void __Pyx__Coroutine_AlreadyTerminatedError(CYTHON_UNUSED PyObject *gen, PyObject *value, CYTHON_UNUSED int closing) { #ifdef __Pyx_Coroutine_USED - if (!closing && __Pyx_Coroutine_CheckExact(gen)) { + if (!closing && __Pyx_Coroutine_Check(gen)) { PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); } else #endif @@ -23478,7 +24645,7 @@ static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { } else #endif #ifdef __Pyx_Coroutine_USED - if (__Pyx_Coroutine_CheckExact(yf)) { + if (__Pyx_Coroutine_Check(yf)) { ret = __Pyx_Coroutine_Send(yf, value); } else #endif @@ -23524,7 +24691,7 @@ static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { } else #endif #ifdef __Pyx_Coroutine_USED - if (__Pyx_Coroutine_CheckExact(yf)) { + if (__Pyx_Coroutine_Check(yf)) { retval = __Pyx_Coroutine_Close(yf); if (!retval) return -1; @@ -23580,6 +24747,11 @@ static PyObject *__Pyx_Generator_Next(PyObject *self) { if (PyGen_CheckExact(yf)) { ret = _PyGen_Send((PyGenObject*)yf, NULL); } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, Py_None); + } else #endif ret = Py_TYPE(yf)->tp_iternext(yf); gen->is_running = 0; @@ -23611,7 +24783,7 @@ static PyObject *__Pyx_Coroutine_Close(PyObject *self) { Py_DECREF(retval); if ((0)) { #ifdef __Pyx_Coroutine_USED - } else if (__Pyx_Coroutine_CheckExact(self)) { + } else if (__Pyx_Coroutine_Check(self)) { msg = "coroutine ignored GeneratorExit"; #endif #ifdef __Pyx_AsyncGen_USED @@ -23659,7 +24831,7 @@ static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject || __Pyx_Generator_CheckExact(yf) #endif #ifdef __Pyx_Coroutine_USED - || __Pyx_Coroutine_CheckExact(yf) + || __Pyx_Coroutine_Check(yf) #endif ) { ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); @@ -23728,6 +24900,7 @@ static int __Pyx_Coroutine_clear(PyObject *self) { Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); } #endif + Py_CLEAR(gen->gi_code); Py_CLEAR(gen->gi_name); Py_CLEAR(gen->gi_qualname); Py_CLEAR(gen->gi_modulename); @@ -23913,15 +25086,15 @@ __Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value) return 0; } static __pyx_CoroutineObject *__Pyx__Coroutine_New( - PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *closure, + PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name) { __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); if (unlikely(!gen)) return NULL; - return __Pyx__Coroutine_NewInit(gen, body, closure, name, qualname, module_name); + return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name); } static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( - __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *closure, + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name) { gen->body = body; gen->closure = closure; @@ -23940,12 +25113,14 @@ static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( gen->gi_name = name; Py_XINCREF(module_name); gen->gi_modulename = module_name; + Py_XINCREF(code); + gen->gi_code = code; PyObject_GC_Track(gen); return gen; } /* PatchModuleWithCoroutine */ - static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { + static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) int result; PyObject *globals, *result_obj; @@ -23985,7 +25160,7 @@ static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( } /* PatchGeneratorABC */ - #ifndef CYTHON_REGISTER_ABCS + #ifndef CYTHON_REGISTER_ABCS #define CYTHON_REGISTER_ABCS 1 #endif #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) @@ -24042,7 +25217,7 @@ static int __Pyx_patch_abc(void) { } /* Generator */ - static PyMethodDef __pyx_Generator_methods[] = { + static PyMethodDef __pyx_Generator_methods[] = { {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")}, {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, @@ -24055,6 +25230,7 @@ static PyMemberDef __pyx_Generator_memberlist[] = { {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, (char*) PyDoc_STR("object being iterated by 'yield from', or None")}, + {(char*) "gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, {0, 0, 0, 0, 0} }; static PyGetSetDef __pyx_Generator_getsets[] = { @@ -24123,7 +25299,7 @@ static PyTypeObject __pyx_GeneratorType_type = { #endif }; static int __pyx_Generator_init(void) { - __pyx_GeneratorType_type.tp_getattro = PyObject_GenericGetAttr; + __pyx_GeneratorType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter; __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type); if (unlikely(!__pyx_GeneratorType)) { @@ -24133,7 +25309,7 @@ static int __pyx_Generator_init(void) { } /* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { + static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); @@ -24149,7 +25325,7 @@ static int __pyx_Generator_init(void) { } /* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule + #ifndef __PYX_HAVE_RT_ImportModule #define __PYX_HAVE_RT_ImportModule static PyObject *__Pyx_ImportModule(const char *name) { PyObject *py_name = 0; @@ -24167,7 +25343,7 @@ static PyObject *__Pyx_ImportModule(const char *name) { #endif /* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType + #ifndef __PYX_HAVE_RT_ImportType #define __PYX_HAVE_RT_ImportType static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict) @@ -24232,7 +25408,7 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class #endif /* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { @@ -24258,7 +25434,7 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class if (!*t->p) return -1; if (PyObject_Hash(*t->p) == -1) - PyErr_Clear(); + return -1; ++t; } return 0; @@ -24472,6 +25648,9 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_DECREF(x); return ival; } +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } diff --git a/code-experiments/build/python/cython/interface.pyx b/code-experiments/build/python/cython/interface.pyx index 57203fd3e..ae5bbf3a0 100755 --- a/code-experiments/build/python/cython/interface.pyx +++ b/code-experiments/build/python/cython/interface.pyx @@ -7,9 +7,11 @@ cimport numpy as np from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException -known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-largescale"] -# known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained"] -_known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale"] +known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale", + "bbob-mixint", "bbob-biobj-mixint"] +# known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] +_known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale", + "bbob-mixint", "bbob-biobj-mixint"] # _test_assignment = "seems to prevent an 'export' error (i.e. induce export) to make this module known under Linux and Windows (possibly because of the leading underscore of _interface)" # __all__ = ['Observer', 'Problem', 'Suite'] @@ -54,6 +56,7 @@ cdef extern from "coco.h": size_t coco_problem_get_dimension(const coco_problem_t *problem) size_t coco_problem_get_number_of_objectives(const coco_problem_t *problem) size_t coco_problem_get_number_of_constraints(const coco_problem_t *problem) + size_t coco_problem_get_number_of_integer_variables(const coco_problem_t *problem) const char *coco_problem_get_id(const coco_problem_t *problem) const char *coco_problem_get_name(const coco_problem_t *problem) const double *coco_problem_get_smallest_values_of_interest(const coco_problem_t *problem) @@ -65,6 +68,7 @@ cdef extern from "coco.h": double coco_problem_get_best_observed_fvalue1(const coco_problem_t *problem) int coco_problem_final_target_hit(const coco_problem_t *problem) void bbob_problem_best_parameter_print(const coco_problem_t *problem) + void bbob_biobj_problem_best_parameter_print(const coco_problem_t *problem) cdef bytes _bstring(s): if type(s) is bytes: @@ -514,6 +518,7 @@ cdef class Problem: cdef size_t _number_of_variables cdef size_t _number_of_objectives cdef size_t _number_of_constraints + cdef size_t _number_of_integer_variables cdef _suite_name # for the record cdef _list_of_observers # for the record cdef _problem_index # for the record, this is not public but used in index property @@ -540,6 +545,7 @@ cdef class Problem: self._number_of_variables = coco_problem_get_dimension(self.problem) self._number_of_objectives = coco_problem_get_number_of_objectives(self.problem) self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) + self._number_of_integer_variables = coco_problem_get_number_of_integer_variables(self.problem) self.y_values = np.zeros(self._number_of_objectives) self.constraint_values = np.zeros(self._number_of_constraints) self.x_initial = np.zeros(self._number_of_variables) @@ -719,6 +725,10 @@ cdef class Problem: "number of constraints" return self._number_of_constraints @property + def number_of_integer_variables(self): + "number of integer variables" + return self._number_of_integer_variables + @property def lower_bounds(self): """depending on the test bed, these are not necessarily strict bounds """ @@ -759,7 +769,10 @@ cdef class Problem: def _best_parameter(self, what=None): if what == 'print': - bbob_problem_best_parameter_print(self.problem) + if self._number_of_objectives == 2: + bbob_biobj_problem_best_parameter_print(self.problem) + else: + bbob_problem_best_parameter_print(self.problem) def free(self, force=False): """Free the given test problem. @@ -864,8 +877,13 @@ cdef class Problem: " with %d constraint%s" % (self.number_of_constraints, "s" if self.number_of_constraints > 1 else "") ) - return '%s: a %s %s problem%s (problem %d of suite "%s" with name "%s")' % ( - self.id, dimensional, objective, constraints, self.index, + integer_variables = "" if self.number_of_integer_variables == 0 else ( + " %s %d integer variable%s" % ("and" if constraints != "" else "with", + self.number_of_integer_variables, + "s" if self.number_of_integer_variables > 1 else "") + ) + return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( + self.id, dimensional, objective, constraints, integer_variables, self.index, self.suite, self.name) # self.name.replace(self.name.split()[0], # self.name.split()[0] + "(%d)" diff --git a/code-experiments/build/python/demo.py b/code-experiments/build/python/demo.py index 28dab21b3..e0cc1cad5 100755 --- a/code-experiments/build/python/demo.py +++ b/code-experiments/build/python/demo.py @@ -62,6 +62,8 @@ def random_search(fun, lbounds, ubounds, budget): # bbob-biobj bbob-biobj # bbob-biobj-ext bbob-biobj # bbob-largescale bbob + # bbob-mixint bbob + # bbob-biobj-mixint bbob-biobj suite_options = "" # options syntax could be: "instances:1-5; dimensions:2-20", observer_options = "%s_on_%s" % (solver.__name__, suite_name) # TODO: "folder:random_search; verbosity:1" # for more details on suite and observer options, see diff --git a/code-experiments/build/python/python/__init__.py b/code-experiments/build/python/python/__init__.py index d552be5ab..f575cf271 100644 --- a/code-experiments/build/python/python/__init__.py +++ b/code-experiments/build/python/python/__init__.py @@ -48,7 +48,9 @@ def default_observers(update=None): 'bbob-biobj': 'bbob-biobj', 'bbob-biobj-ext': 'bbob-biobj', 'bbob-constrained': 'bbob', - 'bbob-largescale': 'bbob', # todo: needs to be confirmed + 'bbob-largescale': 'bbob', + 'bbob-mixint': 'bbob', + 'bbob-biobj-minxint': 'bbob-biobj', } class Suite(_Suite): diff --git a/code-experiments/build/python/setup.py.in b/code-experiments/build/python/setup.py.in index abc1d5fe7..022d3d70c 100644 --- a/code-experiments/build/python/setup.py.in +++ b/code-experiments/build/python/setup.py.in @@ -37,11 +37,13 @@ else: if True or 'darwin' in sys.platform or 'linux' in sys.platform: extensions.append(Extension('cocoex.interface', sources=[interface_file, 'cython/coco.c'], - include_dirs=[np.get_include()])) + include_dirs=[np.get_include()] + )) if 'linux' in sys.platform: extensions.append(Extension('cocoex._interface', sources=[interface_file, 'cython/coco.c'], - include_dirs=[np.get_include()])) + include_dirs=[np.get_include()] + )) setup( name = 'cocoex', diff --git a/code-experiments/src/coco.h b/code-experiments/src/coco.h index a88f39d7a..1abdb1a8a 100644 --- a/code-experiments/src/coco.h +++ b/code-experiments/src/coco.h @@ -382,6 +382,12 @@ const double *coco_problem_get_smallest_values_of_interest(const coco_problem_t */ const double *coco_problem_get_largest_values_of_interest(const coco_problem_t *problem); +/** + * @brief Returns the number of integer variables. If > 0, all integer variables come before any + * continuous ones. + */ +size_t coco_problem_get_number_of_integer_variables(const coco_problem_t *problem); + /** * @brief For multi-objective problems, returns a vector of largest values of interest in each objective. * Currently, this equals the nadir point. For single-objective problems it raises an error. diff --git a/code-experiments/src/coco_internal.h b/code-experiments/src/coco_internal.h index 5ad35db3d..91c6d17c3 100644 --- a/code-experiments/src/coco_internal.h +++ b/code-experiments/src/coco_internal.h @@ -51,7 +51,6 @@ typedef void (*coco_recommend_function_t)(coco_problem_t *problem, const double */ typedef coco_problem_t *(*coco_logger_allocate_function_t)(coco_observer_t *observer, coco_problem_t *problem); - /** * @brief The free logger function type. * @@ -59,6 +58,14 @@ typedef coco_problem_t *(*coco_logger_allocate_function_t)(coco_observer_t *obse */ typedef void (*coco_logger_free_function_t)(void *logger); +/** + * @brief The get problem function type. + * + * This is a template for functions that return a problem based on function, dimension and instance. + */ +typedef coco_problem_t *(*coco_get_problem_function_t)(const size_t function, + const size_t dimension, + const size_t instance); /** * @brief The transformed COCO problem data type. @@ -127,6 +134,8 @@ struct coco_problem_s { double *smallest_values_of_interest; /**< @brief The lower bounds of the ROI in the decision space. */ double *largest_values_of_interest; /**< @brief The upper bounds of the ROI in the decision space. */ + size_t number_of_integer_variables; /**< @brief Number of integer variables (if > 0, all integer variables come + before any continuous ones). */ double *initial_solution; /**< @brief Initial feasible solution. */ double *best_value; /**< @brief Optimal (smallest) function value */ @@ -183,6 +192,8 @@ struct coco_observer_s { /**< @brief The "base evaluations" used to evaluations that trigger logging. */ int precision_x; /**< @brief Output precision for decision variables. */ int precision_f; /**< @brief Output precision for function values. */ + int precision_g; /**< @brief Output precision for constraint values. */ + int log_discrete_as_int; /**< @brief Whether to output discrete variables in int or double format. */ void *data; /**< @brief Void pointer that can be used to point to data specific to an observer. */ coco_data_free_function_t data_free_function; /**< @brief The function for freeing this observer. */ @@ -226,6 +237,7 @@ struct coco_suite_s { static void bbob_evaluate_gradient(coco_problem_t *problem, const double *x, double *y); void bbob_problem_best_parameter_print(const coco_problem_t *problem); +void bbob_biobj_problem_best_parameter_print(const coco_problem_t *problem); #ifdef __cplusplus } diff --git a/code-experiments/src/coco_observer.c b/code-experiments/src/coco_observer.c index ae4e38e76..a0bcb1c82 100644 --- a/code-experiments/src/coco_observer.c +++ b/code-experiments/src/coco_observer.c @@ -294,7 +294,9 @@ static coco_observer_t *coco_observer_allocate(const char *result_folder, const size_t number_evaluation_triggers, const char *base_evaluation_triggers, const int precision_x, - const int precision_f) { + const int precision_f, + const int precision_g, + const int log_discrete_as_int) { coco_observer_t *observer; observer = (coco_observer_t *) coco_allocate_memory(sizeof(*observer)); @@ -309,6 +311,8 @@ static coco_observer_t *coco_observer_allocate(const char *result_folder, observer->base_evaluation_triggers = coco_strdup(base_evaluation_triggers); observer->precision_x = precision_x; observer->precision_f = precision_f; + observer->precision_g = precision_g; + observer->log_discrete_as_int = log_discrete_as_int; observer->data = NULL; observer->data_free_function = NULL; observer->logger_allocate_function = NULL; @@ -352,6 +356,7 @@ void coco_observer_free(coco_observer_t *observer) { #include "logger_bbob.c" #include "logger_biobj.c" #include "logger_toy.c" +#include "logger_rw.c" /** * Currently, three observers are supported: @@ -388,6 +393,10 @@ void coco_observer_free(coco_observer_t *observer) { * of digits to be printed after the decimal point. The default value is 8. * - "precision_f: VALUE" defines the precision used when outputting f values and corresponds to the number of * digits to be printed after the decimal point. The default value is 15. + * - "precision_g: VALUE" defines the precision used when outputting constraints and corresponds to the number + * of digits to be printed after the decimal point. The default value is 3. + * - "log_discrete_as_int: VALUE" determines whether the values of integer variables (in mixed-integer problems) + * are logged as integers (1) or not (0 - in this case they are logged as doubles). The default value is 0. * * @return The constructed observer object or NULL if observer_name equals NULL, "" or "no_observer". */ @@ -396,7 +405,7 @@ coco_observer_t *coco_observer(const char *observer_name, const char *observer_o coco_observer_t *observer; char *path, *result_folder, *algorithm_name, *algorithm_info; const char *outer_folder_name = "exdata"; - int precision_x, precision_f; + int precision_x, precision_f, precision_g, log_discrete_as_int; size_t number_target_triggers; size_t number_evaluation_triggers; @@ -409,7 +418,7 @@ coco_observer_t *coco_observer(const char *observer_name, const char *observer_o * IMPORTANT: This list should be up-to-date with the code and the documentation */ const char *known_keys[] = { "result_folder", "algorithm_name", "algorithm_info", "number_target_triggers", "target_precision", "number_evaluation_triggers", "base_evaluation_triggers", - "precision_x", "precision_f" }; + "precision_x", "precision_f", "precision_g", "log_discrete_as_int" }; additional_option_keys = NULL; /* To be set by the chosen observer */ if (0 == strcmp(observer_name, "no_observer")) { @@ -477,9 +486,21 @@ coco_observer_t *coco_observer(const char *observer_name, const char *observer_o precision_f = 15; } + precision_g = 3; + if (coco_options_read_int(observer_options, "precision_g", &precision_g) != 0) { + if ((precision_g < 1) || (precision_g > 32)) + precision_g = 3; + } + + log_discrete_as_int = 0; + if (coco_options_read_int(observer_options, "log_discrete_as_int", &log_discrete_as_int) != 0) { + if ((log_discrete_as_int < 0) || (log_discrete_as_int > 1)) + log_discrete_as_int = 0; + } + observer = coco_observer_allocate(path, observer_name, algorithm_name, algorithm_info, number_target_triggers, target_precision, number_evaluation_triggers, base_evaluation_triggers, - precision_x, precision_f); + precision_x, precision_f, precision_g, log_discrete_as_int); coco_free_memory(path); coco_free_memory(result_folder); @@ -505,6 +526,8 @@ coco_observer_t *coco_observer(const char *observer_name, const char *observer_o observer_bbob(observer, observer_options, &additional_option_keys); } else if (0 == strcmp(observer_name, "bbob-constrained")) { observer_bbob(observer, observer_options, &additional_option_keys); + } else if (0 == strcmp(observer_name, "rw")) { + observer_rw(observer, observer_options, &additional_option_keys); } else { coco_warning("Unknown observer!"); return NULL; diff --git a/code-experiments/src/coco_problem.c b/code-experiments/src/coco_problem.c index bd8ba4f22..4b155cf0d 100644 --- a/code-experiments/src/coco_problem.c +++ b/code-experiments/src/coco_problem.c @@ -50,7 +50,7 @@ void coco_evaluate_function(coco_problem_t *problem, const double *x, double *y) coco_vector_set_to_nan(y, coco_problem_get_number_of_objectives(problem)); return; } - + problem->evaluate_function(problem, x, y); problem->evaluations++; /* each derived class has its own counter, only the most outer will be visible */ @@ -64,10 +64,9 @@ void coco_evaluate_function(coco_problem_t *problem, const double *x, double *y) } if (is_feasible) { problem->best_observed_fvalue[0] = y[0]; - problem->best_observed_evaluation[0] = problem->evaluations; + problem->best_observed_evaluation[0] = problem->evaluations; } } - } /** @@ -168,15 +167,18 @@ static coco_problem_t *coco_problem_allocate(const size_t number_of_variables, problem->number_of_constraints = number_of_constraints; problem->smallest_values_of_interest = coco_allocate_vector(number_of_variables); problem->largest_values_of_interest = coco_allocate_vector(number_of_variables); - problem->best_parameter = coco_allocate_vector(number_of_variables); - if (number_of_objectives > 1) + problem->number_of_integer_variables = 0; /* No integer variables by default */ + + if (number_of_objectives > 1) { + problem->best_parameter = NULL; problem->best_value = coco_allocate_vector(number_of_objectives); - else - problem->best_value = coco_allocate_vector(1); - if (number_of_objectives > 1) problem->nadir_value = coco_allocate_vector(number_of_objectives); - else + } + else { + problem->best_parameter = coco_allocate_vector(number_of_variables); + problem->best_value = coco_allocate_vector(1); problem->nadir_value = NULL; + } problem->problem_name = NULL; problem->problem_id = NULL; problem->problem_type = NULL; @@ -216,7 +218,8 @@ static coco_problem_t *coco_problem_duplicate(const coco_problem_t *other) { if (other->best_parameter) problem->best_parameter[i] = other->best_parameter[i]; } - + problem->number_of_integer_variables = other->number_of_integer_variables; + if (other->initial_solution) problem->initial_solution = coco_duplicate_vector(other->initial_solution, other->number_of_variables); @@ -252,7 +255,7 @@ static coco_problem_t *coco_problem_duplicate(const coco_problem_t *other) { /** * @brief Allocates a problem using scalar values for smallest_value_of_interest, largest_value_of_interest - * and best_parameter. + * and best_parameter. Assumes all variables are continuous. */ static coco_problem_t *coco_problem_allocate_from_scalars(const char *problem_name, coco_evaluate_function_t evaluate_function, @@ -276,6 +279,7 @@ static coco_problem_t *coco_problem_allocate_from_scalars(const char *problem_na problem->largest_values_of_interest[i] = largest_value_of_interest; problem->best_parameter[i] = best_parameter; } + problem->number_of_integer_variables = 0; return problem; } @@ -526,6 +530,11 @@ const double *coco_problem_get_largest_values_of_interest(const coco_problem_t * return problem->largest_values_of_interest; } +size_t coco_problem_get_number_of_integer_variables(const coco_problem_t *problem) { + assert(problem != NULL); + return problem->number_of_integer_variables; +} + const double *coco_problem_get_largest_fvalues_of_interest(const coco_problem_t *problem) { assert(problem != NULL); if (problem->number_of_objectives == 1) @@ -538,7 +547,7 @@ const double *coco_problem_get_largest_fvalues_of_interest(const coco_problem_t /** * Copies problem->initial_solution into initial_solution if not null, * otherwise the center of the problem's region of interest is the - * initial solution. + * initial solution. Takes care of rounding the solution in case of integer variables. * * @param problem The given COCO problem. * @param initial_solution The pointer to the initial solution being set by this method. @@ -557,6 +566,11 @@ void coco_problem_get_initial_solution(const coco_problem_t *problem, double *in for (i = 0; i < problem->number_of_variables; ++i) initial_solution[i] = problem->smallest_values_of_interest[i] + 0.5 * (problem->largest_values_of_interest[i] - problem->smallest_values_of_interest[i]); + if (problem->number_of_integer_variables > 0) { + for (i = 0; i < problem->number_of_integer_variables; ++i) { + initial_solution[i] = coco_double_round(initial_solution[i]); + } + } } } @@ -601,6 +615,29 @@ void bbob_problem_best_parameter_print(const coco_problem_t *problem) { } } +void bbob_biobj_problem_best_parameter_print(const coco_problem_t *problem) { + size_t i; + FILE *file; + coco_problem_t *problem1, *problem2; + assert(problem != NULL); + assert(problem->data != NULL); + problem1 = ((coco_problem_stacked_data_t *) problem->data)->problem1; + problem2 = ((coco_problem_stacked_data_t *) problem->data)->problem2; + assert(problem1 != NULL); + assert(problem2 != NULL); + assert(problem1->best_parameter != NULL); + assert(problem2->best_parameter != NULL); + file = fopen("._bbob_biobj_problem_best_parameter.txt", "w"); + if (file != NULL) { + for (i = 0; i < problem->number_of_variables; ++i) + fprintf(file, " %.16f ", problem1->best_parameter[i]); + fprintf(file, "\n"); + for (i = 0; i < problem->number_of_variables; ++i) + fprintf(file, " %.16f ", problem2->best_parameter[i]); + fclose(file); + } +} + /***********************************************************************************************************/ /** @@ -853,18 +890,22 @@ static coco_problem_t *coco_problem_stacked_allocate(coco_problem_t *problem1, const double *smallest_values_of_interest, const double *largest_values_of_interest) { - const size_t number_of_variables = coco_problem_get_dimension(problem1); - const size_t number_of_objectives = coco_problem_get_number_of_objectives(problem1) - + coco_problem_get_number_of_objectives(problem2); - const size_t number_of_constraints = coco_problem_get_number_of_constraints(problem1) - + coco_problem_get_number_of_constraints(problem2); + size_t number_of_variables, number_of_objectives, number_of_constraints; size_t i; char *s; coco_problem_stacked_data_t *data; coco_problem_t *problem; /* the new coco problem */ + assert(problem1); + assert(problem2); assert(coco_problem_get_dimension(problem1) == coco_problem_get_dimension(problem2)); + number_of_variables = coco_problem_get_dimension(problem1); + number_of_objectives = coco_problem_get_number_of_objectives(problem1) + + coco_problem_get_number_of_objectives(problem2); + number_of_constraints = coco_problem_get_number_of_constraints(problem1) + + coco_problem_get_number_of_constraints(problem2); + problem = coco_problem_allocate(number_of_variables, number_of_objectives, number_of_constraints); s = coco_strconcat(coco_problem_get_id(problem1), "__"); @@ -885,6 +926,8 @@ static coco_problem_t *coco_problem_stacked_allocate(coco_problem_t *problem1, problem->smallest_values_of_interest[i] = smallest_values_of_interest[i]; problem->largest_values_of_interest[i] = largest_values_of_interest[i]; } + assert(problem1->number_of_integer_variables == problem2->number_of_integer_variables); + problem->number_of_integer_variables = problem1->number_of_integer_variables; assert(problem->best_value); diff --git a/code-experiments/src/coco_string.c b/code-experiments/src/coco_string.c index e0b86cc37..de4ff9955 100644 --- a/code-experiments/src/coco_string.c +++ b/code-experiments/src/coco_string.c @@ -6,10 +6,12 @@ #include #include #include +#include #include "coco.h" static size_t *coco_allocate_vector_size_t(const size_t number_of_elements); +static char *coco_allocate_string(const size_t number_of_elements); /** * @brief Creates a duplicate copy of string and returns a pointer to it. @@ -127,7 +129,13 @@ static long coco_strfind(const char *base, const char *seq) { * @brief Splits a string based on the given delimiter. * * Returns a pointer to the resulting substrings with NULL as the last one. - * The caller is responsible for freeing the allocated memory using coco_free_memory(). + * The caller is responsible for freeing the allocated memory using: + * + * for (i = 0; *(result + i); i++) + * coco_free_memory(*(result + i)); + * coco_free_memory(*(result + i)); <- This is needed! + * coco_free_memory(result); + * */ static char **coco_string_split(const char *string, const char delimiter) { @@ -431,7 +439,8 @@ static size_t *coco_string_parse_ranges(const char *string, * allocated, it can be still freed on the returned pointer. */ static char *coco_string_trim(char *string) { - size_t len = 0; + size_t i, len = 0; + int all_whitespaces = 1; char *frontp = string; char *endp = NULL; @@ -445,6 +454,13 @@ static char *coco_string_trim(char *string) { len = strlen(string); endp = string + len; + for (i = 0; ((i < len) && all_whitespaces); i++) + all_whitespaces = all_whitespaces && isspace(string[i]); + if (all_whitespaces) { + string[0] = '\0'; + return string; + } + /* Move the front and back pointers to address the first non-whitespace characters from each end. */ while (isspace((unsigned char) *frontp)) { ++frontp; @@ -470,3 +486,4 @@ static char *coco_string_trim(char *string) { return string; } + diff --git a/code-experiments/src/coco_suite.c b/code-experiments/src/coco_suite.c index 624660f8b..a2e50c6c4 100644 --- a/code-experiments/src/coco_suite.c +++ b/code-experiments/src/coco_suite.c @@ -16,8 +16,9 @@ #include "coco_utilities.c" #include "suite_bbob.c" +#include "suite_bbob_mixint.c" #include "suite_biobj.c" -#include "suite_biobj_ext.c" +#include "suite_biobj_mixint.c" #include "suite_toy.c" #include "suite_largescale.c" #include "suite_cons_bbob.c" @@ -38,14 +39,17 @@ static coco_suite_t *coco_suite_intialize(const char *suite_name) { suite = suite_toy_initialize(); } else if (strcmp(suite_name, "bbob") == 0) { suite = suite_bbob_initialize(); - } else if (strcmp(suite_name, "bbob-biobj") == 0) { - suite = suite_biobj_initialize(); - } else if (strcmp(suite_name, "bbob-biobj-ext") == 0) { - suite = suite_biobj_ext_initialize(); + } else if ((strcmp(suite_name, "bbob-biobj") == 0) || + (strcmp(suite_name, "bbob-biobj-ext") == 0)) { + suite = suite_biobj_initialize(suite_name); } else if (strcmp(suite_name, "bbob-largescale") == 0) { suite = suite_largescale_initialize(); } else if (strcmp(suite_name, "bbob-constrained") == 0) { suite = suite_cons_bbob_initialize(); + } else if (strcmp(suite_name, "bbob-mixint") == 0) { + suite = suite_bbob_mixint_initialize(suite_name); + } else if (strcmp(suite_name, "bbob-biobj-mixint") == 0) { + suite = suite_biobj_mixint_initialize(); } else { coco_error("coco_suite_intialize(): unknown problem suite"); @@ -65,14 +69,17 @@ static const char *coco_suite_get_instances_by_year(const coco_suite_t *suite, c if (strcmp(suite->suite_name, "bbob") == 0) { year_string = suite_bbob_get_instances_by_year(year); - } else if (strcmp(suite->suite_name, "bbob-biobj") == 0) { - year_string = suite_biobj_get_instances_by_year(year); - } else if (strcmp(suite->suite_name, "bbob-biobj-ext") == 0) { - year_string = suite_biobj_ext_get_instances_by_year(year); } else if (strcmp(suite->suite_name, "bbob-constrained") == 0) { year_string = suite_cons_bbob_get_instances_by_year(year); + } else if ((strcmp(suite->suite_name, "bbob-biobj") == 0) || + (strcmp(suite->suite_name, "bbob-biobj-ext") == 0)) { + year_string = suite_biobj_get_instances_by_year(year); } else if (strcmp(suite->suite_name, "bbob-largescale") == 0) { - year_string = suite_largescale_get_instances_by_year(year); + year_string = suite_largescale_get_instances_by_year(year); + } else if (strcmp(suite->suite_name, "bbob-mixint") == 0) { + year_string = suite_bbob_mixint_get_instances_by_year(year); + } else if (strcmp(suite->suite_name, "bbob-biobj-mixint") == 0) { + year_string = suite_biobj_mixint_get_instances_by_year(year); } else { coco_error("coco_suite_get_instances_by_year(): suite '%s' has no years defined", suite->suite_name); return NULL; @@ -97,22 +104,25 @@ static coco_problem_t *coco_suite_get_problem_from_indices(coco_suite_t *suite, if ((suite->functions[function_idx] == 0) || (suite->dimensions[dimension_idx] == 0) || - (suite->instances[instance_idx] == 0)) { - return NULL; + (suite->instances[instance_idx] == 0)) { + return NULL; } if (strcmp(suite->suite_name, "toy") == 0) { problem = suite_toy_get_problem(suite, function_idx, dimension_idx, instance_idx); } else if (strcmp(suite->suite_name, "bbob") == 0) { problem = suite_bbob_get_problem(suite, function_idx, dimension_idx, instance_idx); - } else if (strcmp(suite->suite_name, "bbob-biobj") == 0) { + } else if ((strcmp(suite->suite_name, "bbob-biobj") == 0) || + (strcmp(suite->suite_name, "bbob-biobj-ext") == 0)) { problem = suite_biobj_get_problem(suite, function_idx, dimension_idx, instance_idx); - } else if (strcmp(suite->suite_name, "bbob-biobj-ext") == 0) { - problem = suite_biobj_ext_get_problem(suite, function_idx, dimension_idx, instance_idx); } else if (strcmp(suite->suite_name, "bbob-largescale") == 0) { problem = suite_largescale_get_problem(suite, function_idx, dimension_idx, instance_idx); } else if (strcmp(suite->suite_name, "bbob-constrained") == 0) { problem = suite_cons_bbob_get_problem(suite, function_idx, dimension_idx, instance_idx); + } else if (strcmp(suite->suite_name, "bbob-mixint") == 0) { + problem = suite_bbob_mixint_get_problem(suite, function_idx, dimension_idx, instance_idx); + } else if (strcmp(suite->suite_name, "bbob-biobj-mixint") == 0) { + problem = suite_biobj_mixint_get_problem(suite, function_idx, dimension_idx, instance_idx); } else { coco_error("coco_suite_get_problem_from_indices(): unknown problem suite"); return NULL; @@ -123,6 +133,23 @@ static coco_problem_t *coco_suite_get_problem_from_indices(coco_suite_t *suite, return problem; } +/** + * @brief Returns the best indicator value for the given problem. + */ +static double coco_suite_get_best_indicator_value(const coco_suite_t *suite, + const coco_problem_t *problem, + const char *indicator_name) { + double result = 0; + + if (strcmp(indicator_name, "hyp") == 0) { + result = suite_biobj_get_best_hyp_value(suite->suite_name, problem->problem_id); + } else { + coco_error("coco_suite_get_best_indicator_value(): indicator %s not supported", indicator_name); + return 0; /* Never reached */ + } + return result; +} + /** * @note: While a suite can contain multiple problems with equal function, dimension and instance, this * function always returns the first problem in the suite with the given function, dimension and instance @@ -436,7 +463,7 @@ static size_t *coco_suite_get_instance_indices(const coco_suite_t *suite, const char *instances = NULL; const char *year_string = NULL; long year_found, instances_found; - int parce_year = 1, parce_instances = 1; + int parse_year = 1, parse_instances = 1; size_t *result = NULL; if (suite_instance == NULL) @@ -450,16 +477,16 @@ static size_t *coco_suite_get_instance_indices(const coco_suite_t *suite, const if ((year_found > 0) && (instances_found > 0)) { if (year_found < instances_found) { - parce_instances = 0; + parse_instances = 0; coco_warning("coco_suite_get_instance_indices(): 'instances' suite option ignored because it follows 'year'"); } else { - parce_year = 0; + parse_year = 0; coco_warning("coco_suite_get_instance_indices(): 'year' suite option ignored because it follows 'instances'"); } } - if ((year_found >= 0) && (parce_year == 1)) { + if ((year_found >= 0) && (parse_year == 1)) { if (coco_options_read_int(suite_instance, "year", &(year)) != 0) { year_string = coco_suite_get_instances_by_year(suite, year); result = coco_string_parse_ranges(year_string, 1, 0, "instances", COCO_MAX_INSTANCES); @@ -469,7 +496,7 @@ static size_t *coco_suite_get_instance_indices(const coco_suite_t *suite, const } instances = coco_allocate_string(COCO_MAX_INSTANCES); - if ((instances_found >= 0) && (parce_instances == 1)) { + if ((instances_found >= 0) && (parse_instances == 1)) { if (coco_options_read_values(suite_instance, "instances", instances) > 0) { result = coco_string_parse_ranges(instances, 1, 0, "instances", COCO_MAX_INSTANCES); } else { @@ -562,7 +589,8 @@ static int coco_suite_is_next_dimension_found(coco_suite_t *suite) { } /** - * Currently, six suites are supported: + * Currently, six suites are supported. + * Seven suites with artificial test functions: * - "bbob" contains 24 * single-objective functions in 6 dimensions (2, 3, 5, 10, 20, 40) * - "bbob-biobj" contains 55 bi-objective @@ -575,6 +603,7 @@ static int coco_suite_is_next_dimension_found(coco_suite_t *suite) { * - "bbob-constrained" contains 48 linearly-constrained problems, which are combinations of 8 single * objective functions with 6 different numbers of linear constraints (1, 2, 10, dimension/2, dimension-1, * dimension+1), in 6 dimensions (2, 3, 5, 10, 20, 40). + * - "bbob-mixint" contains mixed-integer single-objective functions in 6 dimensions (2, 3, 5, 10, 20, 40) * - "toy" contains 6 * single-objective functions in 5 dimensions (2, 3, 5, 10, 20) * @@ -834,7 +863,7 @@ coco_problem_t *coco_suite_get_next_problem(coco_suite_t *suite, coco_observer_t else coco_info_partial("\n"); coco_info_partial("COCO INFO: %s, d=%lu, running: f%02lu", time_string, - (unsigned long) suite->dimensions[dimension_idx], (unsigned long) suite->functions[function_idx]); + (unsigned long) suite->dimensions[dimension_idx], (unsigned long) suite->functions[function_idx]); coco_free_memory(time_string); } else if ((long) function_idx != previous_function_idx){ @@ -854,7 +883,7 @@ coco_problem_t *coco_suite_get_next_problem(coco_suite_t *suite, coco_observer_t * @param suite The suite. * @param function_idx Index of the function (starting with 0). * @param dimension_idx Index of the dimension (starting with 0). - * @param instance_idx Index of the insatnce (starting with 0). + * @param instance_idx Index of the instance (starting with 0). * * @return The problem index in the suite computed from function_idx, dimension_idx and instance_idx. */ diff --git a/code-experiments/src/coco_utilities.c b/code-experiments/src/coco_utilities.c index 8bda3b5a5..28984aa70 100644 --- a/code-experiments/src/coco_utilities.c +++ b/code-experiments/src/coco_utilities.c @@ -12,6 +12,7 @@ #include #include #include +#include #include "coco.h" #include "coco_internal.h" @@ -415,6 +416,30 @@ int coco_remove_directory(const char *path) { return r; #endif } + + + +/** + * The method should work across different platforms/compilers. + * + * @file_name The path to the file + * + * @return 0 on successful completion, and -1 on error. + */ +int coco_remove_file(const char *file_name) { +#if _MSC_VER + int r = -1; + /* Try to delete the file */ + /* Careful, DeleteFile returns 0 if it fails and nonzero otherwise! */ + r = -(DeleteFile(file_name) == 0); + return r; +#else + int r = -1; + /* Try to delete the file */ + r = unlink(file_name); + return r; +#endif +} /**@}*/ /***********************************************************************************************************/ @@ -868,11 +893,33 @@ static double coco_double_min(const double a, const double b) { /** * @brief Performs a "safer" double to size_t conversion. + * + * TODO: This method could (should?) check for overflow when casting (similarly as is done in + * coco_double_to_int()). */ static size_t coco_double_to_size_t(const double number) { return (size_t) coco_double_round(number); } +/** + * @brief Rounds the given double to the nearest integer (returns the number in int type) + */ +static int coco_double_to_int(const double number) { + if (number > (double)INT_MAX) { + coco_error("coco_double_to_int(): Cannot cast %f to the nearest integer, max %d allowed", + number, INT_MAX); + return -1; /* Never reached */ + } + else if (number < (double)INT_MIN) { + coco_error("coco_double_to_int(): Cannot cast %f to the nearest integer, min %d allowed", + number, INT_MIN); + return -1; /* Never reached */ + } + else { + return (int)(number + 0.5); + } +} + /** * @brief Returns 1 if |a - b| < precision and 0 otherwise. */ diff --git a/code-experiments/src/f_attractive_sector.c b/code-experiments/src/f_attractive_sector.c index e6f14c10a..de98cabb8 100644 --- a/code-experiments/src/f_attractive_sector.c +++ b/code-experiments/src/f_attractive_sector.c @@ -208,7 +208,7 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "block_rotated_moderate"); + coco_problem_set_type(problem, "2-moderate"); coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); diff --git a/code-experiments/src/f_bent_cigar_generalized.c b/code-experiments/src/f_bent_cigar_generalized.c index 318fbbe8f..85f0498d0 100644 --- a/code-experiments/src/f_bent_cigar_generalized.c +++ b/code-experiments/src/f_bent_cigar_generalized.c @@ -135,7 +135,7 @@ static coco_problem_t *f_bent_cigar_generalized_permblockdiag_bbob_problem_alloc coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "block_rotated_ill-conditioned"); + coco_problem_set_type(problem, "3-ill-conditioned"); coco_free_block_matrix(B, dimension); coco_free_memory(P1); coco_free_memory(P2); diff --git a/code-experiments/src/f_different_powers.c b/code-experiments/src/f_different_powers.c index 3e75fe982..31083cbe7 100644 --- a/code-experiments/src/f_different_powers.c +++ b/code-experiments/src/f_different_powers.c @@ -245,7 +245,7 @@ static coco_problem_t *f_different_powers_permblockdiag_bbob_problem_allocate(co coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "block_rotated_ill-conditioned"); + coco_problem_set_type(problem, "3-ill-conditioned"); coco_free_block_matrix(B, dimension); coco_free_memory(P1); diff --git a/code-experiments/src/f_discus_generalized.c b/code-experiments/src/f_discus_generalized.c index 5ff59aefe..0311b7233 100644 --- a/code-experiments/src/f_discus_generalized.c +++ b/code-experiments/src/f_discus_generalized.c @@ -138,7 +138,7 @@ static coco_problem_t *f_discus_generalized_permblockdiag_bbob_problem_allocate( coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "block_rotated_ill"); + coco_problem_set_type(problem, "3-ill-conditioned"); coco_free_block_matrix(B, dimension); coco_free_memory(P1); diff --git a/code-experiments/src/f_ellipsoid.c b/code-experiments/src/f_ellipsoid.c index faff6c954..f80db87a4 100644 --- a/code-experiments/src/f_ellipsoid.c +++ b/code-experiments/src/f_ellipsoid.c @@ -205,7 +205,7 @@ static coco_problem_t *f_ellipsoid_permblockdiag_bbob_problem_allocate(const siz coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "block-rotated_ill-conditionned"); + coco_problem_set_type(problem, "3-ill-conditioned"); coco_free_block_matrix(B, dimension); coco_free_memory(P1); diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index cbc32440a..94e8dcc88 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -464,7 +464,6 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz versatile_data->block_size_map[i] = current_blocksize; versatile_data->first_non_zero_map[i] = next_bs_change - current_blocksize; } - versatile_data->B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); versatile_data->B = coco_copy_block_matrix(B_copy, dimension, block_sizes, nb_blocks); alpha_i_vals = coco_allocate_vector(number_of_peaks - 1); @@ -536,7 +535,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); + coco_problem_set_type(problem, "5-weakly-structured"); coco_free_block_matrix(B, dimension); coco_free_memory(tmp_uniform); diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 49b781997..2d02228d7 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -202,7 +202,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "block-rotated_multi-modal"); + coco_problem_set_type(problem, "4-multi-modal"); coco_free_memory(best_parameter); coco_free_memory(shift); diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index 2a91217df..2b0e17a90 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -199,7 +199,7 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); + coco_problem_set_type(problem, "5-weakly-structured"); coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index 5b179febb..7419978c9 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -404,7 +404,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "block-rotated_weakly-structured"); + coco_problem_set_type(problem, "5-weakly-structured"); coco_free_memory(tmp_normal); coco_free_block_matrix(B1, dimension); diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index 42943d652..14711ad57 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -244,7 +244,7 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "block-rotated_multi-modal"); + coco_problem_set_type(problem, "4-multi-modal"); coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index b5d3eb3db..11481a7ed 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -234,8 +234,9 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "block-rotated_moderate"); + coco_problem_set_type(problem, "2-moderate"); + coco_free_memory(xopt); coco_free_memory(best_parameter); coco_free_memory(minus_one); coco_free_block_matrix(B, dimension); diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index ee2781506..09097d4f1 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -198,7 +198,7 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); + coco_problem_set_type(problem, "4-multi-modal"); coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); diff --git a/code-experiments/src/f_schwefel_generalized.c b/code-experiments/src/f_schwefel_generalized.c index 53f791c57..b8d51c185 100644 --- a/code-experiments/src/f_schwefel_generalized.c +++ b/code-experiments/src/f_schwefel_generalized.c @@ -116,7 +116,7 @@ static coco_problem_t *f_schwefel_generalized_bbob_problem_allocate(const size_t coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated");/*TODO: no large scale prefix*/ + coco_problem_set_type(problem, "5-weakly-structured"); coco_free_memory(tmp1); coco_free_memory(tmp2); diff --git a/code-experiments/src/f_sharp_ridge_generalized.c b/code-experiments/src/f_sharp_ridge_generalized.c index 2e2892a60..a5fd5acb5 100644 --- a/code-experiments/src/f_sharp_ridge_generalized.c +++ b/code-experiments/src/f_sharp_ridge_generalized.c @@ -161,7 +161,7 @@ static coco_problem_t *f_sharp_ridge_generalized_permblockdiag_bbob_problem_allo coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); /*TODO: no large scale prefix*/ + coco_problem_set_type(problem, "3-ill-conditioned"); coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 8e2d200c5..393af2b67 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -303,7 +303,7 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); + coco_problem_set_type(problem, "2-moderate"); coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index 555621e0d..7e8aad880 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -226,7 +226,7 @@ static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const s coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); - coco_problem_set_type(problem, "large_scale_block_rotated"); + coco_problem_set_type(problem, "4-multi-modal"); coco_free_block_matrix(B1, dimension); coco_free_block_matrix(B2, dimension); diff --git a/code-experiments/src/logger_bbob.c b/code-experiments/src/logger_bbob.c index fadea71be..254e166e2 100644 --- a/code-experiments/src/logger_bbob.c +++ b/code-experiments/src/logger_bbob.c @@ -80,6 +80,8 @@ typedef struct { size_t function_id; /*TODO: consider changing name*/ size_t instance_id; size_t number_of_variables; + size_t number_of_integer_variables; + int log_discrete_as_int; /**< @brief Whether to output discrete variables in int or double format. */ double optimal_fvalue; char *suite_name; @@ -148,8 +150,10 @@ static void logger_bbob_write_data(FILE *target_file, double best_value, const double *x, size_t number_of_variables, + size_t number_of_integer_variables, const double *constraints, - size_t number_of_constraints) { + size_t number_of_constraints, + const int log_discrete_as_int) { size_t i; /* for some reason, it's %.0f in the old code instead of the 10.9e * in the documentation @@ -168,9 +172,12 @@ static void logger_bbob_write_data(FILE *target_file, else fprintf(target_file, "%+10.9e", best_fvalue); - if (number_of_variables < 22) { + if ((number_of_variables - number_of_integer_variables) < 22) { for (i = 0; i < number_of_variables; i++) { - fprintf(target_file, " %+5.4e", x[i]); + if ((i < number_of_integer_variables) && (log_discrete_as_int)) + fprintf(target_file, " %d", coco_double_to_int(x[i])); + else + fprintf(target_file, " %+5.4e", x[i]); } } fprintf(target_file, "\n"); @@ -498,8 +505,10 @@ static void logger_bbob_evaluate(coco_problem_t *problem, const double *x, doubl logger->optimal_fvalue, x, problem->number_of_variables, + problem->number_of_integer_variables, cons, - problem->number_of_constraints); + problem->number_of_constraints, + logger->log_discrete_as_int); } } @@ -515,8 +524,10 @@ static void logger_bbob_evaluate(coco_problem_t *problem, const double *x, doubl logger->optimal_fvalue, x, problem->number_of_variables, + problem->number_of_integer_variables, cons, - problem->number_of_constraints); + problem->number_of_constraints, + logger->log_discrete_as_int); logger->written_last_eval = 1; } @@ -569,8 +580,10 @@ static void logger_bbob_free(void *stuff) { logger->optimal_fvalue, logger->best_solution, logger->number_of_variables, + logger->number_of_integer_variables, NULL, - 0); + 0, + logger->log_discrete_as_int); } fclose(logger->tdata_file); logger->tdata_file = NULL; @@ -620,6 +633,7 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *in logger_data->tdata_file = NULL; logger_data->rdata_file = NULL; logger_data->number_of_variables = inner_problem->number_of_variables; + logger_data->number_of_integer_variables = inner_problem->number_of_integer_variables; if (inner_problem->best_value == NULL) { /* coco_error("Optimal f value must be defined for each problem in order for the logger to work properly"); */ /* Setting the value to 0 results in the assertion y>=optimal_fvalue being susceptible to failure */ @@ -641,6 +655,7 @@ static coco_problem_t *logger_bbob(coco_observer_t *observer, coco_problem_t *in logger_data->written_last_eval = 0; logger_data->last_fvalue = DBL_MAX; logger_data->is_initialized = 0; + logger_data->log_discrete_as_int = observer->log_discrete_as_int; /* Initialize triggers based on target values and number of evaluations */ logger_data->targets = coco_observer_targets(observer->number_target_triggers, observer->target_precision); diff --git a/code-experiments/src/logger_biobj.c b/code-experiments/src/logger_biobj.c index 28b59de18..6fa294387 100644 --- a/code-experiments/src/logger_biobj.c +++ b/code-experiments/src/logger_biobj.c @@ -106,29 +106,31 @@ typedef struct { */ typedef struct { observer_biobj_log_nondom_e log_nondom_mode; - /**< @brief Mode for archiving nondominated solutions. */ - FILE *adat_file; /**< @brief File for archiving nondominated solutions (all or final). */ + /**< @brief Mode for archiving nondominated solutions. */ + FILE *adat_file; /**< @brief File for archiving nondominated solutions (all or final). */ - int log_vars; /**< @brief Whether to log the decision values. */ + int log_vars; /**< @brief Whether to log the decision values. */ - int precision_x; /**< @brief Precision for outputting decision values. */ - int precision_f; /**< @brief Precision for outputting objective values. */ + int precision_x; /**< @brief Precision for outputting decision values. */ + int precision_f; /**< @brief Precision for outputting objective values. */ + int log_discrete_as_int; /**< @brief Whether to output discrete variables in int or double format. */ - size_t number_of_evaluations; /**< @brief The number of evaluations performed so far. */ - size_t number_of_variables; /**< @brief Dimension of the problem. */ - size_t number_of_objectives; /**< @brief Number of objectives (clearly equal to 2). */ - size_t suite_dep_instance; /**< @brief Suite-dependent instance number of the observed problem. */ + size_t number_of_evaluations; /**< @brief The number of evaluations performed so far. */ + size_t number_of_variables; /**< @brief Dimension of the problem. */ + size_t number_of_integer_variables; /**< @brief Number of integer variables. */ + size_t number_of_objectives; /**< @brief Number of objectives (clearly equal to 2). */ + size_t suite_dep_instance; /**< @brief Suite-dependent instance number of the observed problem. */ - size_t previous_evaluations; /**< @brief The number of evaluations from the previous call to the logger. */ + size_t previous_evaluations; /**< @brief The number of evaluations from the previous call to the logger. */ - avl_tree_t *archive_tree; /**< @brief The tree keeping currently non-dominated solutions. */ - avl_tree_t *buffer_tree; /**< @brief The tree with pointers to nondominated solutions that haven't - been logged yet. */ + avl_tree_t *archive_tree; /**< @brief The tree keeping currently non-dominated solutions. */ + avl_tree_t *buffer_tree; /**< @brief The tree with pointers to nondominated solutions that haven't + been logged yet. */ /* Indicators (TODO: Implement others!) */ - int compute_indicators; /**< @brief Whether to compute the indicators. */ + int compute_indicators; /**< @brief Whether to compute the indicators. */ logger_biobj_indicator_t *indicators[LOGGER_BIOBJ_NUMBER_OF_INDICATORS]; - /**< @brief The implemented indicators. */ + /**< @brief The implemented indicators. */ } logger_biobj_data_t; /** @@ -241,10 +243,12 @@ static int avl_tree_compare_by_eval_number(const logger_biobj_avl_item_t *item1, static size_t logger_biobj_tree_output(FILE *file, const avl_tree_t *tree, const size_t dim, + const size_t num_int_vars, const size_t num_obj, const int log_vars, const int precision_x, - const int precision_f) { + const int precision_f, + const int log_discrete_as_int) { avl_node_t *solution; size_t i; @@ -260,7 +264,10 @@ static size_t logger_biobj_tree_output(FILE *file, fprintf(file, "%.*e\t", precision_f, ((logger_biobj_avl_item_t*) solution->item)->y[j]); if (log_vars) { for (i = 0; i < dim; i++) - fprintf(file, "%.*e\t", precision_x, ((logger_biobj_avl_item_t*) solution->item)->x[i]); + if ((i < num_int_vars) && (log_discrete_as_int)) + fprintf(file, "%d\t", coco_double_to_int(((logger_biobj_avl_item_t*) solution->item)->x[i])); + else + fprintf(file, "%.*e\t", precision_x, ((logger_biobj_avl_item_t*) solution->item)->x[i]); } fprintf(file, "\n"); solution = solution->next; @@ -444,7 +451,8 @@ static logger_biobj_indicator_t *logger_biobj_indicator(const logger_biobj_data_ indicator->name = coco_strdup(indicator_name); - indicator->best_value = suite_biobj_get_best_value(indicator->name, problem->problem_id); + assert(problem->suite); + indicator->best_value = coco_suite_get_best_indicator_value(problem->suite, problem, indicator->name); indicator->target_hit = 0; indicator->evaluation_logged = 0; indicator->current_value = 0; @@ -716,7 +724,8 @@ static void logger_biobj_evaluate(coco_problem_t *problem, const double *x, doub * nondom_file */ if (update_performed && (logger->log_nondom_mode == LOG_NONDOM_ALL)) { logger_biobj_tree_output(logger->adat_file, logger->buffer_tree, logger->number_of_variables, - logger->number_of_objectives, logger->log_vars, logger->precision_x, logger->precision_f); + logger->number_of_integer_variables, logger->number_of_objectives, logger->log_vars, + logger->precision_x, logger->precision_f, logger->log_discrete_as_int); avl_tree_purge(logger->buffer_tree); /* Flush output so that impatient users can see progress. */ @@ -798,7 +807,8 @@ static void logger_biobj_finalize(logger_biobj_data_t *logger) { } logger_biobj_tree_output(logger->adat_file, resorted_tree, logger->number_of_variables, - logger->number_of_objectives, logger->log_vars, logger->precision_x, logger->precision_f); + logger->number_of_integer_variables, logger->number_of_objectives, logger->log_vars, + logger->precision_x, logger->precision_f, logger->log_discrete_as_int); avl_tree_destruct(resorted_tree); } @@ -866,6 +876,7 @@ static coco_problem_t *logger_biobj(coco_observer_t *observer, coco_problem_t *i logger_data->number_of_evaluations = 0; logger_data->previous_evaluations = 0; logger_data->number_of_variables = inner_problem->number_of_variables; + logger_data->number_of_integer_variables = inner_problem->number_of_integer_variables; logger_data->number_of_objectives = inner_problem->number_of_objectives; logger_data->suite_dep_instance = inner_problem->suite_dep_instance; @@ -875,6 +886,7 @@ static coco_problem_t *logger_biobj(coco_observer_t *observer, coco_problem_t *i logger_data->compute_indicators = observer_data->compute_indicators; logger_data->precision_x = observer->precision_x; logger_data->precision_f = observer->precision_f; + logger_data->log_discrete_as_int = observer->log_discrete_as_int; if (((observer_data->log_vars_mode == LOG_VARS_LOW_DIM) && (inner_problem->number_of_variables > 5)) || (observer_data->log_vars_mode == LOG_VARS_NEVER)) diff --git a/code-experiments/src/observer_biobj.c b/code-experiments/src/observer_biobj.c index 134e6bdc9..50ef94221 100644 --- a/code-experiments/src/observer_biobj.c +++ b/code-experiments/src/observer_biobj.c @@ -14,7 +14,7 @@ typedef enum { LOG_NONDOM_NONE, LOG_NONDOM_FINAL, LOG_NONDOM_ALL, LOG_NONDOM_READ } observer_biobj_log_nondom_e; -/** @brief Enum for denoting the when the decision variables are logged. */ +/** @brief Enum for denoting when the decision variables are logged. */ typedef enum { LOG_VARS_NEVER, LOG_VARS_LOW_DIM, LOG_VARS_ALWAYS } observer_biobj_log_vars_e; diff --git a/code-experiments/src/suite_bbob.c b/code-experiments/src/suite_bbob.c index cca4435ac..0eb291edf 100644 --- a/code-experiments/src/suite_bbob.c +++ b/code-experiments/src/suite_bbob.c @@ -173,7 +173,7 @@ static coco_problem_t *coco_get_bbob_problem(const size_t function, problem = f_lunacek_bi_rastrigin_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else { - coco_error("get_bbob_problem(): cannot retrieve problem f%lu instance %lu in %luD", + coco_error("coco_get_bbob_problem(): cannot retrieve problem f%lu instance %lu in %luD", (unsigned long) function, (unsigned long) instance, (unsigned long) dimension); return NULL; /* Never reached */ } diff --git a/code-experiments/src/suite_biobj.c b/code-experiments/src/suite_biobj.c index c009b6c88..7eb51f6f9 100644 --- a/code-experiments/src/suite_biobj.c +++ b/code-experiments/src/suite_biobj.c @@ -1,115 +1,74 @@ /** * @file suite_biobj.c - * @brief Implementation of the bbob-biobj suite containing 55 functions and 6 dimensions. + * @brief Implementation of two bi-objective suites created by combining two single-objective problems + * from the bbob suite: + * - bbob-biobj contains 55 functions and 6 dimensions + * - bbob-biobj-ext contains 55 + 37 functions and 6 dimensions * - * The bi-objective suite was created by combining two single-objective problems from the bbob suite. + * The 55 functions of the bbob-biobj suite are created by combining any two single-objective bbob functions + * i,j (where idata_free_function = suite_biobj_new_inst_free; return suite; } /** - * @brief Sets the instances associated with years for the bbob-biobj suite. + * @brief Sets the instances associated with years for the bbob-biobj suites. + * + * @note The instances of the bi-objective suites generally do not changes with years. */ static const char *suite_biobj_get_instances_by_year(const int year) { - if ((year == 2016) || (year == 0000)) { /* default/test case */ + if ((year == 2016) || (year == 0000)) { /* test case */ return "1-10"; } - else if ((year == 2017) || (year == 2018)) { + else return "1-15"; - } - else { - coco_error("suite_biobj_get_instances_by_year(): year %d not defined for suite_biobj", year); - return NULL; - } } /** * @brief Returns the problem from the bbob-biobj suite that corresponds to the given parameters. * - * Creates the bi-objective problem by constructing it from two single-objective problems from the bbob - * suite. If the invoked instance number is not in suite_biobj_instances, the function uses the following - * formula to construct a new appropriate instance: - * - * problem1_instance = 2 * biobj_instance + 1 - * - * problem2_instance = problem1_instance + 1 - * - * If needed, problem2_instance is increased (see also the explanation of suite_biobj_get_new_instance). - * * @param suite The COCO suite. * @param function_idx Index of the function (starting from 0). * @param dimension_idx Index of the dimension (starting from 0). @@ -121,292 +80,20 @@ static coco_problem_t *suite_biobj_get_problem(coco_suite_t *suite, const size_t dimension_idx, const size_t instance_idx) { - const size_t num_bbob_functions = 10; - /* Functions from the bbob suite that are used to construct the bi-objective problem. */ - const size_t bbob_functions[] = { 1, 2, 6, 8, 13, 14, 15, 17, 20, 21 }; - - coco_problem_t *problem1, *problem2, *problem = NULL; - size_t function1_idx, function2_idx; - size_t instance1 = 0, instance2 = 0; + coco_problem_t *problem = NULL; + suite_biobj_new_inst_t *new_inst_data = (suite_biobj_new_inst_t *) suite->data; const size_t function = suite->functions[function_idx]; const size_t dimension = suite->dimensions[dimension_idx]; const size_t instance = suite->instances[instance_idx]; - suite_biobj_t *data = (suite_biobj_t *) suite->data; - size_t i, j; - const size_t num_existing_instances = sizeof(suite_biobj_instances) / sizeof(suite_biobj_instances[0]); - int instance_found = 0; - - double *smallest_values_of_interest = coco_allocate_vector_with_value(dimension, -100); - double *largest_values_of_interest = coco_allocate_vector_with_value(dimension, 100); - - /* A "magic" formula to compute the BBOB function index from the bi-objective function index */ - function1_idx = num_bbob_functions - - coco_double_to_size_t( - floor(-0.5 + sqrt(0.25 + 2.0 * (double) (suite->number_of_functions - function_idx - 1)))) - 1; - function2_idx = function_idx - (function1_idx * num_bbob_functions) + - (function1_idx * (function1_idx + 1)) / 2; - - /* First search for instance in suite_biobj_instances */ - for (i = 0; i < num_existing_instances; i++) { - if (suite_biobj_instances[i][0] == instance) { - /* The instance has been found in suite_biobj_instances */ - instance1 = suite_biobj_instances[i][1]; - instance2 = suite_biobj_instances[i][2]; - instance_found = 1; - break; - } - } - - if ((!instance_found) && (data)) { - /* Next, search for instance in new_instances */ - for (i = 0; i < data->max_new_instances; i++) { - if (data->new_instances[i][0] == 0) - break; - if (data->new_instances[i][0] == instance) { - /* The instance has been found in new_instances */ - instance1 = data->new_instances[i][1]; - instance2 = data->new_instances[i][2]; - instance_found = 1; - break; - } - } - } - - if (!instance_found) { - /* Finally, if the instance is not found, create a new one */ - - if (!data) { - /* Allocate space needed for saving new instances */ - data = (suite_biobj_t *) coco_allocate_memory(sizeof(*data)); - - /* Most often the actual number of new instances will be lower than max_new_instances, because - * some of them are already in suite_biobj_instances. However, in order to avoid iterating over - * suite_biobj_instances, the allocation uses max_new_instances. */ - data->max_new_instances = suite->number_of_instances; - - data->new_instances = (size_t **) coco_allocate_memory(data->max_new_instances * sizeof(size_t *)); - for (i = 0; i < data->max_new_instances; i++) { - data->new_instances[i] = (size_t *) malloc(3 * sizeof(size_t)); - for (j = 0; j < 3; j++) { - data->new_instances[i][j] = 0; - } - } - suite->data_free_function = suite_biobj_free; - suite->data = data; - } - - /* A simple formula to set the first instance */ - instance1 = 2 * instance + 1; - instance2 = suite_biobj_get_new_instance(suite, instance, instance1, num_bbob_functions, bbob_functions); - } - - problem1 = coco_get_bbob_problem(bbob_functions[function1_idx], dimension, instance1); - problem2 = coco_get_bbob_problem(bbob_functions[function2_idx], dimension, instance2); - - problem = coco_problem_stacked_allocate(problem1, problem2, smallest_values_of_interest, largest_values_of_interest); + problem = coco_get_biobj_problem(function, dimension, instance, coco_get_bbob_problem, &new_inst_data, + suite->number_of_instances, suite->dimensions, suite->number_of_dimensions); problem->suite_dep_function = function; problem->suite_dep_instance = instance; problem->suite_dep_index = coco_suite_encode_problem_index(suite, function_idx, dimension_idx, instance_idx); - /* Use the standard stacked problem_id as problem_name and construct a new suite-specific problem_id */ - coco_problem_set_name(problem, problem->problem_id); - coco_problem_set_id(problem, "bbob-biobj_f%02lu_i%02lu_d%02lu", (unsigned long) function, - (unsigned long) instance, (unsigned long) dimension); - - /* Construct problem type */ - coco_problem_set_type(problem, "%s_%s", problem1->problem_type, problem2->problem_type); - - coco_free_memory(smallest_values_of_interest); - coco_free_memory(largest_values_of_interest); - return problem; } -/** - * @brief Computes the instance number of the second problem/objective so that the resulting bi-objective - * problem has more than a single optimal solution. - * - * Starts by setting instance2 = instance1 + 1 and increases this number until an appropriate instance has - * been found (or until a maximum number of tries has been reached, in which case it throws a coco_error). - * An appropriate instance is the one for which the resulting bi-objective problem (in any considered - * dimension) has the ideal and nadir points apart enough in the objective space and the extreme optimal - * points apart enough in the decision space. When the instance has been found, it is output through - * coco_warning, so that the user can see it and eventually manually add it to suite_biobj_instances. - */ -static size_t suite_biobj_get_new_instance(coco_suite_t *suite, - const size_t instance, - const size_t instance1, - const size_t num_bbob_functions, - const size_t *bbob_functions) { - size_t instance2 = 0; - size_t num_tries = 0; - const size_t max_tries = 1000; - const double apart_enough = 1e-4; - int appropriate_instance_found = 0, break_search, warning_produced = 0; - coco_problem_t *problem1, *problem2, *problem = NULL; - size_t d, f1, f2, i; - size_t function1, function2, dimension; - double norm; - double *smallest_values_of_interest, *largest_values_of_interest; - - suite_biobj_t *data; - assert(suite->data); - data = (suite_biobj_t *) suite->data; - - while ((!appropriate_instance_found) && (num_tries < max_tries)) { - num_tries++; - instance2 = instance1 + num_tries; - break_search = 0; - - /* An instance is "appropriate" if the ideal and nadir points in the objective space and the two - * extreme optimal points in the decisions space are apart enough for all problems (all dimensions - * and function combinations); therefore iterate over all dimensions and function combinations */ - for (f1 = 0; (f1 < num_bbob_functions) && !break_search; f1++) { - function1 = bbob_functions[f1]; - for (f2 = f1; (f2 < num_bbob_functions) && !break_search; f2++) { - function2 = bbob_functions[f2]; - for (d = 0; (d < suite->number_of_dimensions) && !break_search; d++) { - dimension = suite->dimensions[d]; - - if (dimension == 0) { - if (!warning_produced) - coco_warning("suite_biobj_get_new_instance(): remove filtering of dimensions to get generally acceptable instances!"); - warning_produced = 1; - continue; - } - - problem1 = coco_get_bbob_problem(function1, dimension, instance1); - problem2 = coco_get_bbob_problem(function2, dimension, instance2); - if (problem) { - coco_problem_stacked_free(problem); - problem = NULL; - } - - /* Set smallest and largest values of interest to some value (not important which, it just needs to be a - * vector of doubles of the right dimension) */ - smallest_values_of_interest = coco_allocate_vector_with_value(dimension, -100); - largest_values_of_interest = coco_allocate_vector_with_value(dimension, 100); - problem = coco_problem_stacked_allocate(problem1, problem2, smallest_values_of_interest, - largest_values_of_interest); - coco_free_memory(smallest_values_of_interest); - coco_free_memory(largest_values_of_interest); - - /* Check whether the ideal and nadir points are too close in the objective space */ - norm = mo_get_norm(problem->best_value, problem->nadir_value, 2); - if (norm < 1e-1) { /* TODO How to set this value in a sensible manner? */ - coco_debug( - "suite_biobj_get_new_instance(): The ideal and nadir points of %s are too close in the objective space", - problem->problem_id); - coco_debug("norm = %e, ideal = %e\t%e, nadir = %e\t%e", norm, problem->best_value[0], - problem->best_value[1], problem->nadir_value[0], problem->nadir_value[1]); - break_search = 1; - } - - /* Check whether the extreme optimal points are too close in the decision space */ - norm = mo_get_norm(problem1->best_parameter, problem2->best_parameter, problem->number_of_variables); - if (norm < apart_enough) { - coco_debug( - "suite_biobj_get_new_instance(): The extreme points of %s are too close in the decision space", - problem->problem_id); - coco_debug("norm = %e", norm); - break_search = 1; - } - } - } - } - /* Clean up */ - if (problem) { - coco_problem_stacked_free(problem); - problem = NULL; - } - - if (break_search) { - /* The search was broken, continue with next instance2 */ - continue; - } else { - /* An appropriate instance was found */ - appropriate_instance_found = 1; - coco_info("suite_biobj_set_new_instance(): Instance %lu created from instances %lu and %lu", - (unsigned long) instance, (unsigned long) instance1, (unsigned long) instance2); - - /* Save the instance to new_instances */ - for (i = 0; i < data->max_new_instances; i++) { - if (data->new_instances[i][0] == 0) { - data->new_instances[i][0] = instance; - data->new_instances[i][1] = instance1; - data->new_instances[i][2] = instance2; - break; - }; - } - } - } - - if (!appropriate_instance_found) { - coco_error("suite_biobj_get_new_instance(): Could not find suitable instance %lu in %lu tries", - (unsigned long) instance, (unsigned long) num_tries); - return 0; /* Never reached */ - } - - return instance2; -} - -/** - * @brief Frees the memory of the given bi-objective suite. - */ -static void suite_biobj_free(void *stuff) { - - suite_biobj_t *data; - size_t i; - - assert(stuff != NULL); - data = (suite_biobj_t *) stuff; - - if (data->new_instances) { - for (i = 0; i < data->max_new_instances; i++) { - if (data->new_instances[i]) { - coco_free_memory(data->new_instances[i]); - data->new_instances[i] = NULL; - } - } - } - coco_free_memory(data->new_instances); - data->new_instances = NULL; -} - -/** - * @brief Returns the best known value for indicator_name matching the given key if the key is found, and - * throws a coco_error otherwise. - */ -static double suite_biobj_get_best_value(const char *indicator_name, const char *key) { - - size_t i, count; - double best_value = 0; - char *curr_key; - - if (strcmp(indicator_name, "hyp") == 0) { - - curr_key = coco_allocate_string(COCO_PATH_MAX + 1); - count = sizeof(suite_biobj_best_values_hyp) / sizeof(char *); - for (i = 0; i < count; i++) { - sscanf(suite_biobj_best_values_hyp[i], "%s %lf", curr_key, &best_value); - if (strcmp(curr_key, key) == 0) { - coco_free_memory(curr_key); - return best_value; - } - } - - coco_free_memory(curr_key); - coco_warning("suite_biobj_get_best_value(): best value of %s could not be found; set to 1.0", key); - return 1.0; - - } else { - coco_error("suite_biobj_get_best_value(): indicator %s not supported", indicator_name); - return 0; /* Never reached */ - } - - coco_error("suite_biobj_get_best_value(): unexpected exception"); - return 0; /* Never reached */ -} diff --git a/code-experiments/src/suite_biobj_best_values_hyp.c b/code-experiments/src/suite_biobj_best_values_hyp.c index 69fe85466..745cf4f1f 100644 --- a/code-experiments/src/suite_biobj_best_values_hyp.c +++ b/code-experiments/src/suite_biobj_best_values_hyp.c @@ -1,14 +1,11 @@ /** * @file suite_biobj_best_values_hyp.c - * @brief Contains the best known hypervolume values for the bob-biobj and bbob-biobj-ext - * suite's problems. - * @note For now, the hypervolume reference values for the problems not in the bbob-biobj - * suite are 1.0 as well as for the new instances larger than 10 (as of 2017/01/20). - */ - -/** + * * @brief The best known hypervolume values for the bbob-biobj and bbob-biobj-ext suite problems. * + * @note For now, the hypervolume reference values for the bbob-biobj-ext problems not in the + * bbob-biobj suite are 1.0 as well as for the new instances larger than 10 (as of 2017/01/20). + * * @note Because this file is used for automatically retrieving the existing best hypervolume values for * pre-processing purposes, its formatting should not be altered. This means that there must be exactly one * string per line, the first string appearing on the next line after "static const char..." (no comments @@ -1874,7 +1871,7 @@ static const char *suite_biobj_best_values_hyp[] = { /* Best values on 29.01.201 "bbob-biobj_f21_i10_d05 0.979604346471867", "bbob-biobj_f21_i10_d10 0.977275303898697", "bbob-biobj_f21_i10_d20 0.972982656541522", - "bbob-biobj_f21_i10_d40 0.997081448699098", + "bbob-biobj_f21_i10_d40 0.997081448699098", "bbob-biobj_f21_i11_d02 1.0", "bbob-biobj_f21_i11_d03 1.0", "bbob-biobj_f21_i11_d05 1.0", diff --git a/code-experiments/src/transform_vars_blockrotation.c b/code-experiments/src/transform_vars_blockrotation.c index d20d14dc1..bf1c5d6cf 100644 --- a/code-experiments/src/transform_vars_blockrotation.c +++ b/code-experiments/src/transform_vars_blockrotation.c @@ -18,6 +18,7 @@ typedef struct { double **B; /**< @brief the block-diagonal matrices*/ double *x; + size_t dimension; size_t *block_sizes; /**< @brief the list of block-sizes*/ size_t nb_blocks; /**< @brief the number of blocks in the matrix */ size_t *block_size_map; /**< @brief maps a row to the block-size of the block to which it belong, keep until better way is found */ @@ -45,9 +46,9 @@ static void transform_vars_blockrotation_evaluate(coco_problem_t *problem, const assert(y[0] + 1e-13 >= problem->best_value[0]); } -static void transform_vars_blockrotation_free(void *thing) { - transform_vars_blockrotation_t *data = (transform_vars_blockrotation_t *) thing; - coco_free_memory(data->B); +static void transform_vars_blockrotation_free(void *stuff) { + transform_vars_blockrotation_t *data = (transform_vars_blockrotation_t *) stuff; + coco_free_block_matrix(data->B, data->dimension); coco_free_memory(data->block_sizes); coco_free_memory(data->x); coco_free_memory(data->block_size_map); @@ -70,6 +71,7 @@ static coco_problem_t *transform_vars_blockrotation(coco_problem_t *inner_proble entries_in_M += block_sizes[i] * block_sizes[i]; } data = (transform_vars_blockrotation_t *) coco_allocate_memory(sizeof(*data)); + data->dimension = number_of_variables; data->B = coco_copy_block_matrix(B, number_of_variables, block_sizes, nb_blocks); data->x = coco_allocate_vector(inner_problem->number_of_variables); data->block_sizes = coco_duplicate_size_t_vector(block_sizes, nb_blocks); diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index 61cd3bbc5..1ad80d57b 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -1,6 +1,6 @@ /** * @file transform_vars_blockrotation_helpers.c - * @brief implements fonctions needed by transform_vars_blockrotation.c + * @brief implements functions needed by transform_vars_blockrotation.c */ #include @@ -31,7 +31,7 @@ static size_t coco_rotation_matrix_block_size(size_t const dimension) { * @brief * Allocate a ${n} by ${m} block matrix of nb_blocks block sizes block_sizes structured as an array of pointers * to double arrays. - * each row constains only the block_sizes[i] possibly non-zero elements + * each row contains only the block_sizes[i] possibly non-zero elements */ static double **coco_allocate_blockmatrix(const size_t n, const size_t* block_sizes, const size_t nb_blocks) { double **matrix = NULL; diff --git a/code-experiments/src/transform_vars_permutation.c b/code-experiments/src/transform_vars_permutation.c index d4beb1d2c..a08fe0030 100644 --- a/code-experiments/src/transform_vars_permutation.c +++ b/code-experiments/src/transform_vars_permutation.c @@ -35,6 +35,7 @@ static void transform_vars_permutation_evaluate(coco_problem_t *problem, const d static void transform_vars_permutation_free(void *thing) { transform_vars_permutation_t *data = (transform_vars_permutation_t *) thing; + coco_free_memory(data->x); coco_free_memory(data->P); } diff --git a/code-experiments/src/transform_vars_permutation_helpers.c b/code-experiments/src/transform_vars_permutation_helpers.c index cb6eab568..beede80da 100644 --- a/code-experiments/src/transform_vars_permutation_helpers.c +++ b/code-experiments/src/transform_vars_permutation_helpers.c @@ -1,6 +1,6 @@ /** * @file transform_vars_permutation_helpers.c - * @brief implements fonctions needed by transform_vars_permutation.c + * @brief implements functions needed by transform_vars_permutation.c */ #include @@ -57,7 +57,7 @@ static void coco_compute_random_permutation(size_t *P, long seed, size_t n) { static long coco_random_unif_integer(long lower_bound, long upper_bound, long seed){ long range, rand_int; double *tmp_uniform; - tmp_uniform=coco_allocate_vector(1); + tmp_uniform = coco_allocate_vector(1); bbob2009_unif(tmp_uniform, 1, seed); range = upper_bound - lower_bound + 1; rand_int = ((long)(tmp_uniform[0] * (double) range)) + lower_bound; @@ -80,7 +80,6 @@ static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed tmp_uniform = coco_allocate_vector(n); bbob2009_unif(tmp_uniform, n, seed); - perm_random_data = coco_allocate_vector(n); idx_order = coco_allocate_vector_size_t(n); for (i = 0; i < n; i++){ @@ -127,6 +126,7 @@ static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed } coco_free_memory(tmp_uniform); + coco_free_memory(idx_order); } diff --git a/code-experiments/test/integration-test/Makefile.in b/code-experiments/test/integration-test/Makefile.in index 661a02609..172ff08c0 100644 --- a/code-experiments/test/integration-test/Makefile.in +++ b/code-experiments/test/integration-test/Makefile.in @@ -17,7 +17,7 @@ CCFLAGS = -g -ggdb -std=c89 -pedantic -Wall -Wextra -Wstrict-prototypes -Wshadow ######################################################################## ## Toplevel targets -all: test_coco test_instance_extraction test_biobj test_bbob-constrained +all: test_coco test_instance_extraction test_biobj test_bbob-constrained test_bbob-mixint clean: rm -f coco.o @@ -25,6 +25,7 @@ clean: rm -f test_instance_extraction.o test_instance_extraction rm -f test_biobj.o test_biobj rm -f test_bbob-constrained.o test_bbob-constrained + rm -f test_bbob-mixint.o test_bbob-mixint ######################################################################## ## Programs @@ -40,6 +41,9 @@ test_biobj: test_biobj.o coco.o test_bbob-constrained: test_bbob-constrained.o coco.o ${CC} ${CCFLAGS} -o test_bbob-constrained coco.o test_bbob-constrained.o ${LDFLAGS} +test_bbob-mixint: test_bbob-mixint.o + ${CC} ${CCFLAGS} -o test_bbob-mixint test_bbob-mixint.o ${LDFLAGS} + ######################################################################## ## Additional dependencies coco.o: coco.h coco.c @@ -52,3 +56,5 @@ test_biobj.o: coco.h coco.c test_biobj.c ${CC} -c ${CCFLAGS} -o test_biobj.o test_biobj.c test_bbob-constrained.o: coco.h coco.c test_bbob-constrained.c ${CC} -c ${CCFLAGS} -o test_bbob-constrained.o test_bbob-constrained.c +test_bbob-mixint.o: test_bbob-mixint.c + ${CC} -c ${CCFLAGS} -o test_bbob-mixint.o test_bbob-mixint.c diff --git a/code-experiments/test/integration-test/Makefile_win_gcc.in b/code-experiments/test/integration-test/Makefile_win_gcc.in index 9cf826576..b5879ca5b 100644 --- a/code-experiments/test/integration-test/Makefile_win_gcc.in +++ b/code-experiments/test/integration-test/Makefile_win_gcc.in @@ -15,7 +15,7 @@ CCFLAGS = -g -ggdb -std=c89 -pedantic -Wall -Wextra -Wstrict-prototypes -Wshadow ######################################################################## ## Toplevel targets -all: test_coco test_instance_extraction test_biobj test_bbob-constrained +all: test_coco test_instance_extraction test_biobj test_bbob-constrained test_bbob-mixint test_rw_suites clean: IF EXIST "coco.o" DEL /F coco.o @@ -27,6 +27,8 @@ clean: IF EXIST "test_biobj.exe" DEL /F test_biobj.exe IF EXIST "test_bbob-constrained.o" DEL /F test_bbob-constrained.o IF EXIST "test_bbob-constrained.exe" DEL /F test_bbob-constrained.exe + IF EXIST "test_bbob-mixint.o" DEL /F test_bbob-mixint.o + IF EXIST "test_bbob-mixint.exe" DEL /F test_bbob-mixint.exe ######################################################################## ## Programs @@ -42,6 +44,9 @@ test_biobj: test_biobj.o coco.o test_bbob-constrained: test_bbob-constrained.o coco.o ${CC} ${CCFLAGS} -o test_bbob-constrained coco.o test_bbob-constrained.o ${LDFLAGS} +test_bbob-mixint: test_bbob-mixint.o + ${CC} ${CCFLAGS} -o test_bbob-mixint test_bbob-mixint.o ${LDFLAGS} + ######################################################################## ## Additional dependencies coco.o: coco.h coco.c @@ -54,3 +59,5 @@ test_biobj.o: coco.h coco.c test_biobj.c ${CC} -c ${CCFLAGS} -o test_biobj.o test_biobj.c test_bbob-constrained.o: coco.h coco.c test_bbob-constrained.c ${CC} -c ${CCFLAGS} -o test_bbob-constrained.o test_bbob-constrained.c +test_bbob-mixint.o: test_bbob-mixint.c + ${CC} -c ${CCFLAGS} -o test_bbob-mixint.o test_bbob-mixint.c diff --git a/code-experiments/test/integration-test/test_biobj.c b/code-experiments/test/integration-test/test_biobj.c index 25e0fe5c2..a7d7ad082 100644 --- a/code-experiments/test/integration-test/test_biobj.c +++ b/code-experiments/test/integration-test/test_biobj.c @@ -91,7 +91,7 @@ void multiple_observers(void) { coco_observer_t *observer_inner, *observer_middle, *observer_outer; coco_problem_t *problem_inner, *problem_middle, *problem_outer; - suite = coco_suite("bbob-biobj", "year: 2016", "dimensions: 2 function_indices: 1-3 instance_indices: 1-2"); + suite = coco_suite("bbob-biobj", "instances: 1-10", "dimensions: 2 function_indices: 1-3 instance_indices: 1-2"); observer_inner = coco_observer("toy", ""); observer_middle = coco_observer("bbob-biobj", "log_nondominated: final log_decision_variables: none"); diff --git a/code-experiments/test/integration-test/test_instance_extraction.c b/code-experiments/test/integration-test/test_instance_extraction.c index b3a90d864..314a65f39 100644 --- a/code-experiments/test/integration-test/test_instance_extraction.c +++ b/code-experiments/test/integration-test/test_instance_extraction.c @@ -43,5 +43,8 @@ int main(void) { if (test_instance_extraction("bbob-constrained") != 0) return 1; + if (test_instance_extraction("bbob-mixint") != 0) + return 1; + return 0; } diff --git a/code-experiments/test/unit-test/test_coco_problem.c b/code-experiments/test/unit-test/test_coco_problem.c index 7881a135c..1aef0e1f7 100644 --- a/code-experiments/test/unit-test/test_coco_problem.c +++ b/code-experiments/test/unit-test/test_coco_problem.c @@ -108,19 +108,20 @@ MU_TEST(test_coco_is_feasible) { } coco_suite_free(suite); coco_free_memory(x); + coco_free_memory(initial_solution); } /** * Tests whether coco_problem_get_largest_fvalues_of_interest returns non-NULL values - * on problems from the "bbob-biobj" test suite. + * on the first problem instances from the "bbob-biobj-ext" test suite. */ -MU_TEST(test_coco_problem_get_largest_fvalues_of_interest_bbob_biobj) { +MU_TEST(test_coco_problem_get_largest_fvalues_of_interest_bbob_biobj_ext) { coco_suite_t *suite; coco_problem_t *problem; const double *result; - suite = coco_suite("bbob-biobj", NULL, NULL); + suite = coco_suite("bbob-biobj-ext", NULL, "instance_indices: 1"); while ((problem = coco_suite_get_next_problem(suite, NULL)) != NULL) { result = coco_problem_get_largest_fvalues_of_interest(problem); mu_check(result); @@ -135,6 +136,6 @@ MU_TEST_SUITE(test_all_coco_problem) { MU_RUN_TEST(test_coco_evaluate_function); MU_RUN_TEST(test_coco_evaluate_constraint); MU_RUN_TEST(test_coco_is_feasible); - MU_RUN_TEST(test_coco_problem_get_largest_fvalues_of_interest_bbob_biobj); + MU_RUN_TEST(test_coco_problem_get_largest_fvalues_of_interest_bbob_biobj_ext); } diff --git a/code-experiments/test/unit-test/test_coco_string.c b/code-experiments/test/unit-test/test_coco_string.c index a96965e5c..01e1371d4 100644 --- a/code-experiments/test/unit-test/test_coco_string.c +++ b/code-experiments/test/unit-test/test_coco_string.c @@ -2,7 +2,7 @@ #include "minunit_c89.h" /** - * Tests coco_archive-related functions. + * Tests coco_string-related functions. */ MU_TEST(test_coco_string_trim) { diff --git a/code-experiments/test/unit-test/test_coco_suite.c b/code-experiments/test/unit-test/test_coco_suite.c index 718b3f45f..2f5650978 100644 --- a/code-experiments/test/unit-test/test_coco_suite.c +++ b/code-experiments/test/unit-test/test_coco_suite.c @@ -52,7 +52,7 @@ static void test_coco_suite_encode_problem_index_with_wrapping(void **state) { */ MU_TEST(test_coco_suite_get_problem) { - coco_suite_t *suite = coco_suite("bbob-biobj", "year: 0000", "dimensions: 5"); + coco_suite_t *suite = coco_suite("bbob-biobj", "instances: 1-10", "dimensions: 5"); coco_problem_t *problem; problem = coco_suite_get_problem(suite, 0); diff --git a/code-experiments/test/unit-test/test_coco_utilities.c b/code-experiments/test/unit-test/test_coco_utilities.c index 21e17fa2b..4f6d0195f 100644 --- a/code-experiments/test/unit-test/test_coco_utilities.c +++ b/code-experiments/test/unit-test/test_coco_utilities.c @@ -84,7 +84,6 @@ static void create_time_string(char **string) { } /* Produce the new string */ - new_string = coco_allocate_memory(sizeof(char) * (strlen(*string) + date_time_len)); new_string = coco_strconcat(*string, date_time_string); coco_free_memory(date_time_string); coco_free_memory(*string); @@ -131,12 +130,12 @@ MU_TEST(test_coco_create_remove_directory) { MU_TEST(test_coco_double_max_min) { double first_value = 5.0; - double second_value = 6.0; + double second_value = 6.0; - double max_value, min_value; + double max_value, min_value; max_value = coco_double_max(first_value, second_value); - mu_check(max_value == second_value); + mu_check(max_value == second_value); min_value = coco_double_min(first_value, second_value); mu_check(min_value == first_value); @@ -155,6 +154,18 @@ MU_TEST(test_coco_double_round) { input_value = 5.5; round_value = coco_double_round(input_value); mu_check(round_value == 6); + + input_value = 5; + round_value = coco_double_round(input_value); + mu_check(round_value == 5); + + input_value = 5 - 0.0000000000000001; + round_value = coco_double_round(input_value); + mu_check(round_value == 5); + + input_value = 5 + 0.0000000000000001; + round_value = coco_double_round(input_value); + mu_check(round_value == 5); } /** @@ -434,7 +445,6 @@ MU_TEST(test_coco_is_orthogonal) { coco_free_memory(M); } - /** * Run all tests in this file. */ diff --git a/code-experiments/test/unit-test/test_logger_biobj.c b/code-experiments/test/unit-test/test_logger_biobj.c index d07eac23d..e79f5f923 100644 --- a/code-experiments/test/unit-test/test_logger_biobj.c +++ b/code-experiments/test/unit-test/test_logger_biobj.c @@ -30,7 +30,7 @@ MU_TEST(test_logger_biobj_evaluate) { coco_error("test_logger_biobj_evaluate() failed to open file '%s'.", file_name); } - suite = coco_suite("bbob-biobj", "year: 2016", "dimensions: 2 function_indices: 23 instance_indices: 5"); + suite = coco_suite("bbob-biobj", "instances: 1-10", "dimensions: 2 function_indices: 23 instance_indices: 5"); observer = coco_observer("bbob-biobj", ""); while ((problem = coco_suite_get_next_problem(suite, observer)) != NULL) { @@ -85,7 +85,7 @@ MU_TEST(test_logger_biobj_evaluate2) { logger_biobj_data_t *logger; logger_biobj_indicator_t *indicator; - suite = coco_suite("bbob-biobj", "year: 2016", "dimensions: 2 function_indices: 12 instance_indices: 7"); + suite = coco_suite("bbob-biobj", "instances: 1-10", "dimensions: 2 function_indices: 12 instance_indices: 7"); observer = coco_observer("bbob-biobj", ""); while ((problem = coco_suite_get_next_problem(suite, observer)) != NULL) { diff --git a/code-experiments/test/unit-test/unit_test.c b/code-experiments/test/unit-test/unit_test.c index 10d3d915f..f8136b9e4 100644 --- a/code-experiments/test/unit-test/unit_test.c +++ b/code-experiments/test/unit-test/unit_test.c @@ -2,6 +2,7 @@ #include "coco.c" #include "minunit_c89.h" #include "unit_test_utilities.c" +#include "test_biobj_utilities.c" #include "test_coco_archive.c" #include "test_coco_observer.c" #include "test_coco_problem.c" @@ -14,14 +15,15 @@ int main(void) { - MU_RUN_SUITE(test_all_coco_archive); - MU_RUN_SUITE(test_all_coco_observer); - MU_RUN_SUITE(test_all_coco_problem); - MU_RUN_SUITE(test_all_coco_string); - MU_RUN_SUITE(test_all_coco_suite); - MU_RUN_SUITE(test_all_coco_utilities); - MU_RUN_SUITE(test_all_logger_biobj); - MU_RUN_SUITE(test_all_mo_utilities); + MU_RUN_SUITE(test_all_coco_archive); + MU_RUN_SUITE(test_all_coco_observer); + MU_RUN_SUITE(test_all_coco_problem); + MU_RUN_SUITE(test_all_coco_string); + MU_RUN_SUITE(test_all_coco_suite); + MU_RUN_SUITE(test_all_coco_utilities); + MU_RUN_SUITE(test_all_logger_biobj); + MU_RUN_SUITE(test_all_mo_utilities); + MU_RUN_SUITE(test_all_biobj_utilities); /* Run this if you want to see some tests fail MU_RUN_SUITE(test_suite_fail); */ diff --git a/code-postprocessing/cocopp/bestalg.py b/code-postprocessing/cocopp/bestalg.py index 8c6fde928..78187c9d3 100644 --- a/code-postprocessing/cocopp/bestalg.py +++ b/code-postprocessing/cocopp/bestalg.py @@ -403,10 +403,7 @@ def load_reference_algorithm(best_algo_filename, force=False, relative_load=True # If the file or folder name is not specified then we skip the load. if not best_algo_filename: - # print the following line only once to not mess the output: - if not (bestAlgorithmEntries == None): - warnings.warn("no best algorithm data specified") - bestAlgorithmEntries = None + bestAlgorithmEntries = None return bestAlgorithmEntries print("Loading best algorithm data from %s ..." % best_algo_filename) diff --git a/code-postprocessing/cocopp/captions.py b/code-postprocessing/cocopp/captions.py index bf6d863f8..b374011d4 100644 --- a/code-postprocessing/cocopp/captions.py +++ b/code-postprocessing/cocopp/captions.py @@ -115,7 +115,8 @@ def get_light_brown_line_text(testbedname): return r"""Shown are aggregations over functions where the single objectives are in the same BBOB function class, as indicated on the left side and the aggregation over all 55 functions in the last row.""" - elif (testbedname == testbedsettings.testbed_name_bi_ext): + elif (testbedname in [testbedsettings.testbed_name_bi_ext, + testbedsettings.testbed_name_bi_mixint]): return r"""Shown are aggregations over functions where the single objectives are in the same BBOB function class, as indicated on the left side and the aggregation over all 92 functions in the last row.""" @@ -123,13 +124,16 @@ def get_light_brown_line_text(testbedname): return r"""Shown are aggregations over problems where the objective functions are in the same BBOB function class and the aggregation over all 48 functions in the last row.""" # TODO: check whether this makes sense - elif (testbedname in [testbedsettings.testbed_name_single, testbedsettings.testbed_name_single_noisy]): + elif (testbedname in [testbedsettings.testbed_name_single, + testbedsettings.testbed_name_single_noisy]): return r"""Light brown lines in the background show ECDFs for the most difficult target of all algorithms benchmarked during BBOB-2009.""" - elif (testbedname == testbedsettings.testbed_name_ls): + elif (testbedname in [testbedsettings.testbed_name_ls, + testbedsettings.testbed_name_mixint]): return "" else: warnings.warn("Current testbed not supported for this caption text.") + return "" # please try to avoid underscores in the labels to not break the HTML code: @@ -137,14 +141,17 @@ def get_light_brown_line_text(testbedname): '!!NOTCHED-BOXES!!': lambda: r"""Notched boxes: interquartile range with median of simulated runs; """ if genericsettings.scaling_figures_with_boxes else "", '!!DF!!': lambda: r"""\Df""" if not (testbedsettings.current_testbed.name in [testbedsettings.testbed_name_bi, - testbedsettings.testbed_name_bi_ext]) else r"""\DI""", + testbedsettings.testbed_name_bi_ext, + testbedsettings.testbed_name_bi_mixint]) else r"""\DI""", '!!FOPT!!': lambda: r"""\fopt""" if not (testbedsettings.current_testbed.name in [testbedsettings.testbed_name_bi, - testbedsettings.testbed_name_bi_ext]) else r"""\hvref""", + testbedsettings.testbed_name_bi_ext, + testbedsettings.testbed_name_bi_mixint]) else r"""\hvref""", '!!DIVIDED-BY-DIMENSION!!': lambda: r"""divided by dimension and """ if ynormalize_by_dimension else "", '!!LIGHT-THICK-LINE!!': lambda: r"""The light thick line with diamonds indicates """ + get_reference_algorithm_text(False) + r""" for the most difficult target. """ if testbedsettings.current_testbed.reference_algorithm_filename else "", '!!F!!': lambda: r"""I_{\mathrm HV}^{\mathrm COCO}""" if (testbedsettings.current_testbed.name in [testbedsettings.testbed_name_bi, - testbedsettings.testbed_name_bi_ext]) else "f", + testbedsettings.testbed_name_bi_ext, + testbedsettings.testbed_name_bi_mixint]) else "f", '!!THE-REF-ALG!!': lambda: get_reference_algorithm_text(False), '!!HARDEST-TARGET-LATEX!!': lambda: testbedsettings.current_testbed.hardesttargetlatex, '!!DIM!!': lambda: r"""\DIM""", diff --git a/code-postprocessing/cocopp/compall/ppfigs.py b/code-postprocessing/cocopp/compall/ppfigs.py index be3d85c7c..30c980e68 100644 --- a/code-postprocessing/cocopp/compall/ppfigs.py +++ b/code-postprocessing/cocopp/compall/ppfigs.py @@ -75,7 +75,9 @@ def prepare_scaling_figure_caption(): if testbedsettings.current_testbed.name in [testbedsettings.testbed_name_bi_ext, testbedsettings.testbed_name_cons, - testbedsettings.testbed_name_ls]: + testbedsettings.testbed_name_ls, + testbedsettings.testbed_name_mixint, + testbedsettings.testbed_name_bi_mixint]: # NOTE: no runlength-based targets supported yet figure_caption = scaling_figure_caption_fixed elif testbedsettings.current_testbed.name in [testbedsettings.testbed_name_single, @@ -131,7 +133,9 @@ def prepare_ecdfs_figure_caption(): if testbed.name in [testbedsettings.testbed_name_bi_ext, testbedsettings.testbed_name_cons, - testbedsettings.testbed_name_ls]: + testbedsettings.testbed_name_ls, + testbedsettings.testbed_name_mixint, + testbedsettings.testbed_name_bi_mixint]: # NOTE: no runlength-based targets supported yet figure_caption = ecdfs_figure_caption_standard elif testbed.name in [testbedsettings.testbed_name_single, @@ -592,10 +596,10 @@ def main(dictAlg, html_file_prefix, sorted_algorithms=None, output_dir='ppdata', num_of_instances = [] for alg in algorithms_with_data: - if len(dictFunc[f][alg]) > 0: + try: num_of_instances.append(len((dictFunc[f][alg])[0].instancenumbers)) - else: - warnings.warn('The data for algorithm %s and function %s are missing' % (alg, f)) + except IndexError: + pass # issue a warning if number of instances is inconsistant, otherwise # display only the present number of instances, i.e. remove copies if len(set(num_of_instances)) > 1: diff --git a/code-postprocessing/cocopp/compall/pprldmany.py b/code-postprocessing/cocopp/compall/pprldmany.py index 33d8327df..079dbfcfd 100644 --- a/code-postprocessing/cocopp/compall/pprldmany.py +++ b/code-postprocessing/cocopp/compall/pprldmany.py @@ -813,13 +813,10 @@ def algname_to_label(algname, dirname=None): text += '\n' num_of_instances = [] for alg in algorithms_with_data: - - if ((alg in genericsettings.foreground_algorithm_list - or alg[0] in genericsettings.foreground_algorithm_list[0]) # case of a single algorithm only - and len(dictAlgperFunc[alg]) > 0): + try: num_of_instances.append(len((dictAlgperFunc[alg])[0].instancenumbers)) - else: - warnings.warn('The data for algorithm %s and function %s are missing' % (alg, f)) + except IndexError: + pass # issue a warning if number of instances is inconsistant, but always # display only the present number of instances, i.e. remove copies if len(set(num_of_instances)) > 1: diff --git a/code-postprocessing/cocopp/compall/pptables.py b/code-postprocessing/cocopp/compall/pptables.py index 13b9068f0..c85f638f3 100644 --- a/code-postprocessing/cocopp/compall/pptables.py +++ b/code-postprocessing/cocopp/compall/pptables.py @@ -59,14 +59,18 @@ def get_table_caption(): than 1, with Bonferroni correction by the number of functions (!!TOTAL-NUM-OF-FUNCTIONS!!). """ + (r"""A $\downarrow$ indicates the same tested against !!THE-REF-ALG!!. """ if not (testbedsettings.current_testbed.name in (testbedsettings.testbed_name_bi_ext, - testbedsettings.testbed_name_ls)) + testbedsettings.testbed_name_ls, + testbedsettings.testbed_name_mixint, + testbedsettings.testbed_name_bi_mixint)) else "") + r"""Best results are printed in bold. """ + r"""\cocoversion""") table_caption = None if testbedsettings.current_testbed.name in [testbedsettings.testbed_name_bi_ext, testbedsettings.testbed_name_cons, - testbedsettings.testbed_name_ls]: + testbedsettings.testbed_name_ls, + testbedsettings.testbed_name_mixint, + testbedsettings.testbed_name_bi_mixint]: # NOTE: no runlength-based targets supported yet table_caption = table_caption_one_noreference + table_caption_rest elif testbedsettings.current_testbed.name in [testbedsettings.testbed_name_single, @@ -411,7 +415,9 @@ def main(dict_alg, sorted_algs, output_dir='.', function_targets_line=True, late curline.append(r'\multicolumn{2}{@{}c@{}}{%s}' % i) counter += 1 else: - if (testbed.name == testbedsettings.testbed_name_bi): + if (testbed.name in [testbedsettings.testbed_name_bi, + testbedsettings.testbed_name_bi_ext, + testbedsettings.testbed_name_bi_mixint]): curline = [r'$\Df$'] else: curline = [r'$\Delta f_\mathrm{opt}$'] @@ -422,7 +428,9 @@ def main(dict_alg, sorted_algs, output_dir='.', function_targets_line=True, late counter += 1 # curline.append(r'\multicolumn{2}{@{\,}l@{}|}{%s}' # % writeFEvals2(targets_of_interest[-1], precision=1, isscientific=True)) - if (testbed.name == testbedsettings.testbed_name_bi): + if (testbed.name in [testbedsettings.testbed_name_bi, + testbedsettings.testbed_name_bi_ext, + testbedsettings.testbed_name_bi_mixint]): curline.append(r'\multicolumn{2}{|@{}l@{}}{\begin{rotate}{30}\#succ\end{rotate}}') else: curline.append(r'\multicolumn{2}{|@{}l@{}}{\#succ}') @@ -437,7 +445,9 @@ def main(dict_alg, sorted_algs, output_dir='.', function_targets_line=True, late curlineHtml.append('%s
    REPLACE%d\n' % (i, counter)) counter += 1 else: - if (testbed.name == testbedsettings.testbed_name_bi): + if (testbed.name in [testbedsettings.testbed_name_bi, + testbedsettings.testbed_name_bi_ext, + testbedsettings.testbed_name_bi_mixint]): curlineHtml = ['\n\nΔ HVref
    REPLACEH\n'] else: curlineHtml = ['\n\nΔ fopt
    REPLACEH\n'] diff --git a/code-postprocessing/cocopp/latex_commands_for_html.html b/code-postprocessing/cocopp/latex_commands_for_html.html index fd21d0293..15c358c2a 100644 --- a/code-postprocessing/cocopp/latex_commands_for_html.html +++ b/code-postprocessing/cocopp/latex_commands_for_html.html @@ -675,7 +675,7 @@ ##bbobpptablecaptionbiobjextfixed## Average runtime (aRT) to reach given targets, measured - in number of function evaluations. For each function, the aRT  + in number of function evaluations in different dimensions. For each function, the aRT  and, in braces as dispersion measure, the half difference between 10 and 90%-tile of (bootstrapped) runtimes is shown for the different target ∆I-values as shown in the top row. @@ -813,7 +813,7 @@ ##bbobpptablecaptionconstrainedfixed## Average runtime (aRT) to reach given targets, measured - in number of function evaluations. For each function, the aRT  + in number of function evaluations in different dimensions. For each function, the aRT  and, in braces as dispersion measure, the half difference between 10 and 90%-tile of (bootstrapped) runtimes is shown for the different target ∆f-values as shown in the top row. @@ -948,7 +948,7 @@ ##bbobpptablecaptionlargescalefixed## Average runtime (aRT) to reach given targets, measured - in number of function evaluations. For each function, the aRT  + in number of function evaluations in different dimensions. For each function, the aRT  and, in braces as dispersion measure, the half difference between 10 and 90%-tile of (bootstrapped) runtimes is shown for the different target ∆f-values as shown in the top row. @@ -1016,6 +1016,276 @@ Each cross (+) represents a single function, the line is the geometric mean. +
    +##bbobECDFslegendmixintfixed## + +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for !!NUM−OF−TARGETS−IN−ECDF!! targets with target precision in !!TARGET-RANGES-IN-ECDF!! for all functions and subgroups in -D. + +
    +##bbobppfigslegendmixintfixed## + +Average running time (aRT in number of f-evaluations + as log10 value), divided by dimension for target function value !!PPFIGS−FTARGET!! + versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f24. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six). + +
    +##bbobpprldistrlegendmixintfixed## + + Empirical cumulative distribution functions (ECDF), plotting the fraction of + trials with an outcome not larger than the respective value on the x-axis. + Left subplots: ECDF of the number of function evaluations (FEvals) divided by search space dimension D, + to fall below fopt+∆f with ∆f +=10k, where k is the first value in the legend. + The thick red line represents the most difficult target value fopt+ 10−8. Legends indicate for each target the number of functions that were solved in at + least one trial within the displayed budget. + Right subplots: ECDF of the best achieved ∆f + for running times of 0.5D, 1.2D, 3D, 10D, 100D, 1000D,... + function evaluations + (from right to left cycling cyan-magenta-black...) and final ∆f-value (red), + where ∆fand Df denote the difference to the optimal function value. + +
    +##bbobpprldistrlegendtwomixintfixed## + + Empirical cumulative distributions (ECDF) + of run lengths and speed-up ratios in 10-D (left) and 40-D (right). + Left sub-columns: ECDF of + the number of function evaluations divided by dimension D + (FEvals/D) to reach a target value fopt+∆f with ∆f +=10k, where + k is given by the first value in the legend, for + algorithmA (°) and algorithmB () . Right sub-columns: + ECDF of FEval ratios of algorithmA divided by algorithmB for target + function values 10k with k given in the legend; all + trial pairs for each function. Pairs where both trials failed are disregarded, + pairs where one trial failed are visible in the limits being > 0 or < 1. The + legend also indicates, after the colon, the number of functions that were + solved in at least one trial (algorithmA first). + +
    +##bbobppfigdimlegendmixintfixed## + + Scaling of runtime with dimension to reach certain target values ∆f. + Lines: average runtime (aRT); + Cross (+): median runtime of successful runs to reach the most difficult + target that was reached at least once (but not always); + Cross (×): maximum number of + f-evaluations in any trial. Notched boxes: interquartile range with median of simulated runs; + All values are divided by dimension and + plotted as log10 values versus dimension. Shown is the aRT for fixed values of ∆f += 10k with k given + in the legend. + Numbers above aRT-symbols (if appearing) indicate the number of trials + reaching the respective target. Horizontal lines mean linear scaling, slanted + grid lines depict quadratic scaling. + +
    +##bbobpptablecaptionmixintfixed## + + Average runtime (aRT) to reach given targets, measured + in number of function evaluations in different dimensions. For each function, the aRT  + and, in braces as dispersion measure, the half difference between 10 and + 90%-tile of (bootstrapped) runtimes is shown for the different + target ∆f-values as shown in the top row. + #succ is the number of trials that reached the last target + fopt+ 10−8. + The median number of conducted function evaluations is additionally given in + italics, if the target in the last column was never reached. + +
    +##bbobpptablesmanylegendmixintfixed## + + Average runtime (aRT) to reach given targets, measured + in number of function evaluations, in different dimensions. For each function, the aRT  + and, in braces as dispersion measure, the half difference between 10 and + 90%-tile of (bootstrapped) runtimes is shown for the different + target ∆f-values as shown in the top row. + #succ is the number of trials that reached the last target + fopt+ 10−8. + The median number of conducted function evaluations is additionally given in + italics, if the target in the last column was never reached. + Entries, succeeded by a star, are statistically significantly better (according to + the rank-sum test) when compared to all other algorithms of the table, with + p = 0.05 or p = 10−k when the number k following the star is larger + than 1, with Bonferroni correction by the number of functions (24). Best results are printed in bold. + ??COCOVERSION?? + +
    +##bbobppscatterlegendmixintfixed## + +Average running time (aRT in log10 of number of function evaluations) + of algorithmA (y-axis) versus algorithmB (x-axis) for !!NBTARGETS−SCATTER!! target values + !!DF!! ∈ [!!NBLOW!!, !!NBUP!!] in each dimension on functions f1 - f24. Markers on the upper or right edge indicate that the respective target + value was never reached. Markers represent dimension: + 5:+, + 10:\triangledown, + 20:, + 40:°, + 80:[¯], + 160:\Diamond. + +
    +##bbobloglosstablecaptionmixintfixed## + + aRT loss ratio versus the budget in number of f-evaluations + divided by dimension. + For each given budget FEvals, the target value ft is computed + as the best target f-value reached within the + budget by the given algorithm. + Shown is then the aRT to reach ft for the given algorithm + or the budget, if + reached a better target within the budget, + divided by the aRT of to reach ft. + Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median + (box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio + (points). The vertical line gives the maximal number of function evaluations + in a single trial in this function subset. See also + the following figure for results on each function subgroup.??COCOVERSION?? + +
    +##bbobloglossfigurecaptionmixintfixed## + + aRT loss ratios (see the previous figure for details). + +
    + Each cross (+) represents a single function, the line + is the geometric mean. + +
    +##bbobECDFslegendbiobjmixintfixed## + +Bootstrapped empirical cumulative distribution of the number of objective function evaluations divided by dimension (FEvals/DIM) for !!NUM−OF−TARGETS−IN−ECDF!! targets with target precision in !!TARGET-RANGES-IN-ECDF!! for all functions and subgroups in -D. + +
    +##bbobppfigslegendbiobjmixintfixed## + +Average running time (aRT in number of f-evaluations + as log10 value), divided by dimension for target function value !!PPFIGS−FTARGET!! + versus dimension. Slanted grid lines indicate quadratic scaling with the dimension. Different symbols correspond to different algorithms given in the legend of f1 and f24. Light symbols give the maximum number of function evaluations from the longest trial divided by dimension. Black stars indicate a statistically better result compared to all other algorithms with p < 0.01 and Bonferroni correction number of dimensions (six). + +
    +##bbobpprldistrlegendbiobjmixintfixed## + + Empirical cumulative distribution functions (ECDF), plotting the fraction of + trials with an outcome not larger than the respective value on the x-axis. + Left subplots: ECDF of the number of function evaluations (FEvals) divided by search space dimension D, + to fall below fopt+∆f with ∆f +=10k, where k is the first value in the legend. + The thick red line represents the most difficult target value fopt+ 10−8. Legends indicate for each target the number of functions that were solved in at + least one trial within the displayed budget. + Right subplots: ECDF of the best achieved ∆f + for running times of 0.5D, 1.2D, 3D, 10D, 100D, 1000D,... + function evaluations + (from right to left cycling cyan-magenta-black...) and final ∆f-value (red), + where ∆fand Df denote the difference to the optimal function value. + +
    +##bbobpprldistrlegendtwobiobjmixintfixed## + + Empirical cumulative distributions (ECDF) + of run lengths and speed-up ratios in 10-D (left) and 40-D (right). + Left sub-columns: ECDF of + the number of function evaluations divided by dimension D + (FEvals/D) to reach a target value fopt+∆f with ∆f +=10k, where + k is given by the first value in the legend, for + algorithmA (°) and algorithmB () . Right sub-columns: + ECDF of FEval ratios of algorithmA divided by algorithmB for target + function values 10k with k given in the legend; all + trial pairs for each function. Pairs where both trials failed are disregarded, + pairs where one trial failed are visible in the limits being > 0 or < 1. The + legend also indicates, after the colon, the number of functions that were + solved in at least one trial (algorithmA first). + +
    +##bbobppfigdimlegendbiobjmixintfixed## + + Scaling of runtime with dimension to reach certain target values ∆f. + Lines: average runtime (aRT); + Cross (+): median runtime of successful runs to reach the most difficult + target that was reached at least once (but not always); + Cross (×): maximum number of + f-evaluations in any trial. Notched boxes: interquartile range with median of simulated runs; + All values are divided by dimension and + plotted as log10 values versus dimension. Shown is the aRT for fixed values of ∆f += 10k with k given + in the legend. + Numbers above aRT-symbols (if appearing) indicate the number of trials + reaching the respective target. Horizontal lines mean linear scaling, slanted + grid lines depict quadratic scaling. + +
    +##bbobpptablecaptionbiobjmixintfixed## + + Average runtime (aRT) to reach given targets, measured + in number of function evaluations in different dimensions. For each function, the aRT  + and, in braces as dispersion measure, the half difference between 10 and + 90%-tile of (bootstrapped) runtimes is shown for the different + target ∆f-values as shown in the top row. + #succ is the number of trials that reached the last target + fopt+ 10−8. + The median number of conducted function evaluations is additionally given in + italics, if the target in the last column was never reached. + +
    +##bbobpptablesmanylegendbiobjmixintfixed## + + Average runtime (aRT) to reach given targets, measured + in number of function evaluations, in different dimensions. For each function, the aRT  + and, in braces as dispersion measure, the half difference between 10 and + 90%-tile of (bootstrapped) runtimes is shown for the different + target ∆f-values as shown in the top row. + #succ is the number of trials that reached the last target + fopt+ 10−8. + The median number of conducted function evaluations is additionally given in + italics, if the target in the last column was never reached. + Entries, succeeded by a star, are statistically significantly better (according to + the rank-sum test) when compared to all other algorithms of the table, with + p = 0.05 or p = 10−k when the number k following the star is larger + than 1, with Bonferroni correction by the number of functions (24). Best results are printed in bold. + ??COCOVERSION?? + +
    +##bbobppscatterlegendbiobjmixintfixed## + +Average running time (aRT in log10 of number of function evaluations) + of algorithmA (y-axis) versus algorithmB (x-axis) for !!NBTARGETS−SCATTER!! target values + !!DF!! ∈ [!!NBLOW!!, !!NBUP!!] in each dimension on functions f1 - f24. Markers on the upper or right edge indicate that the respective target + value was never reached. Markers represent dimension: + 5:+, + 10:\triangledown, + 20:, + 40:°, + 80:[¯], + 160:\Diamond. + +
    +##bbobloglosstablecaptionbiobjmixintfixed## + + aRT loss ratio versus the budget in number of f-evaluations + divided by dimension. + For each given budget FEvals, the target value ft is computed + as the best target f-value reached within the + budget by the given algorithm. + Shown is then the aRT to reach ft for the given algorithm + or the budget, if + reached a better target within the budget, + divided by the aRT of to reach ft. + Line: geometric mean. Box-Whisker error bar: 25-75%-ile with median + (box), 10-90%-ile (caps), and minimum and maximum aRT loss ratio + (points). The vertical line gives the maximal number of function evaluations + in a single trial in this function subset. See also + the following figure for results on each function subgroup.??COCOVERSION?? + +
    +##bbobloglossfigurecaptionbiobjmixintfixed## + + aRT loss ratios (see the previous figure for details). + +
    + Each cross (+) represents a single function, the line + is the geometric mean. +
    ### @@ -1023,5 +1293,5 @@ TEX by TTH, -version 4.08.
    On 28 Jan 2019, 11:36. +version 4.08.
    On 15 Feb 2019, 17:38. diff --git a/code-postprocessing/cocopp/pprldistr.py b/code-postprocessing/cocopp/pprldistr.py index 84d69bfde..498ba7a55 100644 --- a/code-postprocessing/cocopp/pprldistr.py +++ b/code-postprocessing/cocopp/pprldistr.py @@ -176,7 +176,9 @@ def caption_single(): figure_caption = caption_part_one + caption_left_fixed_targets + caption_right elif testbedsettings.current_testbed.name in [testbedsettings.testbed_name_bi_ext, testbedsettings.testbed_name_cons, - testbedsettings.testbed_name_ls]: + testbedsettings.testbed_name_ls, + testbedsettings.testbed_name_mixint, + testbedsettings.testbed_name_bi_mixint]: # no best algorithm defined yet: figure_caption = caption_part_one + caption_left_fixed_targets + caption_right else: @@ -246,7 +248,9 @@ def caption_two(): if testbedsettings.current_testbed.name in [testbedsettings.testbed_name_bi_ext, testbedsettings.testbed_name_cons, - testbedsettings.testbed_name_ls]: + testbedsettings.testbed_name_ls, + testbedsettings.testbed_name_mixint, + testbedsettings.testbed_name_bi_mixint]: # NOTE: no runlength-based targets supported yet figure_caption = caption_two_fixed elif testbedsettings.current_testbed.name in [testbedsettings.testbed_name_single, diff --git a/code-postprocessing/cocopp/pptable.py b/code-postprocessing/cocopp/pptable.py index e2d7912d0..7a57578ea 100644 --- a/code-postprocessing/cocopp/pptable.py +++ b/code-postprocessing/cocopp/pptable.py @@ -97,7 +97,9 @@ def get_table_caption(): table_caption = table_caption_start + table_caption_rlbased + table_caption_rest else: table_caption = table_caption_start + table_caption_fixedtargets + table_caption_rest - elif testbedsettings.current_testbed.name in ['bbob-biobj-ext', 'bbob-constrained', 'bbob-largescale']: + elif testbedsettings.current_testbed.name in ['bbob-biobj-ext', 'bbob-constrained', + 'bbob-largescale', 'bbob-mixint', + 'bbob-biobj-mixint']: # all testbeds without provided reference algorithm table_caption = table_caption_no_reference_algorithm else: diff --git a/code-postprocessing/cocopp/preparetexforhtml.py b/code-postprocessing/cocopp/preparetexforhtml.py index 5532725f0..583ee7bdd 100644 --- a/code-postprocessing/cocopp/preparetexforhtml.py +++ b/code-postprocessing/cocopp/preparetexforhtml.py @@ -59,6 +59,7 @@ def main(latex_commands_for_html): single_objective_testbed = testbedsettings.default_testbed_single_noisy if genericsettings.isNoisy \ else testbedsettings.default_testbed_single + for scenario in testbedsettings.all_scenarios: # set up scenario, especially wrt genericsettings if scenario == testbedsettings.scenario_rlbased: @@ -82,6 +83,9 @@ def main(latex_commands_for_html): elif scenario == testbedsettings.scenario_largescalefixed: genericsettings.runlength_based_targets = False config.config(testbedsettings.default_testbed_ls) + elif scenario == testbedsettings.scenario_mixintfixed: + genericsettings.runlength_based_targets = False + config.config(testbedsettings.default_testbed_mixint) else: warnings.warn("Scenario not supported yet in HTML") diff --git a/code-postprocessing/cocopp/rungeneric.py b/code-postprocessing/cocopp/rungeneric.py index fa79be639..e6329c929 100644 --- a/code-postprocessing/cocopp/rungeneric.py +++ b/code-postprocessing/cocopp/rungeneric.py @@ -328,8 +328,9 @@ def main(argv=None): # and rungenericmany.main() or lower-level functions are called. genericsettings.foreground_algorithm_list = [] dsld = rungenericmany.main(genopts + ["-o", outputdir] + args) - toolsdivers.prepend_to_file(latex_commands_filename, - ['\\providecommand{\\numofalgs}{2+}'] + + toolsdivers.prepend_to_file(latex_commands_filename, + ['\\providecommand{\\numofalgs}{%d}' % len(args)] ) toolsdivers.prepend_to_file(latex_commands_filename, ['\\providecommand{\\cocoversion}{\\hspace{\\textwidth}\\scriptsize\\sffamily{}' + diff --git a/code-postprocessing/cocopp/test.py b/code-postprocessing/cocopp/test.py index dc6472ba4..d4759e33b 100644 --- a/code-postprocessing/cocopp/test.py +++ b/code-postprocessing/cocopp/test.py @@ -349,8 +349,8 @@ def main(arguments): # testing data from recent runs, prepared in do.py: recent_data_path = os.path.abspath(join_path(os.path.dirname(__file__), '../../code-experiments/build/python/exdata')) - t0 = time.time() with InfolderGoneWithTheWind(): + t0 = time.time() result = os.system(python + command + join_path(recent_data_path, 'RS-bb')) print('** subtest 10 finished in ', time.time() - t0, ' seconds') @@ -362,19 +362,36 @@ def main(arguments): print('** subtest 11 finished in ', time.time() - t0, ' seconds') assert result == 0, 'Test failed: rungeneric on newly generated random search data on `bbob-biobj`.' - # t0 = time.time() - # result = os.system(python + command + - # join_path(recent_data_path, 'RS-co')) - # print('** subtest 12 finished in ', time.time() - t0, ' seconds') - # assert result == 0, 'Test failed: rungeneric on newly generated random search data on `bbob-constrained`.' - # delete_files(all_files=True) + # t0 = time.time() + # result = os.system(python + command + + # join_path(recent_data_path, 'RS-co')) + # print('** subtest 12 finished in ', time.time() - t0, ' seconds') + # assert result == 0, 'Test failed: rungeneric on newly generated random search data on `bbob-constrained`.' + # delete_files(all_files=True) - t0 = time.time() - with InfolderGoneWithTheWind(): + t0 = time.time() result = os.system(python + command + data_archive_get( - 'test/RS-4.zip')) - print('** subtest 13 finished in ', time.time() - t0, ' seconds') - assert result == 0, 'Test failed: rungeneric on RS-4.zip.' + 'test/RS-4.zip')) + print('** subtest 13 finished in ', time.time() - t0, ' seconds') + assert result == 0, 'Test failed: rungeneric on RS-4.zip.' + + t0 = time.time() + result = os.system(python + command + + join_path(recent_data_path, 'RS-la')) + print('** subtest 14 finished in ', time.time() - t0, ' seconds') + assert result == 0, 'Test failed: rungeneric on newly generated random search data on `bbob-largescale`.' + + t0 = time.time() + result = os.system(python + command + + join_path(recent_data_path, 'RS-mi')) + print('** subtest 15 finished in ', time.time() - t0, ' seconds') + assert result == 0, 'Test failed: rungeneric on newly generated random search data on `bbob-mixint`.' + + t0 = time.time() + result = os.system(python + command + + join_path(recent_data_path, 'RS-bi-mi')) + print('** subtest 16 finished in ', time.time() - t0, ' seconds') + assert result == 0, 'Test failed: rungeneric on newly generated random search data on `bbob-biobj-mixint`.' print('launching doctest (it might be necessary to close a few pop up windows to finish)') t0 = time.time() diff --git a/code-postprocessing/cocopp/testbedsettings.py b/code-postprocessing/cocopp/testbedsettings.py index 8930f8526..5257be3d1 100644 --- a/code-postprocessing/cocopp/testbedsettings.py +++ b/code-postprocessing/cocopp/testbedsettings.py @@ -1,7 +1,6 @@ import os import numpy as np import warnings -from six import advance_iterator from . import dataformatsettings @@ -13,11 +12,14 @@ scenario_biobjextfixed = 'biobjextfixed' scenario_constrainedfixed = 'constrainedfixed' scenario_largescalefixed = 'largescalefixed' +scenario_mixintfixed = 'mixintfixed' +scenario_biobjmixintfixed = 'biobjmixintfixed' all_scenarios = [scenario_rlbased, scenario_fixed, scenario_biobjfixed, scenario_biobjrlbased, scenario_biobjextfixed, scenario_constrainedfixed, - scenario_largescalefixed] + scenario_largescalefixed, scenario_mixintfixed, + scenario_biobjmixintfixed] testbed_name_single = 'bbob' testbed_name_single_noisy = 'bbob-noisy' @@ -25,6 +27,8 @@ testbed_name_bi_ext = 'bbob-biobj-ext' testbed_name_cons = 'bbob-constrained' testbed_name_ls = 'bbob-largescale' +testbed_name_mixint = 'bbob-mixint' +testbed_name_bi_mixint = 'bbob-biobj-mixint' default_suite_single = 'bbob' default_suite_single_noisy = 'bbob-noisy' @@ -36,6 +40,8 @@ default_testbed_bi_ext = 'GECCOBiObjExtBBOBTestbed' default_testbed_cons = 'CONSBBOBTestbed' default_testbed_ls = 'BBOBLargeScaleTestbed' +default_testbed_mixint = 'GECCOBBOBMixintTestbed' +default_testbed_bi_mixint = 'GECCOBBOBBiObjMixintTestbed' current_testbed = None @@ -45,7 +51,9 @@ default_suite_bi: default_testbed_bi, 'bbob-biobj-ext': default_testbed_bi_ext, 'bbob-constrained': default_testbed_cons, - 'bbob-largescale': default_testbed_ls + 'bbob-largescale': default_testbed_ls, + 'bbob-mixint': default_testbed_mixint, + 'bbob-biobj-mixint': default_testbed_bi_mixint } @@ -516,7 +524,6 @@ class BBOBLargeScaleTestbed(GECCOBBOBTestbed): instancesOfInterest=None # None: consider all instances ) - def __init__(self, targetValues): super(BBOBLargeScaleTestbed, self).__init__(targetValues) @@ -531,3 +538,59 @@ def __init__(self, targetValues): setattr(self, key, val) if 'target_values' in key or 'targetsOfInterest' in key: self.instantiate_attributes(targetValues, [key]) + + +class GECCOBBOBMixintTestbed(GECCOBBOBTestbed): + """Testbed used with the bbob-mixint test suite. + """ + + dimsOfInterest = (10, 40) + + settings = dict( + name=testbed_name_mixint, + first_dimension=5, + dimensions_to_display=[5, 10, 20, 40, 80, 160], + tabDimsOfInterest=dimsOfInterest, + rldDimsOfInterest=dimsOfInterest, + reference_algorithm_filename=None, # TODO produce correct reference algo and update this line + reference_algorithm_displayname=None, # TODO: should be read in from data set in reference_algorithm_filename + instancesOfInterest={1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1, 10: 1, 11: 1, + 12: 1, 13: 1, 14: 1, 15: 1}, + scenario=scenario_mixintfixed, + ) + + def __init__(self, targetValues): + super(GECCOBBOBMixintTestbed, self).__init__(targetValues) + + for key, val in GECCOBBOBMixintTestbed.settings.items(): + setattr(self, key, val) + if 'target_values' in key or 'targetsOfInterest' in key: + self.instantiate_attributes(targetValues, [key]) + + +class GECCOBBOBBiObjMixintTestbed(GECCOBiObjExtBBOBTestbed): + """Testbed used with the bbob-biobj-mixint test suite. + """ + + dimsOfInterest = (10, 40) + + settings = dict( + name=testbed_name_bi_mixint, + first_dimension=5, + dimensions_to_display=[5, 10, 20, 40, 80, 160], + tabDimsOfInterest=dimsOfInterest, + rldDimsOfInterest=dimsOfInterest, + reference_algorithm_filename=None, # TODO produce correct reference algo and update this line + reference_algorithm_displayname=None, # TODO: should be read in from data set in reference_algorithm_filename + instancesOfInterest={1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1, 10: 1, 11: 1, + 12: 1, 13: 1, 14: 1, 15: 1}, + scenario=scenario_biobjmixintfixed, + ) + + def __init__(self, targetValues): + super(GECCOBBOBBiObjMixintTestbed, self).__init__(targetValues) + + for key, val in GECCOBBOBBiObjMixintTestbed.settings.items(): + setattr(self, key, val) + if 'target_values' in key or 'targetsOfInterest' in key: + self.instantiate_attributes(targetValues, [key]) diff --git a/code-postprocessing/latex-templates/templateNOISYarticle.tex b/code-postprocessing/latex-templates/templateNOISYarticle.tex index c26811401..dd67c6753 100644 --- a/code-postprocessing/latex-templates/templateNOISYarticle.tex +++ b/code-postprocessing/latex-templates/templateNOISYarticle.tex @@ -65,17 +65,19 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % read in data and deal with the different number of algorithms: \input{\bbobdatapath cocopp_commands.tex} -\ifthenelse{\isundefined{\numofalgs}} +\ifthenelse{\equal{\numofalgs}{1}} { - \newcommand{\numberofalgorithms}{one} -}{ - \ifthenelse{\equal{\numofalgs}{2}} - { - \newcommand{\numberofalgorithms}{two} - }{ - \newcommand{\numberofalgorithms}{three} - } + \newcommand{\numberofalgorithms}{one} } +{ + \ifthenelse{\equal{\numofalgs}{2}} + { + \newcommand{\numberofalgorithms}{two} + }{ + \newcommand{\numberofalgorithms}{three} + } +} + \ifthenelse{\equal{\numberofalgorithms}{one}}{ \graphicspath{{\bbobdatapath\algfolder}}}{ @@ -267,9 +269,9 @@ \section{Results} The \textbf{average runtime (aRT)}, used in the %figures and tables, -depends on a given quality indicator value, $\Itarget=\fopt+\Df$, and is +depends on a given target precision, $\Itarget=\fopt+\Df$, and is computed over all relevant trials as the number of function -evaluations executed during each trial while the best indicator value +evaluations executed during each trial while the best function value did not reach \ftarget, summed over all trials and divided by the number of trials that actually reached \ftarget\ \cite{hansen2016exp,price1997dev}. diff --git a/do.py b/do.py index a5d9dda20..e15a63c37 100755 --- a/do.py +++ b/do.py @@ -14,6 +14,7 @@ import platform import time import glob +import stat ## Change to the root directory of repository and add our tools/ @@ -164,6 +165,8 @@ def run_c_integration_tests(): ['./test_biobj'], verbose=_verbosity) run('code-experiments/test/integration-test', ['./test_bbob-constrained'], verbose=_verbosity) + run('code-experiments/test/integration-test', + ['./test_bbob-mixint'], verbose=_verbosity) except subprocess.CalledProcessError: sys.exit(-1) @@ -201,6 +204,10 @@ def leak_check(): build_c() build_c_integration_tests() os.environ['CFLAGS'] = '-g -Os' + valgrind_cmd = ['valgrind', '--error-exitcode=1', '--track-origins=yes', + '--leak-check=full', '--show-reachable=yes', + './test_bbob-mixint', 'leak_check'] + run('code-experiments/test/integration-test', valgrind_cmd, verbose=_verbosity) valgrind_cmd = ['valgrind', '--error-exitcode=1', '--track-origins=yes', '--leak-check=full', '--show-reachable=yes', './test_coco', 'bbob2009_testcases.txt'] @@ -606,8 +613,8 @@ def build_java(): {'COCO_VERSION': git_version(pep440=True)}) write_file(git_revision(), "code-experiments/build/java/REVISION") write_file(git_version(), "code-experiments/build/java/VERSION") - run('code-experiments/build/java', ['javac', 'CocoJNI.java'], verbose=_verbosity) - run('code-experiments/build/java', ['javah', 'CocoJNI'], verbose=_verbosity) + run('code-experiments/build/java', ['javac', '-classpath', '.', 'CocoJNI.java'], verbose=_verbosity) + run('code-experiments/build/java', ['javah', '-classpath', '.', 'CocoJNI'], verbose=_verbosity) # Finds the path to the headers jni.h and jni_md.h (platform-dependent) # and compiles the CocoJNI library (compiler-dependent). So far, only @@ -674,11 +681,11 @@ def build_java(): ['gcc', '-dynamiclib', '-o', 'libCocoJNI.jnilib', 'CocoJNI.o'], verbose=_verbosity) - run('code-experiments/build/java', ['javac', 'Problem.java'], verbose=_verbosity) - run('code-experiments/build/java', ['javac', 'Benchmark.java'], verbose=_verbosity) - run('code-experiments/build/java', ['javac', 'Observer.java'], verbose=_verbosity) - run('code-experiments/build/java', ['javac', 'Suite.java'], verbose=_verbosity) - run('code-experiments/build/java', ['javac', 'ExampleExperiment.java'], verbose=_verbosity) + run('code-experiments/build/java', ['javac', '-classpath', '.', 'Problem.java'], verbose=_verbosity) + run('code-experiments/build/java', ['javac', '-classpath', '.', 'Benchmark.java'], verbose=_verbosity) + run('code-experiments/build/java', ['javac', '-classpath', '.', 'Observer.java'], verbose=_verbosity) + run('code-experiments/build/java', ['javac', '-classpath', '.', 'Suite.java'], verbose=_verbosity) + run('code-experiments/build/java', ['javac', '-classpath', '.', 'ExampleExperiment.java'], verbose=_verbosity) def run_java(): @@ -686,7 +693,7 @@ def run_java(): build_java() try: run('code-experiments/build/java', - ['java', '-Djava.library.path=.', 'ExampleExperiment'], + ['java', '-Djava.library.path=.', '-classpath', '.', 'ExampleExperiment'], verbose=_verbosity) except subprocess.CalledProcessError: sys.exit(-1) @@ -697,7 +704,7 @@ def test_java(): build_java() try: run('code-experiments/build/java', - ['java', '-Djava.library.path=.', 'ExampleExperiment'], + ['java', '-Djava.library.path=.', '-classpath', '.', 'ExampleExperiment'], verbose=_verbosity) except subprocess.CalledProcessError: sys.exit(-1) @@ -721,7 +728,10 @@ def test_postprocessing(all_tests=False, package_install_option=[]): for ee.suite_name, ee.observer_options['result_folder'] in [ ["bbob-biobj", "RS-bi"], # use a short path for Jenkins ["bbob", "RS-bb"], - ["bbob-constrained", "RS-co"] + ["bbob-constrained", "RS-co"], + ["bbob-largescale", "RS-la"], + ["bbob-mixint", "RS-mi"], + ["bbob-biobj-mixint", "RS-bi-mi"] ]: print(" suite %s" % ee.suite_name, end=' ') # these prints are swallowed if ee.suite_name in ee.cocoex.known_suite_names: @@ -743,7 +753,7 @@ def test_postprocessing(all_tests=False, package_install_option=[]): sys.exit(-1) finally: # always remove folder of previously run experiments: - for s in ['bi', 'bb', 'co']: + for s in ['bi', 'bb', 'co', 'la', 'mi', 'bi-mi']: shutil.rmtree('code-experiments/build/python/exdata/RS-' + s, ignore_errors=True) @@ -777,6 +787,7 @@ def test_preprocessing(package_install_option = []): python('code-preprocessing/archive-update', ['-m', 'pytest'], verbose=_verbosity) python('code-preprocessing/log-reconstruction', ['-m', 'pytest'], verbose=_verbosity) + ################################################################################ ## Global def build(package_install_option = []): From 11028531638c5973f25032ad46d9ee396b6adf81 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Mon, 18 Feb 2019 15:32:55 +0100 Subject: [PATCH 371/446] Removed a residual rw integration test --- code-experiments/test/integration-test/Makefile_win_gcc.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/test/integration-test/Makefile_win_gcc.in b/code-experiments/test/integration-test/Makefile_win_gcc.in index b5879ca5b..046fa8b32 100644 --- a/code-experiments/test/integration-test/Makefile_win_gcc.in +++ b/code-experiments/test/integration-test/Makefile_win_gcc.in @@ -15,7 +15,7 @@ CCFLAGS = -g -ggdb -std=c89 -pedantic -Wall -Wextra -Wstrict-prototypes -Wshadow ######################################################################## ## Toplevel targets -all: test_coco test_instance_extraction test_biobj test_bbob-constrained test_bbob-mixint test_rw_suites +all: test_coco test_instance_extraction test_biobj test_bbob-constrained test_bbob-mixint clean: IF EXIST "coco.o" DEL /F coco.o From d2d62839d917d822f81a3c4f0103d0c4e2de81ae Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Mon, 18 Feb 2019 15:49:12 +0100 Subject: [PATCH 372/446] Added mixed-integer files --- code-experiments/src/logger_rw.c | 224 + code-experiments/src/observer_rw.c | 108 + code-experiments/src/suite_bbob_mixint.c | 158 + code-experiments/src/suite_biobj_mixint.c | 203 + .../src/suite_biobj_mixint_best_values_hyp.c | 8294 +++++++++++++++++ code-experiments/src/suite_biobj_utilities.c | 548 ++ .../src/transform_vars_discretize.c | 147 + .../test/integration-test/test_bbob-mixint.c | 333 + .../test/unit-test/test_biobj_utilities.c | 36 + .../latex-templates/templateMIXINTarticle.tex | 927 ++ 10 files changed, 10978 insertions(+) create mode 100644 code-experiments/src/logger_rw.c create mode 100644 code-experiments/src/observer_rw.c create mode 100644 code-experiments/src/suite_bbob_mixint.c create mode 100644 code-experiments/src/suite_biobj_mixint.c create mode 100644 code-experiments/src/suite_biobj_mixint_best_values_hyp.c create mode 100644 code-experiments/src/suite_biobj_utilities.c create mode 100644 code-experiments/src/transform_vars_discretize.c create mode 100644 code-experiments/test/integration-test/test_bbob-mixint.c create mode 100644 code-experiments/test/unit-test/test_biobj_utilities.c create mode 100644 code-postprocessing/latex-templates/templateMIXINTarticle.tex diff --git a/code-experiments/src/logger_rw.c b/code-experiments/src/logger_rw.c new file mode 100644 index 000000000..211df3d7e --- /dev/null +++ b/code-experiments/src/logger_rw.c @@ -0,0 +1,224 @@ +/** + * @file logger_rw.c + * @brief Implementation of the real-world logger. + * + * Can be used to log all (or just those that are better than the preceding) solutions with information + * about objectives, decision variables (optional) and constraints (optional). See observer_rw() for + * more information on the options. Produces one "txt" file for each problem function, dimension and + * instance. + * + * @note This logger can be used with single- and multi-objective problems, but in the multi-objective + * case, all solutions are always logged. + */ + +#include +#include +#include + +#include "coco.h" +#include "coco_internal.h" + +#include "coco_utilities.c" +#include "coco_problem.c" +#include "coco_string.c" +#include "observer_rw.c" + +/** + * @brief The rw logger data type. + * + * @note Some fields from the observers (coco_observer as well as observer_rw) need to be copied here + * because the observers can be deleted before the logger is finalized and we need these fields for + * finalization. + */ +typedef struct { + FILE *out_file; /**< @brief File for logging. */ + size_t number_of_evaluations; /**< @brief The number of evaluations performed so far. */ + + double best_value; /**< @brief The best-so-far value. */ + double current_value; /**< @brief The current value. */ + + int log_vars; /**< @brief Whether to log the decision values. */ + int log_cons; /**< @brief Whether to log the constraints. */ + int log_only_better; /**< @brief Whether to log only solutions that are better than previous ones. */ + int log_time; /**< @brief Whether to log evaluation time. */ + + int precision_x; /**< @brief Precision for outputting decision values. */ + int precision_f; /**< @brief Precision for outputting objective values. */ + int precision_g; /**< @brief Precision for outputting constraint values. */ + int log_discrete_as_int; /**< @brief Whether to output discrete variables in int or double format. */ +} logger_rw_data_t; + +/** + * @brief Evaluates the function and constraints and outputs the information according to the + * observer options. + */ +static void logger_rw_evaluate(coco_problem_t *problem, const double *x, double *y) { + + logger_rw_data_t *logger; + coco_problem_t *inner_problem; + double *constraints; + size_t i; + int log_this_time = 1; + time_t start, end; + + logger = (logger_rw_data_t *) coco_problem_transformed_get_data(problem); + inner_problem = coco_problem_transformed_get_inner_problem(problem); + + /* Time the evaluations */ + if (logger->log_time) + time(&start); + + /* Evaluate the objective(s) */ + coco_evaluate_function(inner_problem, x, y); + logger->number_of_evaluations++; + if (problem->number_of_objectives == 1) + logger->current_value = y[0]; + + /* Evaluate the constraints */ + if (problem->number_of_constraints > 0) { + constraints = coco_allocate_vector(problem->number_of_constraints); + inner_problem->evaluate_constraint(inner_problem, x, constraints); + } + + /* Time the evaluations */ + if (logger->log_time) + time(&end); + + /* Log to the output file */ + if ((problem->number_of_objectives == 1) && (logger->current_value < logger->best_value)) + logger->best_value = logger->current_value; + else + log_this_time = !logger->log_only_better; + if (log_this_time) { + fprintf(logger->out_file, "%lu\t", (unsigned long) logger->number_of_evaluations); + for (i = 0; i < problem->number_of_objectives; i++) + fprintf(logger->out_file, "%.*e\t", logger->precision_f, y[i]); + if (logger->log_vars) { + for (i = 0; i < problem->number_of_variables; i++) { + if ((i < problem->number_of_integer_variables) && (logger->log_discrete_as_int)) + fprintf(logger->out_file, " %d", coco_double_to_int(x[i])); + fprintf(logger->out_file, "%.*e\t", logger->precision_x, x[i]); + } + } + if (logger->log_cons) { + for (i = 0; i < problem->number_of_constraints; i++) + fprintf(logger->out_file, "%.*e\t", logger->precision_g, constraints[i]); + } + /* Log time in seconds */ + if (logger->log_time) + fprintf(logger->out_file, "%.0f\t", difftime(end, start)); + fprintf(logger->out_file, "\n"); + } + fflush(logger->out_file); + + if (problem->number_of_constraints > 0) + coco_free_memory(constraints); +} + +/** + * @brief Frees the memory of the given rw logger. + */ +static void logger_rw_free(void *stuff) { + + logger_rw_data_t *logger; + + assert(stuff != NULL); + logger = (logger_rw_data_t *) stuff; + + if (logger->out_file != NULL) { + fclose(logger->out_file); + logger->out_file = NULL; + } +} + +/** + * @brief Initializes the rw logger. + * + * Copies all observer field values that are needed after initialization into logger field values for two + * reasons: + * - If the observer is deleted before the suite, the observer is not available anymore when the logger + * is finalized. + * - This reduces function calls. + */ +static coco_problem_t *logger_rw(coco_observer_t *observer, coco_problem_t *inner_problem) { + + coco_problem_t *problem; + logger_rw_data_t *logger_data; + observer_rw_data_t *observer_data; + char *path_name, *file_name = NULL; + + logger_data = (logger_rw_data_t *) coco_allocate_memory(sizeof(*logger_data)); + logger_data->number_of_evaluations = 0; + + observer_data = (observer_rw_data_t *) observer->data; + /* Copy values from the observes that you might need even if they do not exist any more */ + logger_data->precision_x = observer->precision_x; + logger_data->precision_f = observer->precision_f; + logger_data->precision_g = observer->precision_g; + logger_data->log_discrete_as_int = observer->log_discrete_as_int; + + if (((observer_data->log_vars_mode == LOG_LOW_DIM) && + (inner_problem->number_of_variables > observer_data->low_dim_vars)) + || (observer_data->log_vars_mode == LOG_NEVER)) + logger_data->log_vars = 0; + else + logger_data->log_vars = 1; + + if (((observer_data->log_cons_mode == LOG_LOW_DIM) && + (inner_problem->number_of_constraints > observer_data->low_dim_cons)) + || (observer_data->log_cons_mode == LOG_NEVER) + || (inner_problem->number_of_constraints == 0)) + logger_data->log_cons = 0; + else + logger_data->log_cons = 1; + + logger_data->log_only_better = (observer_data->log_only_better) && + (inner_problem->number_of_objectives == 1); + logger_data->log_time = observer_data->log_time; + + logger_data->best_value = DBL_MAX; + logger_data->current_value = DBL_MAX; + + /* Construct file name */ + path_name = coco_allocate_string(COCO_PATH_MAX + 1); + memcpy(path_name, observer->result_folder, strlen(observer->result_folder) + 1); + coco_create_directory(path_name); + file_name = coco_strdupf("%s_rw.txt", coco_problem_get_id(inner_problem)); + coco_join_path(path_name, COCO_PATH_MAX, file_name, NULL); + + /* Open and initialize the output file */ + logger_data->out_file = fopen(path_name, "a"); + if (logger_data->out_file == NULL) { + coco_error("logger_rw() failed to open file '%s'.", path_name); + return NULL; /* Never reached */ + } + coco_free_memory(path_name); + coco_free_memory(file_name); + + /* Output header information */ + fprintf(logger_data->out_file, "\n%% suite = '%s', problem_id = '%s', problem_name = '%s', coco_version = '%s'\n", + coco_problem_get_suite(inner_problem)->suite_name, coco_problem_get_id(inner_problem), + coco_problem_get_name(inner_problem), coco_version); + fprintf(logger_data->out_file, "%% evaluation | %lu objective", + (unsigned long) inner_problem->number_of_objectives); + if (inner_problem->number_of_objectives > 1) + fprintf(logger_data->out_file, "s"); + if (logger_data->log_vars) + fprintf(logger_data->out_file, " | %lu variable", + (unsigned long) inner_problem->number_of_variables); + if (inner_problem->number_of_variables > 1) + fprintf(logger_data->out_file, "s"); + if (logger_data->log_cons) + fprintf(logger_data->out_file, " | %lu constraint", + (unsigned long) inner_problem->number_of_constraints); + if (inner_problem->number_of_constraints > 1) + fprintf(logger_data->out_file, "s"); + if (logger_data->log_time) + fprintf(logger_data->out_file, " | evaluation time (s)"); + fprintf(logger_data->out_file, "\n"); + + problem = coco_problem_transformed_allocate(inner_problem, logger_data, logger_rw_free, observer->observer_name); + problem->evaluate_function = logger_rw_evaluate; + + return problem; +} diff --git a/code-experiments/src/observer_rw.c b/code-experiments/src/observer_rw.c new file mode 100644 index 000000000..2925b1edf --- /dev/null +++ b/code-experiments/src/observer_rw.c @@ -0,0 +1,108 @@ +/** + * @file observer_rw.c + * @brief Implementation of an observer for real-world problems. + */ + +#include "coco.h" +#include "coco_internal.h" + +#include "coco_utilities.c" + +/** @brief Enum for denoting when the decision variables and constraints are logged. */ +typedef enum { + LOG_NEVER, LOG_LOW_DIM, LOG_ALWAYS +} observer_rw_log_e; + +/** + * @brief The real-world observer data type. + */ +typedef struct { + observer_rw_log_e log_vars_mode; /**< @brief When the decision variables are logged. */ + observer_rw_log_e log_cons_mode; /**< @brief When the constraints are logged. */ + size_t low_dim_vars; /**< @brief "Low dimension" for decision variables. */ + size_t low_dim_cons; /**< @brief "Low dimension" for constraints. */ + int log_only_better; /**< @brief Whether to log only solutions that are better than previous + ones (only for the single-objective problems). */ + int log_time; /**< @brief Whether to log time. */ +} observer_rw_data_t; + +static coco_problem_t *logger_rw(coco_observer_t *observer, coco_problem_t *problem); +static void logger_rw_free(void *logger); + +/** + * @brief Initializes the observer for real-world problems. + * + * Possible options: + * + * - "log_variables: STRING" determines whether the decision variables are to be logged. STRING can take on + * the values "none" (don't output decision variables), "low_dim"(output decision variables only for + * dimensions lower or equal to low_dim_vars) and "all" (output all decision variables). The default value + * is "all". + * + * - "log_constraints: STRING" determines whether the constraints are to be logged. STRING can take on the + * values "none" (don't output constraints), "low_dim"(output constraints only for dimensions lower or equal + * to low_dim_cons) and "all" (output all constraints). The default value is "all". + * + * - "low_dim_vars: VALUE" determines the value used to define "low_dim" for decision variables. The default + * value is 10. + * + * - "low_dim_cons: VALUE" determines the value used to define "low_dim" for constraints. The default value + * is 10. + * + * - "log_only_better: 0/1" determines whether all solutions are logged (0) or only the ones that are better + * than previous ones (1). This is applicable only for the single-objective problems, where the default value + * is 0. For multi-objective problems, all solutions are always logged. + * + * - "log_time: 0/1" determines whether the time needed to evaluate each solution is logged (0) or not (1). + * The default value is 0. + */ +static void observer_rw(coco_observer_t *observer, const char *options, coco_option_keys_t **option_keys) { + + observer_rw_data_t *observer_data; + char string_value[COCO_PATH_MAX + 1]; + + /* Sets the valid keys for rw observer options + * IMPORTANT: This list should be up-to-date with the code and the documentation */ + const char *known_keys[] = { "log_variables", "log_constraints", "low_dim_vars", "low_dim_cons", + "log_only_better", "log_time" }; + *option_keys = coco_option_keys_allocate(sizeof(known_keys) / sizeof(char *), known_keys); + + observer_data = (observer_rw_data_t *) coco_allocate_memory(sizeof(*observer_data)); + + observer_data->log_vars_mode = LOG_ALWAYS; + if (coco_options_read_string(options, "log_variables", string_value) > 0) { + if (strcmp(string_value, "none") == 0) + observer_data->log_vars_mode = LOG_NEVER; + else if (strcmp(string_value, "all") == 0) + observer_data->log_vars_mode = LOG_ALWAYS; + else if (strcmp(string_value, "low_dim") == 0) + observer_data->log_vars_mode = LOG_LOW_DIM; + } + + observer_data->log_cons_mode = LOG_ALWAYS; + if (coco_options_read_string(options, "log_constraints", string_value) > 0) { + if (strcmp(string_value, "none") == 0) + observer_data->log_cons_mode = LOG_NEVER; + else if (strcmp(string_value, "all") == 0) + observer_data->log_cons_mode = LOG_ALWAYS; + else if (strcmp(string_value, "low_dim") == 0) + observer_data->log_cons_mode = LOG_LOW_DIM; + } + + if (coco_options_read_size_t(options, "low_dim_vars", &(observer_data->low_dim_vars)) == 0) + observer_data->low_dim_vars = 10; + + if (coco_options_read_size_t(options, "low_dim_cons", &(observer_data->low_dim_cons)) == 0) + observer_data->low_dim_cons = 10; + + if (coco_options_read_int(options, "log_only_better", &(observer_data->log_only_better)) == 0) + observer_data->log_only_better = 0; + + if (coco_options_read_int(options, "log_time", &(observer_data->log_time)) == 0) + observer_data->log_time = 0; + + observer->logger_allocate_function = logger_rw; + observer->logger_free_function = logger_rw_free; + observer->data_free_function = NULL; + observer->data = observer_data; +} diff --git a/code-experiments/src/suite_bbob_mixint.c b/code-experiments/src/suite_bbob_mixint.c new file mode 100644 index 000000000..b2bf8bc21 --- /dev/null +++ b/code-experiments/src/suite_bbob_mixint.c @@ -0,0 +1,158 @@ +/** + * @file suite_bbob_mixint.c + * @brief Implementation of a suite with mixed-integer bbob problems. The functions are the same + * as those in the bbob suite with 24 functions, but the large-scale implementations of the + * functions are used instead of the original ones for dimensions over 40. Additionally, the + * functions are scaled as given by suite_bbob_mixint_scaling_factors. + */ + +#include "coco.h" +#include "suite_bbob.c" +#include "suite_largescale.c" +#include "transform_vars_discretize.c" +#include "transform_obj_scale.c" + +static coco_suite_t *coco_suite_allocate(const char *suite_name, + const size_t number_of_functions, + const size_t number_of_dimensions, + const size_t *dimensions, + const char *default_instances); +/** + * @brief Factors used to scale separate functions in order to achieve similar difficulty. + */ +static double suite_bbob_mixint_scaling_factors[] = { + 1, 1e-3, 1e-1, 1e-1, 1, /* f1 to f5 */ + 1e-2, 1, 1e-2, 1e-2, 1e-3, /* f6 to f10 */ + 1e-2, 1e-4, 1e-1, 1, 1e-1, /* f11 to f15 */ + 1, 10, 1, 10, 1e-1, /* f16 to f20 */ + 1, 1, 10, 1e-1 /* f21 to f24 */ +}; + +/** + * @brief Sets the dimensions and default instances for the bbob-mixint suite. + */ +static coco_suite_t *suite_bbob_mixint_initialize(const char *suite_name) { + + coco_suite_t *suite; + const size_t dimensions[] = { 5, 10, 20, 40, 80, 160 }; + suite = coco_suite_allocate(suite_name, 24, 6, dimensions, "instances: 1-15"); + + return suite; +} + +/** + * @brief Sets the instances associated with years for the bbob-mixint suites. + */ +static const char *suite_bbob_mixint_get_instances_by_year(const int year) { + + (void) year; /* To get rid of compiler warnings */ + return "1-15"; +} + + +/** + * @brief Creates and returns a mixed-integer bbob problem without needing the actual bbob-mixint + * suite. + * + * @param function Function + * @param dimension Dimension + * @param instance Instance + * @param coco_get_problem_function The function that is used to access the continuous problem. + * @return The problem that corresponds to the given parameters. + */ +static coco_problem_t *coco_get_bbob_mixint_problem(const size_t function, + const size_t dimension, + const size_t instance, + const coco_get_problem_function_t coco_get_problem_function) { + coco_problem_t *problem = NULL; + + /* The cardinality of variables (0 = continuous variables should always come last) */ + const size_t variable_cardinality[] = { 2, 4, 8, 16, 0 }; + + double *smallest_values_of_interest = coco_allocate_vector(dimension); + double *largest_values_of_interest = coco_allocate_vector(dimension); + char *inner_problem_id; + + size_t i, j; + size_t cardinality = 0; + size_t num_integer = dimension; + if (dimension % 5 != 0) + coco_error("coco_get_bbob_mixint_problem(): dimension %lu not supported for suite_bbob_mixint", dimension); + + problem = coco_get_problem_function(function, dimension, instance); + assert(problem != NULL); + + /* Set the ROI of the outer problem according to the given cardinality of variables and the ROI of the + * inner problem to [-4, 4] for variables that will be discretized */ + for (i = 0; i < dimension; i++) { + j = i / (dimension / 5); + cardinality = variable_cardinality[j]; + if (cardinality == 0) { + /* Continuous variables */ + /* Outer problem */ + smallest_values_of_interest[i] = -5; + largest_values_of_interest[i] = 5; + if (num_integer == dimension) + num_integer = i; + } + else { + /* Outer problem */ + smallest_values_of_interest[i] = 0; + largest_values_of_interest[i] = (double)cardinality - 1; + /* Inner problem */ + problem->smallest_values_of_interest[i] = -4; + problem->largest_values_of_interest[i] = 4; + } + } + + inner_problem_id = problem->problem_id; + + problem = transform_vars_discretize(problem, smallest_values_of_interest, + largest_values_of_interest, num_integer); + + problem = transform_obj_scale(problem, suite_bbob_mixint_scaling_factors[function - 1]); + + coco_problem_set_id(problem, "bbob-mixint_f%03lu_i%02lu_d%02lu", function, instance, dimension); + coco_problem_set_name(problem, "mixint(%s)", inner_problem_id); + + coco_free_memory(smallest_values_of_interest); + coco_free_memory(largest_values_of_interest); + + return problem; +} + +/** + * @brief Returns the problem from the bbob-mixint suite that corresponds to the given parameters. + * + * Uses large-scale bbob functions if dimension is equal or larger than the hard-coded dim_large_scale + * value (50). + * + * @param suite The COCO suite. + * @param function_idx Index of the function (starting from 0). + * @param dimension_idx Index of the dimension (starting from 0). + * @param instance_idx Index of the instance (starting from 0). + * @return The problem that corresponds to the given parameters. + */ +static coco_problem_t *suite_bbob_mixint_get_problem(coco_suite_t *suite, + const size_t function_idx, + const size_t dimension_idx, + const size_t instance_idx) { + + coco_problem_t *problem = NULL; + const size_t dim_large_scale = 50; /* Switch to large-scale functions for dimensions over 50 */ + + const size_t function = suite->functions[function_idx]; + const size_t dimension = suite->dimensions[dimension_idx]; + const size_t instance = suite->instances[instance_idx]; + + if (dimension < dim_large_scale) + problem = coco_get_bbob_mixint_problem(function, dimension, instance, coco_get_bbob_problem); + else + problem = coco_get_bbob_mixint_problem(function, dimension, instance, coco_get_largescale_problem); + + problem->suite_dep_function = function; + problem->suite_dep_instance = instance; + problem->suite_dep_index = coco_suite_encode_problem_index(suite, function_idx, dimension_idx, instance_idx); + + return problem; +} diff --git a/code-experiments/src/suite_biobj_mixint.c b/code-experiments/src/suite_biobj_mixint.c new file mode 100644 index 000000000..38b346d71 --- /dev/null +++ b/code-experiments/src/suite_biobj_mixint.c @@ -0,0 +1,203 @@ +/** + * @file suite_biobj_mixint.c + * @brief Implementation of a bi-objective mixed-integer suite. The functions are the same as those + * in the bbob-biobj-ext suite with 92 functions, but the large-scale implementations of the + * functions are used instead of the original ones for dimensions over 40. + */ + +#include "coco.h" +#include "mo_utilities.c" +#include "suite_biobj_utilities.c" +#include "suite_largescale.c" +#include "transform_vars_discretize.c" +#include "transform_obj_scale.c" +#include "suite_bbob_mixint.c" + +static coco_suite_t *coco_suite_allocate(const char *suite_name, + const size_t number_of_functions, + const size_t number_of_dimensions, + const size_t *dimensions, + const char *default_instances); +static void suite_biobj_new_inst_free(void *stuff); + +/** + * @brief Sets the dimensions and default instances for the bbob-biobj-mixint suite. + */ +static coco_suite_t *suite_biobj_mixint_initialize(void) { + + coco_suite_t *suite; + const size_t dimensions[] = { 5, 10, 20, 40, 80, 160 }; + + suite = coco_suite_allocate("bbob-biobj-mixint", 92, 6, dimensions, "instances: 1-15"); + suite->data_free_function = suite_biobj_new_inst_free; + + return suite; +} + +/** + * @brief Sets the instances associated with years for the bbob-biobj-mixint suites. + * + * @note The instances of the bi-objective suites generally do not changes with years. + */ +static const char *suite_biobj_mixint_get_instances_by_year(const int year) { + + (void) year; /* To get rid of compiler warnings */ + return "1-15"; +} + +/** + * @brief Creates and returns a mixed-integer bi-objective bbob problem without needing the actual + * bbob-mixint suite. + * + * The problem is constructed by first finding the underlying single-objective continuous problems, + * then discretizing the problems, then scaling them to adjust their difficulty and finally stacking + * them to get a bi-objective mixed-integer problem. + * + * @param function Function + * @param dimension Dimension + * @param instance Instance + * @param coco_get_problem_function The function that is used to access the single-objective problem. + * @param new_inst_data Structure containing information on new instance data. + * @param num_new_instances The number of new instances. + * @param dimensions An array of dimensions to take into account when creating new instances. + * @param num_dimensions The number of dimensions to take into account when creating new instances. + * @return The problem that corresponds to the given parameters. + */ +static coco_problem_t *coco_get_biobj_mixint_problem(const size_t function, + const size_t dimension, + const size_t instance, + const coco_get_problem_function_t coco_get_problem_function, + suite_biobj_new_inst_t **new_inst_data, + const size_t num_new_instances, + const size_t *dimensions, + const size_t num_dimensions) { + + coco_problem_t *problem_cont = NULL, *problem = NULL; + coco_problem_t *problem1, *problem2; + coco_problem_t *problem1_mixint, *problem2_mixint; + coco_problem_t *problem1_cont, *problem2_cont; + + double *smallest_values_of_interest = coco_allocate_vector(dimension); + double *largest_values_of_interest = coco_allocate_vector(dimension); + + size_t i, j; + size_t num_integer = dimension; + /* The cardinality of variables (0 = continuous variables should always come last) */ + const size_t variable_cardinality[] = { 2, 4, 8, 16, 0 }; + size_t function1, function2; + + if (dimension % 5 != 0) + coco_error("coco_get_biobj_mixint_problem(): dimension %lu not supported for suite_bbob_mixint", dimension); + + /* First, find the underlying single-objective continuous problems */ + problem_cont = coco_get_biobj_problem(function, dimension, instance, coco_get_problem_function, new_inst_data, + num_new_instances, dimensions, num_dimensions); + assert(problem_cont != NULL); + problem1_cont = ((coco_problem_stacked_data_t *) problem_cont->data)->problem1; + problem2_cont = ((coco_problem_stacked_data_t *) problem_cont->data)->problem2; + problem1 = coco_problem_duplicate(problem1_cont); + problem2 = coco_problem_duplicate(problem2_cont); + assert(problem1); + assert(problem2); + /* Copy also the data of the underlying problems and set all pointers in such a way that + * problem_cont can be safely freed */ + problem1->data = problem1_cont->data; + problem2->data = problem2_cont->data; + problem1_cont->data = NULL; + problem2_cont->data = NULL; + problem1_cont->problem_free_function = NULL; + problem2_cont->problem_free_function = NULL; + coco_problem_free(problem_cont); + + /* Set the ROI of the outer problem according to the given cardinality of variables and the ROI of the + * inner problems to [-4, 4] for variables that will be discretized */ + for (i = 0; i < dimension; i++) { + j = i / (dimension / 5); + if (variable_cardinality[j] == 0) { + /* Continuous variables */ + /* Outer problem */ + smallest_values_of_interest[i] = -100; + largest_values_of_interest[i] = 100; + if (num_integer == dimension) + num_integer = i; + } + else { + /* Outer problem */ + smallest_values_of_interest[i] = 0; + largest_values_of_interest[i] = (double)variable_cardinality[j] - 1; + /* Inner problems */ + problem1->smallest_values_of_interest[i] = -4; + problem1->largest_values_of_interest[i] = 4; + problem2->smallest_values_of_interest[i] = -4; + problem2->largest_values_of_interest[i] = 4; + } + } + + /* Second, discretize the single-objective problems */ + problem1_mixint = transform_vars_discretize(problem1, smallest_values_of_interest, + largest_values_of_interest, num_integer); + problem2_mixint = transform_vars_discretize(problem2, smallest_values_of_interest, + largest_values_of_interest, num_integer); + + /* Third, scale the objective values */ + function1 = coco_problem_get_suite_dep_function(problem1); + function2 = coco_problem_get_suite_dep_function(problem2); + problem1_mixint = transform_obj_scale(problem1_mixint, suite_bbob_mixint_scaling_factors[function1 - 1]); + problem2_mixint = transform_obj_scale(problem2_mixint, suite_bbob_mixint_scaling_factors[function2 - 1]); + + /* Fourth, combine the problems in a bi-objective mixed-integer problem */ + problem = coco_problem_stacked_allocate(problem1_mixint, problem2_mixint, smallest_values_of_interest, + largest_values_of_interest); + + /* Use the standard stacked problem_id as problem_name and construct a new problem_id */ + coco_problem_set_name(problem, problem->problem_id); + coco_problem_set_id(problem, "bbob-biobj-mixint_f%03lu_i%02lu_d%03lu", (unsigned long) function, + (unsigned long) instance, (unsigned long) dimension); + + /* Construct problem type */ + coco_problem_set_type(problem, "%s_%s", problem1->problem_type, problem2->problem_type); + + coco_free_memory(smallest_values_of_interest); + coco_free_memory(largest_values_of_interest); + + return problem; +} +/** + * @brief Returns the problem from the bbob-biobj-mixint suite that corresponds to the given parameters. + * + * Uses large-scale bbob functions if dimension is equal or larger than the hard-coded dim_large_scale + * value (50). + * + * @param suite The COCO suite. + * @param function_idx Index of the function (starting from 0). + * @param dimension_idx Index of the dimension (starting from 0). + * @param instance_idx Index of the instance (starting from 0). + * @return The problem that corresponds to the given parameters. + */ +static coco_problem_t *suite_biobj_mixint_get_problem(coco_suite_t *suite, + const size_t function_idx, + const size_t dimension_idx, + const size_t instance_idx) { + + coco_problem_t *problem = NULL; + suite_biobj_new_inst_t *new_inst_data = (suite_biobj_new_inst_t *) suite->data; + const size_t dim_large_scale = 50; /* Switch to large-scale functions for dimensions over 50 */ + + const size_t function = suite->functions[function_idx]; + const size_t dimension = suite->dimensions[dimension_idx]; + const size_t instance = suite->instances[instance_idx]; + + if (dimension < dim_large_scale) + problem = coco_get_biobj_mixint_problem(function, dimension, instance, coco_get_bbob_problem, + &new_inst_data, suite->number_of_instances, suite->dimensions, suite->number_of_dimensions); + else + problem = coco_get_biobj_mixint_problem(function, dimension, instance, coco_get_largescale_problem, + &new_inst_data, suite->number_of_instances, suite->dimensions, suite->number_of_dimensions); + + problem->suite_dep_function = function; + problem->suite_dep_instance = instance; + problem->suite_dep_index = coco_suite_encode_problem_index(suite, function_idx, dimension_idx, instance_idx); + + return problem; +} + diff --git a/code-experiments/src/suite_biobj_mixint_best_values_hyp.c b/code-experiments/src/suite_biobj_mixint_best_values_hyp.c new file mode 100644 index 000000000..4b76eb7ed --- /dev/null +++ b/code-experiments/src/suite_biobj_mixint_best_values_hyp.c @@ -0,0 +1,8294 @@ +/** + * @file suite_biobj_mixint_best_values_hyp.c + * + * @brief The best known hypervolume values for the bbob-biobj-mixint suite problems. + * + * @note TODO: Update the values (curently, they are all set to 1.0) + * + * @note Because this file is used for automatically retrieving the existing best hypervolume values for + * pre-processing purposes, its formatting should not be altered. This means that there must be exactly one + * string per line, the first string appearing on the next line after "static const char..." (no comments + * allowed in between). Nothing should be placed on the last line (line with };). + */ +static const char *suite_biobj_mixint_best_values_hyp[] = { + "bbob-biobj-mixint_f001_i01_d005 1.0", + "bbob-biobj-mixint_f001_i01_d010 1.0", + "bbob-biobj-mixint_f001_i01_d020 1.0", + "bbob-biobj-mixint_f001_i01_d040 1.0", + "bbob-biobj-mixint_f001_i01_d080 1.0", + "bbob-biobj-mixint_f001_i01_d160 1.0", + "bbob-biobj-mixint_f001_i02_d005 1.0", + "bbob-biobj-mixint_f001_i02_d010 1.0", + "bbob-biobj-mixint_f001_i02_d020 1.0", + "bbob-biobj-mixint_f001_i02_d040 1.0", + "bbob-biobj-mixint_f001_i02_d080 1.0", + "bbob-biobj-mixint_f001_i02_d160 1.0", + "bbob-biobj-mixint_f001_i03_d005 1.0", + "bbob-biobj-mixint_f001_i03_d010 1.0", + "bbob-biobj-mixint_f001_i03_d020 1.0", + "bbob-biobj-mixint_f001_i03_d040 1.0", + "bbob-biobj-mixint_f001_i03_d080 1.0", + "bbob-biobj-mixint_f001_i03_d160 1.0", + "bbob-biobj-mixint_f001_i04_d005 1.0", + "bbob-biobj-mixint_f001_i04_d010 1.0", + "bbob-biobj-mixint_f001_i04_d020 1.0", + "bbob-biobj-mixint_f001_i04_d040 1.0", + "bbob-biobj-mixint_f001_i04_d080 1.0", + "bbob-biobj-mixint_f001_i04_d160 1.0", + "bbob-biobj-mixint_f001_i05_d005 1.0", + "bbob-biobj-mixint_f001_i05_d010 1.0", + "bbob-biobj-mixint_f001_i05_d020 1.0", + "bbob-biobj-mixint_f001_i05_d040 1.0", + "bbob-biobj-mixint_f001_i05_d080 1.0", + "bbob-biobj-mixint_f001_i05_d160 1.0", + "bbob-biobj-mixint_f001_i06_d005 1.0", + "bbob-biobj-mixint_f001_i06_d010 1.0", + "bbob-biobj-mixint_f001_i06_d020 1.0", + "bbob-biobj-mixint_f001_i06_d040 1.0", + "bbob-biobj-mixint_f001_i06_d080 1.0", + "bbob-biobj-mixint_f001_i06_d160 1.0", + "bbob-biobj-mixint_f001_i07_d005 1.0", + "bbob-biobj-mixint_f001_i07_d010 1.0", + "bbob-biobj-mixint_f001_i07_d020 1.0", + "bbob-biobj-mixint_f001_i07_d040 1.0", + "bbob-biobj-mixint_f001_i07_d080 1.0", + "bbob-biobj-mixint_f001_i07_d160 1.0", + "bbob-biobj-mixint_f001_i08_d005 1.0", + "bbob-biobj-mixint_f001_i08_d010 1.0", + "bbob-biobj-mixint_f001_i08_d020 1.0", + "bbob-biobj-mixint_f001_i08_d040 1.0", + "bbob-biobj-mixint_f001_i08_d080 1.0", + "bbob-biobj-mixint_f001_i08_d160 1.0", + "bbob-biobj-mixint_f001_i09_d005 1.0", + "bbob-biobj-mixint_f001_i09_d010 1.0", + "bbob-biobj-mixint_f001_i09_d020 1.0", + "bbob-biobj-mixint_f001_i09_d040 1.0", + "bbob-biobj-mixint_f001_i09_d080 1.0", + "bbob-biobj-mixint_f001_i09_d160 1.0", + "bbob-biobj-mixint_f001_i10_d005 1.0", + "bbob-biobj-mixint_f001_i10_d010 1.0", + "bbob-biobj-mixint_f001_i10_d020 1.0", + "bbob-biobj-mixint_f001_i10_d040 1.0", + "bbob-biobj-mixint_f001_i10_d080 1.0", + "bbob-biobj-mixint_f001_i10_d160 1.0", + "bbob-biobj-mixint_f001_i11_d005 1.0", + "bbob-biobj-mixint_f001_i11_d010 1.0", + "bbob-biobj-mixint_f001_i11_d020 1.0", + "bbob-biobj-mixint_f001_i11_d040 1.0", + "bbob-biobj-mixint_f001_i11_d080 1.0", + "bbob-biobj-mixint_f001_i11_d160 1.0", + "bbob-biobj-mixint_f001_i12_d005 1.0", + "bbob-biobj-mixint_f001_i12_d010 1.0", + "bbob-biobj-mixint_f001_i12_d020 1.0", + "bbob-biobj-mixint_f001_i12_d040 1.0", + "bbob-biobj-mixint_f001_i12_d080 1.0", + "bbob-biobj-mixint_f001_i12_d160 1.0", + "bbob-biobj-mixint_f001_i13_d005 1.0", + "bbob-biobj-mixint_f001_i13_d010 1.0", + "bbob-biobj-mixint_f001_i13_d020 1.0", + "bbob-biobj-mixint_f001_i13_d040 1.0", + "bbob-biobj-mixint_f001_i13_d080 1.0", + "bbob-biobj-mixint_f001_i13_d160 1.0", + "bbob-biobj-mixint_f001_i14_d005 1.0", + "bbob-biobj-mixint_f001_i14_d010 1.0", + "bbob-biobj-mixint_f001_i14_d020 1.0", + "bbob-biobj-mixint_f001_i14_d040 1.0", + "bbob-biobj-mixint_f001_i14_d080 1.0", + "bbob-biobj-mixint_f001_i14_d160 1.0", + "bbob-biobj-mixint_f001_i15_d005 1.0", + "bbob-biobj-mixint_f001_i15_d010 1.0", + "bbob-biobj-mixint_f001_i15_d020 1.0", + "bbob-biobj-mixint_f001_i15_d040 1.0", + "bbob-biobj-mixint_f001_i15_d080 1.0", + "bbob-biobj-mixint_f001_i15_d160 1.0", + "bbob-biobj-mixint_f002_i01_d005 1.0", + "bbob-biobj-mixint_f002_i01_d010 1.0", + "bbob-biobj-mixint_f002_i01_d020 1.0", + "bbob-biobj-mixint_f002_i01_d040 1.0", + "bbob-biobj-mixint_f002_i01_d080 1.0", + "bbob-biobj-mixint_f002_i01_d160 1.0", + "bbob-biobj-mixint_f002_i02_d005 1.0", + "bbob-biobj-mixint_f002_i02_d010 1.0", + "bbob-biobj-mixint_f002_i02_d020 1.0", + "bbob-biobj-mixint_f002_i02_d040 1.0", + "bbob-biobj-mixint_f002_i02_d080 1.0", + "bbob-biobj-mixint_f002_i02_d160 1.0", + "bbob-biobj-mixint_f002_i03_d005 1.0", + "bbob-biobj-mixint_f002_i03_d010 1.0", + "bbob-biobj-mixint_f002_i03_d020 1.0", + "bbob-biobj-mixint_f002_i03_d040 1.0", + "bbob-biobj-mixint_f002_i03_d080 1.0", + "bbob-biobj-mixint_f002_i03_d160 1.0", + "bbob-biobj-mixint_f002_i04_d005 1.0", + "bbob-biobj-mixint_f002_i04_d010 1.0", + "bbob-biobj-mixint_f002_i04_d020 1.0", + "bbob-biobj-mixint_f002_i04_d040 1.0", + "bbob-biobj-mixint_f002_i04_d080 1.0", + "bbob-biobj-mixint_f002_i04_d160 1.0", + "bbob-biobj-mixint_f002_i05_d005 1.0", + "bbob-biobj-mixint_f002_i05_d010 1.0", + "bbob-biobj-mixint_f002_i05_d020 1.0", + "bbob-biobj-mixint_f002_i05_d040 1.0", + "bbob-biobj-mixint_f002_i05_d080 1.0", + "bbob-biobj-mixint_f002_i05_d160 1.0", + "bbob-biobj-mixint_f002_i06_d005 1.0", + "bbob-biobj-mixint_f002_i06_d010 1.0", + "bbob-biobj-mixint_f002_i06_d020 1.0", + "bbob-biobj-mixint_f002_i06_d040 1.0", + "bbob-biobj-mixint_f002_i06_d080 1.0", + "bbob-biobj-mixint_f002_i06_d160 1.0", + "bbob-biobj-mixint_f002_i07_d005 1.0", + "bbob-biobj-mixint_f002_i07_d010 1.0", + "bbob-biobj-mixint_f002_i07_d020 1.0", + "bbob-biobj-mixint_f002_i07_d040 1.0", + "bbob-biobj-mixint_f002_i07_d080 1.0", + "bbob-biobj-mixint_f002_i07_d160 1.0", + "bbob-biobj-mixint_f002_i08_d005 1.0", + "bbob-biobj-mixint_f002_i08_d010 1.0", + "bbob-biobj-mixint_f002_i08_d020 1.0", + "bbob-biobj-mixint_f002_i08_d040 1.0", + "bbob-biobj-mixint_f002_i08_d080 1.0", + "bbob-biobj-mixint_f002_i08_d160 1.0", + "bbob-biobj-mixint_f002_i09_d005 1.0", + "bbob-biobj-mixint_f002_i09_d010 1.0", + "bbob-biobj-mixint_f002_i09_d020 1.0", + "bbob-biobj-mixint_f002_i09_d040 1.0", + "bbob-biobj-mixint_f002_i09_d080 1.0", + "bbob-biobj-mixint_f002_i09_d160 1.0", + "bbob-biobj-mixint_f002_i10_d005 1.0", + "bbob-biobj-mixint_f002_i10_d010 1.0", + "bbob-biobj-mixint_f002_i10_d020 1.0", + "bbob-biobj-mixint_f002_i10_d040 1.0", + "bbob-biobj-mixint_f002_i10_d080 1.0", + "bbob-biobj-mixint_f002_i10_d160 1.0", + "bbob-biobj-mixint_f002_i11_d005 1.0", + "bbob-biobj-mixint_f002_i11_d010 1.0", + "bbob-biobj-mixint_f002_i11_d020 1.0", + "bbob-biobj-mixint_f002_i11_d040 1.0", + "bbob-biobj-mixint_f002_i11_d080 1.0", + "bbob-biobj-mixint_f002_i11_d160 1.0", + "bbob-biobj-mixint_f002_i12_d005 1.0", + "bbob-biobj-mixint_f002_i12_d010 1.0", + "bbob-biobj-mixint_f002_i12_d020 1.0", + "bbob-biobj-mixint_f002_i12_d040 1.0", + "bbob-biobj-mixint_f002_i12_d080 1.0", + "bbob-biobj-mixint_f002_i12_d160 1.0", + "bbob-biobj-mixint_f002_i13_d005 1.0", + "bbob-biobj-mixint_f002_i13_d010 1.0", + "bbob-biobj-mixint_f002_i13_d020 1.0", + "bbob-biobj-mixint_f002_i13_d040 1.0", + "bbob-biobj-mixint_f002_i13_d080 1.0", + "bbob-biobj-mixint_f002_i13_d160 1.0", + "bbob-biobj-mixint_f002_i14_d005 1.0", + "bbob-biobj-mixint_f002_i14_d010 1.0", + "bbob-biobj-mixint_f002_i14_d020 1.0", + "bbob-biobj-mixint_f002_i14_d040 1.0", + "bbob-biobj-mixint_f002_i14_d080 1.0", + "bbob-biobj-mixint_f002_i14_d160 1.0", + "bbob-biobj-mixint_f002_i15_d005 1.0", + "bbob-biobj-mixint_f002_i15_d010 1.0", + "bbob-biobj-mixint_f002_i15_d020 1.0", + "bbob-biobj-mixint_f002_i15_d040 1.0", + "bbob-biobj-mixint_f002_i15_d080 1.0", + "bbob-biobj-mixint_f002_i15_d160 1.0", + "bbob-biobj-mixint_f003_i01_d005 1.0", + "bbob-biobj-mixint_f003_i01_d010 1.0", + "bbob-biobj-mixint_f003_i01_d020 1.0", + "bbob-biobj-mixint_f003_i01_d040 1.0", + "bbob-biobj-mixint_f003_i01_d080 1.0", + "bbob-biobj-mixint_f003_i01_d160 1.0", + "bbob-biobj-mixint_f003_i02_d005 1.0", + "bbob-biobj-mixint_f003_i02_d010 1.0", + "bbob-biobj-mixint_f003_i02_d020 1.0", + "bbob-biobj-mixint_f003_i02_d040 1.0", + "bbob-biobj-mixint_f003_i02_d080 1.0", + "bbob-biobj-mixint_f003_i02_d160 1.0", + "bbob-biobj-mixint_f003_i03_d005 1.0", + "bbob-biobj-mixint_f003_i03_d010 1.0", + "bbob-biobj-mixint_f003_i03_d020 1.0", + "bbob-biobj-mixint_f003_i03_d040 1.0", + "bbob-biobj-mixint_f003_i03_d080 1.0", + "bbob-biobj-mixint_f003_i03_d160 1.0", + "bbob-biobj-mixint_f003_i04_d005 1.0", + "bbob-biobj-mixint_f003_i04_d010 1.0", + "bbob-biobj-mixint_f003_i04_d020 1.0", + "bbob-biobj-mixint_f003_i04_d040 1.0", + "bbob-biobj-mixint_f003_i04_d080 1.0", + "bbob-biobj-mixint_f003_i04_d160 1.0", + "bbob-biobj-mixint_f003_i05_d005 1.0", + "bbob-biobj-mixint_f003_i05_d010 1.0", + "bbob-biobj-mixint_f003_i05_d020 1.0", + "bbob-biobj-mixint_f003_i05_d040 1.0", + "bbob-biobj-mixint_f003_i05_d080 1.0", + "bbob-biobj-mixint_f003_i05_d160 1.0", + "bbob-biobj-mixint_f003_i06_d005 1.0", + "bbob-biobj-mixint_f003_i06_d010 1.0", + "bbob-biobj-mixint_f003_i06_d020 1.0", + "bbob-biobj-mixint_f003_i06_d040 1.0", + "bbob-biobj-mixint_f003_i06_d080 1.0", + "bbob-biobj-mixint_f003_i06_d160 1.0", + "bbob-biobj-mixint_f003_i07_d005 1.0", + "bbob-biobj-mixint_f003_i07_d010 1.0", + "bbob-biobj-mixint_f003_i07_d020 1.0", + "bbob-biobj-mixint_f003_i07_d040 1.0", + "bbob-biobj-mixint_f003_i07_d080 1.0", + "bbob-biobj-mixint_f003_i07_d160 1.0", + "bbob-biobj-mixint_f003_i08_d005 1.0", + "bbob-biobj-mixint_f003_i08_d010 1.0", + "bbob-biobj-mixint_f003_i08_d020 1.0", + "bbob-biobj-mixint_f003_i08_d040 1.0", + "bbob-biobj-mixint_f003_i08_d080 1.0", + "bbob-biobj-mixint_f003_i08_d160 1.0", + "bbob-biobj-mixint_f003_i09_d005 1.0", + "bbob-biobj-mixint_f003_i09_d010 1.0", + "bbob-biobj-mixint_f003_i09_d020 1.0", + "bbob-biobj-mixint_f003_i09_d040 1.0", + "bbob-biobj-mixint_f003_i09_d080 1.0", + "bbob-biobj-mixint_f003_i09_d160 1.0", + "bbob-biobj-mixint_f003_i10_d005 1.0", + "bbob-biobj-mixint_f003_i10_d010 1.0", + "bbob-biobj-mixint_f003_i10_d020 1.0", + "bbob-biobj-mixint_f003_i10_d040 1.0", + "bbob-biobj-mixint_f003_i10_d080 1.0", + "bbob-biobj-mixint_f003_i10_d160 1.0", + "bbob-biobj-mixint_f003_i11_d005 1.0", + "bbob-biobj-mixint_f003_i11_d010 1.0", + "bbob-biobj-mixint_f003_i11_d020 1.0", + "bbob-biobj-mixint_f003_i11_d040 1.0", + "bbob-biobj-mixint_f003_i11_d080 1.0", + "bbob-biobj-mixint_f003_i11_d160 1.0", + "bbob-biobj-mixint_f003_i12_d005 1.0", + "bbob-biobj-mixint_f003_i12_d010 1.0", + "bbob-biobj-mixint_f003_i12_d020 1.0", + "bbob-biobj-mixint_f003_i12_d040 1.0", + "bbob-biobj-mixint_f003_i12_d080 1.0", + "bbob-biobj-mixint_f003_i12_d160 1.0", + "bbob-biobj-mixint_f003_i13_d005 1.0", + "bbob-biobj-mixint_f003_i13_d010 1.0", + "bbob-biobj-mixint_f003_i13_d020 1.0", + "bbob-biobj-mixint_f003_i13_d040 1.0", + "bbob-biobj-mixint_f003_i13_d080 1.0", + "bbob-biobj-mixint_f003_i13_d160 1.0", + "bbob-biobj-mixint_f003_i14_d005 1.0", + "bbob-biobj-mixint_f003_i14_d010 1.0", + "bbob-biobj-mixint_f003_i14_d020 1.0", + "bbob-biobj-mixint_f003_i14_d040 1.0", + "bbob-biobj-mixint_f003_i14_d080 1.0", + "bbob-biobj-mixint_f003_i14_d160 1.0", + "bbob-biobj-mixint_f003_i15_d005 1.0", + "bbob-biobj-mixint_f003_i15_d010 1.0", + "bbob-biobj-mixint_f003_i15_d020 1.0", + "bbob-biobj-mixint_f003_i15_d040 1.0", + "bbob-biobj-mixint_f003_i15_d080 1.0", + "bbob-biobj-mixint_f003_i15_d160 1.0", + "bbob-biobj-mixint_f004_i01_d005 1.0", + "bbob-biobj-mixint_f004_i01_d010 1.0", + "bbob-biobj-mixint_f004_i01_d020 1.0", + "bbob-biobj-mixint_f004_i01_d040 1.0", + "bbob-biobj-mixint_f004_i01_d080 1.0", + "bbob-biobj-mixint_f004_i01_d160 1.0", + "bbob-biobj-mixint_f004_i02_d005 1.0", + "bbob-biobj-mixint_f004_i02_d010 1.0", + "bbob-biobj-mixint_f004_i02_d020 1.0", + "bbob-biobj-mixint_f004_i02_d040 1.0", + "bbob-biobj-mixint_f004_i02_d080 1.0", + "bbob-biobj-mixint_f004_i02_d160 1.0", + "bbob-biobj-mixint_f004_i03_d005 1.0", + "bbob-biobj-mixint_f004_i03_d010 1.0", + "bbob-biobj-mixint_f004_i03_d020 1.0", + "bbob-biobj-mixint_f004_i03_d040 1.0", + "bbob-biobj-mixint_f004_i03_d080 1.0", + "bbob-biobj-mixint_f004_i03_d160 1.0", + "bbob-biobj-mixint_f004_i04_d005 1.0", + "bbob-biobj-mixint_f004_i04_d010 1.0", + "bbob-biobj-mixint_f004_i04_d020 1.0", + "bbob-biobj-mixint_f004_i04_d040 1.0", + "bbob-biobj-mixint_f004_i04_d080 1.0", + "bbob-biobj-mixint_f004_i04_d160 1.0", + "bbob-biobj-mixint_f004_i05_d005 1.0", + "bbob-biobj-mixint_f004_i05_d010 1.0", + "bbob-biobj-mixint_f004_i05_d020 1.0", + "bbob-biobj-mixint_f004_i05_d040 1.0", + "bbob-biobj-mixint_f004_i05_d080 1.0", + "bbob-biobj-mixint_f004_i05_d160 1.0", + "bbob-biobj-mixint_f004_i06_d005 1.0", + "bbob-biobj-mixint_f004_i06_d010 1.0", + "bbob-biobj-mixint_f004_i06_d020 1.0", + "bbob-biobj-mixint_f004_i06_d040 1.0", + "bbob-biobj-mixint_f004_i06_d080 1.0", + "bbob-biobj-mixint_f004_i06_d160 1.0", + "bbob-biobj-mixint_f004_i07_d005 1.0", + "bbob-biobj-mixint_f004_i07_d010 1.0", + "bbob-biobj-mixint_f004_i07_d020 1.0", + "bbob-biobj-mixint_f004_i07_d040 1.0", + "bbob-biobj-mixint_f004_i07_d080 1.0", + "bbob-biobj-mixint_f004_i07_d160 1.0", + "bbob-biobj-mixint_f004_i08_d005 1.0", + "bbob-biobj-mixint_f004_i08_d010 1.0", + "bbob-biobj-mixint_f004_i08_d020 1.0", + "bbob-biobj-mixint_f004_i08_d040 1.0", + "bbob-biobj-mixint_f004_i08_d080 1.0", + "bbob-biobj-mixint_f004_i08_d160 1.0", + "bbob-biobj-mixint_f004_i09_d005 1.0", + "bbob-biobj-mixint_f004_i09_d010 1.0", + "bbob-biobj-mixint_f004_i09_d020 1.0", + "bbob-biobj-mixint_f004_i09_d040 1.0", + "bbob-biobj-mixint_f004_i09_d080 1.0", + "bbob-biobj-mixint_f004_i09_d160 1.0", + "bbob-biobj-mixint_f004_i10_d005 1.0", + "bbob-biobj-mixint_f004_i10_d010 1.0", + "bbob-biobj-mixint_f004_i10_d020 1.0", + "bbob-biobj-mixint_f004_i10_d040 1.0", + "bbob-biobj-mixint_f004_i10_d080 1.0", + "bbob-biobj-mixint_f004_i10_d160 1.0", + "bbob-biobj-mixint_f004_i11_d005 1.0", + "bbob-biobj-mixint_f004_i11_d010 1.0", + "bbob-biobj-mixint_f004_i11_d020 1.0", + "bbob-biobj-mixint_f004_i11_d040 1.0", + "bbob-biobj-mixint_f004_i11_d080 1.0", + "bbob-biobj-mixint_f004_i11_d160 1.0", + "bbob-biobj-mixint_f004_i12_d005 1.0", + "bbob-biobj-mixint_f004_i12_d010 1.0", + "bbob-biobj-mixint_f004_i12_d020 1.0", + "bbob-biobj-mixint_f004_i12_d040 1.0", + "bbob-biobj-mixint_f004_i12_d080 1.0", + "bbob-biobj-mixint_f004_i12_d160 1.0", + "bbob-biobj-mixint_f004_i13_d005 1.0", + "bbob-biobj-mixint_f004_i13_d010 1.0", + "bbob-biobj-mixint_f004_i13_d020 1.0", + "bbob-biobj-mixint_f004_i13_d040 1.0", + "bbob-biobj-mixint_f004_i13_d080 1.0", + "bbob-biobj-mixint_f004_i13_d160 1.0", + "bbob-biobj-mixint_f004_i14_d005 1.0", + "bbob-biobj-mixint_f004_i14_d010 1.0", + "bbob-biobj-mixint_f004_i14_d020 1.0", + "bbob-biobj-mixint_f004_i14_d040 1.0", + "bbob-biobj-mixint_f004_i14_d080 1.0", + "bbob-biobj-mixint_f004_i14_d160 1.0", + "bbob-biobj-mixint_f004_i15_d005 1.0", + "bbob-biobj-mixint_f004_i15_d010 1.0", + "bbob-biobj-mixint_f004_i15_d020 1.0", + "bbob-biobj-mixint_f004_i15_d040 1.0", + "bbob-biobj-mixint_f004_i15_d080 1.0", + "bbob-biobj-mixint_f004_i15_d160 1.0", + "bbob-biobj-mixint_f005_i01_d005 1.0", + "bbob-biobj-mixint_f005_i01_d010 1.0", + "bbob-biobj-mixint_f005_i01_d020 1.0", + "bbob-biobj-mixint_f005_i01_d040 1.0", + "bbob-biobj-mixint_f005_i01_d080 1.0", + "bbob-biobj-mixint_f005_i01_d160 1.0", + "bbob-biobj-mixint_f005_i02_d005 1.0", + "bbob-biobj-mixint_f005_i02_d010 1.0", + "bbob-biobj-mixint_f005_i02_d020 1.0", + "bbob-biobj-mixint_f005_i02_d040 1.0", + "bbob-biobj-mixint_f005_i02_d080 1.0", + "bbob-biobj-mixint_f005_i02_d160 1.0", + "bbob-biobj-mixint_f005_i03_d005 1.0", + "bbob-biobj-mixint_f005_i03_d010 1.0", + "bbob-biobj-mixint_f005_i03_d020 1.0", + "bbob-biobj-mixint_f005_i03_d040 1.0", + "bbob-biobj-mixint_f005_i03_d080 1.0", + "bbob-biobj-mixint_f005_i03_d160 1.0", + "bbob-biobj-mixint_f005_i04_d005 1.0", + "bbob-biobj-mixint_f005_i04_d010 1.0", + "bbob-biobj-mixint_f005_i04_d020 1.0", + "bbob-biobj-mixint_f005_i04_d040 1.0", + "bbob-biobj-mixint_f005_i04_d080 1.0", + "bbob-biobj-mixint_f005_i04_d160 1.0", + "bbob-biobj-mixint_f005_i05_d005 1.0", + "bbob-biobj-mixint_f005_i05_d010 1.0", + "bbob-biobj-mixint_f005_i05_d020 1.0", + "bbob-biobj-mixint_f005_i05_d040 1.0", + "bbob-biobj-mixint_f005_i05_d080 1.0", + "bbob-biobj-mixint_f005_i05_d160 1.0", + "bbob-biobj-mixint_f005_i06_d005 1.0", + "bbob-biobj-mixint_f005_i06_d010 1.0", + "bbob-biobj-mixint_f005_i06_d020 1.0", + "bbob-biobj-mixint_f005_i06_d040 1.0", + "bbob-biobj-mixint_f005_i06_d080 1.0", + "bbob-biobj-mixint_f005_i06_d160 1.0", + "bbob-biobj-mixint_f005_i07_d005 1.0", + "bbob-biobj-mixint_f005_i07_d010 1.0", + "bbob-biobj-mixint_f005_i07_d020 1.0", + "bbob-biobj-mixint_f005_i07_d040 1.0", + "bbob-biobj-mixint_f005_i07_d080 1.0", + "bbob-biobj-mixint_f005_i07_d160 1.0", + "bbob-biobj-mixint_f005_i08_d005 1.0", + "bbob-biobj-mixint_f005_i08_d010 1.0", + "bbob-biobj-mixint_f005_i08_d020 1.0", + "bbob-biobj-mixint_f005_i08_d040 1.0", + "bbob-biobj-mixint_f005_i08_d080 1.0", + "bbob-biobj-mixint_f005_i08_d160 1.0", + "bbob-biobj-mixint_f005_i09_d005 1.0", + "bbob-biobj-mixint_f005_i09_d010 1.0", + "bbob-biobj-mixint_f005_i09_d020 1.0", + "bbob-biobj-mixint_f005_i09_d040 1.0", + "bbob-biobj-mixint_f005_i09_d080 1.0", + "bbob-biobj-mixint_f005_i09_d160 1.0", + "bbob-biobj-mixint_f005_i10_d005 1.0", + "bbob-biobj-mixint_f005_i10_d010 1.0", + "bbob-biobj-mixint_f005_i10_d020 1.0", + "bbob-biobj-mixint_f005_i10_d040 1.0", + "bbob-biobj-mixint_f005_i10_d080 1.0", + "bbob-biobj-mixint_f005_i10_d160 1.0", + "bbob-biobj-mixint_f005_i11_d005 1.0", + "bbob-biobj-mixint_f005_i11_d010 1.0", + "bbob-biobj-mixint_f005_i11_d020 1.0", + "bbob-biobj-mixint_f005_i11_d040 1.0", + "bbob-biobj-mixint_f005_i11_d080 1.0", + "bbob-biobj-mixint_f005_i11_d160 1.0", + "bbob-biobj-mixint_f005_i12_d005 1.0", + "bbob-biobj-mixint_f005_i12_d010 1.0", + "bbob-biobj-mixint_f005_i12_d020 1.0", + "bbob-biobj-mixint_f005_i12_d040 1.0", + "bbob-biobj-mixint_f005_i12_d080 1.0", + "bbob-biobj-mixint_f005_i12_d160 1.0", + "bbob-biobj-mixint_f005_i13_d005 1.0", + "bbob-biobj-mixint_f005_i13_d010 1.0", + "bbob-biobj-mixint_f005_i13_d020 1.0", + "bbob-biobj-mixint_f005_i13_d040 1.0", + "bbob-biobj-mixint_f005_i13_d080 1.0", + "bbob-biobj-mixint_f005_i13_d160 1.0", + "bbob-biobj-mixint_f005_i14_d005 1.0", + "bbob-biobj-mixint_f005_i14_d010 1.0", + "bbob-biobj-mixint_f005_i14_d020 1.0", + "bbob-biobj-mixint_f005_i14_d040 1.0", + "bbob-biobj-mixint_f005_i14_d080 1.0", + "bbob-biobj-mixint_f005_i14_d160 1.0", + "bbob-biobj-mixint_f005_i15_d005 1.0", + "bbob-biobj-mixint_f005_i15_d010 1.0", + "bbob-biobj-mixint_f005_i15_d020 1.0", + "bbob-biobj-mixint_f005_i15_d040 1.0", + "bbob-biobj-mixint_f005_i15_d080 1.0", + "bbob-biobj-mixint_f005_i15_d160 1.0", + "bbob-biobj-mixint_f006_i01_d005 1.0", + "bbob-biobj-mixint_f006_i01_d010 1.0", + "bbob-biobj-mixint_f006_i01_d020 1.0", + "bbob-biobj-mixint_f006_i01_d040 1.0", + "bbob-biobj-mixint_f006_i01_d080 1.0", + "bbob-biobj-mixint_f006_i01_d160 1.0", + "bbob-biobj-mixint_f006_i02_d005 1.0", + "bbob-biobj-mixint_f006_i02_d010 1.0", + "bbob-biobj-mixint_f006_i02_d020 1.0", + "bbob-biobj-mixint_f006_i02_d040 1.0", + "bbob-biobj-mixint_f006_i02_d080 1.0", + "bbob-biobj-mixint_f006_i02_d160 1.0", + "bbob-biobj-mixint_f006_i03_d005 1.0", + "bbob-biobj-mixint_f006_i03_d010 1.0", + "bbob-biobj-mixint_f006_i03_d020 1.0", + "bbob-biobj-mixint_f006_i03_d040 1.0", + "bbob-biobj-mixint_f006_i03_d080 1.0", + "bbob-biobj-mixint_f006_i03_d160 1.0", + "bbob-biobj-mixint_f006_i04_d005 1.0", + "bbob-biobj-mixint_f006_i04_d010 1.0", + "bbob-biobj-mixint_f006_i04_d020 1.0", + "bbob-biobj-mixint_f006_i04_d040 1.0", + "bbob-biobj-mixint_f006_i04_d080 1.0", + "bbob-biobj-mixint_f006_i04_d160 1.0", + "bbob-biobj-mixint_f006_i05_d005 1.0", + "bbob-biobj-mixint_f006_i05_d010 1.0", + "bbob-biobj-mixint_f006_i05_d020 1.0", + "bbob-biobj-mixint_f006_i05_d040 1.0", + "bbob-biobj-mixint_f006_i05_d080 1.0", + "bbob-biobj-mixint_f006_i05_d160 1.0", + "bbob-biobj-mixint_f006_i06_d005 1.0", + "bbob-biobj-mixint_f006_i06_d010 1.0", + "bbob-biobj-mixint_f006_i06_d020 1.0", + "bbob-biobj-mixint_f006_i06_d040 1.0", + "bbob-biobj-mixint_f006_i06_d080 1.0", + "bbob-biobj-mixint_f006_i06_d160 1.0", + "bbob-biobj-mixint_f006_i07_d005 1.0", + "bbob-biobj-mixint_f006_i07_d010 1.0", + "bbob-biobj-mixint_f006_i07_d020 1.0", + "bbob-biobj-mixint_f006_i07_d040 1.0", + "bbob-biobj-mixint_f006_i07_d080 1.0", + "bbob-biobj-mixint_f006_i07_d160 1.0", + "bbob-biobj-mixint_f006_i08_d005 1.0", + "bbob-biobj-mixint_f006_i08_d010 1.0", + "bbob-biobj-mixint_f006_i08_d020 1.0", + "bbob-biobj-mixint_f006_i08_d040 1.0", + "bbob-biobj-mixint_f006_i08_d080 1.0", + "bbob-biobj-mixint_f006_i08_d160 1.0", + "bbob-biobj-mixint_f006_i09_d005 1.0", + "bbob-biobj-mixint_f006_i09_d010 1.0", + "bbob-biobj-mixint_f006_i09_d020 1.0", + "bbob-biobj-mixint_f006_i09_d040 1.0", + "bbob-biobj-mixint_f006_i09_d080 1.0", + "bbob-biobj-mixint_f006_i09_d160 1.0", + "bbob-biobj-mixint_f006_i10_d005 1.0", + "bbob-biobj-mixint_f006_i10_d010 1.0", + "bbob-biobj-mixint_f006_i10_d020 1.0", + "bbob-biobj-mixint_f006_i10_d040 1.0", + "bbob-biobj-mixint_f006_i10_d080 1.0", + "bbob-biobj-mixint_f006_i10_d160 1.0", + "bbob-biobj-mixint_f006_i11_d005 1.0", + "bbob-biobj-mixint_f006_i11_d010 1.0", + "bbob-biobj-mixint_f006_i11_d020 1.0", + "bbob-biobj-mixint_f006_i11_d040 1.0", + "bbob-biobj-mixint_f006_i11_d080 1.0", + "bbob-biobj-mixint_f006_i11_d160 1.0", + "bbob-biobj-mixint_f006_i12_d005 1.0", + "bbob-biobj-mixint_f006_i12_d010 1.0", + "bbob-biobj-mixint_f006_i12_d020 1.0", + "bbob-biobj-mixint_f006_i12_d040 1.0", + "bbob-biobj-mixint_f006_i12_d080 1.0", + "bbob-biobj-mixint_f006_i12_d160 1.0", + "bbob-biobj-mixint_f006_i13_d005 1.0", + "bbob-biobj-mixint_f006_i13_d010 1.0", + "bbob-biobj-mixint_f006_i13_d020 1.0", + "bbob-biobj-mixint_f006_i13_d040 1.0", + "bbob-biobj-mixint_f006_i13_d080 1.0", + "bbob-biobj-mixint_f006_i13_d160 1.0", + "bbob-biobj-mixint_f006_i14_d005 1.0", + "bbob-biobj-mixint_f006_i14_d010 1.0", + "bbob-biobj-mixint_f006_i14_d020 1.0", + "bbob-biobj-mixint_f006_i14_d040 1.0", + "bbob-biobj-mixint_f006_i14_d080 1.0", + "bbob-biobj-mixint_f006_i14_d160 1.0", + "bbob-biobj-mixint_f006_i15_d005 1.0", + "bbob-biobj-mixint_f006_i15_d010 1.0", + "bbob-biobj-mixint_f006_i15_d020 1.0", + "bbob-biobj-mixint_f006_i15_d040 1.0", + "bbob-biobj-mixint_f006_i15_d080 1.0", + "bbob-biobj-mixint_f006_i15_d160 1.0", + "bbob-biobj-mixint_f007_i01_d005 1.0", + "bbob-biobj-mixint_f007_i01_d010 1.0", + "bbob-biobj-mixint_f007_i01_d020 1.0", + "bbob-biobj-mixint_f007_i01_d040 1.0", + "bbob-biobj-mixint_f007_i01_d080 1.0", + "bbob-biobj-mixint_f007_i01_d160 1.0", + "bbob-biobj-mixint_f007_i02_d005 1.0", + "bbob-biobj-mixint_f007_i02_d010 1.0", + "bbob-biobj-mixint_f007_i02_d020 1.0", + "bbob-biobj-mixint_f007_i02_d040 1.0", + "bbob-biobj-mixint_f007_i02_d080 1.0", + "bbob-biobj-mixint_f007_i02_d160 1.0", + "bbob-biobj-mixint_f007_i03_d005 1.0", + "bbob-biobj-mixint_f007_i03_d010 1.0", + "bbob-biobj-mixint_f007_i03_d020 1.0", + "bbob-biobj-mixint_f007_i03_d040 1.0", + "bbob-biobj-mixint_f007_i03_d080 1.0", + "bbob-biobj-mixint_f007_i03_d160 1.0", + "bbob-biobj-mixint_f007_i04_d005 1.0", + "bbob-biobj-mixint_f007_i04_d010 1.0", + "bbob-biobj-mixint_f007_i04_d020 1.0", + "bbob-biobj-mixint_f007_i04_d040 1.0", + "bbob-biobj-mixint_f007_i04_d080 1.0", + "bbob-biobj-mixint_f007_i04_d160 1.0", + "bbob-biobj-mixint_f007_i05_d005 1.0", + "bbob-biobj-mixint_f007_i05_d010 1.0", + "bbob-biobj-mixint_f007_i05_d020 1.0", + "bbob-biobj-mixint_f007_i05_d040 1.0", + "bbob-biobj-mixint_f007_i05_d080 1.0", + "bbob-biobj-mixint_f007_i05_d160 1.0", + "bbob-biobj-mixint_f007_i06_d005 1.0", + "bbob-biobj-mixint_f007_i06_d010 1.0", + "bbob-biobj-mixint_f007_i06_d020 1.0", + "bbob-biobj-mixint_f007_i06_d040 1.0", + "bbob-biobj-mixint_f007_i06_d080 1.0", + "bbob-biobj-mixint_f007_i06_d160 1.0", + "bbob-biobj-mixint_f007_i07_d005 1.0", + "bbob-biobj-mixint_f007_i07_d010 1.0", + "bbob-biobj-mixint_f007_i07_d020 1.0", + "bbob-biobj-mixint_f007_i07_d040 1.0", + "bbob-biobj-mixint_f007_i07_d080 1.0", + "bbob-biobj-mixint_f007_i07_d160 1.0", + "bbob-biobj-mixint_f007_i08_d005 1.0", + "bbob-biobj-mixint_f007_i08_d010 1.0", + "bbob-biobj-mixint_f007_i08_d020 1.0", + "bbob-biobj-mixint_f007_i08_d040 1.0", + "bbob-biobj-mixint_f007_i08_d080 1.0", + "bbob-biobj-mixint_f007_i08_d160 1.0", + "bbob-biobj-mixint_f007_i09_d005 1.0", + "bbob-biobj-mixint_f007_i09_d010 1.0", + "bbob-biobj-mixint_f007_i09_d020 1.0", + "bbob-biobj-mixint_f007_i09_d040 1.0", + "bbob-biobj-mixint_f007_i09_d080 1.0", + "bbob-biobj-mixint_f007_i09_d160 1.0", + "bbob-biobj-mixint_f007_i10_d005 1.0", + "bbob-biobj-mixint_f007_i10_d010 1.0", + "bbob-biobj-mixint_f007_i10_d020 1.0", + "bbob-biobj-mixint_f007_i10_d040 1.0", + "bbob-biobj-mixint_f007_i10_d080 1.0", + "bbob-biobj-mixint_f007_i10_d160 1.0", + "bbob-biobj-mixint_f007_i11_d005 1.0", + "bbob-biobj-mixint_f007_i11_d010 1.0", + "bbob-biobj-mixint_f007_i11_d020 1.0", + "bbob-biobj-mixint_f007_i11_d040 1.0", + "bbob-biobj-mixint_f007_i11_d080 1.0", + "bbob-biobj-mixint_f007_i11_d160 1.0", + "bbob-biobj-mixint_f007_i12_d005 1.0", + "bbob-biobj-mixint_f007_i12_d010 1.0", + "bbob-biobj-mixint_f007_i12_d020 1.0", + "bbob-biobj-mixint_f007_i12_d040 1.0", + "bbob-biobj-mixint_f007_i12_d080 1.0", + "bbob-biobj-mixint_f007_i12_d160 1.0", + "bbob-biobj-mixint_f007_i13_d005 1.0", + "bbob-biobj-mixint_f007_i13_d010 1.0", + "bbob-biobj-mixint_f007_i13_d020 1.0", + "bbob-biobj-mixint_f007_i13_d040 1.0", + "bbob-biobj-mixint_f007_i13_d080 1.0", + "bbob-biobj-mixint_f007_i13_d160 1.0", + "bbob-biobj-mixint_f007_i14_d005 1.0", + "bbob-biobj-mixint_f007_i14_d010 1.0", + "bbob-biobj-mixint_f007_i14_d020 1.0", + "bbob-biobj-mixint_f007_i14_d040 1.0", + "bbob-biobj-mixint_f007_i14_d080 1.0", + "bbob-biobj-mixint_f007_i14_d160 1.0", + "bbob-biobj-mixint_f007_i15_d005 1.0", + "bbob-biobj-mixint_f007_i15_d010 1.0", + "bbob-biobj-mixint_f007_i15_d020 1.0", + "bbob-biobj-mixint_f007_i15_d040 1.0", + "bbob-biobj-mixint_f007_i15_d080 1.0", + "bbob-biobj-mixint_f007_i15_d160 1.0", + "bbob-biobj-mixint_f008_i01_d005 1.0", + "bbob-biobj-mixint_f008_i01_d010 1.0", + "bbob-biobj-mixint_f008_i01_d020 1.0", + "bbob-biobj-mixint_f008_i01_d040 1.0", + "bbob-biobj-mixint_f008_i01_d080 1.0", + "bbob-biobj-mixint_f008_i01_d160 1.0", + "bbob-biobj-mixint_f008_i02_d005 1.0", + "bbob-biobj-mixint_f008_i02_d010 1.0", + "bbob-biobj-mixint_f008_i02_d020 1.0", + "bbob-biobj-mixint_f008_i02_d040 1.0", + "bbob-biobj-mixint_f008_i02_d080 1.0", + "bbob-biobj-mixint_f008_i02_d160 1.0", + "bbob-biobj-mixint_f008_i03_d005 1.0", + "bbob-biobj-mixint_f008_i03_d010 1.0", + "bbob-biobj-mixint_f008_i03_d020 1.0", + "bbob-biobj-mixint_f008_i03_d040 1.0", + "bbob-biobj-mixint_f008_i03_d080 1.0", + "bbob-biobj-mixint_f008_i03_d160 1.0", + "bbob-biobj-mixint_f008_i04_d005 1.0", + "bbob-biobj-mixint_f008_i04_d010 1.0", + "bbob-biobj-mixint_f008_i04_d020 1.0", + "bbob-biobj-mixint_f008_i04_d040 1.0", + "bbob-biobj-mixint_f008_i04_d080 1.0", + "bbob-biobj-mixint_f008_i04_d160 1.0", + "bbob-biobj-mixint_f008_i05_d005 1.0", + "bbob-biobj-mixint_f008_i05_d010 1.0", + "bbob-biobj-mixint_f008_i05_d020 1.0", + "bbob-biobj-mixint_f008_i05_d040 1.0", + "bbob-biobj-mixint_f008_i05_d080 1.0", + "bbob-biobj-mixint_f008_i05_d160 1.0", + "bbob-biobj-mixint_f008_i06_d005 1.0", + "bbob-biobj-mixint_f008_i06_d010 1.0", + "bbob-biobj-mixint_f008_i06_d020 1.0", + "bbob-biobj-mixint_f008_i06_d040 1.0", + "bbob-biobj-mixint_f008_i06_d080 1.0", + "bbob-biobj-mixint_f008_i06_d160 1.0", + "bbob-biobj-mixint_f008_i07_d005 1.0", + "bbob-biobj-mixint_f008_i07_d010 1.0", + "bbob-biobj-mixint_f008_i07_d020 1.0", + "bbob-biobj-mixint_f008_i07_d040 1.0", + "bbob-biobj-mixint_f008_i07_d080 1.0", + "bbob-biobj-mixint_f008_i07_d160 1.0", + "bbob-biobj-mixint_f008_i08_d005 1.0", + "bbob-biobj-mixint_f008_i08_d010 1.0", + "bbob-biobj-mixint_f008_i08_d020 1.0", + "bbob-biobj-mixint_f008_i08_d040 1.0", + "bbob-biobj-mixint_f008_i08_d080 1.0", + "bbob-biobj-mixint_f008_i08_d160 1.0", + "bbob-biobj-mixint_f008_i09_d005 1.0", + "bbob-biobj-mixint_f008_i09_d010 1.0", + "bbob-biobj-mixint_f008_i09_d020 1.0", + "bbob-biobj-mixint_f008_i09_d040 1.0", + "bbob-biobj-mixint_f008_i09_d080 1.0", + "bbob-biobj-mixint_f008_i09_d160 1.0", + "bbob-biobj-mixint_f008_i10_d005 1.0", + "bbob-biobj-mixint_f008_i10_d010 1.0", + "bbob-biobj-mixint_f008_i10_d020 1.0", + "bbob-biobj-mixint_f008_i10_d040 1.0", + "bbob-biobj-mixint_f008_i10_d080 1.0", + "bbob-biobj-mixint_f008_i10_d160 1.0", + "bbob-biobj-mixint_f008_i11_d005 1.0", + "bbob-biobj-mixint_f008_i11_d010 1.0", + "bbob-biobj-mixint_f008_i11_d020 1.0", + "bbob-biobj-mixint_f008_i11_d040 1.0", + "bbob-biobj-mixint_f008_i11_d080 1.0", + "bbob-biobj-mixint_f008_i11_d160 1.0", + "bbob-biobj-mixint_f008_i12_d005 1.0", + "bbob-biobj-mixint_f008_i12_d010 1.0", + "bbob-biobj-mixint_f008_i12_d020 1.0", + "bbob-biobj-mixint_f008_i12_d040 1.0", + "bbob-biobj-mixint_f008_i12_d080 1.0", + "bbob-biobj-mixint_f008_i12_d160 1.0", + "bbob-biobj-mixint_f008_i13_d005 1.0", + "bbob-biobj-mixint_f008_i13_d010 1.0", + "bbob-biobj-mixint_f008_i13_d020 1.0", + "bbob-biobj-mixint_f008_i13_d040 1.0", + "bbob-biobj-mixint_f008_i13_d080 1.0", + "bbob-biobj-mixint_f008_i13_d160 1.0", + "bbob-biobj-mixint_f008_i14_d005 1.0", + "bbob-biobj-mixint_f008_i14_d010 1.0", + "bbob-biobj-mixint_f008_i14_d020 1.0", + "bbob-biobj-mixint_f008_i14_d040 1.0", + "bbob-biobj-mixint_f008_i14_d080 1.0", + "bbob-biobj-mixint_f008_i14_d160 1.0", + "bbob-biobj-mixint_f008_i15_d005 1.0", + "bbob-biobj-mixint_f008_i15_d010 1.0", + "bbob-biobj-mixint_f008_i15_d020 1.0", + "bbob-biobj-mixint_f008_i15_d040 1.0", + "bbob-biobj-mixint_f008_i15_d080 1.0", + "bbob-biobj-mixint_f008_i15_d160 1.0", + "bbob-biobj-mixint_f009_i01_d005 1.0", + "bbob-biobj-mixint_f009_i01_d010 1.0", + "bbob-biobj-mixint_f009_i01_d020 1.0", + "bbob-biobj-mixint_f009_i01_d040 1.0", + "bbob-biobj-mixint_f009_i01_d080 1.0", + "bbob-biobj-mixint_f009_i01_d160 1.0", + "bbob-biobj-mixint_f009_i02_d005 1.0", + "bbob-biobj-mixint_f009_i02_d010 1.0", + "bbob-biobj-mixint_f009_i02_d020 1.0", + "bbob-biobj-mixint_f009_i02_d040 1.0", + "bbob-biobj-mixint_f009_i02_d080 1.0", + "bbob-biobj-mixint_f009_i02_d160 1.0", + "bbob-biobj-mixint_f009_i03_d005 1.0", + "bbob-biobj-mixint_f009_i03_d010 1.0", + "bbob-biobj-mixint_f009_i03_d020 1.0", + "bbob-biobj-mixint_f009_i03_d040 1.0", + "bbob-biobj-mixint_f009_i03_d080 1.0", + "bbob-biobj-mixint_f009_i03_d160 1.0", + "bbob-biobj-mixint_f009_i04_d005 1.0", + "bbob-biobj-mixint_f009_i04_d010 1.0", + "bbob-biobj-mixint_f009_i04_d020 1.0", + "bbob-biobj-mixint_f009_i04_d040 1.0", + "bbob-biobj-mixint_f009_i04_d080 1.0", + "bbob-biobj-mixint_f009_i04_d160 1.0", + "bbob-biobj-mixint_f009_i05_d005 1.0", + "bbob-biobj-mixint_f009_i05_d010 1.0", + "bbob-biobj-mixint_f009_i05_d020 1.0", + "bbob-biobj-mixint_f009_i05_d040 1.0", + "bbob-biobj-mixint_f009_i05_d080 1.0", + "bbob-biobj-mixint_f009_i05_d160 1.0", + "bbob-biobj-mixint_f009_i06_d005 1.0", + "bbob-biobj-mixint_f009_i06_d010 1.0", + "bbob-biobj-mixint_f009_i06_d020 1.0", + "bbob-biobj-mixint_f009_i06_d040 1.0", + "bbob-biobj-mixint_f009_i06_d080 1.0", + "bbob-biobj-mixint_f009_i06_d160 1.0", + "bbob-biobj-mixint_f009_i07_d005 1.0", + "bbob-biobj-mixint_f009_i07_d010 1.0", + "bbob-biobj-mixint_f009_i07_d020 1.0", + "bbob-biobj-mixint_f009_i07_d040 1.0", + "bbob-biobj-mixint_f009_i07_d080 1.0", + "bbob-biobj-mixint_f009_i07_d160 1.0", + "bbob-biobj-mixint_f009_i08_d005 1.0", + "bbob-biobj-mixint_f009_i08_d010 1.0", + "bbob-biobj-mixint_f009_i08_d020 1.0", + "bbob-biobj-mixint_f009_i08_d040 1.0", + "bbob-biobj-mixint_f009_i08_d080 1.0", + "bbob-biobj-mixint_f009_i08_d160 1.0", + "bbob-biobj-mixint_f009_i09_d005 1.0", + "bbob-biobj-mixint_f009_i09_d010 1.0", + "bbob-biobj-mixint_f009_i09_d020 1.0", + "bbob-biobj-mixint_f009_i09_d040 1.0", + "bbob-biobj-mixint_f009_i09_d080 1.0", + "bbob-biobj-mixint_f009_i09_d160 1.0", + "bbob-biobj-mixint_f009_i10_d005 1.0", + "bbob-biobj-mixint_f009_i10_d010 1.0", + "bbob-biobj-mixint_f009_i10_d020 1.0", + "bbob-biobj-mixint_f009_i10_d040 1.0", + "bbob-biobj-mixint_f009_i10_d080 1.0", + "bbob-biobj-mixint_f009_i10_d160 1.0", + "bbob-biobj-mixint_f009_i11_d005 1.0", + "bbob-biobj-mixint_f009_i11_d010 1.0", + "bbob-biobj-mixint_f009_i11_d020 1.0", + "bbob-biobj-mixint_f009_i11_d040 1.0", + "bbob-biobj-mixint_f009_i11_d080 1.0", + "bbob-biobj-mixint_f009_i11_d160 1.0", + "bbob-biobj-mixint_f009_i12_d005 1.0", + "bbob-biobj-mixint_f009_i12_d010 1.0", + "bbob-biobj-mixint_f009_i12_d020 1.0", + "bbob-biobj-mixint_f009_i12_d040 1.0", + "bbob-biobj-mixint_f009_i12_d080 1.0", + "bbob-biobj-mixint_f009_i12_d160 1.0", + "bbob-biobj-mixint_f009_i13_d005 1.0", + "bbob-biobj-mixint_f009_i13_d010 1.0", + "bbob-biobj-mixint_f009_i13_d020 1.0", + "bbob-biobj-mixint_f009_i13_d040 1.0", + "bbob-biobj-mixint_f009_i13_d080 1.0", + "bbob-biobj-mixint_f009_i13_d160 1.0", + "bbob-biobj-mixint_f009_i14_d005 1.0", + "bbob-biobj-mixint_f009_i14_d010 1.0", + "bbob-biobj-mixint_f009_i14_d020 1.0", + "bbob-biobj-mixint_f009_i14_d040 1.0", + "bbob-biobj-mixint_f009_i14_d080 1.0", + "bbob-biobj-mixint_f009_i14_d160 1.0", + "bbob-biobj-mixint_f009_i15_d005 1.0", + "bbob-biobj-mixint_f009_i15_d010 1.0", + "bbob-biobj-mixint_f009_i15_d020 1.0", + "bbob-biobj-mixint_f009_i15_d040 1.0", + "bbob-biobj-mixint_f009_i15_d080 1.0", + "bbob-biobj-mixint_f009_i15_d160 1.0", + "bbob-biobj-mixint_f010_i01_d005 1.0", + "bbob-biobj-mixint_f010_i01_d010 1.0", + "bbob-biobj-mixint_f010_i01_d020 1.0", + "bbob-biobj-mixint_f010_i01_d040 1.0", + "bbob-biobj-mixint_f010_i01_d080 1.0", + "bbob-biobj-mixint_f010_i01_d160 1.0", + "bbob-biobj-mixint_f010_i02_d005 1.0", + "bbob-biobj-mixint_f010_i02_d010 1.0", + "bbob-biobj-mixint_f010_i02_d020 1.0", + "bbob-biobj-mixint_f010_i02_d040 1.0", + "bbob-biobj-mixint_f010_i02_d080 1.0", + "bbob-biobj-mixint_f010_i02_d160 1.0", + "bbob-biobj-mixint_f010_i03_d005 1.0", + "bbob-biobj-mixint_f010_i03_d010 1.0", + "bbob-biobj-mixint_f010_i03_d020 1.0", + "bbob-biobj-mixint_f010_i03_d040 1.0", + "bbob-biobj-mixint_f010_i03_d080 1.0", + "bbob-biobj-mixint_f010_i03_d160 1.0", + "bbob-biobj-mixint_f010_i04_d005 1.0", + "bbob-biobj-mixint_f010_i04_d010 1.0", + "bbob-biobj-mixint_f010_i04_d020 1.0", + "bbob-biobj-mixint_f010_i04_d040 1.0", + "bbob-biobj-mixint_f010_i04_d080 1.0", + "bbob-biobj-mixint_f010_i04_d160 1.0", + "bbob-biobj-mixint_f010_i05_d005 1.0", + "bbob-biobj-mixint_f010_i05_d010 1.0", + "bbob-biobj-mixint_f010_i05_d020 1.0", + "bbob-biobj-mixint_f010_i05_d040 1.0", + "bbob-biobj-mixint_f010_i05_d080 1.0", + "bbob-biobj-mixint_f010_i05_d160 1.0", + "bbob-biobj-mixint_f010_i06_d005 1.0", + "bbob-biobj-mixint_f010_i06_d010 1.0", + "bbob-biobj-mixint_f010_i06_d020 1.0", + "bbob-biobj-mixint_f010_i06_d040 1.0", + "bbob-biobj-mixint_f010_i06_d080 1.0", + "bbob-biobj-mixint_f010_i06_d160 1.0", + "bbob-biobj-mixint_f010_i07_d005 1.0", + "bbob-biobj-mixint_f010_i07_d010 1.0", + "bbob-biobj-mixint_f010_i07_d020 1.0", + "bbob-biobj-mixint_f010_i07_d040 1.0", + "bbob-biobj-mixint_f010_i07_d080 1.0", + "bbob-biobj-mixint_f010_i07_d160 1.0", + "bbob-biobj-mixint_f010_i08_d005 1.0", + "bbob-biobj-mixint_f010_i08_d010 1.0", + "bbob-biobj-mixint_f010_i08_d020 1.0", + "bbob-biobj-mixint_f010_i08_d040 1.0", + "bbob-biobj-mixint_f010_i08_d080 1.0", + "bbob-biobj-mixint_f010_i08_d160 1.0", + "bbob-biobj-mixint_f010_i09_d005 1.0", + "bbob-biobj-mixint_f010_i09_d010 1.0", + "bbob-biobj-mixint_f010_i09_d020 1.0", + "bbob-biobj-mixint_f010_i09_d040 1.0", + "bbob-biobj-mixint_f010_i09_d080 1.0", + "bbob-biobj-mixint_f010_i09_d160 1.0", + "bbob-biobj-mixint_f010_i10_d005 1.0", + "bbob-biobj-mixint_f010_i10_d010 1.0", + "bbob-biobj-mixint_f010_i10_d020 1.0", + "bbob-biobj-mixint_f010_i10_d040 1.0", + "bbob-biobj-mixint_f010_i10_d080 1.0", + "bbob-biobj-mixint_f010_i10_d160 1.0", + "bbob-biobj-mixint_f010_i11_d005 1.0", + "bbob-biobj-mixint_f010_i11_d010 1.0", + "bbob-biobj-mixint_f010_i11_d020 1.0", + "bbob-biobj-mixint_f010_i11_d040 1.0", + "bbob-biobj-mixint_f010_i11_d080 1.0", + "bbob-biobj-mixint_f010_i11_d160 1.0", + "bbob-biobj-mixint_f010_i12_d005 1.0", + "bbob-biobj-mixint_f010_i12_d010 1.0", + "bbob-biobj-mixint_f010_i12_d020 1.0", + "bbob-biobj-mixint_f010_i12_d040 1.0", + "bbob-biobj-mixint_f010_i12_d080 1.0", + "bbob-biobj-mixint_f010_i12_d160 1.0", + "bbob-biobj-mixint_f010_i13_d005 1.0", + "bbob-biobj-mixint_f010_i13_d010 1.0", + "bbob-biobj-mixint_f010_i13_d020 1.0", + "bbob-biobj-mixint_f010_i13_d040 1.0", + "bbob-biobj-mixint_f010_i13_d080 1.0", + "bbob-biobj-mixint_f010_i13_d160 1.0", + "bbob-biobj-mixint_f010_i14_d005 1.0", + "bbob-biobj-mixint_f010_i14_d010 1.0", + "bbob-biobj-mixint_f010_i14_d020 1.0", + "bbob-biobj-mixint_f010_i14_d040 1.0", + "bbob-biobj-mixint_f010_i14_d080 1.0", + "bbob-biobj-mixint_f010_i14_d160 1.0", + "bbob-biobj-mixint_f010_i15_d005 1.0", + "bbob-biobj-mixint_f010_i15_d010 1.0", + "bbob-biobj-mixint_f010_i15_d020 1.0", + "bbob-biobj-mixint_f010_i15_d040 1.0", + "bbob-biobj-mixint_f010_i15_d080 1.0", + "bbob-biobj-mixint_f010_i15_d160 1.0", + "bbob-biobj-mixint_f011_i01_d005 1.0", + "bbob-biobj-mixint_f011_i01_d010 1.0", + "bbob-biobj-mixint_f011_i01_d020 1.0", + "bbob-biobj-mixint_f011_i01_d040 1.0", + "bbob-biobj-mixint_f011_i01_d080 1.0", + "bbob-biobj-mixint_f011_i01_d160 1.0", + "bbob-biobj-mixint_f011_i02_d005 1.0", + "bbob-biobj-mixint_f011_i02_d010 1.0", + "bbob-biobj-mixint_f011_i02_d020 1.0", + "bbob-biobj-mixint_f011_i02_d040 1.0", + "bbob-biobj-mixint_f011_i02_d080 1.0", + "bbob-biobj-mixint_f011_i02_d160 1.0", + "bbob-biobj-mixint_f011_i03_d005 1.0", + "bbob-biobj-mixint_f011_i03_d010 1.0", + "bbob-biobj-mixint_f011_i03_d020 1.0", + "bbob-biobj-mixint_f011_i03_d040 1.0", + "bbob-biobj-mixint_f011_i03_d080 1.0", + "bbob-biobj-mixint_f011_i03_d160 1.0", + "bbob-biobj-mixint_f011_i04_d005 1.0", + "bbob-biobj-mixint_f011_i04_d010 1.0", + "bbob-biobj-mixint_f011_i04_d020 1.0", + "bbob-biobj-mixint_f011_i04_d040 1.0", + "bbob-biobj-mixint_f011_i04_d080 1.0", + "bbob-biobj-mixint_f011_i04_d160 1.0", + "bbob-biobj-mixint_f011_i05_d005 1.0", + "bbob-biobj-mixint_f011_i05_d010 1.0", + "bbob-biobj-mixint_f011_i05_d020 1.0", + "bbob-biobj-mixint_f011_i05_d040 1.0", + "bbob-biobj-mixint_f011_i05_d080 1.0", + "bbob-biobj-mixint_f011_i05_d160 1.0", + "bbob-biobj-mixint_f011_i06_d005 1.0", + "bbob-biobj-mixint_f011_i06_d010 1.0", + "bbob-biobj-mixint_f011_i06_d020 1.0", + "bbob-biobj-mixint_f011_i06_d040 1.0", + "bbob-biobj-mixint_f011_i06_d080 1.0", + "bbob-biobj-mixint_f011_i06_d160 1.0", + "bbob-biobj-mixint_f011_i07_d005 1.0", + "bbob-biobj-mixint_f011_i07_d010 1.0", + "bbob-biobj-mixint_f011_i07_d020 1.0", + "bbob-biobj-mixint_f011_i07_d040 1.0", + "bbob-biobj-mixint_f011_i07_d080 1.0", + "bbob-biobj-mixint_f011_i07_d160 1.0", + "bbob-biobj-mixint_f011_i08_d005 1.0", + "bbob-biobj-mixint_f011_i08_d010 1.0", + "bbob-biobj-mixint_f011_i08_d020 1.0", + "bbob-biobj-mixint_f011_i08_d040 1.0", + "bbob-biobj-mixint_f011_i08_d080 1.0", + "bbob-biobj-mixint_f011_i08_d160 1.0", + "bbob-biobj-mixint_f011_i09_d005 1.0", + "bbob-biobj-mixint_f011_i09_d010 1.0", + "bbob-biobj-mixint_f011_i09_d020 1.0", + "bbob-biobj-mixint_f011_i09_d040 1.0", + "bbob-biobj-mixint_f011_i09_d080 1.0", + "bbob-biobj-mixint_f011_i09_d160 1.0", + "bbob-biobj-mixint_f011_i10_d005 1.0", + "bbob-biobj-mixint_f011_i10_d010 1.0", + "bbob-biobj-mixint_f011_i10_d020 1.0", + "bbob-biobj-mixint_f011_i10_d040 1.0", + "bbob-biobj-mixint_f011_i10_d080 1.0", + "bbob-biobj-mixint_f011_i10_d160 1.0", + "bbob-biobj-mixint_f011_i11_d005 1.0", + "bbob-biobj-mixint_f011_i11_d010 1.0", + "bbob-biobj-mixint_f011_i11_d020 1.0", + "bbob-biobj-mixint_f011_i11_d040 1.0", + "bbob-biobj-mixint_f011_i11_d080 1.0", + "bbob-biobj-mixint_f011_i11_d160 1.0", + "bbob-biobj-mixint_f011_i12_d005 1.0", + "bbob-biobj-mixint_f011_i12_d010 1.0", + "bbob-biobj-mixint_f011_i12_d020 1.0", + "bbob-biobj-mixint_f011_i12_d040 1.0", + "bbob-biobj-mixint_f011_i12_d080 1.0", + "bbob-biobj-mixint_f011_i12_d160 1.0", + "bbob-biobj-mixint_f011_i13_d005 1.0", + "bbob-biobj-mixint_f011_i13_d010 1.0", + "bbob-biobj-mixint_f011_i13_d020 1.0", + "bbob-biobj-mixint_f011_i13_d040 1.0", + "bbob-biobj-mixint_f011_i13_d080 1.0", + "bbob-biobj-mixint_f011_i13_d160 1.0", + "bbob-biobj-mixint_f011_i14_d005 1.0", + "bbob-biobj-mixint_f011_i14_d010 1.0", + "bbob-biobj-mixint_f011_i14_d020 1.0", + "bbob-biobj-mixint_f011_i14_d040 1.0", + "bbob-biobj-mixint_f011_i14_d080 1.0", + "bbob-biobj-mixint_f011_i14_d160 1.0", + "bbob-biobj-mixint_f011_i15_d005 1.0", + "bbob-biobj-mixint_f011_i15_d010 1.0", + "bbob-biobj-mixint_f011_i15_d020 1.0", + "bbob-biobj-mixint_f011_i15_d040 1.0", + "bbob-biobj-mixint_f011_i15_d080 1.0", + "bbob-biobj-mixint_f011_i15_d160 1.0", + "bbob-biobj-mixint_f012_i01_d005 1.0", + "bbob-biobj-mixint_f012_i01_d010 1.0", + "bbob-biobj-mixint_f012_i01_d020 1.0", + "bbob-biobj-mixint_f012_i01_d040 1.0", + "bbob-biobj-mixint_f012_i01_d080 1.0", + "bbob-biobj-mixint_f012_i01_d160 1.0", + "bbob-biobj-mixint_f012_i02_d005 1.0", + "bbob-biobj-mixint_f012_i02_d010 1.0", + "bbob-biobj-mixint_f012_i02_d020 1.0", + "bbob-biobj-mixint_f012_i02_d040 1.0", + "bbob-biobj-mixint_f012_i02_d080 1.0", + "bbob-biobj-mixint_f012_i02_d160 1.0", + "bbob-biobj-mixint_f012_i03_d005 1.0", + "bbob-biobj-mixint_f012_i03_d010 1.0", + "bbob-biobj-mixint_f012_i03_d020 1.0", + "bbob-biobj-mixint_f012_i03_d040 1.0", + "bbob-biobj-mixint_f012_i03_d080 1.0", + "bbob-biobj-mixint_f012_i03_d160 1.0", + "bbob-biobj-mixint_f012_i04_d005 1.0", + "bbob-biobj-mixint_f012_i04_d010 1.0", + "bbob-biobj-mixint_f012_i04_d020 1.0", + "bbob-biobj-mixint_f012_i04_d040 1.0", + "bbob-biobj-mixint_f012_i04_d080 1.0", + "bbob-biobj-mixint_f012_i04_d160 1.0", + "bbob-biobj-mixint_f012_i05_d005 1.0", + "bbob-biobj-mixint_f012_i05_d010 1.0", + "bbob-biobj-mixint_f012_i05_d020 1.0", + "bbob-biobj-mixint_f012_i05_d040 1.0", + "bbob-biobj-mixint_f012_i05_d080 1.0", + "bbob-biobj-mixint_f012_i05_d160 1.0", + "bbob-biobj-mixint_f012_i06_d005 1.0", + "bbob-biobj-mixint_f012_i06_d010 1.0", + "bbob-biobj-mixint_f012_i06_d020 1.0", + "bbob-biobj-mixint_f012_i06_d040 1.0", + "bbob-biobj-mixint_f012_i06_d080 1.0", + "bbob-biobj-mixint_f012_i06_d160 1.0", + "bbob-biobj-mixint_f012_i07_d005 1.0", + "bbob-biobj-mixint_f012_i07_d010 1.0", + "bbob-biobj-mixint_f012_i07_d020 1.0", + "bbob-biobj-mixint_f012_i07_d040 1.0", + "bbob-biobj-mixint_f012_i07_d080 1.0", + "bbob-biobj-mixint_f012_i07_d160 1.0", + "bbob-biobj-mixint_f012_i08_d005 1.0", + "bbob-biobj-mixint_f012_i08_d010 1.0", + "bbob-biobj-mixint_f012_i08_d020 1.0", + "bbob-biobj-mixint_f012_i08_d040 1.0", + "bbob-biobj-mixint_f012_i08_d080 1.0", + "bbob-biobj-mixint_f012_i08_d160 1.0", + "bbob-biobj-mixint_f012_i09_d005 1.0", + "bbob-biobj-mixint_f012_i09_d010 1.0", + "bbob-biobj-mixint_f012_i09_d020 1.0", + "bbob-biobj-mixint_f012_i09_d040 1.0", + "bbob-biobj-mixint_f012_i09_d080 1.0", + "bbob-biobj-mixint_f012_i09_d160 1.0", + "bbob-biobj-mixint_f012_i10_d005 1.0", + "bbob-biobj-mixint_f012_i10_d010 1.0", + "bbob-biobj-mixint_f012_i10_d020 1.0", + "bbob-biobj-mixint_f012_i10_d040 1.0", + "bbob-biobj-mixint_f012_i10_d080 1.0", + "bbob-biobj-mixint_f012_i10_d160 1.0", + "bbob-biobj-mixint_f012_i11_d005 1.0", + "bbob-biobj-mixint_f012_i11_d010 1.0", + "bbob-biobj-mixint_f012_i11_d020 1.0", + "bbob-biobj-mixint_f012_i11_d040 1.0", + "bbob-biobj-mixint_f012_i11_d080 1.0", + "bbob-biobj-mixint_f012_i11_d160 1.0", + "bbob-biobj-mixint_f012_i12_d005 1.0", + "bbob-biobj-mixint_f012_i12_d010 1.0", + "bbob-biobj-mixint_f012_i12_d020 1.0", + "bbob-biobj-mixint_f012_i12_d040 1.0", + "bbob-biobj-mixint_f012_i12_d080 1.0", + "bbob-biobj-mixint_f012_i12_d160 1.0", + "bbob-biobj-mixint_f012_i13_d005 1.0", + "bbob-biobj-mixint_f012_i13_d010 1.0", + "bbob-biobj-mixint_f012_i13_d020 1.0", + "bbob-biobj-mixint_f012_i13_d040 1.0", + "bbob-biobj-mixint_f012_i13_d080 1.0", + "bbob-biobj-mixint_f012_i13_d160 1.0", + "bbob-biobj-mixint_f012_i14_d005 1.0", + "bbob-biobj-mixint_f012_i14_d010 1.0", + "bbob-biobj-mixint_f012_i14_d020 1.0", + "bbob-biobj-mixint_f012_i14_d040 1.0", + "bbob-biobj-mixint_f012_i14_d080 1.0", + "bbob-biobj-mixint_f012_i14_d160 1.0", + "bbob-biobj-mixint_f012_i15_d005 1.0", + "bbob-biobj-mixint_f012_i15_d010 1.0", + "bbob-biobj-mixint_f012_i15_d020 1.0", + "bbob-biobj-mixint_f012_i15_d040 1.0", + "bbob-biobj-mixint_f012_i15_d080 1.0", + "bbob-biobj-mixint_f012_i15_d160 1.0", + "bbob-biobj-mixint_f013_i01_d005 1.0", + "bbob-biobj-mixint_f013_i01_d010 1.0", + "bbob-biobj-mixint_f013_i01_d020 1.0", + "bbob-biobj-mixint_f013_i01_d040 1.0", + "bbob-biobj-mixint_f013_i01_d080 1.0", + "bbob-biobj-mixint_f013_i01_d160 1.0", + "bbob-biobj-mixint_f013_i02_d005 1.0", + "bbob-biobj-mixint_f013_i02_d010 1.0", + "bbob-biobj-mixint_f013_i02_d020 1.0", + "bbob-biobj-mixint_f013_i02_d040 1.0", + "bbob-biobj-mixint_f013_i02_d080 1.0", + "bbob-biobj-mixint_f013_i02_d160 1.0", + "bbob-biobj-mixint_f013_i03_d005 1.0", + "bbob-biobj-mixint_f013_i03_d010 1.0", + "bbob-biobj-mixint_f013_i03_d020 1.0", + "bbob-biobj-mixint_f013_i03_d040 1.0", + "bbob-biobj-mixint_f013_i03_d080 1.0", + "bbob-biobj-mixint_f013_i03_d160 1.0", + "bbob-biobj-mixint_f013_i04_d005 1.0", + "bbob-biobj-mixint_f013_i04_d010 1.0", + "bbob-biobj-mixint_f013_i04_d020 1.0", + "bbob-biobj-mixint_f013_i04_d040 1.0", + "bbob-biobj-mixint_f013_i04_d080 1.0", + "bbob-biobj-mixint_f013_i04_d160 1.0", + "bbob-biobj-mixint_f013_i05_d005 1.0", + "bbob-biobj-mixint_f013_i05_d010 1.0", + "bbob-biobj-mixint_f013_i05_d020 1.0", + "bbob-biobj-mixint_f013_i05_d040 1.0", + "bbob-biobj-mixint_f013_i05_d080 1.0", + "bbob-biobj-mixint_f013_i05_d160 1.0", + "bbob-biobj-mixint_f013_i06_d005 1.0", + "bbob-biobj-mixint_f013_i06_d010 1.0", + "bbob-biobj-mixint_f013_i06_d020 1.0", + "bbob-biobj-mixint_f013_i06_d040 1.0", + "bbob-biobj-mixint_f013_i06_d080 1.0", + "bbob-biobj-mixint_f013_i06_d160 1.0", + "bbob-biobj-mixint_f013_i07_d005 1.0", + "bbob-biobj-mixint_f013_i07_d010 1.0", + "bbob-biobj-mixint_f013_i07_d020 1.0", + "bbob-biobj-mixint_f013_i07_d040 1.0", + "bbob-biobj-mixint_f013_i07_d080 1.0", + "bbob-biobj-mixint_f013_i07_d160 1.0", + "bbob-biobj-mixint_f013_i08_d005 1.0", + "bbob-biobj-mixint_f013_i08_d010 1.0", + "bbob-biobj-mixint_f013_i08_d020 1.0", + "bbob-biobj-mixint_f013_i08_d040 1.0", + "bbob-biobj-mixint_f013_i08_d080 1.0", + "bbob-biobj-mixint_f013_i08_d160 1.0", + "bbob-biobj-mixint_f013_i09_d005 1.0", + "bbob-biobj-mixint_f013_i09_d010 1.0", + "bbob-biobj-mixint_f013_i09_d020 1.0", + "bbob-biobj-mixint_f013_i09_d040 1.0", + "bbob-biobj-mixint_f013_i09_d080 1.0", + "bbob-biobj-mixint_f013_i09_d160 1.0", + "bbob-biobj-mixint_f013_i10_d005 1.0", + "bbob-biobj-mixint_f013_i10_d010 1.0", + "bbob-biobj-mixint_f013_i10_d020 1.0", + "bbob-biobj-mixint_f013_i10_d040 1.0", + "bbob-biobj-mixint_f013_i10_d080 1.0", + "bbob-biobj-mixint_f013_i10_d160 1.0", + "bbob-biobj-mixint_f013_i11_d005 1.0", + "bbob-biobj-mixint_f013_i11_d010 1.0", + "bbob-biobj-mixint_f013_i11_d020 1.0", + "bbob-biobj-mixint_f013_i11_d040 1.0", + "bbob-biobj-mixint_f013_i11_d080 1.0", + "bbob-biobj-mixint_f013_i11_d160 1.0", + "bbob-biobj-mixint_f013_i12_d005 1.0", + "bbob-biobj-mixint_f013_i12_d010 1.0", + "bbob-biobj-mixint_f013_i12_d020 1.0", + "bbob-biobj-mixint_f013_i12_d040 1.0", + "bbob-biobj-mixint_f013_i12_d080 1.0", + "bbob-biobj-mixint_f013_i12_d160 1.0", + "bbob-biobj-mixint_f013_i13_d005 1.0", + "bbob-biobj-mixint_f013_i13_d010 1.0", + "bbob-biobj-mixint_f013_i13_d020 1.0", + "bbob-biobj-mixint_f013_i13_d040 1.0", + "bbob-biobj-mixint_f013_i13_d080 1.0", + "bbob-biobj-mixint_f013_i13_d160 1.0", + "bbob-biobj-mixint_f013_i14_d005 1.0", + "bbob-biobj-mixint_f013_i14_d010 1.0", + "bbob-biobj-mixint_f013_i14_d020 1.0", + "bbob-biobj-mixint_f013_i14_d040 1.0", + "bbob-biobj-mixint_f013_i14_d080 1.0", + "bbob-biobj-mixint_f013_i14_d160 1.0", + "bbob-biobj-mixint_f013_i15_d005 1.0", + "bbob-biobj-mixint_f013_i15_d010 1.0", + "bbob-biobj-mixint_f013_i15_d020 1.0", + "bbob-biobj-mixint_f013_i15_d040 1.0", + "bbob-biobj-mixint_f013_i15_d080 1.0", + "bbob-biobj-mixint_f013_i15_d160 1.0", + "bbob-biobj-mixint_f014_i01_d005 1.0", + "bbob-biobj-mixint_f014_i01_d010 1.0", + "bbob-biobj-mixint_f014_i01_d020 1.0", + "bbob-biobj-mixint_f014_i01_d040 1.0", + "bbob-biobj-mixint_f014_i01_d080 1.0", + "bbob-biobj-mixint_f014_i01_d160 1.0", + "bbob-biobj-mixint_f014_i02_d005 1.0", + "bbob-biobj-mixint_f014_i02_d010 1.0", + "bbob-biobj-mixint_f014_i02_d020 1.0", + "bbob-biobj-mixint_f014_i02_d040 1.0", + "bbob-biobj-mixint_f014_i02_d080 1.0", + "bbob-biobj-mixint_f014_i02_d160 1.0", + "bbob-biobj-mixint_f014_i03_d005 1.0", + "bbob-biobj-mixint_f014_i03_d010 1.0", + "bbob-biobj-mixint_f014_i03_d020 1.0", + "bbob-biobj-mixint_f014_i03_d040 1.0", + "bbob-biobj-mixint_f014_i03_d080 1.0", + "bbob-biobj-mixint_f014_i03_d160 1.0", + "bbob-biobj-mixint_f014_i04_d005 1.0", + "bbob-biobj-mixint_f014_i04_d010 1.0", + "bbob-biobj-mixint_f014_i04_d020 1.0", + "bbob-biobj-mixint_f014_i04_d040 1.0", + "bbob-biobj-mixint_f014_i04_d080 1.0", + "bbob-biobj-mixint_f014_i04_d160 1.0", + "bbob-biobj-mixint_f014_i05_d005 1.0", + "bbob-biobj-mixint_f014_i05_d010 1.0", + "bbob-biobj-mixint_f014_i05_d020 1.0", + "bbob-biobj-mixint_f014_i05_d040 1.0", + "bbob-biobj-mixint_f014_i05_d080 1.0", + "bbob-biobj-mixint_f014_i05_d160 1.0", + "bbob-biobj-mixint_f014_i06_d005 1.0", + "bbob-biobj-mixint_f014_i06_d010 1.0", + "bbob-biobj-mixint_f014_i06_d020 1.0", + "bbob-biobj-mixint_f014_i06_d040 1.0", + "bbob-biobj-mixint_f014_i06_d080 1.0", + "bbob-biobj-mixint_f014_i06_d160 1.0", + "bbob-biobj-mixint_f014_i07_d005 1.0", + "bbob-biobj-mixint_f014_i07_d010 1.0", + "bbob-biobj-mixint_f014_i07_d020 1.0", + "bbob-biobj-mixint_f014_i07_d040 1.0", + "bbob-biobj-mixint_f014_i07_d080 1.0", + "bbob-biobj-mixint_f014_i07_d160 1.0", + "bbob-biobj-mixint_f014_i08_d005 1.0", + "bbob-biobj-mixint_f014_i08_d010 1.0", + "bbob-biobj-mixint_f014_i08_d020 1.0", + "bbob-biobj-mixint_f014_i08_d040 1.0", + "bbob-biobj-mixint_f014_i08_d080 1.0", + "bbob-biobj-mixint_f014_i08_d160 1.0", + "bbob-biobj-mixint_f014_i09_d005 1.0", + "bbob-biobj-mixint_f014_i09_d010 1.0", + "bbob-biobj-mixint_f014_i09_d020 1.0", + "bbob-biobj-mixint_f014_i09_d040 1.0", + "bbob-biobj-mixint_f014_i09_d080 1.0", + "bbob-biobj-mixint_f014_i09_d160 1.0", + "bbob-biobj-mixint_f014_i10_d005 1.0", + "bbob-biobj-mixint_f014_i10_d010 1.0", + "bbob-biobj-mixint_f014_i10_d020 1.0", + "bbob-biobj-mixint_f014_i10_d040 1.0", + "bbob-biobj-mixint_f014_i10_d080 1.0", + "bbob-biobj-mixint_f014_i10_d160 1.0", + "bbob-biobj-mixint_f014_i11_d005 1.0", + "bbob-biobj-mixint_f014_i11_d010 1.0", + "bbob-biobj-mixint_f014_i11_d020 1.0", + "bbob-biobj-mixint_f014_i11_d040 1.0", + "bbob-biobj-mixint_f014_i11_d080 1.0", + "bbob-biobj-mixint_f014_i11_d160 1.0", + "bbob-biobj-mixint_f014_i12_d005 1.0", + "bbob-biobj-mixint_f014_i12_d010 1.0", + "bbob-biobj-mixint_f014_i12_d020 1.0", + "bbob-biobj-mixint_f014_i12_d040 1.0", + "bbob-biobj-mixint_f014_i12_d080 1.0", + "bbob-biobj-mixint_f014_i12_d160 1.0", + "bbob-biobj-mixint_f014_i13_d005 1.0", + "bbob-biobj-mixint_f014_i13_d010 1.0", + "bbob-biobj-mixint_f014_i13_d020 1.0", + "bbob-biobj-mixint_f014_i13_d040 1.0", + "bbob-biobj-mixint_f014_i13_d080 1.0", + "bbob-biobj-mixint_f014_i13_d160 1.0", + "bbob-biobj-mixint_f014_i14_d005 1.0", + "bbob-biobj-mixint_f014_i14_d010 1.0", + "bbob-biobj-mixint_f014_i14_d020 1.0", + "bbob-biobj-mixint_f014_i14_d040 1.0", + "bbob-biobj-mixint_f014_i14_d080 1.0", + "bbob-biobj-mixint_f014_i14_d160 1.0", + "bbob-biobj-mixint_f014_i15_d005 1.0", + "bbob-biobj-mixint_f014_i15_d010 1.0", + "bbob-biobj-mixint_f014_i15_d020 1.0", + "bbob-biobj-mixint_f014_i15_d040 1.0", + "bbob-biobj-mixint_f014_i15_d080 1.0", + "bbob-biobj-mixint_f014_i15_d160 1.0", + "bbob-biobj-mixint_f015_i01_d005 1.0", + "bbob-biobj-mixint_f015_i01_d010 1.0", + "bbob-biobj-mixint_f015_i01_d020 1.0", + "bbob-biobj-mixint_f015_i01_d040 1.0", + "bbob-biobj-mixint_f015_i01_d080 1.0", + "bbob-biobj-mixint_f015_i01_d160 1.0", + "bbob-biobj-mixint_f015_i02_d005 1.0", + "bbob-biobj-mixint_f015_i02_d010 1.0", + "bbob-biobj-mixint_f015_i02_d020 1.0", + "bbob-biobj-mixint_f015_i02_d040 1.0", + "bbob-biobj-mixint_f015_i02_d080 1.0", + "bbob-biobj-mixint_f015_i02_d160 1.0", + "bbob-biobj-mixint_f015_i03_d005 1.0", + "bbob-biobj-mixint_f015_i03_d010 1.0", + "bbob-biobj-mixint_f015_i03_d020 1.0", + "bbob-biobj-mixint_f015_i03_d040 1.0", + "bbob-biobj-mixint_f015_i03_d080 1.0", + "bbob-biobj-mixint_f015_i03_d160 1.0", + "bbob-biobj-mixint_f015_i04_d005 1.0", + "bbob-biobj-mixint_f015_i04_d010 1.0", + "bbob-biobj-mixint_f015_i04_d020 1.0", + "bbob-biobj-mixint_f015_i04_d040 1.0", + "bbob-biobj-mixint_f015_i04_d080 1.0", + "bbob-biobj-mixint_f015_i04_d160 1.0", + "bbob-biobj-mixint_f015_i05_d005 1.0", + "bbob-biobj-mixint_f015_i05_d010 1.0", + "bbob-biobj-mixint_f015_i05_d020 1.0", + "bbob-biobj-mixint_f015_i05_d040 1.0", + "bbob-biobj-mixint_f015_i05_d080 1.0", + "bbob-biobj-mixint_f015_i05_d160 1.0", + "bbob-biobj-mixint_f015_i06_d005 1.0", + "bbob-biobj-mixint_f015_i06_d010 1.0", + "bbob-biobj-mixint_f015_i06_d020 1.0", + "bbob-biobj-mixint_f015_i06_d040 1.0", + "bbob-biobj-mixint_f015_i06_d080 1.0", + "bbob-biobj-mixint_f015_i06_d160 1.0", + "bbob-biobj-mixint_f015_i07_d005 1.0", + "bbob-biobj-mixint_f015_i07_d010 1.0", + "bbob-biobj-mixint_f015_i07_d020 1.0", + "bbob-biobj-mixint_f015_i07_d040 1.0", + "bbob-biobj-mixint_f015_i07_d080 1.0", + "bbob-biobj-mixint_f015_i07_d160 1.0", + "bbob-biobj-mixint_f015_i08_d005 1.0", + "bbob-biobj-mixint_f015_i08_d010 1.0", + "bbob-biobj-mixint_f015_i08_d020 1.0", + "bbob-biobj-mixint_f015_i08_d040 1.0", + "bbob-biobj-mixint_f015_i08_d080 1.0", + "bbob-biobj-mixint_f015_i08_d160 1.0", + "bbob-biobj-mixint_f015_i09_d005 1.0", + "bbob-biobj-mixint_f015_i09_d010 1.0", + "bbob-biobj-mixint_f015_i09_d020 1.0", + "bbob-biobj-mixint_f015_i09_d040 1.0", + "bbob-biobj-mixint_f015_i09_d080 1.0", + "bbob-biobj-mixint_f015_i09_d160 1.0", + "bbob-biobj-mixint_f015_i10_d005 1.0", + "bbob-biobj-mixint_f015_i10_d010 1.0", + "bbob-biobj-mixint_f015_i10_d020 1.0", + "bbob-biobj-mixint_f015_i10_d040 1.0", + "bbob-biobj-mixint_f015_i10_d080 1.0", + "bbob-biobj-mixint_f015_i10_d160 1.0", + "bbob-biobj-mixint_f015_i11_d005 1.0", + "bbob-biobj-mixint_f015_i11_d010 1.0", + "bbob-biobj-mixint_f015_i11_d020 1.0", + "bbob-biobj-mixint_f015_i11_d040 1.0", + "bbob-biobj-mixint_f015_i11_d080 1.0", + "bbob-biobj-mixint_f015_i11_d160 1.0", + "bbob-biobj-mixint_f015_i12_d005 1.0", + "bbob-biobj-mixint_f015_i12_d010 1.0", + "bbob-biobj-mixint_f015_i12_d020 1.0", + "bbob-biobj-mixint_f015_i12_d040 1.0", + "bbob-biobj-mixint_f015_i12_d080 1.0", + "bbob-biobj-mixint_f015_i12_d160 1.0", + "bbob-biobj-mixint_f015_i13_d005 1.0", + "bbob-biobj-mixint_f015_i13_d010 1.0", + "bbob-biobj-mixint_f015_i13_d020 1.0", + "bbob-biobj-mixint_f015_i13_d040 1.0", + "bbob-biobj-mixint_f015_i13_d080 1.0", + "bbob-biobj-mixint_f015_i13_d160 1.0", + "bbob-biobj-mixint_f015_i14_d005 1.0", + "bbob-biobj-mixint_f015_i14_d010 1.0", + "bbob-biobj-mixint_f015_i14_d020 1.0", + "bbob-biobj-mixint_f015_i14_d040 1.0", + "bbob-biobj-mixint_f015_i14_d080 1.0", + "bbob-biobj-mixint_f015_i14_d160 1.0", + "bbob-biobj-mixint_f015_i15_d005 1.0", + "bbob-biobj-mixint_f015_i15_d010 1.0", + "bbob-biobj-mixint_f015_i15_d020 1.0", + "bbob-biobj-mixint_f015_i15_d040 1.0", + "bbob-biobj-mixint_f015_i15_d080 1.0", + "bbob-biobj-mixint_f015_i15_d160 1.0", + "bbob-biobj-mixint_f016_i01_d005 1.0", + "bbob-biobj-mixint_f016_i01_d010 1.0", + "bbob-biobj-mixint_f016_i01_d020 1.0", + "bbob-biobj-mixint_f016_i01_d040 1.0", + "bbob-biobj-mixint_f016_i01_d080 1.0", + "bbob-biobj-mixint_f016_i01_d160 1.0", + "bbob-biobj-mixint_f016_i02_d005 1.0", + "bbob-biobj-mixint_f016_i02_d010 1.0", + "bbob-biobj-mixint_f016_i02_d020 1.0", + "bbob-biobj-mixint_f016_i02_d040 1.0", + "bbob-biobj-mixint_f016_i02_d080 1.0", + "bbob-biobj-mixint_f016_i02_d160 1.0", + "bbob-biobj-mixint_f016_i03_d005 1.0", + "bbob-biobj-mixint_f016_i03_d010 1.0", + "bbob-biobj-mixint_f016_i03_d020 1.0", + "bbob-biobj-mixint_f016_i03_d040 1.0", + "bbob-biobj-mixint_f016_i03_d080 1.0", + "bbob-biobj-mixint_f016_i03_d160 1.0", + "bbob-biobj-mixint_f016_i04_d005 1.0", + "bbob-biobj-mixint_f016_i04_d010 1.0", + "bbob-biobj-mixint_f016_i04_d020 1.0", + "bbob-biobj-mixint_f016_i04_d040 1.0", + "bbob-biobj-mixint_f016_i04_d080 1.0", + "bbob-biobj-mixint_f016_i04_d160 1.0", + "bbob-biobj-mixint_f016_i05_d005 1.0", + "bbob-biobj-mixint_f016_i05_d010 1.0", + "bbob-biobj-mixint_f016_i05_d020 1.0", + "bbob-biobj-mixint_f016_i05_d040 1.0", + "bbob-biobj-mixint_f016_i05_d080 1.0", + "bbob-biobj-mixint_f016_i05_d160 1.0", + "bbob-biobj-mixint_f016_i06_d005 1.0", + "bbob-biobj-mixint_f016_i06_d010 1.0", + "bbob-biobj-mixint_f016_i06_d020 1.0", + "bbob-biobj-mixint_f016_i06_d040 1.0", + "bbob-biobj-mixint_f016_i06_d080 1.0", + "bbob-biobj-mixint_f016_i06_d160 1.0", + "bbob-biobj-mixint_f016_i07_d005 1.0", + "bbob-biobj-mixint_f016_i07_d010 1.0", + "bbob-biobj-mixint_f016_i07_d020 1.0", + "bbob-biobj-mixint_f016_i07_d040 1.0", + "bbob-biobj-mixint_f016_i07_d080 1.0", + "bbob-biobj-mixint_f016_i07_d160 1.0", + "bbob-biobj-mixint_f016_i08_d005 1.0", + "bbob-biobj-mixint_f016_i08_d010 1.0", + "bbob-biobj-mixint_f016_i08_d020 1.0", + "bbob-biobj-mixint_f016_i08_d040 1.0", + "bbob-biobj-mixint_f016_i08_d080 1.0", + "bbob-biobj-mixint_f016_i08_d160 1.0", + "bbob-biobj-mixint_f016_i09_d005 1.0", + "bbob-biobj-mixint_f016_i09_d010 1.0", + "bbob-biobj-mixint_f016_i09_d020 1.0", + "bbob-biobj-mixint_f016_i09_d040 1.0", + "bbob-biobj-mixint_f016_i09_d080 1.0", + "bbob-biobj-mixint_f016_i09_d160 1.0", + "bbob-biobj-mixint_f016_i10_d005 1.0", + "bbob-biobj-mixint_f016_i10_d010 1.0", + "bbob-biobj-mixint_f016_i10_d020 1.0", + "bbob-biobj-mixint_f016_i10_d040 1.0", + "bbob-biobj-mixint_f016_i10_d080 1.0", + "bbob-biobj-mixint_f016_i10_d160 1.0", + "bbob-biobj-mixint_f016_i11_d005 1.0", + "bbob-biobj-mixint_f016_i11_d010 1.0", + "bbob-biobj-mixint_f016_i11_d020 1.0", + "bbob-biobj-mixint_f016_i11_d040 1.0", + "bbob-biobj-mixint_f016_i11_d080 1.0", + "bbob-biobj-mixint_f016_i11_d160 1.0", + "bbob-biobj-mixint_f016_i12_d005 1.0", + "bbob-biobj-mixint_f016_i12_d010 1.0", + "bbob-biobj-mixint_f016_i12_d020 1.0", + "bbob-biobj-mixint_f016_i12_d040 1.0", + "bbob-biobj-mixint_f016_i12_d080 1.0", + "bbob-biobj-mixint_f016_i12_d160 1.0", + "bbob-biobj-mixint_f016_i13_d005 1.0", + "bbob-biobj-mixint_f016_i13_d010 1.0", + "bbob-biobj-mixint_f016_i13_d020 1.0", + "bbob-biobj-mixint_f016_i13_d040 1.0", + "bbob-biobj-mixint_f016_i13_d080 1.0", + "bbob-biobj-mixint_f016_i13_d160 1.0", + "bbob-biobj-mixint_f016_i14_d005 1.0", + "bbob-biobj-mixint_f016_i14_d010 1.0", + "bbob-biobj-mixint_f016_i14_d020 1.0", + "bbob-biobj-mixint_f016_i14_d040 1.0", + "bbob-biobj-mixint_f016_i14_d080 1.0", + "bbob-biobj-mixint_f016_i14_d160 1.0", + "bbob-biobj-mixint_f016_i15_d005 1.0", + "bbob-biobj-mixint_f016_i15_d010 1.0", + "bbob-biobj-mixint_f016_i15_d020 1.0", + "bbob-biobj-mixint_f016_i15_d040 1.0", + "bbob-biobj-mixint_f016_i15_d080 1.0", + "bbob-biobj-mixint_f016_i15_d160 1.0", + "bbob-biobj-mixint_f017_i01_d005 1.0", + "bbob-biobj-mixint_f017_i01_d010 1.0", + "bbob-biobj-mixint_f017_i01_d020 1.0", + "bbob-biobj-mixint_f017_i01_d040 1.0", + "bbob-biobj-mixint_f017_i01_d080 1.0", + "bbob-biobj-mixint_f017_i01_d160 1.0", + "bbob-biobj-mixint_f017_i02_d005 1.0", + "bbob-biobj-mixint_f017_i02_d010 1.0", + "bbob-biobj-mixint_f017_i02_d020 1.0", + "bbob-biobj-mixint_f017_i02_d040 1.0", + "bbob-biobj-mixint_f017_i02_d080 1.0", + "bbob-biobj-mixint_f017_i02_d160 1.0", + "bbob-biobj-mixint_f017_i03_d005 1.0", + "bbob-biobj-mixint_f017_i03_d010 1.0", + "bbob-biobj-mixint_f017_i03_d020 1.0", + "bbob-biobj-mixint_f017_i03_d040 1.0", + "bbob-biobj-mixint_f017_i03_d080 1.0", + "bbob-biobj-mixint_f017_i03_d160 1.0", + "bbob-biobj-mixint_f017_i04_d005 1.0", + "bbob-biobj-mixint_f017_i04_d010 1.0", + "bbob-biobj-mixint_f017_i04_d020 1.0", + "bbob-biobj-mixint_f017_i04_d040 1.0", + "bbob-biobj-mixint_f017_i04_d080 1.0", + "bbob-biobj-mixint_f017_i04_d160 1.0", + "bbob-biobj-mixint_f017_i05_d005 1.0", + "bbob-biobj-mixint_f017_i05_d010 1.0", + "bbob-biobj-mixint_f017_i05_d020 1.0", + "bbob-biobj-mixint_f017_i05_d040 1.0", + "bbob-biobj-mixint_f017_i05_d080 1.0", + "bbob-biobj-mixint_f017_i05_d160 1.0", + "bbob-biobj-mixint_f017_i06_d005 1.0", + "bbob-biobj-mixint_f017_i06_d010 1.0", + "bbob-biobj-mixint_f017_i06_d020 1.0", + "bbob-biobj-mixint_f017_i06_d040 1.0", + "bbob-biobj-mixint_f017_i06_d080 1.0", + "bbob-biobj-mixint_f017_i06_d160 1.0", + "bbob-biobj-mixint_f017_i07_d005 1.0", + "bbob-biobj-mixint_f017_i07_d010 1.0", + "bbob-biobj-mixint_f017_i07_d020 1.0", + "bbob-biobj-mixint_f017_i07_d040 1.0", + "bbob-biobj-mixint_f017_i07_d080 1.0", + "bbob-biobj-mixint_f017_i07_d160 1.0", + "bbob-biobj-mixint_f017_i08_d005 1.0", + "bbob-biobj-mixint_f017_i08_d010 1.0", + "bbob-biobj-mixint_f017_i08_d020 1.0", + "bbob-biobj-mixint_f017_i08_d040 1.0", + "bbob-biobj-mixint_f017_i08_d080 1.0", + "bbob-biobj-mixint_f017_i08_d160 1.0", + "bbob-biobj-mixint_f017_i09_d005 1.0", + "bbob-biobj-mixint_f017_i09_d010 1.0", + "bbob-biobj-mixint_f017_i09_d020 1.0", + "bbob-biobj-mixint_f017_i09_d040 1.0", + "bbob-biobj-mixint_f017_i09_d080 1.0", + "bbob-biobj-mixint_f017_i09_d160 1.0", + "bbob-biobj-mixint_f017_i10_d005 1.0", + "bbob-biobj-mixint_f017_i10_d010 1.0", + "bbob-biobj-mixint_f017_i10_d020 1.0", + "bbob-biobj-mixint_f017_i10_d040 1.0", + "bbob-biobj-mixint_f017_i10_d080 1.0", + "bbob-biobj-mixint_f017_i10_d160 1.0", + "bbob-biobj-mixint_f017_i11_d005 1.0", + "bbob-biobj-mixint_f017_i11_d010 1.0", + "bbob-biobj-mixint_f017_i11_d020 1.0", + "bbob-biobj-mixint_f017_i11_d040 1.0", + "bbob-biobj-mixint_f017_i11_d080 1.0", + "bbob-biobj-mixint_f017_i11_d160 1.0", + "bbob-biobj-mixint_f017_i12_d005 1.0", + "bbob-biobj-mixint_f017_i12_d010 1.0", + "bbob-biobj-mixint_f017_i12_d020 1.0", + "bbob-biobj-mixint_f017_i12_d040 1.0", + "bbob-biobj-mixint_f017_i12_d080 1.0", + "bbob-biobj-mixint_f017_i12_d160 1.0", + "bbob-biobj-mixint_f017_i13_d005 1.0", + "bbob-biobj-mixint_f017_i13_d010 1.0", + "bbob-biobj-mixint_f017_i13_d020 1.0", + "bbob-biobj-mixint_f017_i13_d040 1.0", + "bbob-biobj-mixint_f017_i13_d080 1.0", + "bbob-biobj-mixint_f017_i13_d160 1.0", + "bbob-biobj-mixint_f017_i14_d005 1.0", + "bbob-biobj-mixint_f017_i14_d010 1.0", + "bbob-biobj-mixint_f017_i14_d020 1.0", + "bbob-biobj-mixint_f017_i14_d040 1.0", + "bbob-biobj-mixint_f017_i14_d080 1.0", + "bbob-biobj-mixint_f017_i14_d160 1.0", + "bbob-biobj-mixint_f017_i15_d005 1.0", + "bbob-biobj-mixint_f017_i15_d010 1.0", + "bbob-biobj-mixint_f017_i15_d020 1.0", + "bbob-biobj-mixint_f017_i15_d040 1.0", + "bbob-biobj-mixint_f017_i15_d080 1.0", + "bbob-biobj-mixint_f017_i15_d160 1.0", + "bbob-biobj-mixint_f018_i01_d005 1.0", + "bbob-biobj-mixint_f018_i01_d010 1.0", + "bbob-biobj-mixint_f018_i01_d020 1.0", + "bbob-biobj-mixint_f018_i01_d040 1.0", + "bbob-biobj-mixint_f018_i01_d080 1.0", + "bbob-biobj-mixint_f018_i01_d160 1.0", + "bbob-biobj-mixint_f018_i02_d005 1.0", + "bbob-biobj-mixint_f018_i02_d010 1.0", + "bbob-biobj-mixint_f018_i02_d020 1.0", + "bbob-biobj-mixint_f018_i02_d040 1.0", + "bbob-biobj-mixint_f018_i02_d080 1.0", + "bbob-biobj-mixint_f018_i02_d160 1.0", + "bbob-biobj-mixint_f018_i03_d005 1.0", + "bbob-biobj-mixint_f018_i03_d010 1.0", + "bbob-biobj-mixint_f018_i03_d020 1.0", + "bbob-biobj-mixint_f018_i03_d040 1.0", + "bbob-biobj-mixint_f018_i03_d080 1.0", + "bbob-biobj-mixint_f018_i03_d160 1.0", + "bbob-biobj-mixint_f018_i04_d005 1.0", + "bbob-biobj-mixint_f018_i04_d010 1.0", + "bbob-biobj-mixint_f018_i04_d020 1.0", + "bbob-biobj-mixint_f018_i04_d040 1.0", + "bbob-biobj-mixint_f018_i04_d080 1.0", + "bbob-biobj-mixint_f018_i04_d160 1.0", + "bbob-biobj-mixint_f018_i05_d005 1.0", + "bbob-biobj-mixint_f018_i05_d010 1.0", + "bbob-biobj-mixint_f018_i05_d020 1.0", + "bbob-biobj-mixint_f018_i05_d040 1.0", + "bbob-biobj-mixint_f018_i05_d080 1.0", + "bbob-biobj-mixint_f018_i05_d160 1.0", + "bbob-biobj-mixint_f018_i06_d005 1.0", + "bbob-biobj-mixint_f018_i06_d010 1.0", + "bbob-biobj-mixint_f018_i06_d020 1.0", + "bbob-biobj-mixint_f018_i06_d040 1.0", + "bbob-biobj-mixint_f018_i06_d080 1.0", + "bbob-biobj-mixint_f018_i06_d160 1.0", + "bbob-biobj-mixint_f018_i07_d005 1.0", + "bbob-biobj-mixint_f018_i07_d010 1.0", + "bbob-biobj-mixint_f018_i07_d020 1.0", + "bbob-biobj-mixint_f018_i07_d040 1.0", + "bbob-biobj-mixint_f018_i07_d080 1.0", + "bbob-biobj-mixint_f018_i07_d160 1.0", + "bbob-biobj-mixint_f018_i08_d005 1.0", + "bbob-biobj-mixint_f018_i08_d010 1.0", + "bbob-biobj-mixint_f018_i08_d020 1.0", + "bbob-biobj-mixint_f018_i08_d040 1.0", + "bbob-biobj-mixint_f018_i08_d080 1.0", + "bbob-biobj-mixint_f018_i08_d160 1.0", + "bbob-biobj-mixint_f018_i09_d005 1.0", + "bbob-biobj-mixint_f018_i09_d010 1.0", + "bbob-biobj-mixint_f018_i09_d020 1.0", + "bbob-biobj-mixint_f018_i09_d040 1.0", + "bbob-biobj-mixint_f018_i09_d080 1.0", + "bbob-biobj-mixint_f018_i09_d160 1.0", + "bbob-biobj-mixint_f018_i10_d005 1.0", + "bbob-biobj-mixint_f018_i10_d010 1.0", + "bbob-biobj-mixint_f018_i10_d020 1.0", + "bbob-biobj-mixint_f018_i10_d040 1.0", + "bbob-biobj-mixint_f018_i10_d080 1.0", + "bbob-biobj-mixint_f018_i10_d160 1.0", + "bbob-biobj-mixint_f018_i11_d005 1.0", + "bbob-biobj-mixint_f018_i11_d010 1.0", + "bbob-biobj-mixint_f018_i11_d020 1.0", + "bbob-biobj-mixint_f018_i11_d040 1.0", + "bbob-biobj-mixint_f018_i11_d080 1.0", + "bbob-biobj-mixint_f018_i11_d160 1.0", + "bbob-biobj-mixint_f018_i12_d005 1.0", + "bbob-biobj-mixint_f018_i12_d010 1.0", + "bbob-biobj-mixint_f018_i12_d020 1.0", + "bbob-biobj-mixint_f018_i12_d040 1.0", + "bbob-biobj-mixint_f018_i12_d080 1.0", + "bbob-biobj-mixint_f018_i12_d160 1.0", + "bbob-biobj-mixint_f018_i13_d005 1.0", + "bbob-biobj-mixint_f018_i13_d010 1.0", + "bbob-biobj-mixint_f018_i13_d020 1.0", + "bbob-biobj-mixint_f018_i13_d040 1.0", + "bbob-biobj-mixint_f018_i13_d080 1.0", + "bbob-biobj-mixint_f018_i13_d160 1.0", + "bbob-biobj-mixint_f018_i14_d005 1.0", + "bbob-biobj-mixint_f018_i14_d010 1.0", + "bbob-biobj-mixint_f018_i14_d020 1.0", + "bbob-biobj-mixint_f018_i14_d040 1.0", + "bbob-biobj-mixint_f018_i14_d080 1.0", + "bbob-biobj-mixint_f018_i14_d160 1.0", + "bbob-biobj-mixint_f018_i15_d005 1.0", + "bbob-biobj-mixint_f018_i15_d010 1.0", + "bbob-biobj-mixint_f018_i15_d020 1.0", + "bbob-biobj-mixint_f018_i15_d040 1.0", + "bbob-biobj-mixint_f018_i15_d080 1.0", + "bbob-biobj-mixint_f018_i15_d160 1.0", + "bbob-biobj-mixint_f019_i01_d005 1.0", + "bbob-biobj-mixint_f019_i01_d010 1.0", + "bbob-biobj-mixint_f019_i01_d020 1.0", + "bbob-biobj-mixint_f019_i01_d040 1.0", + "bbob-biobj-mixint_f019_i01_d080 1.0", + "bbob-biobj-mixint_f019_i01_d160 1.0", + "bbob-biobj-mixint_f019_i02_d005 1.0", + "bbob-biobj-mixint_f019_i02_d010 1.0", + "bbob-biobj-mixint_f019_i02_d020 1.0", + "bbob-biobj-mixint_f019_i02_d040 1.0", + "bbob-biobj-mixint_f019_i02_d080 1.0", + "bbob-biobj-mixint_f019_i02_d160 1.0", + "bbob-biobj-mixint_f019_i03_d005 1.0", + "bbob-biobj-mixint_f019_i03_d010 1.0", + "bbob-biobj-mixint_f019_i03_d020 1.0", + "bbob-biobj-mixint_f019_i03_d040 1.0", + "bbob-biobj-mixint_f019_i03_d080 1.0", + "bbob-biobj-mixint_f019_i03_d160 1.0", + "bbob-biobj-mixint_f019_i04_d005 1.0", + "bbob-biobj-mixint_f019_i04_d010 1.0", + "bbob-biobj-mixint_f019_i04_d020 1.0", + "bbob-biobj-mixint_f019_i04_d040 1.0", + "bbob-biobj-mixint_f019_i04_d080 1.0", + "bbob-biobj-mixint_f019_i04_d160 1.0", + "bbob-biobj-mixint_f019_i05_d005 1.0", + "bbob-biobj-mixint_f019_i05_d010 1.0", + "bbob-biobj-mixint_f019_i05_d020 1.0", + "bbob-biobj-mixint_f019_i05_d040 1.0", + "bbob-biobj-mixint_f019_i05_d080 1.0", + "bbob-biobj-mixint_f019_i05_d160 1.0", + "bbob-biobj-mixint_f019_i06_d005 1.0", + "bbob-biobj-mixint_f019_i06_d010 1.0", + "bbob-biobj-mixint_f019_i06_d020 1.0", + "bbob-biobj-mixint_f019_i06_d040 1.0", + "bbob-biobj-mixint_f019_i06_d080 1.0", + "bbob-biobj-mixint_f019_i06_d160 1.0", + "bbob-biobj-mixint_f019_i07_d005 1.0", + "bbob-biobj-mixint_f019_i07_d010 1.0", + "bbob-biobj-mixint_f019_i07_d020 1.0", + "bbob-biobj-mixint_f019_i07_d040 1.0", + "bbob-biobj-mixint_f019_i07_d080 1.0", + "bbob-biobj-mixint_f019_i07_d160 1.0", + "bbob-biobj-mixint_f019_i08_d005 1.0", + "bbob-biobj-mixint_f019_i08_d010 1.0", + "bbob-biobj-mixint_f019_i08_d020 1.0", + "bbob-biobj-mixint_f019_i08_d040 1.0", + "bbob-biobj-mixint_f019_i08_d080 1.0", + "bbob-biobj-mixint_f019_i08_d160 1.0", + "bbob-biobj-mixint_f019_i09_d005 1.0", + "bbob-biobj-mixint_f019_i09_d010 1.0", + "bbob-biobj-mixint_f019_i09_d020 1.0", + "bbob-biobj-mixint_f019_i09_d040 1.0", + "bbob-biobj-mixint_f019_i09_d080 1.0", + "bbob-biobj-mixint_f019_i09_d160 1.0", + "bbob-biobj-mixint_f019_i10_d005 1.0", + "bbob-biobj-mixint_f019_i10_d010 1.0", + "bbob-biobj-mixint_f019_i10_d020 1.0", + "bbob-biobj-mixint_f019_i10_d040 1.0", + "bbob-biobj-mixint_f019_i10_d080 1.0", + "bbob-biobj-mixint_f019_i10_d160 1.0", + "bbob-biobj-mixint_f019_i11_d005 1.0", + "bbob-biobj-mixint_f019_i11_d010 1.0", + "bbob-biobj-mixint_f019_i11_d020 1.0", + "bbob-biobj-mixint_f019_i11_d040 1.0", + "bbob-biobj-mixint_f019_i11_d080 1.0", + "bbob-biobj-mixint_f019_i11_d160 1.0", + "bbob-biobj-mixint_f019_i12_d005 1.0", + "bbob-biobj-mixint_f019_i12_d010 1.0", + "bbob-biobj-mixint_f019_i12_d020 1.0", + "bbob-biobj-mixint_f019_i12_d040 1.0", + "bbob-biobj-mixint_f019_i12_d080 1.0", + "bbob-biobj-mixint_f019_i12_d160 1.0", + "bbob-biobj-mixint_f019_i13_d005 1.0", + "bbob-biobj-mixint_f019_i13_d010 1.0", + "bbob-biobj-mixint_f019_i13_d020 1.0", + "bbob-biobj-mixint_f019_i13_d040 1.0", + "bbob-biobj-mixint_f019_i13_d080 1.0", + "bbob-biobj-mixint_f019_i13_d160 1.0", + "bbob-biobj-mixint_f019_i14_d005 1.0", + "bbob-biobj-mixint_f019_i14_d010 1.0", + "bbob-biobj-mixint_f019_i14_d020 1.0", + "bbob-biobj-mixint_f019_i14_d040 1.0", + "bbob-biobj-mixint_f019_i14_d080 1.0", + "bbob-biobj-mixint_f019_i14_d160 1.0", + "bbob-biobj-mixint_f019_i15_d005 1.0", + "bbob-biobj-mixint_f019_i15_d010 1.0", + "bbob-biobj-mixint_f019_i15_d020 1.0", + "bbob-biobj-mixint_f019_i15_d040 1.0", + "bbob-biobj-mixint_f019_i15_d080 1.0", + "bbob-biobj-mixint_f019_i15_d160 1.0", + "bbob-biobj-mixint_f020_i01_d005 1.0", + "bbob-biobj-mixint_f020_i01_d010 1.0", + "bbob-biobj-mixint_f020_i01_d020 1.0", + "bbob-biobj-mixint_f020_i01_d040 1.0", + "bbob-biobj-mixint_f020_i01_d080 1.0", + "bbob-biobj-mixint_f020_i01_d160 1.0", + "bbob-biobj-mixint_f020_i02_d005 1.0", + "bbob-biobj-mixint_f020_i02_d010 1.0", + "bbob-biobj-mixint_f020_i02_d020 1.0", + "bbob-biobj-mixint_f020_i02_d040 1.0", + "bbob-biobj-mixint_f020_i02_d080 1.0", + "bbob-biobj-mixint_f020_i02_d160 1.0", + "bbob-biobj-mixint_f020_i03_d005 1.0", + "bbob-biobj-mixint_f020_i03_d010 1.0", + "bbob-biobj-mixint_f020_i03_d020 1.0", + "bbob-biobj-mixint_f020_i03_d040 1.0", + "bbob-biobj-mixint_f020_i03_d080 1.0", + "bbob-biobj-mixint_f020_i03_d160 1.0", + "bbob-biobj-mixint_f020_i04_d005 1.0", + "bbob-biobj-mixint_f020_i04_d010 1.0", + "bbob-biobj-mixint_f020_i04_d020 1.0", + "bbob-biobj-mixint_f020_i04_d040 1.0", + "bbob-biobj-mixint_f020_i04_d080 1.0", + "bbob-biobj-mixint_f020_i04_d160 1.0", + "bbob-biobj-mixint_f020_i05_d005 1.0", + "bbob-biobj-mixint_f020_i05_d010 1.0", + "bbob-biobj-mixint_f020_i05_d020 1.0", + "bbob-biobj-mixint_f020_i05_d040 1.0", + "bbob-biobj-mixint_f020_i05_d080 1.0", + "bbob-biobj-mixint_f020_i05_d160 1.0", + "bbob-biobj-mixint_f020_i06_d005 1.0", + "bbob-biobj-mixint_f020_i06_d010 1.0", + "bbob-biobj-mixint_f020_i06_d020 1.0", + "bbob-biobj-mixint_f020_i06_d040 1.0", + "bbob-biobj-mixint_f020_i06_d080 1.0", + "bbob-biobj-mixint_f020_i06_d160 1.0", + "bbob-biobj-mixint_f020_i07_d005 1.0", + "bbob-biobj-mixint_f020_i07_d010 1.0", + "bbob-biobj-mixint_f020_i07_d020 1.0", + "bbob-biobj-mixint_f020_i07_d040 1.0", + "bbob-biobj-mixint_f020_i07_d080 1.0", + "bbob-biobj-mixint_f020_i07_d160 1.0", + "bbob-biobj-mixint_f020_i08_d005 1.0", + "bbob-biobj-mixint_f020_i08_d010 1.0", + "bbob-biobj-mixint_f020_i08_d020 1.0", + "bbob-biobj-mixint_f020_i08_d040 1.0", + "bbob-biobj-mixint_f020_i08_d080 1.0", + "bbob-biobj-mixint_f020_i08_d160 1.0", + "bbob-biobj-mixint_f020_i09_d005 1.0", + "bbob-biobj-mixint_f020_i09_d010 1.0", + "bbob-biobj-mixint_f020_i09_d020 1.0", + "bbob-biobj-mixint_f020_i09_d040 1.0", + "bbob-biobj-mixint_f020_i09_d080 1.0", + "bbob-biobj-mixint_f020_i09_d160 1.0", + "bbob-biobj-mixint_f020_i10_d005 1.0", + "bbob-biobj-mixint_f020_i10_d010 1.0", + "bbob-biobj-mixint_f020_i10_d020 1.0", + "bbob-biobj-mixint_f020_i10_d040 1.0", + "bbob-biobj-mixint_f020_i10_d080 1.0", + "bbob-biobj-mixint_f020_i10_d160 1.0", + "bbob-biobj-mixint_f020_i11_d005 1.0", + "bbob-biobj-mixint_f020_i11_d010 1.0", + "bbob-biobj-mixint_f020_i11_d020 1.0", + "bbob-biobj-mixint_f020_i11_d040 1.0", + "bbob-biobj-mixint_f020_i11_d080 1.0", + "bbob-biobj-mixint_f020_i11_d160 1.0", + "bbob-biobj-mixint_f020_i12_d005 1.0", + "bbob-biobj-mixint_f020_i12_d010 1.0", + "bbob-biobj-mixint_f020_i12_d020 1.0", + "bbob-biobj-mixint_f020_i12_d040 1.0", + "bbob-biobj-mixint_f020_i12_d080 1.0", + "bbob-biobj-mixint_f020_i12_d160 1.0", + "bbob-biobj-mixint_f020_i13_d005 1.0", + "bbob-biobj-mixint_f020_i13_d010 1.0", + "bbob-biobj-mixint_f020_i13_d020 1.0", + "bbob-biobj-mixint_f020_i13_d040 1.0", + "bbob-biobj-mixint_f020_i13_d080 1.0", + "bbob-biobj-mixint_f020_i13_d160 1.0", + "bbob-biobj-mixint_f020_i14_d005 1.0", + "bbob-biobj-mixint_f020_i14_d010 1.0", + "bbob-biobj-mixint_f020_i14_d020 1.0", + "bbob-biobj-mixint_f020_i14_d040 1.0", + "bbob-biobj-mixint_f020_i14_d080 1.0", + "bbob-biobj-mixint_f020_i14_d160 1.0", + "bbob-biobj-mixint_f020_i15_d005 1.0", + "bbob-biobj-mixint_f020_i15_d010 1.0", + "bbob-biobj-mixint_f020_i15_d020 1.0", + "bbob-biobj-mixint_f020_i15_d040 1.0", + "bbob-biobj-mixint_f020_i15_d080 1.0", + "bbob-biobj-mixint_f020_i15_d160 1.0", + "bbob-biobj-mixint_f021_i01_d005 1.0", + "bbob-biobj-mixint_f021_i01_d010 1.0", + "bbob-biobj-mixint_f021_i01_d020 1.0", + "bbob-biobj-mixint_f021_i01_d040 1.0", + "bbob-biobj-mixint_f021_i01_d080 1.0", + "bbob-biobj-mixint_f021_i01_d160 1.0", + "bbob-biobj-mixint_f021_i02_d005 1.0", + "bbob-biobj-mixint_f021_i02_d010 1.0", + "bbob-biobj-mixint_f021_i02_d020 1.0", + "bbob-biobj-mixint_f021_i02_d040 1.0", + "bbob-biobj-mixint_f021_i02_d080 1.0", + "bbob-biobj-mixint_f021_i02_d160 1.0", + "bbob-biobj-mixint_f021_i03_d005 1.0", + "bbob-biobj-mixint_f021_i03_d010 1.0", + "bbob-biobj-mixint_f021_i03_d020 1.0", + "bbob-biobj-mixint_f021_i03_d040 1.0", + "bbob-biobj-mixint_f021_i03_d080 1.0", + "bbob-biobj-mixint_f021_i03_d160 1.0", + "bbob-biobj-mixint_f021_i04_d005 1.0", + "bbob-biobj-mixint_f021_i04_d010 1.0", + "bbob-biobj-mixint_f021_i04_d020 1.0", + "bbob-biobj-mixint_f021_i04_d040 1.0", + "bbob-biobj-mixint_f021_i04_d080 1.0", + "bbob-biobj-mixint_f021_i04_d160 1.0", + "bbob-biobj-mixint_f021_i05_d005 1.0", + "bbob-biobj-mixint_f021_i05_d010 1.0", + "bbob-biobj-mixint_f021_i05_d020 1.0", + "bbob-biobj-mixint_f021_i05_d040 1.0", + "bbob-biobj-mixint_f021_i05_d080 1.0", + "bbob-biobj-mixint_f021_i05_d160 1.0", + "bbob-biobj-mixint_f021_i06_d005 1.0", + "bbob-biobj-mixint_f021_i06_d010 1.0", + "bbob-biobj-mixint_f021_i06_d020 1.0", + "bbob-biobj-mixint_f021_i06_d040 1.0", + "bbob-biobj-mixint_f021_i06_d080 1.0", + "bbob-biobj-mixint_f021_i06_d160 1.0", + "bbob-biobj-mixint_f021_i07_d005 1.0", + "bbob-biobj-mixint_f021_i07_d010 1.0", + "bbob-biobj-mixint_f021_i07_d020 1.0", + "bbob-biobj-mixint_f021_i07_d040 1.0", + "bbob-biobj-mixint_f021_i07_d080 1.0", + "bbob-biobj-mixint_f021_i07_d160 1.0", + "bbob-biobj-mixint_f021_i08_d005 1.0", + "bbob-biobj-mixint_f021_i08_d010 1.0", + "bbob-biobj-mixint_f021_i08_d020 1.0", + "bbob-biobj-mixint_f021_i08_d040 1.0", + "bbob-biobj-mixint_f021_i08_d080 1.0", + "bbob-biobj-mixint_f021_i08_d160 1.0", + "bbob-biobj-mixint_f021_i09_d005 1.0", + "bbob-biobj-mixint_f021_i09_d010 1.0", + "bbob-biobj-mixint_f021_i09_d020 1.0", + "bbob-biobj-mixint_f021_i09_d040 1.0", + "bbob-biobj-mixint_f021_i09_d080 1.0", + "bbob-biobj-mixint_f021_i09_d160 1.0", + "bbob-biobj-mixint_f021_i10_d005 1.0", + "bbob-biobj-mixint_f021_i10_d010 1.0", + "bbob-biobj-mixint_f021_i10_d020 1.0", + "bbob-biobj-mixint_f021_i10_d040 1.0", + "bbob-biobj-mixint_f021_i10_d080 1.0", + "bbob-biobj-mixint_f021_i10_d160 1.0", + "bbob-biobj-mixint_f021_i11_d005 1.0", + "bbob-biobj-mixint_f021_i11_d010 1.0", + "bbob-biobj-mixint_f021_i11_d020 1.0", + "bbob-biobj-mixint_f021_i11_d040 1.0", + "bbob-biobj-mixint_f021_i11_d080 1.0", + "bbob-biobj-mixint_f021_i11_d160 1.0", + "bbob-biobj-mixint_f021_i12_d005 1.0", + "bbob-biobj-mixint_f021_i12_d010 1.0", + "bbob-biobj-mixint_f021_i12_d020 1.0", + "bbob-biobj-mixint_f021_i12_d040 1.0", + "bbob-biobj-mixint_f021_i12_d080 1.0", + "bbob-biobj-mixint_f021_i12_d160 1.0", + "bbob-biobj-mixint_f021_i13_d005 1.0", + "bbob-biobj-mixint_f021_i13_d010 1.0", + "bbob-biobj-mixint_f021_i13_d020 1.0", + "bbob-biobj-mixint_f021_i13_d040 1.0", + "bbob-biobj-mixint_f021_i13_d080 1.0", + "bbob-biobj-mixint_f021_i13_d160 1.0", + "bbob-biobj-mixint_f021_i14_d005 1.0", + "bbob-biobj-mixint_f021_i14_d010 1.0", + "bbob-biobj-mixint_f021_i14_d020 1.0", + "bbob-biobj-mixint_f021_i14_d040 1.0", + "bbob-biobj-mixint_f021_i14_d080 1.0", + "bbob-biobj-mixint_f021_i14_d160 1.0", + "bbob-biobj-mixint_f021_i15_d005 1.0", + "bbob-biobj-mixint_f021_i15_d010 1.0", + "bbob-biobj-mixint_f021_i15_d020 1.0", + "bbob-biobj-mixint_f021_i15_d040 1.0", + "bbob-biobj-mixint_f021_i15_d080 1.0", + "bbob-biobj-mixint_f021_i15_d160 1.0", + "bbob-biobj-mixint_f022_i01_d005 1.0", + "bbob-biobj-mixint_f022_i01_d010 1.0", + "bbob-biobj-mixint_f022_i01_d020 1.0", + "bbob-biobj-mixint_f022_i01_d040 1.0", + "bbob-biobj-mixint_f022_i01_d080 1.0", + "bbob-biobj-mixint_f022_i01_d160 1.0", + "bbob-biobj-mixint_f022_i02_d005 1.0", + "bbob-biobj-mixint_f022_i02_d010 1.0", + "bbob-biobj-mixint_f022_i02_d020 1.0", + "bbob-biobj-mixint_f022_i02_d040 1.0", + "bbob-biobj-mixint_f022_i02_d080 1.0", + "bbob-biobj-mixint_f022_i02_d160 1.0", + "bbob-biobj-mixint_f022_i03_d005 1.0", + "bbob-biobj-mixint_f022_i03_d010 1.0", + "bbob-biobj-mixint_f022_i03_d020 1.0", + "bbob-biobj-mixint_f022_i03_d040 1.0", + "bbob-biobj-mixint_f022_i03_d080 1.0", + "bbob-biobj-mixint_f022_i03_d160 1.0", + "bbob-biobj-mixint_f022_i04_d005 1.0", + "bbob-biobj-mixint_f022_i04_d010 1.0", + "bbob-biobj-mixint_f022_i04_d020 1.0", + "bbob-biobj-mixint_f022_i04_d040 1.0", + "bbob-biobj-mixint_f022_i04_d080 1.0", + "bbob-biobj-mixint_f022_i04_d160 1.0", + "bbob-biobj-mixint_f022_i05_d005 1.0", + "bbob-biobj-mixint_f022_i05_d010 1.0", + "bbob-biobj-mixint_f022_i05_d020 1.0", + "bbob-biobj-mixint_f022_i05_d040 1.0", + "bbob-biobj-mixint_f022_i05_d080 1.0", + "bbob-biobj-mixint_f022_i05_d160 1.0", + "bbob-biobj-mixint_f022_i06_d005 1.0", + "bbob-biobj-mixint_f022_i06_d010 1.0", + "bbob-biobj-mixint_f022_i06_d020 1.0", + "bbob-biobj-mixint_f022_i06_d040 1.0", + "bbob-biobj-mixint_f022_i06_d080 1.0", + "bbob-biobj-mixint_f022_i06_d160 1.0", + "bbob-biobj-mixint_f022_i07_d005 1.0", + "bbob-biobj-mixint_f022_i07_d010 1.0", + "bbob-biobj-mixint_f022_i07_d020 1.0", + "bbob-biobj-mixint_f022_i07_d040 1.0", + "bbob-biobj-mixint_f022_i07_d080 1.0", + "bbob-biobj-mixint_f022_i07_d160 1.0", + "bbob-biobj-mixint_f022_i08_d005 1.0", + "bbob-biobj-mixint_f022_i08_d010 1.0", + "bbob-biobj-mixint_f022_i08_d020 1.0", + "bbob-biobj-mixint_f022_i08_d040 1.0", + "bbob-biobj-mixint_f022_i08_d080 1.0", + "bbob-biobj-mixint_f022_i08_d160 1.0", + "bbob-biobj-mixint_f022_i09_d005 1.0", + "bbob-biobj-mixint_f022_i09_d010 1.0", + "bbob-biobj-mixint_f022_i09_d020 1.0", + "bbob-biobj-mixint_f022_i09_d040 1.0", + "bbob-biobj-mixint_f022_i09_d080 1.0", + "bbob-biobj-mixint_f022_i09_d160 1.0", + "bbob-biobj-mixint_f022_i10_d005 1.0", + "bbob-biobj-mixint_f022_i10_d010 1.0", + "bbob-biobj-mixint_f022_i10_d020 1.0", + "bbob-biobj-mixint_f022_i10_d040 1.0", + "bbob-biobj-mixint_f022_i10_d080 1.0", + "bbob-biobj-mixint_f022_i10_d160 1.0", + "bbob-biobj-mixint_f022_i11_d005 1.0", + "bbob-biobj-mixint_f022_i11_d010 1.0", + "bbob-biobj-mixint_f022_i11_d020 1.0", + "bbob-biobj-mixint_f022_i11_d040 1.0", + "bbob-biobj-mixint_f022_i11_d080 1.0", + "bbob-biobj-mixint_f022_i11_d160 1.0", + "bbob-biobj-mixint_f022_i12_d005 1.0", + "bbob-biobj-mixint_f022_i12_d010 1.0", + "bbob-biobj-mixint_f022_i12_d020 1.0", + "bbob-biobj-mixint_f022_i12_d040 1.0", + "bbob-biobj-mixint_f022_i12_d080 1.0", + "bbob-biobj-mixint_f022_i12_d160 1.0", + "bbob-biobj-mixint_f022_i13_d005 1.0", + "bbob-biobj-mixint_f022_i13_d010 1.0", + "bbob-biobj-mixint_f022_i13_d020 1.0", + "bbob-biobj-mixint_f022_i13_d040 1.0", + "bbob-biobj-mixint_f022_i13_d080 1.0", + "bbob-biobj-mixint_f022_i13_d160 1.0", + "bbob-biobj-mixint_f022_i14_d005 1.0", + "bbob-biobj-mixint_f022_i14_d010 1.0", + "bbob-biobj-mixint_f022_i14_d020 1.0", + "bbob-biobj-mixint_f022_i14_d040 1.0", + "bbob-biobj-mixint_f022_i14_d080 1.0", + "bbob-biobj-mixint_f022_i14_d160 1.0", + "bbob-biobj-mixint_f022_i15_d005 1.0", + "bbob-biobj-mixint_f022_i15_d010 1.0", + "bbob-biobj-mixint_f022_i15_d020 1.0", + "bbob-biobj-mixint_f022_i15_d040 1.0", + "bbob-biobj-mixint_f022_i15_d080 1.0", + "bbob-biobj-mixint_f022_i15_d160 1.0", + "bbob-biobj-mixint_f023_i01_d005 1.0", + "bbob-biobj-mixint_f023_i01_d010 1.0", + "bbob-biobj-mixint_f023_i01_d020 1.0", + "bbob-biobj-mixint_f023_i01_d040 1.0", + "bbob-biobj-mixint_f023_i01_d080 1.0", + "bbob-biobj-mixint_f023_i01_d160 1.0", + "bbob-biobj-mixint_f023_i02_d005 1.0", + "bbob-biobj-mixint_f023_i02_d010 1.0", + "bbob-biobj-mixint_f023_i02_d020 1.0", + "bbob-biobj-mixint_f023_i02_d040 1.0", + "bbob-biobj-mixint_f023_i02_d080 1.0", + "bbob-biobj-mixint_f023_i02_d160 1.0", + "bbob-biobj-mixint_f023_i03_d005 1.0", + "bbob-biobj-mixint_f023_i03_d010 1.0", + "bbob-biobj-mixint_f023_i03_d020 1.0", + "bbob-biobj-mixint_f023_i03_d040 1.0", + "bbob-biobj-mixint_f023_i03_d080 1.0", + "bbob-biobj-mixint_f023_i03_d160 1.0", + "bbob-biobj-mixint_f023_i04_d005 1.0", + "bbob-biobj-mixint_f023_i04_d010 1.0", + "bbob-biobj-mixint_f023_i04_d020 1.0", + "bbob-biobj-mixint_f023_i04_d040 1.0", + "bbob-biobj-mixint_f023_i04_d080 1.0", + "bbob-biobj-mixint_f023_i04_d160 1.0", + "bbob-biobj-mixint_f023_i05_d005 1.0", + "bbob-biobj-mixint_f023_i05_d010 1.0", + "bbob-biobj-mixint_f023_i05_d020 1.0", + "bbob-biobj-mixint_f023_i05_d040 1.0", + "bbob-biobj-mixint_f023_i05_d080 1.0", + "bbob-biobj-mixint_f023_i05_d160 1.0", + "bbob-biobj-mixint_f023_i06_d005 1.0", + "bbob-biobj-mixint_f023_i06_d010 1.0", + "bbob-biobj-mixint_f023_i06_d020 1.0", + "bbob-biobj-mixint_f023_i06_d040 1.0", + "bbob-biobj-mixint_f023_i06_d080 1.0", + "bbob-biobj-mixint_f023_i06_d160 1.0", + "bbob-biobj-mixint_f023_i07_d005 1.0", + "bbob-biobj-mixint_f023_i07_d010 1.0", + "bbob-biobj-mixint_f023_i07_d020 1.0", + "bbob-biobj-mixint_f023_i07_d040 1.0", + "bbob-biobj-mixint_f023_i07_d080 1.0", + "bbob-biobj-mixint_f023_i07_d160 1.0", + "bbob-biobj-mixint_f023_i08_d005 1.0", + "bbob-biobj-mixint_f023_i08_d010 1.0", + "bbob-biobj-mixint_f023_i08_d020 1.0", + "bbob-biobj-mixint_f023_i08_d040 1.0", + "bbob-biobj-mixint_f023_i08_d080 1.0", + "bbob-biobj-mixint_f023_i08_d160 1.0", + "bbob-biobj-mixint_f023_i09_d005 1.0", + "bbob-biobj-mixint_f023_i09_d010 1.0", + "bbob-biobj-mixint_f023_i09_d020 1.0", + "bbob-biobj-mixint_f023_i09_d040 1.0", + "bbob-biobj-mixint_f023_i09_d080 1.0", + "bbob-biobj-mixint_f023_i09_d160 1.0", + "bbob-biobj-mixint_f023_i10_d005 1.0", + "bbob-biobj-mixint_f023_i10_d010 1.0", + "bbob-biobj-mixint_f023_i10_d020 1.0", + "bbob-biobj-mixint_f023_i10_d040 1.0", + "bbob-biobj-mixint_f023_i10_d080 1.0", + "bbob-biobj-mixint_f023_i10_d160 1.0", + "bbob-biobj-mixint_f023_i11_d005 1.0", + "bbob-biobj-mixint_f023_i11_d010 1.0", + "bbob-biobj-mixint_f023_i11_d020 1.0", + "bbob-biobj-mixint_f023_i11_d040 1.0", + "bbob-biobj-mixint_f023_i11_d080 1.0", + "bbob-biobj-mixint_f023_i11_d160 1.0", + "bbob-biobj-mixint_f023_i12_d005 1.0", + "bbob-biobj-mixint_f023_i12_d010 1.0", + "bbob-biobj-mixint_f023_i12_d020 1.0", + "bbob-biobj-mixint_f023_i12_d040 1.0", + "bbob-biobj-mixint_f023_i12_d080 1.0", + "bbob-biobj-mixint_f023_i12_d160 1.0", + "bbob-biobj-mixint_f023_i13_d005 1.0", + "bbob-biobj-mixint_f023_i13_d010 1.0", + "bbob-biobj-mixint_f023_i13_d020 1.0", + "bbob-biobj-mixint_f023_i13_d040 1.0", + "bbob-biobj-mixint_f023_i13_d080 1.0", + "bbob-biobj-mixint_f023_i13_d160 1.0", + "bbob-biobj-mixint_f023_i14_d005 1.0", + "bbob-biobj-mixint_f023_i14_d010 1.0", + "bbob-biobj-mixint_f023_i14_d020 1.0", + "bbob-biobj-mixint_f023_i14_d040 1.0", + "bbob-biobj-mixint_f023_i14_d080 1.0", + "bbob-biobj-mixint_f023_i14_d160 1.0", + "bbob-biobj-mixint_f023_i15_d005 1.0", + "bbob-biobj-mixint_f023_i15_d010 1.0", + "bbob-biobj-mixint_f023_i15_d020 1.0", + "bbob-biobj-mixint_f023_i15_d040 1.0", + "bbob-biobj-mixint_f023_i15_d080 1.0", + "bbob-biobj-mixint_f023_i15_d160 1.0", + "bbob-biobj-mixint_f024_i01_d005 1.0", + "bbob-biobj-mixint_f024_i01_d010 1.0", + "bbob-biobj-mixint_f024_i01_d020 1.0", + "bbob-biobj-mixint_f024_i01_d040 1.0", + "bbob-biobj-mixint_f024_i01_d080 1.0", + "bbob-biobj-mixint_f024_i01_d160 1.0", + "bbob-biobj-mixint_f024_i02_d005 1.0", + "bbob-biobj-mixint_f024_i02_d010 1.0", + "bbob-biobj-mixint_f024_i02_d020 1.0", + "bbob-biobj-mixint_f024_i02_d040 1.0", + "bbob-biobj-mixint_f024_i02_d080 1.0", + "bbob-biobj-mixint_f024_i02_d160 1.0", + "bbob-biobj-mixint_f024_i03_d005 1.0", + "bbob-biobj-mixint_f024_i03_d010 1.0", + "bbob-biobj-mixint_f024_i03_d020 1.0", + "bbob-biobj-mixint_f024_i03_d040 1.0", + "bbob-biobj-mixint_f024_i03_d080 1.0", + "bbob-biobj-mixint_f024_i03_d160 1.0", + "bbob-biobj-mixint_f024_i04_d005 1.0", + "bbob-biobj-mixint_f024_i04_d010 1.0", + "bbob-biobj-mixint_f024_i04_d020 1.0", + "bbob-biobj-mixint_f024_i04_d040 1.0", + "bbob-biobj-mixint_f024_i04_d080 1.0", + "bbob-biobj-mixint_f024_i04_d160 1.0", + "bbob-biobj-mixint_f024_i05_d005 1.0", + "bbob-biobj-mixint_f024_i05_d010 1.0", + "bbob-biobj-mixint_f024_i05_d020 1.0", + "bbob-biobj-mixint_f024_i05_d040 1.0", + "bbob-biobj-mixint_f024_i05_d080 1.0", + "bbob-biobj-mixint_f024_i05_d160 1.0", + "bbob-biobj-mixint_f024_i06_d005 1.0", + "bbob-biobj-mixint_f024_i06_d010 1.0", + "bbob-biobj-mixint_f024_i06_d020 1.0", + "bbob-biobj-mixint_f024_i06_d040 1.0", + "bbob-biobj-mixint_f024_i06_d080 1.0", + "bbob-biobj-mixint_f024_i06_d160 1.0", + "bbob-biobj-mixint_f024_i07_d005 1.0", + "bbob-biobj-mixint_f024_i07_d010 1.0", + "bbob-biobj-mixint_f024_i07_d020 1.0", + "bbob-biobj-mixint_f024_i07_d040 1.0", + "bbob-biobj-mixint_f024_i07_d080 1.0", + "bbob-biobj-mixint_f024_i07_d160 1.0", + "bbob-biobj-mixint_f024_i08_d005 1.0", + "bbob-biobj-mixint_f024_i08_d010 1.0", + "bbob-biobj-mixint_f024_i08_d020 1.0", + "bbob-biobj-mixint_f024_i08_d040 1.0", + "bbob-biobj-mixint_f024_i08_d080 1.0", + "bbob-biobj-mixint_f024_i08_d160 1.0", + "bbob-biobj-mixint_f024_i09_d005 1.0", + "bbob-biobj-mixint_f024_i09_d010 1.0", + "bbob-biobj-mixint_f024_i09_d020 1.0", + "bbob-biobj-mixint_f024_i09_d040 1.0", + "bbob-biobj-mixint_f024_i09_d080 1.0", + "bbob-biobj-mixint_f024_i09_d160 1.0", + "bbob-biobj-mixint_f024_i10_d005 1.0", + "bbob-biobj-mixint_f024_i10_d010 1.0", + "bbob-biobj-mixint_f024_i10_d020 1.0", + "bbob-biobj-mixint_f024_i10_d040 1.0", + "bbob-biobj-mixint_f024_i10_d080 1.0", + "bbob-biobj-mixint_f024_i10_d160 1.0", + "bbob-biobj-mixint_f024_i11_d005 1.0", + "bbob-biobj-mixint_f024_i11_d010 1.0", + "bbob-biobj-mixint_f024_i11_d020 1.0", + "bbob-biobj-mixint_f024_i11_d040 1.0", + "bbob-biobj-mixint_f024_i11_d080 1.0", + "bbob-biobj-mixint_f024_i11_d160 1.0", + "bbob-biobj-mixint_f024_i12_d005 1.0", + "bbob-biobj-mixint_f024_i12_d010 1.0", + "bbob-biobj-mixint_f024_i12_d020 1.0", + "bbob-biobj-mixint_f024_i12_d040 1.0", + "bbob-biobj-mixint_f024_i12_d080 1.0", + "bbob-biobj-mixint_f024_i12_d160 1.0", + "bbob-biobj-mixint_f024_i13_d005 1.0", + "bbob-biobj-mixint_f024_i13_d010 1.0", + "bbob-biobj-mixint_f024_i13_d020 1.0", + "bbob-biobj-mixint_f024_i13_d040 1.0", + "bbob-biobj-mixint_f024_i13_d080 1.0", + "bbob-biobj-mixint_f024_i13_d160 1.0", + "bbob-biobj-mixint_f024_i14_d005 1.0", + "bbob-biobj-mixint_f024_i14_d010 1.0", + "bbob-biobj-mixint_f024_i14_d020 1.0", + "bbob-biobj-mixint_f024_i14_d040 1.0", + "bbob-biobj-mixint_f024_i14_d080 1.0", + "bbob-biobj-mixint_f024_i14_d160 1.0", + "bbob-biobj-mixint_f024_i15_d005 1.0", + "bbob-biobj-mixint_f024_i15_d010 1.0", + "bbob-biobj-mixint_f024_i15_d020 1.0", + "bbob-biobj-mixint_f024_i15_d040 1.0", + "bbob-biobj-mixint_f024_i15_d080 1.0", + "bbob-biobj-mixint_f024_i15_d160 1.0", + "bbob-biobj-mixint_f025_i01_d005 1.0", + "bbob-biobj-mixint_f025_i01_d010 1.0", + "bbob-biobj-mixint_f025_i01_d020 1.0", + "bbob-biobj-mixint_f025_i01_d040 1.0", + "bbob-biobj-mixint_f025_i01_d080 1.0", + "bbob-biobj-mixint_f025_i01_d160 1.0", + "bbob-biobj-mixint_f025_i02_d005 1.0", + "bbob-biobj-mixint_f025_i02_d010 1.0", + "bbob-biobj-mixint_f025_i02_d020 1.0", + "bbob-biobj-mixint_f025_i02_d040 1.0", + "bbob-biobj-mixint_f025_i02_d080 1.0", + "bbob-biobj-mixint_f025_i02_d160 1.0", + "bbob-biobj-mixint_f025_i03_d005 1.0", + "bbob-biobj-mixint_f025_i03_d010 1.0", + "bbob-biobj-mixint_f025_i03_d020 1.0", + "bbob-biobj-mixint_f025_i03_d040 1.0", + "bbob-biobj-mixint_f025_i03_d080 1.0", + "bbob-biobj-mixint_f025_i03_d160 1.0", + "bbob-biobj-mixint_f025_i04_d005 1.0", + "bbob-biobj-mixint_f025_i04_d010 1.0", + "bbob-biobj-mixint_f025_i04_d020 1.0", + "bbob-biobj-mixint_f025_i04_d040 1.0", + "bbob-biobj-mixint_f025_i04_d080 1.0", + "bbob-biobj-mixint_f025_i04_d160 1.0", + "bbob-biobj-mixint_f025_i05_d005 1.0", + "bbob-biobj-mixint_f025_i05_d010 1.0", + "bbob-biobj-mixint_f025_i05_d020 1.0", + "bbob-biobj-mixint_f025_i05_d040 1.0", + "bbob-biobj-mixint_f025_i05_d080 1.0", + "bbob-biobj-mixint_f025_i05_d160 1.0", + "bbob-biobj-mixint_f025_i06_d005 1.0", + "bbob-biobj-mixint_f025_i06_d010 1.0", + "bbob-biobj-mixint_f025_i06_d020 1.0", + "bbob-biobj-mixint_f025_i06_d040 1.0", + "bbob-biobj-mixint_f025_i06_d080 1.0", + "bbob-biobj-mixint_f025_i06_d160 1.0", + "bbob-biobj-mixint_f025_i07_d005 1.0", + "bbob-biobj-mixint_f025_i07_d010 1.0", + "bbob-biobj-mixint_f025_i07_d020 1.0", + "bbob-biobj-mixint_f025_i07_d040 1.0", + "bbob-biobj-mixint_f025_i07_d080 1.0", + "bbob-biobj-mixint_f025_i07_d160 1.0", + "bbob-biobj-mixint_f025_i08_d005 1.0", + "bbob-biobj-mixint_f025_i08_d010 1.0", + "bbob-biobj-mixint_f025_i08_d020 1.0", + "bbob-biobj-mixint_f025_i08_d040 1.0", + "bbob-biobj-mixint_f025_i08_d080 1.0", + "bbob-biobj-mixint_f025_i08_d160 1.0", + "bbob-biobj-mixint_f025_i09_d005 1.0", + "bbob-biobj-mixint_f025_i09_d010 1.0", + "bbob-biobj-mixint_f025_i09_d020 1.0", + "bbob-biobj-mixint_f025_i09_d040 1.0", + "bbob-biobj-mixint_f025_i09_d080 1.0", + "bbob-biobj-mixint_f025_i09_d160 1.0", + "bbob-biobj-mixint_f025_i10_d005 1.0", + "bbob-biobj-mixint_f025_i10_d010 1.0", + "bbob-biobj-mixint_f025_i10_d020 1.0", + "bbob-biobj-mixint_f025_i10_d040 1.0", + "bbob-biobj-mixint_f025_i10_d080 1.0", + "bbob-biobj-mixint_f025_i10_d160 1.0", + "bbob-biobj-mixint_f025_i11_d005 1.0", + "bbob-biobj-mixint_f025_i11_d010 1.0", + "bbob-biobj-mixint_f025_i11_d020 1.0", + "bbob-biobj-mixint_f025_i11_d040 1.0", + "bbob-biobj-mixint_f025_i11_d080 1.0", + "bbob-biobj-mixint_f025_i11_d160 1.0", + "bbob-biobj-mixint_f025_i12_d005 1.0", + "bbob-biobj-mixint_f025_i12_d010 1.0", + "bbob-biobj-mixint_f025_i12_d020 1.0", + "bbob-biobj-mixint_f025_i12_d040 1.0", + "bbob-biobj-mixint_f025_i12_d080 1.0", + "bbob-biobj-mixint_f025_i12_d160 1.0", + "bbob-biobj-mixint_f025_i13_d005 1.0", + "bbob-biobj-mixint_f025_i13_d010 1.0", + "bbob-biobj-mixint_f025_i13_d020 1.0", + "bbob-biobj-mixint_f025_i13_d040 1.0", + "bbob-biobj-mixint_f025_i13_d080 1.0", + "bbob-biobj-mixint_f025_i13_d160 1.0", + "bbob-biobj-mixint_f025_i14_d005 1.0", + "bbob-biobj-mixint_f025_i14_d010 1.0", + "bbob-biobj-mixint_f025_i14_d020 1.0", + "bbob-biobj-mixint_f025_i14_d040 1.0", + "bbob-biobj-mixint_f025_i14_d080 1.0", + "bbob-biobj-mixint_f025_i14_d160 1.0", + "bbob-biobj-mixint_f025_i15_d005 1.0", + "bbob-biobj-mixint_f025_i15_d010 1.0", + "bbob-biobj-mixint_f025_i15_d020 1.0", + "bbob-biobj-mixint_f025_i15_d040 1.0", + "bbob-biobj-mixint_f025_i15_d080 1.0", + "bbob-biobj-mixint_f025_i15_d160 1.0", + "bbob-biobj-mixint_f026_i01_d005 1.0", + "bbob-biobj-mixint_f026_i01_d010 1.0", + "bbob-biobj-mixint_f026_i01_d020 1.0", + "bbob-biobj-mixint_f026_i01_d040 1.0", + "bbob-biobj-mixint_f026_i01_d080 1.0", + "bbob-biobj-mixint_f026_i01_d160 1.0", + "bbob-biobj-mixint_f026_i02_d005 1.0", + "bbob-biobj-mixint_f026_i02_d010 1.0", + "bbob-biobj-mixint_f026_i02_d020 1.0", + "bbob-biobj-mixint_f026_i02_d040 1.0", + "bbob-biobj-mixint_f026_i02_d080 1.0", + "bbob-biobj-mixint_f026_i02_d160 1.0", + "bbob-biobj-mixint_f026_i03_d005 1.0", + "bbob-biobj-mixint_f026_i03_d010 1.0", + "bbob-biobj-mixint_f026_i03_d020 1.0", + "bbob-biobj-mixint_f026_i03_d040 1.0", + "bbob-biobj-mixint_f026_i03_d080 1.0", + "bbob-biobj-mixint_f026_i03_d160 1.0", + "bbob-biobj-mixint_f026_i04_d005 1.0", + "bbob-biobj-mixint_f026_i04_d010 1.0", + "bbob-biobj-mixint_f026_i04_d020 1.0", + "bbob-biobj-mixint_f026_i04_d040 1.0", + "bbob-biobj-mixint_f026_i04_d080 1.0", + "bbob-biobj-mixint_f026_i04_d160 1.0", + "bbob-biobj-mixint_f026_i05_d005 1.0", + "bbob-biobj-mixint_f026_i05_d010 1.0", + "bbob-biobj-mixint_f026_i05_d020 1.0", + "bbob-biobj-mixint_f026_i05_d040 1.0", + "bbob-biobj-mixint_f026_i05_d080 1.0", + "bbob-biobj-mixint_f026_i05_d160 1.0", + "bbob-biobj-mixint_f026_i06_d005 1.0", + "bbob-biobj-mixint_f026_i06_d010 1.0", + "bbob-biobj-mixint_f026_i06_d020 1.0", + "bbob-biobj-mixint_f026_i06_d040 1.0", + "bbob-biobj-mixint_f026_i06_d080 1.0", + "bbob-biobj-mixint_f026_i06_d160 1.0", + "bbob-biobj-mixint_f026_i07_d005 1.0", + "bbob-biobj-mixint_f026_i07_d010 1.0", + "bbob-biobj-mixint_f026_i07_d020 1.0", + "bbob-biobj-mixint_f026_i07_d040 1.0", + "bbob-biobj-mixint_f026_i07_d080 1.0", + "bbob-biobj-mixint_f026_i07_d160 1.0", + "bbob-biobj-mixint_f026_i08_d005 1.0", + "bbob-biobj-mixint_f026_i08_d010 1.0", + "bbob-biobj-mixint_f026_i08_d020 1.0", + "bbob-biobj-mixint_f026_i08_d040 1.0", + "bbob-biobj-mixint_f026_i08_d080 1.0", + "bbob-biobj-mixint_f026_i08_d160 1.0", + "bbob-biobj-mixint_f026_i09_d005 1.0", + "bbob-biobj-mixint_f026_i09_d010 1.0", + "bbob-biobj-mixint_f026_i09_d020 1.0", + "bbob-biobj-mixint_f026_i09_d040 1.0", + "bbob-biobj-mixint_f026_i09_d080 1.0", + "bbob-biobj-mixint_f026_i09_d160 1.0", + "bbob-biobj-mixint_f026_i10_d005 1.0", + "bbob-biobj-mixint_f026_i10_d010 1.0", + "bbob-biobj-mixint_f026_i10_d020 1.0", + "bbob-biobj-mixint_f026_i10_d040 1.0", + "bbob-biobj-mixint_f026_i10_d080 1.0", + "bbob-biobj-mixint_f026_i10_d160 1.0", + "bbob-biobj-mixint_f026_i11_d005 1.0", + "bbob-biobj-mixint_f026_i11_d010 1.0", + "bbob-biobj-mixint_f026_i11_d020 1.0", + "bbob-biobj-mixint_f026_i11_d040 1.0", + "bbob-biobj-mixint_f026_i11_d080 1.0", + "bbob-biobj-mixint_f026_i11_d160 1.0", + "bbob-biobj-mixint_f026_i12_d005 1.0", + "bbob-biobj-mixint_f026_i12_d010 1.0", + "bbob-biobj-mixint_f026_i12_d020 1.0", + "bbob-biobj-mixint_f026_i12_d040 1.0", + "bbob-biobj-mixint_f026_i12_d080 1.0", + "bbob-biobj-mixint_f026_i12_d160 1.0", + "bbob-biobj-mixint_f026_i13_d005 1.0", + "bbob-biobj-mixint_f026_i13_d010 1.0", + "bbob-biobj-mixint_f026_i13_d020 1.0", + "bbob-biobj-mixint_f026_i13_d040 1.0", + "bbob-biobj-mixint_f026_i13_d080 1.0", + "bbob-biobj-mixint_f026_i13_d160 1.0", + "bbob-biobj-mixint_f026_i14_d005 1.0", + "bbob-biobj-mixint_f026_i14_d010 1.0", + "bbob-biobj-mixint_f026_i14_d020 1.0", + "bbob-biobj-mixint_f026_i14_d040 1.0", + "bbob-biobj-mixint_f026_i14_d080 1.0", + "bbob-biobj-mixint_f026_i14_d160 1.0", + "bbob-biobj-mixint_f026_i15_d005 1.0", + "bbob-biobj-mixint_f026_i15_d010 1.0", + "bbob-biobj-mixint_f026_i15_d020 1.0", + "bbob-biobj-mixint_f026_i15_d040 1.0", + "bbob-biobj-mixint_f026_i15_d080 1.0", + "bbob-biobj-mixint_f026_i15_d160 1.0", + "bbob-biobj-mixint_f027_i01_d005 1.0", + "bbob-biobj-mixint_f027_i01_d010 1.0", + "bbob-biobj-mixint_f027_i01_d020 1.0", + "bbob-biobj-mixint_f027_i01_d040 1.0", + "bbob-biobj-mixint_f027_i01_d080 1.0", + "bbob-biobj-mixint_f027_i01_d160 1.0", + "bbob-biobj-mixint_f027_i02_d005 1.0", + "bbob-biobj-mixint_f027_i02_d010 1.0", + "bbob-biobj-mixint_f027_i02_d020 1.0", + "bbob-biobj-mixint_f027_i02_d040 1.0", + "bbob-biobj-mixint_f027_i02_d080 1.0", + "bbob-biobj-mixint_f027_i02_d160 1.0", + "bbob-biobj-mixint_f027_i03_d005 1.0", + "bbob-biobj-mixint_f027_i03_d010 1.0", + "bbob-biobj-mixint_f027_i03_d020 1.0", + "bbob-biobj-mixint_f027_i03_d040 1.0", + "bbob-biobj-mixint_f027_i03_d080 1.0", + "bbob-biobj-mixint_f027_i03_d160 1.0", + "bbob-biobj-mixint_f027_i04_d005 1.0", + "bbob-biobj-mixint_f027_i04_d010 1.0", + "bbob-biobj-mixint_f027_i04_d020 1.0", + "bbob-biobj-mixint_f027_i04_d040 1.0", + "bbob-biobj-mixint_f027_i04_d080 1.0", + "bbob-biobj-mixint_f027_i04_d160 1.0", + "bbob-biobj-mixint_f027_i05_d005 1.0", + "bbob-biobj-mixint_f027_i05_d010 1.0", + "bbob-biobj-mixint_f027_i05_d020 1.0", + "bbob-biobj-mixint_f027_i05_d040 1.0", + "bbob-biobj-mixint_f027_i05_d080 1.0", + "bbob-biobj-mixint_f027_i05_d160 1.0", + "bbob-biobj-mixint_f027_i06_d005 1.0", + "bbob-biobj-mixint_f027_i06_d010 1.0", + "bbob-biobj-mixint_f027_i06_d020 1.0", + "bbob-biobj-mixint_f027_i06_d040 1.0", + "bbob-biobj-mixint_f027_i06_d080 1.0", + "bbob-biobj-mixint_f027_i06_d160 1.0", + "bbob-biobj-mixint_f027_i07_d005 1.0", + "bbob-biobj-mixint_f027_i07_d010 1.0", + "bbob-biobj-mixint_f027_i07_d020 1.0", + "bbob-biobj-mixint_f027_i07_d040 1.0", + "bbob-biobj-mixint_f027_i07_d080 1.0", + "bbob-biobj-mixint_f027_i07_d160 1.0", + "bbob-biobj-mixint_f027_i08_d005 1.0", + "bbob-biobj-mixint_f027_i08_d010 1.0", + "bbob-biobj-mixint_f027_i08_d020 1.0", + "bbob-biobj-mixint_f027_i08_d040 1.0", + "bbob-biobj-mixint_f027_i08_d080 1.0", + "bbob-biobj-mixint_f027_i08_d160 1.0", + "bbob-biobj-mixint_f027_i09_d005 1.0", + "bbob-biobj-mixint_f027_i09_d010 1.0", + "bbob-biobj-mixint_f027_i09_d020 1.0", + "bbob-biobj-mixint_f027_i09_d040 1.0", + "bbob-biobj-mixint_f027_i09_d080 1.0", + "bbob-biobj-mixint_f027_i09_d160 1.0", + "bbob-biobj-mixint_f027_i10_d005 1.0", + "bbob-biobj-mixint_f027_i10_d010 1.0", + "bbob-biobj-mixint_f027_i10_d020 1.0", + "bbob-biobj-mixint_f027_i10_d040 1.0", + "bbob-biobj-mixint_f027_i10_d080 1.0", + "bbob-biobj-mixint_f027_i10_d160 1.0", + "bbob-biobj-mixint_f027_i11_d005 1.0", + "bbob-biobj-mixint_f027_i11_d010 1.0", + "bbob-biobj-mixint_f027_i11_d020 1.0", + "bbob-biobj-mixint_f027_i11_d040 1.0", + "bbob-biobj-mixint_f027_i11_d080 1.0", + "bbob-biobj-mixint_f027_i11_d160 1.0", + "bbob-biobj-mixint_f027_i12_d005 1.0", + "bbob-biobj-mixint_f027_i12_d010 1.0", + "bbob-biobj-mixint_f027_i12_d020 1.0", + "bbob-biobj-mixint_f027_i12_d040 1.0", + "bbob-biobj-mixint_f027_i12_d080 1.0", + "bbob-biobj-mixint_f027_i12_d160 1.0", + "bbob-biobj-mixint_f027_i13_d005 1.0", + "bbob-biobj-mixint_f027_i13_d010 1.0", + "bbob-biobj-mixint_f027_i13_d020 1.0", + "bbob-biobj-mixint_f027_i13_d040 1.0", + "bbob-biobj-mixint_f027_i13_d080 1.0", + "bbob-biobj-mixint_f027_i13_d160 1.0", + "bbob-biobj-mixint_f027_i14_d005 1.0", + "bbob-biobj-mixint_f027_i14_d010 1.0", + "bbob-biobj-mixint_f027_i14_d020 1.0", + "bbob-biobj-mixint_f027_i14_d040 1.0", + "bbob-biobj-mixint_f027_i14_d080 1.0", + "bbob-biobj-mixint_f027_i14_d160 1.0", + "bbob-biobj-mixint_f027_i15_d005 1.0", + "bbob-biobj-mixint_f027_i15_d010 1.0", + "bbob-biobj-mixint_f027_i15_d020 1.0", + "bbob-biobj-mixint_f027_i15_d040 1.0", + "bbob-biobj-mixint_f027_i15_d080 1.0", + "bbob-biobj-mixint_f027_i15_d160 1.0", + "bbob-biobj-mixint_f028_i01_d005 1.0", + "bbob-biobj-mixint_f028_i01_d010 1.0", + "bbob-biobj-mixint_f028_i01_d020 1.0", + "bbob-biobj-mixint_f028_i01_d040 1.0", + "bbob-biobj-mixint_f028_i01_d080 1.0", + "bbob-biobj-mixint_f028_i01_d160 1.0", + "bbob-biobj-mixint_f028_i02_d005 1.0", + "bbob-biobj-mixint_f028_i02_d010 1.0", + "bbob-biobj-mixint_f028_i02_d020 1.0", + "bbob-biobj-mixint_f028_i02_d040 1.0", + "bbob-biobj-mixint_f028_i02_d080 1.0", + "bbob-biobj-mixint_f028_i02_d160 1.0", + "bbob-biobj-mixint_f028_i03_d005 1.0", + "bbob-biobj-mixint_f028_i03_d010 1.0", + "bbob-biobj-mixint_f028_i03_d020 1.0", + "bbob-biobj-mixint_f028_i03_d040 1.0", + "bbob-biobj-mixint_f028_i03_d080 1.0", + "bbob-biobj-mixint_f028_i03_d160 1.0", + "bbob-biobj-mixint_f028_i04_d005 1.0", + "bbob-biobj-mixint_f028_i04_d010 1.0", + "bbob-biobj-mixint_f028_i04_d020 1.0", + "bbob-biobj-mixint_f028_i04_d040 1.0", + "bbob-biobj-mixint_f028_i04_d080 1.0", + "bbob-biobj-mixint_f028_i04_d160 1.0", + "bbob-biobj-mixint_f028_i05_d005 1.0", + "bbob-biobj-mixint_f028_i05_d010 1.0", + "bbob-biobj-mixint_f028_i05_d020 1.0", + "bbob-biobj-mixint_f028_i05_d040 1.0", + "bbob-biobj-mixint_f028_i05_d080 1.0", + "bbob-biobj-mixint_f028_i05_d160 1.0", + "bbob-biobj-mixint_f028_i06_d005 1.0", + "bbob-biobj-mixint_f028_i06_d010 1.0", + "bbob-biobj-mixint_f028_i06_d020 1.0", + "bbob-biobj-mixint_f028_i06_d040 1.0", + "bbob-biobj-mixint_f028_i06_d080 1.0", + "bbob-biobj-mixint_f028_i06_d160 1.0", + "bbob-biobj-mixint_f028_i07_d005 1.0", + "bbob-biobj-mixint_f028_i07_d010 1.0", + "bbob-biobj-mixint_f028_i07_d020 1.0", + "bbob-biobj-mixint_f028_i07_d040 1.0", + "bbob-biobj-mixint_f028_i07_d080 1.0", + "bbob-biobj-mixint_f028_i07_d160 1.0", + "bbob-biobj-mixint_f028_i08_d005 1.0", + "bbob-biobj-mixint_f028_i08_d010 1.0", + "bbob-biobj-mixint_f028_i08_d020 1.0", + "bbob-biobj-mixint_f028_i08_d040 1.0", + "bbob-biobj-mixint_f028_i08_d080 1.0", + "bbob-biobj-mixint_f028_i08_d160 1.0", + "bbob-biobj-mixint_f028_i09_d005 1.0", + "bbob-biobj-mixint_f028_i09_d010 1.0", + "bbob-biobj-mixint_f028_i09_d020 1.0", + "bbob-biobj-mixint_f028_i09_d040 1.0", + "bbob-biobj-mixint_f028_i09_d080 1.0", + "bbob-biobj-mixint_f028_i09_d160 1.0", + "bbob-biobj-mixint_f028_i10_d005 1.0", + "bbob-biobj-mixint_f028_i10_d010 1.0", + "bbob-biobj-mixint_f028_i10_d020 1.0", + "bbob-biobj-mixint_f028_i10_d040 1.0", + "bbob-biobj-mixint_f028_i10_d080 1.0", + "bbob-biobj-mixint_f028_i10_d160 1.0", + "bbob-biobj-mixint_f028_i11_d005 1.0", + "bbob-biobj-mixint_f028_i11_d010 1.0", + "bbob-biobj-mixint_f028_i11_d020 1.0", + "bbob-biobj-mixint_f028_i11_d040 1.0", + "bbob-biobj-mixint_f028_i11_d080 1.0", + "bbob-biobj-mixint_f028_i11_d160 1.0", + "bbob-biobj-mixint_f028_i12_d005 1.0", + "bbob-biobj-mixint_f028_i12_d010 1.0", + "bbob-biobj-mixint_f028_i12_d020 1.0", + "bbob-biobj-mixint_f028_i12_d040 1.0", + "bbob-biobj-mixint_f028_i12_d080 1.0", + "bbob-biobj-mixint_f028_i12_d160 1.0", + "bbob-biobj-mixint_f028_i13_d005 1.0", + "bbob-biobj-mixint_f028_i13_d010 1.0", + "bbob-biobj-mixint_f028_i13_d020 1.0", + "bbob-biobj-mixint_f028_i13_d040 1.0", + "bbob-biobj-mixint_f028_i13_d080 1.0", + "bbob-biobj-mixint_f028_i13_d160 1.0", + "bbob-biobj-mixint_f028_i14_d005 1.0", + "bbob-biobj-mixint_f028_i14_d010 1.0", + "bbob-biobj-mixint_f028_i14_d020 1.0", + "bbob-biobj-mixint_f028_i14_d040 1.0", + "bbob-biobj-mixint_f028_i14_d080 1.0", + "bbob-biobj-mixint_f028_i14_d160 1.0", + "bbob-biobj-mixint_f028_i15_d005 1.0", + "bbob-biobj-mixint_f028_i15_d010 1.0", + "bbob-biobj-mixint_f028_i15_d020 1.0", + "bbob-biobj-mixint_f028_i15_d040 1.0", + "bbob-biobj-mixint_f028_i15_d080 1.0", + "bbob-biobj-mixint_f028_i15_d160 1.0", + "bbob-biobj-mixint_f029_i01_d005 1.0", + "bbob-biobj-mixint_f029_i01_d010 1.0", + "bbob-biobj-mixint_f029_i01_d020 1.0", + "bbob-biobj-mixint_f029_i01_d040 1.0", + "bbob-biobj-mixint_f029_i01_d080 1.0", + "bbob-biobj-mixint_f029_i01_d160 1.0", + "bbob-biobj-mixint_f029_i02_d005 1.0", + "bbob-biobj-mixint_f029_i02_d010 1.0", + "bbob-biobj-mixint_f029_i02_d020 1.0", + "bbob-biobj-mixint_f029_i02_d040 1.0", + "bbob-biobj-mixint_f029_i02_d080 1.0", + "bbob-biobj-mixint_f029_i02_d160 1.0", + "bbob-biobj-mixint_f029_i03_d005 1.0", + "bbob-biobj-mixint_f029_i03_d010 1.0", + "bbob-biobj-mixint_f029_i03_d020 1.0", + "bbob-biobj-mixint_f029_i03_d040 1.0", + "bbob-biobj-mixint_f029_i03_d080 1.0", + "bbob-biobj-mixint_f029_i03_d160 1.0", + "bbob-biobj-mixint_f029_i04_d005 1.0", + "bbob-biobj-mixint_f029_i04_d010 1.0", + "bbob-biobj-mixint_f029_i04_d020 1.0", + "bbob-biobj-mixint_f029_i04_d040 1.0", + "bbob-biobj-mixint_f029_i04_d080 1.0", + "bbob-biobj-mixint_f029_i04_d160 1.0", + "bbob-biobj-mixint_f029_i05_d005 1.0", + "bbob-biobj-mixint_f029_i05_d010 1.0", + "bbob-biobj-mixint_f029_i05_d020 1.0", + "bbob-biobj-mixint_f029_i05_d040 1.0", + "bbob-biobj-mixint_f029_i05_d080 1.0", + "bbob-biobj-mixint_f029_i05_d160 1.0", + "bbob-biobj-mixint_f029_i06_d005 1.0", + "bbob-biobj-mixint_f029_i06_d010 1.0", + "bbob-biobj-mixint_f029_i06_d020 1.0", + "bbob-biobj-mixint_f029_i06_d040 1.0", + "bbob-biobj-mixint_f029_i06_d080 1.0", + "bbob-biobj-mixint_f029_i06_d160 1.0", + "bbob-biobj-mixint_f029_i07_d005 1.0", + "bbob-biobj-mixint_f029_i07_d010 1.0", + "bbob-biobj-mixint_f029_i07_d020 1.0", + "bbob-biobj-mixint_f029_i07_d040 1.0", + "bbob-biobj-mixint_f029_i07_d080 1.0", + "bbob-biobj-mixint_f029_i07_d160 1.0", + "bbob-biobj-mixint_f029_i08_d005 1.0", + "bbob-biobj-mixint_f029_i08_d010 1.0", + "bbob-biobj-mixint_f029_i08_d020 1.0", + "bbob-biobj-mixint_f029_i08_d040 1.0", + "bbob-biobj-mixint_f029_i08_d080 1.0", + "bbob-biobj-mixint_f029_i08_d160 1.0", + "bbob-biobj-mixint_f029_i09_d005 1.0", + "bbob-biobj-mixint_f029_i09_d010 1.0", + "bbob-biobj-mixint_f029_i09_d020 1.0", + "bbob-biobj-mixint_f029_i09_d040 1.0", + "bbob-biobj-mixint_f029_i09_d080 1.0", + "bbob-biobj-mixint_f029_i09_d160 1.0", + "bbob-biobj-mixint_f029_i10_d005 1.0", + "bbob-biobj-mixint_f029_i10_d010 1.0", + "bbob-biobj-mixint_f029_i10_d020 1.0", + "bbob-biobj-mixint_f029_i10_d040 1.0", + "bbob-biobj-mixint_f029_i10_d080 1.0", + "bbob-biobj-mixint_f029_i10_d160 1.0", + "bbob-biobj-mixint_f029_i11_d005 1.0", + "bbob-biobj-mixint_f029_i11_d010 1.0", + "bbob-biobj-mixint_f029_i11_d020 1.0", + "bbob-biobj-mixint_f029_i11_d040 1.0", + "bbob-biobj-mixint_f029_i11_d080 1.0", + "bbob-biobj-mixint_f029_i11_d160 1.0", + "bbob-biobj-mixint_f029_i12_d005 1.0", + "bbob-biobj-mixint_f029_i12_d010 1.0", + "bbob-biobj-mixint_f029_i12_d020 1.0", + "bbob-biobj-mixint_f029_i12_d040 1.0", + "bbob-biobj-mixint_f029_i12_d080 1.0", + "bbob-biobj-mixint_f029_i12_d160 1.0", + "bbob-biobj-mixint_f029_i13_d005 1.0", + "bbob-biobj-mixint_f029_i13_d010 1.0", + "bbob-biobj-mixint_f029_i13_d020 1.0", + "bbob-biobj-mixint_f029_i13_d040 1.0", + "bbob-biobj-mixint_f029_i13_d080 1.0", + "bbob-biobj-mixint_f029_i13_d160 1.0", + "bbob-biobj-mixint_f029_i14_d005 1.0", + "bbob-biobj-mixint_f029_i14_d010 1.0", + "bbob-biobj-mixint_f029_i14_d020 1.0", + "bbob-biobj-mixint_f029_i14_d040 1.0", + "bbob-biobj-mixint_f029_i14_d080 1.0", + "bbob-biobj-mixint_f029_i14_d160 1.0", + "bbob-biobj-mixint_f029_i15_d005 1.0", + "bbob-biobj-mixint_f029_i15_d010 1.0", + "bbob-biobj-mixint_f029_i15_d020 1.0", + "bbob-biobj-mixint_f029_i15_d040 1.0", + "bbob-biobj-mixint_f029_i15_d080 1.0", + "bbob-biobj-mixint_f029_i15_d160 1.0", + "bbob-biobj-mixint_f030_i01_d005 1.0", + "bbob-biobj-mixint_f030_i01_d010 1.0", + "bbob-biobj-mixint_f030_i01_d020 1.0", + "bbob-biobj-mixint_f030_i01_d040 1.0", + "bbob-biobj-mixint_f030_i01_d080 1.0", + "bbob-biobj-mixint_f030_i01_d160 1.0", + "bbob-biobj-mixint_f030_i02_d005 1.0", + "bbob-biobj-mixint_f030_i02_d010 1.0", + "bbob-biobj-mixint_f030_i02_d020 1.0", + "bbob-biobj-mixint_f030_i02_d040 1.0", + "bbob-biobj-mixint_f030_i02_d080 1.0", + "bbob-biobj-mixint_f030_i02_d160 1.0", + "bbob-biobj-mixint_f030_i03_d005 1.0", + "bbob-biobj-mixint_f030_i03_d010 1.0", + "bbob-biobj-mixint_f030_i03_d020 1.0", + "bbob-biobj-mixint_f030_i03_d040 1.0", + "bbob-biobj-mixint_f030_i03_d080 1.0", + "bbob-biobj-mixint_f030_i03_d160 1.0", + "bbob-biobj-mixint_f030_i04_d005 1.0", + "bbob-biobj-mixint_f030_i04_d010 1.0", + "bbob-biobj-mixint_f030_i04_d020 1.0", + "bbob-biobj-mixint_f030_i04_d040 1.0", + "bbob-biobj-mixint_f030_i04_d080 1.0", + "bbob-biobj-mixint_f030_i04_d160 1.0", + "bbob-biobj-mixint_f030_i05_d005 1.0", + "bbob-biobj-mixint_f030_i05_d010 1.0", + "bbob-biobj-mixint_f030_i05_d020 1.0", + "bbob-biobj-mixint_f030_i05_d040 1.0", + "bbob-biobj-mixint_f030_i05_d080 1.0", + "bbob-biobj-mixint_f030_i05_d160 1.0", + "bbob-biobj-mixint_f030_i06_d005 1.0", + "bbob-biobj-mixint_f030_i06_d010 1.0", + "bbob-biobj-mixint_f030_i06_d020 1.0", + "bbob-biobj-mixint_f030_i06_d040 1.0", + "bbob-biobj-mixint_f030_i06_d080 1.0", + "bbob-biobj-mixint_f030_i06_d160 1.0", + "bbob-biobj-mixint_f030_i07_d005 1.0", + "bbob-biobj-mixint_f030_i07_d010 1.0", + "bbob-biobj-mixint_f030_i07_d020 1.0", + "bbob-biobj-mixint_f030_i07_d040 1.0", + "bbob-biobj-mixint_f030_i07_d080 1.0", + "bbob-biobj-mixint_f030_i07_d160 1.0", + "bbob-biobj-mixint_f030_i08_d005 1.0", + "bbob-biobj-mixint_f030_i08_d010 1.0", + "bbob-biobj-mixint_f030_i08_d020 1.0", + "bbob-biobj-mixint_f030_i08_d040 1.0", + "bbob-biobj-mixint_f030_i08_d080 1.0", + "bbob-biobj-mixint_f030_i08_d160 1.0", + "bbob-biobj-mixint_f030_i09_d005 1.0", + "bbob-biobj-mixint_f030_i09_d010 1.0", + "bbob-biobj-mixint_f030_i09_d020 1.0", + "bbob-biobj-mixint_f030_i09_d040 1.0", + "bbob-biobj-mixint_f030_i09_d080 1.0", + "bbob-biobj-mixint_f030_i09_d160 1.0", + "bbob-biobj-mixint_f030_i10_d005 1.0", + "bbob-biobj-mixint_f030_i10_d010 1.0", + "bbob-biobj-mixint_f030_i10_d020 1.0", + "bbob-biobj-mixint_f030_i10_d040 1.0", + "bbob-biobj-mixint_f030_i10_d080 1.0", + "bbob-biobj-mixint_f030_i10_d160 1.0", + "bbob-biobj-mixint_f030_i11_d005 1.0", + "bbob-biobj-mixint_f030_i11_d010 1.0", + "bbob-biobj-mixint_f030_i11_d020 1.0", + "bbob-biobj-mixint_f030_i11_d040 1.0", + "bbob-biobj-mixint_f030_i11_d080 1.0", + "bbob-biobj-mixint_f030_i11_d160 1.0", + "bbob-biobj-mixint_f030_i12_d005 1.0", + "bbob-biobj-mixint_f030_i12_d010 1.0", + "bbob-biobj-mixint_f030_i12_d020 1.0", + "bbob-biobj-mixint_f030_i12_d040 1.0", + "bbob-biobj-mixint_f030_i12_d080 1.0", + "bbob-biobj-mixint_f030_i12_d160 1.0", + "bbob-biobj-mixint_f030_i13_d005 1.0", + "bbob-biobj-mixint_f030_i13_d010 1.0", + "bbob-biobj-mixint_f030_i13_d020 1.0", + "bbob-biobj-mixint_f030_i13_d040 1.0", + "bbob-biobj-mixint_f030_i13_d080 1.0", + "bbob-biobj-mixint_f030_i13_d160 1.0", + "bbob-biobj-mixint_f030_i14_d005 1.0", + "bbob-biobj-mixint_f030_i14_d010 1.0", + "bbob-biobj-mixint_f030_i14_d020 1.0", + "bbob-biobj-mixint_f030_i14_d040 1.0", + "bbob-biobj-mixint_f030_i14_d080 1.0", + "bbob-biobj-mixint_f030_i14_d160 1.0", + "bbob-biobj-mixint_f030_i15_d005 1.0", + "bbob-biobj-mixint_f030_i15_d010 1.0", + "bbob-biobj-mixint_f030_i15_d020 1.0", + "bbob-biobj-mixint_f030_i15_d040 1.0", + "bbob-biobj-mixint_f030_i15_d080 1.0", + "bbob-biobj-mixint_f030_i15_d160 1.0", + "bbob-biobj-mixint_f031_i01_d005 1.0", + "bbob-biobj-mixint_f031_i01_d010 1.0", + "bbob-biobj-mixint_f031_i01_d020 1.0", + "bbob-biobj-mixint_f031_i01_d040 1.0", + "bbob-biobj-mixint_f031_i01_d080 1.0", + "bbob-biobj-mixint_f031_i01_d160 1.0", + "bbob-biobj-mixint_f031_i02_d005 1.0", + "bbob-biobj-mixint_f031_i02_d010 1.0", + "bbob-biobj-mixint_f031_i02_d020 1.0", + "bbob-biobj-mixint_f031_i02_d040 1.0", + "bbob-biobj-mixint_f031_i02_d080 1.0", + "bbob-biobj-mixint_f031_i02_d160 1.0", + "bbob-biobj-mixint_f031_i03_d005 1.0", + "bbob-biobj-mixint_f031_i03_d010 1.0", + "bbob-biobj-mixint_f031_i03_d020 1.0", + "bbob-biobj-mixint_f031_i03_d040 1.0", + "bbob-biobj-mixint_f031_i03_d080 1.0", + "bbob-biobj-mixint_f031_i03_d160 1.0", + "bbob-biobj-mixint_f031_i04_d005 1.0", + "bbob-biobj-mixint_f031_i04_d010 1.0", + "bbob-biobj-mixint_f031_i04_d020 1.0", + "bbob-biobj-mixint_f031_i04_d040 1.0", + "bbob-biobj-mixint_f031_i04_d080 1.0", + "bbob-biobj-mixint_f031_i04_d160 1.0", + "bbob-biobj-mixint_f031_i05_d005 1.0", + "bbob-biobj-mixint_f031_i05_d010 1.0", + "bbob-biobj-mixint_f031_i05_d020 1.0", + "bbob-biobj-mixint_f031_i05_d040 1.0", + "bbob-biobj-mixint_f031_i05_d080 1.0", + "bbob-biobj-mixint_f031_i05_d160 1.0", + "bbob-biobj-mixint_f031_i06_d005 1.0", + "bbob-biobj-mixint_f031_i06_d010 1.0", + "bbob-biobj-mixint_f031_i06_d020 1.0", + "bbob-biobj-mixint_f031_i06_d040 1.0", + "bbob-biobj-mixint_f031_i06_d080 1.0", + "bbob-biobj-mixint_f031_i06_d160 1.0", + "bbob-biobj-mixint_f031_i07_d005 1.0", + "bbob-biobj-mixint_f031_i07_d010 1.0", + "bbob-biobj-mixint_f031_i07_d020 1.0", + "bbob-biobj-mixint_f031_i07_d040 1.0", + "bbob-biobj-mixint_f031_i07_d080 1.0", + "bbob-biobj-mixint_f031_i07_d160 1.0", + "bbob-biobj-mixint_f031_i08_d005 1.0", + "bbob-biobj-mixint_f031_i08_d010 1.0", + "bbob-biobj-mixint_f031_i08_d020 1.0", + "bbob-biobj-mixint_f031_i08_d040 1.0", + "bbob-biobj-mixint_f031_i08_d080 1.0", + "bbob-biobj-mixint_f031_i08_d160 1.0", + "bbob-biobj-mixint_f031_i09_d005 1.0", + "bbob-biobj-mixint_f031_i09_d010 1.0", + "bbob-biobj-mixint_f031_i09_d020 1.0", + "bbob-biobj-mixint_f031_i09_d040 1.0", + "bbob-biobj-mixint_f031_i09_d080 1.0", + "bbob-biobj-mixint_f031_i09_d160 1.0", + "bbob-biobj-mixint_f031_i10_d005 1.0", + "bbob-biobj-mixint_f031_i10_d010 1.0", + "bbob-biobj-mixint_f031_i10_d020 1.0", + "bbob-biobj-mixint_f031_i10_d040 1.0", + "bbob-biobj-mixint_f031_i10_d080 1.0", + "bbob-biobj-mixint_f031_i10_d160 1.0", + "bbob-biobj-mixint_f031_i11_d005 1.0", + "bbob-biobj-mixint_f031_i11_d010 1.0", + "bbob-biobj-mixint_f031_i11_d020 1.0", + "bbob-biobj-mixint_f031_i11_d040 1.0", + "bbob-biobj-mixint_f031_i11_d080 1.0", + "bbob-biobj-mixint_f031_i11_d160 1.0", + "bbob-biobj-mixint_f031_i12_d005 1.0", + "bbob-biobj-mixint_f031_i12_d010 1.0", + "bbob-biobj-mixint_f031_i12_d020 1.0", + "bbob-biobj-mixint_f031_i12_d040 1.0", + "bbob-biobj-mixint_f031_i12_d080 1.0", + "bbob-biobj-mixint_f031_i12_d160 1.0", + "bbob-biobj-mixint_f031_i13_d005 1.0", + "bbob-biobj-mixint_f031_i13_d010 1.0", + "bbob-biobj-mixint_f031_i13_d020 1.0", + "bbob-biobj-mixint_f031_i13_d040 1.0", + "bbob-biobj-mixint_f031_i13_d080 1.0", + "bbob-biobj-mixint_f031_i13_d160 1.0", + "bbob-biobj-mixint_f031_i14_d005 1.0", + "bbob-biobj-mixint_f031_i14_d010 1.0", + "bbob-biobj-mixint_f031_i14_d020 1.0", + "bbob-biobj-mixint_f031_i14_d040 1.0", + "bbob-biobj-mixint_f031_i14_d080 1.0", + "bbob-biobj-mixint_f031_i14_d160 1.0", + "bbob-biobj-mixint_f031_i15_d005 1.0", + "bbob-biobj-mixint_f031_i15_d010 1.0", + "bbob-biobj-mixint_f031_i15_d020 1.0", + "bbob-biobj-mixint_f031_i15_d040 1.0", + "bbob-biobj-mixint_f031_i15_d080 1.0", + "bbob-biobj-mixint_f031_i15_d160 1.0", + "bbob-biobj-mixint_f032_i01_d005 1.0", + "bbob-biobj-mixint_f032_i01_d010 1.0", + "bbob-biobj-mixint_f032_i01_d020 1.0", + "bbob-biobj-mixint_f032_i01_d040 1.0", + "bbob-biobj-mixint_f032_i01_d080 1.0", + "bbob-biobj-mixint_f032_i01_d160 1.0", + "bbob-biobj-mixint_f032_i02_d005 1.0", + "bbob-biobj-mixint_f032_i02_d010 1.0", + "bbob-biobj-mixint_f032_i02_d020 1.0", + "bbob-biobj-mixint_f032_i02_d040 1.0", + "bbob-biobj-mixint_f032_i02_d080 1.0", + "bbob-biobj-mixint_f032_i02_d160 1.0", + "bbob-biobj-mixint_f032_i03_d005 1.0", + "bbob-biobj-mixint_f032_i03_d010 1.0", + "bbob-biobj-mixint_f032_i03_d020 1.0", + "bbob-biobj-mixint_f032_i03_d040 1.0", + "bbob-biobj-mixint_f032_i03_d080 1.0", + "bbob-biobj-mixint_f032_i03_d160 1.0", + "bbob-biobj-mixint_f032_i04_d005 1.0", + "bbob-biobj-mixint_f032_i04_d010 1.0", + "bbob-biobj-mixint_f032_i04_d020 1.0", + "bbob-biobj-mixint_f032_i04_d040 1.0", + "bbob-biobj-mixint_f032_i04_d080 1.0", + "bbob-biobj-mixint_f032_i04_d160 1.0", + "bbob-biobj-mixint_f032_i05_d005 1.0", + "bbob-biobj-mixint_f032_i05_d010 1.0", + "bbob-biobj-mixint_f032_i05_d020 1.0", + "bbob-biobj-mixint_f032_i05_d040 1.0", + "bbob-biobj-mixint_f032_i05_d080 1.0", + "bbob-biobj-mixint_f032_i05_d160 1.0", + "bbob-biobj-mixint_f032_i06_d005 1.0", + "bbob-biobj-mixint_f032_i06_d010 1.0", + "bbob-biobj-mixint_f032_i06_d020 1.0", + "bbob-biobj-mixint_f032_i06_d040 1.0", + "bbob-biobj-mixint_f032_i06_d080 1.0", + "bbob-biobj-mixint_f032_i06_d160 1.0", + "bbob-biobj-mixint_f032_i07_d005 1.0", + "bbob-biobj-mixint_f032_i07_d010 1.0", + "bbob-biobj-mixint_f032_i07_d020 1.0", + "bbob-biobj-mixint_f032_i07_d040 1.0", + "bbob-biobj-mixint_f032_i07_d080 1.0", + "bbob-biobj-mixint_f032_i07_d160 1.0", + "bbob-biobj-mixint_f032_i08_d005 1.0", + "bbob-biobj-mixint_f032_i08_d010 1.0", + "bbob-biobj-mixint_f032_i08_d020 1.0", + "bbob-biobj-mixint_f032_i08_d040 1.0", + "bbob-biobj-mixint_f032_i08_d080 1.0", + "bbob-biobj-mixint_f032_i08_d160 1.0", + "bbob-biobj-mixint_f032_i09_d005 1.0", + "bbob-biobj-mixint_f032_i09_d010 1.0", + "bbob-biobj-mixint_f032_i09_d020 1.0", + "bbob-biobj-mixint_f032_i09_d040 1.0", + "bbob-biobj-mixint_f032_i09_d080 1.0", + "bbob-biobj-mixint_f032_i09_d160 1.0", + "bbob-biobj-mixint_f032_i10_d005 1.0", + "bbob-biobj-mixint_f032_i10_d010 1.0", + "bbob-biobj-mixint_f032_i10_d020 1.0", + "bbob-biobj-mixint_f032_i10_d040 1.0", + "bbob-biobj-mixint_f032_i10_d080 1.0", + "bbob-biobj-mixint_f032_i10_d160 1.0", + "bbob-biobj-mixint_f032_i11_d005 1.0", + "bbob-biobj-mixint_f032_i11_d010 1.0", + "bbob-biobj-mixint_f032_i11_d020 1.0", + "bbob-biobj-mixint_f032_i11_d040 1.0", + "bbob-biobj-mixint_f032_i11_d080 1.0", + "bbob-biobj-mixint_f032_i11_d160 1.0", + "bbob-biobj-mixint_f032_i12_d005 1.0", + "bbob-biobj-mixint_f032_i12_d010 1.0", + "bbob-biobj-mixint_f032_i12_d020 1.0", + "bbob-biobj-mixint_f032_i12_d040 1.0", + "bbob-biobj-mixint_f032_i12_d080 1.0", + "bbob-biobj-mixint_f032_i12_d160 1.0", + "bbob-biobj-mixint_f032_i13_d005 1.0", + "bbob-biobj-mixint_f032_i13_d010 1.0", + "bbob-biobj-mixint_f032_i13_d020 1.0", + "bbob-biobj-mixint_f032_i13_d040 1.0", + "bbob-biobj-mixint_f032_i13_d080 1.0", + "bbob-biobj-mixint_f032_i13_d160 1.0", + "bbob-biobj-mixint_f032_i14_d005 1.0", + "bbob-biobj-mixint_f032_i14_d010 1.0", + "bbob-biobj-mixint_f032_i14_d020 1.0", + "bbob-biobj-mixint_f032_i14_d040 1.0", + "bbob-biobj-mixint_f032_i14_d080 1.0", + "bbob-biobj-mixint_f032_i14_d160 1.0", + "bbob-biobj-mixint_f032_i15_d005 1.0", + "bbob-biobj-mixint_f032_i15_d010 1.0", + "bbob-biobj-mixint_f032_i15_d020 1.0", + "bbob-biobj-mixint_f032_i15_d040 1.0", + "bbob-biobj-mixint_f032_i15_d080 1.0", + "bbob-biobj-mixint_f032_i15_d160 1.0", + "bbob-biobj-mixint_f033_i01_d005 1.0", + "bbob-biobj-mixint_f033_i01_d010 1.0", + "bbob-biobj-mixint_f033_i01_d020 1.0", + "bbob-biobj-mixint_f033_i01_d040 1.0", + "bbob-biobj-mixint_f033_i01_d080 1.0", + "bbob-biobj-mixint_f033_i01_d160 1.0", + "bbob-biobj-mixint_f033_i02_d005 1.0", + "bbob-biobj-mixint_f033_i02_d010 1.0", + "bbob-biobj-mixint_f033_i02_d020 1.0", + "bbob-biobj-mixint_f033_i02_d040 1.0", + "bbob-biobj-mixint_f033_i02_d080 1.0", + "bbob-biobj-mixint_f033_i02_d160 1.0", + "bbob-biobj-mixint_f033_i03_d005 1.0", + "bbob-biobj-mixint_f033_i03_d010 1.0", + "bbob-biobj-mixint_f033_i03_d020 1.0", + "bbob-biobj-mixint_f033_i03_d040 1.0", + "bbob-biobj-mixint_f033_i03_d080 1.0", + "bbob-biobj-mixint_f033_i03_d160 1.0", + "bbob-biobj-mixint_f033_i04_d005 1.0", + "bbob-biobj-mixint_f033_i04_d010 1.0", + "bbob-biobj-mixint_f033_i04_d020 1.0", + "bbob-biobj-mixint_f033_i04_d040 1.0", + "bbob-biobj-mixint_f033_i04_d080 1.0", + "bbob-biobj-mixint_f033_i04_d160 1.0", + "bbob-biobj-mixint_f033_i05_d005 1.0", + "bbob-biobj-mixint_f033_i05_d010 1.0", + "bbob-biobj-mixint_f033_i05_d020 1.0", + "bbob-biobj-mixint_f033_i05_d040 1.0", + "bbob-biobj-mixint_f033_i05_d080 1.0", + "bbob-biobj-mixint_f033_i05_d160 1.0", + "bbob-biobj-mixint_f033_i06_d005 1.0", + "bbob-biobj-mixint_f033_i06_d010 1.0", + "bbob-biobj-mixint_f033_i06_d020 1.0", + "bbob-biobj-mixint_f033_i06_d040 1.0", + "bbob-biobj-mixint_f033_i06_d080 1.0", + "bbob-biobj-mixint_f033_i06_d160 1.0", + "bbob-biobj-mixint_f033_i07_d005 1.0", + "bbob-biobj-mixint_f033_i07_d010 1.0", + "bbob-biobj-mixint_f033_i07_d020 1.0", + "bbob-biobj-mixint_f033_i07_d040 1.0", + "bbob-biobj-mixint_f033_i07_d080 1.0", + "bbob-biobj-mixint_f033_i07_d160 1.0", + "bbob-biobj-mixint_f033_i08_d005 1.0", + "bbob-biobj-mixint_f033_i08_d010 1.0", + "bbob-biobj-mixint_f033_i08_d020 1.0", + "bbob-biobj-mixint_f033_i08_d040 1.0", + "bbob-biobj-mixint_f033_i08_d080 1.0", + "bbob-biobj-mixint_f033_i08_d160 1.0", + "bbob-biobj-mixint_f033_i09_d005 1.0", + "bbob-biobj-mixint_f033_i09_d010 1.0", + "bbob-biobj-mixint_f033_i09_d020 1.0", + "bbob-biobj-mixint_f033_i09_d040 1.0", + "bbob-biobj-mixint_f033_i09_d080 1.0", + "bbob-biobj-mixint_f033_i09_d160 1.0", + "bbob-biobj-mixint_f033_i10_d005 1.0", + "bbob-biobj-mixint_f033_i10_d010 1.0", + "bbob-biobj-mixint_f033_i10_d020 1.0", + "bbob-biobj-mixint_f033_i10_d040 1.0", + "bbob-biobj-mixint_f033_i10_d080 1.0", + "bbob-biobj-mixint_f033_i10_d160 1.0", + "bbob-biobj-mixint_f033_i11_d005 1.0", + "bbob-biobj-mixint_f033_i11_d010 1.0", + "bbob-biobj-mixint_f033_i11_d020 1.0", + "bbob-biobj-mixint_f033_i11_d040 1.0", + "bbob-biobj-mixint_f033_i11_d080 1.0", + "bbob-biobj-mixint_f033_i11_d160 1.0", + "bbob-biobj-mixint_f033_i12_d005 1.0", + "bbob-biobj-mixint_f033_i12_d010 1.0", + "bbob-biobj-mixint_f033_i12_d020 1.0", + "bbob-biobj-mixint_f033_i12_d040 1.0", + "bbob-biobj-mixint_f033_i12_d080 1.0", + "bbob-biobj-mixint_f033_i12_d160 1.0", + "bbob-biobj-mixint_f033_i13_d005 1.0", + "bbob-biobj-mixint_f033_i13_d010 1.0", + "bbob-biobj-mixint_f033_i13_d020 1.0", + "bbob-biobj-mixint_f033_i13_d040 1.0", + "bbob-biobj-mixint_f033_i13_d080 1.0", + "bbob-biobj-mixint_f033_i13_d160 1.0", + "bbob-biobj-mixint_f033_i14_d005 1.0", + "bbob-biobj-mixint_f033_i14_d010 1.0", + "bbob-biobj-mixint_f033_i14_d020 1.0", + "bbob-biobj-mixint_f033_i14_d040 1.0", + "bbob-biobj-mixint_f033_i14_d080 1.0", + "bbob-biobj-mixint_f033_i14_d160 1.0", + "bbob-biobj-mixint_f033_i15_d005 1.0", + "bbob-biobj-mixint_f033_i15_d010 1.0", + "bbob-biobj-mixint_f033_i15_d020 1.0", + "bbob-biobj-mixint_f033_i15_d040 1.0", + "bbob-biobj-mixint_f033_i15_d080 1.0", + "bbob-biobj-mixint_f033_i15_d160 1.0", + "bbob-biobj-mixint_f034_i01_d005 1.0", + "bbob-biobj-mixint_f034_i01_d010 1.0", + "bbob-biobj-mixint_f034_i01_d020 1.0", + "bbob-biobj-mixint_f034_i01_d040 1.0", + "bbob-biobj-mixint_f034_i01_d080 1.0", + "bbob-biobj-mixint_f034_i01_d160 1.0", + "bbob-biobj-mixint_f034_i02_d005 1.0", + "bbob-biobj-mixint_f034_i02_d010 1.0", + "bbob-biobj-mixint_f034_i02_d020 1.0", + "bbob-biobj-mixint_f034_i02_d040 1.0", + "bbob-biobj-mixint_f034_i02_d080 1.0", + "bbob-biobj-mixint_f034_i02_d160 1.0", + "bbob-biobj-mixint_f034_i03_d005 1.0", + "bbob-biobj-mixint_f034_i03_d010 1.0", + "bbob-biobj-mixint_f034_i03_d020 1.0", + "bbob-biobj-mixint_f034_i03_d040 1.0", + "bbob-biobj-mixint_f034_i03_d080 1.0", + "bbob-biobj-mixint_f034_i03_d160 1.0", + "bbob-biobj-mixint_f034_i04_d005 1.0", + "bbob-biobj-mixint_f034_i04_d010 1.0", + "bbob-biobj-mixint_f034_i04_d020 1.0", + "bbob-biobj-mixint_f034_i04_d040 1.0", + "bbob-biobj-mixint_f034_i04_d080 1.0", + "bbob-biobj-mixint_f034_i04_d160 1.0", + "bbob-biobj-mixint_f034_i05_d005 1.0", + "bbob-biobj-mixint_f034_i05_d010 1.0", + "bbob-biobj-mixint_f034_i05_d020 1.0", + "bbob-biobj-mixint_f034_i05_d040 1.0", + "bbob-biobj-mixint_f034_i05_d080 1.0", + "bbob-biobj-mixint_f034_i05_d160 1.0", + "bbob-biobj-mixint_f034_i06_d005 1.0", + "bbob-biobj-mixint_f034_i06_d010 1.0", + "bbob-biobj-mixint_f034_i06_d020 1.0", + "bbob-biobj-mixint_f034_i06_d040 1.0", + "bbob-biobj-mixint_f034_i06_d080 1.0", + "bbob-biobj-mixint_f034_i06_d160 1.0", + "bbob-biobj-mixint_f034_i07_d005 1.0", + "bbob-biobj-mixint_f034_i07_d010 1.0", + "bbob-biobj-mixint_f034_i07_d020 1.0", + "bbob-biobj-mixint_f034_i07_d040 1.0", + "bbob-biobj-mixint_f034_i07_d080 1.0", + "bbob-biobj-mixint_f034_i07_d160 1.0", + "bbob-biobj-mixint_f034_i08_d005 1.0", + "bbob-biobj-mixint_f034_i08_d010 1.0", + "bbob-biobj-mixint_f034_i08_d020 1.0", + "bbob-biobj-mixint_f034_i08_d040 1.0", + "bbob-biobj-mixint_f034_i08_d080 1.0", + "bbob-biobj-mixint_f034_i08_d160 1.0", + "bbob-biobj-mixint_f034_i09_d005 1.0", + "bbob-biobj-mixint_f034_i09_d010 1.0", + "bbob-biobj-mixint_f034_i09_d020 1.0", + "bbob-biobj-mixint_f034_i09_d040 1.0", + "bbob-biobj-mixint_f034_i09_d080 1.0", + "bbob-biobj-mixint_f034_i09_d160 1.0", + "bbob-biobj-mixint_f034_i10_d005 1.0", + "bbob-biobj-mixint_f034_i10_d010 1.0", + "bbob-biobj-mixint_f034_i10_d020 1.0", + "bbob-biobj-mixint_f034_i10_d040 1.0", + "bbob-biobj-mixint_f034_i10_d080 1.0", + "bbob-biobj-mixint_f034_i10_d160 1.0", + "bbob-biobj-mixint_f034_i11_d005 1.0", + "bbob-biobj-mixint_f034_i11_d010 1.0", + "bbob-biobj-mixint_f034_i11_d020 1.0", + "bbob-biobj-mixint_f034_i11_d040 1.0", + "bbob-biobj-mixint_f034_i11_d080 1.0", + "bbob-biobj-mixint_f034_i11_d160 1.0", + "bbob-biobj-mixint_f034_i12_d005 1.0", + "bbob-biobj-mixint_f034_i12_d010 1.0", + "bbob-biobj-mixint_f034_i12_d020 1.0", + "bbob-biobj-mixint_f034_i12_d040 1.0", + "bbob-biobj-mixint_f034_i12_d080 1.0", + "bbob-biobj-mixint_f034_i12_d160 1.0", + "bbob-biobj-mixint_f034_i13_d005 1.0", + "bbob-biobj-mixint_f034_i13_d010 1.0", + "bbob-biobj-mixint_f034_i13_d020 1.0", + "bbob-biobj-mixint_f034_i13_d040 1.0", + "bbob-biobj-mixint_f034_i13_d080 1.0", + "bbob-biobj-mixint_f034_i13_d160 1.0", + "bbob-biobj-mixint_f034_i14_d005 1.0", + "bbob-biobj-mixint_f034_i14_d010 1.0", + "bbob-biobj-mixint_f034_i14_d020 1.0", + "bbob-biobj-mixint_f034_i14_d040 1.0", + "bbob-biobj-mixint_f034_i14_d080 1.0", + "bbob-biobj-mixint_f034_i14_d160 1.0", + "bbob-biobj-mixint_f034_i15_d005 1.0", + "bbob-biobj-mixint_f034_i15_d010 1.0", + "bbob-biobj-mixint_f034_i15_d020 1.0", + "bbob-biobj-mixint_f034_i15_d040 1.0", + "bbob-biobj-mixint_f034_i15_d080 1.0", + "bbob-biobj-mixint_f034_i15_d160 1.0", + "bbob-biobj-mixint_f035_i01_d005 1.0", + "bbob-biobj-mixint_f035_i01_d010 1.0", + "bbob-biobj-mixint_f035_i01_d020 1.0", + "bbob-biobj-mixint_f035_i01_d040 1.0", + "bbob-biobj-mixint_f035_i01_d080 1.0", + "bbob-biobj-mixint_f035_i01_d160 1.0", + "bbob-biobj-mixint_f035_i02_d005 1.0", + "bbob-biobj-mixint_f035_i02_d010 1.0", + "bbob-biobj-mixint_f035_i02_d020 1.0", + "bbob-biobj-mixint_f035_i02_d040 1.0", + "bbob-biobj-mixint_f035_i02_d080 1.0", + "bbob-biobj-mixint_f035_i02_d160 1.0", + "bbob-biobj-mixint_f035_i03_d005 1.0", + "bbob-biobj-mixint_f035_i03_d010 1.0", + "bbob-biobj-mixint_f035_i03_d020 1.0", + "bbob-biobj-mixint_f035_i03_d040 1.0", + "bbob-biobj-mixint_f035_i03_d080 1.0", + "bbob-biobj-mixint_f035_i03_d160 1.0", + "bbob-biobj-mixint_f035_i04_d005 1.0", + "bbob-biobj-mixint_f035_i04_d010 1.0", + "bbob-biobj-mixint_f035_i04_d020 1.0", + "bbob-biobj-mixint_f035_i04_d040 1.0", + "bbob-biobj-mixint_f035_i04_d080 1.0", + "bbob-biobj-mixint_f035_i04_d160 1.0", + "bbob-biobj-mixint_f035_i05_d005 1.0", + "bbob-biobj-mixint_f035_i05_d010 1.0", + "bbob-biobj-mixint_f035_i05_d020 1.0", + "bbob-biobj-mixint_f035_i05_d040 1.0", + "bbob-biobj-mixint_f035_i05_d080 1.0", + "bbob-biobj-mixint_f035_i05_d160 1.0", + "bbob-biobj-mixint_f035_i06_d005 1.0", + "bbob-biobj-mixint_f035_i06_d010 1.0", + "bbob-biobj-mixint_f035_i06_d020 1.0", + "bbob-biobj-mixint_f035_i06_d040 1.0", + "bbob-biobj-mixint_f035_i06_d080 1.0", + "bbob-biobj-mixint_f035_i06_d160 1.0", + "bbob-biobj-mixint_f035_i07_d005 1.0", + "bbob-biobj-mixint_f035_i07_d010 1.0", + "bbob-biobj-mixint_f035_i07_d020 1.0", + "bbob-biobj-mixint_f035_i07_d040 1.0", + "bbob-biobj-mixint_f035_i07_d080 1.0", + "bbob-biobj-mixint_f035_i07_d160 1.0", + "bbob-biobj-mixint_f035_i08_d005 1.0", + "bbob-biobj-mixint_f035_i08_d010 1.0", + "bbob-biobj-mixint_f035_i08_d020 1.0", + "bbob-biobj-mixint_f035_i08_d040 1.0", + "bbob-biobj-mixint_f035_i08_d080 1.0", + "bbob-biobj-mixint_f035_i08_d160 1.0", + "bbob-biobj-mixint_f035_i09_d005 1.0", + "bbob-biobj-mixint_f035_i09_d010 1.0", + "bbob-biobj-mixint_f035_i09_d020 1.0", + "bbob-biobj-mixint_f035_i09_d040 1.0", + "bbob-biobj-mixint_f035_i09_d080 1.0", + "bbob-biobj-mixint_f035_i09_d160 1.0", + "bbob-biobj-mixint_f035_i10_d005 1.0", + "bbob-biobj-mixint_f035_i10_d010 1.0", + "bbob-biobj-mixint_f035_i10_d020 1.0", + "bbob-biobj-mixint_f035_i10_d040 1.0", + "bbob-biobj-mixint_f035_i10_d080 1.0", + "bbob-biobj-mixint_f035_i10_d160 1.0", + "bbob-biobj-mixint_f035_i11_d005 1.0", + "bbob-biobj-mixint_f035_i11_d010 1.0", + "bbob-biobj-mixint_f035_i11_d020 1.0", + "bbob-biobj-mixint_f035_i11_d040 1.0", + "bbob-biobj-mixint_f035_i11_d080 1.0", + "bbob-biobj-mixint_f035_i11_d160 1.0", + "bbob-biobj-mixint_f035_i12_d005 1.0", + "bbob-biobj-mixint_f035_i12_d010 1.0", + "bbob-biobj-mixint_f035_i12_d020 1.0", + "bbob-biobj-mixint_f035_i12_d040 1.0", + "bbob-biobj-mixint_f035_i12_d080 1.0", + "bbob-biobj-mixint_f035_i12_d160 1.0", + "bbob-biobj-mixint_f035_i13_d005 1.0", + "bbob-biobj-mixint_f035_i13_d010 1.0", + "bbob-biobj-mixint_f035_i13_d020 1.0", + "bbob-biobj-mixint_f035_i13_d040 1.0", + "bbob-biobj-mixint_f035_i13_d080 1.0", + "bbob-biobj-mixint_f035_i13_d160 1.0", + "bbob-biobj-mixint_f035_i14_d005 1.0", + "bbob-biobj-mixint_f035_i14_d010 1.0", + "bbob-biobj-mixint_f035_i14_d020 1.0", + "bbob-biobj-mixint_f035_i14_d040 1.0", + "bbob-biobj-mixint_f035_i14_d080 1.0", + "bbob-biobj-mixint_f035_i14_d160 1.0", + "bbob-biobj-mixint_f035_i15_d005 1.0", + "bbob-biobj-mixint_f035_i15_d010 1.0", + "bbob-biobj-mixint_f035_i15_d020 1.0", + "bbob-biobj-mixint_f035_i15_d040 1.0", + "bbob-biobj-mixint_f035_i15_d080 1.0", + "bbob-biobj-mixint_f035_i15_d160 1.0", + "bbob-biobj-mixint_f036_i01_d005 1.0", + "bbob-biobj-mixint_f036_i01_d010 1.0", + "bbob-biobj-mixint_f036_i01_d020 1.0", + "bbob-biobj-mixint_f036_i01_d040 1.0", + "bbob-biobj-mixint_f036_i01_d080 1.0", + "bbob-biobj-mixint_f036_i01_d160 1.0", + "bbob-biobj-mixint_f036_i02_d005 1.0", + "bbob-biobj-mixint_f036_i02_d010 1.0", + "bbob-biobj-mixint_f036_i02_d020 1.0", + "bbob-biobj-mixint_f036_i02_d040 1.0", + "bbob-biobj-mixint_f036_i02_d080 1.0", + "bbob-biobj-mixint_f036_i02_d160 1.0", + "bbob-biobj-mixint_f036_i03_d005 1.0", + "bbob-biobj-mixint_f036_i03_d010 1.0", + "bbob-biobj-mixint_f036_i03_d020 1.0", + "bbob-biobj-mixint_f036_i03_d040 1.0", + "bbob-biobj-mixint_f036_i03_d080 1.0", + "bbob-biobj-mixint_f036_i03_d160 1.0", + "bbob-biobj-mixint_f036_i04_d005 1.0", + "bbob-biobj-mixint_f036_i04_d010 1.0", + "bbob-biobj-mixint_f036_i04_d020 1.0", + "bbob-biobj-mixint_f036_i04_d040 1.0", + "bbob-biobj-mixint_f036_i04_d080 1.0", + "bbob-biobj-mixint_f036_i04_d160 1.0", + "bbob-biobj-mixint_f036_i05_d005 1.0", + "bbob-biobj-mixint_f036_i05_d010 1.0", + "bbob-biobj-mixint_f036_i05_d020 1.0", + "bbob-biobj-mixint_f036_i05_d040 1.0", + "bbob-biobj-mixint_f036_i05_d080 1.0", + "bbob-biobj-mixint_f036_i05_d160 1.0", + "bbob-biobj-mixint_f036_i06_d005 1.0", + "bbob-biobj-mixint_f036_i06_d010 1.0", + "bbob-biobj-mixint_f036_i06_d020 1.0", + "bbob-biobj-mixint_f036_i06_d040 1.0", + "bbob-biobj-mixint_f036_i06_d080 1.0", + "bbob-biobj-mixint_f036_i06_d160 1.0", + "bbob-biobj-mixint_f036_i07_d005 1.0", + "bbob-biobj-mixint_f036_i07_d010 1.0", + "bbob-biobj-mixint_f036_i07_d020 1.0", + "bbob-biobj-mixint_f036_i07_d040 1.0", + "bbob-biobj-mixint_f036_i07_d080 1.0", + "bbob-biobj-mixint_f036_i07_d160 1.0", + "bbob-biobj-mixint_f036_i08_d005 1.0", + "bbob-biobj-mixint_f036_i08_d010 1.0", + "bbob-biobj-mixint_f036_i08_d020 1.0", + "bbob-biobj-mixint_f036_i08_d040 1.0", + "bbob-biobj-mixint_f036_i08_d080 1.0", + "bbob-biobj-mixint_f036_i08_d160 1.0", + "bbob-biobj-mixint_f036_i09_d005 1.0", + "bbob-biobj-mixint_f036_i09_d010 1.0", + "bbob-biobj-mixint_f036_i09_d020 1.0", + "bbob-biobj-mixint_f036_i09_d040 1.0", + "bbob-biobj-mixint_f036_i09_d080 1.0", + "bbob-biobj-mixint_f036_i09_d160 1.0", + "bbob-biobj-mixint_f036_i10_d005 1.0", + "bbob-biobj-mixint_f036_i10_d010 1.0", + "bbob-biobj-mixint_f036_i10_d020 1.0", + "bbob-biobj-mixint_f036_i10_d040 1.0", + "bbob-biobj-mixint_f036_i10_d080 1.0", + "bbob-biobj-mixint_f036_i10_d160 1.0", + "bbob-biobj-mixint_f036_i11_d005 1.0", + "bbob-biobj-mixint_f036_i11_d010 1.0", + "bbob-biobj-mixint_f036_i11_d020 1.0", + "bbob-biobj-mixint_f036_i11_d040 1.0", + "bbob-biobj-mixint_f036_i11_d080 1.0", + "bbob-biobj-mixint_f036_i11_d160 1.0", + "bbob-biobj-mixint_f036_i12_d005 1.0", + "bbob-biobj-mixint_f036_i12_d010 1.0", + "bbob-biobj-mixint_f036_i12_d020 1.0", + "bbob-biobj-mixint_f036_i12_d040 1.0", + "bbob-biobj-mixint_f036_i12_d080 1.0", + "bbob-biobj-mixint_f036_i12_d160 1.0", + "bbob-biobj-mixint_f036_i13_d005 1.0", + "bbob-biobj-mixint_f036_i13_d010 1.0", + "bbob-biobj-mixint_f036_i13_d020 1.0", + "bbob-biobj-mixint_f036_i13_d040 1.0", + "bbob-biobj-mixint_f036_i13_d080 1.0", + "bbob-biobj-mixint_f036_i13_d160 1.0", + "bbob-biobj-mixint_f036_i14_d005 1.0", + "bbob-biobj-mixint_f036_i14_d010 1.0", + "bbob-biobj-mixint_f036_i14_d020 1.0", + "bbob-biobj-mixint_f036_i14_d040 1.0", + "bbob-biobj-mixint_f036_i14_d080 1.0", + "bbob-biobj-mixint_f036_i14_d160 1.0", + "bbob-biobj-mixint_f036_i15_d005 1.0", + "bbob-biobj-mixint_f036_i15_d010 1.0", + "bbob-biobj-mixint_f036_i15_d020 1.0", + "bbob-biobj-mixint_f036_i15_d040 1.0", + "bbob-biobj-mixint_f036_i15_d080 1.0", + "bbob-biobj-mixint_f036_i15_d160 1.0", + "bbob-biobj-mixint_f037_i01_d005 1.0", + "bbob-biobj-mixint_f037_i01_d010 1.0", + "bbob-biobj-mixint_f037_i01_d020 1.0", + "bbob-biobj-mixint_f037_i01_d040 1.0", + "bbob-biobj-mixint_f037_i01_d080 1.0", + "bbob-biobj-mixint_f037_i01_d160 1.0", + "bbob-biobj-mixint_f037_i02_d005 1.0", + "bbob-biobj-mixint_f037_i02_d010 1.0", + "bbob-biobj-mixint_f037_i02_d020 1.0", + "bbob-biobj-mixint_f037_i02_d040 1.0", + "bbob-biobj-mixint_f037_i02_d080 1.0", + "bbob-biobj-mixint_f037_i02_d160 1.0", + "bbob-biobj-mixint_f037_i03_d005 1.0", + "bbob-biobj-mixint_f037_i03_d010 1.0", + "bbob-biobj-mixint_f037_i03_d020 1.0", + "bbob-biobj-mixint_f037_i03_d040 1.0", + "bbob-biobj-mixint_f037_i03_d080 1.0", + "bbob-biobj-mixint_f037_i03_d160 1.0", + "bbob-biobj-mixint_f037_i04_d005 1.0", + "bbob-biobj-mixint_f037_i04_d010 1.0", + "bbob-biobj-mixint_f037_i04_d020 1.0", + "bbob-biobj-mixint_f037_i04_d040 1.0", + "bbob-biobj-mixint_f037_i04_d080 1.0", + "bbob-biobj-mixint_f037_i04_d160 1.0", + "bbob-biobj-mixint_f037_i05_d005 1.0", + "bbob-biobj-mixint_f037_i05_d010 1.0", + "bbob-biobj-mixint_f037_i05_d020 1.0", + "bbob-biobj-mixint_f037_i05_d040 1.0", + "bbob-biobj-mixint_f037_i05_d080 1.0", + "bbob-biobj-mixint_f037_i05_d160 1.0", + "bbob-biobj-mixint_f037_i06_d005 1.0", + "bbob-biobj-mixint_f037_i06_d010 1.0", + "bbob-biobj-mixint_f037_i06_d020 1.0", + "bbob-biobj-mixint_f037_i06_d040 1.0", + "bbob-biobj-mixint_f037_i06_d080 1.0", + "bbob-biobj-mixint_f037_i06_d160 1.0", + "bbob-biobj-mixint_f037_i07_d005 1.0", + "bbob-biobj-mixint_f037_i07_d010 1.0", + "bbob-biobj-mixint_f037_i07_d020 1.0", + "bbob-biobj-mixint_f037_i07_d040 1.0", + "bbob-biobj-mixint_f037_i07_d080 1.0", + "bbob-biobj-mixint_f037_i07_d160 1.0", + "bbob-biobj-mixint_f037_i08_d005 1.0", + "bbob-biobj-mixint_f037_i08_d010 1.0", + "bbob-biobj-mixint_f037_i08_d020 1.0", + "bbob-biobj-mixint_f037_i08_d040 1.0", + "bbob-biobj-mixint_f037_i08_d080 1.0", + "bbob-biobj-mixint_f037_i08_d160 1.0", + "bbob-biobj-mixint_f037_i09_d005 1.0", + "bbob-biobj-mixint_f037_i09_d010 1.0", + "bbob-biobj-mixint_f037_i09_d020 1.0", + "bbob-biobj-mixint_f037_i09_d040 1.0", + "bbob-biobj-mixint_f037_i09_d080 1.0", + "bbob-biobj-mixint_f037_i09_d160 1.0", + "bbob-biobj-mixint_f037_i10_d005 1.0", + "bbob-biobj-mixint_f037_i10_d010 1.0", + "bbob-biobj-mixint_f037_i10_d020 1.0", + "bbob-biobj-mixint_f037_i10_d040 1.0", + "bbob-biobj-mixint_f037_i10_d080 1.0", + "bbob-biobj-mixint_f037_i10_d160 1.0", + "bbob-biobj-mixint_f037_i11_d005 1.0", + "bbob-biobj-mixint_f037_i11_d010 1.0", + "bbob-biobj-mixint_f037_i11_d020 1.0", + "bbob-biobj-mixint_f037_i11_d040 1.0", + "bbob-biobj-mixint_f037_i11_d080 1.0", + "bbob-biobj-mixint_f037_i11_d160 1.0", + "bbob-biobj-mixint_f037_i12_d005 1.0", + "bbob-biobj-mixint_f037_i12_d010 1.0", + "bbob-biobj-mixint_f037_i12_d020 1.0", + "bbob-biobj-mixint_f037_i12_d040 1.0", + "bbob-biobj-mixint_f037_i12_d080 1.0", + "bbob-biobj-mixint_f037_i12_d160 1.0", + "bbob-biobj-mixint_f037_i13_d005 1.0", + "bbob-biobj-mixint_f037_i13_d010 1.0", + "bbob-biobj-mixint_f037_i13_d020 1.0", + "bbob-biobj-mixint_f037_i13_d040 1.0", + "bbob-biobj-mixint_f037_i13_d080 1.0", + "bbob-biobj-mixint_f037_i13_d160 1.0", + "bbob-biobj-mixint_f037_i14_d005 1.0", + "bbob-biobj-mixint_f037_i14_d010 1.0", + "bbob-biobj-mixint_f037_i14_d020 1.0", + "bbob-biobj-mixint_f037_i14_d040 1.0", + "bbob-biobj-mixint_f037_i14_d080 1.0", + "bbob-biobj-mixint_f037_i14_d160 1.0", + "bbob-biobj-mixint_f037_i15_d005 1.0", + "bbob-biobj-mixint_f037_i15_d010 1.0", + "bbob-biobj-mixint_f037_i15_d020 1.0", + "bbob-biobj-mixint_f037_i15_d040 1.0", + "bbob-biobj-mixint_f037_i15_d080 1.0", + "bbob-biobj-mixint_f037_i15_d160 1.0", + "bbob-biobj-mixint_f038_i01_d005 1.0", + "bbob-biobj-mixint_f038_i01_d010 1.0", + "bbob-biobj-mixint_f038_i01_d020 1.0", + "bbob-biobj-mixint_f038_i01_d040 1.0", + "bbob-biobj-mixint_f038_i01_d080 1.0", + "bbob-biobj-mixint_f038_i01_d160 1.0", + "bbob-biobj-mixint_f038_i02_d005 1.0", + "bbob-biobj-mixint_f038_i02_d010 1.0", + "bbob-biobj-mixint_f038_i02_d020 1.0", + "bbob-biobj-mixint_f038_i02_d040 1.0", + "bbob-biobj-mixint_f038_i02_d080 1.0", + "bbob-biobj-mixint_f038_i02_d160 1.0", + "bbob-biobj-mixint_f038_i03_d005 1.0", + "bbob-biobj-mixint_f038_i03_d010 1.0", + "bbob-biobj-mixint_f038_i03_d020 1.0", + "bbob-biobj-mixint_f038_i03_d040 1.0", + "bbob-biobj-mixint_f038_i03_d080 1.0", + "bbob-biobj-mixint_f038_i03_d160 1.0", + "bbob-biobj-mixint_f038_i04_d005 1.0", + "bbob-biobj-mixint_f038_i04_d010 1.0", + "bbob-biobj-mixint_f038_i04_d020 1.0", + "bbob-biobj-mixint_f038_i04_d040 1.0", + "bbob-biobj-mixint_f038_i04_d080 1.0", + "bbob-biobj-mixint_f038_i04_d160 1.0", + "bbob-biobj-mixint_f038_i05_d005 1.0", + "bbob-biobj-mixint_f038_i05_d010 1.0", + "bbob-biobj-mixint_f038_i05_d020 1.0", + "bbob-biobj-mixint_f038_i05_d040 1.0", + "bbob-biobj-mixint_f038_i05_d080 1.0", + "bbob-biobj-mixint_f038_i05_d160 1.0", + "bbob-biobj-mixint_f038_i06_d005 1.0", + "bbob-biobj-mixint_f038_i06_d010 1.0", + "bbob-biobj-mixint_f038_i06_d020 1.0", + "bbob-biobj-mixint_f038_i06_d040 1.0", + "bbob-biobj-mixint_f038_i06_d080 1.0", + "bbob-biobj-mixint_f038_i06_d160 1.0", + "bbob-biobj-mixint_f038_i07_d005 1.0", + "bbob-biobj-mixint_f038_i07_d010 1.0", + "bbob-biobj-mixint_f038_i07_d020 1.0", + "bbob-biobj-mixint_f038_i07_d040 1.0", + "bbob-biobj-mixint_f038_i07_d080 1.0", + "bbob-biobj-mixint_f038_i07_d160 1.0", + "bbob-biobj-mixint_f038_i08_d005 1.0", + "bbob-biobj-mixint_f038_i08_d010 1.0", + "bbob-biobj-mixint_f038_i08_d020 1.0", + "bbob-biobj-mixint_f038_i08_d040 1.0", + "bbob-biobj-mixint_f038_i08_d080 1.0", + "bbob-biobj-mixint_f038_i08_d160 1.0", + "bbob-biobj-mixint_f038_i09_d005 1.0", + "bbob-biobj-mixint_f038_i09_d010 1.0", + "bbob-biobj-mixint_f038_i09_d020 1.0", + "bbob-biobj-mixint_f038_i09_d040 1.0", + "bbob-biobj-mixint_f038_i09_d080 1.0", + "bbob-biobj-mixint_f038_i09_d160 1.0", + "bbob-biobj-mixint_f038_i10_d005 1.0", + "bbob-biobj-mixint_f038_i10_d010 1.0", + "bbob-biobj-mixint_f038_i10_d020 1.0", + "bbob-biobj-mixint_f038_i10_d040 1.0", + "bbob-biobj-mixint_f038_i10_d080 1.0", + "bbob-biobj-mixint_f038_i10_d160 1.0", + "bbob-biobj-mixint_f038_i11_d005 1.0", + "bbob-biobj-mixint_f038_i11_d010 1.0", + "bbob-biobj-mixint_f038_i11_d020 1.0", + "bbob-biobj-mixint_f038_i11_d040 1.0", + "bbob-biobj-mixint_f038_i11_d080 1.0", + "bbob-biobj-mixint_f038_i11_d160 1.0", + "bbob-biobj-mixint_f038_i12_d005 1.0", + "bbob-biobj-mixint_f038_i12_d010 1.0", + "bbob-biobj-mixint_f038_i12_d020 1.0", + "bbob-biobj-mixint_f038_i12_d040 1.0", + "bbob-biobj-mixint_f038_i12_d080 1.0", + "bbob-biobj-mixint_f038_i12_d160 1.0", + "bbob-biobj-mixint_f038_i13_d005 1.0", + "bbob-biobj-mixint_f038_i13_d010 1.0", + "bbob-biobj-mixint_f038_i13_d020 1.0", + "bbob-biobj-mixint_f038_i13_d040 1.0", + "bbob-biobj-mixint_f038_i13_d080 1.0", + "bbob-biobj-mixint_f038_i13_d160 1.0", + "bbob-biobj-mixint_f038_i14_d005 1.0", + "bbob-biobj-mixint_f038_i14_d010 1.0", + "bbob-biobj-mixint_f038_i14_d020 1.0", + "bbob-biobj-mixint_f038_i14_d040 1.0", + "bbob-biobj-mixint_f038_i14_d080 1.0", + "bbob-biobj-mixint_f038_i14_d160 1.0", + "bbob-biobj-mixint_f038_i15_d005 1.0", + "bbob-biobj-mixint_f038_i15_d010 1.0", + "bbob-biobj-mixint_f038_i15_d020 1.0", + "bbob-biobj-mixint_f038_i15_d040 1.0", + "bbob-biobj-mixint_f038_i15_d080 1.0", + "bbob-biobj-mixint_f038_i15_d160 1.0", + "bbob-biobj-mixint_f039_i01_d005 1.0", + "bbob-biobj-mixint_f039_i01_d010 1.0", + "bbob-biobj-mixint_f039_i01_d020 1.0", + "bbob-biobj-mixint_f039_i01_d040 1.0", + "bbob-biobj-mixint_f039_i01_d080 1.0", + "bbob-biobj-mixint_f039_i01_d160 1.0", + "bbob-biobj-mixint_f039_i02_d005 1.0", + "bbob-biobj-mixint_f039_i02_d010 1.0", + "bbob-biobj-mixint_f039_i02_d020 1.0", + "bbob-biobj-mixint_f039_i02_d040 1.0", + "bbob-biobj-mixint_f039_i02_d080 1.0", + "bbob-biobj-mixint_f039_i02_d160 1.0", + "bbob-biobj-mixint_f039_i03_d005 1.0", + "bbob-biobj-mixint_f039_i03_d010 1.0", + "bbob-biobj-mixint_f039_i03_d020 1.0", + "bbob-biobj-mixint_f039_i03_d040 1.0", + "bbob-biobj-mixint_f039_i03_d080 1.0", + "bbob-biobj-mixint_f039_i03_d160 1.0", + "bbob-biobj-mixint_f039_i04_d005 1.0", + "bbob-biobj-mixint_f039_i04_d010 1.0", + "bbob-biobj-mixint_f039_i04_d020 1.0", + "bbob-biobj-mixint_f039_i04_d040 1.0", + "bbob-biobj-mixint_f039_i04_d080 1.0", + "bbob-biobj-mixint_f039_i04_d160 1.0", + "bbob-biobj-mixint_f039_i05_d005 1.0", + "bbob-biobj-mixint_f039_i05_d010 1.0", + "bbob-biobj-mixint_f039_i05_d020 1.0", + "bbob-biobj-mixint_f039_i05_d040 1.0", + "bbob-biobj-mixint_f039_i05_d080 1.0", + "bbob-biobj-mixint_f039_i05_d160 1.0", + "bbob-biobj-mixint_f039_i06_d005 1.0", + "bbob-biobj-mixint_f039_i06_d010 1.0", + "bbob-biobj-mixint_f039_i06_d020 1.0", + "bbob-biobj-mixint_f039_i06_d040 1.0", + "bbob-biobj-mixint_f039_i06_d080 1.0", + "bbob-biobj-mixint_f039_i06_d160 1.0", + "bbob-biobj-mixint_f039_i07_d005 1.0", + "bbob-biobj-mixint_f039_i07_d010 1.0", + "bbob-biobj-mixint_f039_i07_d020 1.0", + "bbob-biobj-mixint_f039_i07_d040 1.0", + "bbob-biobj-mixint_f039_i07_d080 1.0", + "bbob-biobj-mixint_f039_i07_d160 1.0", + "bbob-biobj-mixint_f039_i08_d005 1.0", + "bbob-biobj-mixint_f039_i08_d010 1.0", + "bbob-biobj-mixint_f039_i08_d020 1.0", + "bbob-biobj-mixint_f039_i08_d040 1.0", + "bbob-biobj-mixint_f039_i08_d080 1.0", + "bbob-biobj-mixint_f039_i08_d160 1.0", + "bbob-biobj-mixint_f039_i09_d005 1.0", + "bbob-biobj-mixint_f039_i09_d010 1.0", + "bbob-biobj-mixint_f039_i09_d020 1.0", + "bbob-biobj-mixint_f039_i09_d040 1.0", + "bbob-biobj-mixint_f039_i09_d080 1.0", + "bbob-biobj-mixint_f039_i09_d160 1.0", + "bbob-biobj-mixint_f039_i10_d005 1.0", + "bbob-biobj-mixint_f039_i10_d010 1.0", + "bbob-biobj-mixint_f039_i10_d020 1.0", + "bbob-biobj-mixint_f039_i10_d040 1.0", + "bbob-biobj-mixint_f039_i10_d080 1.0", + "bbob-biobj-mixint_f039_i10_d160 1.0", + "bbob-biobj-mixint_f039_i11_d005 1.0", + "bbob-biobj-mixint_f039_i11_d010 1.0", + "bbob-biobj-mixint_f039_i11_d020 1.0", + "bbob-biobj-mixint_f039_i11_d040 1.0", + "bbob-biobj-mixint_f039_i11_d080 1.0", + "bbob-biobj-mixint_f039_i11_d160 1.0", + "bbob-biobj-mixint_f039_i12_d005 1.0", + "bbob-biobj-mixint_f039_i12_d010 1.0", + "bbob-biobj-mixint_f039_i12_d020 1.0", + "bbob-biobj-mixint_f039_i12_d040 1.0", + "bbob-biobj-mixint_f039_i12_d080 1.0", + "bbob-biobj-mixint_f039_i12_d160 1.0", + "bbob-biobj-mixint_f039_i13_d005 1.0", + "bbob-biobj-mixint_f039_i13_d010 1.0", + "bbob-biobj-mixint_f039_i13_d020 1.0", + "bbob-biobj-mixint_f039_i13_d040 1.0", + "bbob-biobj-mixint_f039_i13_d080 1.0", + "bbob-biobj-mixint_f039_i13_d160 1.0", + "bbob-biobj-mixint_f039_i14_d005 1.0", + "bbob-biobj-mixint_f039_i14_d010 1.0", + "bbob-biobj-mixint_f039_i14_d020 1.0", + "bbob-biobj-mixint_f039_i14_d040 1.0", + "bbob-biobj-mixint_f039_i14_d080 1.0", + "bbob-biobj-mixint_f039_i14_d160 1.0", + "bbob-biobj-mixint_f039_i15_d005 1.0", + "bbob-biobj-mixint_f039_i15_d010 1.0", + "bbob-biobj-mixint_f039_i15_d020 1.0", + "bbob-biobj-mixint_f039_i15_d040 1.0", + "bbob-biobj-mixint_f039_i15_d080 1.0", + "bbob-biobj-mixint_f039_i15_d160 1.0", + "bbob-biobj-mixint_f040_i01_d005 1.0", + "bbob-biobj-mixint_f040_i01_d010 1.0", + "bbob-biobj-mixint_f040_i01_d020 1.0", + "bbob-biobj-mixint_f040_i01_d040 1.0", + "bbob-biobj-mixint_f040_i01_d080 1.0", + "bbob-biobj-mixint_f040_i01_d160 1.0", + "bbob-biobj-mixint_f040_i02_d005 1.0", + "bbob-biobj-mixint_f040_i02_d010 1.0", + "bbob-biobj-mixint_f040_i02_d020 1.0", + "bbob-biobj-mixint_f040_i02_d040 1.0", + "bbob-biobj-mixint_f040_i02_d080 1.0", + "bbob-biobj-mixint_f040_i02_d160 1.0", + "bbob-biobj-mixint_f040_i03_d005 1.0", + "bbob-biobj-mixint_f040_i03_d010 1.0", + "bbob-biobj-mixint_f040_i03_d020 1.0", + "bbob-biobj-mixint_f040_i03_d040 1.0", + "bbob-biobj-mixint_f040_i03_d080 1.0", + "bbob-biobj-mixint_f040_i03_d160 1.0", + "bbob-biobj-mixint_f040_i04_d005 1.0", + "bbob-biobj-mixint_f040_i04_d010 1.0", + "bbob-biobj-mixint_f040_i04_d020 1.0", + "bbob-biobj-mixint_f040_i04_d040 1.0", + "bbob-biobj-mixint_f040_i04_d080 1.0", + "bbob-biobj-mixint_f040_i04_d160 1.0", + "bbob-biobj-mixint_f040_i05_d005 1.0", + "bbob-biobj-mixint_f040_i05_d010 1.0", + "bbob-biobj-mixint_f040_i05_d020 1.0", + "bbob-biobj-mixint_f040_i05_d040 1.0", + "bbob-biobj-mixint_f040_i05_d080 1.0", + "bbob-biobj-mixint_f040_i05_d160 1.0", + "bbob-biobj-mixint_f040_i06_d005 1.0", + "bbob-biobj-mixint_f040_i06_d010 1.0", + "bbob-biobj-mixint_f040_i06_d020 1.0", + "bbob-biobj-mixint_f040_i06_d040 1.0", + "bbob-biobj-mixint_f040_i06_d080 1.0", + "bbob-biobj-mixint_f040_i06_d160 1.0", + "bbob-biobj-mixint_f040_i07_d005 1.0", + "bbob-biobj-mixint_f040_i07_d010 1.0", + "bbob-biobj-mixint_f040_i07_d020 1.0", + "bbob-biobj-mixint_f040_i07_d040 1.0", + "bbob-biobj-mixint_f040_i07_d080 1.0", + "bbob-biobj-mixint_f040_i07_d160 1.0", + "bbob-biobj-mixint_f040_i08_d005 1.0", + "bbob-biobj-mixint_f040_i08_d010 1.0", + "bbob-biobj-mixint_f040_i08_d020 1.0", + "bbob-biobj-mixint_f040_i08_d040 1.0", + "bbob-biobj-mixint_f040_i08_d080 1.0", + "bbob-biobj-mixint_f040_i08_d160 1.0", + "bbob-biobj-mixint_f040_i09_d005 1.0", + "bbob-biobj-mixint_f040_i09_d010 1.0", + "bbob-biobj-mixint_f040_i09_d020 1.0", + "bbob-biobj-mixint_f040_i09_d040 1.0", + "bbob-biobj-mixint_f040_i09_d080 1.0", + "bbob-biobj-mixint_f040_i09_d160 1.0", + "bbob-biobj-mixint_f040_i10_d005 1.0", + "bbob-biobj-mixint_f040_i10_d010 1.0", + "bbob-biobj-mixint_f040_i10_d020 1.0", + "bbob-biobj-mixint_f040_i10_d040 1.0", + "bbob-biobj-mixint_f040_i10_d080 1.0", + "bbob-biobj-mixint_f040_i10_d160 1.0", + "bbob-biobj-mixint_f040_i11_d005 1.0", + "bbob-biobj-mixint_f040_i11_d010 1.0", + "bbob-biobj-mixint_f040_i11_d020 1.0", + "bbob-biobj-mixint_f040_i11_d040 1.0", + "bbob-biobj-mixint_f040_i11_d080 1.0", + "bbob-biobj-mixint_f040_i11_d160 1.0", + "bbob-biobj-mixint_f040_i12_d005 1.0", + "bbob-biobj-mixint_f040_i12_d010 1.0", + "bbob-biobj-mixint_f040_i12_d020 1.0", + "bbob-biobj-mixint_f040_i12_d040 1.0", + "bbob-biobj-mixint_f040_i12_d080 1.0", + "bbob-biobj-mixint_f040_i12_d160 1.0", + "bbob-biobj-mixint_f040_i13_d005 1.0", + "bbob-biobj-mixint_f040_i13_d010 1.0", + "bbob-biobj-mixint_f040_i13_d020 1.0", + "bbob-biobj-mixint_f040_i13_d040 1.0", + "bbob-biobj-mixint_f040_i13_d080 1.0", + "bbob-biobj-mixint_f040_i13_d160 1.0", + "bbob-biobj-mixint_f040_i14_d005 1.0", + "bbob-biobj-mixint_f040_i14_d010 1.0", + "bbob-biobj-mixint_f040_i14_d020 1.0", + "bbob-biobj-mixint_f040_i14_d040 1.0", + "bbob-biobj-mixint_f040_i14_d080 1.0", + "bbob-biobj-mixint_f040_i14_d160 1.0", + "bbob-biobj-mixint_f040_i15_d005 1.0", + "bbob-biobj-mixint_f040_i15_d010 1.0", + "bbob-biobj-mixint_f040_i15_d020 1.0", + "bbob-biobj-mixint_f040_i15_d040 1.0", + "bbob-biobj-mixint_f040_i15_d080 1.0", + "bbob-biobj-mixint_f040_i15_d160 1.0", + "bbob-biobj-mixint_f041_i01_d005 1.0", + "bbob-biobj-mixint_f041_i01_d010 1.0", + "bbob-biobj-mixint_f041_i01_d020 1.0", + "bbob-biobj-mixint_f041_i01_d040 1.0", + "bbob-biobj-mixint_f041_i01_d080 1.0", + "bbob-biobj-mixint_f041_i01_d160 1.0", + "bbob-biobj-mixint_f041_i02_d005 1.0", + "bbob-biobj-mixint_f041_i02_d010 1.0", + "bbob-biobj-mixint_f041_i02_d020 1.0", + "bbob-biobj-mixint_f041_i02_d040 1.0", + "bbob-biobj-mixint_f041_i02_d080 1.0", + "bbob-biobj-mixint_f041_i02_d160 1.0", + "bbob-biobj-mixint_f041_i03_d005 1.0", + "bbob-biobj-mixint_f041_i03_d010 1.0", + "bbob-biobj-mixint_f041_i03_d020 1.0", + "bbob-biobj-mixint_f041_i03_d040 1.0", + "bbob-biobj-mixint_f041_i03_d080 1.0", + "bbob-biobj-mixint_f041_i03_d160 1.0", + "bbob-biobj-mixint_f041_i04_d005 1.0", + "bbob-biobj-mixint_f041_i04_d010 1.0", + "bbob-biobj-mixint_f041_i04_d020 1.0", + "bbob-biobj-mixint_f041_i04_d040 1.0", + "bbob-biobj-mixint_f041_i04_d080 1.0", + "bbob-biobj-mixint_f041_i04_d160 1.0", + "bbob-biobj-mixint_f041_i05_d005 1.0", + "bbob-biobj-mixint_f041_i05_d010 1.0", + "bbob-biobj-mixint_f041_i05_d020 1.0", + "bbob-biobj-mixint_f041_i05_d040 1.0", + "bbob-biobj-mixint_f041_i05_d080 1.0", + "bbob-biobj-mixint_f041_i05_d160 1.0", + "bbob-biobj-mixint_f041_i06_d005 1.0", + "bbob-biobj-mixint_f041_i06_d010 1.0", + "bbob-biobj-mixint_f041_i06_d020 1.0", + "bbob-biobj-mixint_f041_i06_d040 1.0", + "bbob-biobj-mixint_f041_i06_d080 1.0", + "bbob-biobj-mixint_f041_i06_d160 1.0", + "bbob-biobj-mixint_f041_i07_d005 1.0", + "bbob-biobj-mixint_f041_i07_d010 1.0", + "bbob-biobj-mixint_f041_i07_d020 1.0", + "bbob-biobj-mixint_f041_i07_d040 1.0", + "bbob-biobj-mixint_f041_i07_d080 1.0", + "bbob-biobj-mixint_f041_i07_d160 1.0", + "bbob-biobj-mixint_f041_i08_d005 1.0", + "bbob-biobj-mixint_f041_i08_d010 1.0", + "bbob-biobj-mixint_f041_i08_d020 1.0", + "bbob-biobj-mixint_f041_i08_d040 1.0", + "bbob-biobj-mixint_f041_i08_d080 1.0", + "bbob-biobj-mixint_f041_i08_d160 1.0", + "bbob-biobj-mixint_f041_i09_d005 1.0", + "bbob-biobj-mixint_f041_i09_d010 1.0", + "bbob-biobj-mixint_f041_i09_d020 1.0", + "bbob-biobj-mixint_f041_i09_d040 1.0", + "bbob-biobj-mixint_f041_i09_d080 1.0", + "bbob-biobj-mixint_f041_i09_d160 1.0", + "bbob-biobj-mixint_f041_i10_d005 1.0", + "bbob-biobj-mixint_f041_i10_d010 1.0", + "bbob-biobj-mixint_f041_i10_d020 1.0", + "bbob-biobj-mixint_f041_i10_d040 1.0", + "bbob-biobj-mixint_f041_i10_d080 1.0", + "bbob-biobj-mixint_f041_i10_d160 1.0", + "bbob-biobj-mixint_f041_i11_d005 1.0", + "bbob-biobj-mixint_f041_i11_d010 1.0", + "bbob-biobj-mixint_f041_i11_d020 1.0", + "bbob-biobj-mixint_f041_i11_d040 1.0", + "bbob-biobj-mixint_f041_i11_d080 1.0", + "bbob-biobj-mixint_f041_i11_d160 1.0", + "bbob-biobj-mixint_f041_i12_d005 1.0", + "bbob-biobj-mixint_f041_i12_d010 1.0", + "bbob-biobj-mixint_f041_i12_d020 1.0", + "bbob-biobj-mixint_f041_i12_d040 1.0", + "bbob-biobj-mixint_f041_i12_d080 1.0", + "bbob-biobj-mixint_f041_i12_d160 1.0", + "bbob-biobj-mixint_f041_i13_d005 1.0", + "bbob-biobj-mixint_f041_i13_d010 1.0", + "bbob-biobj-mixint_f041_i13_d020 1.0", + "bbob-biobj-mixint_f041_i13_d040 1.0", + "bbob-biobj-mixint_f041_i13_d080 1.0", + "bbob-biobj-mixint_f041_i13_d160 1.0", + "bbob-biobj-mixint_f041_i14_d005 1.0", + "bbob-biobj-mixint_f041_i14_d010 1.0", + "bbob-biobj-mixint_f041_i14_d020 1.0", + "bbob-biobj-mixint_f041_i14_d040 1.0", + "bbob-biobj-mixint_f041_i14_d080 1.0", + "bbob-biobj-mixint_f041_i14_d160 1.0", + "bbob-biobj-mixint_f041_i15_d005 1.0", + "bbob-biobj-mixint_f041_i15_d010 1.0", + "bbob-biobj-mixint_f041_i15_d020 1.0", + "bbob-biobj-mixint_f041_i15_d040 1.0", + "bbob-biobj-mixint_f041_i15_d080 1.0", + "bbob-biobj-mixint_f041_i15_d160 1.0", + "bbob-biobj-mixint_f042_i01_d005 1.0", + "bbob-biobj-mixint_f042_i01_d010 1.0", + "bbob-biobj-mixint_f042_i01_d020 1.0", + "bbob-biobj-mixint_f042_i01_d040 1.0", + "bbob-biobj-mixint_f042_i01_d080 1.0", + "bbob-biobj-mixint_f042_i01_d160 1.0", + "bbob-biobj-mixint_f042_i02_d005 1.0", + "bbob-biobj-mixint_f042_i02_d010 1.0", + "bbob-biobj-mixint_f042_i02_d020 1.0", + "bbob-biobj-mixint_f042_i02_d040 1.0", + "bbob-biobj-mixint_f042_i02_d080 1.0", + "bbob-biobj-mixint_f042_i02_d160 1.0", + "bbob-biobj-mixint_f042_i03_d005 1.0", + "bbob-biobj-mixint_f042_i03_d010 1.0", + "bbob-biobj-mixint_f042_i03_d020 1.0", + "bbob-biobj-mixint_f042_i03_d040 1.0", + "bbob-biobj-mixint_f042_i03_d080 1.0", + "bbob-biobj-mixint_f042_i03_d160 1.0", + "bbob-biobj-mixint_f042_i04_d005 1.0", + "bbob-biobj-mixint_f042_i04_d010 1.0", + "bbob-biobj-mixint_f042_i04_d020 1.0", + "bbob-biobj-mixint_f042_i04_d040 1.0", + "bbob-biobj-mixint_f042_i04_d080 1.0", + "bbob-biobj-mixint_f042_i04_d160 1.0", + "bbob-biobj-mixint_f042_i05_d005 1.0", + "bbob-biobj-mixint_f042_i05_d010 1.0", + "bbob-biobj-mixint_f042_i05_d020 1.0", + "bbob-biobj-mixint_f042_i05_d040 1.0", + "bbob-biobj-mixint_f042_i05_d080 1.0", + "bbob-biobj-mixint_f042_i05_d160 1.0", + "bbob-biobj-mixint_f042_i06_d005 1.0", + "bbob-biobj-mixint_f042_i06_d010 1.0", + "bbob-biobj-mixint_f042_i06_d020 1.0", + "bbob-biobj-mixint_f042_i06_d040 1.0", + "bbob-biobj-mixint_f042_i06_d080 1.0", + "bbob-biobj-mixint_f042_i06_d160 1.0", + "bbob-biobj-mixint_f042_i07_d005 1.0", + "bbob-biobj-mixint_f042_i07_d010 1.0", + "bbob-biobj-mixint_f042_i07_d020 1.0", + "bbob-biobj-mixint_f042_i07_d040 1.0", + "bbob-biobj-mixint_f042_i07_d080 1.0", + "bbob-biobj-mixint_f042_i07_d160 1.0", + "bbob-biobj-mixint_f042_i08_d005 1.0", + "bbob-biobj-mixint_f042_i08_d010 1.0", + "bbob-biobj-mixint_f042_i08_d020 1.0", + "bbob-biobj-mixint_f042_i08_d040 1.0", + "bbob-biobj-mixint_f042_i08_d080 1.0", + "bbob-biobj-mixint_f042_i08_d160 1.0", + "bbob-biobj-mixint_f042_i09_d005 1.0", + "bbob-biobj-mixint_f042_i09_d010 1.0", + "bbob-biobj-mixint_f042_i09_d020 1.0", + "bbob-biobj-mixint_f042_i09_d040 1.0", + "bbob-biobj-mixint_f042_i09_d080 1.0", + "bbob-biobj-mixint_f042_i09_d160 1.0", + "bbob-biobj-mixint_f042_i10_d005 1.0", + "bbob-biobj-mixint_f042_i10_d010 1.0", + "bbob-biobj-mixint_f042_i10_d020 1.0", + "bbob-biobj-mixint_f042_i10_d040 1.0", + "bbob-biobj-mixint_f042_i10_d080 1.0", + "bbob-biobj-mixint_f042_i10_d160 1.0", + "bbob-biobj-mixint_f042_i11_d005 1.0", + "bbob-biobj-mixint_f042_i11_d010 1.0", + "bbob-biobj-mixint_f042_i11_d020 1.0", + "bbob-biobj-mixint_f042_i11_d040 1.0", + "bbob-biobj-mixint_f042_i11_d080 1.0", + "bbob-biobj-mixint_f042_i11_d160 1.0", + "bbob-biobj-mixint_f042_i12_d005 1.0", + "bbob-biobj-mixint_f042_i12_d010 1.0", + "bbob-biobj-mixint_f042_i12_d020 1.0", + "bbob-biobj-mixint_f042_i12_d040 1.0", + "bbob-biobj-mixint_f042_i12_d080 1.0", + "bbob-biobj-mixint_f042_i12_d160 1.0", + "bbob-biobj-mixint_f042_i13_d005 1.0", + "bbob-biobj-mixint_f042_i13_d010 1.0", + "bbob-biobj-mixint_f042_i13_d020 1.0", + "bbob-biobj-mixint_f042_i13_d040 1.0", + "bbob-biobj-mixint_f042_i13_d080 1.0", + "bbob-biobj-mixint_f042_i13_d160 1.0", + "bbob-biobj-mixint_f042_i14_d005 1.0", + "bbob-biobj-mixint_f042_i14_d010 1.0", + "bbob-biobj-mixint_f042_i14_d020 1.0", + "bbob-biobj-mixint_f042_i14_d040 1.0", + "bbob-biobj-mixint_f042_i14_d080 1.0", + "bbob-biobj-mixint_f042_i14_d160 1.0", + "bbob-biobj-mixint_f042_i15_d005 1.0", + "bbob-biobj-mixint_f042_i15_d010 1.0", + "bbob-biobj-mixint_f042_i15_d020 1.0", + "bbob-biobj-mixint_f042_i15_d040 1.0", + "bbob-biobj-mixint_f042_i15_d080 1.0", + "bbob-biobj-mixint_f042_i15_d160 1.0", + "bbob-biobj-mixint_f043_i01_d005 1.0", + "bbob-biobj-mixint_f043_i01_d010 1.0", + "bbob-biobj-mixint_f043_i01_d020 1.0", + "bbob-biobj-mixint_f043_i01_d040 1.0", + "bbob-biobj-mixint_f043_i01_d080 1.0", + "bbob-biobj-mixint_f043_i01_d160 1.0", + "bbob-biobj-mixint_f043_i02_d005 1.0", + "bbob-biobj-mixint_f043_i02_d010 1.0", + "bbob-biobj-mixint_f043_i02_d020 1.0", + "bbob-biobj-mixint_f043_i02_d040 1.0", + "bbob-biobj-mixint_f043_i02_d080 1.0", + "bbob-biobj-mixint_f043_i02_d160 1.0", + "bbob-biobj-mixint_f043_i03_d005 1.0", + "bbob-biobj-mixint_f043_i03_d010 1.0", + "bbob-biobj-mixint_f043_i03_d020 1.0", + "bbob-biobj-mixint_f043_i03_d040 1.0", + "bbob-biobj-mixint_f043_i03_d080 1.0", + "bbob-biobj-mixint_f043_i03_d160 1.0", + "bbob-biobj-mixint_f043_i04_d005 1.0", + "bbob-biobj-mixint_f043_i04_d010 1.0", + "bbob-biobj-mixint_f043_i04_d020 1.0", + "bbob-biobj-mixint_f043_i04_d040 1.0", + "bbob-biobj-mixint_f043_i04_d080 1.0", + "bbob-biobj-mixint_f043_i04_d160 1.0", + "bbob-biobj-mixint_f043_i05_d005 1.0", + "bbob-biobj-mixint_f043_i05_d010 1.0", + "bbob-biobj-mixint_f043_i05_d020 1.0", + "bbob-biobj-mixint_f043_i05_d040 1.0", + "bbob-biobj-mixint_f043_i05_d080 1.0", + "bbob-biobj-mixint_f043_i05_d160 1.0", + "bbob-biobj-mixint_f043_i06_d005 1.0", + "bbob-biobj-mixint_f043_i06_d010 1.0", + "bbob-biobj-mixint_f043_i06_d020 1.0", + "bbob-biobj-mixint_f043_i06_d040 1.0", + "bbob-biobj-mixint_f043_i06_d080 1.0", + "bbob-biobj-mixint_f043_i06_d160 1.0", + "bbob-biobj-mixint_f043_i07_d005 1.0", + "bbob-biobj-mixint_f043_i07_d010 1.0", + "bbob-biobj-mixint_f043_i07_d020 1.0", + "bbob-biobj-mixint_f043_i07_d040 1.0", + "bbob-biobj-mixint_f043_i07_d080 1.0", + "bbob-biobj-mixint_f043_i07_d160 1.0", + "bbob-biobj-mixint_f043_i08_d005 1.0", + "bbob-biobj-mixint_f043_i08_d010 1.0", + "bbob-biobj-mixint_f043_i08_d020 1.0", + "bbob-biobj-mixint_f043_i08_d040 1.0", + "bbob-biobj-mixint_f043_i08_d080 1.0", + "bbob-biobj-mixint_f043_i08_d160 1.0", + "bbob-biobj-mixint_f043_i09_d005 1.0", + "bbob-biobj-mixint_f043_i09_d010 1.0", + "bbob-biobj-mixint_f043_i09_d020 1.0", + "bbob-biobj-mixint_f043_i09_d040 1.0", + "bbob-biobj-mixint_f043_i09_d080 1.0", + "bbob-biobj-mixint_f043_i09_d160 1.0", + "bbob-biobj-mixint_f043_i10_d005 1.0", + "bbob-biobj-mixint_f043_i10_d010 1.0", + "bbob-biobj-mixint_f043_i10_d020 1.0", + "bbob-biobj-mixint_f043_i10_d040 1.0", + "bbob-biobj-mixint_f043_i10_d080 1.0", + "bbob-biobj-mixint_f043_i10_d160 1.0", + "bbob-biobj-mixint_f043_i11_d005 1.0", + "bbob-biobj-mixint_f043_i11_d010 1.0", + "bbob-biobj-mixint_f043_i11_d020 1.0", + "bbob-biobj-mixint_f043_i11_d040 1.0", + "bbob-biobj-mixint_f043_i11_d080 1.0", + "bbob-biobj-mixint_f043_i11_d160 1.0", + "bbob-biobj-mixint_f043_i12_d005 1.0", + "bbob-biobj-mixint_f043_i12_d010 1.0", + "bbob-biobj-mixint_f043_i12_d020 1.0", + "bbob-biobj-mixint_f043_i12_d040 1.0", + "bbob-biobj-mixint_f043_i12_d080 1.0", + "bbob-biobj-mixint_f043_i12_d160 1.0", + "bbob-biobj-mixint_f043_i13_d005 1.0", + "bbob-biobj-mixint_f043_i13_d010 1.0", + "bbob-biobj-mixint_f043_i13_d020 1.0", + "bbob-biobj-mixint_f043_i13_d040 1.0", + "bbob-biobj-mixint_f043_i13_d080 1.0", + "bbob-biobj-mixint_f043_i13_d160 1.0", + "bbob-biobj-mixint_f043_i14_d005 1.0", + "bbob-biobj-mixint_f043_i14_d010 1.0", + "bbob-biobj-mixint_f043_i14_d020 1.0", + "bbob-biobj-mixint_f043_i14_d040 1.0", + "bbob-biobj-mixint_f043_i14_d080 1.0", + "bbob-biobj-mixint_f043_i14_d160 1.0", + "bbob-biobj-mixint_f043_i15_d005 1.0", + "bbob-biobj-mixint_f043_i15_d010 1.0", + "bbob-biobj-mixint_f043_i15_d020 1.0", + "bbob-biobj-mixint_f043_i15_d040 1.0", + "bbob-biobj-mixint_f043_i15_d080 1.0", + "bbob-biobj-mixint_f043_i15_d160 1.0", + "bbob-biobj-mixint_f044_i01_d005 1.0", + "bbob-biobj-mixint_f044_i01_d010 1.0", + "bbob-biobj-mixint_f044_i01_d020 1.0", + "bbob-biobj-mixint_f044_i01_d040 1.0", + "bbob-biobj-mixint_f044_i01_d080 1.0", + "bbob-biobj-mixint_f044_i01_d160 1.0", + "bbob-biobj-mixint_f044_i02_d005 1.0", + "bbob-biobj-mixint_f044_i02_d010 1.0", + "bbob-biobj-mixint_f044_i02_d020 1.0", + "bbob-biobj-mixint_f044_i02_d040 1.0", + "bbob-biobj-mixint_f044_i02_d080 1.0", + "bbob-biobj-mixint_f044_i02_d160 1.0", + "bbob-biobj-mixint_f044_i03_d005 1.0", + "bbob-biobj-mixint_f044_i03_d010 1.0", + "bbob-biobj-mixint_f044_i03_d020 1.0", + "bbob-biobj-mixint_f044_i03_d040 1.0", + "bbob-biobj-mixint_f044_i03_d080 1.0", + "bbob-biobj-mixint_f044_i03_d160 1.0", + "bbob-biobj-mixint_f044_i04_d005 1.0", + "bbob-biobj-mixint_f044_i04_d010 1.0", + "bbob-biobj-mixint_f044_i04_d020 1.0", + "bbob-biobj-mixint_f044_i04_d040 1.0", + "bbob-biobj-mixint_f044_i04_d080 1.0", + "bbob-biobj-mixint_f044_i04_d160 1.0", + "bbob-biobj-mixint_f044_i05_d005 1.0", + "bbob-biobj-mixint_f044_i05_d010 1.0", + "bbob-biobj-mixint_f044_i05_d020 1.0", + "bbob-biobj-mixint_f044_i05_d040 1.0", + "bbob-biobj-mixint_f044_i05_d080 1.0", + "bbob-biobj-mixint_f044_i05_d160 1.0", + "bbob-biobj-mixint_f044_i06_d005 1.0", + "bbob-biobj-mixint_f044_i06_d010 1.0", + "bbob-biobj-mixint_f044_i06_d020 1.0", + "bbob-biobj-mixint_f044_i06_d040 1.0", + "bbob-biobj-mixint_f044_i06_d080 1.0", + "bbob-biobj-mixint_f044_i06_d160 1.0", + "bbob-biobj-mixint_f044_i07_d005 1.0", + "bbob-biobj-mixint_f044_i07_d010 1.0", + "bbob-biobj-mixint_f044_i07_d020 1.0", + "bbob-biobj-mixint_f044_i07_d040 1.0", + "bbob-biobj-mixint_f044_i07_d080 1.0", + "bbob-biobj-mixint_f044_i07_d160 1.0", + "bbob-biobj-mixint_f044_i08_d005 1.0", + "bbob-biobj-mixint_f044_i08_d010 1.0", + "bbob-biobj-mixint_f044_i08_d020 1.0", + "bbob-biobj-mixint_f044_i08_d040 1.0", + "bbob-biobj-mixint_f044_i08_d080 1.0", + "bbob-biobj-mixint_f044_i08_d160 1.0", + "bbob-biobj-mixint_f044_i09_d005 1.0", + "bbob-biobj-mixint_f044_i09_d010 1.0", + "bbob-biobj-mixint_f044_i09_d020 1.0", + "bbob-biobj-mixint_f044_i09_d040 1.0", + "bbob-biobj-mixint_f044_i09_d080 1.0", + "bbob-biobj-mixint_f044_i09_d160 1.0", + "bbob-biobj-mixint_f044_i10_d005 1.0", + "bbob-biobj-mixint_f044_i10_d010 1.0", + "bbob-biobj-mixint_f044_i10_d020 1.0", + "bbob-biobj-mixint_f044_i10_d040 1.0", + "bbob-biobj-mixint_f044_i10_d080 1.0", + "bbob-biobj-mixint_f044_i10_d160 1.0", + "bbob-biobj-mixint_f044_i11_d005 1.0", + "bbob-biobj-mixint_f044_i11_d010 1.0", + "bbob-biobj-mixint_f044_i11_d020 1.0", + "bbob-biobj-mixint_f044_i11_d040 1.0", + "bbob-biobj-mixint_f044_i11_d080 1.0", + "bbob-biobj-mixint_f044_i11_d160 1.0", + "bbob-biobj-mixint_f044_i12_d005 1.0", + "bbob-biobj-mixint_f044_i12_d010 1.0", + "bbob-biobj-mixint_f044_i12_d020 1.0", + "bbob-biobj-mixint_f044_i12_d040 1.0", + "bbob-biobj-mixint_f044_i12_d080 1.0", + "bbob-biobj-mixint_f044_i12_d160 1.0", + "bbob-biobj-mixint_f044_i13_d005 1.0", + "bbob-biobj-mixint_f044_i13_d010 1.0", + "bbob-biobj-mixint_f044_i13_d020 1.0", + "bbob-biobj-mixint_f044_i13_d040 1.0", + "bbob-biobj-mixint_f044_i13_d080 1.0", + "bbob-biobj-mixint_f044_i13_d160 1.0", + "bbob-biobj-mixint_f044_i14_d005 1.0", + "bbob-biobj-mixint_f044_i14_d010 1.0", + "bbob-biobj-mixint_f044_i14_d020 1.0", + "bbob-biobj-mixint_f044_i14_d040 1.0", + "bbob-biobj-mixint_f044_i14_d080 1.0", + "bbob-biobj-mixint_f044_i14_d160 1.0", + "bbob-biobj-mixint_f044_i15_d005 1.0", + "bbob-biobj-mixint_f044_i15_d010 1.0", + "bbob-biobj-mixint_f044_i15_d020 1.0", + "bbob-biobj-mixint_f044_i15_d040 1.0", + "bbob-biobj-mixint_f044_i15_d080 1.0", + "bbob-biobj-mixint_f044_i15_d160 1.0", + "bbob-biobj-mixint_f045_i01_d005 1.0", + "bbob-biobj-mixint_f045_i01_d010 1.0", + "bbob-biobj-mixint_f045_i01_d020 1.0", + "bbob-biobj-mixint_f045_i01_d040 1.0", + "bbob-biobj-mixint_f045_i01_d080 1.0", + "bbob-biobj-mixint_f045_i01_d160 1.0", + "bbob-biobj-mixint_f045_i02_d005 1.0", + "bbob-biobj-mixint_f045_i02_d010 1.0", + "bbob-biobj-mixint_f045_i02_d020 1.0", + "bbob-biobj-mixint_f045_i02_d040 1.0", + "bbob-biobj-mixint_f045_i02_d080 1.0", + "bbob-biobj-mixint_f045_i02_d160 1.0", + "bbob-biobj-mixint_f045_i03_d005 1.0", + "bbob-biobj-mixint_f045_i03_d010 1.0", + "bbob-biobj-mixint_f045_i03_d020 1.0", + "bbob-biobj-mixint_f045_i03_d040 1.0", + "bbob-biobj-mixint_f045_i03_d080 1.0", + "bbob-biobj-mixint_f045_i03_d160 1.0", + "bbob-biobj-mixint_f045_i04_d005 1.0", + "bbob-biobj-mixint_f045_i04_d010 1.0", + "bbob-biobj-mixint_f045_i04_d020 1.0", + "bbob-biobj-mixint_f045_i04_d040 1.0", + "bbob-biobj-mixint_f045_i04_d080 1.0", + "bbob-biobj-mixint_f045_i04_d160 1.0", + "bbob-biobj-mixint_f045_i05_d005 1.0", + "bbob-biobj-mixint_f045_i05_d010 1.0", + "bbob-biobj-mixint_f045_i05_d020 1.0", + "bbob-biobj-mixint_f045_i05_d040 1.0", + "bbob-biobj-mixint_f045_i05_d080 1.0", + "bbob-biobj-mixint_f045_i05_d160 1.0", + "bbob-biobj-mixint_f045_i06_d005 1.0", + "bbob-biobj-mixint_f045_i06_d010 1.0", + "bbob-biobj-mixint_f045_i06_d020 1.0", + "bbob-biobj-mixint_f045_i06_d040 1.0", + "bbob-biobj-mixint_f045_i06_d080 1.0", + "bbob-biobj-mixint_f045_i06_d160 1.0", + "bbob-biobj-mixint_f045_i07_d005 1.0", + "bbob-biobj-mixint_f045_i07_d010 1.0", + "bbob-biobj-mixint_f045_i07_d020 1.0", + "bbob-biobj-mixint_f045_i07_d040 1.0", + "bbob-biobj-mixint_f045_i07_d080 1.0", + "bbob-biobj-mixint_f045_i07_d160 1.0", + "bbob-biobj-mixint_f045_i08_d005 1.0", + "bbob-biobj-mixint_f045_i08_d010 1.0", + "bbob-biobj-mixint_f045_i08_d020 1.0", + "bbob-biobj-mixint_f045_i08_d040 1.0", + "bbob-biobj-mixint_f045_i08_d080 1.0", + "bbob-biobj-mixint_f045_i08_d160 1.0", + "bbob-biobj-mixint_f045_i09_d005 1.0", + "bbob-biobj-mixint_f045_i09_d010 1.0", + "bbob-biobj-mixint_f045_i09_d020 1.0", + "bbob-biobj-mixint_f045_i09_d040 1.0", + "bbob-biobj-mixint_f045_i09_d080 1.0", + "bbob-biobj-mixint_f045_i09_d160 1.0", + "bbob-biobj-mixint_f045_i10_d005 1.0", + "bbob-biobj-mixint_f045_i10_d010 1.0", + "bbob-biobj-mixint_f045_i10_d020 1.0", + "bbob-biobj-mixint_f045_i10_d040 1.0", + "bbob-biobj-mixint_f045_i10_d080 1.0", + "bbob-biobj-mixint_f045_i10_d160 1.0", + "bbob-biobj-mixint_f045_i11_d005 1.0", + "bbob-biobj-mixint_f045_i11_d010 1.0", + "bbob-biobj-mixint_f045_i11_d020 1.0", + "bbob-biobj-mixint_f045_i11_d040 1.0", + "bbob-biobj-mixint_f045_i11_d080 1.0", + "bbob-biobj-mixint_f045_i11_d160 1.0", + "bbob-biobj-mixint_f045_i12_d005 1.0", + "bbob-biobj-mixint_f045_i12_d010 1.0", + "bbob-biobj-mixint_f045_i12_d020 1.0", + "bbob-biobj-mixint_f045_i12_d040 1.0", + "bbob-biobj-mixint_f045_i12_d080 1.0", + "bbob-biobj-mixint_f045_i12_d160 1.0", + "bbob-biobj-mixint_f045_i13_d005 1.0", + "bbob-biobj-mixint_f045_i13_d010 1.0", + "bbob-biobj-mixint_f045_i13_d020 1.0", + "bbob-biobj-mixint_f045_i13_d040 1.0", + "bbob-biobj-mixint_f045_i13_d080 1.0", + "bbob-biobj-mixint_f045_i13_d160 1.0", + "bbob-biobj-mixint_f045_i14_d005 1.0", + "bbob-biobj-mixint_f045_i14_d010 1.0", + "bbob-biobj-mixint_f045_i14_d020 1.0", + "bbob-biobj-mixint_f045_i14_d040 1.0", + "bbob-biobj-mixint_f045_i14_d080 1.0", + "bbob-biobj-mixint_f045_i14_d160 1.0", + "bbob-biobj-mixint_f045_i15_d005 1.0", + "bbob-biobj-mixint_f045_i15_d010 1.0", + "bbob-biobj-mixint_f045_i15_d020 1.0", + "bbob-biobj-mixint_f045_i15_d040 1.0", + "bbob-biobj-mixint_f045_i15_d080 1.0", + "bbob-biobj-mixint_f045_i15_d160 1.0", + "bbob-biobj-mixint_f046_i01_d005 1.0", + "bbob-biobj-mixint_f046_i01_d010 1.0", + "bbob-biobj-mixint_f046_i01_d020 1.0", + "bbob-biobj-mixint_f046_i01_d040 1.0", + "bbob-biobj-mixint_f046_i01_d080 1.0", + "bbob-biobj-mixint_f046_i01_d160 1.0", + "bbob-biobj-mixint_f046_i02_d005 1.0", + "bbob-biobj-mixint_f046_i02_d010 1.0", + "bbob-biobj-mixint_f046_i02_d020 1.0", + "bbob-biobj-mixint_f046_i02_d040 1.0", + "bbob-biobj-mixint_f046_i02_d080 1.0", + "bbob-biobj-mixint_f046_i02_d160 1.0", + "bbob-biobj-mixint_f046_i03_d005 1.0", + "bbob-biobj-mixint_f046_i03_d010 1.0", + "bbob-biobj-mixint_f046_i03_d020 1.0", + "bbob-biobj-mixint_f046_i03_d040 1.0", + "bbob-biobj-mixint_f046_i03_d080 1.0", + "bbob-biobj-mixint_f046_i03_d160 1.0", + "bbob-biobj-mixint_f046_i04_d005 1.0", + "bbob-biobj-mixint_f046_i04_d010 1.0", + "bbob-biobj-mixint_f046_i04_d020 1.0", + "bbob-biobj-mixint_f046_i04_d040 1.0", + "bbob-biobj-mixint_f046_i04_d080 1.0", + "bbob-biobj-mixint_f046_i04_d160 1.0", + "bbob-biobj-mixint_f046_i05_d005 1.0", + "bbob-biobj-mixint_f046_i05_d010 1.0", + "bbob-biobj-mixint_f046_i05_d020 1.0", + "bbob-biobj-mixint_f046_i05_d040 1.0", + "bbob-biobj-mixint_f046_i05_d080 1.0", + "bbob-biobj-mixint_f046_i05_d160 1.0", + "bbob-biobj-mixint_f046_i06_d005 1.0", + "bbob-biobj-mixint_f046_i06_d010 1.0", + "bbob-biobj-mixint_f046_i06_d020 1.0", + "bbob-biobj-mixint_f046_i06_d040 1.0", + "bbob-biobj-mixint_f046_i06_d080 1.0", + "bbob-biobj-mixint_f046_i06_d160 1.0", + "bbob-biobj-mixint_f046_i07_d005 1.0", + "bbob-biobj-mixint_f046_i07_d010 1.0", + "bbob-biobj-mixint_f046_i07_d020 1.0", + "bbob-biobj-mixint_f046_i07_d040 1.0", + "bbob-biobj-mixint_f046_i07_d080 1.0", + "bbob-biobj-mixint_f046_i07_d160 1.0", + "bbob-biobj-mixint_f046_i08_d005 1.0", + "bbob-biobj-mixint_f046_i08_d010 1.0", + "bbob-biobj-mixint_f046_i08_d020 1.0", + "bbob-biobj-mixint_f046_i08_d040 1.0", + "bbob-biobj-mixint_f046_i08_d080 1.0", + "bbob-biobj-mixint_f046_i08_d160 1.0", + "bbob-biobj-mixint_f046_i09_d005 1.0", + "bbob-biobj-mixint_f046_i09_d010 1.0", + "bbob-biobj-mixint_f046_i09_d020 1.0", + "bbob-biobj-mixint_f046_i09_d040 1.0", + "bbob-biobj-mixint_f046_i09_d080 1.0", + "bbob-biobj-mixint_f046_i09_d160 1.0", + "bbob-biobj-mixint_f046_i10_d005 1.0", + "bbob-biobj-mixint_f046_i10_d010 1.0", + "bbob-biobj-mixint_f046_i10_d020 1.0", + "bbob-biobj-mixint_f046_i10_d040 1.0", + "bbob-biobj-mixint_f046_i10_d080 1.0", + "bbob-biobj-mixint_f046_i10_d160 1.0", + "bbob-biobj-mixint_f046_i11_d005 1.0", + "bbob-biobj-mixint_f046_i11_d010 1.0", + "bbob-biobj-mixint_f046_i11_d020 1.0", + "bbob-biobj-mixint_f046_i11_d040 1.0", + "bbob-biobj-mixint_f046_i11_d080 1.0", + "bbob-biobj-mixint_f046_i11_d160 1.0", + "bbob-biobj-mixint_f046_i12_d005 1.0", + "bbob-biobj-mixint_f046_i12_d010 1.0", + "bbob-biobj-mixint_f046_i12_d020 1.0", + "bbob-biobj-mixint_f046_i12_d040 1.0", + "bbob-biobj-mixint_f046_i12_d080 1.0", + "bbob-biobj-mixint_f046_i12_d160 1.0", + "bbob-biobj-mixint_f046_i13_d005 1.0", + "bbob-biobj-mixint_f046_i13_d010 1.0", + "bbob-biobj-mixint_f046_i13_d020 1.0", + "bbob-biobj-mixint_f046_i13_d040 1.0", + "bbob-biobj-mixint_f046_i13_d080 1.0", + "bbob-biobj-mixint_f046_i13_d160 1.0", + "bbob-biobj-mixint_f046_i14_d005 1.0", + "bbob-biobj-mixint_f046_i14_d010 1.0", + "bbob-biobj-mixint_f046_i14_d020 1.0", + "bbob-biobj-mixint_f046_i14_d040 1.0", + "bbob-biobj-mixint_f046_i14_d080 1.0", + "bbob-biobj-mixint_f046_i14_d160 1.0", + "bbob-biobj-mixint_f046_i15_d005 1.0", + "bbob-biobj-mixint_f046_i15_d010 1.0", + "bbob-biobj-mixint_f046_i15_d020 1.0", + "bbob-biobj-mixint_f046_i15_d040 1.0", + "bbob-biobj-mixint_f046_i15_d080 1.0", + "bbob-biobj-mixint_f046_i15_d160 1.0", + "bbob-biobj-mixint_f047_i01_d005 1.0", + "bbob-biobj-mixint_f047_i01_d010 1.0", + "bbob-biobj-mixint_f047_i01_d020 1.0", + "bbob-biobj-mixint_f047_i01_d040 1.0", + "bbob-biobj-mixint_f047_i01_d080 1.0", + "bbob-biobj-mixint_f047_i01_d160 1.0", + "bbob-biobj-mixint_f047_i02_d005 1.0", + "bbob-biobj-mixint_f047_i02_d010 1.0", + "bbob-biobj-mixint_f047_i02_d020 1.0", + "bbob-biobj-mixint_f047_i02_d040 1.0", + "bbob-biobj-mixint_f047_i02_d080 1.0", + "bbob-biobj-mixint_f047_i02_d160 1.0", + "bbob-biobj-mixint_f047_i03_d005 1.0", + "bbob-biobj-mixint_f047_i03_d010 1.0", + "bbob-biobj-mixint_f047_i03_d020 1.0", + "bbob-biobj-mixint_f047_i03_d040 1.0", + "bbob-biobj-mixint_f047_i03_d080 1.0", + "bbob-biobj-mixint_f047_i03_d160 1.0", + "bbob-biobj-mixint_f047_i04_d005 1.0", + "bbob-biobj-mixint_f047_i04_d010 1.0", + "bbob-biobj-mixint_f047_i04_d020 1.0", + "bbob-biobj-mixint_f047_i04_d040 1.0", + "bbob-biobj-mixint_f047_i04_d080 1.0", + "bbob-biobj-mixint_f047_i04_d160 1.0", + "bbob-biobj-mixint_f047_i05_d005 1.0", + "bbob-biobj-mixint_f047_i05_d010 1.0", + "bbob-biobj-mixint_f047_i05_d020 1.0", + "bbob-biobj-mixint_f047_i05_d040 1.0", + "bbob-biobj-mixint_f047_i05_d080 1.0", + "bbob-biobj-mixint_f047_i05_d160 1.0", + "bbob-biobj-mixint_f047_i06_d005 1.0", + "bbob-biobj-mixint_f047_i06_d010 1.0", + "bbob-biobj-mixint_f047_i06_d020 1.0", + "bbob-biobj-mixint_f047_i06_d040 1.0", + "bbob-biobj-mixint_f047_i06_d080 1.0", + "bbob-biobj-mixint_f047_i06_d160 1.0", + "bbob-biobj-mixint_f047_i07_d005 1.0", + "bbob-biobj-mixint_f047_i07_d010 1.0", + "bbob-biobj-mixint_f047_i07_d020 1.0", + "bbob-biobj-mixint_f047_i07_d040 1.0", + "bbob-biobj-mixint_f047_i07_d080 1.0", + "bbob-biobj-mixint_f047_i07_d160 1.0", + "bbob-biobj-mixint_f047_i08_d005 1.0", + "bbob-biobj-mixint_f047_i08_d010 1.0", + "bbob-biobj-mixint_f047_i08_d020 1.0", + "bbob-biobj-mixint_f047_i08_d040 1.0", + "bbob-biobj-mixint_f047_i08_d080 1.0", + "bbob-biobj-mixint_f047_i08_d160 1.0", + "bbob-biobj-mixint_f047_i09_d005 1.0", + "bbob-biobj-mixint_f047_i09_d010 1.0", + "bbob-biobj-mixint_f047_i09_d020 1.0", + "bbob-biobj-mixint_f047_i09_d040 1.0", + "bbob-biobj-mixint_f047_i09_d080 1.0", + "bbob-biobj-mixint_f047_i09_d160 1.0", + "bbob-biobj-mixint_f047_i10_d005 1.0", + "bbob-biobj-mixint_f047_i10_d010 1.0", + "bbob-biobj-mixint_f047_i10_d020 1.0", + "bbob-biobj-mixint_f047_i10_d040 1.0", + "bbob-biobj-mixint_f047_i10_d080 1.0", + "bbob-biobj-mixint_f047_i10_d160 1.0", + "bbob-biobj-mixint_f047_i11_d005 1.0", + "bbob-biobj-mixint_f047_i11_d010 1.0", + "bbob-biobj-mixint_f047_i11_d020 1.0", + "bbob-biobj-mixint_f047_i11_d040 1.0", + "bbob-biobj-mixint_f047_i11_d080 1.0", + "bbob-biobj-mixint_f047_i11_d160 1.0", + "bbob-biobj-mixint_f047_i12_d005 1.0", + "bbob-biobj-mixint_f047_i12_d010 1.0", + "bbob-biobj-mixint_f047_i12_d020 1.0", + "bbob-biobj-mixint_f047_i12_d040 1.0", + "bbob-biobj-mixint_f047_i12_d080 1.0", + "bbob-biobj-mixint_f047_i12_d160 1.0", + "bbob-biobj-mixint_f047_i13_d005 1.0", + "bbob-biobj-mixint_f047_i13_d010 1.0", + "bbob-biobj-mixint_f047_i13_d020 1.0", + "bbob-biobj-mixint_f047_i13_d040 1.0", + "bbob-biobj-mixint_f047_i13_d080 1.0", + "bbob-biobj-mixint_f047_i13_d160 1.0", + "bbob-biobj-mixint_f047_i14_d005 1.0", + "bbob-biobj-mixint_f047_i14_d010 1.0", + "bbob-biobj-mixint_f047_i14_d020 1.0", + "bbob-biobj-mixint_f047_i14_d040 1.0", + "bbob-biobj-mixint_f047_i14_d080 1.0", + "bbob-biobj-mixint_f047_i14_d160 1.0", + "bbob-biobj-mixint_f047_i15_d005 1.0", + "bbob-biobj-mixint_f047_i15_d010 1.0", + "bbob-biobj-mixint_f047_i15_d020 1.0", + "bbob-biobj-mixint_f047_i15_d040 1.0", + "bbob-biobj-mixint_f047_i15_d080 1.0", + "bbob-biobj-mixint_f047_i15_d160 1.0", + "bbob-biobj-mixint_f048_i01_d005 1.0", + "bbob-biobj-mixint_f048_i01_d010 1.0", + "bbob-biobj-mixint_f048_i01_d020 1.0", + "bbob-biobj-mixint_f048_i01_d040 1.0", + "bbob-biobj-mixint_f048_i01_d080 1.0", + "bbob-biobj-mixint_f048_i01_d160 1.0", + "bbob-biobj-mixint_f048_i02_d005 1.0", + "bbob-biobj-mixint_f048_i02_d010 1.0", + "bbob-biobj-mixint_f048_i02_d020 1.0", + "bbob-biobj-mixint_f048_i02_d040 1.0", + "bbob-biobj-mixint_f048_i02_d080 1.0", + "bbob-biobj-mixint_f048_i02_d160 1.0", + "bbob-biobj-mixint_f048_i03_d005 1.0", + "bbob-biobj-mixint_f048_i03_d010 1.0", + "bbob-biobj-mixint_f048_i03_d020 1.0", + "bbob-biobj-mixint_f048_i03_d040 1.0", + "bbob-biobj-mixint_f048_i03_d080 1.0", + "bbob-biobj-mixint_f048_i03_d160 1.0", + "bbob-biobj-mixint_f048_i04_d005 1.0", + "bbob-biobj-mixint_f048_i04_d010 1.0", + "bbob-biobj-mixint_f048_i04_d020 1.0", + "bbob-biobj-mixint_f048_i04_d040 1.0", + "bbob-biobj-mixint_f048_i04_d080 1.0", + "bbob-biobj-mixint_f048_i04_d160 1.0", + "bbob-biobj-mixint_f048_i05_d005 1.0", + "bbob-biobj-mixint_f048_i05_d010 1.0", + "bbob-biobj-mixint_f048_i05_d020 1.0", + "bbob-biobj-mixint_f048_i05_d040 1.0", + "bbob-biobj-mixint_f048_i05_d080 1.0", + "bbob-biobj-mixint_f048_i05_d160 1.0", + "bbob-biobj-mixint_f048_i06_d005 1.0", + "bbob-biobj-mixint_f048_i06_d010 1.0", + "bbob-biobj-mixint_f048_i06_d020 1.0", + "bbob-biobj-mixint_f048_i06_d040 1.0", + "bbob-biobj-mixint_f048_i06_d080 1.0", + "bbob-biobj-mixint_f048_i06_d160 1.0", + "bbob-biobj-mixint_f048_i07_d005 1.0", + "bbob-biobj-mixint_f048_i07_d010 1.0", + "bbob-biobj-mixint_f048_i07_d020 1.0", + "bbob-biobj-mixint_f048_i07_d040 1.0", + "bbob-biobj-mixint_f048_i07_d080 1.0", + "bbob-biobj-mixint_f048_i07_d160 1.0", + "bbob-biobj-mixint_f048_i08_d005 1.0", + "bbob-biobj-mixint_f048_i08_d010 1.0", + "bbob-biobj-mixint_f048_i08_d020 1.0", + "bbob-biobj-mixint_f048_i08_d040 1.0", + "bbob-biobj-mixint_f048_i08_d080 1.0", + "bbob-biobj-mixint_f048_i08_d160 1.0", + "bbob-biobj-mixint_f048_i09_d005 1.0", + "bbob-biobj-mixint_f048_i09_d010 1.0", + "bbob-biobj-mixint_f048_i09_d020 1.0", + "bbob-biobj-mixint_f048_i09_d040 1.0", + "bbob-biobj-mixint_f048_i09_d080 1.0", + "bbob-biobj-mixint_f048_i09_d160 1.0", + "bbob-biobj-mixint_f048_i10_d005 1.0", + "bbob-biobj-mixint_f048_i10_d010 1.0", + "bbob-biobj-mixint_f048_i10_d020 1.0", + "bbob-biobj-mixint_f048_i10_d040 1.0", + "bbob-biobj-mixint_f048_i10_d080 1.0", + "bbob-biobj-mixint_f048_i10_d160 1.0", + "bbob-biobj-mixint_f048_i11_d005 1.0", + "bbob-biobj-mixint_f048_i11_d010 1.0", + "bbob-biobj-mixint_f048_i11_d020 1.0", + "bbob-biobj-mixint_f048_i11_d040 1.0", + "bbob-biobj-mixint_f048_i11_d080 1.0", + "bbob-biobj-mixint_f048_i11_d160 1.0", + "bbob-biobj-mixint_f048_i12_d005 1.0", + "bbob-biobj-mixint_f048_i12_d010 1.0", + "bbob-biobj-mixint_f048_i12_d020 1.0", + "bbob-biobj-mixint_f048_i12_d040 1.0", + "bbob-biobj-mixint_f048_i12_d080 1.0", + "bbob-biobj-mixint_f048_i12_d160 1.0", + "bbob-biobj-mixint_f048_i13_d005 1.0", + "bbob-biobj-mixint_f048_i13_d010 1.0", + "bbob-biobj-mixint_f048_i13_d020 1.0", + "bbob-biobj-mixint_f048_i13_d040 1.0", + "bbob-biobj-mixint_f048_i13_d080 1.0", + "bbob-biobj-mixint_f048_i13_d160 1.0", + "bbob-biobj-mixint_f048_i14_d005 1.0", + "bbob-biobj-mixint_f048_i14_d010 1.0", + "bbob-biobj-mixint_f048_i14_d020 1.0", + "bbob-biobj-mixint_f048_i14_d040 1.0", + "bbob-biobj-mixint_f048_i14_d080 1.0", + "bbob-biobj-mixint_f048_i14_d160 1.0", + "bbob-biobj-mixint_f048_i15_d005 1.0", + "bbob-biobj-mixint_f048_i15_d010 1.0", + "bbob-biobj-mixint_f048_i15_d020 1.0", + "bbob-biobj-mixint_f048_i15_d040 1.0", + "bbob-biobj-mixint_f048_i15_d080 1.0", + "bbob-biobj-mixint_f048_i15_d160 1.0", + "bbob-biobj-mixint_f049_i01_d005 1.0", + "bbob-biobj-mixint_f049_i01_d010 1.0", + "bbob-biobj-mixint_f049_i01_d020 1.0", + "bbob-biobj-mixint_f049_i01_d040 1.0", + "bbob-biobj-mixint_f049_i01_d080 1.0", + "bbob-biobj-mixint_f049_i01_d160 1.0", + "bbob-biobj-mixint_f049_i02_d005 1.0", + "bbob-biobj-mixint_f049_i02_d010 1.0", + "bbob-biobj-mixint_f049_i02_d020 1.0", + "bbob-biobj-mixint_f049_i02_d040 1.0", + "bbob-biobj-mixint_f049_i02_d080 1.0", + "bbob-biobj-mixint_f049_i02_d160 1.0", + "bbob-biobj-mixint_f049_i03_d005 1.0", + "bbob-biobj-mixint_f049_i03_d010 1.0", + "bbob-biobj-mixint_f049_i03_d020 1.0", + "bbob-biobj-mixint_f049_i03_d040 1.0", + "bbob-biobj-mixint_f049_i03_d080 1.0", + "bbob-biobj-mixint_f049_i03_d160 1.0", + "bbob-biobj-mixint_f049_i04_d005 1.0", + "bbob-biobj-mixint_f049_i04_d010 1.0", + "bbob-biobj-mixint_f049_i04_d020 1.0", + "bbob-biobj-mixint_f049_i04_d040 1.0", + "bbob-biobj-mixint_f049_i04_d080 1.0", + "bbob-biobj-mixint_f049_i04_d160 1.0", + "bbob-biobj-mixint_f049_i05_d005 1.0", + "bbob-biobj-mixint_f049_i05_d010 1.0", + "bbob-biobj-mixint_f049_i05_d020 1.0", + "bbob-biobj-mixint_f049_i05_d040 1.0", + "bbob-biobj-mixint_f049_i05_d080 1.0", + "bbob-biobj-mixint_f049_i05_d160 1.0", + "bbob-biobj-mixint_f049_i06_d005 1.0", + "bbob-biobj-mixint_f049_i06_d010 1.0", + "bbob-biobj-mixint_f049_i06_d020 1.0", + "bbob-biobj-mixint_f049_i06_d040 1.0", + "bbob-biobj-mixint_f049_i06_d080 1.0", + "bbob-biobj-mixint_f049_i06_d160 1.0", + "bbob-biobj-mixint_f049_i07_d005 1.0", + "bbob-biobj-mixint_f049_i07_d010 1.0", + "bbob-biobj-mixint_f049_i07_d020 1.0", + "bbob-biobj-mixint_f049_i07_d040 1.0", + "bbob-biobj-mixint_f049_i07_d080 1.0", + "bbob-biobj-mixint_f049_i07_d160 1.0", + "bbob-biobj-mixint_f049_i08_d005 1.0", + "bbob-biobj-mixint_f049_i08_d010 1.0", + "bbob-biobj-mixint_f049_i08_d020 1.0", + "bbob-biobj-mixint_f049_i08_d040 1.0", + "bbob-biobj-mixint_f049_i08_d080 1.0", + "bbob-biobj-mixint_f049_i08_d160 1.0", + "bbob-biobj-mixint_f049_i09_d005 1.0", + "bbob-biobj-mixint_f049_i09_d010 1.0", + "bbob-biobj-mixint_f049_i09_d020 1.0", + "bbob-biobj-mixint_f049_i09_d040 1.0", + "bbob-biobj-mixint_f049_i09_d080 1.0", + "bbob-biobj-mixint_f049_i09_d160 1.0", + "bbob-biobj-mixint_f049_i10_d005 1.0", + "bbob-biobj-mixint_f049_i10_d010 1.0", + "bbob-biobj-mixint_f049_i10_d020 1.0", + "bbob-biobj-mixint_f049_i10_d040 1.0", + "bbob-biobj-mixint_f049_i10_d080 1.0", + "bbob-biobj-mixint_f049_i10_d160 1.0", + "bbob-biobj-mixint_f049_i11_d005 1.0", + "bbob-biobj-mixint_f049_i11_d010 1.0", + "bbob-biobj-mixint_f049_i11_d020 1.0", + "bbob-biobj-mixint_f049_i11_d040 1.0", + "bbob-biobj-mixint_f049_i11_d080 1.0", + "bbob-biobj-mixint_f049_i11_d160 1.0", + "bbob-biobj-mixint_f049_i12_d005 1.0", + "bbob-biobj-mixint_f049_i12_d010 1.0", + "bbob-biobj-mixint_f049_i12_d020 1.0", + "bbob-biobj-mixint_f049_i12_d040 1.0", + "bbob-biobj-mixint_f049_i12_d080 1.0", + "bbob-biobj-mixint_f049_i12_d160 1.0", + "bbob-biobj-mixint_f049_i13_d005 1.0", + "bbob-biobj-mixint_f049_i13_d010 1.0", + "bbob-biobj-mixint_f049_i13_d020 1.0", + "bbob-biobj-mixint_f049_i13_d040 1.0", + "bbob-biobj-mixint_f049_i13_d080 1.0", + "bbob-biobj-mixint_f049_i13_d160 1.0", + "bbob-biobj-mixint_f049_i14_d005 1.0", + "bbob-biobj-mixint_f049_i14_d010 1.0", + "bbob-biobj-mixint_f049_i14_d020 1.0", + "bbob-biobj-mixint_f049_i14_d040 1.0", + "bbob-biobj-mixint_f049_i14_d080 1.0", + "bbob-biobj-mixint_f049_i14_d160 1.0", + "bbob-biobj-mixint_f049_i15_d005 1.0", + "bbob-biobj-mixint_f049_i15_d010 1.0", + "bbob-biobj-mixint_f049_i15_d020 1.0", + "bbob-biobj-mixint_f049_i15_d040 1.0", + "bbob-biobj-mixint_f049_i15_d080 1.0", + "bbob-biobj-mixint_f049_i15_d160 1.0", + "bbob-biobj-mixint_f050_i01_d005 1.0", + "bbob-biobj-mixint_f050_i01_d010 1.0", + "bbob-biobj-mixint_f050_i01_d020 1.0", + "bbob-biobj-mixint_f050_i01_d040 1.0", + "bbob-biobj-mixint_f050_i01_d080 1.0", + "bbob-biobj-mixint_f050_i01_d160 1.0", + "bbob-biobj-mixint_f050_i02_d005 1.0", + "bbob-biobj-mixint_f050_i02_d010 1.0", + "bbob-biobj-mixint_f050_i02_d020 1.0", + "bbob-biobj-mixint_f050_i02_d040 1.0", + "bbob-biobj-mixint_f050_i02_d080 1.0", + "bbob-biobj-mixint_f050_i02_d160 1.0", + "bbob-biobj-mixint_f050_i03_d005 1.0", + "bbob-biobj-mixint_f050_i03_d010 1.0", + "bbob-biobj-mixint_f050_i03_d020 1.0", + "bbob-biobj-mixint_f050_i03_d040 1.0", + "bbob-biobj-mixint_f050_i03_d080 1.0", + "bbob-biobj-mixint_f050_i03_d160 1.0", + "bbob-biobj-mixint_f050_i04_d005 1.0", + "bbob-biobj-mixint_f050_i04_d010 1.0", + "bbob-biobj-mixint_f050_i04_d020 1.0", + "bbob-biobj-mixint_f050_i04_d040 1.0", + "bbob-biobj-mixint_f050_i04_d080 1.0", + "bbob-biobj-mixint_f050_i04_d160 1.0", + "bbob-biobj-mixint_f050_i05_d005 1.0", + "bbob-biobj-mixint_f050_i05_d010 1.0", + "bbob-biobj-mixint_f050_i05_d020 1.0", + "bbob-biobj-mixint_f050_i05_d040 1.0", + "bbob-biobj-mixint_f050_i05_d080 1.0", + "bbob-biobj-mixint_f050_i05_d160 1.0", + "bbob-biobj-mixint_f050_i06_d005 1.0", + "bbob-biobj-mixint_f050_i06_d010 1.0", + "bbob-biobj-mixint_f050_i06_d020 1.0", + "bbob-biobj-mixint_f050_i06_d040 1.0", + "bbob-biobj-mixint_f050_i06_d080 1.0", + "bbob-biobj-mixint_f050_i06_d160 1.0", + "bbob-biobj-mixint_f050_i07_d005 1.0", + "bbob-biobj-mixint_f050_i07_d010 1.0", + "bbob-biobj-mixint_f050_i07_d020 1.0", + "bbob-biobj-mixint_f050_i07_d040 1.0", + "bbob-biobj-mixint_f050_i07_d080 1.0", + "bbob-biobj-mixint_f050_i07_d160 1.0", + "bbob-biobj-mixint_f050_i08_d005 1.0", + "bbob-biobj-mixint_f050_i08_d010 1.0", + "bbob-biobj-mixint_f050_i08_d020 1.0", + "bbob-biobj-mixint_f050_i08_d040 1.0", + "bbob-biobj-mixint_f050_i08_d080 1.0", + "bbob-biobj-mixint_f050_i08_d160 1.0", + "bbob-biobj-mixint_f050_i09_d005 1.0", + "bbob-biobj-mixint_f050_i09_d010 1.0", + "bbob-biobj-mixint_f050_i09_d020 1.0", + "bbob-biobj-mixint_f050_i09_d040 1.0", + "bbob-biobj-mixint_f050_i09_d080 1.0", + "bbob-biobj-mixint_f050_i09_d160 1.0", + "bbob-biobj-mixint_f050_i10_d005 1.0", + "bbob-biobj-mixint_f050_i10_d010 1.0", + "bbob-biobj-mixint_f050_i10_d020 1.0", + "bbob-biobj-mixint_f050_i10_d040 1.0", + "bbob-biobj-mixint_f050_i10_d080 1.0", + "bbob-biobj-mixint_f050_i10_d160 1.0", + "bbob-biobj-mixint_f050_i11_d005 1.0", + "bbob-biobj-mixint_f050_i11_d010 1.0", + "bbob-biobj-mixint_f050_i11_d020 1.0", + "bbob-biobj-mixint_f050_i11_d040 1.0", + "bbob-biobj-mixint_f050_i11_d080 1.0", + "bbob-biobj-mixint_f050_i11_d160 1.0", + "bbob-biobj-mixint_f050_i12_d005 1.0", + "bbob-biobj-mixint_f050_i12_d010 1.0", + "bbob-biobj-mixint_f050_i12_d020 1.0", + "bbob-biobj-mixint_f050_i12_d040 1.0", + "bbob-biobj-mixint_f050_i12_d080 1.0", + "bbob-biobj-mixint_f050_i12_d160 1.0", + "bbob-biobj-mixint_f050_i13_d005 1.0", + "bbob-biobj-mixint_f050_i13_d010 1.0", + "bbob-biobj-mixint_f050_i13_d020 1.0", + "bbob-biobj-mixint_f050_i13_d040 1.0", + "bbob-biobj-mixint_f050_i13_d080 1.0", + "bbob-biobj-mixint_f050_i13_d160 1.0", + "bbob-biobj-mixint_f050_i14_d005 1.0", + "bbob-biobj-mixint_f050_i14_d010 1.0", + "bbob-biobj-mixint_f050_i14_d020 1.0", + "bbob-biobj-mixint_f050_i14_d040 1.0", + "bbob-biobj-mixint_f050_i14_d080 1.0", + "bbob-biobj-mixint_f050_i14_d160 1.0", + "bbob-biobj-mixint_f050_i15_d005 1.0", + "bbob-biobj-mixint_f050_i15_d010 1.0", + "bbob-biobj-mixint_f050_i15_d020 1.0", + "bbob-biobj-mixint_f050_i15_d040 1.0", + "bbob-biobj-mixint_f050_i15_d080 1.0", + "bbob-biobj-mixint_f050_i15_d160 1.0", + "bbob-biobj-mixint_f051_i01_d005 1.0", + "bbob-biobj-mixint_f051_i01_d010 1.0", + "bbob-biobj-mixint_f051_i01_d020 1.0", + "bbob-biobj-mixint_f051_i01_d040 1.0", + "bbob-biobj-mixint_f051_i01_d080 1.0", + "bbob-biobj-mixint_f051_i01_d160 1.0", + "bbob-biobj-mixint_f051_i02_d005 1.0", + "bbob-biobj-mixint_f051_i02_d010 1.0", + "bbob-biobj-mixint_f051_i02_d020 1.0", + "bbob-biobj-mixint_f051_i02_d040 1.0", + "bbob-biobj-mixint_f051_i02_d080 1.0", + "bbob-biobj-mixint_f051_i02_d160 1.0", + "bbob-biobj-mixint_f051_i03_d005 1.0", + "bbob-biobj-mixint_f051_i03_d010 1.0", + "bbob-biobj-mixint_f051_i03_d020 1.0", + "bbob-biobj-mixint_f051_i03_d040 1.0", + "bbob-biobj-mixint_f051_i03_d080 1.0", + "bbob-biobj-mixint_f051_i03_d160 1.0", + "bbob-biobj-mixint_f051_i04_d005 1.0", + "bbob-biobj-mixint_f051_i04_d010 1.0", + "bbob-biobj-mixint_f051_i04_d020 1.0", + "bbob-biobj-mixint_f051_i04_d040 1.0", + "bbob-biobj-mixint_f051_i04_d080 1.0", + "bbob-biobj-mixint_f051_i04_d160 1.0", + "bbob-biobj-mixint_f051_i05_d005 1.0", + "bbob-biobj-mixint_f051_i05_d010 1.0", + "bbob-biobj-mixint_f051_i05_d020 1.0", + "bbob-biobj-mixint_f051_i05_d040 1.0", + "bbob-biobj-mixint_f051_i05_d080 1.0", + "bbob-biobj-mixint_f051_i05_d160 1.0", + "bbob-biobj-mixint_f051_i06_d005 1.0", + "bbob-biobj-mixint_f051_i06_d010 1.0", + "bbob-biobj-mixint_f051_i06_d020 1.0", + "bbob-biobj-mixint_f051_i06_d040 1.0", + "bbob-biobj-mixint_f051_i06_d080 1.0", + "bbob-biobj-mixint_f051_i06_d160 1.0", + "bbob-biobj-mixint_f051_i07_d005 1.0", + "bbob-biobj-mixint_f051_i07_d010 1.0", + "bbob-biobj-mixint_f051_i07_d020 1.0", + "bbob-biobj-mixint_f051_i07_d040 1.0", + "bbob-biobj-mixint_f051_i07_d080 1.0", + "bbob-biobj-mixint_f051_i07_d160 1.0", + "bbob-biobj-mixint_f051_i08_d005 1.0", + "bbob-biobj-mixint_f051_i08_d010 1.0", + "bbob-biobj-mixint_f051_i08_d020 1.0", + "bbob-biobj-mixint_f051_i08_d040 1.0", + "bbob-biobj-mixint_f051_i08_d080 1.0", + "bbob-biobj-mixint_f051_i08_d160 1.0", + "bbob-biobj-mixint_f051_i09_d005 1.0", + "bbob-biobj-mixint_f051_i09_d010 1.0", + "bbob-biobj-mixint_f051_i09_d020 1.0", + "bbob-biobj-mixint_f051_i09_d040 1.0", + "bbob-biobj-mixint_f051_i09_d080 1.0", + "bbob-biobj-mixint_f051_i09_d160 1.0", + "bbob-biobj-mixint_f051_i10_d005 1.0", + "bbob-biobj-mixint_f051_i10_d010 1.0", + "bbob-biobj-mixint_f051_i10_d020 1.0", + "bbob-biobj-mixint_f051_i10_d040 1.0", + "bbob-biobj-mixint_f051_i10_d080 1.0", + "bbob-biobj-mixint_f051_i10_d160 1.0", + "bbob-biobj-mixint_f051_i11_d005 1.0", + "bbob-biobj-mixint_f051_i11_d010 1.0", + "bbob-biobj-mixint_f051_i11_d020 1.0", + "bbob-biobj-mixint_f051_i11_d040 1.0", + "bbob-biobj-mixint_f051_i11_d080 1.0", + "bbob-biobj-mixint_f051_i11_d160 1.0", + "bbob-biobj-mixint_f051_i12_d005 1.0", + "bbob-biobj-mixint_f051_i12_d010 1.0", + "bbob-biobj-mixint_f051_i12_d020 1.0", + "bbob-biobj-mixint_f051_i12_d040 1.0", + "bbob-biobj-mixint_f051_i12_d080 1.0", + "bbob-biobj-mixint_f051_i12_d160 1.0", + "bbob-biobj-mixint_f051_i13_d005 1.0", + "bbob-biobj-mixint_f051_i13_d010 1.0", + "bbob-biobj-mixint_f051_i13_d020 1.0", + "bbob-biobj-mixint_f051_i13_d040 1.0", + "bbob-biobj-mixint_f051_i13_d080 1.0", + "bbob-biobj-mixint_f051_i13_d160 1.0", + "bbob-biobj-mixint_f051_i14_d005 1.0", + "bbob-biobj-mixint_f051_i14_d010 1.0", + "bbob-biobj-mixint_f051_i14_d020 1.0", + "bbob-biobj-mixint_f051_i14_d040 1.0", + "bbob-biobj-mixint_f051_i14_d080 1.0", + "bbob-biobj-mixint_f051_i14_d160 1.0", + "bbob-biobj-mixint_f051_i15_d005 1.0", + "bbob-biobj-mixint_f051_i15_d010 1.0", + "bbob-biobj-mixint_f051_i15_d020 1.0", + "bbob-biobj-mixint_f051_i15_d040 1.0", + "bbob-biobj-mixint_f051_i15_d080 1.0", + "bbob-biobj-mixint_f051_i15_d160 1.0", + "bbob-biobj-mixint_f052_i01_d005 1.0", + "bbob-biobj-mixint_f052_i01_d010 1.0", + "bbob-biobj-mixint_f052_i01_d020 1.0", + "bbob-biobj-mixint_f052_i01_d040 1.0", + "bbob-biobj-mixint_f052_i01_d080 1.0", + "bbob-biobj-mixint_f052_i01_d160 1.0", + "bbob-biobj-mixint_f052_i02_d005 1.0", + "bbob-biobj-mixint_f052_i02_d010 1.0", + "bbob-biobj-mixint_f052_i02_d020 1.0", + "bbob-biobj-mixint_f052_i02_d040 1.0", + "bbob-biobj-mixint_f052_i02_d080 1.0", + "bbob-biobj-mixint_f052_i02_d160 1.0", + "bbob-biobj-mixint_f052_i03_d005 1.0", + "bbob-biobj-mixint_f052_i03_d010 1.0", + "bbob-biobj-mixint_f052_i03_d020 1.0", + "bbob-biobj-mixint_f052_i03_d040 1.0", + "bbob-biobj-mixint_f052_i03_d080 1.0", + "bbob-biobj-mixint_f052_i03_d160 1.0", + "bbob-biobj-mixint_f052_i04_d005 1.0", + "bbob-biobj-mixint_f052_i04_d010 1.0", + "bbob-biobj-mixint_f052_i04_d020 1.0", + "bbob-biobj-mixint_f052_i04_d040 1.0", + "bbob-biobj-mixint_f052_i04_d080 1.0", + "bbob-biobj-mixint_f052_i04_d160 1.0", + "bbob-biobj-mixint_f052_i05_d005 1.0", + "bbob-biobj-mixint_f052_i05_d010 1.0", + "bbob-biobj-mixint_f052_i05_d020 1.0", + "bbob-biobj-mixint_f052_i05_d040 1.0", + "bbob-biobj-mixint_f052_i05_d080 1.0", + "bbob-biobj-mixint_f052_i05_d160 1.0", + "bbob-biobj-mixint_f052_i06_d005 1.0", + "bbob-biobj-mixint_f052_i06_d010 1.0", + "bbob-biobj-mixint_f052_i06_d020 1.0", + "bbob-biobj-mixint_f052_i06_d040 1.0", + "bbob-biobj-mixint_f052_i06_d080 1.0", + "bbob-biobj-mixint_f052_i06_d160 1.0", + "bbob-biobj-mixint_f052_i07_d005 1.0", + "bbob-biobj-mixint_f052_i07_d010 1.0", + "bbob-biobj-mixint_f052_i07_d020 1.0", + "bbob-biobj-mixint_f052_i07_d040 1.0", + "bbob-biobj-mixint_f052_i07_d080 1.0", + "bbob-biobj-mixint_f052_i07_d160 1.0", + "bbob-biobj-mixint_f052_i08_d005 1.0", + "bbob-biobj-mixint_f052_i08_d010 1.0", + "bbob-biobj-mixint_f052_i08_d020 1.0", + "bbob-biobj-mixint_f052_i08_d040 1.0", + "bbob-biobj-mixint_f052_i08_d080 1.0", + "bbob-biobj-mixint_f052_i08_d160 1.0", + "bbob-biobj-mixint_f052_i09_d005 1.0", + "bbob-biobj-mixint_f052_i09_d010 1.0", + "bbob-biobj-mixint_f052_i09_d020 1.0", + "bbob-biobj-mixint_f052_i09_d040 1.0", + "bbob-biobj-mixint_f052_i09_d080 1.0", + "bbob-biobj-mixint_f052_i09_d160 1.0", + "bbob-biobj-mixint_f052_i10_d005 1.0", + "bbob-biobj-mixint_f052_i10_d010 1.0", + "bbob-biobj-mixint_f052_i10_d020 1.0", + "bbob-biobj-mixint_f052_i10_d040 1.0", + "bbob-biobj-mixint_f052_i10_d080 1.0", + "bbob-biobj-mixint_f052_i10_d160 1.0", + "bbob-biobj-mixint_f052_i11_d005 1.0", + "bbob-biobj-mixint_f052_i11_d010 1.0", + "bbob-biobj-mixint_f052_i11_d020 1.0", + "bbob-biobj-mixint_f052_i11_d040 1.0", + "bbob-biobj-mixint_f052_i11_d080 1.0", + "bbob-biobj-mixint_f052_i11_d160 1.0", + "bbob-biobj-mixint_f052_i12_d005 1.0", + "bbob-biobj-mixint_f052_i12_d010 1.0", + "bbob-biobj-mixint_f052_i12_d020 1.0", + "bbob-biobj-mixint_f052_i12_d040 1.0", + "bbob-biobj-mixint_f052_i12_d080 1.0", + "bbob-biobj-mixint_f052_i12_d160 1.0", + "bbob-biobj-mixint_f052_i13_d005 1.0", + "bbob-biobj-mixint_f052_i13_d010 1.0", + "bbob-biobj-mixint_f052_i13_d020 1.0", + "bbob-biobj-mixint_f052_i13_d040 1.0", + "bbob-biobj-mixint_f052_i13_d080 1.0", + "bbob-biobj-mixint_f052_i13_d160 1.0", + "bbob-biobj-mixint_f052_i14_d005 1.0", + "bbob-biobj-mixint_f052_i14_d010 1.0", + "bbob-biobj-mixint_f052_i14_d020 1.0", + "bbob-biobj-mixint_f052_i14_d040 1.0", + "bbob-biobj-mixint_f052_i14_d080 1.0", + "bbob-biobj-mixint_f052_i14_d160 1.0", + "bbob-biobj-mixint_f052_i15_d005 1.0", + "bbob-biobj-mixint_f052_i15_d010 1.0", + "bbob-biobj-mixint_f052_i15_d020 1.0", + "bbob-biobj-mixint_f052_i15_d040 1.0", + "bbob-biobj-mixint_f052_i15_d080 1.0", + "bbob-biobj-mixint_f052_i15_d160 1.0", + "bbob-biobj-mixint_f053_i01_d005 1.0", + "bbob-biobj-mixint_f053_i01_d010 1.0", + "bbob-biobj-mixint_f053_i01_d020 1.0", + "bbob-biobj-mixint_f053_i01_d040 1.0", + "bbob-biobj-mixint_f053_i01_d080 1.0", + "bbob-biobj-mixint_f053_i01_d160 1.0", + "bbob-biobj-mixint_f053_i02_d005 1.0", + "bbob-biobj-mixint_f053_i02_d010 1.0", + "bbob-biobj-mixint_f053_i02_d020 1.0", + "bbob-biobj-mixint_f053_i02_d040 1.0", + "bbob-biobj-mixint_f053_i02_d080 1.0", + "bbob-biobj-mixint_f053_i02_d160 1.0", + "bbob-biobj-mixint_f053_i03_d005 1.0", + "bbob-biobj-mixint_f053_i03_d010 1.0", + "bbob-biobj-mixint_f053_i03_d020 1.0", + "bbob-biobj-mixint_f053_i03_d040 1.0", + "bbob-biobj-mixint_f053_i03_d080 1.0", + "bbob-biobj-mixint_f053_i03_d160 1.0", + "bbob-biobj-mixint_f053_i04_d005 1.0", + "bbob-biobj-mixint_f053_i04_d010 1.0", + "bbob-biobj-mixint_f053_i04_d020 1.0", + "bbob-biobj-mixint_f053_i04_d040 1.0", + "bbob-biobj-mixint_f053_i04_d080 1.0", + "bbob-biobj-mixint_f053_i04_d160 1.0", + "bbob-biobj-mixint_f053_i05_d005 1.0", + "bbob-biobj-mixint_f053_i05_d010 1.0", + "bbob-biobj-mixint_f053_i05_d020 1.0", + "bbob-biobj-mixint_f053_i05_d040 1.0", + "bbob-biobj-mixint_f053_i05_d080 1.0", + "bbob-biobj-mixint_f053_i05_d160 1.0", + "bbob-biobj-mixint_f053_i06_d005 1.0", + "bbob-biobj-mixint_f053_i06_d010 1.0", + "bbob-biobj-mixint_f053_i06_d020 1.0", + "bbob-biobj-mixint_f053_i06_d040 1.0", + "bbob-biobj-mixint_f053_i06_d080 1.0", + "bbob-biobj-mixint_f053_i06_d160 1.0", + "bbob-biobj-mixint_f053_i07_d005 1.0", + "bbob-biobj-mixint_f053_i07_d010 1.0", + "bbob-biobj-mixint_f053_i07_d020 1.0", + "bbob-biobj-mixint_f053_i07_d040 1.0", + "bbob-biobj-mixint_f053_i07_d080 1.0", + "bbob-biobj-mixint_f053_i07_d160 1.0", + "bbob-biobj-mixint_f053_i08_d005 1.0", + "bbob-biobj-mixint_f053_i08_d010 1.0", + "bbob-biobj-mixint_f053_i08_d020 1.0", + "bbob-biobj-mixint_f053_i08_d040 1.0", + "bbob-biobj-mixint_f053_i08_d080 1.0", + "bbob-biobj-mixint_f053_i08_d160 1.0", + "bbob-biobj-mixint_f053_i09_d005 1.0", + "bbob-biobj-mixint_f053_i09_d010 1.0", + "bbob-biobj-mixint_f053_i09_d020 1.0", + "bbob-biobj-mixint_f053_i09_d040 1.0", + "bbob-biobj-mixint_f053_i09_d080 1.0", + "bbob-biobj-mixint_f053_i09_d160 1.0", + "bbob-biobj-mixint_f053_i10_d005 1.0", + "bbob-biobj-mixint_f053_i10_d010 1.0", + "bbob-biobj-mixint_f053_i10_d020 1.0", + "bbob-biobj-mixint_f053_i10_d040 1.0", + "bbob-biobj-mixint_f053_i10_d080 1.0", + "bbob-biobj-mixint_f053_i10_d160 1.0", + "bbob-biobj-mixint_f053_i11_d005 1.0", + "bbob-biobj-mixint_f053_i11_d010 1.0", + "bbob-biobj-mixint_f053_i11_d020 1.0", + "bbob-biobj-mixint_f053_i11_d040 1.0", + "bbob-biobj-mixint_f053_i11_d080 1.0", + "bbob-biobj-mixint_f053_i11_d160 1.0", + "bbob-biobj-mixint_f053_i12_d005 1.0", + "bbob-biobj-mixint_f053_i12_d010 1.0", + "bbob-biobj-mixint_f053_i12_d020 1.0", + "bbob-biobj-mixint_f053_i12_d040 1.0", + "bbob-biobj-mixint_f053_i12_d080 1.0", + "bbob-biobj-mixint_f053_i12_d160 1.0", + "bbob-biobj-mixint_f053_i13_d005 1.0", + "bbob-biobj-mixint_f053_i13_d010 1.0", + "bbob-biobj-mixint_f053_i13_d020 1.0", + "bbob-biobj-mixint_f053_i13_d040 1.0", + "bbob-biobj-mixint_f053_i13_d080 1.0", + "bbob-biobj-mixint_f053_i13_d160 1.0", + "bbob-biobj-mixint_f053_i14_d005 1.0", + "bbob-biobj-mixint_f053_i14_d010 1.0", + "bbob-biobj-mixint_f053_i14_d020 1.0", + "bbob-biobj-mixint_f053_i14_d040 1.0", + "bbob-biobj-mixint_f053_i14_d080 1.0", + "bbob-biobj-mixint_f053_i14_d160 1.0", + "bbob-biobj-mixint_f053_i15_d005 1.0", + "bbob-biobj-mixint_f053_i15_d010 1.0", + "bbob-biobj-mixint_f053_i15_d020 1.0", + "bbob-biobj-mixint_f053_i15_d040 1.0", + "bbob-biobj-mixint_f053_i15_d080 1.0", + "bbob-biobj-mixint_f053_i15_d160 1.0", + "bbob-biobj-mixint_f054_i01_d005 1.0", + "bbob-biobj-mixint_f054_i01_d010 1.0", + "bbob-biobj-mixint_f054_i01_d020 1.0", + "bbob-biobj-mixint_f054_i01_d040 1.0", + "bbob-biobj-mixint_f054_i01_d080 1.0", + "bbob-biobj-mixint_f054_i01_d160 1.0", + "bbob-biobj-mixint_f054_i02_d005 1.0", + "bbob-biobj-mixint_f054_i02_d010 1.0", + "bbob-biobj-mixint_f054_i02_d020 1.0", + "bbob-biobj-mixint_f054_i02_d040 1.0", + "bbob-biobj-mixint_f054_i02_d080 1.0", + "bbob-biobj-mixint_f054_i02_d160 1.0", + "bbob-biobj-mixint_f054_i03_d005 1.0", + "bbob-biobj-mixint_f054_i03_d010 1.0", + "bbob-biobj-mixint_f054_i03_d020 1.0", + "bbob-biobj-mixint_f054_i03_d040 1.0", + "bbob-biobj-mixint_f054_i03_d080 1.0", + "bbob-biobj-mixint_f054_i03_d160 1.0", + "bbob-biobj-mixint_f054_i04_d005 1.0", + "bbob-biobj-mixint_f054_i04_d010 1.0", + "bbob-biobj-mixint_f054_i04_d020 1.0", + "bbob-biobj-mixint_f054_i04_d040 1.0", + "bbob-biobj-mixint_f054_i04_d080 1.0", + "bbob-biobj-mixint_f054_i04_d160 1.0", + "bbob-biobj-mixint_f054_i05_d005 1.0", + "bbob-biobj-mixint_f054_i05_d010 1.0", + "bbob-biobj-mixint_f054_i05_d020 1.0", + "bbob-biobj-mixint_f054_i05_d040 1.0", + "bbob-biobj-mixint_f054_i05_d080 1.0", + "bbob-biobj-mixint_f054_i05_d160 1.0", + "bbob-biobj-mixint_f054_i06_d005 1.0", + "bbob-biobj-mixint_f054_i06_d010 1.0", + "bbob-biobj-mixint_f054_i06_d020 1.0", + "bbob-biobj-mixint_f054_i06_d040 1.0", + "bbob-biobj-mixint_f054_i06_d080 1.0", + "bbob-biobj-mixint_f054_i06_d160 1.0", + "bbob-biobj-mixint_f054_i07_d005 1.0", + "bbob-biobj-mixint_f054_i07_d010 1.0", + "bbob-biobj-mixint_f054_i07_d020 1.0", + "bbob-biobj-mixint_f054_i07_d040 1.0", + "bbob-biobj-mixint_f054_i07_d080 1.0", + "bbob-biobj-mixint_f054_i07_d160 1.0", + "bbob-biobj-mixint_f054_i08_d005 1.0", + "bbob-biobj-mixint_f054_i08_d010 1.0", + "bbob-biobj-mixint_f054_i08_d020 1.0", + "bbob-biobj-mixint_f054_i08_d040 1.0", + "bbob-biobj-mixint_f054_i08_d080 1.0", + "bbob-biobj-mixint_f054_i08_d160 1.0", + "bbob-biobj-mixint_f054_i09_d005 1.0", + "bbob-biobj-mixint_f054_i09_d010 1.0", + "bbob-biobj-mixint_f054_i09_d020 1.0", + "bbob-biobj-mixint_f054_i09_d040 1.0", + "bbob-biobj-mixint_f054_i09_d080 1.0", + "bbob-biobj-mixint_f054_i09_d160 1.0", + "bbob-biobj-mixint_f054_i10_d005 1.0", + "bbob-biobj-mixint_f054_i10_d010 1.0", + "bbob-biobj-mixint_f054_i10_d020 1.0", + "bbob-biobj-mixint_f054_i10_d040 1.0", + "bbob-biobj-mixint_f054_i10_d080 1.0", + "bbob-biobj-mixint_f054_i10_d160 1.0", + "bbob-biobj-mixint_f054_i11_d005 1.0", + "bbob-biobj-mixint_f054_i11_d010 1.0", + "bbob-biobj-mixint_f054_i11_d020 1.0", + "bbob-biobj-mixint_f054_i11_d040 1.0", + "bbob-biobj-mixint_f054_i11_d080 1.0", + "bbob-biobj-mixint_f054_i11_d160 1.0", + "bbob-biobj-mixint_f054_i12_d005 1.0", + "bbob-biobj-mixint_f054_i12_d010 1.0", + "bbob-biobj-mixint_f054_i12_d020 1.0", + "bbob-biobj-mixint_f054_i12_d040 1.0", + "bbob-biobj-mixint_f054_i12_d080 1.0", + "bbob-biobj-mixint_f054_i12_d160 1.0", + "bbob-biobj-mixint_f054_i13_d005 1.0", + "bbob-biobj-mixint_f054_i13_d010 1.0", + "bbob-biobj-mixint_f054_i13_d020 1.0", + "bbob-biobj-mixint_f054_i13_d040 1.0", + "bbob-biobj-mixint_f054_i13_d080 1.0", + "bbob-biobj-mixint_f054_i13_d160 1.0", + "bbob-biobj-mixint_f054_i14_d005 1.0", + "bbob-biobj-mixint_f054_i14_d010 1.0", + "bbob-biobj-mixint_f054_i14_d020 1.0", + "bbob-biobj-mixint_f054_i14_d040 1.0", + "bbob-biobj-mixint_f054_i14_d080 1.0", + "bbob-biobj-mixint_f054_i14_d160 1.0", + "bbob-biobj-mixint_f054_i15_d005 1.0", + "bbob-biobj-mixint_f054_i15_d010 1.0", + "bbob-biobj-mixint_f054_i15_d020 1.0", + "bbob-biobj-mixint_f054_i15_d040 1.0", + "bbob-biobj-mixint_f054_i15_d080 1.0", + "bbob-biobj-mixint_f054_i15_d160 1.0", + "bbob-biobj-mixint_f055_i01_d005 1.0", + "bbob-biobj-mixint_f055_i01_d010 1.0", + "bbob-biobj-mixint_f055_i01_d020 1.0", + "bbob-biobj-mixint_f055_i01_d040 1.0", + "bbob-biobj-mixint_f055_i01_d080 1.0", + "bbob-biobj-mixint_f055_i01_d160 1.0", + "bbob-biobj-mixint_f055_i02_d005 1.0", + "bbob-biobj-mixint_f055_i02_d010 1.0", + "bbob-biobj-mixint_f055_i02_d020 1.0", + "bbob-biobj-mixint_f055_i02_d040 1.0", + "bbob-biobj-mixint_f055_i02_d080 1.0", + "bbob-biobj-mixint_f055_i02_d160 1.0", + "bbob-biobj-mixint_f055_i03_d005 1.0", + "bbob-biobj-mixint_f055_i03_d010 1.0", + "bbob-biobj-mixint_f055_i03_d020 1.0", + "bbob-biobj-mixint_f055_i03_d040 1.0", + "bbob-biobj-mixint_f055_i03_d080 1.0", + "bbob-biobj-mixint_f055_i03_d160 1.0", + "bbob-biobj-mixint_f055_i04_d005 1.0", + "bbob-biobj-mixint_f055_i04_d010 1.0", + "bbob-biobj-mixint_f055_i04_d020 1.0", + "bbob-biobj-mixint_f055_i04_d040 1.0", + "bbob-biobj-mixint_f055_i04_d080 1.0", + "bbob-biobj-mixint_f055_i04_d160 1.0", + "bbob-biobj-mixint_f055_i05_d005 1.0", + "bbob-biobj-mixint_f055_i05_d010 1.0", + "bbob-biobj-mixint_f055_i05_d020 1.0", + "bbob-biobj-mixint_f055_i05_d040 1.0", + "bbob-biobj-mixint_f055_i05_d080 1.0", + "bbob-biobj-mixint_f055_i05_d160 1.0", + "bbob-biobj-mixint_f055_i06_d005 1.0", + "bbob-biobj-mixint_f055_i06_d010 1.0", + "bbob-biobj-mixint_f055_i06_d020 1.0", + "bbob-biobj-mixint_f055_i06_d040 1.0", + "bbob-biobj-mixint_f055_i06_d080 1.0", + "bbob-biobj-mixint_f055_i06_d160 1.0", + "bbob-biobj-mixint_f055_i07_d005 1.0", + "bbob-biobj-mixint_f055_i07_d010 1.0", + "bbob-biobj-mixint_f055_i07_d020 1.0", + "bbob-biobj-mixint_f055_i07_d040 1.0", + "bbob-biobj-mixint_f055_i07_d080 1.0", + "bbob-biobj-mixint_f055_i07_d160 1.0", + "bbob-biobj-mixint_f055_i08_d005 1.0", + "bbob-biobj-mixint_f055_i08_d010 1.0", + "bbob-biobj-mixint_f055_i08_d020 1.0", + "bbob-biobj-mixint_f055_i08_d040 1.0", + "bbob-biobj-mixint_f055_i08_d080 1.0", + "bbob-biobj-mixint_f055_i08_d160 1.0", + "bbob-biobj-mixint_f055_i09_d005 1.0", + "bbob-biobj-mixint_f055_i09_d010 1.0", + "bbob-biobj-mixint_f055_i09_d020 1.0", + "bbob-biobj-mixint_f055_i09_d040 1.0", + "bbob-biobj-mixint_f055_i09_d080 1.0", + "bbob-biobj-mixint_f055_i09_d160 1.0", + "bbob-biobj-mixint_f055_i10_d005 1.0", + "bbob-biobj-mixint_f055_i10_d010 1.0", + "bbob-biobj-mixint_f055_i10_d020 1.0", + "bbob-biobj-mixint_f055_i10_d040 1.0", + "bbob-biobj-mixint_f055_i10_d080 1.0", + "bbob-biobj-mixint_f055_i10_d160 1.0", + "bbob-biobj-mixint_f055_i11_d005 1.0", + "bbob-biobj-mixint_f055_i11_d010 1.0", + "bbob-biobj-mixint_f055_i11_d020 1.0", + "bbob-biobj-mixint_f055_i11_d040 1.0", + "bbob-biobj-mixint_f055_i11_d080 1.0", + "bbob-biobj-mixint_f055_i11_d160 1.0", + "bbob-biobj-mixint_f055_i12_d005 1.0", + "bbob-biobj-mixint_f055_i12_d010 1.0", + "bbob-biobj-mixint_f055_i12_d020 1.0", + "bbob-biobj-mixint_f055_i12_d040 1.0", + "bbob-biobj-mixint_f055_i12_d080 1.0", + "bbob-biobj-mixint_f055_i12_d160 1.0", + "bbob-biobj-mixint_f055_i13_d005 1.0", + "bbob-biobj-mixint_f055_i13_d010 1.0", + "bbob-biobj-mixint_f055_i13_d020 1.0", + "bbob-biobj-mixint_f055_i13_d040 1.0", + "bbob-biobj-mixint_f055_i13_d080 1.0", + "bbob-biobj-mixint_f055_i13_d160 1.0", + "bbob-biobj-mixint_f055_i14_d005 1.0", + "bbob-biobj-mixint_f055_i14_d010 1.0", + "bbob-biobj-mixint_f055_i14_d020 1.0", + "bbob-biobj-mixint_f055_i14_d040 1.0", + "bbob-biobj-mixint_f055_i14_d080 1.0", + "bbob-biobj-mixint_f055_i14_d160 1.0", + "bbob-biobj-mixint_f055_i15_d005 1.0", + "bbob-biobj-mixint_f055_i15_d010 1.0", + "bbob-biobj-mixint_f055_i15_d020 1.0", + "bbob-biobj-mixint_f055_i15_d040 1.0", + "bbob-biobj-mixint_f055_i15_d080 1.0", + "bbob-biobj-mixint_f055_i15_d160 1.0", + "bbob-biobj-mixint_f056_i01_d005 1.0", + "bbob-biobj-mixint_f056_i01_d010 1.0", + "bbob-biobj-mixint_f056_i01_d020 1.0", + "bbob-biobj-mixint_f056_i01_d040 1.0", + "bbob-biobj-mixint_f056_i01_d080 1.0", + "bbob-biobj-mixint_f056_i01_d160 1.0", + "bbob-biobj-mixint_f056_i02_d005 1.0", + "bbob-biobj-mixint_f056_i02_d010 1.0", + "bbob-biobj-mixint_f056_i02_d020 1.0", + "bbob-biobj-mixint_f056_i02_d040 1.0", + "bbob-biobj-mixint_f056_i02_d080 1.0", + "bbob-biobj-mixint_f056_i02_d160 1.0", + "bbob-biobj-mixint_f056_i03_d005 1.0", + "bbob-biobj-mixint_f056_i03_d010 1.0", + "bbob-biobj-mixint_f056_i03_d020 1.0", + "bbob-biobj-mixint_f056_i03_d040 1.0", + "bbob-biobj-mixint_f056_i03_d080 1.0", + "bbob-biobj-mixint_f056_i03_d160 1.0", + "bbob-biobj-mixint_f056_i04_d005 1.0", + "bbob-biobj-mixint_f056_i04_d010 1.0", + "bbob-biobj-mixint_f056_i04_d020 1.0", + "bbob-biobj-mixint_f056_i04_d040 1.0", + "bbob-biobj-mixint_f056_i04_d080 1.0", + "bbob-biobj-mixint_f056_i04_d160 1.0", + "bbob-biobj-mixint_f056_i05_d005 1.0", + "bbob-biobj-mixint_f056_i05_d010 1.0", + "bbob-biobj-mixint_f056_i05_d020 1.0", + "bbob-biobj-mixint_f056_i05_d040 1.0", + "bbob-biobj-mixint_f056_i05_d080 1.0", + "bbob-biobj-mixint_f056_i05_d160 1.0", + "bbob-biobj-mixint_f056_i06_d005 1.0", + "bbob-biobj-mixint_f056_i06_d010 1.0", + "bbob-biobj-mixint_f056_i06_d020 1.0", + "bbob-biobj-mixint_f056_i06_d040 1.0", + "bbob-biobj-mixint_f056_i06_d080 1.0", + "bbob-biobj-mixint_f056_i06_d160 1.0", + "bbob-biobj-mixint_f056_i07_d005 1.0", + "bbob-biobj-mixint_f056_i07_d010 1.0", + "bbob-biobj-mixint_f056_i07_d020 1.0", + "bbob-biobj-mixint_f056_i07_d040 1.0", + "bbob-biobj-mixint_f056_i07_d080 1.0", + "bbob-biobj-mixint_f056_i07_d160 1.0", + "bbob-biobj-mixint_f056_i08_d005 1.0", + "bbob-biobj-mixint_f056_i08_d010 1.0", + "bbob-biobj-mixint_f056_i08_d020 1.0", + "bbob-biobj-mixint_f056_i08_d040 1.0", + "bbob-biobj-mixint_f056_i08_d080 1.0", + "bbob-biobj-mixint_f056_i08_d160 1.0", + "bbob-biobj-mixint_f056_i09_d005 1.0", + "bbob-biobj-mixint_f056_i09_d010 1.0", + "bbob-biobj-mixint_f056_i09_d020 1.0", + "bbob-biobj-mixint_f056_i09_d040 1.0", + "bbob-biobj-mixint_f056_i09_d080 1.0", + "bbob-biobj-mixint_f056_i09_d160 1.0", + "bbob-biobj-mixint_f056_i10_d005 1.0", + "bbob-biobj-mixint_f056_i10_d010 1.0", + "bbob-biobj-mixint_f056_i10_d020 1.0", + "bbob-biobj-mixint_f056_i10_d040 1.0", + "bbob-biobj-mixint_f056_i10_d080 1.0", + "bbob-biobj-mixint_f056_i10_d160 1.0", + "bbob-biobj-mixint_f056_i11_d005 1.0", + "bbob-biobj-mixint_f056_i11_d010 1.0", + "bbob-biobj-mixint_f056_i11_d020 1.0", + "bbob-biobj-mixint_f056_i11_d040 1.0", + "bbob-biobj-mixint_f056_i11_d080 1.0", + "bbob-biobj-mixint_f056_i11_d160 1.0", + "bbob-biobj-mixint_f056_i12_d005 1.0", + "bbob-biobj-mixint_f056_i12_d010 1.0", + "bbob-biobj-mixint_f056_i12_d020 1.0", + "bbob-biobj-mixint_f056_i12_d040 1.0", + "bbob-biobj-mixint_f056_i12_d080 1.0", + "bbob-biobj-mixint_f056_i12_d160 1.0", + "bbob-biobj-mixint_f056_i13_d005 1.0", + "bbob-biobj-mixint_f056_i13_d010 1.0", + "bbob-biobj-mixint_f056_i13_d020 1.0", + "bbob-biobj-mixint_f056_i13_d040 1.0", + "bbob-biobj-mixint_f056_i13_d080 1.0", + "bbob-biobj-mixint_f056_i13_d160 1.0", + "bbob-biobj-mixint_f056_i14_d005 1.0", + "bbob-biobj-mixint_f056_i14_d010 1.0", + "bbob-biobj-mixint_f056_i14_d020 1.0", + "bbob-biobj-mixint_f056_i14_d040 1.0", + "bbob-biobj-mixint_f056_i14_d080 1.0", + "bbob-biobj-mixint_f056_i14_d160 1.0", + "bbob-biobj-mixint_f056_i15_d005 1.0", + "bbob-biobj-mixint_f056_i15_d010 1.0", + "bbob-biobj-mixint_f056_i15_d020 1.0", + "bbob-biobj-mixint_f056_i15_d040 1.0", + "bbob-biobj-mixint_f056_i15_d080 1.0", + "bbob-biobj-mixint_f056_i15_d160 1.0", + "bbob-biobj-mixint_f057_i01_d005 1.0", + "bbob-biobj-mixint_f057_i01_d010 1.0", + "bbob-biobj-mixint_f057_i01_d020 1.0", + "bbob-biobj-mixint_f057_i01_d040 1.0", + "bbob-biobj-mixint_f057_i01_d080 1.0", + "bbob-biobj-mixint_f057_i01_d160 1.0", + "bbob-biobj-mixint_f057_i02_d005 1.0", + "bbob-biobj-mixint_f057_i02_d010 1.0", + "bbob-biobj-mixint_f057_i02_d020 1.0", + "bbob-biobj-mixint_f057_i02_d040 1.0", + "bbob-biobj-mixint_f057_i02_d080 1.0", + "bbob-biobj-mixint_f057_i02_d160 1.0", + "bbob-biobj-mixint_f057_i03_d005 1.0", + "bbob-biobj-mixint_f057_i03_d010 1.0", + "bbob-biobj-mixint_f057_i03_d020 1.0", + "bbob-biobj-mixint_f057_i03_d040 1.0", + "bbob-biobj-mixint_f057_i03_d080 1.0", + "bbob-biobj-mixint_f057_i03_d160 1.0", + "bbob-biobj-mixint_f057_i04_d005 1.0", + "bbob-biobj-mixint_f057_i04_d010 1.0", + "bbob-biobj-mixint_f057_i04_d020 1.0", + "bbob-biobj-mixint_f057_i04_d040 1.0", + "bbob-biobj-mixint_f057_i04_d080 1.0", + "bbob-biobj-mixint_f057_i04_d160 1.0", + "bbob-biobj-mixint_f057_i05_d005 1.0", + "bbob-biobj-mixint_f057_i05_d010 1.0", + "bbob-biobj-mixint_f057_i05_d020 1.0", + "bbob-biobj-mixint_f057_i05_d040 1.0", + "bbob-biobj-mixint_f057_i05_d080 1.0", + "bbob-biobj-mixint_f057_i05_d160 1.0", + "bbob-biobj-mixint_f057_i06_d005 1.0", + "bbob-biobj-mixint_f057_i06_d010 1.0", + "bbob-biobj-mixint_f057_i06_d020 1.0", + "bbob-biobj-mixint_f057_i06_d040 1.0", + "bbob-biobj-mixint_f057_i06_d080 1.0", + "bbob-biobj-mixint_f057_i06_d160 1.0", + "bbob-biobj-mixint_f057_i07_d005 1.0", + "bbob-biobj-mixint_f057_i07_d010 1.0", + "bbob-biobj-mixint_f057_i07_d020 1.0", + "bbob-biobj-mixint_f057_i07_d040 1.0", + "bbob-biobj-mixint_f057_i07_d080 1.0", + "bbob-biobj-mixint_f057_i07_d160 1.0", + "bbob-biobj-mixint_f057_i08_d005 1.0", + "bbob-biobj-mixint_f057_i08_d010 1.0", + "bbob-biobj-mixint_f057_i08_d020 1.0", + "bbob-biobj-mixint_f057_i08_d040 1.0", + "bbob-biobj-mixint_f057_i08_d080 1.0", + "bbob-biobj-mixint_f057_i08_d160 1.0", + "bbob-biobj-mixint_f057_i09_d005 1.0", + "bbob-biobj-mixint_f057_i09_d010 1.0", + "bbob-biobj-mixint_f057_i09_d020 1.0", + "bbob-biobj-mixint_f057_i09_d040 1.0", + "bbob-biobj-mixint_f057_i09_d080 1.0", + "bbob-biobj-mixint_f057_i09_d160 1.0", + "bbob-biobj-mixint_f057_i10_d005 1.0", + "bbob-biobj-mixint_f057_i10_d010 1.0", + "bbob-biobj-mixint_f057_i10_d020 1.0", + "bbob-biobj-mixint_f057_i10_d040 1.0", + "bbob-biobj-mixint_f057_i10_d080 1.0", + "bbob-biobj-mixint_f057_i10_d160 1.0", + "bbob-biobj-mixint_f057_i11_d005 1.0", + "bbob-biobj-mixint_f057_i11_d010 1.0", + "bbob-biobj-mixint_f057_i11_d020 1.0", + "bbob-biobj-mixint_f057_i11_d040 1.0", + "bbob-biobj-mixint_f057_i11_d080 1.0", + "bbob-biobj-mixint_f057_i11_d160 1.0", + "bbob-biobj-mixint_f057_i12_d005 1.0", + "bbob-biobj-mixint_f057_i12_d010 1.0", + "bbob-biobj-mixint_f057_i12_d020 1.0", + "bbob-biobj-mixint_f057_i12_d040 1.0", + "bbob-biobj-mixint_f057_i12_d080 1.0", + "bbob-biobj-mixint_f057_i12_d160 1.0", + "bbob-biobj-mixint_f057_i13_d005 1.0", + "bbob-biobj-mixint_f057_i13_d010 1.0", + "bbob-biobj-mixint_f057_i13_d020 1.0", + "bbob-biobj-mixint_f057_i13_d040 1.0", + "bbob-biobj-mixint_f057_i13_d080 1.0", + "bbob-biobj-mixint_f057_i13_d160 1.0", + "bbob-biobj-mixint_f057_i14_d005 1.0", + "bbob-biobj-mixint_f057_i14_d010 1.0", + "bbob-biobj-mixint_f057_i14_d020 1.0", + "bbob-biobj-mixint_f057_i14_d040 1.0", + "bbob-biobj-mixint_f057_i14_d080 1.0", + "bbob-biobj-mixint_f057_i14_d160 1.0", + "bbob-biobj-mixint_f057_i15_d005 1.0", + "bbob-biobj-mixint_f057_i15_d010 1.0", + "bbob-biobj-mixint_f057_i15_d020 1.0", + "bbob-biobj-mixint_f057_i15_d040 1.0", + "bbob-biobj-mixint_f057_i15_d080 1.0", + "bbob-biobj-mixint_f057_i15_d160 1.0", + "bbob-biobj-mixint_f058_i01_d005 1.0", + "bbob-biobj-mixint_f058_i01_d010 1.0", + "bbob-biobj-mixint_f058_i01_d020 1.0", + "bbob-biobj-mixint_f058_i01_d040 1.0", + "bbob-biobj-mixint_f058_i01_d080 1.0", + "bbob-biobj-mixint_f058_i01_d160 1.0", + "bbob-biobj-mixint_f058_i02_d005 1.0", + "bbob-biobj-mixint_f058_i02_d010 1.0", + "bbob-biobj-mixint_f058_i02_d020 1.0", + "bbob-biobj-mixint_f058_i02_d040 1.0", + "bbob-biobj-mixint_f058_i02_d080 1.0", + "bbob-biobj-mixint_f058_i02_d160 1.0", + "bbob-biobj-mixint_f058_i03_d005 1.0", + "bbob-biobj-mixint_f058_i03_d010 1.0", + "bbob-biobj-mixint_f058_i03_d020 1.0", + "bbob-biobj-mixint_f058_i03_d040 1.0", + "bbob-biobj-mixint_f058_i03_d080 1.0", + "bbob-biobj-mixint_f058_i03_d160 1.0", + "bbob-biobj-mixint_f058_i04_d005 1.0", + "bbob-biobj-mixint_f058_i04_d010 1.0", + "bbob-biobj-mixint_f058_i04_d020 1.0", + "bbob-biobj-mixint_f058_i04_d040 1.0", + "bbob-biobj-mixint_f058_i04_d080 1.0", + "bbob-biobj-mixint_f058_i04_d160 1.0", + "bbob-biobj-mixint_f058_i05_d005 1.0", + "bbob-biobj-mixint_f058_i05_d010 1.0", + "bbob-biobj-mixint_f058_i05_d020 1.0", + "bbob-biobj-mixint_f058_i05_d040 1.0", + "bbob-biobj-mixint_f058_i05_d080 1.0", + "bbob-biobj-mixint_f058_i05_d160 1.0", + "bbob-biobj-mixint_f058_i06_d005 1.0", + "bbob-biobj-mixint_f058_i06_d010 1.0", + "bbob-biobj-mixint_f058_i06_d020 1.0", + "bbob-biobj-mixint_f058_i06_d040 1.0", + "bbob-biobj-mixint_f058_i06_d080 1.0", + "bbob-biobj-mixint_f058_i06_d160 1.0", + "bbob-biobj-mixint_f058_i07_d005 1.0", + "bbob-biobj-mixint_f058_i07_d010 1.0", + "bbob-biobj-mixint_f058_i07_d020 1.0", + "bbob-biobj-mixint_f058_i07_d040 1.0", + "bbob-biobj-mixint_f058_i07_d080 1.0", + "bbob-biobj-mixint_f058_i07_d160 1.0", + "bbob-biobj-mixint_f058_i08_d005 1.0", + "bbob-biobj-mixint_f058_i08_d010 1.0", + "bbob-biobj-mixint_f058_i08_d020 1.0", + "bbob-biobj-mixint_f058_i08_d040 1.0", + "bbob-biobj-mixint_f058_i08_d080 1.0", + "bbob-biobj-mixint_f058_i08_d160 1.0", + "bbob-biobj-mixint_f058_i09_d005 1.0", + "bbob-biobj-mixint_f058_i09_d010 1.0", + "bbob-biobj-mixint_f058_i09_d020 1.0", + "bbob-biobj-mixint_f058_i09_d040 1.0", + "bbob-biobj-mixint_f058_i09_d080 1.0", + "bbob-biobj-mixint_f058_i09_d160 1.0", + "bbob-biobj-mixint_f058_i10_d005 1.0", + "bbob-biobj-mixint_f058_i10_d010 1.0", + "bbob-biobj-mixint_f058_i10_d020 1.0", + "bbob-biobj-mixint_f058_i10_d040 1.0", + "bbob-biobj-mixint_f058_i10_d080 1.0", + "bbob-biobj-mixint_f058_i10_d160 1.0", + "bbob-biobj-mixint_f058_i11_d005 1.0", + "bbob-biobj-mixint_f058_i11_d010 1.0", + "bbob-biobj-mixint_f058_i11_d020 1.0", + "bbob-biobj-mixint_f058_i11_d040 1.0", + "bbob-biobj-mixint_f058_i11_d080 1.0", + "bbob-biobj-mixint_f058_i11_d160 1.0", + "bbob-biobj-mixint_f058_i12_d005 1.0", + "bbob-biobj-mixint_f058_i12_d010 1.0", + "bbob-biobj-mixint_f058_i12_d020 1.0", + "bbob-biobj-mixint_f058_i12_d040 1.0", + "bbob-biobj-mixint_f058_i12_d080 1.0", + "bbob-biobj-mixint_f058_i12_d160 1.0", + "bbob-biobj-mixint_f058_i13_d005 1.0", + "bbob-biobj-mixint_f058_i13_d010 1.0", + "bbob-biobj-mixint_f058_i13_d020 1.0", + "bbob-biobj-mixint_f058_i13_d040 1.0", + "bbob-biobj-mixint_f058_i13_d080 1.0", + "bbob-biobj-mixint_f058_i13_d160 1.0", + "bbob-biobj-mixint_f058_i14_d005 1.0", + "bbob-biobj-mixint_f058_i14_d010 1.0", + "bbob-biobj-mixint_f058_i14_d020 1.0", + "bbob-biobj-mixint_f058_i14_d040 1.0", + "bbob-biobj-mixint_f058_i14_d080 1.0", + "bbob-biobj-mixint_f058_i14_d160 1.0", + "bbob-biobj-mixint_f058_i15_d005 1.0", + "bbob-biobj-mixint_f058_i15_d010 1.0", + "bbob-biobj-mixint_f058_i15_d020 1.0", + "bbob-biobj-mixint_f058_i15_d040 1.0", + "bbob-biobj-mixint_f058_i15_d080 1.0", + "bbob-biobj-mixint_f058_i15_d160 1.0", + "bbob-biobj-mixint_f059_i01_d005 1.0", + "bbob-biobj-mixint_f059_i01_d010 1.0", + "bbob-biobj-mixint_f059_i01_d020 1.0", + "bbob-biobj-mixint_f059_i01_d040 1.0", + "bbob-biobj-mixint_f059_i01_d080 1.0", + "bbob-biobj-mixint_f059_i01_d160 1.0", + "bbob-biobj-mixint_f059_i02_d005 1.0", + "bbob-biobj-mixint_f059_i02_d010 1.0", + "bbob-biobj-mixint_f059_i02_d020 1.0", + "bbob-biobj-mixint_f059_i02_d040 1.0", + "bbob-biobj-mixint_f059_i02_d080 1.0", + "bbob-biobj-mixint_f059_i02_d160 1.0", + "bbob-biobj-mixint_f059_i03_d005 1.0", + "bbob-biobj-mixint_f059_i03_d010 1.0", + "bbob-biobj-mixint_f059_i03_d020 1.0", + "bbob-biobj-mixint_f059_i03_d040 1.0", + "bbob-biobj-mixint_f059_i03_d080 1.0", + "bbob-biobj-mixint_f059_i03_d160 1.0", + "bbob-biobj-mixint_f059_i04_d005 1.0", + "bbob-biobj-mixint_f059_i04_d010 1.0", + "bbob-biobj-mixint_f059_i04_d020 1.0", + "bbob-biobj-mixint_f059_i04_d040 1.0", + "bbob-biobj-mixint_f059_i04_d080 1.0", + "bbob-biobj-mixint_f059_i04_d160 1.0", + "bbob-biobj-mixint_f059_i05_d005 1.0", + "bbob-biobj-mixint_f059_i05_d010 1.0", + "bbob-biobj-mixint_f059_i05_d020 1.0", + "bbob-biobj-mixint_f059_i05_d040 1.0", + "bbob-biobj-mixint_f059_i05_d080 1.0", + "bbob-biobj-mixint_f059_i05_d160 1.0", + "bbob-biobj-mixint_f059_i06_d005 1.0", + "bbob-biobj-mixint_f059_i06_d010 1.0", + "bbob-biobj-mixint_f059_i06_d020 1.0", + "bbob-biobj-mixint_f059_i06_d040 1.0", + "bbob-biobj-mixint_f059_i06_d080 1.0", + "bbob-biobj-mixint_f059_i06_d160 1.0", + "bbob-biobj-mixint_f059_i07_d005 1.0", + "bbob-biobj-mixint_f059_i07_d010 1.0", + "bbob-biobj-mixint_f059_i07_d020 1.0", + "bbob-biobj-mixint_f059_i07_d040 1.0", + "bbob-biobj-mixint_f059_i07_d080 1.0", + "bbob-biobj-mixint_f059_i07_d160 1.0", + "bbob-biobj-mixint_f059_i08_d005 1.0", + "bbob-biobj-mixint_f059_i08_d010 1.0", + "bbob-biobj-mixint_f059_i08_d020 1.0", + "bbob-biobj-mixint_f059_i08_d040 1.0", + "bbob-biobj-mixint_f059_i08_d080 1.0", + "bbob-biobj-mixint_f059_i08_d160 1.0", + "bbob-biobj-mixint_f059_i09_d005 1.0", + "bbob-biobj-mixint_f059_i09_d010 1.0", + "bbob-biobj-mixint_f059_i09_d020 1.0", + "bbob-biobj-mixint_f059_i09_d040 1.0", + "bbob-biobj-mixint_f059_i09_d080 1.0", + "bbob-biobj-mixint_f059_i09_d160 1.0", + "bbob-biobj-mixint_f059_i10_d005 1.0", + "bbob-biobj-mixint_f059_i10_d010 1.0", + "bbob-biobj-mixint_f059_i10_d020 1.0", + "bbob-biobj-mixint_f059_i10_d040 1.0", + "bbob-biobj-mixint_f059_i10_d080 1.0", + "bbob-biobj-mixint_f059_i10_d160 1.0", + "bbob-biobj-mixint_f059_i11_d005 1.0", + "bbob-biobj-mixint_f059_i11_d010 1.0", + "bbob-biobj-mixint_f059_i11_d020 1.0", + "bbob-biobj-mixint_f059_i11_d040 1.0", + "bbob-biobj-mixint_f059_i11_d080 1.0", + "bbob-biobj-mixint_f059_i11_d160 1.0", + "bbob-biobj-mixint_f059_i12_d005 1.0", + "bbob-biobj-mixint_f059_i12_d010 1.0", + "bbob-biobj-mixint_f059_i12_d020 1.0", + "bbob-biobj-mixint_f059_i12_d040 1.0", + "bbob-biobj-mixint_f059_i12_d080 1.0", + "bbob-biobj-mixint_f059_i12_d160 1.0", + "bbob-biobj-mixint_f059_i13_d005 1.0", + "bbob-biobj-mixint_f059_i13_d010 1.0", + "bbob-biobj-mixint_f059_i13_d020 1.0", + "bbob-biobj-mixint_f059_i13_d040 1.0", + "bbob-biobj-mixint_f059_i13_d080 1.0", + "bbob-biobj-mixint_f059_i13_d160 1.0", + "bbob-biobj-mixint_f059_i14_d005 1.0", + "bbob-biobj-mixint_f059_i14_d010 1.0", + "bbob-biobj-mixint_f059_i14_d020 1.0", + "bbob-biobj-mixint_f059_i14_d040 1.0", + "bbob-biobj-mixint_f059_i14_d080 1.0", + "bbob-biobj-mixint_f059_i14_d160 1.0", + "bbob-biobj-mixint_f059_i15_d005 1.0", + "bbob-biobj-mixint_f059_i15_d010 1.0", + "bbob-biobj-mixint_f059_i15_d020 1.0", + "bbob-biobj-mixint_f059_i15_d040 1.0", + "bbob-biobj-mixint_f059_i15_d080 1.0", + "bbob-biobj-mixint_f059_i15_d160 1.0", + "bbob-biobj-mixint_f060_i01_d005 1.0", + "bbob-biobj-mixint_f060_i01_d010 1.0", + "bbob-biobj-mixint_f060_i01_d020 1.0", + "bbob-biobj-mixint_f060_i01_d040 1.0", + "bbob-biobj-mixint_f060_i01_d080 1.0", + "bbob-biobj-mixint_f060_i01_d160 1.0", + "bbob-biobj-mixint_f060_i02_d005 1.0", + "bbob-biobj-mixint_f060_i02_d010 1.0", + "bbob-biobj-mixint_f060_i02_d020 1.0", + "bbob-biobj-mixint_f060_i02_d040 1.0", + "bbob-biobj-mixint_f060_i02_d080 1.0", + "bbob-biobj-mixint_f060_i02_d160 1.0", + "bbob-biobj-mixint_f060_i03_d005 1.0", + "bbob-biobj-mixint_f060_i03_d010 1.0", + "bbob-biobj-mixint_f060_i03_d020 1.0", + "bbob-biobj-mixint_f060_i03_d040 1.0", + "bbob-biobj-mixint_f060_i03_d080 1.0", + "bbob-biobj-mixint_f060_i03_d160 1.0", + "bbob-biobj-mixint_f060_i04_d005 1.0", + "bbob-biobj-mixint_f060_i04_d010 1.0", + "bbob-biobj-mixint_f060_i04_d020 1.0", + "bbob-biobj-mixint_f060_i04_d040 1.0", + "bbob-biobj-mixint_f060_i04_d080 1.0", + "bbob-biobj-mixint_f060_i04_d160 1.0", + "bbob-biobj-mixint_f060_i05_d005 1.0", + "bbob-biobj-mixint_f060_i05_d010 1.0", + "bbob-biobj-mixint_f060_i05_d020 1.0", + "bbob-biobj-mixint_f060_i05_d040 1.0", + "bbob-biobj-mixint_f060_i05_d080 1.0", + "bbob-biobj-mixint_f060_i05_d160 1.0", + "bbob-biobj-mixint_f060_i06_d005 1.0", + "bbob-biobj-mixint_f060_i06_d010 1.0", + "bbob-biobj-mixint_f060_i06_d020 1.0", + "bbob-biobj-mixint_f060_i06_d040 1.0", + "bbob-biobj-mixint_f060_i06_d080 1.0", + "bbob-biobj-mixint_f060_i06_d160 1.0", + "bbob-biobj-mixint_f060_i07_d005 1.0", + "bbob-biobj-mixint_f060_i07_d010 1.0", + "bbob-biobj-mixint_f060_i07_d020 1.0", + "bbob-biobj-mixint_f060_i07_d040 1.0", + "bbob-biobj-mixint_f060_i07_d080 1.0", + "bbob-biobj-mixint_f060_i07_d160 1.0", + "bbob-biobj-mixint_f060_i08_d005 1.0", + "bbob-biobj-mixint_f060_i08_d010 1.0", + "bbob-biobj-mixint_f060_i08_d020 1.0", + "bbob-biobj-mixint_f060_i08_d040 1.0", + "bbob-biobj-mixint_f060_i08_d080 1.0", + "bbob-biobj-mixint_f060_i08_d160 1.0", + "bbob-biobj-mixint_f060_i09_d005 1.0", + "bbob-biobj-mixint_f060_i09_d010 1.0", + "bbob-biobj-mixint_f060_i09_d020 1.0", + "bbob-biobj-mixint_f060_i09_d040 1.0", + "bbob-biobj-mixint_f060_i09_d080 1.0", + "bbob-biobj-mixint_f060_i09_d160 1.0", + "bbob-biobj-mixint_f060_i10_d005 1.0", + "bbob-biobj-mixint_f060_i10_d010 1.0", + "bbob-biobj-mixint_f060_i10_d020 1.0", + "bbob-biobj-mixint_f060_i10_d040 1.0", + "bbob-biobj-mixint_f060_i10_d080 1.0", + "bbob-biobj-mixint_f060_i10_d160 1.0", + "bbob-biobj-mixint_f060_i11_d005 1.0", + "bbob-biobj-mixint_f060_i11_d010 1.0", + "bbob-biobj-mixint_f060_i11_d020 1.0", + "bbob-biobj-mixint_f060_i11_d040 1.0", + "bbob-biobj-mixint_f060_i11_d080 1.0", + "bbob-biobj-mixint_f060_i11_d160 1.0", + "bbob-biobj-mixint_f060_i12_d005 1.0", + "bbob-biobj-mixint_f060_i12_d010 1.0", + "bbob-biobj-mixint_f060_i12_d020 1.0", + "bbob-biobj-mixint_f060_i12_d040 1.0", + "bbob-biobj-mixint_f060_i12_d080 1.0", + "bbob-biobj-mixint_f060_i12_d160 1.0", + "bbob-biobj-mixint_f060_i13_d005 1.0", + "bbob-biobj-mixint_f060_i13_d010 1.0", + "bbob-biobj-mixint_f060_i13_d020 1.0", + "bbob-biobj-mixint_f060_i13_d040 1.0", + "bbob-biobj-mixint_f060_i13_d080 1.0", + "bbob-biobj-mixint_f060_i13_d160 1.0", + "bbob-biobj-mixint_f060_i14_d005 1.0", + "bbob-biobj-mixint_f060_i14_d010 1.0", + "bbob-biobj-mixint_f060_i14_d020 1.0", + "bbob-biobj-mixint_f060_i14_d040 1.0", + "bbob-biobj-mixint_f060_i14_d080 1.0", + "bbob-biobj-mixint_f060_i14_d160 1.0", + "bbob-biobj-mixint_f060_i15_d005 1.0", + "bbob-biobj-mixint_f060_i15_d010 1.0", + "bbob-biobj-mixint_f060_i15_d020 1.0", + "bbob-biobj-mixint_f060_i15_d040 1.0", + "bbob-biobj-mixint_f060_i15_d080 1.0", + "bbob-biobj-mixint_f060_i15_d160 1.0", + "bbob-biobj-mixint_f061_i01_d005 1.0", + "bbob-biobj-mixint_f061_i01_d010 1.0", + "bbob-biobj-mixint_f061_i01_d020 1.0", + "bbob-biobj-mixint_f061_i01_d040 1.0", + "bbob-biobj-mixint_f061_i01_d080 1.0", + "bbob-biobj-mixint_f061_i01_d160 1.0", + "bbob-biobj-mixint_f061_i02_d005 1.0", + "bbob-biobj-mixint_f061_i02_d010 1.0", + "bbob-biobj-mixint_f061_i02_d020 1.0", + "bbob-biobj-mixint_f061_i02_d040 1.0", + "bbob-biobj-mixint_f061_i02_d080 1.0", + "bbob-biobj-mixint_f061_i02_d160 1.0", + "bbob-biobj-mixint_f061_i03_d005 1.0", + "bbob-biobj-mixint_f061_i03_d010 1.0", + "bbob-biobj-mixint_f061_i03_d020 1.0", + "bbob-biobj-mixint_f061_i03_d040 1.0", + "bbob-biobj-mixint_f061_i03_d080 1.0", + "bbob-biobj-mixint_f061_i03_d160 1.0", + "bbob-biobj-mixint_f061_i04_d005 1.0", + "bbob-biobj-mixint_f061_i04_d010 1.0", + "bbob-biobj-mixint_f061_i04_d020 1.0", + "bbob-biobj-mixint_f061_i04_d040 1.0", + "bbob-biobj-mixint_f061_i04_d080 1.0", + "bbob-biobj-mixint_f061_i04_d160 1.0", + "bbob-biobj-mixint_f061_i05_d005 1.0", + "bbob-biobj-mixint_f061_i05_d010 1.0", + "bbob-biobj-mixint_f061_i05_d020 1.0", + "bbob-biobj-mixint_f061_i05_d040 1.0", + "bbob-biobj-mixint_f061_i05_d080 1.0", + "bbob-biobj-mixint_f061_i05_d160 1.0", + "bbob-biobj-mixint_f061_i06_d005 1.0", + "bbob-biobj-mixint_f061_i06_d010 1.0", + "bbob-biobj-mixint_f061_i06_d020 1.0", + "bbob-biobj-mixint_f061_i06_d040 1.0", + "bbob-biobj-mixint_f061_i06_d080 1.0", + "bbob-biobj-mixint_f061_i06_d160 1.0", + "bbob-biobj-mixint_f061_i07_d005 1.0", + "bbob-biobj-mixint_f061_i07_d010 1.0", + "bbob-biobj-mixint_f061_i07_d020 1.0", + "bbob-biobj-mixint_f061_i07_d040 1.0", + "bbob-biobj-mixint_f061_i07_d080 1.0", + "bbob-biobj-mixint_f061_i07_d160 1.0", + "bbob-biobj-mixint_f061_i08_d005 1.0", + "bbob-biobj-mixint_f061_i08_d010 1.0", + "bbob-biobj-mixint_f061_i08_d020 1.0", + "bbob-biobj-mixint_f061_i08_d040 1.0", + "bbob-biobj-mixint_f061_i08_d080 1.0", + "bbob-biobj-mixint_f061_i08_d160 1.0", + "bbob-biobj-mixint_f061_i09_d005 1.0", + "bbob-biobj-mixint_f061_i09_d010 1.0", + "bbob-biobj-mixint_f061_i09_d020 1.0", + "bbob-biobj-mixint_f061_i09_d040 1.0", + "bbob-biobj-mixint_f061_i09_d080 1.0", + "bbob-biobj-mixint_f061_i09_d160 1.0", + "bbob-biobj-mixint_f061_i10_d005 1.0", + "bbob-biobj-mixint_f061_i10_d010 1.0", + "bbob-biobj-mixint_f061_i10_d020 1.0", + "bbob-biobj-mixint_f061_i10_d040 1.0", + "bbob-biobj-mixint_f061_i10_d080 1.0", + "bbob-biobj-mixint_f061_i10_d160 1.0", + "bbob-biobj-mixint_f061_i11_d005 1.0", + "bbob-biobj-mixint_f061_i11_d010 1.0", + "bbob-biobj-mixint_f061_i11_d020 1.0", + "bbob-biobj-mixint_f061_i11_d040 1.0", + "bbob-biobj-mixint_f061_i11_d080 1.0", + "bbob-biobj-mixint_f061_i11_d160 1.0", + "bbob-biobj-mixint_f061_i12_d005 1.0", + "bbob-biobj-mixint_f061_i12_d010 1.0", + "bbob-biobj-mixint_f061_i12_d020 1.0", + "bbob-biobj-mixint_f061_i12_d040 1.0", + "bbob-biobj-mixint_f061_i12_d080 1.0", + "bbob-biobj-mixint_f061_i12_d160 1.0", + "bbob-biobj-mixint_f061_i13_d005 1.0", + "bbob-biobj-mixint_f061_i13_d010 1.0", + "bbob-biobj-mixint_f061_i13_d020 1.0", + "bbob-biobj-mixint_f061_i13_d040 1.0", + "bbob-biobj-mixint_f061_i13_d080 1.0", + "bbob-biobj-mixint_f061_i13_d160 1.0", + "bbob-biobj-mixint_f061_i14_d005 1.0", + "bbob-biobj-mixint_f061_i14_d010 1.0", + "bbob-biobj-mixint_f061_i14_d020 1.0", + "bbob-biobj-mixint_f061_i14_d040 1.0", + "bbob-biobj-mixint_f061_i14_d080 1.0", + "bbob-biobj-mixint_f061_i14_d160 1.0", + "bbob-biobj-mixint_f061_i15_d005 1.0", + "bbob-biobj-mixint_f061_i15_d010 1.0", + "bbob-biobj-mixint_f061_i15_d020 1.0", + "bbob-biobj-mixint_f061_i15_d040 1.0", + "bbob-biobj-mixint_f061_i15_d080 1.0", + "bbob-biobj-mixint_f061_i15_d160 1.0", + "bbob-biobj-mixint_f062_i01_d005 1.0", + "bbob-biobj-mixint_f062_i01_d010 1.0", + "bbob-biobj-mixint_f062_i01_d020 1.0", + "bbob-biobj-mixint_f062_i01_d040 1.0", + "bbob-biobj-mixint_f062_i01_d080 1.0", + "bbob-biobj-mixint_f062_i01_d160 1.0", + "bbob-biobj-mixint_f062_i02_d005 1.0", + "bbob-biobj-mixint_f062_i02_d010 1.0", + "bbob-biobj-mixint_f062_i02_d020 1.0", + "bbob-biobj-mixint_f062_i02_d040 1.0", + "bbob-biobj-mixint_f062_i02_d080 1.0", + "bbob-biobj-mixint_f062_i02_d160 1.0", + "bbob-biobj-mixint_f062_i03_d005 1.0", + "bbob-biobj-mixint_f062_i03_d010 1.0", + "bbob-biobj-mixint_f062_i03_d020 1.0", + "bbob-biobj-mixint_f062_i03_d040 1.0", + "bbob-biobj-mixint_f062_i03_d080 1.0", + "bbob-biobj-mixint_f062_i03_d160 1.0", + "bbob-biobj-mixint_f062_i04_d005 1.0", + "bbob-biobj-mixint_f062_i04_d010 1.0", + "bbob-biobj-mixint_f062_i04_d020 1.0", + "bbob-biobj-mixint_f062_i04_d040 1.0", + "bbob-biobj-mixint_f062_i04_d080 1.0", + "bbob-biobj-mixint_f062_i04_d160 1.0", + "bbob-biobj-mixint_f062_i05_d005 1.0", + "bbob-biobj-mixint_f062_i05_d010 1.0", + "bbob-biobj-mixint_f062_i05_d020 1.0", + "bbob-biobj-mixint_f062_i05_d040 1.0", + "bbob-biobj-mixint_f062_i05_d080 1.0", + "bbob-biobj-mixint_f062_i05_d160 1.0", + "bbob-biobj-mixint_f062_i06_d005 1.0", + "bbob-biobj-mixint_f062_i06_d010 1.0", + "bbob-biobj-mixint_f062_i06_d020 1.0", + "bbob-biobj-mixint_f062_i06_d040 1.0", + "bbob-biobj-mixint_f062_i06_d080 1.0", + "bbob-biobj-mixint_f062_i06_d160 1.0", + "bbob-biobj-mixint_f062_i07_d005 1.0", + "bbob-biobj-mixint_f062_i07_d010 1.0", + "bbob-biobj-mixint_f062_i07_d020 1.0", + "bbob-biobj-mixint_f062_i07_d040 1.0", + "bbob-biobj-mixint_f062_i07_d080 1.0", + "bbob-biobj-mixint_f062_i07_d160 1.0", + "bbob-biobj-mixint_f062_i08_d005 1.0", + "bbob-biobj-mixint_f062_i08_d010 1.0", + "bbob-biobj-mixint_f062_i08_d020 1.0", + "bbob-biobj-mixint_f062_i08_d040 1.0", + "bbob-biobj-mixint_f062_i08_d080 1.0", + "bbob-biobj-mixint_f062_i08_d160 1.0", + "bbob-biobj-mixint_f062_i09_d005 1.0", + "bbob-biobj-mixint_f062_i09_d010 1.0", + "bbob-biobj-mixint_f062_i09_d020 1.0", + "bbob-biobj-mixint_f062_i09_d040 1.0", + "bbob-biobj-mixint_f062_i09_d080 1.0", + "bbob-biobj-mixint_f062_i09_d160 1.0", + "bbob-biobj-mixint_f062_i10_d005 1.0", + "bbob-biobj-mixint_f062_i10_d010 1.0", + "bbob-biobj-mixint_f062_i10_d020 1.0", + "bbob-biobj-mixint_f062_i10_d040 1.0", + "bbob-biobj-mixint_f062_i10_d080 1.0", + "bbob-biobj-mixint_f062_i10_d160 1.0", + "bbob-biobj-mixint_f062_i11_d005 1.0", + "bbob-biobj-mixint_f062_i11_d010 1.0", + "bbob-biobj-mixint_f062_i11_d020 1.0", + "bbob-biobj-mixint_f062_i11_d040 1.0", + "bbob-biobj-mixint_f062_i11_d080 1.0", + "bbob-biobj-mixint_f062_i11_d160 1.0", + "bbob-biobj-mixint_f062_i12_d005 1.0", + "bbob-biobj-mixint_f062_i12_d010 1.0", + "bbob-biobj-mixint_f062_i12_d020 1.0", + "bbob-biobj-mixint_f062_i12_d040 1.0", + "bbob-biobj-mixint_f062_i12_d080 1.0", + "bbob-biobj-mixint_f062_i12_d160 1.0", + "bbob-biobj-mixint_f062_i13_d005 1.0", + "bbob-biobj-mixint_f062_i13_d010 1.0", + "bbob-biobj-mixint_f062_i13_d020 1.0", + "bbob-biobj-mixint_f062_i13_d040 1.0", + "bbob-biobj-mixint_f062_i13_d080 1.0", + "bbob-biobj-mixint_f062_i13_d160 1.0", + "bbob-biobj-mixint_f062_i14_d005 1.0", + "bbob-biobj-mixint_f062_i14_d010 1.0", + "bbob-biobj-mixint_f062_i14_d020 1.0", + "bbob-biobj-mixint_f062_i14_d040 1.0", + "bbob-biobj-mixint_f062_i14_d080 1.0", + "bbob-biobj-mixint_f062_i14_d160 1.0", + "bbob-biobj-mixint_f062_i15_d005 1.0", + "bbob-biobj-mixint_f062_i15_d010 1.0", + "bbob-biobj-mixint_f062_i15_d020 1.0", + "bbob-biobj-mixint_f062_i15_d040 1.0", + "bbob-biobj-mixint_f062_i15_d080 1.0", + "bbob-biobj-mixint_f062_i15_d160 1.0", + "bbob-biobj-mixint_f063_i01_d005 1.0", + "bbob-biobj-mixint_f063_i01_d010 1.0", + "bbob-biobj-mixint_f063_i01_d020 1.0", + "bbob-biobj-mixint_f063_i01_d040 1.0", + "bbob-biobj-mixint_f063_i01_d080 1.0", + "bbob-biobj-mixint_f063_i01_d160 1.0", + "bbob-biobj-mixint_f063_i02_d005 1.0", + "bbob-biobj-mixint_f063_i02_d010 1.0", + "bbob-biobj-mixint_f063_i02_d020 1.0", + "bbob-biobj-mixint_f063_i02_d040 1.0", + "bbob-biobj-mixint_f063_i02_d080 1.0", + "bbob-biobj-mixint_f063_i02_d160 1.0", + "bbob-biobj-mixint_f063_i03_d005 1.0", + "bbob-biobj-mixint_f063_i03_d010 1.0", + "bbob-biobj-mixint_f063_i03_d020 1.0", + "bbob-biobj-mixint_f063_i03_d040 1.0", + "bbob-biobj-mixint_f063_i03_d080 1.0", + "bbob-biobj-mixint_f063_i03_d160 1.0", + "bbob-biobj-mixint_f063_i04_d005 1.0", + "bbob-biobj-mixint_f063_i04_d010 1.0", + "bbob-biobj-mixint_f063_i04_d020 1.0", + "bbob-biobj-mixint_f063_i04_d040 1.0", + "bbob-biobj-mixint_f063_i04_d080 1.0", + "bbob-biobj-mixint_f063_i04_d160 1.0", + "bbob-biobj-mixint_f063_i05_d005 1.0", + "bbob-biobj-mixint_f063_i05_d010 1.0", + "bbob-biobj-mixint_f063_i05_d020 1.0", + "bbob-biobj-mixint_f063_i05_d040 1.0", + "bbob-biobj-mixint_f063_i05_d080 1.0", + "bbob-biobj-mixint_f063_i05_d160 1.0", + "bbob-biobj-mixint_f063_i06_d005 1.0", + "bbob-biobj-mixint_f063_i06_d010 1.0", + "bbob-biobj-mixint_f063_i06_d020 1.0", + "bbob-biobj-mixint_f063_i06_d040 1.0", + "bbob-biobj-mixint_f063_i06_d080 1.0", + "bbob-biobj-mixint_f063_i06_d160 1.0", + "bbob-biobj-mixint_f063_i07_d005 1.0", + "bbob-biobj-mixint_f063_i07_d010 1.0", + "bbob-biobj-mixint_f063_i07_d020 1.0", + "bbob-biobj-mixint_f063_i07_d040 1.0", + "bbob-biobj-mixint_f063_i07_d080 1.0", + "bbob-biobj-mixint_f063_i07_d160 1.0", + "bbob-biobj-mixint_f063_i08_d005 1.0", + "bbob-biobj-mixint_f063_i08_d010 1.0", + "bbob-biobj-mixint_f063_i08_d020 1.0", + "bbob-biobj-mixint_f063_i08_d040 1.0", + "bbob-biobj-mixint_f063_i08_d080 1.0", + "bbob-biobj-mixint_f063_i08_d160 1.0", + "bbob-biobj-mixint_f063_i09_d005 1.0", + "bbob-biobj-mixint_f063_i09_d010 1.0", + "bbob-biobj-mixint_f063_i09_d020 1.0", + "bbob-biobj-mixint_f063_i09_d040 1.0", + "bbob-biobj-mixint_f063_i09_d080 1.0", + "bbob-biobj-mixint_f063_i09_d160 1.0", + "bbob-biobj-mixint_f063_i10_d005 1.0", + "bbob-biobj-mixint_f063_i10_d010 1.0", + "bbob-biobj-mixint_f063_i10_d020 1.0", + "bbob-biobj-mixint_f063_i10_d040 1.0", + "bbob-biobj-mixint_f063_i10_d080 1.0", + "bbob-biobj-mixint_f063_i10_d160 1.0", + "bbob-biobj-mixint_f063_i11_d005 1.0", + "bbob-biobj-mixint_f063_i11_d010 1.0", + "bbob-biobj-mixint_f063_i11_d020 1.0", + "bbob-biobj-mixint_f063_i11_d040 1.0", + "bbob-biobj-mixint_f063_i11_d080 1.0", + "bbob-biobj-mixint_f063_i11_d160 1.0", + "bbob-biobj-mixint_f063_i12_d005 1.0", + "bbob-biobj-mixint_f063_i12_d010 1.0", + "bbob-biobj-mixint_f063_i12_d020 1.0", + "bbob-biobj-mixint_f063_i12_d040 1.0", + "bbob-biobj-mixint_f063_i12_d080 1.0", + "bbob-biobj-mixint_f063_i12_d160 1.0", + "bbob-biobj-mixint_f063_i13_d005 1.0", + "bbob-biobj-mixint_f063_i13_d010 1.0", + "bbob-biobj-mixint_f063_i13_d020 1.0", + "bbob-biobj-mixint_f063_i13_d040 1.0", + "bbob-biobj-mixint_f063_i13_d080 1.0", + "bbob-biobj-mixint_f063_i13_d160 1.0", + "bbob-biobj-mixint_f063_i14_d005 1.0", + "bbob-biobj-mixint_f063_i14_d010 1.0", + "bbob-biobj-mixint_f063_i14_d020 1.0", + "bbob-biobj-mixint_f063_i14_d040 1.0", + "bbob-biobj-mixint_f063_i14_d080 1.0", + "bbob-biobj-mixint_f063_i14_d160 1.0", + "bbob-biobj-mixint_f063_i15_d005 1.0", + "bbob-biobj-mixint_f063_i15_d010 1.0", + "bbob-biobj-mixint_f063_i15_d020 1.0", + "bbob-biobj-mixint_f063_i15_d040 1.0", + "bbob-biobj-mixint_f063_i15_d080 1.0", + "bbob-biobj-mixint_f063_i15_d160 1.0", + "bbob-biobj-mixint_f064_i01_d005 1.0", + "bbob-biobj-mixint_f064_i01_d010 1.0", + "bbob-biobj-mixint_f064_i01_d020 1.0", + "bbob-biobj-mixint_f064_i01_d040 1.0", + "bbob-biobj-mixint_f064_i01_d080 1.0", + "bbob-biobj-mixint_f064_i01_d160 1.0", + "bbob-biobj-mixint_f064_i02_d005 1.0", + "bbob-biobj-mixint_f064_i02_d010 1.0", + "bbob-biobj-mixint_f064_i02_d020 1.0", + "bbob-biobj-mixint_f064_i02_d040 1.0", + "bbob-biobj-mixint_f064_i02_d080 1.0", + "bbob-biobj-mixint_f064_i02_d160 1.0", + "bbob-biobj-mixint_f064_i03_d005 1.0", + "bbob-biobj-mixint_f064_i03_d010 1.0", + "bbob-biobj-mixint_f064_i03_d020 1.0", + "bbob-biobj-mixint_f064_i03_d040 1.0", + "bbob-biobj-mixint_f064_i03_d080 1.0", + "bbob-biobj-mixint_f064_i03_d160 1.0", + "bbob-biobj-mixint_f064_i04_d005 1.0", + "bbob-biobj-mixint_f064_i04_d010 1.0", + "bbob-biobj-mixint_f064_i04_d020 1.0", + "bbob-biobj-mixint_f064_i04_d040 1.0", + "bbob-biobj-mixint_f064_i04_d080 1.0", + "bbob-biobj-mixint_f064_i04_d160 1.0", + "bbob-biobj-mixint_f064_i05_d005 1.0", + "bbob-biobj-mixint_f064_i05_d010 1.0", + "bbob-biobj-mixint_f064_i05_d020 1.0", + "bbob-biobj-mixint_f064_i05_d040 1.0", + "bbob-biobj-mixint_f064_i05_d080 1.0", + "bbob-biobj-mixint_f064_i05_d160 1.0", + "bbob-biobj-mixint_f064_i06_d005 1.0", + "bbob-biobj-mixint_f064_i06_d010 1.0", + "bbob-biobj-mixint_f064_i06_d020 1.0", + "bbob-biobj-mixint_f064_i06_d040 1.0", + "bbob-biobj-mixint_f064_i06_d080 1.0", + "bbob-biobj-mixint_f064_i06_d160 1.0", + "bbob-biobj-mixint_f064_i07_d005 1.0", + "bbob-biobj-mixint_f064_i07_d010 1.0", + "bbob-biobj-mixint_f064_i07_d020 1.0", + "bbob-biobj-mixint_f064_i07_d040 1.0", + "bbob-biobj-mixint_f064_i07_d080 1.0", + "bbob-biobj-mixint_f064_i07_d160 1.0", + "bbob-biobj-mixint_f064_i08_d005 1.0", + "bbob-biobj-mixint_f064_i08_d010 1.0", + "bbob-biobj-mixint_f064_i08_d020 1.0", + "bbob-biobj-mixint_f064_i08_d040 1.0", + "bbob-biobj-mixint_f064_i08_d080 1.0", + "bbob-biobj-mixint_f064_i08_d160 1.0", + "bbob-biobj-mixint_f064_i09_d005 1.0", + "bbob-biobj-mixint_f064_i09_d010 1.0", + "bbob-biobj-mixint_f064_i09_d020 1.0", + "bbob-biobj-mixint_f064_i09_d040 1.0", + "bbob-biobj-mixint_f064_i09_d080 1.0", + "bbob-biobj-mixint_f064_i09_d160 1.0", + "bbob-biobj-mixint_f064_i10_d005 1.0", + "bbob-biobj-mixint_f064_i10_d010 1.0", + "bbob-biobj-mixint_f064_i10_d020 1.0", + "bbob-biobj-mixint_f064_i10_d040 1.0", + "bbob-biobj-mixint_f064_i10_d080 1.0", + "bbob-biobj-mixint_f064_i10_d160 1.0", + "bbob-biobj-mixint_f064_i11_d005 1.0", + "bbob-biobj-mixint_f064_i11_d010 1.0", + "bbob-biobj-mixint_f064_i11_d020 1.0", + "bbob-biobj-mixint_f064_i11_d040 1.0", + "bbob-biobj-mixint_f064_i11_d080 1.0", + "bbob-biobj-mixint_f064_i11_d160 1.0", + "bbob-biobj-mixint_f064_i12_d005 1.0", + "bbob-biobj-mixint_f064_i12_d010 1.0", + "bbob-biobj-mixint_f064_i12_d020 1.0", + "bbob-biobj-mixint_f064_i12_d040 1.0", + "bbob-biobj-mixint_f064_i12_d080 1.0", + "bbob-biobj-mixint_f064_i12_d160 1.0", + "bbob-biobj-mixint_f064_i13_d005 1.0", + "bbob-biobj-mixint_f064_i13_d010 1.0", + "bbob-biobj-mixint_f064_i13_d020 1.0", + "bbob-biobj-mixint_f064_i13_d040 1.0", + "bbob-biobj-mixint_f064_i13_d080 1.0", + "bbob-biobj-mixint_f064_i13_d160 1.0", + "bbob-biobj-mixint_f064_i14_d005 1.0", + "bbob-biobj-mixint_f064_i14_d010 1.0", + "bbob-biobj-mixint_f064_i14_d020 1.0", + "bbob-biobj-mixint_f064_i14_d040 1.0", + "bbob-biobj-mixint_f064_i14_d080 1.0", + "bbob-biobj-mixint_f064_i14_d160 1.0", + "bbob-biobj-mixint_f064_i15_d005 1.0", + "bbob-biobj-mixint_f064_i15_d010 1.0", + "bbob-biobj-mixint_f064_i15_d020 1.0", + "bbob-biobj-mixint_f064_i15_d040 1.0", + "bbob-biobj-mixint_f064_i15_d080 1.0", + "bbob-biobj-mixint_f064_i15_d160 1.0", + "bbob-biobj-mixint_f065_i01_d005 1.0", + "bbob-biobj-mixint_f065_i01_d010 1.0", + "bbob-biobj-mixint_f065_i01_d020 1.0", + "bbob-biobj-mixint_f065_i01_d040 1.0", + "bbob-biobj-mixint_f065_i01_d080 1.0", + "bbob-biobj-mixint_f065_i01_d160 1.0", + "bbob-biobj-mixint_f065_i02_d005 1.0", + "bbob-biobj-mixint_f065_i02_d010 1.0", + "bbob-biobj-mixint_f065_i02_d020 1.0", + "bbob-biobj-mixint_f065_i02_d040 1.0", + "bbob-biobj-mixint_f065_i02_d080 1.0", + "bbob-biobj-mixint_f065_i02_d160 1.0", + "bbob-biobj-mixint_f065_i03_d005 1.0", + "bbob-biobj-mixint_f065_i03_d010 1.0", + "bbob-biobj-mixint_f065_i03_d020 1.0", + "bbob-biobj-mixint_f065_i03_d040 1.0", + "bbob-biobj-mixint_f065_i03_d080 1.0", + "bbob-biobj-mixint_f065_i03_d160 1.0", + "bbob-biobj-mixint_f065_i04_d005 1.0", + "bbob-biobj-mixint_f065_i04_d010 1.0", + "bbob-biobj-mixint_f065_i04_d020 1.0", + "bbob-biobj-mixint_f065_i04_d040 1.0", + "bbob-biobj-mixint_f065_i04_d080 1.0", + "bbob-biobj-mixint_f065_i04_d160 1.0", + "bbob-biobj-mixint_f065_i05_d005 1.0", + "bbob-biobj-mixint_f065_i05_d010 1.0", + "bbob-biobj-mixint_f065_i05_d020 1.0", + "bbob-biobj-mixint_f065_i05_d040 1.0", + "bbob-biobj-mixint_f065_i05_d080 1.0", + "bbob-biobj-mixint_f065_i05_d160 1.0", + "bbob-biobj-mixint_f065_i06_d005 1.0", + "bbob-biobj-mixint_f065_i06_d010 1.0", + "bbob-biobj-mixint_f065_i06_d020 1.0", + "bbob-biobj-mixint_f065_i06_d040 1.0", + "bbob-biobj-mixint_f065_i06_d080 1.0", + "bbob-biobj-mixint_f065_i06_d160 1.0", + "bbob-biobj-mixint_f065_i07_d005 1.0", + "bbob-biobj-mixint_f065_i07_d010 1.0", + "bbob-biobj-mixint_f065_i07_d020 1.0", + "bbob-biobj-mixint_f065_i07_d040 1.0", + "bbob-biobj-mixint_f065_i07_d080 1.0", + "bbob-biobj-mixint_f065_i07_d160 1.0", + "bbob-biobj-mixint_f065_i08_d005 1.0", + "bbob-biobj-mixint_f065_i08_d010 1.0", + "bbob-biobj-mixint_f065_i08_d020 1.0", + "bbob-biobj-mixint_f065_i08_d040 1.0", + "bbob-biobj-mixint_f065_i08_d080 1.0", + "bbob-biobj-mixint_f065_i08_d160 1.0", + "bbob-biobj-mixint_f065_i09_d005 1.0", + "bbob-biobj-mixint_f065_i09_d010 1.0", + "bbob-biobj-mixint_f065_i09_d020 1.0", + "bbob-biobj-mixint_f065_i09_d040 1.0", + "bbob-biobj-mixint_f065_i09_d080 1.0", + "bbob-biobj-mixint_f065_i09_d160 1.0", + "bbob-biobj-mixint_f065_i10_d005 1.0", + "bbob-biobj-mixint_f065_i10_d010 1.0", + "bbob-biobj-mixint_f065_i10_d020 1.0", + "bbob-biobj-mixint_f065_i10_d040 1.0", + "bbob-biobj-mixint_f065_i10_d080 1.0", + "bbob-biobj-mixint_f065_i10_d160 1.0", + "bbob-biobj-mixint_f065_i11_d005 1.0", + "bbob-biobj-mixint_f065_i11_d010 1.0", + "bbob-biobj-mixint_f065_i11_d020 1.0", + "bbob-biobj-mixint_f065_i11_d040 1.0", + "bbob-biobj-mixint_f065_i11_d080 1.0", + "bbob-biobj-mixint_f065_i11_d160 1.0", + "bbob-biobj-mixint_f065_i12_d005 1.0", + "bbob-biobj-mixint_f065_i12_d010 1.0", + "bbob-biobj-mixint_f065_i12_d020 1.0", + "bbob-biobj-mixint_f065_i12_d040 1.0", + "bbob-biobj-mixint_f065_i12_d080 1.0", + "bbob-biobj-mixint_f065_i12_d160 1.0", + "bbob-biobj-mixint_f065_i13_d005 1.0", + "bbob-biobj-mixint_f065_i13_d010 1.0", + "bbob-biobj-mixint_f065_i13_d020 1.0", + "bbob-biobj-mixint_f065_i13_d040 1.0", + "bbob-biobj-mixint_f065_i13_d080 1.0", + "bbob-biobj-mixint_f065_i13_d160 1.0", + "bbob-biobj-mixint_f065_i14_d005 1.0", + "bbob-biobj-mixint_f065_i14_d010 1.0", + "bbob-biobj-mixint_f065_i14_d020 1.0", + "bbob-biobj-mixint_f065_i14_d040 1.0", + "bbob-biobj-mixint_f065_i14_d080 1.0", + "bbob-biobj-mixint_f065_i14_d160 1.0", + "bbob-biobj-mixint_f065_i15_d005 1.0", + "bbob-biobj-mixint_f065_i15_d010 1.0", + "bbob-biobj-mixint_f065_i15_d020 1.0", + "bbob-biobj-mixint_f065_i15_d040 1.0", + "bbob-biobj-mixint_f065_i15_d080 1.0", + "bbob-biobj-mixint_f065_i15_d160 1.0", + "bbob-biobj-mixint_f066_i01_d005 1.0", + "bbob-biobj-mixint_f066_i01_d010 1.0", + "bbob-biobj-mixint_f066_i01_d020 1.0", + "bbob-biobj-mixint_f066_i01_d040 1.0", + "bbob-biobj-mixint_f066_i01_d080 1.0", + "bbob-biobj-mixint_f066_i01_d160 1.0", + "bbob-biobj-mixint_f066_i02_d005 1.0", + "bbob-biobj-mixint_f066_i02_d010 1.0", + "bbob-biobj-mixint_f066_i02_d020 1.0", + "bbob-biobj-mixint_f066_i02_d040 1.0", + "bbob-biobj-mixint_f066_i02_d080 1.0", + "bbob-biobj-mixint_f066_i02_d160 1.0", + "bbob-biobj-mixint_f066_i03_d005 1.0", + "bbob-biobj-mixint_f066_i03_d010 1.0", + "bbob-biobj-mixint_f066_i03_d020 1.0", + "bbob-biobj-mixint_f066_i03_d040 1.0", + "bbob-biobj-mixint_f066_i03_d080 1.0", + "bbob-biobj-mixint_f066_i03_d160 1.0", + "bbob-biobj-mixint_f066_i04_d005 1.0", + "bbob-biobj-mixint_f066_i04_d010 1.0", + "bbob-biobj-mixint_f066_i04_d020 1.0", + "bbob-biobj-mixint_f066_i04_d040 1.0", + "bbob-biobj-mixint_f066_i04_d080 1.0", + "bbob-biobj-mixint_f066_i04_d160 1.0", + "bbob-biobj-mixint_f066_i05_d005 1.0", + "bbob-biobj-mixint_f066_i05_d010 1.0", + "bbob-biobj-mixint_f066_i05_d020 1.0", + "bbob-biobj-mixint_f066_i05_d040 1.0", + "bbob-biobj-mixint_f066_i05_d080 1.0", + "bbob-biobj-mixint_f066_i05_d160 1.0", + "bbob-biobj-mixint_f066_i06_d005 1.0", + "bbob-biobj-mixint_f066_i06_d010 1.0", + "bbob-biobj-mixint_f066_i06_d020 1.0", + "bbob-biobj-mixint_f066_i06_d040 1.0", + "bbob-biobj-mixint_f066_i06_d080 1.0", + "bbob-biobj-mixint_f066_i06_d160 1.0", + "bbob-biobj-mixint_f066_i07_d005 1.0", + "bbob-biobj-mixint_f066_i07_d010 1.0", + "bbob-biobj-mixint_f066_i07_d020 1.0", + "bbob-biobj-mixint_f066_i07_d040 1.0", + "bbob-biobj-mixint_f066_i07_d080 1.0", + "bbob-biobj-mixint_f066_i07_d160 1.0", + "bbob-biobj-mixint_f066_i08_d005 1.0", + "bbob-biobj-mixint_f066_i08_d010 1.0", + "bbob-biobj-mixint_f066_i08_d020 1.0", + "bbob-biobj-mixint_f066_i08_d040 1.0", + "bbob-biobj-mixint_f066_i08_d080 1.0", + "bbob-biobj-mixint_f066_i08_d160 1.0", + "bbob-biobj-mixint_f066_i09_d005 1.0", + "bbob-biobj-mixint_f066_i09_d010 1.0", + "bbob-biobj-mixint_f066_i09_d020 1.0", + "bbob-biobj-mixint_f066_i09_d040 1.0", + "bbob-biobj-mixint_f066_i09_d080 1.0", + "bbob-biobj-mixint_f066_i09_d160 1.0", + "bbob-biobj-mixint_f066_i10_d005 1.0", + "bbob-biobj-mixint_f066_i10_d010 1.0", + "bbob-biobj-mixint_f066_i10_d020 1.0", + "bbob-biobj-mixint_f066_i10_d040 1.0", + "bbob-biobj-mixint_f066_i10_d080 1.0", + "bbob-biobj-mixint_f066_i10_d160 1.0", + "bbob-biobj-mixint_f066_i11_d005 1.0", + "bbob-biobj-mixint_f066_i11_d010 1.0", + "bbob-biobj-mixint_f066_i11_d020 1.0", + "bbob-biobj-mixint_f066_i11_d040 1.0", + "bbob-biobj-mixint_f066_i11_d080 1.0", + "bbob-biobj-mixint_f066_i11_d160 1.0", + "bbob-biobj-mixint_f066_i12_d005 1.0", + "bbob-biobj-mixint_f066_i12_d010 1.0", + "bbob-biobj-mixint_f066_i12_d020 1.0", + "bbob-biobj-mixint_f066_i12_d040 1.0", + "bbob-biobj-mixint_f066_i12_d080 1.0", + "bbob-biobj-mixint_f066_i12_d160 1.0", + "bbob-biobj-mixint_f066_i13_d005 1.0", + "bbob-biobj-mixint_f066_i13_d010 1.0", + "bbob-biobj-mixint_f066_i13_d020 1.0", + "bbob-biobj-mixint_f066_i13_d040 1.0", + "bbob-biobj-mixint_f066_i13_d080 1.0", + "bbob-biobj-mixint_f066_i13_d160 1.0", + "bbob-biobj-mixint_f066_i14_d005 1.0", + "bbob-biobj-mixint_f066_i14_d010 1.0", + "bbob-biobj-mixint_f066_i14_d020 1.0", + "bbob-biobj-mixint_f066_i14_d040 1.0", + "bbob-biobj-mixint_f066_i14_d080 1.0", + "bbob-biobj-mixint_f066_i14_d160 1.0", + "bbob-biobj-mixint_f066_i15_d005 1.0", + "bbob-biobj-mixint_f066_i15_d010 1.0", + "bbob-biobj-mixint_f066_i15_d020 1.0", + "bbob-biobj-mixint_f066_i15_d040 1.0", + "bbob-biobj-mixint_f066_i15_d080 1.0", + "bbob-biobj-mixint_f066_i15_d160 1.0", + "bbob-biobj-mixint_f067_i01_d005 1.0", + "bbob-biobj-mixint_f067_i01_d010 1.0", + "bbob-biobj-mixint_f067_i01_d020 1.0", + "bbob-biobj-mixint_f067_i01_d040 1.0", + "bbob-biobj-mixint_f067_i01_d080 1.0", + "bbob-biobj-mixint_f067_i01_d160 1.0", + "bbob-biobj-mixint_f067_i02_d005 1.0", + "bbob-biobj-mixint_f067_i02_d010 1.0", + "bbob-biobj-mixint_f067_i02_d020 1.0", + "bbob-biobj-mixint_f067_i02_d040 1.0", + "bbob-biobj-mixint_f067_i02_d080 1.0", + "bbob-biobj-mixint_f067_i02_d160 1.0", + "bbob-biobj-mixint_f067_i03_d005 1.0", + "bbob-biobj-mixint_f067_i03_d010 1.0", + "bbob-biobj-mixint_f067_i03_d020 1.0", + "bbob-biobj-mixint_f067_i03_d040 1.0", + "bbob-biobj-mixint_f067_i03_d080 1.0", + "bbob-biobj-mixint_f067_i03_d160 1.0", + "bbob-biobj-mixint_f067_i04_d005 1.0", + "bbob-biobj-mixint_f067_i04_d010 1.0", + "bbob-biobj-mixint_f067_i04_d020 1.0", + "bbob-biobj-mixint_f067_i04_d040 1.0", + "bbob-biobj-mixint_f067_i04_d080 1.0", + "bbob-biobj-mixint_f067_i04_d160 1.0", + "bbob-biobj-mixint_f067_i05_d005 1.0", + "bbob-biobj-mixint_f067_i05_d010 1.0", + "bbob-biobj-mixint_f067_i05_d020 1.0", + "bbob-biobj-mixint_f067_i05_d040 1.0", + "bbob-biobj-mixint_f067_i05_d080 1.0", + "bbob-biobj-mixint_f067_i05_d160 1.0", + "bbob-biobj-mixint_f067_i06_d005 1.0", + "bbob-biobj-mixint_f067_i06_d010 1.0", + "bbob-biobj-mixint_f067_i06_d020 1.0", + "bbob-biobj-mixint_f067_i06_d040 1.0", + "bbob-biobj-mixint_f067_i06_d080 1.0", + "bbob-biobj-mixint_f067_i06_d160 1.0", + "bbob-biobj-mixint_f067_i07_d005 1.0", + "bbob-biobj-mixint_f067_i07_d010 1.0", + "bbob-biobj-mixint_f067_i07_d020 1.0", + "bbob-biobj-mixint_f067_i07_d040 1.0", + "bbob-biobj-mixint_f067_i07_d080 1.0", + "bbob-biobj-mixint_f067_i07_d160 1.0", + "bbob-biobj-mixint_f067_i08_d005 1.0", + "bbob-biobj-mixint_f067_i08_d010 1.0", + "bbob-biobj-mixint_f067_i08_d020 1.0", + "bbob-biobj-mixint_f067_i08_d040 1.0", + "bbob-biobj-mixint_f067_i08_d080 1.0", + "bbob-biobj-mixint_f067_i08_d160 1.0", + "bbob-biobj-mixint_f067_i09_d005 1.0", + "bbob-biobj-mixint_f067_i09_d010 1.0", + "bbob-biobj-mixint_f067_i09_d020 1.0", + "bbob-biobj-mixint_f067_i09_d040 1.0", + "bbob-biobj-mixint_f067_i09_d080 1.0", + "bbob-biobj-mixint_f067_i09_d160 1.0", + "bbob-biobj-mixint_f067_i10_d005 1.0", + "bbob-biobj-mixint_f067_i10_d010 1.0", + "bbob-biobj-mixint_f067_i10_d020 1.0", + "bbob-biobj-mixint_f067_i10_d040 1.0", + "bbob-biobj-mixint_f067_i10_d080 1.0", + "bbob-biobj-mixint_f067_i10_d160 1.0", + "bbob-biobj-mixint_f067_i11_d005 1.0", + "bbob-biobj-mixint_f067_i11_d010 1.0", + "bbob-biobj-mixint_f067_i11_d020 1.0", + "bbob-biobj-mixint_f067_i11_d040 1.0", + "bbob-biobj-mixint_f067_i11_d080 1.0", + "bbob-biobj-mixint_f067_i11_d160 1.0", + "bbob-biobj-mixint_f067_i12_d005 1.0", + "bbob-biobj-mixint_f067_i12_d010 1.0", + "bbob-biobj-mixint_f067_i12_d020 1.0", + "bbob-biobj-mixint_f067_i12_d040 1.0", + "bbob-biobj-mixint_f067_i12_d080 1.0", + "bbob-biobj-mixint_f067_i12_d160 1.0", + "bbob-biobj-mixint_f067_i13_d005 1.0", + "bbob-biobj-mixint_f067_i13_d010 1.0", + "bbob-biobj-mixint_f067_i13_d020 1.0", + "bbob-biobj-mixint_f067_i13_d040 1.0", + "bbob-biobj-mixint_f067_i13_d080 1.0", + "bbob-biobj-mixint_f067_i13_d160 1.0", + "bbob-biobj-mixint_f067_i14_d005 1.0", + "bbob-biobj-mixint_f067_i14_d010 1.0", + "bbob-biobj-mixint_f067_i14_d020 1.0", + "bbob-biobj-mixint_f067_i14_d040 1.0", + "bbob-biobj-mixint_f067_i14_d080 1.0", + "bbob-biobj-mixint_f067_i14_d160 1.0", + "bbob-biobj-mixint_f067_i15_d005 1.0", + "bbob-biobj-mixint_f067_i15_d010 1.0", + "bbob-biobj-mixint_f067_i15_d020 1.0", + "bbob-biobj-mixint_f067_i15_d040 1.0", + "bbob-biobj-mixint_f067_i15_d080 1.0", + "bbob-biobj-mixint_f067_i15_d160 1.0", + "bbob-biobj-mixint_f068_i01_d005 1.0", + "bbob-biobj-mixint_f068_i01_d010 1.0", + "bbob-biobj-mixint_f068_i01_d020 1.0", + "bbob-biobj-mixint_f068_i01_d040 1.0", + "bbob-biobj-mixint_f068_i01_d080 1.0", + "bbob-biobj-mixint_f068_i01_d160 1.0", + "bbob-biobj-mixint_f068_i02_d005 1.0", + "bbob-biobj-mixint_f068_i02_d010 1.0", + "bbob-biobj-mixint_f068_i02_d020 1.0", + "bbob-biobj-mixint_f068_i02_d040 1.0", + "bbob-biobj-mixint_f068_i02_d080 1.0", + "bbob-biobj-mixint_f068_i02_d160 1.0", + "bbob-biobj-mixint_f068_i03_d005 1.0", + "bbob-biobj-mixint_f068_i03_d010 1.0", + "bbob-biobj-mixint_f068_i03_d020 1.0", + "bbob-biobj-mixint_f068_i03_d040 1.0", + "bbob-biobj-mixint_f068_i03_d080 1.0", + "bbob-biobj-mixint_f068_i03_d160 1.0", + "bbob-biobj-mixint_f068_i04_d005 1.0", + "bbob-biobj-mixint_f068_i04_d010 1.0", + "bbob-biobj-mixint_f068_i04_d020 1.0", + "bbob-biobj-mixint_f068_i04_d040 1.0", + "bbob-biobj-mixint_f068_i04_d080 1.0", + "bbob-biobj-mixint_f068_i04_d160 1.0", + "bbob-biobj-mixint_f068_i05_d005 1.0", + "bbob-biobj-mixint_f068_i05_d010 1.0", + "bbob-biobj-mixint_f068_i05_d020 1.0", + "bbob-biobj-mixint_f068_i05_d040 1.0", + "bbob-biobj-mixint_f068_i05_d080 1.0", + "bbob-biobj-mixint_f068_i05_d160 1.0", + "bbob-biobj-mixint_f068_i06_d005 1.0", + "bbob-biobj-mixint_f068_i06_d010 1.0", + "bbob-biobj-mixint_f068_i06_d020 1.0", + "bbob-biobj-mixint_f068_i06_d040 1.0", + "bbob-biobj-mixint_f068_i06_d080 1.0", + "bbob-biobj-mixint_f068_i06_d160 1.0", + "bbob-biobj-mixint_f068_i07_d005 1.0", + "bbob-biobj-mixint_f068_i07_d010 1.0", + "bbob-biobj-mixint_f068_i07_d020 1.0", + "bbob-biobj-mixint_f068_i07_d040 1.0", + "bbob-biobj-mixint_f068_i07_d080 1.0", + "bbob-biobj-mixint_f068_i07_d160 1.0", + "bbob-biobj-mixint_f068_i08_d005 1.0", + "bbob-biobj-mixint_f068_i08_d010 1.0", + "bbob-biobj-mixint_f068_i08_d020 1.0", + "bbob-biobj-mixint_f068_i08_d040 1.0", + "bbob-biobj-mixint_f068_i08_d080 1.0", + "bbob-biobj-mixint_f068_i08_d160 1.0", + "bbob-biobj-mixint_f068_i09_d005 1.0", + "bbob-biobj-mixint_f068_i09_d010 1.0", + "bbob-biobj-mixint_f068_i09_d020 1.0", + "bbob-biobj-mixint_f068_i09_d040 1.0", + "bbob-biobj-mixint_f068_i09_d080 1.0", + "bbob-biobj-mixint_f068_i09_d160 1.0", + "bbob-biobj-mixint_f068_i10_d005 1.0", + "bbob-biobj-mixint_f068_i10_d010 1.0", + "bbob-biobj-mixint_f068_i10_d020 1.0", + "bbob-biobj-mixint_f068_i10_d040 1.0", + "bbob-biobj-mixint_f068_i10_d080 1.0", + "bbob-biobj-mixint_f068_i10_d160 1.0", + "bbob-biobj-mixint_f068_i11_d005 1.0", + "bbob-biobj-mixint_f068_i11_d010 1.0", + "bbob-biobj-mixint_f068_i11_d020 1.0", + "bbob-biobj-mixint_f068_i11_d040 1.0", + "bbob-biobj-mixint_f068_i11_d080 1.0", + "bbob-biobj-mixint_f068_i11_d160 1.0", + "bbob-biobj-mixint_f068_i12_d005 1.0", + "bbob-biobj-mixint_f068_i12_d010 1.0", + "bbob-biobj-mixint_f068_i12_d020 1.0", + "bbob-biobj-mixint_f068_i12_d040 1.0", + "bbob-biobj-mixint_f068_i12_d080 1.0", + "bbob-biobj-mixint_f068_i12_d160 1.0", + "bbob-biobj-mixint_f068_i13_d005 1.0", + "bbob-biobj-mixint_f068_i13_d010 1.0", + "bbob-biobj-mixint_f068_i13_d020 1.0", + "bbob-biobj-mixint_f068_i13_d040 1.0", + "bbob-biobj-mixint_f068_i13_d080 1.0", + "bbob-biobj-mixint_f068_i13_d160 1.0", + "bbob-biobj-mixint_f068_i14_d005 1.0", + "bbob-biobj-mixint_f068_i14_d010 1.0", + "bbob-biobj-mixint_f068_i14_d020 1.0", + "bbob-biobj-mixint_f068_i14_d040 1.0", + "bbob-biobj-mixint_f068_i14_d080 1.0", + "bbob-biobj-mixint_f068_i14_d160 1.0", + "bbob-biobj-mixint_f068_i15_d005 1.0", + "bbob-biobj-mixint_f068_i15_d010 1.0", + "bbob-biobj-mixint_f068_i15_d020 1.0", + "bbob-biobj-mixint_f068_i15_d040 1.0", + "bbob-biobj-mixint_f068_i15_d080 1.0", + "bbob-biobj-mixint_f068_i15_d160 1.0", + "bbob-biobj-mixint_f069_i01_d005 1.0", + "bbob-biobj-mixint_f069_i01_d010 1.0", + "bbob-biobj-mixint_f069_i01_d020 1.0", + "bbob-biobj-mixint_f069_i01_d040 1.0", + "bbob-biobj-mixint_f069_i01_d080 1.0", + "bbob-biobj-mixint_f069_i01_d160 1.0", + "bbob-biobj-mixint_f069_i02_d005 1.0", + "bbob-biobj-mixint_f069_i02_d010 1.0", + "bbob-biobj-mixint_f069_i02_d020 1.0", + "bbob-biobj-mixint_f069_i02_d040 1.0", + "bbob-biobj-mixint_f069_i02_d080 1.0", + "bbob-biobj-mixint_f069_i02_d160 1.0", + "bbob-biobj-mixint_f069_i03_d005 1.0", + "bbob-biobj-mixint_f069_i03_d010 1.0", + "bbob-biobj-mixint_f069_i03_d020 1.0", + "bbob-biobj-mixint_f069_i03_d040 1.0", + "bbob-biobj-mixint_f069_i03_d080 1.0", + "bbob-biobj-mixint_f069_i03_d160 1.0", + "bbob-biobj-mixint_f069_i04_d005 1.0", + "bbob-biobj-mixint_f069_i04_d010 1.0", + "bbob-biobj-mixint_f069_i04_d020 1.0", + "bbob-biobj-mixint_f069_i04_d040 1.0", + "bbob-biobj-mixint_f069_i04_d080 1.0", + "bbob-biobj-mixint_f069_i04_d160 1.0", + "bbob-biobj-mixint_f069_i05_d005 1.0", + "bbob-biobj-mixint_f069_i05_d010 1.0", + "bbob-biobj-mixint_f069_i05_d020 1.0", + "bbob-biobj-mixint_f069_i05_d040 1.0", + "bbob-biobj-mixint_f069_i05_d080 1.0", + "bbob-biobj-mixint_f069_i05_d160 1.0", + "bbob-biobj-mixint_f069_i06_d005 1.0", + "bbob-biobj-mixint_f069_i06_d010 1.0", + "bbob-biobj-mixint_f069_i06_d020 1.0", + "bbob-biobj-mixint_f069_i06_d040 1.0", + "bbob-biobj-mixint_f069_i06_d080 1.0", + "bbob-biobj-mixint_f069_i06_d160 1.0", + "bbob-biobj-mixint_f069_i07_d005 1.0", + "bbob-biobj-mixint_f069_i07_d010 1.0", + "bbob-biobj-mixint_f069_i07_d020 1.0", + "bbob-biobj-mixint_f069_i07_d040 1.0", + "bbob-biobj-mixint_f069_i07_d080 1.0", + "bbob-biobj-mixint_f069_i07_d160 1.0", + "bbob-biobj-mixint_f069_i08_d005 1.0", + "bbob-biobj-mixint_f069_i08_d010 1.0", + "bbob-biobj-mixint_f069_i08_d020 1.0", + "bbob-biobj-mixint_f069_i08_d040 1.0", + "bbob-biobj-mixint_f069_i08_d080 1.0", + "bbob-biobj-mixint_f069_i08_d160 1.0", + "bbob-biobj-mixint_f069_i09_d005 1.0", + "bbob-biobj-mixint_f069_i09_d010 1.0", + "bbob-biobj-mixint_f069_i09_d020 1.0", + "bbob-biobj-mixint_f069_i09_d040 1.0", + "bbob-biobj-mixint_f069_i09_d080 1.0", + "bbob-biobj-mixint_f069_i09_d160 1.0", + "bbob-biobj-mixint_f069_i10_d005 1.0", + "bbob-biobj-mixint_f069_i10_d010 1.0", + "bbob-biobj-mixint_f069_i10_d020 1.0", + "bbob-biobj-mixint_f069_i10_d040 1.0", + "bbob-biobj-mixint_f069_i10_d080 1.0", + "bbob-biobj-mixint_f069_i10_d160 1.0", + "bbob-biobj-mixint_f069_i11_d005 1.0", + "bbob-biobj-mixint_f069_i11_d010 1.0", + "bbob-biobj-mixint_f069_i11_d020 1.0", + "bbob-biobj-mixint_f069_i11_d040 1.0", + "bbob-biobj-mixint_f069_i11_d080 1.0", + "bbob-biobj-mixint_f069_i11_d160 1.0", + "bbob-biobj-mixint_f069_i12_d005 1.0", + "bbob-biobj-mixint_f069_i12_d010 1.0", + "bbob-biobj-mixint_f069_i12_d020 1.0", + "bbob-biobj-mixint_f069_i12_d040 1.0", + "bbob-biobj-mixint_f069_i12_d080 1.0", + "bbob-biobj-mixint_f069_i12_d160 1.0", + "bbob-biobj-mixint_f069_i13_d005 1.0", + "bbob-biobj-mixint_f069_i13_d010 1.0", + "bbob-biobj-mixint_f069_i13_d020 1.0", + "bbob-biobj-mixint_f069_i13_d040 1.0", + "bbob-biobj-mixint_f069_i13_d080 1.0", + "bbob-biobj-mixint_f069_i13_d160 1.0", + "bbob-biobj-mixint_f069_i14_d005 1.0", + "bbob-biobj-mixint_f069_i14_d010 1.0", + "bbob-biobj-mixint_f069_i14_d020 1.0", + "bbob-biobj-mixint_f069_i14_d040 1.0", + "bbob-biobj-mixint_f069_i14_d080 1.0", + "bbob-biobj-mixint_f069_i14_d160 1.0", + "bbob-biobj-mixint_f069_i15_d005 1.0", + "bbob-biobj-mixint_f069_i15_d010 1.0", + "bbob-biobj-mixint_f069_i15_d020 1.0", + "bbob-biobj-mixint_f069_i15_d040 1.0", + "bbob-biobj-mixint_f069_i15_d080 1.0", + "bbob-biobj-mixint_f069_i15_d160 1.0", + "bbob-biobj-mixint_f070_i01_d005 1.0", + "bbob-biobj-mixint_f070_i01_d010 1.0", + "bbob-biobj-mixint_f070_i01_d020 1.0", + "bbob-biobj-mixint_f070_i01_d040 1.0", + "bbob-biobj-mixint_f070_i01_d080 1.0", + "bbob-biobj-mixint_f070_i01_d160 1.0", + "bbob-biobj-mixint_f070_i02_d005 1.0", + "bbob-biobj-mixint_f070_i02_d010 1.0", + "bbob-biobj-mixint_f070_i02_d020 1.0", + "bbob-biobj-mixint_f070_i02_d040 1.0", + "bbob-biobj-mixint_f070_i02_d080 1.0", + "bbob-biobj-mixint_f070_i02_d160 1.0", + "bbob-biobj-mixint_f070_i03_d005 1.0", + "bbob-biobj-mixint_f070_i03_d010 1.0", + "bbob-biobj-mixint_f070_i03_d020 1.0", + "bbob-biobj-mixint_f070_i03_d040 1.0", + "bbob-biobj-mixint_f070_i03_d080 1.0", + "bbob-biobj-mixint_f070_i03_d160 1.0", + "bbob-biobj-mixint_f070_i04_d005 1.0", + "bbob-biobj-mixint_f070_i04_d010 1.0", + "bbob-biobj-mixint_f070_i04_d020 1.0", + "bbob-biobj-mixint_f070_i04_d040 1.0", + "bbob-biobj-mixint_f070_i04_d080 1.0", + "bbob-biobj-mixint_f070_i04_d160 1.0", + "bbob-biobj-mixint_f070_i05_d005 1.0", + "bbob-biobj-mixint_f070_i05_d010 1.0", + "bbob-biobj-mixint_f070_i05_d020 1.0", + "bbob-biobj-mixint_f070_i05_d040 1.0", + "bbob-biobj-mixint_f070_i05_d080 1.0", + "bbob-biobj-mixint_f070_i05_d160 1.0", + "bbob-biobj-mixint_f070_i06_d005 1.0", + "bbob-biobj-mixint_f070_i06_d010 1.0", + "bbob-biobj-mixint_f070_i06_d020 1.0", + "bbob-biobj-mixint_f070_i06_d040 1.0", + "bbob-biobj-mixint_f070_i06_d080 1.0", + "bbob-biobj-mixint_f070_i06_d160 1.0", + "bbob-biobj-mixint_f070_i07_d005 1.0", + "bbob-biobj-mixint_f070_i07_d010 1.0", + "bbob-biobj-mixint_f070_i07_d020 1.0", + "bbob-biobj-mixint_f070_i07_d040 1.0", + "bbob-biobj-mixint_f070_i07_d080 1.0", + "bbob-biobj-mixint_f070_i07_d160 1.0", + "bbob-biobj-mixint_f070_i08_d005 1.0", + "bbob-biobj-mixint_f070_i08_d010 1.0", + "bbob-biobj-mixint_f070_i08_d020 1.0", + "bbob-biobj-mixint_f070_i08_d040 1.0", + "bbob-biobj-mixint_f070_i08_d080 1.0", + "bbob-biobj-mixint_f070_i08_d160 1.0", + "bbob-biobj-mixint_f070_i09_d005 1.0", + "bbob-biobj-mixint_f070_i09_d010 1.0", + "bbob-biobj-mixint_f070_i09_d020 1.0", + "bbob-biobj-mixint_f070_i09_d040 1.0", + "bbob-biobj-mixint_f070_i09_d080 1.0", + "bbob-biobj-mixint_f070_i09_d160 1.0", + "bbob-biobj-mixint_f070_i10_d005 1.0", + "bbob-biobj-mixint_f070_i10_d010 1.0", + "bbob-biobj-mixint_f070_i10_d020 1.0", + "bbob-biobj-mixint_f070_i10_d040 1.0", + "bbob-biobj-mixint_f070_i10_d080 1.0", + "bbob-biobj-mixint_f070_i10_d160 1.0", + "bbob-biobj-mixint_f070_i11_d005 1.0", + "bbob-biobj-mixint_f070_i11_d010 1.0", + "bbob-biobj-mixint_f070_i11_d020 1.0", + "bbob-biobj-mixint_f070_i11_d040 1.0", + "bbob-biobj-mixint_f070_i11_d080 1.0", + "bbob-biobj-mixint_f070_i11_d160 1.0", + "bbob-biobj-mixint_f070_i12_d005 1.0", + "bbob-biobj-mixint_f070_i12_d010 1.0", + "bbob-biobj-mixint_f070_i12_d020 1.0", + "bbob-biobj-mixint_f070_i12_d040 1.0", + "bbob-biobj-mixint_f070_i12_d080 1.0", + "bbob-biobj-mixint_f070_i12_d160 1.0", + "bbob-biobj-mixint_f070_i13_d005 1.0", + "bbob-biobj-mixint_f070_i13_d010 1.0", + "bbob-biobj-mixint_f070_i13_d020 1.0", + "bbob-biobj-mixint_f070_i13_d040 1.0", + "bbob-biobj-mixint_f070_i13_d080 1.0", + "bbob-biobj-mixint_f070_i13_d160 1.0", + "bbob-biobj-mixint_f070_i14_d005 1.0", + "bbob-biobj-mixint_f070_i14_d010 1.0", + "bbob-biobj-mixint_f070_i14_d020 1.0", + "bbob-biobj-mixint_f070_i14_d040 1.0", + "bbob-biobj-mixint_f070_i14_d080 1.0", + "bbob-biobj-mixint_f070_i14_d160 1.0", + "bbob-biobj-mixint_f070_i15_d005 1.0", + "bbob-biobj-mixint_f070_i15_d010 1.0", + "bbob-biobj-mixint_f070_i15_d020 1.0", + "bbob-biobj-mixint_f070_i15_d040 1.0", + "bbob-biobj-mixint_f070_i15_d080 1.0", + "bbob-biobj-mixint_f070_i15_d160 1.0", + "bbob-biobj-mixint_f071_i01_d005 1.0", + "bbob-biobj-mixint_f071_i01_d010 1.0", + "bbob-biobj-mixint_f071_i01_d020 1.0", + "bbob-biobj-mixint_f071_i01_d040 1.0", + "bbob-biobj-mixint_f071_i01_d080 1.0", + "bbob-biobj-mixint_f071_i01_d160 1.0", + "bbob-biobj-mixint_f071_i02_d005 1.0", + "bbob-biobj-mixint_f071_i02_d010 1.0", + "bbob-biobj-mixint_f071_i02_d020 1.0", + "bbob-biobj-mixint_f071_i02_d040 1.0", + "bbob-biobj-mixint_f071_i02_d080 1.0", + "bbob-biobj-mixint_f071_i02_d160 1.0", + "bbob-biobj-mixint_f071_i03_d005 1.0", + "bbob-biobj-mixint_f071_i03_d010 1.0", + "bbob-biobj-mixint_f071_i03_d020 1.0", + "bbob-biobj-mixint_f071_i03_d040 1.0", + "bbob-biobj-mixint_f071_i03_d080 1.0", + "bbob-biobj-mixint_f071_i03_d160 1.0", + "bbob-biobj-mixint_f071_i04_d005 1.0", + "bbob-biobj-mixint_f071_i04_d010 1.0", + "bbob-biobj-mixint_f071_i04_d020 1.0", + "bbob-biobj-mixint_f071_i04_d040 1.0", + "bbob-biobj-mixint_f071_i04_d080 1.0", + "bbob-biobj-mixint_f071_i04_d160 1.0", + "bbob-biobj-mixint_f071_i05_d005 1.0", + "bbob-biobj-mixint_f071_i05_d010 1.0", + "bbob-biobj-mixint_f071_i05_d020 1.0", + "bbob-biobj-mixint_f071_i05_d040 1.0", + "bbob-biobj-mixint_f071_i05_d080 1.0", + "bbob-biobj-mixint_f071_i05_d160 1.0", + "bbob-biobj-mixint_f071_i06_d005 1.0", + "bbob-biobj-mixint_f071_i06_d010 1.0", + "bbob-biobj-mixint_f071_i06_d020 1.0", + "bbob-biobj-mixint_f071_i06_d040 1.0", + "bbob-biobj-mixint_f071_i06_d080 1.0", + "bbob-biobj-mixint_f071_i06_d160 1.0", + "bbob-biobj-mixint_f071_i07_d005 1.0", + "bbob-biobj-mixint_f071_i07_d010 1.0", + "bbob-biobj-mixint_f071_i07_d020 1.0", + "bbob-biobj-mixint_f071_i07_d040 1.0", + "bbob-biobj-mixint_f071_i07_d080 1.0", + "bbob-biobj-mixint_f071_i07_d160 1.0", + "bbob-biobj-mixint_f071_i08_d005 1.0", + "bbob-biobj-mixint_f071_i08_d010 1.0", + "bbob-biobj-mixint_f071_i08_d020 1.0", + "bbob-biobj-mixint_f071_i08_d040 1.0", + "bbob-biobj-mixint_f071_i08_d080 1.0", + "bbob-biobj-mixint_f071_i08_d160 1.0", + "bbob-biobj-mixint_f071_i09_d005 1.0", + "bbob-biobj-mixint_f071_i09_d010 1.0", + "bbob-biobj-mixint_f071_i09_d020 1.0", + "bbob-biobj-mixint_f071_i09_d040 1.0", + "bbob-biobj-mixint_f071_i09_d080 1.0", + "bbob-biobj-mixint_f071_i09_d160 1.0", + "bbob-biobj-mixint_f071_i10_d005 1.0", + "bbob-biobj-mixint_f071_i10_d010 1.0", + "bbob-biobj-mixint_f071_i10_d020 1.0", + "bbob-biobj-mixint_f071_i10_d040 1.0", + "bbob-biobj-mixint_f071_i10_d080 1.0", + "bbob-biobj-mixint_f071_i10_d160 1.0", + "bbob-biobj-mixint_f071_i11_d005 1.0", + "bbob-biobj-mixint_f071_i11_d010 1.0", + "bbob-biobj-mixint_f071_i11_d020 1.0", + "bbob-biobj-mixint_f071_i11_d040 1.0", + "bbob-biobj-mixint_f071_i11_d080 1.0", + "bbob-biobj-mixint_f071_i11_d160 1.0", + "bbob-biobj-mixint_f071_i12_d005 1.0", + "bbob-biobj-mixint_f071_i12_d010 1.0", + "bbob-biobj-mixint_f071_i12_d020 1.0", + "bbob-biobj-mixint_f071_i12_d040 1.0", + "bbob-biobj-mixint_f071_i12_d080 1.0", + "bbob-biobj-mixint_f071_i12_d160 1.0", + "bbob-biobj-mixint_f071_i13_d005 1.0", + "bbob-biobj-mixint_f071_i13_d010 1.0", + "bbob-biobj-mixint_f071_i13_d020 1.0", + "bbob-biobj-mixint_f071_i13_d040 1.0", + "bbob-biobj-mixint_f071_i13_d080 1.0", + "bbob-biobj-mixint_f071_i13_d160 1.0", + "bbob-biobj-mixint_f071_i14_d005 1.0", + "bbob-biobj-mixint_f071_i14_d010 1.0", + "bbob-biobj-mixint_f071_i14_d020 1.0", + "bbob-biobj-mixint_f071_i14_d040 1.0", + "bbob-biobj-mixint_f071_i14_d080 1.0", + "bbob-biobj-mixint_f071_i14_d160 1.0", + "bbob-biobj-mixint_f071_i15_d005 1.0", + "bbob-biobj-mixint_f071_i15_d010 1.0", + "bbob-biobj-mixint_f071_i15_d020 1.0", + "bbob-biobj-mixint_f071_i15_d040 1.0", + "bbob-biobj-mixint_f071_i15_d080 1.0", + "bbob-biobj-mixint_f071_i15_d160 1.0", + "bbob-biobj-mixint_f072_i01_d005 1.0", + "bbob-biobj-mixint_f072_i01_d010 1.0", + "bbob-biobj-mixint_f072_i01_d020 1.0", + "bbob-biobj-mixint_f072_i01_d040 1.0", + "bbob-biobj-mixint_f072_i01_d080 1.0", + "bbob-biobj-mixint_f072_i01_d160 1.0", + "bbob-biobj-mixint_f072_i02_d005 1.0", + "bbob-biobj-mixint_f072_i02_d010 1.0", + "bbob-biobj-mixint_f072_i02_d020 1.0", + "bbob-biobj-mixint_f072_i02_d040 1.0", + "bbob-biobj-mixint_f072_i02_d080 1.0", + "bbob-biobj-mixint_f072_i02_d160 1.0", + "bbob-biobj-mixint_f072_i03_d005 1.0", + "bbob-biobj-mixint_f072_i03_d010 1.0", + "bbob-biobj-mixint_f072_i03_d020 1.0", + "bbob-biobj-mixint_f072_i03_d040 1.0", + "bbob-biobj-mixint_f072_i03_d080 1.0", + "bbob-biobj-mixint_f072_i03_d160 1.0", + "bbob-biobj-mixint_f072_i04_d005 1.0", + "bbob-biobj-mixint_f072_i04_d010 1.0", + "bbob-biobj-mixint_f072_i04_d020 1.0", + "bbob-biobj-mixint_f072_i04_d040 1.0", + "bbob-biobj-mixint_f072_i04_d080 1.0", + "bbob-biobj-mixint_f072_i04_d160 1.0", + "bbob-biobj-mixint_f072_i05_d005 1.0", + "bbob-biobj-mixint_f072_i05_d010 1.0", + "bbob-biobj-mixint_f072_i05_d020 1.0", + "bbob-biobj-mixint_f072_i05_d040 1.0", + "bbob-biobj-mixint_f072_i05_d080 1.0", + "bbob-biobj-mixint_f072_i05_d160 1.0", + "bbob-biobj-mixint_f072_i06_d005 1.0", + "bbob-biobj-mixint_f072_i06_d010 1.0", + "bbob-biobj-mixint_f072_i06_d020 1.0", + "bbob-biobj-mixint_f072_i06_d040 1.0", + "bbob-biobj-mixint_f072_i06_d080 1.0", + "bbob-biobj-mixint_f072_i06_d160 1.0", + "bbob-biobj-mixint_f072_i07_d005 1.0", + "bbob-biobj-mixint_f072_i07_d010 1.0", + "bbob-biobj-mixint_f072_i07_d020 1.0", + "bbob-biobj-mixint_f072_i07_d040 1.0", + "bbob-biobj-mixint_f072_i07_d080 1.0", + "bbob-biobj-mixint_f072_i07_d160 1.0", + "bbob-biobj-mixint_f072_i08_d005 1.0", + "bbob-biobj-mixint_f072_i08_d010 1.0", + "bbob-biobj-mixint_f072_i08_d020 1.0", + "bbob-biobj-mixint_f072_i08_d040 1.0", + "bbob-biobj-mixint_f072_i08_d080 1.0", + "bbob-biobj-mixint_f072_i08_d160 1.0", + "bbob-biobj-mixint_f072_i09_d005 1.0", + "bbob-biobj-mixint_f072_i09_d010 1.0", + "bbob-biobj-mixint_f072_i09_d020 1.0", + "bbob-biobj-mixint_f072_i09_d040 1.0", + "bbob-biobj-mixint_f072_i09_d080 1.0", + "bbob-biobj-mixint_f072_i09_d160 1.0", + "bbob-biobj-mixint_f072_i10_d005 1.0", + "bbob-biobj-mixint_f072_i10_d010 1.0", + "bbob-biobj-mixint_f072_i10_d020 1.0", + "bbob-biobj-mixint_f072_i10_d040 1.0", + "bbob-biobj-mixint_f072_i10_d080 1.0", + "bbob-biobj-mixint_f072_i10_d160 1.0", + "bbob-biobj-mixint_f072_i11_d005 1.0", + "bbob-biobj-mixint_f072_i11_d010 1.0", + "bbob-biobj-mixint_f072_i11_d020 1.0", + "bbob-biobj-mixint_f072_i11_d040 1.0", + "bbob-biobj-mixint_f072_i11_d080 1.0", + "bbob-biobj-mixint_f072_i11_d160 1.0", + "bbob-biobj-mixint_f072_i12_d005 1.0", + "bbob-biobj-mixint_f072_i12_d010 1.0", + "bbob-biobj-mixint_f072_i12_d020 1.0", + "bbob-biobj-mixint_f072_i12_d040 1.0", + "bbob-biobj-mixint_f072_i12_d080 1.0", + "bbob-biobj-mixint_f072_i12_d160 1.0", + "bbob-biobj-mixint_f072_i13_d005 1.0", + "bbob-biobj-mixint_f072_i13_d010 1.0", + "bbob-biobj-mixint_f072_i13_d020 1.0", + "bbob-biobj-mixint_f072_i13_d040 1.0", + "bbob-biobj-mixint_f072_i13_d080 1.0", + "bbob-biobj-mixint_f072_i13_d160 1.0", + "bbob-biobj-mixint_f072_i14_d005 1.0", + "bbob-biobj-mixint_f072_i14_d010 1.0", + "bbob-biobj-mixint_f072_i14_d020 1.0", + "bbob-biobj-mixint_f072_i14_d040 1.0", + "bbob-biobj-mixint_f072_i14_d080 1.0", + "bbob-biobj-mixint_f072_i14_d160 1.0", + "bbob-biobj-mixint_f072_i15_d005 1.0", + "bbob-biobj-mixint_f072_i15_d010 1.0", + "bbob-biobj-mixint_f072_i15_d020 1.0", + "bbob-biobj-mixint_f072_i15_d040 1.0", + "bbob-biobj-mixint_f072_i15_d080 1.0", + "bbob-biobj-mixint_f072_i15_d160 1.0", + "bbob-biobj-mixint_f073_i01_d005 1.0", + "bbob-biobj-mixint_f073_i01_d010 1.0", + "bbob-biobj-mixint_f073_i01_d020 1.0", + "bbob-biobj-mixint_f073_i01_d040 1.0", + "bbob-biobj-mixint_f073_i01_d080 1.0", + "bbob-biobj-mixint_f073_i01_d160 1.0", + "bbob-biobj-mixint_f073_i02_d005 1.0", + "bbob-biobj-mixint_f073_i02_d010 1.0", + "bbob-biobj-mixint_f073_i02_d020 1.0", + "bbob-biobj-mixint_f073_i02_d040 1.0", + "bbob-biobj-mixint_f073_i02_d080 1.0", + "bbob-biobj-mixint_f073_i02_d160 1.0", + "bbob-biobj-mixint_f073_i03_d005 1.0", + "bbob-biobj-mixint_f073_i03_d010 1.0", + "bbob-biobj-mixint_f073_i03_d020 1.0", + "bbob-biobj-mixint_f073_i03_d040 1.0", + "bbob-biobj-mixint_f073_i03_d080 1.0", + "bbob-biobj-mixint_f073_i03_d160 1.0", + "bbob-biobj-mixint_f073_i04_d005 1.0", + "bbob-biobj-mixint_f073_i04_d010 1.0", + "bbob-biobj-mixint_f073_i04_d020 1.0", + "bbob-biobj-mixint_f073_i04_d040 1.0", + "bbob-biobj-mixint_f073_i04_d080 1.0", + "bbob-biobj-mixint_f073_i04_d160 1.0", + "bbob-biobj-mixint_f073_i05_d005 1.0", + "bbob-biobj-mixint_f073_i05_d010 1.0", + "bbob-biobj-mixint_f073_i05_d020 1.0", + "bbob-biobj-mixint_f073_i05_d040 1.0", + "bbob-biobj-mixint_f073_i05_d080 1.0", + "bbob-biobj-mixint_f073_i05_d160 1.0", + "bbob-biobj-mixint_f073_i06_d005 1.0", + "bbob-biobj-mixint_f073_i06_d010 1.0", + "bbob-biobj-mixint_f073_i06_d020 1.0", + "bbob-biobj-mixint_f073_i06_d040 1.0", + "bbob-biobj-mixint_f073_i06_d080 1.0", + "bbob-biobj-mixint_f073_i06_d160 1.0", + "bbob-biobj-mixint_f073_i07_d005 1.0", + "bbob-biobj-mixint_f073_i07_d010 1.0", + "bbob-biobj-mixint_f073_i07_d020 1.0", + "bbob-biobj-mixint_f073_i07_d040 1.0", + "bbob-biobj-mixint_f073_i07_d080 1.0", + "bbob-biobj-mixint_f073_i07_d160 1.0", + "bbob-biobj-mixint_f073_i08_d005 1.0", + "bbob-biobj-mixint_f073_i08_d010 1.0", + "bbob-biobj-mixint_f073_i08_d020 1.0", + "bbob-biobj-mixint_f073_i08_d040 1.0", + "bbob-biobj-mixint_f073_i08_d080 1.0", + "bbob-biobj-mixint_f073_i08_d160 1.0", + "bbob-biobj-mixint_f073_i09_d005 1.0", + "bbob-biobj-mixint_f073_i09_d010 1.0", + "bbob-biobj-mixint_f073_i09_d020 1.0", + "bbob-biobj-mixint_f073_i09_d040 1.0", + "bbob-biobj-mixint_f073_i09_d080 1.0", + "bbob-biobj-mixint_f073_i09_d160 1.0", + "bbob-biobj-mixint_f073_i10_d005 1.0", + "bbob-biobj-mixint_f073_i10_d010 1.0", + "bbob-biobj-mixint_f073_i10_d020 1.0", + "bbob-biobj-mixint_f073_i10_d040 1.0", + "bbob-biobj-mixint_f073_i10_d080 1.0", + "bbob-biobj-mixint_f073_i10_d160 1.0", + "bbob-biobj-mixint_f073_i11_d005 1.0", + "bbob-biobj-mixint_f073_i11_d010 1.0", + "bbob-biobj-mixint_f073_i11_d020 1.0", + "bbob-biobj-mixint_f073_i11_d040 1.0", + "bbob-biobj-mixint_f073_i11_d080 1.0", + "bbob-biobj-mixint_f073_i11_d160 1.0", + "bbob-biobj-mixint_f073_i12_d005 1.0", + "bbob-biobj-mixint_f073_i12_d010 1.0", + "bbob-biobj-mixint_f073_i12_d020 1.0", + "bbob-biobj-mixint_f073_i12_d040 1.0", + "bbob-biobj-mixint_f073_i12_d080 1.0", + "bbob-biobj-mixint_f073_i12_d160 1.0", + "bbob-biobj-mixint_f073_i13_d005 1.0", + "bbob-biobj-mixint_f073_i13_d010 1.0", + "bbob-biobj-mixint_f073_i13_d020 1.0", + "bbob-biobj-mixint_f073_i13_d040 1.0", + "bbob-biobj-mixint_f073_i13_d080 1.0", + "bbob-biobj-mixint_f073_i13_d160 1.0", + "bbob-biobj-mixint_f073_i14_d005 1.0", + "bbob-biobj-mixint_f073_i14_d010 1.0", + "bbob-biobj-mixint_f073_i14_d020 1.0", + "bbob-biobj-mixint_f073_i14_d040 1.0", + "bbob-biobj-mixint_f073_i14_d080 1.0", + "bbob-biobj-mixint_f073_i14_d160 1.0", + "bbob-biobj-mixint_f073_i15_d005 1.0", + "bbob-biobj-mixint_f073_i15_d010 1.0", + "bbob-biobj-mixint_f073_i15_d020 1.0", + "bbob-biobj-mixint_f073_i15_d040 1.0", + "bbob-biobj-mixint_f073_i15_d080 1.0", + "bbob-biobj-mixint_f073_i15_d160 1.0", + "bbob-biobj-mixint_f074_i01_d005 1.0", + "bbob-biobj-mixint_f074_i01_d010 1.0", + "bbob-biobj-mixint_f074_i01_d020 1.0", + "bbob-biobj-mixint_f074_i01_d040 1.0", + "bbob-biobj-mixint_f074_i01_d080 1.0", + "bbob-biobj-mixint_f074_i01_d160 1.0", + "bbob-biobj-mixint_f074_i02_d005 1.0", + "bbob-biobj-mixint_f074_i02_d010 1.0", + "bbob-biobj-mixint_f074_i02_d020 1.0", + "bbob-biobj-mixint_f074_i02_d040 1.0", + "bbob-biobj-mixint_f074_i02_d080 1.0", + "bbob-biobj-mixint_f074_i02_d160 1.0", + "bbob-biobj-mixint_f074_i03_d005 1.0", + "bbob-biobj-mixint_f074_i03_d010 1.0", + "bbob-biobj-mixint_f074_i03_d020 1.0", + "bbob-biobj-mixint_f074_i03_d040 1.0", + "bbob-biobj-mixint_f074_i03_d080 1.0", + "bbob-biobj-mixint_f074_i03_d160 1.0", + "bbob-biobj-mixint_f074_i04_d005 1.0", + "bbob-biobj-mixint_f074_i04_d010 1.0", + "bbob-biobj-mixint_f074_i04_d020 1.0", + "bbob-biobj-mixint_f074_i04_d040 1.0", + "bbob-biobj-mixint_f074_i04_d080 1.0", + "bbob-biobj-mixint_f074_i04_d160 1.0", + "bbob-biobj-mixint_f074_i05_d005 1.0", + "bbob-biobj-mixint_f074_i05_d010 1.0", + "bbob-biobj-mixint_f074_i05_d020 1.0", + "bbob-biobj-mixint_f074_i05_d040 1.0", + "bbob-biobj-mixint_f074_i05_d080 1.0", + "bbob-biobj-mixint_f074_i05_d160 1.0", + "bbob-biobj-mixint_f074_i06_d005 1.0", + "bbob-biobj-mixint_f074_i06_d010 1.0", + "bbob-biobj-mixint_f074_i06_d020 1.0", + "bbob-biobj-mixint_f074_i06_d040 1.0", + "bbob-biobj-mixint_f074_i06_d080 1.0", + "bbob-biobj-mixint_f074_i06_d160 1.0", + "bbob-biobj-mixint_f074_i07_d005 1.0", + "bbob-biobj-mixint_f074_i07_d010 1.0", + "bbob-biobj-mixint_f074_i07_d020 1.0", + "bbob-biobj-mixint_f074_i07_d040 1.0", + "bbob-biobj-mixint_f074_i07_d080 1.0", + "bbob-biobj-mixint_f074_i07_d160 1.0", + "bbob-biobj-mixint_f074_i08_d005 1.0", + "bbob-biobj-mixint_f074_i08_d010 1.0", + "bbob-biobj-mixint_f074_i08_d020 1.0", + "bbob-biobj-mixint_f074_i08_d040 1.0", + "bbob-biobj-mixint_f074_i08_d080 1.0", + "bbob-biobj-mixint_f074_i08_d160 1.0", + "bbob-biobj-mixint_f074_i09_d005 1.0", + "bbob-biobj-mixint_f074_i09_d010 1.0", + "bbob-biobj-mixint_f074_i09_d020 1.0", + "bbob-biobj-mixint_f074_i09_d040 1.0", + "bbob-biobj-mixint_f074_i09_d080 1.0", + "bbob-biobj-mixint_f074_i09_d160 1.0", + "bbob-biobj-mixint_f074_i10_d005 1.0", + "bbob-biobj-mixint_f074_i10_d010 1.0", + "bbob-biobj-mixint_f074_i10_d020 1.0", + "bbob-biobj-mixint_f074_i10_d040 1.0", + "bbob-biobj-mixint_f074_i10_d080 1.0", + "bbob-biobj-mixint_f074_i10_d160 1.0", + "bbob-biobj-mixint_f074_i11_d005 1.0", + "bbob-biobj-mixint_f074_i11_d010 1.0", + "bbob-biobj-mixint_f074_i11_d020 1.0", + "bbob-biobj-mixint_f074_i11_d040 1.0", + "bbob-biobj-mixint_f074_i11_d080 1.0", + "bbob-biobj-mixint_f074_i11_d160 1.0", + "bbob-biobj-mixint_f074_i12_d005 1.0", + "bbob-biobj-mixint_f074_i12_d010 1.0", + "bbob-biobj-mixint_f074_i12_d020 1.0", + "bbob-biobj-mixint_f074_i12_d040 1.0", + "bbob-biobj-mixint_f074_i12_d080 1.0", + "bbob-biobj-mixint_f074_i12_d160 1.0", + "bbob-biobj-mixint_f074_i13_d005 1.0", + "bbob-biobj-mixint_f074_i13_d010 1.0", + "bbob-biobj-mixint_f074_i13_d020 1.0", + "bbob-biobj-mixint_f074_i13_d040 1.0", + "bbob-biobj-mixint_f074_i13_d080 1.0", + "bbob-biobj-mixint_f074_i13_d160 1.0", + "bbob-biobj-mixint_f074_i14_d005 1.0", + "bbob-biobj-mixint_f074_i14_d010 1.0", + "bbob-biobj-mixint_f074_i14_d020 1.0", + "bbob-biobj-mixint_f074_i14_d040 1.0", + "bbob-biobj-mixint_f074_i14_d080 1.0", + "bbob-biobj-mixint_f074_i14_d160 1.0", + "bbob-biobj-mixint_f074_i15_d005 1.0", + "bbob-biobj-mixint_f074_i15_d010 1.0", + "bbob-biobj-mixint_f074_i15_d020 1.0", + "bbob-biobj-mixint_f074_i15_d040 1.0", + "bbob-biobj-mixint_f074_i15_d080 1.0", + "bbob-biobj-mixint_f074_i15_d160 1.0", + "bbob-biobj-mixint_f075_i01_d005 1.0", + "bbob-biobj-mixint_f075_i01_d010 1.0", + "bbob-biobj-mixint_f075_i01_d020 1.0", + "bbob-biobj-mixint_f075_i01_d040 1.0", + "bbob-biobj-mixint_f075_i01_d080 1.0", + "bbob-biobj-mixint_f075_i01_d160 1.0", + "bbob-biobj-mixint_f075_i02_d005 1.0", + "bbob-biobj-mixint_f075_i02_d010 1.0", + "bbob-biobj-mixint_f075_i02_d020 1.0", + "bbob-biobj-mixint_f075_i02_d040 1.0", + "bbob-biobj-mixint_f075_i02_d080 1.0", + "bbob-biobj-mixint_f075_i02_d160 1.0", + "bbob-biobj-mixint_f075_i03_d005 1.0", + "bbob-biobj-mixint_f075_i03_d010 1.0", + "bbob-biobj-mixint_f075_i03_d020 1.0", + "bbob-biobj-mixint_f075_i03_d040 1.0", + "bbob-biobj-mixint_f075_i03_d080 1.0", + "bbob-biobj-mixint_f075_i03_d160 1.0", + "bbob-biobj-mixint_f075_i04_d005 1.0", + "bbob-biobj-mixint_f075_i04_d010 1.0", + "bbob-biobj-mixint_f075_i04_d020 1.0", + "bbob-biobj-mixint_f075_i04_d040 1.0", + "bbob-biobj-mixint_f075_i04_d080 1.0", + "bbob-biobj-mixint_f075_i04_d160 1.0", + "bbob-biobj-mixint_f075_i05_d005 1.0", + "bbob-biobj-mixint_f075_i05_d010 1.0", + "bbob-biobj-mixint_f075_i05_d020 1.0", + "bbob-biobj-mixint_f075_i05_d040 1.0", + "bbob-biobj-mixint_f075_i05_d080 1.0", + "bbob-biobj-mixint_f075_i05_d160 1.0", + "bbob-biobj-mixint_f075_i06_d005 1.0", + "bbob-biobj-mixint_f075_i06_d010 1.0", + "bbob-biobj-mixint_f075_i06_d020 1.0", + "bbob-biobj-mixint_f075_i06_d040 1.0", + "bbob-biobj-mixint_f075_i06_d080 1.0", + "bbob-biobj-mixint_f075_i06_d160 1.0", + "bbob-biobj-mixint_f075_i07_d005 1.0", + "bbob-biobj-mixint_f075_i07_d010 1.0", + "bbob-biobj-mixint_f075_i07_d020 1.0", + "bbob-biobj-mixint_f075_i07_d040 1.0", + "bbob-biobj-mixint_f075_i07_d080 1.0", + "bbob-biobj-mixint_f075_i07_d160 1.0", + "bbob-biobj-mixint_f075_i08_d005 1.0", + "bbob-biobj-mixint_f075_i08_d010 1.0", + "bbob-biobj-mixint_f075_i08_d020 1.0", + "bbob-biobj-mixint_f075_i08_d040 1.0", + "bbob-biobj-mixint_f075_i08_d080 1.0", + "bbob-biobj-mixint_f075_i08_d160 1.0", + "bbob-biobj-mixint_f075_i09_d005 1.0", + "bbob-biobj-mixint_f075_i09_d010 1.0", + "bbob-biobj-mixint_f075_i09_d020 1.0", + "bbob-biobj-mixint_f075_i09_d040 1.0", + "bbob-biobj-mixint_f075_i09_d080 1.0", + "bbob-biobj-mixint_f075_i09_d160 1.0", + "bbob-biobj-mixint_f075_i10_d005 1.0", + "bbob-biobj-mixint_f075_i10_d010 1.0", + "bbob-biobj-mixint_f075_i10_d020 1.0", + "bbob-biobj-mixint_f075_i10_d040 1.0", + "bbob-biobj-mixint_f075_i10_d080 1.0", + "bbob-biobj-mixint_f075_i10_d160 1.0", + "bbob-biobj-mixint_f075_i11_d005 1.0", + "bbob-biobj-mixint_f075_i11_d010 1.0", + "bbob-biobj-mixint_f075_i11_d020 1.0", + "bbob-biobj-mixint_f075_i11_d040 1.0", + "bbob-biobj-mixint_f075_i11_d080 1.0", + "bbob-biobj-mixint_f075_i11_d160 1.0", + "bbob-biobj-mixint_f075_i12_d005 1.0", + "bbob-biobj-mixint_f075_i12_d010 1.0", + "bbob-biobj-mixint_f075_i12_d020 1.0", + "bbob-biobj-mixint_f075_i12_d040 1.0", + "bbob-biobj-mixint_f075_i12_d080 1.0", + "bbob-biobj-mixint_f075_i12_d160 1.0", + "bbob-biobj-mixint_f075_i13_d005 1.0", + "bbob-biobj-mixint_f075_i13_d010 1.0", + "bbob-biobj-mixint_f075_i13_d020 1.0", + "bbob-biobj-mixint_f075_i13_d040 1.0", + "bbob-biobj-mixint_f075_i13_d080 1.0", + "bbob-biobj-mixint_f075_i13_d160 1.0", + "bbob-biobj-mixint_f075_i14_d005 1.0", + "bbob-biobj-mixint_f075_i14_d010 1.0", + "bbob-biobj-mixint_f075_i14_d020 1.0", + "bbob-biobj-mixint_f075_i14_d040 1.0", + "bbob-biobj-mixint_f075_i14_d080 1.0", + "bbob-biobj-mixint_f075_i14_d160 1.0", + "bbob-biobj-mixint_f075_i15_d005 1.0", + "bbob-biobj-mixint_f075_i15_d010 1.0", + "bbob-biobj-mixint_f075_i15_d020 1.0", + "bbob-biobj-mixint_f075_i15_d040 1.0", + "bbob-biobj-mixint_f075_i15_d080 1.0", + "bbob-biobj-mixint_f075_i15_d160 1.0", + "bbob-biobj-mixint_f076_i01_d005 1.0", + "bbob-biobj-mixint_f076_i01_d010 1.0", + "bbob-biobj-mixint_f076_i01_d020 1.0", + "bbob-biobj-mixint_f076_i01_d040 1.0", + "bbob-biobj-mixint_f076_i01_d080 1.0", + "bbob-biobj-mixint_f076_i01_d160 1.0", + "bbob-biobj-mixint_f076_i02_d005 1.0", + "bbob-biobj-mixint_f076_i02_d010 1.0", + "bbob-biobj-mixint_f076_i02_d020 1.0", + "bbob-biobj-mixint_f076_i02_d040 1.0", + "bbob-biobj-mixint_f076_i02_d080 1.0", + "bbob-biobj-mixint_f076_i02_d160 1.0", + "bbob-biobj-mixint_f076_i03_d005 1.0", + "bbob-biobj-mixint_f076_i03_d010 1.0", + "bbob-biobj-mixint_f076_i03_d020 1.0", + "bbob-biobj-mixint_f076_i03_d040 1.0", + "bbob-biobj-mixint_f076_i03_d080 1.0", + "bbob-biobj-mixint_f076_i03_d160 1.0", + "bbob-biobj-mixint_f076_i04_d005 1.0", + "bbob-biobj-mixint_f076_i04_d010 1.0", + "bbob-biobj-mixint_f076_i04_d020 1.0", + "bbob-biobj-mixint_f076_i04_d040 1.0", + "bbob-biobj-mixint_f076_i04_d080 1.0", + "bbob-biobj-mixint_f076_i04_d160 1.0", + "bbob-biobj-mixint_f076_i05_d005 1.0", + "bbob-biobj-mixint_f076_i05_d010 1.0", + "bbob-biobj-mixint_f076_i05_d020 1.0", + "bbob-biobj-mixint_f076_i05_d040 1.0", + "bbob-biobj-mixint_f076_i05_d080 1.0", + "bbob-biobj-mixint_f076_i05_d160 1.0", + "bbob-biobj-mixint_f076_i06_d005 1.0", + "bbob-biobj-mixint_f076_i06_d010 1.0", + "bbob-biobj-mixint_f076_i06_d020 1.0", + "bbob-biobj-mixint_f076_i06_d040 1.0", + "bbob-biobj-mixint_f076_i06_d080 1.0", + "bbob-biobj-mixint_f076_i06_d160 1.0", + "bbob-biobj-mixint_f076_i07_d005 1.0", + "bbob-biobj-mixint_f076_i07_d010 1.0", + "bbob-biobj-mixint_f076_i07_d020 1.0", + "bbob-biobj-mixint_f076_i07_d040 1.0", + "bbob-biobj-mixint_f076_i07_d080 1.0", + "bbob-biobj-mixint_f076_i07_d160 1.0", + "bbob-biobj-mixint_f076_i08_d005 1.0", + "bbob-biobj-mixint_f076_i08_d010 1.0", + "bbob-biobj-mixint_f076_i08_d020 1.0", + "bbob-biobj-mixint_f076_i08_d040 1.0", + "bbob-biobj-mixint_f076_i08_d080 1.0", + "bbob-biobj-mixint_f076_i08_d160 1.0", + "bbob-biobj-mixint_f076_i09_d005 1.0", + "bbob-biobj-mixint_f076_i09_d010 1.0", + "bbob-biobj-mixint_f076_i09_d020 1.0", + "bbob-biobj-mixint_f076_i09_d040 1.0", + "bbob-biobj-mixint_f076_i09_d080 1.0", + "bbob-biobj-mixint_f076_i09_d160 1.0", + "bbob-biobj-mixint_f076_i10_d005 1.0", + "bbob-biobj-mixint_f076_i10_d010 1.0", + "bbob-biobj-mixint_f076_i10_d020 1.0", + "bbob-biobj-mixint_f076_i10_d040 1.0", + "bbob-biobj-mixint_f076_i10_d080 1.0", + "bbob-biobj-mixint_f076_i10_d160 1.0", + "bbob-biobj-mixint_f076_i11_d005 1.0", + "bbob-biobj-mixint_f076_i11_d010 1.0", + "bbob-biobj-mixint_f076_i11_d020 1.0", + "bbob-biobj-mixint_f076_i11_d040 1.0", + "bbob-biobj-mixint_f076_i11_d080 1.0", + "bbob-biobj-mixint_f076_i11_d160 1.0", + "bbob-biobj-mixint_f076_i12_d005 1.0", + "bbob-biobj-mixint_f076_i12_d010 1.0", + "bbob-biobj-mixint_f076_i12_d020 1.0", + "bbob-biobj-mixint_f076_i12_d040 1.0", + "bbob-biobj-mixint_f076_i12_d080 1.0", + "bbob-biobj-mixint_f076_i12_d160 1.0", + "bbob-biobj-mixint_f076_i13_d005 1.0", + "bbob-biobj-mixint_f076_i13_d010 1.0", + "bbob-biobj-mixint_f076_i13_d020 1.0", + "bbob-biobj-mixint_f076_i13_d040 1.0", + "bbob-biobj-mixint_f076_i13_d080 1.0", + "bbob-biobj-mixint_f076_i13_d160 1.0", + "bbob-biobj-mixint_f076_i14_d005 1.0", + "bbob-biobj-mixint_f076_i14_d010 1.0", + "bbob-biobj-mixint_f076_i14_d020 1.0", + "bbob-biobj-mixint_f076_i14_d040 1.0", + "bbob-biobj-mixint_f076_i14_d080 1.0", + "bbob-biobj-mixint_f076_i14_d160 1.0", + "bbob-biobj-mixint_f076_i15_d005 1.0", + "bbob-biobj-mixint_f076_i15_d010 1.0", + "bbob-biobj-mixint_f076_i15_d020 1.0", + "bbob-biobj-mixint_f076_i15_d040 1.0", + "bbob-biobj-mixint_f076_i15_d080 1.0", + "bbob-biobj-mixint_f076_i15_d160 1.0", + "bbob-biobj-mixint_f077_i01_d005 1.0", + "bbob-biobj-mixint_f077_i01_d010 1.0", + "bbob-biobj-mixint_f077_i01_d020 1.0", + "bbob-biobj-mixint_f077_i01_d040 1.0", + "bbob-biobj-mixint_f077_i01_d080 1.0", + "bbob-biobj-mixint_f077_i01_d160 1.0", + "bbob-biobj-mixint_f077_i02_d005 1.0", + "bbob-biobj-mixint_f077_i02_d010 1.0", + "bbob-biobj-mixint_f077_i02_d020 1.0", + "bbob-biobj-mixint_f077_i02_d040 1.0", + "bbob-biobj-mixint_f077_i02_d080 1.0", + "bbob-biobj-mixint_f077_i02_d160 1.0", + "bbob-biobj-mixint_f077_i03_d005 1.0", + "bbob-biobj-mixint_f077_i03_d010 1.0", + "bbob-biobj-mixint_f077_i03_d020 1.0", + "bbob-biobj-mixint_f077_i03_d040 1.0", + "bbob-biobj-mixint_f077_i03_d080 1.0", + "bbob-biobj-mixint_f077_i03_d160 1.0", + "bbob-biobj-mixint_f077_i04_d005 1.0", + "bbob-biobj-mixint_f077_i04_d010 1.0", + "bbob-biobj-mixint_f077_i04_d020 1.0", + "bbob-biobj-mixint_f077_i04_d040 1.0", + "bbob-biobj-mixint_f077_i04_d080 1.0", + "bbob-biobj-mixint_f077_i04_d160 1.0", + "bbob-biobj-mixint_f077_i05_d005 1.0", + "bbob-biobj-mixint_f077_i05_d010 1.0", + "bbob-biobj-mixint_f077_i05_d020 1.0", + "bbob-biobj-mixint_f077_i05_d040 1.0", + "bbob-biobj-mixint_f077_i05_d080 1.0", + "bbob-biobj-mixint_f077_i05_d160 1.0", + "bbob-biobj-mixint_f077_i06_d005 1.0", + "bbob-biobj-mixint_f077_i06_d010 1.0", + "bbob-biobj-mixint_f077_i06_d020 1.0", + "bbob-biobj-mixint_f077_i06_d040 1.0", + "bbob-biobj-mixint_f077_i06_d080 1.0", + "bbob-biobj-mixint_f077_i06_d160 1.0", + "bbob-biobj-mixint_f077_i07_d005 1.0", + "bbob-biobj-mixint_f077_i07_d010 1.0", + "bbob-biobj-mixint_f077_i07_d020 1.0", + "bbob-biobj-mixint_f077_i07_d040 1.0", + "bbob-biobj-mixint_f077_i07_d080 1.0", + "bbob-biobj-mixint_f077_i07_d160 1.0", + "bbob-biobj-mixint_f077_i08_d005 1.0", + "bbob-biobj-mixint_f077_i08_d010 1.0", + "bbob-biobj-mixint_f077_i08_d020 1.0", + "bbob-biobj-mixint_f077_i08_d040 1.0", + "bbob-biobj-mixint_f077_i08_d080 1.0", + "bbob-biobj-mixint_f077_i08_d160 1.0", + "bbob-biobj-mixint_f077_i09_d005 1.0", + "bbob-biobj-mixint_f077_i09_d010 1.0", + "bbob-biobj-mixint_f077_i09_d020 1.0", + "bbob-biobj-mixint_f077_i09_d040 1.0", + "bbob-biobj-mixint_f077_i09_d080 1.0", + "bbob-biobj-mixint_f077_i09_d160 1.0", + "bbob-biobj-mixint_f077_i10_d005 1.0", + "bbob-biobj-mixint_f077_i10_d010 1.0", + "bbob-biobj-mixint_f077_i10_d020 1.0", + "bbob-biobj-mixint_f077_i10_d040 1.0", + "bbob-biobj-mixint_f077_i10_d080 1.0", + "bbob-biobj-mixint_f077_i10_d160 1.0", + "bbob-biobj-mixint_f077_i11_d005 1.0", + "bbob-biobj-mixint_f077_i11_d010 1.0", + "bbob-biobj-mixint_f077_i11_d020 1.0", + "bbob-biobj-mixint_f077_i11_d040 1.0", + "bbob-biobj-mixint_f077_i11_d080 1.0", + "bbob-biobj-mixint_f077_i11_d160 1.0", + "bbob-biobj-mixint_f077_i12_d005 1.0", + "bbob-biobj-mixint_f077_i12_d010 1.0", + "bbob-biobj-mixint_f077_i12_d020 1.0", + "bbob-biobj-mixint_f077_i12_d040 1.0", + "bbob-biobj-mixint_f077_i12_d080 1.0", + "bbob-biobj-mixint_f077_i12_d160 1.0", + "bbob-biobj-mixint_f077_i13_d005 1.0", + "bbob-biobj-mixint_f077_i13_d010 1.0", + "bbob-biobj-mixint_f077_i13_d020 1.0", + "bbob-biobj-mixint_f077_i13_d040 1.0", + "bbob-biobj-mixint_f077_i13_d080 1.0", + "bbob-biobj-mixint_f077_i13_d160 1.0", + "bbob-biobj-mixint_f077_i14_d005 1.0", + "bbob-biobj-mixint_f077_i14_d010 1.0", + "bbob-biobj-mixint_f077_i14_d020 1.0", + "bbob-biobj-mixint_f077_i14_d040 1.0", + "bbob-biobj-mixint_f077_i14_d080 1.0", + "bbob-biobj-mixint_f077_i14_d160 1.0", + "bbob-biobj-mixint_f077_i15_d005 1.0", + "bbob-biobj-mixint_f077_i15_d010 1.0", + "bbob-biobj-mixint_f077_i15_d020 1.0", + "bbob-biobj-mixint_f077_i15_d040 1.0", + "bbob-biobj-mixint_f077_i15_d080 1.0", + "bbob-biobj-mixint_f077_i15_d160 1.0", + "bbob-biobj-mixint_f078_i01_d005 1.0", + "bbob-biobj-mixint_f078_i01_d010 1.0", + "bbob-biobj-mixint_f078_i01_d020 1.0", + "bbob-biobj-mixint_f078_i01_d040 1.0", + "bbob-biobj-mixint_f078_i01_d080 1.0", + "bbob-biobj-mixint_f078_i01_d160 1.0", + "bbob-biobj-mixint_f078_i02_d005 1.0", + "bbob-biobj-mixint_f078_i02_d010 1.0", + "bbob-biobj-mixint_f078_i02_d020 1.0", + "bbob-biobj-mixint_f078_i02_d040 1.0", + "bbob-biobj-mixint_f078_i02_d080 1.0", + "bbob-biobj-mixint_f078_i02_d160 1.0", + "bbob-biobj-mixint_f078_i03_d005 1.0", + "bbob-biobj-mixint_f078_i03_d010 1.0", + "bbob-biobj-mixint_f078_i03_d020 1.0", + "bbob-biobj-mixint_f078_i03_d040 1.0", + "bbob-biobj-mixint_f078_i03_d080 1.0", + "bbob-biobj-mixint_f078_i03_d160 1.0", + "bbob-biobj-mixint_f078_i04_d005 1.0", + "bbob-biobj-mixint_f078_i04_d010 1.0", + "bbob-biobj-mixint_f078_i04_d020 1.0", + "bbob-biobj-mixint_f078_i04_d040 1.0", + "bbob-biobj-mixint_f078_i04_d080 1.0", + "bbob-biobj-mixint_f078_i04_d160 1.0", + "bbob-biobj-mixint_f078_i05_d005 1.0", + "bbob-biobj-mixint_f078_i05_d010 1.0", + "bbob-biobj-mixint_f078_i05_d020 1.0", + "bbob-biobj-mixint_f078_i05_d040 1.0", + "bbob-biobj-mixint_f078_i05_d080 1.0", + "bbob-biobj-mixint_f078_i05_d160 1.0", + "bbob-biobj-mixint_f078_i06_d005 1.0", + "bbob-biobj-mixint_f078_i06_d010 1.0", + "bbob-biobj-mixint_f078_i06_d020 1.0", + "bbob-biobj-mixint_f078_i06_d040 1.0", + "bbob-biobj-mixint_f078_i06_d080 1.0", + "bbob-biobj-mixint_f078_i06_d160 1.0", + "bbob-biobj-mixint_f078_i07_d005 1.0", + "bbob-biobj-mixint_f078_i07_d010 1.0", + "bbob-biobj-mixint_f078_i07_d020 1.0", + "bbob-biobj-mixint_f078_i07_d040 1.0", + "bbob-biobj-mixint_f078_i07_d080 1.0", + "bbob-biobj-mixint_f078_i07_d160 1.0", + "bbob-biobj-mixint_f078_i08_d005 1.0", + "bbob-biobj-mixint_f078_i08_d010 1.0", + "bbob-biobj-mixint_f078_i08_d020 1.0", + "bbob-biobj-mixint_f078_i08_d040 1.0", + "bbob-biobj-mixint_f078_i08_d080 1.0", + "bbob-biobj-mixint_f078_i08_d160 1.0", + "bbob-biobj-mixint_f078_i09_d005 1.0", + "bbob-biobj-mixint_f078_i09_d010 1.0", + "bbob-biobj-mixint_f078_i09_d020 1.0", + "bbob-biobj-mixint_f078_i09_d040 1.0", + "bbob-biobj-mixint_f078_i09_d080 1.0", + "bbob-biobj-mixint_f078_i09_d160 1.0", + "bbob-biobj-mixint_f078_i10_d005 1.0", + "bbob-biobj-mixint_f078_i10_d010 1.0", + "bbob-biobj-mixint_f078_i10_d020 1.0", + "bbob-biobj-mixint_f078_i10_d040 1.0", + "bbob-biobj-mixint_f078_i10_d080 1.0", + "bbob-biobj-mixint_f078_i10_d160 1.0", + "bbob-biobj-mixint_f078_i11_d005 1.0", + "bbob-biobj-mixint_f078_i11_d010 1.0", + "bbob-biobj-mixint_f078_i11_d020 1.0", + "bbob-biobj-mixint_f078_i11_d040 1.0", + "bbob-biobj-mixint_f078_i11_d080 1.0", + "bbob-biobj-mixint_f078_i11_d160 1.0", + "bbob-biobj-mixint_f078_i12_d005 1.0", + "bbob-biobj-mixint_f078_i12_d010 1.0", + "bbob-biobj-mixint_f078_i12_d020 1.0", + "bbob-biobj-mixint_f078_i12_d040 1.0", + "bbob-biobj-mixint_f078_i12_d080 1.0", + "bbob-biobj-mixint_f078_i12_d160 1.0", + "bbob-biobj-mixint_f078_i13_d005 1.0", + "bbob-biobj-mixint_f078_i13_d010 1.0", + "bbob-biobj-mixint_f078_i13_d020 1.0", + "bbob-biobj-mixint_f078_i13_d040 1.0", + "bbob-biobj-mixint_f078_i13_d080 1.0", + "bbob-biobj-mixint_f078_i13_d160 1.0", + "bbob-biobj-mixint_f078_i14_d005 1.0", + "bbob-biobj-mixint_f078_i14_d010 1.0", + "bbob-biobj-mixint_f078_i14_d020 1.0", + "bbob-biobj-mixint_f078_i14_d040 1.0", + "bbob-biobj-mixint_f078_i14_d080 1.0", + "bbob-biobj-mixint_f078_i14_d160 1.0", + "bbob-biobj-mixint_f078_i15_d005 1.0", + "bbob-biobj-mixint_f078_i15_d010 1.0", + "bbob-biobj-mixint_f078_i15_d020 1.0", + "bbob-biobj-mixint_f078_i15_d040 1.0", + "bbob-biobj-mixint_f078_i15_d080 1.0", + "bbob-biobj-mixint_f078_i15_d160 1.0", + "bbob-biobj-mixint_f079_i01_d005 1.0", + "bbob-biobj-mixint_f079_i01_d010 1.0", + "bbob-biobj-mixint_f079_i01_d020 1.0", + "bbob-biobj-mixint_f079_i01_d040 1.0", + "bbob-biobj-mixint_f079_i01_d080 1.0", + "bbob-biobj-mixint_f079_i01_d160 1.0", + "bbob-biobj-mixint_f079_i02_d005 1.0", + "bbob-biobj-mixint_f079_i02_d010 1.0", + "bbob-biobj-mixint_f079_i02_d020 1.0", + "bbob-biobj-mixint_f079_i02_d040 1.0", + "bbob-biobj-mixint_f079_i02_d080 1.0", + "bbob-biobj-mixint_f079_i02_d160 1.0", + "bbob-biobj-mixint_f079_i03_d005 1.0", + "bbob-biobj-mixint_f079_i03_d010 1.0", + "bbob-biobj-mixint_f079_i03_d020 1.0", + "bbob-biobj-mixint_f079_i03_d040 1.0", + "bbob-biobj-mixint_f079_i03_d080 1.0", + "bbob-biobj-mixint_f079_i03_d160 1.0", + "bbob-biobj-mixint_f079_i04_d005 1.0", + "bbob-biobj-mixint_f079_i04_d010 1.0", + "bbob-biobj-mixint_f079_i04_d020 1.0", + "bbob-biobj-mixint_f079_i04_d040 1.0", + "bbob-biobj-mixint_f079_i04_d080 1.0", + "bbob-biobj-mixint_f079_i04_d160 1.0", + "bbob-biobj-mixint_f079_i05_d005 1.0", + "bbob-biobj-mixint_f079_i05_d010 1.0", + "bbob-biobj-mixint_f079_i05_d020 1.0", + "bbob-biobj-mixint_f079_i05_d040 1.0", + "bbob-biobj-mixint_f079_i05_d080 1.0", + "bbob-biobj-mixint_f079_i05_d160 1.0", + "bbob-biobj-mixint_f079_i06_d005 1.0", + "bbob-biobj-mixint_f079_i06_d010 1.0", + "bbob-biobj-mixint_f079_i06_d020 1.0", + "bbob-biobj-mixint_f079_i06_d040 1.0", + "bbob-biobj-mixint_f079_i06_d080 1.0", + "bbob-biobj-mixint_f079_i06_d160 1.0", + "bbob-biobj-mixint_f079_i07_d005 1.0", + "bbob-biobj-mixint_f079_i07_d010 1.0", + "bbob-biobj-mixint_f079_i07_d020 1.0", + "bbob-biobj-mixint_f079_i07_d040 1.0", + "bbob-biobj-mixint_f079_i07_d080 1.0", + "bbob-biobj-mixint_f079_i07_d160 1.0", + "bbob-biobj-mixint_f079_i08_d005 1.0", + "bbob-biobj-mixint_f079_i08_d010 1.0", + "bbob-biobj-mixint_f079_i08_d020 1.0", + "bbob-biobj-mixint_f079_i08_d040 1.0", + "bbob-biobj-mixint_f079_i08_d080 1.0", + "bbob-biobj-mixint_f079_i08_d160 1.0", + "bbob-biobj-mixint_f079_i09_d005 1.0", + "bbob-biobj-mixint_f079_i09_d010 1.0", + "bbob-biobj-mixint_f079_i09_d020 1.0", + "bbob-biobj-mixint_f079_i09_d040 1.0", + "bbob-biobj-mixint_f079_i09_d080 1.0", + "bbob-biobj-mixint_f079_i09_d160 1.0", + "bbob-biobj-mixint_f079_i10_d005 1.0", + "bbob-biobj-mixint_f079_i10_d010 1.0", + "bbob-biobj-mixint_f079_i10_d020 1.0", + "bbob-biobj-mixint_f079_i10_d040 1.0", + "bbob-biobj-mixint_f079_i10_d080 1.0", + "bbob-biobj-mixint_f079_i10_d160 1.0", + "bbob-biobj-mixint_f079_i11_d005 1.0", + "bbob-biobj-mixint_f079_i11_d010 1.0", + "bbob-biobj-mixint_f079_i11_d020 1.0", + "bbob-biobj-mixint_f079_i11_d040 1.0", + "bbob-biobj-mixint_f079_i11_d080 1.0", + "bbob-biobj-mixint_f079_i11_d160 1.0", + "bbob-biobj-mixint_f079_i12_d005 1.0", + "bbob-biobj-mixint_f079_i12_d010 1.0", + "bbob-biobj-mixint_f079_i12_d020 1.0", + "bbob-biobj-mixint_f079_i12_d040 1.0", + "bbob-biobj-mixint_f079_i12_d080 1.0", + "bbob-biobj-mixint_f079_i12_d160 1.0", + "bbob-biobj-mixint_f079_i13_d005 1.0", + "bbob-biobj-mixint_f079_i13_d010 1.0", + "bbob-biobj-mixint_f079_i13_d020 1.0", + "bbob-biobj-mixint_f079_i13_d040 1.0", + "bbob-biobj-mixint_f079_i13_d080 1.0", + "bbob-biobj-mixint_f079_i13_d160 1.0", + "bbob-biobj-mixint_f079_i14_d005 1.0", + "bbob-biobj-mixint_f079_i14_d010 1.0", + "bbob-biobj-mixint_f079_i14_d020 1.0", + "bbob-biobj-mixint_f079_i14_d040 1.0", + "bbob-biobj-mixint_f079_i14_d080 1.0", + "bbob-biobj-mixint_f079_i14_d160 1.0", + "bbob-biobj-mixint_f079_i15_d005 1.0", + "bbob-biobj-mixint_f079_i15_d010 1.0", + "bbob-biobj-mixint_f079_i15_d020 1.0", + "bbob-biobj-mixint_f079_i15_d040 1.0", + "bbob-biobj-mixint_f079_i15_d080 1.0", + "bbob-biobj-mixint_f079_i15_d160 1.0", + "bbob-biobj-mixint_f080_i01_d005 1.0", + "bbob-biobj-mixint_f080_i01_d010 1.0", + "bbob-biobj-mixint_f080_i01_d020 1.0", + "bbob-biobj-mixint_f080_i01_d040 1.0", + "bbob-biobj-mixint_f080_i01_d080 1.0", + "bbob-biobj-mixint_f080_i01_d160 1.0", + "bbob-biobj-mixint_f080_i02_d005 1.0", + "bbob-biobj-mixint_f080_i02_d010 1.0", + "bbob-biobj-mixint_f080_i02_d020 1.0", + "bbob-biobj-mixint_f080_i02_d040 1.0", + "bbob-biobj-mixint_f080_i02_d080 1.0", + "bbob-biobj-mixint_f080_i02_d160 1.0", + "bbob-biobj-mixint_f080_i03_d005 1.0", + "bbob-biobj-mixint_f080_i03_d010 1.0", + "bbob-biobj-mixint_f080_i03_d020 1.0", + "bbob-biobj-mixint_f080_i03_d040 1.0", + "bbob-biobj-mixint_f080_i03_d080 1.0", + "bbob-biobj-mixint_f080_i03_d160 1.0", + "bbob-biobj-mixint_f080_i04_d005 1.0", + "bbob-biobj-mixint_f080_i04_d010 1.0", + "bbob-biobj-mixint_f080_i04_d020 1.0", + "bbob-biobj-mixint_f080_i04_d040 1.0", + "bbob-biobj-mixint_f080_i04_d080 1.0", + "bbob-biobj-mixint_f080_i04_d160 1.0", + "bbob-biobj-mixint_f080_i05_d005 1.0", + "bbob-biobj-mixint_f080_i05_d010 1.0", + "bbob-biobj-mixint_f080_i05_d020 1.0", + "bbob-biobj-mixint_f080_i05_d040 1.0", + "bbob-biobj-mixint_f080_i05_d080 1.0", + "bbob-biobj-mixint_f080_i05_d160 1.0", + "bbob-biobj-mixint_f080_i06_d005 1.0", + "bbob-biobj-mixint_f080_i06_d010 1.0", + "bbob-biobj-mixint_f080_i06_d020 1.0", + "bbob-biobj-mixint_f080_i06_d040 1.0", + "bbob-biobj-mixint_f080_i06_d080 1.0", + "bbob-biobj-mixint_f080_i06_d160 1.0", + "bbob-biobj-mixint_f080_i07_d005 1.0", + "bbob-biobj-mixint_f080_i07_d010 1.0", + "bbob-biobj-mixint_f080_i07_d020 1.0", + "bbob-biobj-mixint_f080_i07_d040 1.0", + "bbob-biobj-mixint_f080_i07_d080 1.0", + "bbob-biobj-mixint_f080_i07_d160 1.0", + "bbob-biobj-mixint_f080_i08_d005 1.0", + "bbob-biobj-mixint_f080_i08_d010 1.0", + "bbob-biobj-mixint_f080_i08_d020 1.0", + "bbob-biobj-mixint_f080_i08_d040 1.0", + "bbob-biobj-mixint_f080_i08_d080 1.0", + "bbob-biobj-mixint_f080_i08_d160 1.0", + "bbob-biobj-mixint_f080_i09_d005 1.0", + "bbob-biobj-mixint_f080_i09_d010 1.0", + "bbob-biobj-mixint_f080_i09_d020 1.0", + "bbob-biobj-mixint_f080_i09_d040 1.0", + "bbob-biobj-mixint_f080_i09_d080 1.0", + "bbob-biobj-mixint_f080_i09_d160 1.0", + "bbob-biobj-mixint_f080_i10_d005 1.0", + "bbob-biobj-mixint_f080_i10_d010 1.0", + "bbob-biobj-mixint_f080_i10_d020 1.0", + "bbob-biobj-mixint_f080_i10_d040 1.0", + "bbob-biobj-mixint_f080_i10_d080 1.0", + "bbob-biobj-mixint_f080_i10_d160 1.0", + "bbob-biobj-mixint_f080_i11_d005 1.0", + "bbob-biobj-mixint_f080_i11_d010 1.0", + "bbob-biobj-mixint_f080_i11_d020 1.0", + "bbob-biobj-mixint_f080_i11_d040 1.0", + "bbob-biobj-mixint_f080_i11_d080 1.0", + "bbob-biobj-mixint_f080_i11_d160 1.0", + "bbob-biobj-mixint_f080_i12_d005 1.0", + "bbob-biobj-mixint_f080_i12_d010 1.0", + "bbob-biobj-mixint_f080_i12_d020 1.0", + "bbob-biobj-mixint_f080_i12_d040 1.0", + "bbob-biobj-mixint_f080_i12_d080 1.0", + "bbob-biobj-mixint_f080_i12_d160 1.0", + "bbob-biobj-mixint_f080_i13_d005 1.0", + "bbob-biobj-mixint_f080_i13_d010 1.0", + "bbob-biobj-mixint_f080_i13_d020 1.0", + "bbob-biobj-mixint_f080_i13_d040 1.0", + "bbob-biobj-mixint_f080_i13_d080 1.0", + "bbob-biobj-mixint_f080_i13_d160 1.0", + "bbob-biobj-mixint_f080_i14_d005 1.0", + "bbob-biobj-mixint_f080_i14_d010 1.0", + "bbob-biobj-mixint_f080_i14_d020 1.0", + "bbob-biobj-mixint_f080_i14_d040 1.0", + "bbob-biobj-mixint_f080_i14_d080 1.0", + "bbob-biobj-mixint_f080_i14_d160 1.0", + "bbob-biobj-mixint_f080_i15_d005 1.0", + "bbob-biobj-mixint_f080_i15_d010 1.0", + "bbob-biobj-mixint_f080_i15_d020 1.0", + "bbob-biobj-mixint_f080_i15_d040 1.0", + "bbob-biobj-mixint_f080_i15_d080 1.0", + "bbob-biobj-mixint_f080_i15_d160 1.0", + "bbob-biobj-mixint_f081_i01_d005 1.0", + "bbob-biobj-mixint_f081_i01_d010 1.0", + "bbob-biobj-mixint_f081_i01_d020 1.0", + "bbob-biobj-mixint_f081_i01_d040 1.0", + "bbob-biobj-mixint_f081_i01_d080 1.0", + "bbob-biobj-mixint_f081_i01_d160 1.0", + "bbob-biobj-mixint_f081_i02_d005 1.0", + "bbob-biobj-mixint_f081_i02_d010 1.0", + "bbob-biobj-mixint_f081_i02_d020 1.0", + "bbob-biobj-mixint_f081_i02_d040 1.0", + "bbob-biobj-mixint_f081_i02_d080 1.0", + "bbob-biobj-mixint_f081_i02_d160 1.0", + "bbob-biobj-mixint_f081_i03_d005 1.0", + "bbob-biobj-mixint_f081_i03_d010 1.0", + "bbob-biobj-mixint_f081_i03_d020 1.0", + "bbob-biobj-mixint_f081_i03_d040 1.0", + "bbob-biobj-mixint_f081_i03_d080 1.0", + "bbob-biobj-mixint_f081_i03_d160 1.0", + "bbob-biobj-mixint_f081_i04_d005 1.0", + "bbob-biobj-mixint_f081_i04_d010 1.0", + "bbob-biobj-mixint_f081_i04_d020 1.0", + "bbob-biobj-mixint_f081_i04_d040 1.0", + "bbob-biobj-mixint_f081_i04_d080 1.0", + "bbob-biobj-mixint_f081_i04_d160 1.0", + "bbob-biobj-mixint_f081_i05_d005 1.0", + "bbob-biobj-mixint_f081_i05_d010 1.0", + "bbob-biobj-mixint_f081_i05_d020 1.0", + "bbob-biobj-mixint_f081_i05_d040 1.0", + "bbob-biobj-mixint_f081_i05_d080 1.0", + "bbob-biobj-mixint_f081_i05_d160 1.0", + "bbob-biobj-mixint_f081_i06_d005 1.0", + "bbob-biobj-mixint_f081_i06_d010 1.0", + "bbob-biobj-mixint_f081_i06_d020 1.0", + "bbob-biobj-mixint_f081_i06_d040 1.0", + "bbob-biobj-mixint_f081_i06_d080 1.0", + "bbob-biobj-mixint_f081_i06_d160 1.0", + "bbob-biobj-mixint_f081_i07_d005 1.0", + "bbob-biobj-mixint_f081_i07_d010 1.0", + "bbob-biobj-mixint_f081_i07_d020 1.0", + "bbob-biobj-mixint_f081_i07_d040 1.0", + "bbob-biobj-mixint_f081_i07_d080 1.0", + "bbob-biobj-mixint_f081_i07_d160 1.0", + "bbob-biobj-mixint_f081_i08_d005 1.0", + "bbob-biobj-mixint_f081_i08_d010 1.0", + "bbob-biobj-mixint_f081_i08_d020 1.0", + "bbob-biobj-mixint_f081_i08_d040 1.0", + "bbob-biobj-mixint_f081_i08_d080 1.0", + "bbob-biobj-mixint_f081_i08_d160 1.0", + "bbob-biobj-mixint_f081_i09_d005 1.0", + "bbob-biobj-mixint_f081_i09_d010 1.0", + "bbob-biobj-mixint_f081_i09_d020 1.0", + "bbob-biobj-mixint_f081_i09_d040 1.0", + "bbob-biobj-mixint_f081_i09_d080 1.0", + "bbob-biobj-mixint_f081_i09_d160 1.0", + "bbob-biobj-mixint_f081_i10_d005 1.0", + "bbob-biobj-mixint_f081_i10_d010 1.0", + "bbob-biobj-mixint_f081_i10_d020 1.0", + "bbob-biobj-mixint_f081_i10_d040 1.0", + "bbob-biobj-mixint_f081_i10_d080 1.0", + "bbob-biobj-mixint_f081_i10_d160 1.0", + "bbob-biobj-mixint_f081_i11_d005 1.0", + "bbob-biobj-mixint_f081_i11_d010 1.0", + "bbob-biobj-mixint_f081_i11_d020 1.0", + "bbob-biobj-mixint_f081_i11_d040 1.0", + "bbob-biobj-mixint_f081_i11_d080 1.0", + "bbob-biobj-mixint_f081_i11_d160 1.0", + "bbob-biobj-mixint_f081_i12_d005 1.0", + "bbob-biobj-mixint_f081_i12_d010 1.0", + "bbob-biobj-mixint_f081_i12_d020 1.0", + "bbob-biobj-mixint_f081_i12_d040 1.0", + "bbob-biobj-mixint_f081_i12_d080 1.0", + "bbob-biobj-mixint_f081_i12_d160 1.0", + "bbob-biobj-mixint_f081_i13_d005 1.0", + "bbob-biobj-mixint_f081_i13_d010 1.0", + "bbob-biobj-mixint_f081_i13_d020 1.0", + "bbob-biobj-mixint_f081_i13_d040 1.0", + "bbob-biobj-mixint_f081_i13_d080 1.0", + "bbob-biobj-mixint_f081_i13_d160 1.0", + "bbob-biobj-mixint_f081_i14_d005 1.0", + "bbob-biobj-mixint_f081_i14_d010 1.0", + "bbob-biobj-mixint_f081_i14_d020 1.0", + "bbob-biobj-mixint_f081_i14_d040 1.0", + "bbob-biobj-mixint_f081_i14_d080 1.0", + "bbob-biobj-mixint_f081_i14_d160 1.0", + "bbob-biobj-mixint_f081_i15_d005 1.0", + "bbob-biobj-mixint_f081_i15_d010 1.0", + "bbob-biobj-mixint_f081_i15_d020 1.0", + "bbob-biobj-mixint_f081_i15_d040 1.0", + "bbob-biobj-mixint_f081_i15_d080 1.0", + "bbob-biobj-mixint_f081_i15_d160 1.0", + "bbob-biobj-mixint_f082_i01_d005 1.0", + "bbob-biobj-mixint_f082_i01_d010 1.0", + "bbob-biobj-mixint_f082_i01_d020 1.0", + "bbob-biobj-mixint_f082_i01_d040 1.0", + "bbob-biobj-mixint_f082_i01_d080 1.0", + "bbob-biobj-mixint_f082_i01_d160 1.0", + "bbob-biobj-mixint_f082_i02_d005 1.0", + "bbob-biobj-mixint_f082_i02_d010 1.0", + "bbob-biobj-mixint_f082_i02_d020 1.0", + "bbob-biobj-mixint_f082_i02_d040 1.0", + "bbob-biobj-mixint_f082_i02_d080 1.0", + "bbob-biobj-mixint_f082_i02_d160 1.0", + "bbob-biobj-mixint_f082_i03_d005 1.0", + "bbob-biobj-mixint_f082_i03_d010 1.0", + "bbob-biobj-mixint_f082_i03_d020 1.0", + "bbob-biobj-mixint_f082_i03_d040 1.0", + "bbob-biobj-mixint_f082_i03_d080 1.0", + "bbob-biobj-mixint_f082_i03_d160 1.0", + "bbob-biobj-mixint_f082_i04_d005 1.0", + "bbob-biobj-mixint_f082_i04_d010 1.0", + "bbob-biobj-mixint_f082_i04_d020 1.0", + "bbob-biobj-mixint_f082_i04_d040 1.0", + "bbob-biobj-mixint_f082_i04_d080 1.0", + "bbob-biobj-mixint_f082_i04_d160 1.0", + "bbob-biobj-mixint_f082_i05_d005 1.0", + "bbob-biobj-mixint_f082_i05_d010 1.0", + "bbob-biobj-mixint_f082_i05_d020 1.0", + "bbob-biobj-mixint_f082_i05_d040 1.0", + "bbob-biobj-mixint_f082_i05_d080 1.0", + "bbob-biobj-mixint_f082_i05_d160 1.0", + "bbob-biobj-mixint_f082_i06_d005 1.0", + "bbob-biobj-mixint_f082_i06_d010 1.0", + "bbob-biobj-mixint_f082_i06_d020 1.0", + "bbob-biobj-mixint_f082_i06_d040 1.0", + "bbob-biobj-mixint_f082_i06_d080 1.0", + "bbob-biobj-mixint_f082_i06_d160 1.0", + "bbob-biobj-mixint_f082_i07_d005 1.0", + "bbob-biobj-mixint_f082_i07_d010 1.0", + "bbob-biobj-mixint_f082_i07_d020 1.0", + "bbob-biobj-mixint_f082_i07_d040 1.0", + "bbob-biobj-mixint_f082_i07_d080 1.0", + "bbob-biobj-mixint_f082_i07_d160 1.0", + "bbob-biobj-mixint_f082_i08_d005 1.0", + "bbob-biobj-mixint_f082_i08_d010 1.0", + "bbob-biobj-mixint_f082_i08_d020 1.0", + "bbob-biobj-mixint_f082_i08_d040 1.0", + "bbob-biobj-mixint_f082_i08_d080 1.0", + "bbob-biobj-mixint_f082_i08_d160 1.0", + "bbob-biobj-mixint_f082_i09_d005 1.0", + "bbob-biobj-mixint_f082_i09_d010 1.0", + "bbob-biobj-mixint_f082_i09_d020 1.0", + "bbob-biobj-mixint_f082_i09_d040 1.0", + "bbob-biobj-mixint_f082_i09_d080 1.0", + "bbob-biobj-mixint_f082_i09_d160 1.0", + "bbob-biobj-mixint_f082_i10_d005 1.0", + "bbob-biobj-mixint_f082_i10_d010 1.0", + "bbob-biobj-mixint_f082_i10_d020 1.0", + "bbob-biobj-mixint_f082_i10_d040 1.0", + "bbob-biobj-mixint_f082_i10_d080 1.0", + "bbob-biobj-mixint_f082_i10_d160 1.0", + "bbob-biobj-mixint_f082_i11_d005 1.0", + "bbob-biobj-mixint_f082_i11_d010 1.0", + "bbob-biobj-mixint_f082_i11_d020 1.0", + "bbob-biobj-mixint_f082_i11_d040 1.0", + "bbob-biobj-mixint_f082_i11_d080 1.0", + "bbob-biobj-mixint_f082_i11_d160 1.0", + "bbob-biobj-mixint_f082_i12_d005 1.0", + "bbob-biobj-mixint_f082_i12_d010 1.0", + "bbob-biobj-mixint_f082_i12_d020 1.0", + "bbob-biobj-mixint_f082_i12_d040 1.0", + "bbob-biobj-mixint_f082_i12_d080 1.0", + "bbob-biobj-mixint_f082_i12_d160 1.0", + "bbob-biobj-mixint_f082_i13_d005 1.0", + "bbob-biobj-mixint_f082_i13_d010 1.0", + "bbob-biobj-mixint_f082_i13_d020 1.0", + "bbob-biobj-mixint_f082_i13_d040 1.0", + "bbob-biobj-mixint_f082_i13_d080 1.0", + "bbob-biobj-mixint_f082_i13_d160 1.0", + "bbob-biobj-mixint_f082_i14_d005 1.0", + "bbob-biobj-mixint_f082_i14_d010 1.0", + "bbob-biobj-mixint_f082_i14_d020 1.0", + "bbob-biobj-mixint_f082_i14_d040 1.0", + "bbob-biobj-mixint_f082_i14_d080 1.0", + "bbob-biobj-mixint_f082_i14_d160 1.0", + "bbob-biobj-mixint_f082_i15_d005 1.0", + "bbob-biobj-mixint_f082_i15_d010 1.0", + "bbob-biobj-mixint_f082_i15_d020 1.0", + "bbob-biobj-mixint_f082_i15_d040 1.0", + "bbob-biobj-mixint_f082_i15_d080 1.0", + "bbob-biobj-mixint_f082_i15_d160 1.0", + "bbob-biobj-mixint_f083_i01_d005 1.0", + "bbob-biobj-mixint_f083_i01_d010 1.0", + "bbob-biobj-mixint_f083_i01_d020 1.0", + "bbob-biobj-mixint_f083_i01_d040 1.0", + "bbob-biobj-mixint_f083_i01_d080 1.0", + "bbob-biobj-mixint_f083_i01_d160 1.0", + "bbob-biobj-mixint_f083_i02_d005 1.0", + "bbob-biobj-mixint_f083_i02_d010 1.0", + "bbob-biobj-mixint_f083_i02_d020 1.0", + "bbob-biobj-mixint_f083_i02_d040 1.0", + "bbob-biobj-mixint_f083_i02_d080 1.0", + "bbob-biobj-mixint_f083_i02_d160 1.0", + "bbob-biobj-mixint_f083_i03_d005 1.0", + "bbob-biobj-mixint_f083_i03_d010 1.0", + "bbob-biobj-mixint_f083_i03_d020 1.0", + "bbob-biobj-mixint_f083_i03_d040 1.0", + "bbob-biobj-mixint_f083_i03_d080 1.0", + "bbob-biobj-mixint_f083_i03_d160 1.0", + "bbob-biobj-mixint_f083_i04_d005 1.0", + "bbob-biobj-mixint_f083_i04_d010 1.0", + "bbob-biobj-mixint_f083_i04_d020 1.0", + "bbob-biobj-mixint_f083_i04_d040 1.0", + "bbob-biobj-mixint_f083_i04_d080 1.0", + "bbob-biobj-mixint_f083_i04_d160 1.0", + "bbob-biobj-mixint_f083_i05_d005 1.0", + "bbob-biobj-mixint_f083_i05_d010 1.0", + "bbob-biobj-mixint_f083_i05_d020 1.0", + "bbob-biobj-mixint_f083_i05_d040 1.0", + "bbob-biobj-mixint_f083_i05_d080 1.0", + "bbob-biobj-mixint_f083_i05_d160 1.0", + "bbob-biobj-mixint_f083_i06_d005 1.0", + "bbob-biobj-mixint_f083_i06_d010 1.0", + "bbob-biobj-mixint_f083_i06_d020 1.0", + "bbob-biobj-mixint_f083_i06_d040 1.0", + "bbob-biobj-mixint_f083_i06_d080 1.0", + "bbob-biobj-mixint_f083_i06_d160 1.0", + "bbob-biobj-mixint_f083_i07_d005 1.0", + "bbob-biobj-mixint_f083_i07_d010 1.0", + "bbob-biobj-mixint_f083_i07_d020 1.0", + "bbob-biobj-mixint_f083_i07_d040 1.0", + "bbob-biobj-mixint_f083_i07_d080 1.0", + "bbob-biobj-mixint_f083_i07_d160 1.0", + "bbob-biobj-mixint_f083_i08_d005 1.0", + "bbob-biobj-mixint_f083_i08_d010 1.0", + "bbob-biobj-mixint_f083_i08_d020 1.0", + "bbob-biobj-mixint_f083_i08_d040 1.0", + "bbob-biobj-mixint_f083_i08_d080 1.0", + "bbob-biobj-mixint_f083_i08_d160 1.0", + "bbob-biobj-mixint_f083_i09_d005 1.0", + "bbob-biobj-mixint_f083_i09_d010 1.0", + "bbob-biobj-mixint_f083_i09_d020 1.0", + "bbob-biobj-mixint_f083_i09_d040 1.0", + "bbob-biobj-mixint_f083_i09_d080 1.0", + "bbob-biobj-mixint_f083_i09_d160 1.0", + "bbob-biobj-mixint_f083_i10_d005 1.0", + "bbob-biobj-mixint_f083_i10_d010 1.0", + "bbob-biobj-mixint_f083_i10_d020 1.0", + "bbob-biobj-mixint_f083_i10_d040 1.0", + "bbob-biobj-mixint_f083_i10_d080 1.0", + "bbob-biobj-mixint_f083_i10_d160 1.0", + "bbob-biobj-mixint_f083_i11_d005 1.0", + "bbob-biobj-mixint_f083_i11_d010 1.0", + "bbob-biobj-mixint_f083_i11_d020 1.0", + "bbob-biobj-mixint_f083_i11_d040 1.0", + "bbob-biobj-mixint_f083_i11_d080 1.0", + "bbob-biobj-mixint_f083_i11_d160 1.0", + "bbob-biobj-mixint_f083_i12_d005 1.0", + "bbob-biobj-mixint_f083_i12_d010 1.0", + "bbob-biobj-mixint_f083_i12_d020 1.0", + "bbob-biobj-mixint_f083_i12_d040 1.0", + "bbob-biobj-mixint_f083_i12_d080 1.0", + "bbob-biobj-mixint_f083_i12_d160 1.0", + "bbob-biobj-mixint_f083_i13_d005 1.0", + "bbob-biobj-mixint_f083_i13_d010 1.0", + "bbob-biobj-mixint_f083_i13_d020 1.0", + "bbob-biobj-mixint_f083_i13_d040 1.0", + "bbob-biobj-mixint_f083_i13_d080 1.0", + "bbob-biobj-mixint_f083_i13_d160 1.0", + "bbob-biobj-mixint_f083_i14_d005 1.0", + "bbob-biobj-mixint_f083_i14_d010 1.0", + "bbob-biobj-mixint_f083_i14_d020 1.0", + "bbob-biobj-mixint_f083_i14_d040 1.0", + "bbob-biobj-mixint_f083_i14_d080 1.0", + "bbob-biobj-mixint_f083_i14_d160 1.0", + "bbob-biobj-mixint_f083_i15_d005 1.0", + "bbob-biobj-mixint_f083_i15_d010 1.0", + "bbob-biobj-mixint_f083_i15_d020 1.0", + "bbob-biobj-mixint_f083_i15_d040 1.0", + "bbob-biobj-mixint_f083_i15_d080 1.0", + "bbob-biobj-mixint_f083_i15_d160 1.0", + "bbob-biobj-mixint_f084_i01_d005 1.0", + "bbob-biobj-mixint_f084_i01_d010 1.0", + "bbob-biobj-mixint_f084_i01_d020 1.0", + "bbob-biobj-mixint_f084_i01_d040 1.0", + "bbob-biobj-mixint_f084_i01_d080 1.0", + "bbob-biobj-mixint_f084_i01_d160 1.0", + "bbob-biobj-mixint_f084_i02_d005 1.0", + "bbob-biobj-mixint_f084_i02_d010 1.0", + "bbob-biobj-mixint_f084_i02_d020 1.0", + "bbob-biobj-mixint_f084_i02_d040 1.0", + "bbob-biobj-mixint_f084_i02_d080 1.0", + "bbob-biobj-mixint_f084_i02_d160 1.0", + "bbob-biobj-mixint_f084_i03_d005 1.0", + "bbob-biobj-mixint_f084_i03_d010 1.0", + "bbob-biobj-mixint_f084_i03_d020 1.0", + "bbob-biobj-mixint_f084_i03_d040 1.0", + "bbob-biobj-mixint_f084_i03_d080 1.0", + "bbob-biobj-mixint_f084_i03_d160 1.0", + "bbob-biobj-mixint_f084_i04_d005 1.0", + "bbob-biobj-mixint_f084_i04_d010 1.0", + "bbob-biobj-mixint_f084_i04_d020 1.0", + "bbob-biobj-mixint_f084_i04_d040 1.0", + "bbob-biobj-mixint_f084_i04_d080 1.0", + "bbob-biobj-mixint_f084_i04_d160 1.0", + "bbob-biobj-mixint_f084_i05_d005 1.0", + "bbob-biobj-mixint_f084_i05_d010 1.0", + "bbob-biobj-mixint_f084_i05_d020 1.0", + "bbob-biobj-mixint_f084_i05_d040 1.0", + "bbob-biobj-mixint_f084_i05_d080 1.0", + "bbob-biobj-mixint_f084_i05_d160 1.0", + "bbob-biobj-mixint_f084_i06_d005 1.0", + "bbob-biobj-mixint_f084_i06_d010 1.0", + "bbob-biobj-mixint_f084_i06_d020 1.0", + "bbob-biobj-mixint_f084_i06_d040 1.0", + "bbob-biobj-mixint_f084_i06_d080 1.0", + "bbob-biobj-mixint_f084_i06_d160 1.0", + "bbob-biobj-mixint_f084_i07_d005 1.0", + "bbob-biobj-mixint_f084_i07_d010 1.0", + "bbob-biobj-mixint_f084_i07_d020 1.0", + "bbob-biobj-mixint_f084_i07_d040 1.0", + "bbob-biobj-mixint_f084_i07_d080 1.0", + "bbob-biobj-mixint_f084_i07_d160 1.0", + "bbob-biobj-mixint_f084_i08_d005 1.0", + "bbob-biobj-mixint_f084_i08_d010 1.0", + "bbob-biobj-mixint_f084_i08_d020 1.0", + "bbob-biobj-mixint_f084_i08_d040 1.0", + "bbob-biobj-mixint_f084_i08_d080 1.0", + "bbob-biobj-mixint_f084_i08_d160 1.0", + "bbob-biobj-mixint_f084_i09_d005 1.0", + "bbob-biobj-mixint_f084_i09_d010 1.0", + "bbob-biobj-mixint_f084_i09_d020 1.0", + "bbob-biobj-mixint_f084_i09_d040 1.0", + "bbob-biobj-mixint_f084_i09_d080 1.0", + "bbob-biobj-mixint_f084_i09_d160 1.0", + "bbob-biobj-mixint_f084_i10_d005 1.0", + "bbob-biobj-mixint_f084_i10_d010 1.0", + "bbob-biobj-mixint_f084_i10_d020 1.0", + "bbob-biobj-mixint_f084_i10_d040 1.0", + "bbob-biobj-mixint_f084_i10_d080 1.0", + "bbob-biobj-mixint_f084_i10_d160 1.0", + "bbob-biobj-mixint_f084_i11_d005 1.0", + "bbob-biobj-mixint_f084_i11_d010 1.0", + "bbob-biobj-mixint_f084_i11_d020 1.0", + "bbob-biobj-mixint_f084_i11_d040 1.0", + "bbob-biobj-mixint_f084_i11_d080 1.0", + "bbob-biobj-mixint_f084_i11_d160 1.0", + "bbob-biobj-mixint_f084_i12_d005 1.0", + "bbob-biobj-mixint_f084_i12_d010 1.0", + "bbob-biobj-mixint_f084_i12_d020 1.0", + "bbob-biobj-mixint_f084_i12_d040 1.0", + "bbob-biobj-mixint_f084_i12_d080 1.0", + "bbob-biobj-mixint_f084_i12_d160 1.0", + "bbob-biobj-mixint_f084_i13_d005 1.0", + "bbob-biobj-mixint_f084_i13_d010 1.0", + "bbob-biobj-mixint_f084_i13_d020 1.0", + "bbob-biobj-mixint_f084_i13_d040 1.0", + "bbob-biobj-mixint_f084_i13_d080 1.0", + "bbob-biobj-mixint_f084_i13_d160 1.0", + "bbob-biobj-mixint_f084_i14_d005 1.0", + "bbob-biobj-mixint_f084_i14_d010 1.0", + "bbob-biobj-mixint_f084_i14_d020 1.0", + "bbob-biobj-mixint_f084_i14_d040 1.0", + "bbob-biobj-mixint_f084_i14_d080 1.0", + "bbob-biobj-mixint_f084_i14_d160 1.0", + "bbob-biobj-mixint_f084_i15_d005 1.0", + "bbob-biobj-mixint_f084_i15_d010 1.0", + "bbob-biobj-mixint_f084_i15_d020 1.0", + "bbob-biobj-mixint_f084_i15_d040 1.0", + "bbob-biobj-mixint_f084_i15_d080 1.0", + "bbob-biobj-mixint_f084_i15_d160 1.0", + "bbob-biobj-mixint_f085_i01_d005 1.0", + "bbob-biobj-mixint_f085_i01_d010 1.0", + "bbob-biobj-mixint_f085_i01_d020 1.0", + "bbob-biobj-mixint_f085_i01_d040 1.0", + "bbob-biobj-mixint_f085_i01_d080 1.0", + "bbob-biobj-mixint_f085_i01_d160 1.0", + "bbob-biobj-mixint_f085_i02_d005 1.0", + "bbob-biobj-mixint_f085_i02_d010 1.0", + "bbob-biobj-mixint_f085_i02_d020 1.0", + "bbob-biobj-mixint_f085_i02_d040 1.0", + "bbob-biobj-mixint_f085_i02_d080 1.0", + "bbob-biobj-mixint_f085_i02_d160 1.0", + "bbob-biobj-mixint_f085_i03_d005 1.0", + "bbob-biobj-mixint_f085_i03_d010 1.0", + "bbob-biobj-mixint_f085_i03_d020 1.0", + "bbob-biobj-mixint_f085_i03_d040 1.0", + "bbob-biobj-mixint_f085_i03_d080 1.0", + "bbob-biobj-mixint_f085_i03_d160 1.0", + "bbob-biobj-mixint_f085_i04_d005 1.0", + "bbob-biobj-mixint_f085_i04_d010 1.0", + "bbob-biobj-mixint_f085_i04_d020 1.0", + "bbob-biobj-mixint_f085_i04_d040 1.0", + "bbob-biobj-mixint_f085_i04_d080 1.0", + "bbob-biobj-mixint_f085_i04_d160 1.0", + "bbob-biobj-mixint_f085_i05_d005 1.0", + "bbob-biobj-mixint_f085_i05_d010 1.0", + "bbob-biobj-mixint_f085_i05_d020 1.0", + "bbob-biobj-mixint_f085_i05_d040 1.0", + "bbob-biobj-mixint_f085_i05_d080 1.0", + "bbob-biobj-mixint_f085_i05_d160 1.0", + "bbob-biobj-mixint_f085_i06_d005 1.0", + "bbob-biobj-mixint_f085_i06_d010 1.0", + "bbob-biobj-mixint_f085_i06_d020 1.0", + "bbob-biobj-mixint_f085_i06_d040 1.0", + "bbob-biobj-mixint_f085_i06_d080 1.0", + "bbob-biobj-mixint_f085_i06_d160 1.0", + "bbob-biobj-mixint_f085_i07_d005 1.0", + "bbob-biobj-mixint_f085_i07_d010 1.0", + "bbob-biobj-mixint_f085_i07_d020 1.0", + "bbob-biobj-mixint_f085_i07_d040 1.0", + "bbob-biobj-mixint_f085_i07_d080 1.0", + "bbob-biobj-mixint_f085_i07_d160 1.0", + "bbob-biobj-mixint_f085_i08_d005 1.0", + "bbob-biobj-mixint_f085_i08_d010 1.0", + "bbob-biobj-mixint_f085_i08_d020 1.0", + "bbob-biobj-mixint_f085_i08_d040 1.0", + "bbob-biobj-mixint_f085_i08_d080 1.0", + "bbob-biobj-mixint_f085_i08_d160 1.0", + "bbob-biobj-mixint_f085_i09_d005 1.0", + "bbob-biobj-mixint_f085_i09_d010 1.0", + "bbob-biobj-mixint_f085_i09_d020 1.0", + "bbob-biobj-mixint_f085_i09_d040 1.0", + "bbob-biobj-mixint_f085_i09_d080 1.0", + "bbob-biobj-mixint_f085_i09_d160 1.0", + "bbob-biobj-mixint_f085_i10_d005 1.0", + "bbob-biobj-mixint_f085_i10_d010 1.0", + "bbob-biobj-mixint_f085_i10_d020 1.0", + "bbob-biobj-mixint_f085_i10_d040 1.0", + "bbob-biobj-mixint_f085_i10_d080 1.0", + "bbob-biobj-mixint_f085_i10_d160 1.0", + "bbob-biobj-mixint_f085_i11_d005 1.0", + "bbob-biobj-mixint_f085_i11_d010 1.0", + "bbob-biobj-mixint_f085_i11_d020 1.0", + "bbob-biobj-mixint_f085_i11_d040 1.0", + "bbob-biobj-mixint_f085_i11_d080 1.0", + "bbob-biobj-mixint_f085_i11_d160 1.0", + "bbob-biobj-mixint_f085_i12_d005 1.0", + "bbob-biobj-mixint_f085_i12_d010 1.0", + "bbob-biobj-mixint_f085_i12_d020 1.0", + "bbob-biobj-mixint_f085_i12_d040 1.0", + "bbob-biobj-mixint_f085_i12_d080 1.0", + "bbob-biobj-mixint_f085_i12_d160 1.0", + "bbob-biobj-mixint_f085_i13_d005 1.0", + "bbob-biobj-mixint_f085_i13_d010 1.0", + "bbob-biobj-mixint_f085_i13_d020 1.0", + "bbob-biobj-mixint_f085_i13_d040 1.0", + "bbob-biobj-mixint_f085_i13_d080 1.0", + "bbob-biobj-mixint_f085_i13_d160 1.0", + "bbob-biobj-mixint_f085_i14_d005 1.0", + "bbob-biobj-mixint_f085_i14_d010 1.0", + "bbob-biobj-mixint_f085_i14_d020 1.0", + "bbob-biobj-mixint_f085_i14_d040 1.0", + "bbob-biobj-mixint_f085_i14_d080 1.0", + "bbob-biobj-mixint_f085_i14_d160 1.0", + "bbob-biobj-mixint_f085_i15_d005 1.0", + "bbob-biobj-mixint_f085_i15_d010 1.0", + "bbob-biobj-mixint_f085_i15_d020 1.0", + "bbob-biobj-mixint_f085_i15_d040 1.0", + "bbob-biobj-mixint_f085_i15_d080 1.0", + "bbob-biobj-mixint_f085_i15_d160 1.0", + "bbob-biobj-mixint_f086_i01_d005 1.0", + "bbob-biobj-mixint_f086_i01_d010 1.0", + "bbob-biobj-mixint_f086_i01_d020 1.0", + "bbob-biobj-mixint_f086_i01_d040 1.0", + "bbob-biobj-mixint_f086_i01_d080 1.0", + "bbob-biobj-mixint_f086_i01_d160 1.0", + "bbob-biobj-mixint_f086_i02_d005 1.0", + "bbob-biobj-mixint_f086_i02_d010 1.0", + "bbob-biobj-mixint_f086_i02_d020 1.0", + "bbob-biobj-mixint_f086_i02_d040 1.0", + "bbob-biobj-mixint_f086_i02_d080 1.0", + "bbob-biobj-mixint_f086_i02_d160 1.0", + "bbob-biobj-mixint_f086_i03_d005 1.0", + "bbob-biobj-mixint_f086_i03_d010 1.0", + "bbob-biobj-mixint_f086_i03_d020 1.0", + "bbob-biobj-mixint_f086_i03_d040 1.0", + "bbob-biobj-mixint_f086_i03_d080 1.0", + "bbob-biobj-mixint_f086_i03_d160 1.0", + "bbob-biobj-mixint_f086_i04_d005 1.0", + "bbob-biobj-mixint_f086_i04_d010 1.0", + "bbob-biobj-mixint_f086_i04_d020 1.0", + "bbob-biobj-mixint_f086_i04_d040 1.0", + "bbob-biobj-mixint_f086_i04_d080 1.0", + "bbob-biobj-mixint_f086_i04_d160 1.0", + "bbob-biobj-mixint_f086_i05_d005 1.0", + "bbob-biobj-mixint_f086_i05_d010 1.0", + "bbob-biobj-mixint_f086_i05_d020 1.0", + "bbob-biobj-mixint_f086_i05_d040 1.0", + "bbob-biobj-mixint_f086_i05_d080 1.0", + "bbob-biobj-mixint_f086_i05_d160 1.0", + "bbob-biobj-mixint_f086_i06_d005 1.0", + "bbob-biobj-mixint_f086_i06_d010 1.0", + "bbob-biobj-mixint_f086_i06_d020 1.0", + "bbob-biobj-mixint_f086_i06_d040 1.0", + "bbob-biobj-mixint_f086_i06_d080 1.0", + "bbob-biobj-mixint_f086_i06_d160 1.0", + "bbob-biobj-mixint_f086_i07_d005 1.0", + "bbob-biobj-mixint_f086_i07_d010 1.0", + "bbob-biobj-mixint_f086_i07_d020 1.0", + "bbob-biobj-mixint_f086_i07_d040 1.0", + "bbob-biobj-mixint_f086_i07_d080 1.0", + "bbob-biobj-mixint_f086_i07_d160 1.0", + "bbob-biobj-mixint_f086_i08_d005 1.0", + "bbob-biobj-mixint_f086_i08_d010 1.0", + "bbob-biobj-mixint_f086_i08_d020 1.0", + "bbob-biobj-mixint_f086_i08_d040 1.0", + "bbob-biobj-mixint_f086_i08_d080 1.0", + "bbob-biobj-mixint_f086_i08_d160 1.0", + "bbob-biobj-mixint_f086_i09_d005 1.0", + "bbob-biobj-mixint_f086_i09_d010 1.0", + "bbob-biobj-mixint_f086_i09_d020 1.0", + "bbob-biobj-mixint_f086_i09_d040 1.0", + "bbob-biobj-mixint_f086_i09_d080 1.0", + "bbob-biobj-mixint_f086_i09_d160 1.0", + "bbob-biobj-mixint_f086_i10_d005 1.0", + "bbob-biobj-mixint_f086_i10_d010 1.0", + "bbob-biobj-mixint_f086_i10_d020 1.0", + "bbob-biobj-mixint_f086_i10_d040 1.0", + "bbob-biobj-mixint_f086_i10_d080 1.0", + "bbob-biobj-mixint_f086_i10_d160 1.0", + "bbob-biobj-mixint_f086_i11_d005 1.0", + "bbob-biobj-mixint_f086_i11_d010 1.0", + "bbob-biobj-mixint_f086_i11_d020 1.0", + "bbob-biobj-mixint_f086_i11_d040 1.0", + "bbob-biobj-mixint_f086_i11_d080 1.0", + "bbob-biobj-mixint_f086_i11_d160 1.0", + "bbob-biobj-mixint_f086_i12_d005 1.0", + "bbob-biobj-mixint_f086_i12_d010 1.0", + "bbob-biobj-mixint_f086_i12_d020 1.0", + "bbob-biobj-mixint_f086_i12_d040 1.0", + "bbob-biobj-mixint_f086_i12_d080 1.0", + "bbob-biobj-mixint_f086_i12_d160 1.0", + "bbob-biobj-mixint_f086_i13_d005 1.0", + "bbob-biobj-mixint_f086_i13_d010 1.0", + "bbob-biobj-mixint_f086_i13_d020 1.0", + "bbob-biobj-mixint_f086_i13_d040 1.0", + "bbob-biobj-mixint_f086_i13_d080 1.0", + "bbob-biobj-mixint_f086_i13_d160 1.0", + "bbob-biobj-mixint_f086_i14_d005 1.0", + "bbob-biobj-mixint_f086_i14_d010 1.0", + "bbob-biobj-mixint_f086_i14_d020 1.0", + "bbob-biobj-mixint_f086_i14_d040 1.0", + "bbob-biobj-mixint_f086_i14_d080 1.0", + "bbob-biobj-mixint_f086_i14_d160 1.0", + "bbob-biobj-mixint_f086_i15_d005 1.0", + "bbob-biobj-mixint_f086_i15_d010 1.0", + "bbob-biobj-mixint_f086_i15_d020 1.0", + "bbob-biobj-mixint_f086_i15_d040 1.0", + "bbob-biobj-mixint_f086_i15_d080 1.0", + "bbob-biobj-mixint_f086_i15_d160 1.0", + "bbob-biobj-mixint_f087_i01_d005 1.0", + "bbob-biobj-mixint_f087_i01_d010 1.0", + "bbob-biobj-mixint_f087_i01_d020 1.0", + "bbob-biobj-mixint_f087_i01_d040 1.0", + "bbob-biobj-mixint_f087_i01_d080 1.0", + "bbob-biobj-mixint_f087_i01_d160 1.0", + "bbob-biobj-mixint_f087_i02_d005 1.0", + "bbob-biobj-mixint_f087_i02_d010 1.0", + "bbob-biobj-mixint_f087_i02_d020 1.0", + "bbob-biobj-mixint_f087_i02_d040 1.0", + "bbob-biobj-mixint_f087_i02_d080 1.0", + "bbob-biobj-mixint_f087_i02_d160 1.0", + "bbob-biobj-mixint_f087_i03_d005 1.0", + "bbob-biobj-mixint_f087_i03_d010 1.0", + "bbob-biobj-mixint_f087_i03_d020 1.0", + "bbob-biobj-mixint_f087_i03_d040 1.0", + "bbob-biobj-mixint_f087_i03_d080 1.0", + "bbob-biobj-mixint_f087_i03_d160 1.0", + "bbob-biobj-mixint_f087_i04_d005 1.0", + "bbob-biobj-mixint_f087_i04_d010 1.0", + "bbob-biobj-mixint_f087_i04_d020 1.0", + "bbob-biobj-mixint_f087_i04_d040 1.0", + "bbob-biobj-mixint_f087_i04_d080 1.0", + "bbob-biobj-mixint_f087_i04_d160 1.0", + "bbob-biobj-mixint_f087_i05_d005 1.0", + "bbob-biobj-mixint_f087_i05_d010 1.0", + "bbob-biobj-mixint_f087_i05_d020 1.0", + "bbob-biobj-mixint_f087_i05_d040 1.0", + "bbob-biobj-mixint_f087_i05_d080 1.0", + "bbob-biobj-mixint_f087_i05_d160 1.0", + "bbob-biobj-mixint_f087_i06_d005 1.0", + "bbob-biobj-mixint_f087_i06_d010 1.0", + "bbob-biobj-mixint_f087_i06_d020 1.0", + "bbob-biobj-mixint_f087_i06_d040 1.0", + "bbob-biobj-mixint_f087_i06_d080 1.0", + "bbob-biobj-mixint_f087_i06_d160 1.0", + "bbob-biobj-mixint_f087_i07_d005 1.0", + "bbob-biobj-mixint_f087_i07_d010 1.0", + "bbob-biobj-mixint_f087_i07_d020 1.0", + "bbob-biobj-mixint_f087_i07_d040 1.0", + "bbob-biobj-mixint_f087_i07_d080 1.0", + "bbob-biobj-mixint_f087_i07_d160 1.0", + "bbob-biobj-mixint_f087_i08_d005 1.0", + "bbob-biobj-mixint_f087_i08_d010 1.0", + "bbob-biobj-mixint_f087_i08_d020 1.0", + "bbob-biobj-mixint_f087_i08_d040 1.0", + "bbob-biobj-mixint_f087_i08_d080 1.0", + "bbob-biobj-mixint_f087_i08_d160 1.0", + "bbob-biobj-mixint_f087_i09_d005 1.0", + "bbob-biobj-mixint_f087_i09_d010 1.0", + "bbob-biobj-mixint_f087_i09_d020 1.0", + "bbob-biobj-mixint_f087_i09_d040 1.0", + "bbob-biobj-mixint_f087_i09_d080 1.0", + "bbob-biobj-mixint_f087_i09_d160 1.0", + "bbob-biobj-mixint_f087_i10_d005 1.0", + "bbob-biobj-mixint_f087_i10_d010 1.0", + "bbob-biobj-mixint_f087_i10_d020 1.0", + "bbob-biobj-mixint_f087_i10_d040 1.0", + "bbob-biobj-mixint_f087_i10_d080 1.0", + "bbob-biobj-mixint_f087_i10_d160 1.0", + "bbob-biobj-mixint_f087_i11_d005 1.0", + "bbob-biobj-mixint_f087_i11_d010 1.0", + "bbob-biobj-mixint_f087_i11_d020 1.0", + "bbob-biobj-mixint_f087_i11_d040 1.0", + "bbob-biobj-mixint_f087_i11_d080 1.0", + "bbob-biobj-mixint_f087_i11_d160 1.0", + "bbob-biobj-mixint_f087_i12_d005 1.0", + "bbob-biobj-mixint_f087_i12_d010 1.0", + "bbob-biobj-mixint_f087_i12_d020 1.0", + "bbob-biobj-mixint_f087_i12_d040 1.0", + "bbob-biobj-mixint_f087_i12_d080 1.0", + "bbob-biobj-mixint_f087_i12_d160 1.0", + "bbob-biobj-mixint_f087_i13_d005 1.0", + "bbob-biobj-mixint_f087_i13_d010 1.0", + "bbob-biobj-mixint_f087_i13_d020 1.0", + "bbob-biobj-mixint_f087_i13_d040 1.0", + "bbob-biobj-mixint_f087_i13_d080 1.0", + "bbob-biobj-mixint_f087_i13_d160 1.0", + "bbob-biobj-mixint_f087_i14_d005 1.0", + "bbob-biobj-mixint_f087_i14_d010 1.0", + "bbob-biobj-mixint_f087_i14_d020 1.0", + "bbob-biobj-mixint_f087_i14_d040 1.0", + "bbob-biobj-mixint_f087_i14_d080 1.0", + "bbob-biobj-mixint_f087_i14_d160 1.0", + "bbob-biobj-mixint_f087_i15_d005 1.0", + "bbob-biobj-mixint_f087_i15_d010 1.0", + "bbob-biobj-mixint_f087_i15_d020 1.0", + "bbob-biobj-mixint_f087_i15_d040 1.0", + "bbob-biobj-mixint_f087_i15_d080 1.0", + "bbob-biobj-mixint_f087_i15_d160 1.0", + "bbob-biobj-mixint_f088_i01_d005 1.0", + "bbob-biobj-mixint_f088_i01_d010 1.0", + "bbob-biobj-mixint_f088_i01_d020 1.0", + "bbob-biobj-mixint_f088_i01_d040 1.0", + "bbob-biobj-mixint_f088_i01_d080 1.0", + "bbob-biobj-mixint_f088_i01_d160 1.0", + "bbob-biobj-mixint_f088_i02_d005 1.0", + "bbob-biobj-mixint_f088_i02_d010 1.0", + "bbob-biobj-mixint_f088_i02_d020 1.0", + "bbob-biobj-mixint_f088_i02_d040 1.0", + "bbob-biobj-mixint_f088_i02_d080 1.0", + "bbob-biobj-mixint_f088_i02_d160 1.0", + "bbob-biobj-mixint_f088_i03_d005 1.0", + "bbob-biobj-mixint_f088_i03_d010 1.0", + "bbob-biobj-mixint_f088_i03_d020 1.0", + "bbob-biobj-mixint_f088_i03_d040 1.0", + "bbob-biobj-mixint_f088_i03_d080 1.0", + "bbob-biobj-mixint_f088_i03_d160 1.0", + "bbob-biobj-mixint_f088_i04_d005 1.0", + "bbob-biobj-mixint_f088_i04_d010 1.0", + "bbob-biobj-mixint_f088_i04_d020 1.0", + "bbob-biobj-mixint_f088_i04_d040 1.0", + "bbob-biobj-mixint_f088_i04_d080 1.0", + "bbob-biobj-mixint_f088_i04_d160 1.0", + "bbob-biobj-mixint_f088_i05_d005 1.0", + "bbob-biobj-mixint_f088_i05_d010 1.0", + "bbob-biobj-mixint_f088_i05_d020 1.0", + "bbob-biobj-mixint_f088_i05_d040 1.0", + "bbob-biobj-mixint_f088_i05_d080 1.0", + "bbob-biobj-mixint_f088_i05_d160 1.0", + "bbob-biobj-mixint_f088_i06_d005 1.0", + "bbob-biobj-mixint_f088_i06_d010 1.0", + "bbob-biobj-mixint_f088_i06_d020 1.0", + "bbob-biobj-mixint_f088_i06_d040 1.0", + "bbob-biobj-mixint_f088_i06_d080 1.0", + "bbob-biobj-mixint_f088_i06_d160 1.0", + "bbob-biobj-mixint_f088_i07_d005 1.0", + "bbob-biobj-mixint_f088_i07_d010 1.0", + "bbob-biobj-mixint_f088_i07_d020 1.0", + "bbob-biobj-mixint_f088_i07_d040 1.0", + "bbob-biobj-mixint_f088_i07_d080 1.0", + "bbob-biobj-mixint_f088_i07_d160 1.0", + "bbob-biobj-mixint_f088_i08_d005 1.0", + "bbob-biobj-mixint_f088_i08_d010 1.0", + "bbob-biobj-mixint_f088_i08_d020 1.0", + "bbob-biobj-mixint_f088_i08_d040 1.0", + "bbob-biobj-mixint_f088_i08_d080 1.0", + "bbob-biobj-mixint_f088_i08_d160 1.0", + "bbob-biobj-mixint_f088_i09_d005 1.0", + "bbob-biobj-mixint_f088_i09_d010 1.0", + "bbob-biobj-mixint_f088_i09_d020 1.0", + "bbob-biobj-mixint_f088_i09_d040 1.0", + "bbob-biobj-mixint_f088_i09_d080 1.0", + "bbob-biobj-mixint_f088_i09_d160 1.0", + "bbob-biobj-mixint_f088_i10_d005 1.0", + "bbob-biobj-mixint_f088_i10_d010 1.0", + "bbob-biobj-mixint_f088_i10_d020 1.0", + "bbob-biobj-mixint_f088_i10_d040 1.0", + "bbob-biobj-mixint_f088_i10_d080 1.0", + "bbob-biobj-mixint_f088_i10_d160 1.0", + "bbob-biobj-mixint_f088_i11_d005 1.0", + "bbob-biobj-mixint_f088_i11_d010 1.0", + "bbob-biobj-mixint_f088_i11_d020 1.0", + "bbob-biobj-mixint_f088_i11_d040 1.0", + "bbob-biobj-mixint_f088_i11_d080 1.0", + "bbob-biobj-mixint_f088_i11_d160 1.0", + "bbob-biobj-mixint_f088_i12_d005 1.0", + "bbob-biobj-mixint_f088_i12_d010 1.0", + "bbob-biobj-mixint_f088_i12_d020 1.0", + "bbob-biobj-mixint_f088_i12_d040 1.0", + "bbob-biobj-mixint_f088_i12_d080 1.0", + "bbob-biobj-mixint_f088_i12_d160 1.0", + "bbob-biobj-mixint_f088_i13_d005 1.0", + "bbob-biobj-mixint_f088_i13_d010 1.0", + "bbob-biobj-mixint_f088_i13_d020 1.0", + "bbob-biobj-mixint_f088_i13_d040 1.0", + "bbob-biobj-mixint_f088_i13_d080 1.0", + "bbob-biobj-mixint_f088_i13_d160 1.0", + "bbob-biobj-mixint_f088_i14_d005 1.0", + "bbob-biobj-mixint_f088_i14_d010 1.0", + "bbob-biobj-mixint_f088_i14_d020 1.0", + "bbob-biobj-mixint_f088_i14_d040 1.0", + "bbob-biobj-mixint_f088_i14_d080 1.0", + "bbob-biobj-mixint_f088_i14_d160 1.0", + "bbob-biobj-mixint_f088_i15_d005 1.0", + "bbob-biobj-mixint_f088_i15_d010 1.0", + "bbob-biobj-mixint_f088_i15_d020 1.0", + "bbob-biobj-mixint_f088_i15_d040 1.0", + "bbob-biobj-mixint_f088_i15_d080 1.0", + "bbob-biobj-mixint_f088_i15_d160 1.0", + "bbob-biobj-mixint_f089_i01_d005 1.0", + "bbob-biobj-mixint_f089_i01_d010 1.0", + "bbob-biobj-mixint_f089_i01_d020 1.0", + "bbob-biobj-mixint_f089_i01_d040 1.0", + "bbob-biobj-mixint_f089_i01_d080 1.0", + "bbob-biobj-mixint_f089_i01_d160 1.0", + "bbob-biobj-mixint_f089_i02_d005 1.0", + "bbob-biobj-mixint_f089_i02_d010 1.0", + "bbob-biobj-mixint_f089_i02_d020 1.0", + "bbob-biobj-mixint_f089_i02_d040 1.0", + "bbob-biobj-mixint_f089_i02_d080 1.0", + "bbob-biobj-mixint_f089_i02_d160 1.0", + "bbob-biobj-mixint_f089_i03_d005 1.0", + "bbob-biobj-mixint_f089_i03_d010 1.0", + "bbob-biobj-mixint_f089_i03_d020 1.0", + "bbob-biobj-mixint_f089_i03_d040 1.0", + "bbob-biobj-mixint_f089_i03_d080 1.0", + "bbob-biobj-mixint_f089_i03_d160 1.0", + "bbob-biobj-mixint_f089_i04_d005 1.0", + "bbob-biobj-mixint_f089_i04_d010 1.0", + "bbob-biobj-mixint_f089_i04_d020 1.0", + "bbob-biobj-mixint_f089_i04_d040 1.0", + "bbob-biobj-mixint_f089_i04_d080 1.0", + "bbob-biobj-mixint_f089_i04_d160 1.0", + "bbob-biobj-mixint_f089_i05_d005 1.0", + "bbob-biobj-mixint_f089_i05_d010 1.0", + "bbob-biobj-mixint_f089_i05_d020 1.0", + "bbob-biobj-mixint_f089_i05_d040 1.0", + "bbob-biobj-mixint_f089_i05_d080 1.0", + "bbob-biobj-mixint_f089_i05_d160 1.0", + "bbob-biobj-mixint_f089_i06_d005 1.0", + "bbob-biobj-mixint_f089_i06_d010 1.0", + "bbob-biobj-mixint_f089_i06_d020 1.0", + "bbob-biobj-mixint_f089_i06_d040 1.0", + "bbob-biobj-mixint_f089_i06_d080 1.0", + "bbob-biobj-mixint_f089_i06_d160 1.0", + "bbob-biobj-mixint_f089_i07_d005 1.0", + "bbob-biobj-mixint_f089_i07_d010 1.0", + "bbob-biobj-mixint_f089_i07_d020 1.0", + "bbob-biobj-mixint_f089_i07_d040 1.0", + "bbob-biobj-mixint_f089_i07_d080 1.0", + "bbob-biobj-mixint_f089_i07_d160 1.0", + "bbob-biobj-mixint_f089_i08_d005 1.0", + "bbob-biobj-mixint_f089_i08_d010 1.0", + "bbob-biobj-mixint_f089_i08_d020 1.0", + "bbob-biobj-mixint_f089_i08_d040 1.0", + "bbob-biobj-mixint_f089_i08_d080 1.0", + "bbob-biobj-mixint_f089_i08_d160 1.0", + "bbob-biobj-mixint_f089_i09_d005 1.0", + "bbob-biobj-mixint_f089_i09_d010 1.0", + "bbob-biobj-mixint_f089_i09_d020 1.0", + "bbob-biobj-mixint_f089_i09_d040 1.0", + "bbob-biobj-mixint_f089_i09_d080 1.0", + "bbob-biobj-mixint_f089_i09_d160 1.0", + "bbob-biobj-mixint_f089_i10_d005 1.0", + "bbob-biobj-mixint_f089_i10_d010 1.0", + "bbob-biobj-mixint_f089_i10_d020 1.0", + "bbob-biobj-mixint_f089_i10_d040 1.0", + "bbob-biobj-mixint_f089_i10_d080 1.0", + "bbob-biobj-mixint_f089_i10_d160 1.0", + "bbob-biobj-mixint_f089_i11_d005 1.0", + "bbob-biobj-mixint_f089_i11_d010 1.0", + "bbob-biobj-mixint_f089_i11_d020 1.0", + "bbob-biobj-mixint_f089_i11_d040 1.0", + "bbob-biobj-mixint_f089_i11_d080 1.0", + "bbob-biobj-mixint_f089_i11_d160 1.0", + "bbob-biobj-mixint_f089_i12_d005 1.0", + "bbob-biobj-mixint_f089_i12_d010 1.0", + "bbob-biobj-mixint_f089_i12_d020 1.0", + "bbob-biobj-mixint_f089_i12_d040 1.0", + "bbob-biobj-mixint_f089_i12_d080 1.0", + "bbob-biobj-mixint_f089_i12_d160 1.0", + "bbob-biobj-mixint_f089_i13_d005 1.0", + "bbob-biobj-mixint_f089_i13_d010 1.0", + "bbob-biobj-mixint_f089_i13_d020 1.0", + "bbob-biobj-mixint_f089_i13_d040 1.0", + "bbob-biobj-mixint_f089_i13_d080 1.0", + "bbob-biobj-mixint_f089_i13_d160 1.0", + "bbob-biobj-mixint_f089_i14_d005 1.0", + "bbob-biobj-mixint_f089_i14_d010 1.0", + "bbob-biobj-mixint_f089_i14_d020 1.0", + "bbob-biobj-mixint_f089_i14_d040 1.0", + "bbob-biobj-mixint_f089_i14_d080 1.0", + "bbob-biobj-mixint_f089_i14_d160 1.0", + "bbob-biobj-mixint_f089_i15_d005 1.0", + "bbob-biobj-mixint_f089_i15_d010 1.0", + "bbob-biobj-mixint_f089_i15_d020 1.0", + "bbob-biobj-mixint_f089_i15_d040 1.0", + "bbob-biobj-mixint_f089_i15_d080 1.0", + "bbob-biobj-mixint_f089_i15_d160 1.0", + "bbob-biobj-mixint_f090_i01_d005 1.0", + "bbob-biobj-mixint_f090_i01_d010 1.0", + "bbob-biobj-mixint_f090_i01_d020 1.0", + "bbob-biobj-mixint_f090_i01_d040 1.0", + "bbob-biobj-mixint_f090_i01_d080 1.0", + "bbob-biobj-mixint_f090_i01_d160 1.0", + "bbob-biobj-mixint_f090_i02_d005 1.0", + "bbob-biobj-mixint_f090_i02_d010 1.0", + "bbob-biobj-mixint_f090_i02_d020 1.0", + "bbob-biobj-mixint_f090_i02_d040 1.0", + "bbob-biobj-mixint_f090_i02_d080 1.0", + "bbob-biobj-mixint_f090_i02_d160 1.0", + "bbob-biobj-mixint_f090_i03_d005 1.0", + "bbob-biobj-mixint_f090_i03_d010 1.0", + "bbob-biobj-mixint_f090_i03_d020 1.0", + "bbob-biobj-mixint_f090_i03_d040 1.0", + "bbob-biobj-mixint_f090_i03_d080 1.0", + "bbob-biobj-mixint_f090_i03_d160 1.0", + "bbob-biobj-mixint_f090_i04_d005 1.0", + "bbob-biobj-mixint_f090_i04_d010 1.0", + "bbob-biobj-mixint_f090_i04_d020 1.0", + "bbob-biobj-mixint_f090_i04_d040 1.0", + "bbob-biobj-mixint_f090_i04_d080 1.0", + "bbob-biobj-mixint_f090_i04_d160 1.0", + "bbob-biobj-mixint_f090_i05_d005 1.0", + "bbob-biobj-mixint_f090_i05_d010 1.0", + "bbob-biobj-mixint_f090_i05_d020 1.0", + "bbob-biobj-mixint_f090_i05_d040 1.0", + "bbob-biobj-mixint_f090_i05_d080 1.0", + "bbob-biobj-mixint_f090_i05_d160 1.0", + "bbob-biobj-mixint_f090_i06_d005 1.0", + "bbob-biobj-mixint_f090_i06_d010 1.0", + "bbob-biobj-mixint_f090_i06_d020 1.0", + "bbob-biobj-mixint_f090_i06_d040 1.0", + "bbob-biobj-mixint_f090_i06_d080 1.0", + "bbob-biobj-mixint_f090_i06_d160 1.0", + "bbob-biobj-mixint_f090_i07_d005 1.0", + "bbob-biobj-mixint_f090_i07_d010 1.0", + "bbob-biobj-mixint_f090_i07_d020 1.0", + "bbob-biobj-mixint_f090_i07_d040 1.0", + "bbob-biobj-mixint_f090_i07_d080 1.0", + "bbob-biobj-mixint_f090_i07_d160 1.0", + "bbob-biobj-mixint_f090_i08_d005 1.0", + "bbob-biobj-mixint_f090_i08_d010 1.0", + "bbob-biobj-mixint_f090_i08_d020 1.0", + "bbob-biobj-mixint_f090_i08_d040 1.0", + "bbob-biobj-mixint_f090_i08_d080 1.0", + "bbob-biobj-mixint_f090_i08_d160 1.0", + "bbob-biobj-mixint_f090_i09_d005 1.0", + "bbob-biobj-mixint_f090_i09_d010 1.0", + "bbob-biobj-mixint_f090_i09_d020 1.0", + "bbob-biobj-mixint_f090_i09_d040 1.0", + "bbob-biobj-mixint_f090_i09_d080 1.0", + "bbob-biobj-mixint_f090_i09_d160 1.0", + "bbob-biobj-mixint_f090_i10_d005 1.0", + "bbob-biobj-mixint_f090_i10_d010 1.0", + "bbob-biobj-mixint_f090_i10_d020 1.0", + "bbob-biobj-mixint_f090_i10_d040 1.0", + "bbob-biobj-mixint_f090_i10_d080 1.0", + "bbob-biobj-mixint_f090_i10_d160 1.0", + "bbob-biobj-mixint_f090_i11_d005 1.0", + "bbob-biobj-mixint_f090_i11_d010 1.0", + "bbob-biobj-mixint_f090_i11_d020 1.0", + "bbob-biobj-mixint_f090_i11_d040 1.0", + "bbob-biobj-mixint_f090_i11_d080 1.0", + "bbob-biobj-mixint_f090_i11_d160 1.0", + "bbob-biobj-mixint_f090_i12_d005 1.0", + "bbob-biobj-mixint_f090_i12_d010 1.0", + "bbob-biobj-mixint_f090_i12_d020 1.0", + "bbob-biobj-mixint_f090_i12_d040 1.0", + "bbob-biobj-mixint_f090_i12_d080 1.0", + "bbob-biobj-mixint_f090_i12_d160 1.0", + "bbob-biobj-mixint_f090_i13_d005 1.0", + "bbob-biobj-mixint_f090_i13_d010 1.0", + "bbob-biobj-mixint_f090_i13_d020 1.0", + "bbob-biobj-mixint_f090_i13_d040 1.0", + "bbob-biobj-mixint_f090_i13_d080 1.0", + "bbob-biobj-mixint_f090_i13_d160 1.0", + "bbob-biobj-mixint_f090_i14_d005 1.0", + "bbob-biobj-mixint_f090_i14_d010 1.0", + "bbob-biobj-mixint_f090_i14_d020 1.0", + "bbob-biobj-mixint_f090_i14_d040 1.0", + "bbob-biobj-mixint_f090_i14_d080 1.0", + "bbob-biobj-mixint_f090_i14_d160 1.0", + "bbob-biobj-mixint_f090_i15_d005 1.0", + "bbob-biobj-mixint_f090_i15_d010 1.0", + "bbob-biobj-mixint_f090_i15_d020 1.0", + "bbob-biobj-mixint_f090_i15_d040 1.0", + "bbob-biobj-mixint_f090_i15_d080 1.0", + "bbob-biobj-mixint_f090_i15_d160 1.0", + "bbob-biobj-mixint_f091_i01_d005 1.0", + "bbob-biobj-mixint_f091_i01_d010 1.0", + "bbob-biobj-mixint_f091_i01_d020 1.0", + "bbob-biobj-mixint_f091_i01_d040 1.0", + "bbob-biobj-mixint_f091_i01_d080 1.0", + "bbob-biobj-mixint_f091_i01_d160 1.0", + "bbob-biobj-mixint_f091_i02_d005 1.0", + "bbob-biobj-mixint_f091_i02_d010 1.0", + "bbob-biobj-mixint_f091_i02_d020 1.0", + "bbob-biobj-mixint_f091_i02_d040 1.0", + "bbob-biobj-mixint_f091_i02_d080 1.0", + "bbob-biobj-mixint_f091_i02_d160 1.0", + "bbob-biobj-mixint_f091_i03_d005 1.0", + "bbob-biobj-mixint_f091_i03_d010 1.0", + "bbob-biobj-mixint_f091_i03_d020 1.0", + "bbob-biobj-mixint_f091_i03_d040 1.0", + "bbob-biobj-mixint_f091_i03_d080 1.0", + "bbob-biobj-mixint_f091_i03_d160 1.0", + "bbob-biobj-mixint_f091_i04_d005 1.0", + "bbob-biobj-mixint_f091_i04_d010 1.0", + "bbob-biobj-mixint_f091_i04_d020 1.0", + "bbob-biobj-mixint_f091_i04_d040 1.0", + "bbob-biobj-mixint_f091_i04_d080 1.0", + "bbob-biobj-mixint_f091_i04_d160 1.0", + "bbob-biobj-mixint_f091_i05_d005 1.0", + "bbob-biobj-mixint_f091_i05_d010 1.0", + "bbob-biobj-mixint_f091_i05_d020 1.0", + "bbob-biobj-mixint_f091_i05_d040 1.0", + "bbob-biobj-mixint_f091_i05_d080 1.0", + "bbob-biobj-mixint_f091_i05_d160 1.0", + "bbob-biobj-mixint_f091_i06_d005 1.0", + "bbob-biobj-mixint_f091_i06_d010 1.0", + "bbob-biobj-mixint_f091_i06_d020 1.0", + "bbob-biobj-mixint_f091_i06_d040 1.0", + "bbob-biobj-mixint_f091_i06_d080 1.0", + "bbob-biobj-mixint_f091_i06_d160 1.0", + "bbob-biobj-mixint_f091_i07_d005 1.0", + "bbob-biobj-mixint_f091_i07_d010 1.0", + "bbob-biobj-mixint_f091_i07_d020 1.0", + "bbob-biobj-mixint_f091_i07_d040 1.0", + "bbob-biobj-mixint_f091_i07_d080 1.0", + "bbob-biobj-mixint_f091_i07_d160 1.0", + "bbob-biobj-mixint_f091_i08_d005 1.0", + "bbob-biobj-mixint_f091_i08_d010 1.0", + "bbob-biobj-mixint_f091_i08_d020 1.0", + "bbob-biobj-mixint_f091_i08_d040 1.0", + "bbob-biobj-mixint_f091_i08_d080 1.0", + "bbob-biobj-mixint_f091_i08_d160 1.0", + "bbob-biobj-mixint_f091_i09_d005 1.0", + "bbob-biobj-mixint_f091_i09_d010 1.0", + "bbob-biobj-mixint_f091_i09_d020 1.0", + "bbob-biobj-mixint_f091_i09_d040 1.0", + "bbob-biobj-mixint_f091_i09_d080 1.0", + "bbob-biobj-mixint_f091_i09_d160 1.0", + "bbob-biobj-mixint_f091_i10_d005 1.0", + "bbob-biobj-mixint_f091_i10_d010 1.0", + "bbob-biobj-mixint_f091_i10_d020 1.0", + "bbob-biobj-mixint_f091_i10_d040 1.0", + "bbob-biobj-mixint_f091_i10_d080 1.0", + "bbob-biobj-mixint_f091_i10_d160 1.0", + "bbob-biobj-mixint_f091_i11_d005 1.0", + "bbob-biobj-mixint_f091_i11_d010 1.0", + "bbob-biobj-mixint_f091_i11_d020 1.0", + "bbob-biobj-mixint_f091_i11_d040 1.0", + "bbob-biobj-mixint_f091_i11_d080 1.0", + "bbob-biobj-mixint_f091_i11_d160 1.0", + "bbob-biobj-mixint_f091_i12_d005 1.0", + "bbob-biobj-mixint_f091_i12_d010 1.0", + "bbob-biobj-mixint_f091_i12_d020 1.0", + "bbob-biobj-mixint_f091_i12_d040 1.0", + "bbob-biobj-mixint_f091_i12_d080 1.0", + "bbob-biobj-mixint_f091_i12_d160 1.0", + "bbob-biobj-mixint_f091_i13_d005 1.0", + "bbob-biobj-mixint_f091_i13_d010 1.0", + "bbob-biobj-mixint_f091_i13_d020 1.0", + "bbob-biobj-mixint_f091_i13_d040 1.0", + "bbob-biobj-mixint_f091_i13_d080 1.0", + "bbob-biobj-mixint_f091_i13_d160 1.0", + "bbob-biobj-mixint_f091_i14_d005 1.0", + "bbob-biobj-mixint_f091_i14_d010 1.0", + "bbob-biobj-mixint_f091_i14_d020 1.0", + "bbob-biobj-mixint_f091_i14_d040 1.0", + "bbob-biobj-mixint_f091_i14_d080 1.0", + "bbob-biobj-mixint_f091_i14_d160 1.0", + "bbob-biobj-mixint_f091_i15_d005 1.0", + "bbob-biobj-mixint_f091_i15_d010 1.0", + "bbob-biobj-mixint_f091_i15_d020 1.0", + "bbob-biobj-mixint_f091_i15_d040 1.0", + "bbob-biobj-mixint_f091_i15_d080 1.0", + "bbob-biobj-mixint_f091_i15_d160 1.0", + "bbob-biobj-mixint_f092_i01_d005 1.0", + "bbob-biobj-mixint_f092_i01_d010 1.0", + "bbob-biobj-mixint_f092_i01_d020 1.0", + "bbob-biobj-mixint_f092_i01_d040 1.0", + "bbob-biobj-mixint_f092_i01_d080 1.0", + "bbob-biobj-mixint_f092_i01_d160 1.0", + "bbob-biobj-mixint_f092_i02_d005 1.0", + "bbob-biobj-mixint_f092_i02_d010 1.0", + "bbob-biobj-mixint_f092_i02_d020 1.0", + "bbob-biobj-mixint_f092_i02_d040 1.0", + "bbob-biobj-mixint_f092_i02_d080 1.0", + "bbob-biobj-mixint_f092_i02_d160 1.0", + "bbob-biobj-mixint_f092_i03_d005 1.0", + "bbob-biobj-mixint_f092_i03_d010 1.0", + "bbob-biobj-mixint_f092_i03_d020 1.0", + "bbob-biobj-mixint_f092_i03_d040 1.0", + "bbob-biobj-mixint_f092_i03_d080 1.0", + "bbob-biobj-mixint_f092_i03_d160 1.0", + "bbob-biobj-mixint_f092_i04_d005 1.0", + "bbob-biobj-mixint_f092_i04_d010 1.0", + "bbob-biobj-mixint_f092_i04_d020 1.0", + "bbob-biobj-mixint_f092_i04_d040 1.0", + "bbob-biobj-mixint_f092_i04_d080 1.0", + "bbob-biobj-mixint_f092_i04_d160 1.0", + "bbob-biobj-mixint_f092_i05_d005 1.0", + "bbob-biobj-mixint_f092_i05_d010 1.0", + "bbob-biobj-mixint_f092_i05_d020 1.0", + "bbob-biobj-mixint_f092_i05_d040 1.0", + "bbob-biobj-mixint_f092_i05_d080 1.0", + "bbob-biobj-mixint_f092_i05_d160 1.0", + "bbob-biobj-mixint_f092_i06_d005 1.0", + "bbob-biobj-mixint_f092_i06_d010 1.0", + "bbob-biobj-mixint_f092_i06_d020 1.0", + "bbob-biobj-mixint_f092_i06_d040 1.0", + "bbob-biobj-mixint_f092_i06_d080 1.0", + "bbob-biobj-mixint_f092_i06_d160 1.0", + "bbob-biobj-mixint_f092_i07_d005 1.0", + "bbob-biobj-mixint_f092_i07_d010 1.0", + "bbob-biobj-mixint_f092_i07_d020 1.0", + "bbob-biobj-mixint_f092_i07_d040 1.0", + "bbob-biobj-mixint_f092_i07_d080 1.0", + "bbob-biobj-mixint_f092_i07_d160 1.0", + "bbob-biobj-mixint_f092_i08_d005 1.0", + "bbob-biobj-mixint_f092_i08_d010 1.0", + "bbob-biobj-mixint_f092_i08_d020 1.0", + "bbob-biobj-mixint_f092_i08_d040 1.0", + "bbob-biobj-mixint_f092_i08_d080 1.0", + "bbob-biobj-mixint_f092_i08_d160 1.0", + "bbob-biobj-mixint_f092_i09_d005 1.0", + "bbob-biobj-mixint_f092_i09_d010 1.0", + "bbob-biobj-mixint_f092_i09_d020 1.0", + "bbob-biobj-mixint_f092_i09_d040 1.0", + "bbob-biobj-mixint_f092_i09_d080 1.0", + "bbob-biobj-mixint_f092_i09_d160 1.0", + "bbob-biobj-mixint_f092_i10_d005 1.0", + "bbob-biobj-mixint_f092_i10_d010 1.0", + "bbob-biobj-mixint_f092_i10_d020 1.0", + "bbob-biobj-mixint_f092_i10_d040 1.0", + "bbob-biobj-mixint_f092_i10_d080 1.0", + "bbob-biobj-mixint_f092_i10_d160 1.0", + "bbob-biobj-mixint_f092_i11_d005 1.0", + "bbob-biobj-mixint_f092_i11_d010 1.0", + "bbob-biobj-mixint_f092_i11_d020 1.0", + "bbob-biobj-mixint_f092_i11_d040 1.0", + "bbob-biobj-mixint_f092_i11_d080 1.0", + "bbob-biobj-mixint_f092_i11_d160 1.0", + "bbob-biobj-mixint_f092_i12_d005 1.0", + "bbob-biobj-mixint_f092_i12_d010 1.0", + "bbob-biobj-mixint_f092_i12_d020 1.0", + "bbob-biobj-mixint_f092_i12_d040 1.0", + "bbob-biobj-mixint_f092_i12_d080 1.0", + "bbob-biobj-mixint_f092_i12_d160 1.0", + "bbob-biobj-mixint_f092_i13_d005 1.0", + "bbob-biobj-mixint_f092_i13_d010 1.0", + "bbob-biobj-mixint_f092_i13_d020 1.0", + "bbob-biobj-mixint_f092_i13_d040 1.0", + "bbob-biobj-mixint_f092_i13_d080 1.0", + "bbob-biobj-mixint_f092_i13_d160 1.0", + "bbob-biobj-mixint_f092_i14_d005 1.0", + "bbob-biobj-mixint_f092_i14_d010 1.0", + "bbob-biobj-mixint_f092_i14_d020 1.0", + "bbob-biobj-mixint_f092_i14_d040 1.0", + "bbob-biobj-mixint_f092_i14_d080 1.0", + "bbob-biobj-mixint_f092_i14_d160 1.0", + "bbob-biobj-mixint_f092_i15_d005 1.0", + "bbob-biobj-mixint_f092_i15_d010 1.0", + "bbob-biobj-mixint_f092_i15_d020 1.0", + "bbob-biobj-mixint_f092_i15_d040 1.0", + "bbob-biobj-mixint_f092_i15_d080 1.0", + "bbob-biobj-mixint_f092_i15_d160 1.0" +}; diff --git a/code-experiments/src/suite_biobj_utilities.c b/code-experiments/src/suite_biobj_utilities.c new file mode 100644 index 000000000..f937cbf5c --- /dev/null +++ b/code-experiments/src/suite_biobj_utilities.c @@ -0,0 +1,548 @@ +/** + * @file suite_biobj_utilities.c + * @brief Implementation of some functions (mostly handling instances) used by the bi-objective suites. + * + * @note Because some bi-objective problems constructed from two single-objective ones have a single optimal + * value, some care must be taken when selecting the instances. The already verified instances are stored in + * suite_biobj_instances. If a new instance of the problem is called, a check ensures that the two underlying + * single-objective instances create a true bi-objective problem. However, these new instances need to be + * manually added to suite_biobj_instances, otherwise they will be computed each time the suite constructor + * is invoked with these instances. + */ + +#include "coco.h" +#include "suite_biobj_best_values_hyp.c" +#include "suite_biobj_mixint_best_values_hyp.c" + +/** + * @brief The array of triples biobj_instance - problem1_instance - problem2_instance connecting bi-objective + * suite instances to the instances of the bbob suite. + * + * It should be updated with new instances when/if they are chosen. + */ +static const size_t suite_biobj_instances[][3] = { + { 1, 2, 4 }, + { 2, 3, 5 }, + { 3, 7, 8 }, + { 4, 9, 10 }, + { 5, 11, 12 }, + { 6, 13, 14 }, + { 7, 15, 16 }, + { 8, 17, 18 }, + { 9, 19, 21 }, + { 10, 21, 22 }, + { 11, 23, 24 }, + { 12, 25, 26 }, + { 13, 27, 28 }, + { 14, 29, 30 }, + { 15, 31, 34 } +}; + +/** + * @brief A structure containing information about the new instances. + */ +typedef struct { + + size_t **new_instances; /**< @brief A matrix of new instances (equal in form to suite_biobj_instances) + that needs to be used only when an instance that is not in + suite_biobj_instances is being invoked. */ + + size_t max_new_instances; /**< @brief The maximal number of new instances. */ + +} suite_biobj_new_inst_t; + +/** + * @brief Frees the memory of the given suite_biobj_new_inst_t object. + */ +static void suite_biobj_new_inst_free(void *stuff) { + + suite_biobj_new_inst_t *data; + size_t i; + + assert(stuff != NULL); + data = (suite_biobj_new_inst_t *) stuff; + + if (data->new_instances) { + for (i = 0; i < data->max_new_instances; i++) { + if (data->new_instances[i]) { + coco_free_memory(data->new_instances[i]); + data->new_instances[i] = NULL; + } + } + } + coco_free_memory(data->new_instances); + data->new_instances = NULL; +} + +/** + * @brief Performs a few checks and returns whether the two given problem instances should break the search + * for new instances in suite_biobj_get_new_instance(). + */ +static int suite_biobj_check_inst_consistency(const size_t dimension, + size_t function1, + size_t instance1, + size_t function2, + size_t instance2) { + coco_problem_t *problem = NULL; + coco_problem_t *problem1, *problem2; + int break_search = 0; + double norm; + double *smallest_values_of_interest, *largest_values_of_interest; + const double apart_enough = 1e-4; + + problem1 = coco_get_bbob_problem(function1, dimension, instance1); + problem2 = coco_get_bbob_problem(function2, dimension, instance2); + + /* Set smallest and largest values of interest to some value (not important which, it just needs to be a + * vector of doubles of the right dimension) */ + smallest_values_of_interest = coco_allocate_vector_with_value(dimension, -100); + largest_values_of_interest = coco_allocate_vector_with_value(dimension, 100); + problem = coco_problem_stacked_allocate(problem1, problem2, smallest_values_of_interest, + largest_values_of_interest); + coco_free_memory(smallest_values_of_interest); + coco_free_memory(largest_values_of_interest); + + /* Check whether the ideal and nadir points are too close in the objective space */ + norm = mo_get_norm(problem->best_value, problem->nadir_value, 2); + if (norm < 1e-1) { /* TODO How to set this value in a sensible manner? */ + coco_debug( + "suite_biobj_check_inst_consistency(): The ideal and nadir points of %s are too close in the objective space", + problem->problem_id); + coco_debug("norm = %e, ideal = %e\t%e, nadir = %e\t%e", norm, problem->best_value[0], + problem->best_value[1], problem->nadir_value[0], problem->nadir_value[1]); + break_search = 1; + } + + /* Check whether the extreme optimal points are too close in the decision space */ + norm = mo_get_norm(problem1->best_parameter, problem2->best_parameter, problem->number_of_variables); + if (norm < apart_enough) { + coco_debug( + "suite_biobj_check_inst_consistency(): The extreme points of %s are too close in the decision space", + problem->problem_id); + coco_debug("norm = %e", norm); + break_search = 1; + } + + /* Clean up */ + if (problem) { + coco_problem_stacked_free(problem); + problem = NULL; + } + + return break_search; + +} + +/** + * @brief Computes the instance number of the second problem/objective so that the resulting bi-objective + * problem has more than a single optimal solution. + * + * Starts by setting instance2 = instance1 + 1 and increases this number until an appropriate instance has + * been found (or until a maximum number of tries has been reached, in which case it throws a coco_error). + * An appropriate instance is the one for which the resulting bi-objective problem (in any considered + * dimension) has the ideal and nadir points apart enough in the objective space and the extreme optimal + * points apart enough in the decision space. When the instance has been found, it is output through + * coco_warning, so that the user can see it and eventually manually add it to suite_biobj_instances. + */ +static size_t suite_biobj_get_new_instance(suite_biobj_new_inst_t *new_inst_data, + const size_t instance, + const size_t instance1, + const size_t *bbob_functions, + const size_t num_bbob_functions, + const size_t *sel_bbob_functions, + const size_t num_sel_bbob_functions, + const size_t *dimensions, + const size_t num_dimensions) { + + size_t instance2 = 0; + size_t num_tries = 0; + const size_t max_tries = 1000; + int appropriate_instance_found = 0, break_search, warning_produced = 0; + size_t d, f1, f2, i; + size_t function1, function2, dimension; + + while ((!appropriate_instance_found) && (num_tries < max_tries)) { + num_tries++; + instance2 = instance1 + num_tries; + break_search = 0; + + /* An instance is "appropriate" if the ideal and nadir points in the objective space and the two + * extreme optimal points in the decisions space are apart enough for all problems (all dimensions + * and function combinations); therefore iterate over all dimensions and function combinations */ + + for (f1 = 0; (f1 < num_bbob_functions-1) && !break_search; f1++) { + function1 = bbob_functions[f1]; + for (f2 = f1+1; (f2 < num_bbob_functions) && !break_search; f2++) { + function2 = bbob_functions[f2]; + for (d = 0; (d < num_dimensions) && !break_search; d++) { + dimension = dimensions[d]; + + if (dimension == 0) { + if (!warning_produced) + coco_warning("suite_biobj_get_new_instance(): remove filtering of dimensions to get generally acceptable instances!"); + warning_produced = 1; + continue; + } + + break_search = suite_biobj_check_inst_consistency(dimension, function1, instance1, function2, instance2); + } + } + } + + /* Finally, check all functions (f,f) with f in {f1, f2, f6, f8, f13, f14, f15, f17, f20, f21}: */ + for (f1 = 0; (f1 < num_sel_bbob_functions) && !break_search; f1++) { + function1 = sel_bbob_functions[f1]; + function2 = sel_bbob_functions[f1]; + for (d = 0; (d < num_dimensions) && !break_search; d++) { + dimension = dimensions[d]; + + if (dimension == 0) { + if (!warning_produced) + coco_warning("suite_biobj_get_new_instance(): remove filtering of dimensions to get generally acceptable instances!"); + warning_produced = 1; + continue; + } + + break_search = suite_biobj_check_inst_consistency(dimension, function1, instance1, function2, instance2); + } + } + + if (break_search) { + /* The search was broken, continue with next instance2 */ + continue; + } else { + /* An appropriate instance was found */ + appropriate_instance_found = 1; + coco_info("suite_biobj_get_new_instance(): Instance %lu created from instances %lu and %lu", + (unsigned long) instance, (unsigned long) instance1, (unsigned long) instance2); + + /* Save the instance to new_instances */ + for (i = 0; i < new_inst_data->max_new_instances; i++) { + if (new_inst_data->new_instances[i][0] == 0) { + new_inst_data->new_instances[i][0] = instance; + new_inst_data->new_instances[i][1] = instance1; + new_inst_data->new_instances[i][2] = instance2; + break; + }; + } + } + } + + if (!appropriate_instance_found) { + coco_error("suite_biobj_get_new_instance(): Could not find suitable instance %lu in %lu tries", + (unsigned long) instance, (unsigned long) num_tries); + return 0; /* Never reached */ + } + + return instance2; +} + +/** + * @brief Creates and returns a bi-objective problem without needing a suite. + * + * Useful for creating suites based on the bi-objective problems. + * + * Creates the bi-objective problem by constructing it from two single-objective problems. If the + * invoked instance number is not in suite_biobj_instances, the function uses the following formula + * to construct a new appropriate instance: + * problem1_instance = 2 * biobj_instance + 1 + * problem2_instance = problem1_instance + 1 + * + * If needed, problem2_instance is increased (see also the explanation in suite_biobj_get_new_instance). + * + * @param function Function + * @param dimension Dimension + * @param instance Instance + * @param coco_get_problem_function The function that is used to access the single-objective problem. + * @param new_inst_data Structure containing information on new instance data. + * @param num_new_instances The number of new instances. + * @param dimensions An array of dimensions to take into account when creating new instances. + * @param num_dimensions The number of dimensions to take into account when creating new instances. + * @return The problem that corresponds to the given parameters. + */ +static coco_problem_t *coco_get_biobj_problem(const size_t function, + const size_t dimension, + const size_t instance, + const coco_get_problem_function_t coco_get_problem_function, + suite_biobj_new_inst_t **new_inst_data, + const size_t num_new_instances, + const size_t *dimensions, + const size_t num_dimensions) { + + /* Selected functions from the bbob suite that are used to construct the original bbob-biobj suite. */ + const size_t sel_bbob_functions[] = { 1, 2, 6, 8, 13, 14, 15, 17, 20, 21 }; + const size_t num_sel_bbob_functions = 10; + /* All functions from the bbob suite for later use during instance generation. */ + const size_t all_bbob_functions[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 }; + const size_t num_all_bbob_functions = 24; + + coco_problem_t *problem1 = NULL, *problem2 = NULL, *problem = NULL; + size_t instance1 = 0, instance2 = 0; + size_t function1_idx, function2_idx; + const size_t function_idx = function - 1; + + size_t i, j; + const size_t num_existing_instances = sizeof(suite_biobj_instances) / sizeof(suite_biobj_instances[0]); + int instance_found = 0; + + double *smallest_values_of_interest = coco_allocate_vector_with_value(dimension, -100); + double *largest_values_of_interest = coco_allocate_vector_with_value(dimension, 100); + + /* Determine the corresponding single-objective function indices */ + if (function_idx < 55) { + /* A "magic" formula to compute the BBOB function index from the bi-objective function index */ + function1_idx = num_sel_bbob_functions + - coco_double_to_size_t( + floor(-0.5 + sqrt(0.25 + 2.0 * (double) (55 - function_idx - 1)))) - 1; + function2_idx = function_idx - (function1_idx * num_sel_bbob_functions) + + (function1_idx * (function1_idx + 1)) / 2; + + } else { + /* There is not a simple "magic" formula for functions >= 55 */ + if (function_idx == 55) { + function1_idx = 0; + function2_idx = 2; + } else if (function_idx == 56) { + function1_idx = 0; + function2_idx = 3; + } else if (function_idx == 57) { + function1_idx = 0; + function2_idx = 4; + } else if (function_idx == 58) { + function1_idx = 1; + function2_idx = 2; + } else if (function_idx == 59) { + function1_idx = 1; + function2_idx = 3; + } else if (function_idx == 60) { + function1_idx = 1; + function2_idx = 4; + } else if (function_idx == 61) { + function1_idx = 2; + function2_idx = 3; + } else if (function_idx == 62) { + function1_idx = 2; + function2_idx = 4; + } else if (function_idx == 63) { + function1_idx = 3; + function2_idx = 4; + } else if (function_idx == 64) { + function1_idx = 5; + function2_idx = 6; + } else if (function_idx == 65) { + function1_idx = 5; + function2_idx = 8; + } else if (function_idx == 66) { + function1_idx = 6; + function2_idx = 7; + } else if (function_idx == 67) { + function1_idx = 6; + function2_idx = 8; + } else if (function_idx == 68) { + function1_idx = 7; + function2_idx = 8; + } else if (function_idx == 69) { + function1_idx = 9; + function2_idx = 10; + } else if (function_idx == 70) { + function1_idx = 9; + function2_idx = 11; + } else if (function_idx == 71) { + function1_idx = 9; + function2_idx = 12; + } else if (function_idx == 72) { + function1_idx = 9; + function2_idx = 13; + } else if (function_idx == 73) { + function1_idx = 10; + function2_idx = 11; + } else if (function_idx == 74) { + function1_idx = 10; + function2_idx = 12; + } else if (function_idx == 75) { + function1_idx = 10; + function2_idx = 13; + } else if (function_idx == 76) { + function1_idx = 11; + function2_idx = 12; + } else if (function_idx == 77) { + function1_idx = 11; + function2_idx = 13; + } else if (function_idx == 78) { + function1_idx = 14; + function2_idx = 17; + } else if (function_idx == 79) { + function1_idx = 14; + function2_idx = 18; + } else if (function_idx == 80) { + function1_idx = 16; + function2_idx = 17; + } else if (function_idx == 81) { + function1_idx = 16; + function2_idx = 18; + } else if (function_idx == 82) { + function1_idx = 17; + function2_idx = 18; + } else if (function_idx == 83) { + function1_idx = 19; + function2_idx = 21; + } else if (function_idx == 84) { + function1_idx = 19; + function2_idx = 22; + } else if (function_idx == 85) { + function1_idx = 19; + function2_idx = 23; + } else if (function_idx == 86) { + function1_idx = 20; + function2_idx = 21; + } else if (function_idx == 87) { + function1_idx = 20; + function2_idx = 22; + } else if (function_idx == 88) { + function1_idx = 20; + function2_idx = 23; + } else if (function_idx == 89) { + function1_idx = 21; + function2_idx = 22; + } else if (function_idx == 90) { + function1_idx = 21; + function2_idx = 23; + } else if (function_idx == 91) { + function1_idx = 22; + function2_idx = 23; + } + } + + /* Determine the instances */ + + /* First search for the instance in suite_biobj_instances */ + for (i = 0; i < num_existing_instances; i++) { + if (suite_biobj_instances[i][0] == instance) { + /* The instance has been found in suite_biobj_instances */ + instance1 = suite_biobj_instances[i][1]; + instance2 = suite_biobj_instances[i][2]; + instance_found = 1; + break; + } + } + + if ((!instance_found) && ((*new_inst_data) != NULL)) { + /* Next, search for instance in new_instances */ + for (i = 0; i < (*new_inst_data)->max_new_instances; i++) { + if ((*new_inst_data)->new_instances[i][0] == 0) + break; + if ((*new_inst_data)->new_instances[i][0] == instance) { + /* The instance has been found in new_instances */ + instance1 = (*new_inst_data)->new_instances[i][1]; + instance2 = (*new_inst_data)->new_instances[i][2]; + instance_found = 1; + break; + } + } + } + + if (!instance_found) { + /* Finally, if the instance is not found, create a new one */ + + if ((*new_inst_data) == NULL) { + /* Allocate space needed for saving new instances */ + (*new_inst_data) = (suite_biobj_new_inst_t *) coco_allocate_memory(sizeof(**new_inst_data)); + + /* Most often the actual number of new instances will be lower than max_new_instances, because + * some of them are already in suite_biobj_instances. However, in order to avoid iterating over + * suite_biobj_new_inst_t, the allocation uses max_new_instances. */ + (*new_inst_data)->max_new_instances = num_new_instances; + + (*new_inst_data)->new_instances = (size_t **) coco_allocate_memory((*new_inst_data)->max_new_instances * sizeof(size_t *)); + for (i = 0; i < (*new_inst_data)->max_new_instances; i++) { + (*new_inst_data)->new_instances[i] = (size_t *) malloc(3 * sizeof(size_t)); + for (j = 0; j < 3; j++) { + (*new_inst_data)->new_instances[i][j] = 0; + } + } + } + + /* A simple formula to set the first instance */ + instance1 = 2 * instance + 1; + instance2 = suite_biobj_get_new_instance((*new_inst_data), instance, instance1, all_bbob_functions, + num_all_bbob_functions, sel_bbob_functions, num_sel_bbob_functions, dimensions, num_dimensions); + } + + /* Construct the problem based on the function index and dimension */ + if (function_idx < 55) { + problem1 = coco_get_problem_function(sel_bbob_functions[function1_idx], dimension, instance1); + problem2 = coco_get_problem_function(sel_bbob_functions[function2_idx], dimension, instance2); + /* Store function numbers of the underlying problems */ + problem1->suite_dep_function = sel_bbob_functions[function1_idx]; + problem2->suite_dep_function = sel_bbob_functions[function2_idx]; + + } else { + problem1 = coco_get_problem_function(all_bbob_functions[function1_idx], dimension, instance1); + problem2 = coco_get_problem_function(all_bbob_functions[function2_idx], dimension, instance2); + problem1->suite_dep_function = all_bbob_functions[function1_idx]; + problem2->suite_dep_function = all_bbob_functions[function2_idx]; + } + + problem = coco_problem_stacked_allocate(problem1, problem2, smallest_values_of_interest, largest_values_of_interest); + + /* Use the standard stacked problem_id as problem_name and construct a new problem_id */ + coco_problem_set_name(problem, problem->problem_id); + /* Attention! Any change to the problem id affects also archive processing! */ + coco_problem_set_id(problem, "bbob-biobj_f%02lu_i%02lu_d%02lu", (unsigned long) function, + (unsigned long) instance, (unsigned long) dimension); + + /* Construct problem type */ + coco_problem_set_type(problem, "%s_%s", problem1->problem_type, problem2->problem_type); + + coco_free_memory(smallest_values_of_interest); + coco_free_memory(largest_values_of_interest); + + return problem; +} + +/** + * @brief Returns the best known value for the hypervolume indicator matching the given key if the key is found, and + * throws a coco_error otherwise. + * + * @note This function needs to be updated when a new biobjective suite is added to COCO. + */ +static double suite_biobj_get_best_hyp_value(const char *suite_name, const char *key) { + + size_t i, count; + double best_value = 0; + char *curr_key; + + if (strcmp(suite_name, "bbob-biobj") == 0) { + curr_key = coco_allocate_string(COCO_PATH_MAX + 1); + count = sizeof(suite_biobj_best_values_hyp) / sizeof(char *); + for (i = 0; i < count; i++) { + sscanf(suite_biobj_best_values_hyp[i], "%s %lf", curr_key, &best_value); + if (strcmp(curr_key, key) == 0) { + coco_free_memory(curr_key); + return best_value; + } + } + } + else if (strcmp(suite_name, "bbob-biobj-mixint") == 0) { + curr_key = coco_allocate_string(COCO_PATH_MAX + 1); + count = sizeof(suite_biobj_mixint_best_values_hyp) / sizeof(char *); + for (i = 0; i < count; i++) { + sscanf(suite_biobj_mixint_best_values_hyp[i], "%s %lf", curr_key, &best_value); + if (strcmp(curr_key, key) == 0) { + coco_free_memory(curr_key); + return best_value; + } + } + } + else { + coco_error("suite_biobj_get_best_hyp_value(): suite %s not supported", suite_name); + return 0; /* Never reached */ + } + + coco_free_memory(curr_key); + coco_warning("suite_biobj_get_best_hyp_value(): best value of %s could not be found; set to 1.0", key); + return 1.0; + + coco_error("suite_biobj_get_best_hyp_value(): unexpected exception"); + return 0; /* Never reached */ +} diff --git a/code-experiments/src/transform_vars_discretize.c b/code-experiments/src/transform_vars_discretize.c new file mode 100644 index 000000000..9d7fa52c7 --- /dev/null +++ b/code-experiments/src/transform_vars_discretize.c @@ -0,0 +1,147 @@ +/** + * @file transform_vars_discretize.c + * + * @brief Implementation of transforming a continuous problem to a mixed-integer problem by making some + * of its variables discrete. The integer variables are considered as bounded (any variable outside the + * decision space is mapped to the closest boundary point), while the continuous ones are treated as + * unbounded. + * + * @note The first problem->number_of_integer_variables are integer, while the rest are continuous. + * + * The discretization works as follows. Consider the case where the interval [l, u] of the inner problem + * needs to be discretized to n integer values of the outer problem. First, [l, u] is discretized to n + * integers by placing the integers so that there is a (u-l)/(n+1) distance between them (and the border + * points). Then, the transformation is shifted so that the optimum aligns with the closest integer. In + * this way, we make sure that if the optimum is within [l, u], so are all the shifted points. + * + * When evaluating such a problem, the x values of the integer variables are first discretized. Any value + * x < 0 is mapped to 0 and any value x > (n-1) is mapped to (n-1). + */ + +#include + +#include "coco.h" +#include "coco_problem.c" + +/** + * @brief Data type for transform_vars_discretize. + */ +typedef struct { + double *offset; +} transform_vars_discretize_data_t; + +/** + * @brief Evaluates the transformed objective function. + */ +static void transform_vars_discretize_evaluate_function(coco_problem_t *problem, const double *x, double *y) { + size_t i; + transform_vars_discretize_data_t *data; + coco_problem_t *inner_problem; + double *discretized_x; + double l, u, inner_l, inner_u, outer_l, outer_u; + int n; + + if (coco_vector_contains_nan(x, coco_problem_get_dimension(problem))) { + coco_vector_set_to_nan(y, coco_problem_get_number_of_objectives(problem)); + return; + } + + data = (transform_vars_discretize_data_t *) coco_problem_transformed_get_data(problem); + inner_problem = coco_problem_transformed_get_inner_problem(problem); + + /* Transform x to fit in the discretized space */ + discretized_x = coco_duplicate_vector(x, problem->number_of_variables); + for (i = 0; i < problem->number_of_integer_variables; ++i) { + outer_l = problem->smallest_values_of_interest[i]; + outer_u = problem->largest_values_of_interest[i]; + l = inner_problem->smallest_values_of_interest[i]; + u = inner_problem->largest_values_of_interest[i]; + n = coco_double_to_int(outer_u) - coco_double_to_int(outer_l) + 1; /* number of integer values in this coordinate */ + assert(n > 1); + inner_l = l + (u - l) / (n + 1); + inner_u = u - (u - l) / (n + 1); + /* Make sure you the bounds are respected */ + discretized_x[i] = coco_double_round(x[i]); + if (discretized_x[i] < outer_l) + discretized_x[i] = outer_l; + if (discretized_x[i] > outer_u) + discretized_x[i] = outer_u; + discretized_x[i] = inner_l + (inner_u - inner_l) * (discretized_x[i] - outer_l) / (outer_u - outer_l) - data->offset[i]; + } + + coco_evaluate_function(inner_problem, discretized_x, y); + coco_free_memory(discretized_x); +} + +/** + * @brief Frees the data object. + */ +static void transform_vars_discretize_free(void *thing) { + transform_vars_discretize_data_t *data = (transform_vars_discretize_data_t *) thing; + coco_free_memory(data->offset); +} + +/** + * @brief Creates the transformation. + */ +static coco_problem_t *transform_vars_discretize(coco_problem_t *inner_problem, + const double *smallest_values_of_interest, + const double *largest_values_of_interest, + const size_t number_of_integer_variables) { + transform_vars_discretize_data_t *data; + coco_problem_t *problem = NULL; + double l, u, inner_l, inner_u, outer_l, outer_u; + double outer_xopt, inner_xopt, inner_approx_xopt; + int n; + size_t i; + + data = (transform_vars_discretize_data_t *) coco_allocate_memory(sizeof(*data)); + data->offset = coco_allocate_vector(inner_problem->number_of_variables); + + problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_discretize_free, "transform_vars_discretize"); + assert(number_of_integer_variables > 0); + problem->number_of_integer_variables = number_of_integer_variables; + + for (i = 0; i < problem->number_of_variables; i++) { + assert(smallest_values_of_interest[i] < largest_values_of_interest[i]); + problem->smallest_values_of_interest[i] = smallest_values_of_interest[i]; + problem->largest_values_of_interest[i] = largest_values_of_interest[i]; + data->offset[i] = 0; + if (i < number_of_integer_variables) { + /* Compute the offset for integer variables */ + outer_l = problem->smallest_values_of_interest[i]; + outer_u = problem->largest_values_of_interest[i]; + l = inner_problem->smallest_values_of_interest[i]; + u = inner_problem->largest_values_of_interest[i]; + n = coco_double_to_int(outer_u) - coco_double_to_int(outer_l) + 1; /* number of integer values */ + assert(n > 1); + inner_l = l + (u - l) / (n + 1); + inner_u = u - (u - l) / (n + 1); + /* Find the location of the optimum in the coordinates of the outer problem */ + inner_xopt = inner_problem->best_parameter[i]; + outer_xopt = outer_l + (outer_u - outer_l) * (inner_xopt - inner_l) / (inner_u - inner_l); + outer_xopt = coco_double_round(outer_xopt); + /* Make sure you the bounds are respected */ + if (outer_xopt < outer_l) + outer_xopt = outer_l; + if (outer_xopt > outer_u) + outer_xopt = outer_u; + problem->best_parameter[i] = outer_xopt; + /* Find the value corresponding to outer_xopt in the coordinates of the inner problem */ + inner_approx_xopt = inner_l + (inner_u - inner_l) * (outer_xopt - outer_l) / (outer_u - outer_l); + /* Compute the difference between the inner_approx_xopt and inner_xopt */ + data->offset[i] = inner_approx_xopt - inner_xopt; + } + } + + if (inner_problem->number_of_objectives > 0) + problem->evaluate_function = transform_vars_discretize_evaluate_function; + + if (problem->number_of_constraints > 0) + coco_error("transform_vars_discretize(): Constraints not supported yet."); + + problem->evaluate_constraint = NULL; /* TODO? */ + problem->evaluate_gradient = NULL; /* TODO? */ + + return problem; +} diff --git a/code-experiments/test/integration-test/test_bbob-mixint.c b/code-experiments/test/integration-test/test_bbob-mixint.c new file mode 100644 index 000000000..6582ee8ef --- /dev/null +++ b/code-experiments/test/integration-test/test_bbob-mixint.c @@ -0,0 +1,333 @@ +/** + * Tests that some of the bbob-mixint problems with dimension 2 have been correctly discretized. + */ + +#include +#include +#include +#include + +#include "coco.h" +#include "coco.c" + +/** + * A random search optimizer. + */ +void my_optimizer(coco_problem_t *problem) { + + const size_t budget = 2; + coco_random_state_t *rng = coco_random_new(0xdeadbeef); + const double *lbounds = coco_problem_get_smallest_values_of_interest(problem); + const double *ubounds = coco_problem_get_largest_values_of_interest(problem); + size_t dimension = coco_problem_get_dimension(problem); + size_t number_of_objectives = coco_problem_get_number_of_objectives(problem); + double *x = coco_allocate_vector(dimension); + double *y = coco_allocate_vector(number_of_objectives); + double range; + size_t i, j; + + for (i = 0; i < budget; ++i) { + + for (j = 0; j < dimension; ++j) { + range = ubounds[j] - lbounds[j]; + x[j] = lbounds[j] + coco_random_uniform(rng) * range; + } + + coco_evaluate_function(problem, x, y); + + } + + coco_random_free(rng); + coco_free_memory(x); + coco_free_memory(y); +} + +/* Each time: run the benchmark and delete the output folder */ +void run_once(char *suite_name, char *suite_options, char *observer_name, char *observer_options) { + + coco_suite_t *suite; + coco_observer_t *observer; + coco_problem_t *problem; + + suite = coco_suite(suite_name, NULL, suite_options); + observer = coco_observer(observer_name, observer_options); + while ((problem = coco_suite_get_next_problem(suite, observer)) != NULL) { + my_optimizer(problem); + } + coco_observer_free(observer); + coco_suite_free(suite); +} + +/* Tests whether the discretization in the single-objective suite was implemented correctly by + * checking if the optima of the continuous and mixint problems match. This is not a comprehensive + * test, because it disregards problems with dimension != 5 and those that have more than 20,000 + * discrete points and checks only the optima (even if the optima match, the transformation could + * be wrong). + */ +void check_discretization_single(char *suite_name, char *suite_options) { + + coco_suite_t *suite; + coco_problem_t *problem_cont, *problem_disc, *problem_tmp; + size_t j, k1, k2, k3, k4; + double *xopt_cont, *fopt_cont, fopt_disc; + double *x, *f; + size_t num_points[5]; + size_t all_points; + size_t matching_roi, counter = 0; + const size_t MAX_NUM = 20000; + + x = coco_allocate_vector(5); + f = coco_allocate_vector(1); + + suite = coco_suite(suite_name, NULL, suite_options); + + while ((problem_disc = coco_suite_get_next_problem(suite, NULL)) != NULL) { + + /* Skip problems of dimension != 5, those with more than MAX_NUM discrete points or those that + * whose continuous ROIs do not match */ + if (problem_disc->number_of_variables != 5) + continue; + + /* Compute the number of points and check that the continuous ROIs match */ + matching_roi = 1; + all_points = 1; + for (j = 0; j < 5; j++) { + if (j < problem_disc->number_of_integer_variables) { + num_points[j] = (unsigned long)(problem_disc->largest_values_of_interest[j] - + problem_disc->smallest_values_of_interest[j] + 1); + all_points *= num_points[j]; + } + else { + num_points[j] = 1; + matching_roi = matching_roi && + coco_double_almost_equal(problem_disc->largest_values_of_interest[j], + problem_disc->largest_values_of_interest[j], 1e-10); + } + } + + if (!matching_roi) + coco_error("check_discretization_single(): The continuous ROI of the original " + "and mixed-integer problem %s do not match", coco_problem_get_id(problem_disc)); + + if (all_points > MAX_NUM) { + coco_info("check_discretization_single(): Skipping problem %s, too many points (%lu)!", + coco_problem_get_id(problem_disc), all_points); + continue; + } + + /* Compute and compare the optima */ + problem_tmp = coco_problem_transformed_get_inner_problem(problem_disc); + problem_cont = coco_problem_transformed_get_inner_problem(problem_tmp); + xopt_cont = problem_cont->best_parameter; + fopt_cont = problem_cont->best_value; + fopt_disc = DBL_MAX; + for (j = 0; j < num_points[0]; j++) { + x[0] = ((num_points[0] == 1) ? xopt_cont[0] : (double)j); + for (k1 = 0; k1 < num_points[1]; k1++) { + x[1] = ((num_points[1] == 1) ? xopt_cont[1] : (double)k1); + for (k2 = 0; k2 < num_points[2]; k2++) { + x[2] = ((num_points[2] == 1) ? xopt_cont[2] : (double)k2); + for (k3 = 0; k3 < num_points[3]; k3++) { + x[3] = ((num_points[3] == 1) ? xopt_cont[3] : (double)k3); + for (k4 = 0; k4 < num_points[4]; k4++) { + x[4] = ((num_points[4] == 1) ? xopt_cont[4] : (double)k4); + coco_evaluate_function(problem_disc, x, f); + if (f[0] < fopt_disc) { + fopt_disc = f[0]; + } + } + } + } + } + } + fopt_cont[0] *= suite_bbob_mixint_scaling_factors[coco_problem_get_suite_dep_function(problem_disc) - 1]; + if (!coco_double_almost_equal(fopt_cont[0], fopt_disc, 1e-10)) { + coco_free_memory(x); + coco_free_memory(f); + coco_error("check_discretization_single(): The optima of the original " + "and mixed-integer problem %s do not match, %f != %f!", + coco_problem_get_id(problem_disc), fopt_cont[0], fopt_disc); + } + counter++; + } + + coco_free_memory(x); + coco_free_memory(f); + + if (counter == 0) + coco_error("check_discretization_single(): No tests of %s were performed!", suite_name); + else + printf("Performed %lu tests on %s\n", (unsigned long)counter, suite_name); + printf("DONE!\n"); + + coco_suite_free(suite); + fflush(stdout); +} + +/* Tests whether the discretization in the bi-objective suite was implemented correctly by checking + * if the extreme solutions of the continuous and mixint problems match. This is not a comprehensive + * test, because it disregards problems with dimension != 5 and those that have more than 20,000 + * discrete points and checks only the extreme solutions (even if they match, the transformation + * could be wrong). + * + * Note also that this test assumes that the discretization was done on single-objective problems + * before they were stacked to form bi-objective problems, i.e. the 'wrapping' order was: + * stacking(scale(discretize(problem1)), scale(discretize(problem2))) + */ +void check_discretization_bi(char *suite_name, char *suite_options) { + + coco_suite_t *suite; + coco_problem_t *problem_disc; + coco_problem_t *problem1_disc, *problem2_disc; + coco_problem_t *problem1_cont, *problem2_cont; + coco_problem_t *problem1_tmp, *problem2_tmp; + size_t j, k1, k2, k3, k4; + double *x_ext_cont; + double f_ext1_cont, f_ext2_cont; + double f_ext1_disc, f_ext2_disc; + double *x, *f; + size_t num_points[5]; + size_t all_points = 1; + size_t matching_roi, counter = 0; + const size_t MAX_NUM = 20000; + + x = coco_allocate_vector(5); + f = coco_allocate_vector(2); + + suite = coco_suite(suite_name, NULL, suite_options); + + while ((problem_disc = coco_suite_get_next_problem(suite, NULL)) != NULL) { + + /* Skip problems of dimension != 5, those with more than MAX_NUM discrete points or those that + * whose continuous ROIs do not match */ + if (problem_disc->number_of_variables != 5) + continue; + + /* Compute the number of points and check that the continuous ROIs match */ + matching_roi = 1; + all_points = 1; + for (j = 0; j < 5; j++) { + if (j < problem_disc->number_of_integer_variables) { + num_points[j] = (unsigned long)(problem_disc->largest_values_of_interest[j] - + problem_disc->smallest_values_of_interest[j] + 1); + all_points *= num_points[j]; + } + else { + num_points[j] = 1; + matching_roi = matching_roi && + coco_double_almost_equal(problem_disc->largest_values_of_interest[j], + problem_disc->largest_values_of_interest[j], 1e-10); + } + } + + if (!matching_roi) + coco_error("check_discretization_bi(): The continuous ROI of the original " + "and mixed-integer problem %s do not match", coco_problem_get_id(problem_disc)); + + if (all_points > MAX_NUM) { + coco_info("check_discretization_bi(): Skipping problem %s, too many points (%lu)!", + coco_problem_get_id(problem_disc), all_points); + continue; + } + + /* Check whether the two extreme points are equal */ + problem1_disc = ((coco_problem_stacked_data_t *) problem_disc->data)->problem1; + problem2_disc = ((coco_problem_stacked_data_t *) problem_disc->data)->problem2; + problem1_tmp = coco_problem_transformed_get_inner_problem(problem1_disc); + problem2_tmp = coco_problem_transformed_get_inner_problem(problem2_disc); + problem1_cont = coco_problem_transformed_get_inner_problem(problem1_tmp); + problem2_cont = coco_problem_transformed_get_inner_problem(problem2_tmp); + f_ext1_cont = problem1_cont->best_value[0]; + f_ext2_cont = problem2_cont->best_value[0]; + + /* The first extreme point */ + x_ext_cont = problem1_cont->best_parameter; + f_ext1_disc = DBL_MAX; + for (j = 0; j < num_points[0]; j++) { + x[0] = ((num_points[0] == 1) ? x_ext_cont[0] : (double)j); + for (k1 = 0; k1 < num_points[1]; k1++) { + x[1] = ((num_points[1] == 1) ? x_ext_cont[1] : (double)k1); + for (k2 = 0; k2 < num_points[2]; k2++) { + x[2] = ((num_points[2] == 1) ? x_ext_cont[2] : (double)k2); + for (k3 = 0; k3 < num_points[3]; k3++) { + x[3] = ((num_points[3] == 1) ? x_ext_cont[3] : (double)k3); + for (k4 = 0; k4 < num_points[4]; k4++) { + x[4] = ((num_points[4] == 1) ? x_ext_cont[4] : (double)k4); + coco_evaluate_function(problem_disc, x, f); + if (f[0] < f_ext1_disc) { + f_ext1_disc = f[0]; + } + } + } + } + } + } + f_ext1_cont *= suite_bbob_mixint_scaling_factors[coco_problem_get_suite_dep_function(problem1_disc) - 1]; + if (!coco_double_almost_equal(f_ext1_cont, f_ext1_disc, 1e-10)) { + coco_free_memory(x); + coco_free_memory(f); + coco_error("check_discretization_bi(): The first coordinate of the first extreme point of " + "the original and mixed-integer problem %s do not match, %f != %f!", + coco_problem_get_id(problem_disc), f_ext1_cont, f_ext1_disc); + } + + /* The second extreme point */ + x_ext_cont = problem2_cont->best_parameter; + f_ext2_disc = DBL_MAX; + for (j = 0; j < num_points[0]; j++) { + x[0] = ((num_points[0] == 1) ? x_ext_cont[0] : (double)j); + for (k1 = 0; k1 < num_points[1]; k1++) { + x[1] = ((num_points[1] == 1) ? x_ext_cont[1] : (double)k1); + for (k2 = 0; k2 < num_points[2]; k2++) { + x[2] = ((num_points[2] == 1) ? x_ext_cont[2] : (double)k2); + for (k3 = 0; k3 < num_points[3]; k3++) { + x[3] = ((num_points[3] == 1) ? x_ext_cont[3] : (double)k3); + for (k4 = 0; k4 < num_points[4]; k4++) { + x[4] = ((num_points[4] == 1) ? x_ext_cont[4] : (double)k4); + coco_evaluate_function(problem_disc, x, f); + if (f[1] < f_ext2_disc) { + f_ext2_disc = f[1]; + } + } + } + } + } + } + f_ext2_cont *= suite_bbob_mixint_scaling_factors[coco_problem_get_suite_dep_function(problem2_disc) - 1]; + if (!coco_double_almost_equal(f_ext2_cont, f_ext2_disc, 1e-10)) { + coco_free_memory(x); + coco_free_memory(f); + coco_error("check_discretization_bi(): The second coordinate of the second extreme point of " + "the original and mixed-integer problem %s do not match, %f != %f!", + coco_problem_get_id(problem_disc), f_ext2_cont, f_ext2_disc); + } + counter++; + } + + coco_free_memory(x); + coco_free_memory(f); + + if (counter == 0) + coco_error("check_discretization_bi(): No tests of %s were performed!", suite_name); + else + printf("Performed %lu tests on %s\n", (unsigned long)counter, suite_name); + printf("DONE!\n"); + + coco_suite_free(suite); + fflush(stdout); +} + +int main(int argc, char *argv[]) { + + if ((argc == 2) && (strcmp(argv[1], "leak_check") == 0)) { + run_once("bbob-mixint", "instance_indices: 1 dimensions: 5,160", "bbob", ""); + run_once("bbob-biobj-mixint", "function_indices: 1-5,90-92 instance_indices: 1 dimensions: 5,160", "bbob-biobj", ""); + } + else { + check_discretization_single("bbob-mixint", "dimensions: 5 instance_indices: 1-2"); + check_discretization_bi("bbob-biobj-mixint", "dimensions: 5 instance_indices: 1-2"); + } + + coco_remove_directory("exdata"); + return 0; +} diff --git a/code-experiments/test/unit-test/test_biobj_utilities.c b/code-experiments/test/unit-test/test_biobj_utilities.c new file mode 100644 index 000000000..8864d8849 --- /dev/null +++ b/code-experiments/test/unit-test/test_biobj_utilities.c @@ -0,0 +1,36 @@ +#include "coco.h" +#include "minunit_c89.h" + +/** + * Tests the creation of new instances of the bi-objective suites. + */ +MU_TEST(test_biobj_utilities_instances) { + + coco_suite_t *suite = coco_suite("bbob-biobj", "instances: 16-20", ""); + coco_problem_t *problem; + + problem = coco_suite_get_next_problem(suite, NULL); + mu_check(coco_problem_get_suite_dep_instance(problem) == 16); + + problem = coco_suite_get_next_problem(suite, NULL); + mu_check(coco_problem_get_suite_dep_instance(problem) == 17); + + problem = coco_suite_get_next_problem(suite, NULL); + mu_check(coco_problem_get_suite_dep_instance(problem) == 18); + + problem = coco_suite_get_next_problem(suite, NULL); + mu_check(coco_problem_get_suite_dep_instance(problem) == 19); + + problem = coco_suite_get_next_problem(suite, NULL); + mu_check(coco_problem_get_suite_dep_instance(problem) == 20); + + coco_suite_free(suite); +} + +/** + * Run all tests in this file. + */ +MU_TEST_SUITE(test_all_biobj_utilities) { + MU_RUN_TEST(test_biobj_utilities_instances); +} + diff --git a/code-postprocessing/latex-templates/templateMIXINTarticle.tex b/code-postprocessing/latex-templates/templateMIXINTarticle.tex new file mode 100644 index 000000000..cbb60200d --- /dev/null +++ b/code-postprocessing/latex-templates/templateMIXINTarticle.tex @@ -0,0 +1,927 @@ +\documentclass[sigconf]{acmart} +% +% LaTeX template for visualizing the performance of +% optimization algorithms, that were run on the +% bbob-mmixint test suite of COCO. Any number of +% algorithms should work with this template. +% + + +\usepackage{booktabs} % For formal tables +\usepackage{graphicx} +\usepackage{rotating} +\definecolor{Gray}{gray}{0.6} +\usepackage{tabularx} +\usepackage{xspace} +\usepackage{float} +\usepackage{xstring} % for string operations +\usepackage{wasysym} % Table legend with symbols input from post-processing +\usepackage{MnSymbol} % Table legend with symbols input from post-processing +\usepackage{ifthen} +\newcommand{\includeperfprof}[1]{% include and annotate at the side + \input{\bbobdatapath\algsfolder #1}% + \includegraphics[height=0.24\textheight]{#1}% + %\raisebox{.12\textheight}{ + %\parbox[b][.24\textheight]{.0868\textwidth}{\begin{scriptsize} + % \perfprofsidepanel % this is "\algaperfprof \vfill \algbperfprof \vfill" etc + %\end{scriptsize}} + %} +} + + + + + +% Copyright +%\setcopyright{none} +%\setcopyright{acmcopyright} +%\setcopyright{acmlicensed} +\setcopyright{rightsretained} +%\setcopyright{usgov} +%\setcopyright{usgovmixed} +%\setcopyright{cagov} +%\setcopyright{cagovmixed} + + +% DOI +\acmDOI{10.1145/123_4} + +% ISBN +\acmISBN{123-4567-24-567/18/07} + +%Conference +\acmConference[GECCO '19]{the Genetic and Evolutionary Computation Conference 2019}{July 13--17, 2019}{Prague, Czech Republic} +\acmYear{2019} +\copyrightyear{2019} + +\acmPrice{15.00} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%% TO BE EDITED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Algorithm names as they appear in the tables, uncomment and adapt if necessary +% \newcommand{\algAtables}{ALGO1} % first argument in the post-processing +% \newcommand{\algBtables}{ALGO2} % second argument in the post-processing +% \newcommand{\algCtables}{ALGO3} % third argument in the post-processing +% \newcommand{\algDtables}{ALGO4} % forth argument in the post-processing +% ... +% location of pictures files +\newcommand{\bbobdatapath}{ppdata/} % change default output folder of COCO if desired + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% read in data and deal with the different number of algorithms: +\input{\bbobdatapath cocopp_commands.tex} +\ifthenelse{\equal{\numofalgs}{1}} +{ + \newcommand{\numberofalgorithms}{one} +} +{ + \ifthenelse{\equal{\numofalgs}{2}} + { + \newcommand{\numberofalgorithms}{two} + }{ + \newcommand{\numberofalgorithms}{three} + } +} + +\ifthenelse{\equal{\numberofalgorithms}{one}}{ + \graphicspath{{\bbobdatapath\algfolder}}}{ + \graphicspath{{\bbobdatapath\algsfolder}} +} + +\ifthenelse{\isundefined{\algorithmA}}{\newcommand{\algorithmA}{\algname}}{} +%\ifthenelse{\isundefined{\algorithmA}{\newcommand{\algorithmA}{\change{MY-ALGORITHM-NAME}}}{} % better use the previous line? +%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\DIM}{\ensuremath{\mathrm{DIM}}} +\newcommand{\aRT}{\ensuremath{\mathrm{aRT}}} +\newcommand{\FEvals}{\ensuremath{\mathrm{FEvals}}} +\newcommand{\nruns}{\ensuremath{\mathrm{Nruns}}} +\newcommand{\Dfb}{\ensuremath{\Delta f_{\mathrm{best}}}} +\newcommand{\Df}{\ensuremath{\Delta f}} +\newcommand{\DI}{\ensuremath{\Delta I_{\mathrm{HV}}^{\mathrm{COCO}}}} +\newcommand{\nbFEs}{\ensuremath{\mathrm{\#FEs}}} +\newcommand{\ftarget}{\ensuremath{f_\mathrm{t}}} +\newcommand{\Itarget}{\ensuremath{I_\mathrm{target}}} +\newcommand{\CrE}{\ensuremath{\mathrm{CrE}}} +\newcommand{\hvref}{\ensuremath{I_\mathrm{ref}}} +\newcommand{\fopt}{\hvref} +\newcommand{\change}[1]{{\color{red} #1}} +\newcommand{\TODO}[1]{{\color{orange} !!! #1 !!!}} +\newcommand{\bbobbiobj}{{\ttfamily bbob-biobj}\xspace} +\newcommand{\bbobnoisy}{{\ttfamily bbob-noisy}\xspace} +\newcommand{\bbobmixint}{{\ttfamily bbob-mixint}\xspace} +\newcommand{\rot}[2][2.5]{ + \hspace*{-3.5\baselineskip}% + \begin{rotate}{90}\hspace{#1em}#2 + \end{rotate}} + +%%%%%%%%%%%%%%%%%%%%%% END OF PREAMBLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{document} + + +\title{Black-Box Optimization Benchmarking Template for the Comparison of Algorithms on the \bbobmixint Testbed} +\renewcommand{\shorttitle}{Template to Compare Algorithms on the \bbobmixint Testbed} +\titlenote{Submission deadline: April 3rd.} +%Camera-ready paper due April 24th.}} +\subtitle{Draft version} + + + +\author{Firstname Lastname} +%\authornote{tba if needed} +%\orcid{1234-5678-9012} +%\affiliation{% +% \institution{Institute for Clarity in Documentation} +% \streetaddress{P.O. Box 1212} +% \city{Dublin} +% \state{Ohio} +% \postcode{43017-6221} +%} +%\email{trovato@corporation.com} +% +%\author{G.K.M. Tobin} +%\authornote{The secretary disavows any knowledge of this author's actions.} +%\affiliation{% +% \institution{Institute for Clarity in Documentation} +% \streetaddress{P.O. Box 1212} +% \city{Dublin} +% \state{Ohio} +% \postcode{43017-6221} +%} +%\email{webmaster@marysville-ohio.com} +% +%\author{Lars Th{\o}rv{\"a}ld} +%\authornote{This author is the +% one who did all the really hard work.} +%\affiliation{% +% \institution{The Th{\o}rv{\"a}ld Group} +% \streetaddress{1 Th{\o}rv{\"a}ld Circle} +% \city{Hekla} +% \country{Iceland}} +%\email{larst@affiliation.org} +% +%\author{Lawrence P. Leipuner} +%\affiliation{ +% \institution{Brookhaven Laboratories} +% \streetaddress{P.O. Box 5000}} +%\email{lleipuner@researchlabs.org} +% +%\author{Sean Fogarty} +%\affiliation{% +% \institution{NASA Ames Research Center} +% \city{Moffett Field} +% \state{California} +% \postcode{94035}} +%\email{fogartys@amesres.org} +% +%\author{Charles Palmer} +%\affiliation{% +% \institution{Palmer Research Laboratories} +% \streetaddress{8600 Datapoint Drive} +% \city{San Antonio} +% \state{Texas} +% \postcode{78229}} +%\email{cpalmer@prl.com} +% +%\author{John Smith} +%\affiliation{\institution{The Th{\o}rv{\"a}ld Group}} +%\email{jsmith@affiliation.org} +% +%\author{Julius P.~Kumquat} +%\affiliation{\institution{The Kumquat Consortium}} +%\email{jpkumquat@consortium.net} + +% The default list of authors is too long for headers} +\renewcommand{\shortauthors}{Firstname Lastname et. al.} + + +\begin{abstract} +to be written +\end{abstract} + + +% +% The code below should be generated by the tool at +% http://dl.acm.org/ccs.cfm +% Please copy and paste the code instead of the example below. +% + \begin{CCSXML} + + +10010147.10010178.10010205.10010208 +Computing methodologies~Continuous space search +500 + + +\end{CCSXML} + +\ccsdesc[500]{Computing methodologies~Continuous space search} + + +% We no longer use \terms command +%\terms{Algorithms} + +% Complete with anything that is needed +\keywords{Benchmarking, Black-box optimization, Mixed-integer optimization} + +\maketitle + + +% \section{Introduction} +% +% \section{Algorithm Presentation} +% +% \section{Experimental Procedure} +% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{CPU Timing} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% note that the following text is just a proposal and can/should be changed to your needs: +In order to evaluate the CPU timing of the algorithm, we have run the \change{\algorithmA} with restarts on the entire \bbobmixint test suite \TODO{\cite{tusar2019}} for \change{$2n$} function evaluations according to \cite{hansen2016exp}. +%\change{replace the previous sentence with ``on the function $f_{8}$ with restarts for at least 30 seconds and until a maximum budget equal to \change{$400 (n + 2)$} is reached.'' in case you use the old code base} + The \change{C/Java/Matlab/Octave/Python} code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores \change{and (compile) options xxx}. The time per function evaluation for dimensions 2, 3, 5, 10, 20\change{, 40} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. + +\ifthenelse{\equal{\numberofalgorithms}{one}}{}{ +\change{repeat the above for any algorithm tested} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Results} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Results from experiments according to \cite{hansen2016exp} and +\cite{hansen2016perfass} on the benchmark functions given in +\TODO{\cite{tusar2019}} are presented in +%% +\ifthenelse{\equal{\numberofalgorithms}{one}}{ +Figures~\ref{fig:aRTgraphs} and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs10} and \ref{tab:aRTs40}. +%, \ref{tab:aRTloss}, and \ref{fig:aRTlogloss}. +}{\ifthenelse{\equal{\numberofalgorithms}{two}}{ +Figures~\ref{fig:scaling}, \ref{fig:ECDFs10D}, \ref{fig:ECDFs40D}, \ref{fig:ECDFsingleOne}, and \ref{fig:scatterplots} and Tables~\ref{tab:aRTs10} and \ref{tab:aRTs40}. +}{\ifthenelse{\equal{\numberofalgorithms}{three}}{ +Figures~\ref{fig:scaling}, \ref{fig:ECDFs}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:ERTs5} and \ref{tab:ERTs20}. +}{}}} +%% + + +The experiments were performed with COCO \cite{hansen2016cocoplat}, version +\change{2.3}, the plots were produced with version \change{2.3}. + +The \textbf{average runtime (aRT)}, used in the %figures and +tables, +depends on a given target precision, $\Itarget=\fopt+\Df$, and is +computed over all relevant trials as the number of function +evaluations executed during each trial while the best function value +did not reach \ftarget, summed over all trials and divided by the +number of trials that actually reached \ftarget\ +\cite{hansen2016exp,price1997dev}. +\textbf{Statistical significance} is tested with the rank-sum test for a given +target $\Delta\ftarget$ using, for each trial, +either the number of needed function evaluations to reach +$\ftarget$ (inverted and multiplied by $-1$), or, if the target +was not reached, the best $\Df$-value achieved, measured only up to +the smallest number of overall function evaluations for any +unsuccessful trial under consideration. + + + +\ifthenelse{\equal{\numberofalgorithms}{one}}{ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Scaling of aRT with dimension + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} +\begin{tabular}{l@{\hspace*{-0.0\textwidth}}l@{\hspace*{-0.0\textwidth}}l@{\hspace*{-0.0\textwidth}}l} +\includegraphics[width=0.24\textwidth]{ppfigdim_f001}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f002}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f003}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f004}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f005}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f006}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f007}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f008}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f009}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f010}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f011}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f012}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f013}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f014}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f015}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f016}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f017}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f018}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f019}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f020}\\[-1ex] +\includegraphics[width=0.24\textwidth]{ppfigdim_f021}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f022}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f023}& +\includegraphics[width=0.24\textwidth]{ppfigdim_f024} +\end{tabular} +\vspace{-3ex} + \caption{\label{fig:aRTgraphs} + \bbobppfigdimlegend{$f_1$ and $f_{24}$} + } +\end{figure*} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% ECDFs per function +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{figure*} +\centering +\begin{tabular}{l@{\hspace*{-0.00\textwidth}}l@{\hspace*{0.01\textwidth}}l@{\hspace*{-0.00\textwidth}}l} +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f001}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f002}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f003}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f004}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f005}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f006}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f007}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f008}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f009}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f010}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f011}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f012}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f013}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f014}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f015}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f016}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f017}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f018}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f019}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f020}\\[-0.2em] +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f021}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f022}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f023}& +\includegraphics[width=0.24\textwidth]{pprldmany-single-functions/pprldmany_f024} +\vspace*{-1ex} +\end{tabular} + \caption{\label{fig:ECDFsingleOne} + \bbobecdfcaptionsinglefunctionssingledim{$\!\!$s 5 to 160} +} +\end{figure*} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +%% aRT loss ratios (figure and table) [not yet available] +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\begin{figure} +%\centering +%\parbox{0.48\columnwidth}{\centering 10-D}\hfill +%\parbox{0.48\columnwidth}{\centering 40-D}\\ +%\includegraphics[width=0.48\columnwidth]{pplogloss_10D_noiselessall}\hfill +%\includegraphics[width=0.48\columnwidth]{pplogloss_40D_noiselessall}\\[2ex] +%% +%\input{\bbobdatapath\algfolder pploglosstable_10D_noiselessall}\\ +%\input{\bbobdatapath\algfolder pploglosstable_40D_noiselessall} +%\caption{\label{tab:aRTloss}% +%\bbobloglosstablecaption{} +%} +%\end{figure} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +%% aRT loss ratios per function group [not yet available] +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\begin{figure} +%\begin{tabular}{@{}l@{}@{}l@{}} +%\multicolumn{1}{c}{10-D} & \multicolumn{1}{c}{40-D}\\ +%%\rot{all functions} +%%\hspace*{-2mm} +%\rot[2.8]{separable fcts} +%\hspace*{-1.4mm} +%\includegraphics[width=0.24\textwidth]{pplogloss_10D_separ} & +%\includegraphics[width=0.24\textwidth]{pplogloss_40D_separ}\\ +%\rot[2.7]{moderate fcts} +%\hspace*{-1.4mm} +%\includegraphics[width=0.24\textwidth]{pplogloss_10D_lcond} & +%\includegraphics[width=0.24\textwidth]{pplogloss_40D_lcond}\\ +%\rot[1.9]{ill-conditioned fcts} +%\hspace*{-1.35mm} +%\includegraphics[width=0.24\textwidth]{pplogloss_10D_hcond} & +%\includegraphics[width=0.24\textwidth]{pplogloss_40D_hcond}\\ +%\rot[2.5]{multi-modal fcts} +%\hspace*{-1.3mm} +%\includegraphics[width=0.24\textwidth]{pplogloss_10D_multi} & +%\includegraphics[width=0.24\textwidth]{pplogloss_40D_multi}\\ +%\rot[1.6]{weak structure fcts} +%\hspace*{-1.4mm} +%\includegraphics[width=0.24\textwidth]{pplogloss_10D_mult2} & +%\includegraphics[width=0.24\textwidth]{pplogloss_40D_mult2} +%\vspace*{-0.5ex} +%\end{tabular} +% \caption{\label{fig:aRTlogloss}% +%\bbobloglossfigurecaption{} +%} +%\end{figure} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Table showing the average runtime (aRT in number of function +% evaluations) divided by the best aRT measured during BBOB-2009 (given in the +% first row of each cell) for functions $f_1$--$f_{24} for dimension 10$. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{table*}\tiny +%\hfill10-D\hfill~\\[1ex] +{\normalsize \color{red} +\ifthenelse{\isundefined{\algorithmG}}{}{more than 6 algorithms: please split the tables below by hand until it fits to the page limits} +} +\mbox{\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\pptableheader + +\input{\bbobdatapath\algfolder pptable_f001_10D} + +\input{\bbobdatapath\algfolder pptable_f002_10D} + +\input{\bbobdatapath\algfolder pptable_f003_10D} + +\input{\bbobdatapath\algfolder pptable_f004_10D} + +\input{\bbobdatapath\algfolder pptable_f005_10D} + +\input{\bbobdatapath\algfolder pptable_f006_10D} + +\input{\bbobdatapath\algfolder pptable_f007_10D} + +\input{\bbobdatapath\algfolder pptable_f008_10D} + +\input{\bbobdatapath\algfolder pptable_f009_10D} + +\input{\bbobdatapath\algfolder pptable_f010_10D} + +\input{\bbobdatapath\algfolder pptable_f011_10D} + +\input{\bbobdatapath\algfolder pptable_f012_10D} + +\pptablefooter + +\end{minipage} +\hspace{0.002\textwidth} +\begin{minipage}[t]{0.499\textwidth}\tiny +\centering + +\pptableheader + +\input{\bbobdatapath\algfolder pptable_f013_10D} + +\input{\bbobdatapath\algfolder pptable_f014_10D} + +\input{\bbobdatapath\algfolder pptable_f015_10D} + +\input{\bbobdatapath\algfolder pptable_f016_10D} + +\input{\bbobdatapath\algfolder pptable_f017_10D} + +\input{\bbobdatapath\algfolder pptable_f018_10D} + +\input{\bbobdatapath\algfolder pptable_f019_10D} + +\input{\bbobdatapath\algfolder pptable_f020_10D} + +\input{\bbobdatapath\algfolder pptable_f021_10D} + +\input{\bbobdatapath\algfolder pptable_f022_10D} + +\input{\bbobdatapath\algfolder pptable_f023_10D} + +\input{\bbobdatapath\algfolder pptable_f024_10D} + +\pptablefooter + +\end{minipage}} + +\caption[Table of aRTs]{\label{tab:aRTs10}\bbobpptablecaption{dimension $10$} +} +\end{table*} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Table showing the average runtime (aRT in number of function +% evaluations) [divided by the best aRT measured during BBOB-2009] (given in the +% first row of each cell) for functions $f_1$--$f_{24} for dimension 40$. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{table*}\tiny +%\hfill40-D\hfill~\\[1ex] +{\normalsize \color{red} +\ifthenelse{\isundefined{\algorithmG}}{}{more than 6 algorithms: please split the tables below by hand until it fits to the page limits} +} +\mbox{\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\pptableheader + +\input{\bbobdatapath\algfolder pptable_f001_40D} + +\input{\bbobdatapath\algfolder pptable_f002_40D} + +\input{\bbobdatapath\algfolder pptable_f003_40D} + +\input{\bbobdatapath\algfolder pptable_f004_40D} + +\input{\bbobdatapath\algfolder pptable_f005_40D} + +\input{\bbobdatapath\algfolder pptable_f006_40D} + +\input{\bbobdatapath\algfolder pptable_f007_40D} + +\input{\bbobdatapath\algfolder pptable_f008_40D} + +\input{\bbobdatapath\algfolder pptable_f009_40D} + +\input{\bbobdatapath\algfolder pptable_f010_40D} + +\input{\bbobdatapath\algfolder pptable_f011_40D} + +\input{\bbobdatapath\algfolder pptable_f012_40D} + +\pptablefooter + +\end{minipage} +\hspace{0.002\textwidth} +\begin{minipage}[t]{0.499\textwidth}\tiny +\centering + +\pptableheader + +\input{\bbobdatapath\algfolder pptable_f013_40D} + +\input{\bbobdatapath\algfolder pptable_f014_40D} + +\input{\bbobdatapath\algfolder pptable_f015_40D} + +\input{\bbobdatapath\algfolder pptable_f016_40D} + +\input{\bbobdatapath\algfolder pptable_f017_40D} + +\input{\bbobdatapath\algfolder pptable_f018_40D} + +\input{\bbobdatapath\algfolder pptable_f019_40D} + +\input{\bbobdatapath\algfolder pptable_f020_40D} + +\input{\bbobdatapath\algfolder pptable_f021_40D} + +\input{\bbobdatapath\algfolder pptable_f022_40D} + +\input{\bbobdatapath\algfolder pptable_f023_40D} + +\input{\bbobdatapath\algfolder pptable_f024_40D} + +\pptablefooter + +\end{minipage}} + +\caption[Table of aRTs]{\label{tab:aRTs40}\bbobpptablecaption{dimension $40$} +} +\end{table*} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +}{} % end of 1 algorithm template + + + +\ifthenelse{\equal{\numberofalgorithms}{two} \or \equal{\numberofalgorithms}{three}}{ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Scaling of aRT with dimension + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{figure*} +\centering +\begin{tabular}{@{}c@{}c@{}c@{}c@{}} +\includegraphics[width=0.24\textwidth]{ppfigs_f001}& +\includegraphics[width=0.24\textwidth]{ppfigs_f002}& +\includegraphics[width=0.24\textwidth]{ppfigs_f003}& +\includegraphics[width=0.24\textwidth]{ppfigs_f004}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f005}& +\includegraphics[width=0.24\textwidth]{ppfigs_f006}& +\includegraphics[width=0.24\textwidth]{ppfigs_f007}& +\includegraphics[width=0.24\textwidth]{ppfigs_f008}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f009}& +\includegraphics[width=0.24\textwidth]{ppfigs_f010}& +\includegraphics[width=0.24\textwidth]{ppfigs_f011}& +\includegraphics[width=0.24\textwidth]{ppfigs_f012}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f013}& +\includegraphics[width=0.24\textwidth]{ppfigs_f014}& +\includegraphics[width=0.24\textwidth]{ppfigs_f015}& +\includegraphics[width=0.24\textwidth]{ppfigs_f016}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f017}& +\includegraphics[width=0.24\textwidth]{ppfigs_f018}& +\includegraphics[width=0.24\textwidth]{ppfigs_f019}& +\includegraphics[width=0.24\textwidth]{ppfigs_f020}\\[-0.25em] +\includegraphics[width=0.24\textwidth]{ppfigs_f021}& +\includegraphics[width=0.24\textwidth]{ppfigs_f022}& +\includegraphics[width=0.24\textwidth]{ppfigs_f023}& +\includegraphics[width=0.24\textwidth]{ppfigs_f024} +\end{tabular} +\vspace*{-0.2cm} +\caption[Average running time (\aRT) divided by dimension +versus dimension in log-log presentation]{ +\label{fig:scaling} +\bbobppfigslegend{$f_1$ and $f_{24}$}. +} +% +\end{figure*} + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Empirical cumulative distribution functions (ECDFs) per function group +% for dimensions 10 and 80 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{figure*} + \begin{tabular}{@{}c@{\hspace*{0.05\textwidth}}c@{}} + separable fcts & moderate fcts \\ + \includeperfprof{pprldmany_10D_separ} & + \includeperfprof{pprldmany_10D_lcond} \\ +ill-conditioned fcts & multi-modal fcts \\ + \includeperfprof{pprldmany_10D_hcond} & + \includeperfprof{pprldmany_10D_multi} \\ + weakly structured multi-modal fcts & all functions\\ + \includeperfprof{pprldmany_10D_mult2} & + \includeperfprof{pprldmany_10D_noiselessall} + \end{tabular} +\caption{ +\label{fig:ECDFs10D} +\bbobECDFslegend{10} +} +\end{figure*} + + +\begin{figure*} + \begin{tabular}{@{}c@{\hspace*{0.05\textwidth}}c@{}} + separable fcts & moderate fcts \\ + \includeperfprof{pprldmany_40D_separ} & + \includeperfprof{pprldmany_40D_lcond} \\ +ill-conditioned fcts & multi-modal fcts \\ + \includeperfprof{pprldmany_40D_hcond} & + \includeperfprof{pprldmany_40D_multi} \\ + weakly structured multi-modal fcts & all functions\\ + \includeperfprof{pprldmany_40D_mult2} & + \includeperfprof{pprldmany_40D_noiselessall} + \end{tabular} +\caption{ +\label{fig:ECDFs40D} +\bbobECDFslegend{40} +} +\end{figure*} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% ECDFs per function in dimension 10 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*} +\centering +\begin{tabular}{@{}l@{}l@{}l@{}l@{}l@{}} +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f001_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f002_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f003_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f004_10D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f005_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f006_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f007_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f008_10D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f009_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f010_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f011_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f012_10D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f013_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f014_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f015_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f016_10D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f017_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f018_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f019_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f020_10D}\\ +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f021_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f022_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f023_10D}& +\includegraphics[width=0.2\textwidth]{pprldmany-single-functions/pprldmany_f024_10D} +\end{tabular} + \caption{\label{fig:ECDFsingleOne} + \bbobecdfcaptionsinglefunctionssingledim{10} +} +\end{figure*} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Table showing the average runtime (aRT in number of function +% evaluations) for functions $f_1$--$f_{24}$ for dimension 10. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*}\tiny +%\hfill80-D\hfill~\\[1ex] +{\normalsize \color{red} +\ifthenelse{\isundefined{\algorithmG}}{}{more than 6 algorithms: please split the tables below by hand until it fits to the page limits} +} +\mbox{\begin{minipage}[t]{0.495\textwidth} +\centering +\pptablesheader +\input{\bbobdatapath\algsfolder pptables_f001_10D} +\input{\bbobdatapath\algsfolder pptables_f002_10D} +\input{\bbobdatapath\algsfolder pptables_f003_10D} +\input{\bbobdatapath\algsfolder pptables_f004_10D} +\input{\bbobdatapath\algsfolder pptables_f005_10D} +\input{\bbobdatapath\algsfolder pptables_f006_10D} +\input{\bbobdatapath\algsfolder pptables_f007_10D} +\input{\bbobdatapath\algsfolder pptables_f008_10D} +\input{\bbobdatapath\algsfolder pptables_f009_10D} +\input{\bbobdatapath\algsfolder pptables_f010_10D} +\input{\bbobdatapath\algsfolder pptables_f011_10D} +\input{\bbobdatapath\algsfolder pptables_f012_10D} +\end{tabularx} +\end{minipage} +\hspace{0.002\textwidth} +\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\pptablesheader +\input{\bbobdatapath\algsfolder pptables_f013_10D} +\input{\bbobdatapath\algsfolder pptables_f014_10D} +\input{\bbobdatapath\algsfolder pptables_f015_10D} +\input{\bbobdatapath\algsfolder pptables_f016_10D} +\input{\bbobdatapath\algsfolder pptables_f017_10D} +\input{\bbobdatapath\algsfolder pptables_f018_10D} +\input{\bbobdatapath\algsfolder pptables_f019_10D} +\input{\bbobdatapath\algsfolder pptables_f020_10D} +\input{\bbobdatapath\algsfolder pptables_f021_10D} +\input{\bbobdatapath\algsfolder pptables_f022_10D} +\input{\bbobdatapath\algsfolder pptables_f023_10D} +\input{\bbobdatapath\algsfolder pptables_f024_10D} +\end{tabularx} +\end{minipage}} + +\caption{\label{tab:aRTs10} +\bbobpptablesmanylegend{dimension $10$} +} +\end{table*} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Table showing the average runtime (aRT in number of function +% evaluations) for functions $f_1$--$f_{24}$ for dimension 40. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*}\tiny +%\hfill80-D\hfill~\\[1ex] +{\normalsize \color{red} +\ifthenelse{\isundefined{\algorithmG}}{}{more than 6 algorithms: please split the tables below by hand until it fits to the page limits} +} +\mbox{\begin{minipage}[t]{0.495\textwidth} +\centering +\pptablesheader +\input{\bbobdatapath\algsfolder pptables_f001_40D} +\input{\bbobdatapath\algsfolder pptables_f002_40D} +\input{\bbobdatapath\algsfolder pptables_f003_40D} +\input{\bbobdatapath\algsfolder pptables_f004_40D} +\input{\bbobdatapath\algsfolder pptables_f005_40D} +\input{\bbobdatapath\algsfolder pptables_f006_40D} +\input{\bbobdatapath\algsfolder pptables_f007_40D} +\input{\bbobdatapath\algsfolder pptables_f008_40D} +\input{\bbobdatapath\algsfolder pptables_f009_40D} +\input{\bbobdatapath\algsfolder pptables_f010_40D} +\input{\bbobdatapath\algsfolder pptables_f011_40D} +\input{\bbobdatapath\algsfolder pptables_f012_40D} +\end{tabularx} +\end{minipage} +\hspace{0.002\textwidth} +\begin{minipage}[t]{0.499\textwidth}\tiny +\centering +\pptablesheader +\input{\bbobdatapath\algsfolder pptables_f013_40D} +\input{\bbobdatapath\algsfolder pptables_f014_40D} +\input{\bbobdatapath\algsfolder pptables_f015_40D} +\input{\bbobdatapath\algsfolder pptables_f016_40D} +\input{\bbobdatapath\algsfolder pptables_f017_40D} +\input{\bbobdatapath\algsfolder pptables_f018_40D} +\input{\bbobdatapath\algsfolder pptables_f019_40D} +\input{\bbobdatapath\algsfolder pptables_f020_40D} +\input{\bbobdatapath\algsfolder pptables_f021_40D} +\input{\bbobdatapath\algsfolder pptables_f022_40D} +\input{\bbobdatapath\algsfolder pptables_f023_40D} +\input{\bbobdatapath\algsfolder pptables_f024_40D} +\end{tabularx} +\end{minipage}} + +\caption{\label{tab:aRTs40} +\bbobpptablesmanylegend{dimension $40$} +} +\end{table*} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +}{} % end of all that comes for 2 or 3+ algorithms + + + +\ifthenelse{\equal{\numberofalgorithms}{two}}{ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Scatter plots per function. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{figure*} +\begin{tabular}{*{4}{@{}c@{}}} + \includegraphics[height=0.2\textwidth]{ppscatter_f001}& + \includegraphics[height=0.2\textwidth]{ppscatter_f002}& + \includegraphics[height=0.2\textwidth]{ppscatter_f003}& + \includegraphics[height=0.2\textwidth]{ppscatter_f004}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f005}& + \includegraphics[height=0.2\textwidth]{ppscatter_f006}& + \includegraphics[height=0.2\textwidth]{ppscatter_f007}& + \includegraphics[height=0.2\textwidth]{ppscatter_f008}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f009}& + \includegraphics[height=0.2\textwidth]{ppscatter_f010}& + \includegraphics[height=0.2\textwidth]{ppscatter_f011}& + \includegraphics[height=0.2\textwidth]{ppscatter_f012}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f013}& + \includegraphics[height=0.2\textwidth]{ppscatter_f014}& + \includegraphics[height=0.2\textwidth]{ppscatter_f015}& + \includegraphics[height=0.2\textwidth]{ppscatter_f016}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f017}& + \includegraphics[height=0.2\textwidth]{ppscatter_f018}& + \includegraphics[height=0.2\textwidth]{ppscatter_f019}& + \includegraphics[height=0.2\textwidth]{ppscatter_f020}\\[-0.6em] + \includegraphics[height=0.2\textwidth]{ppscatter_f021}& + \includegraphics[height=0.2\textwidth]{ppscatter_f022}& + \includegraphics[height=0.2\textwidth]{ppscatter_f023}& + \includegraphics[height=0.2\textwidth]{ppscatter_f024} +\end{tabular} +\caption{\label{fig:scatterplots} +\bbobppscatterlegend{$f_1$--$f_{24}$} +} +\end{figure*} + + +}{} % end of 2 algorithms template + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\bibliographystyle{ACM-Reference-Format} +\bibliography{bbob} % bbob.bib is the name of the Bibliography in this case + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\end{document} \ No newline at end of file From 469c7c6dccd11033fd0ba6382bd03bee01041319 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Mon, 18 Feb 2019 16:08:25 +0100 Subject: [PATCH 373/446] Added mixed-integer files --- .../build/matlab/cocoProblemGetNumberOfIntegerVariables.m | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 code-experiments/build/matlab/cocoProblemGetNumberOfIntegerVariables.m diff --git a/code-experiments/build/matlab/cocoProblemGetNumberOfIntegerVariables.m b/code-experiments/build/matlab/cocoProblemGetNumberOfIntegerVariables.m new file mode 100644 index 000000000..427a6fabc --- /dev/null +++ b/code-experiments/build/matlab/cocoProblemGetNumberOfIntegerVariables.m @@ -0,0 +1,7 @@ +% Returns the number of integer variables of the given problem (if > 0, all +% integer variables come before any continuous ones. +% +% Parameters: +% problem The given problem. +function nIntVar = cocoProblemGetNumberOfIntegerVariables(problem) +nIntVar = cocoCall('cocoProblemGetNumberOfIntegerVariables', problem); From 09d3004e4e5473acd82059f2b27d49b2ccfa9311 Mon Sep 17 00:00:00 2001 From: brockhof Date: Mon, 18 Feb 2019 16:30:05 +0100 Subject: [PATCH 374/446] simplified LaTeX templates for bbob-largescale and bbob-mixint --- .../latex-templates/templateBBOBLSarticle.tex | 27 +++++------------ .../latex-templates/templateMIXINTarticle.tex | 30 ++++++------------- 2 files changed, 17 insertions(+), 40 deletions(-) diff --git a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex index 482fc5ff5..3a00bf6ad 100644 --- a/code-postprocessing/latex-templates/templateBBOBLSarticle.tex +++ b/code-postprocessing/latex-templates/templateBBOBLSarticle.tex @@ -57,19 +57,8 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % read in data and deal with the different number of algorithms: \input{\bbobdatapath cocopp_commands.tex} -\ifthenelse{\isundefined{\numofalgs}} -{ - \newcommand{\numberofalgorithms}{one} -}{ - \ifthenelse{\isundefined{\algorithmC}} - { - \newcommand{\numberofalgorithms}{two} - }{ - \newcommand{\numberofalgorithms}{three} - } -} -\ifthenelse{\equal{\numberofalgorithms}{one}}{ +\ifthenelse{\equal{\numofalgs}{1}}{ \graphicspath{{\bbobdatapath\algfolder}}}{ \graphicspath{{\bbobdatapath\algsfolder}} } @@ -240,7 +229,7 @@ \section{CPU Timing} % note that the following text is just a proposal and can/should be changed to your needs: In order to evaluate the CPU timing of the algorithm, we have run the \change{\algorithmA} with restarts on the entire \bbobls test suite \cite{bbobls2019func} for $2 D$ function evaluations according to \cite{hansen2016exp}. The \change{C/Java/Matlab/Octave/Python} code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores \change{and (compile) options xxx}. The time per function evaluation for dimensions 20, 40, 80, 160, 320\change{, 640} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. -\ifthenelse{\equal{\numberofalgorithms}{one}}{}{ +\ifthenelse{\equal{\numofalgs}{1}}{}{ \change{repeat the above for any algorithm tested} } @@ -252,11 +241,11 @@ \section{Results} benchmark functions given in \cite{bbobls2019func} are presented in %% -\ifthenelse{\equal{\numberofalgorithms}{one}}{ +\ifthenelse{\equal{\numofalgs}{1}}{ Figures~\ref{fig:aRTgraphs}, \ref{fig:ECDFs}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs80} and \ref{tab:aRTs320}. -}{\ifthenelse{\equal{\numberofalgorithms}{two}}{ +}{\ifthenelse{\equal{\numofalgs}{2}}{ Figures~\ref{fig:scaling}, \ref{fig:scatterplots}, \ref{fig:ECDFs80D}, \ref{fig:ECDFs320D} and \ref{fig:ECDFsingleOne}, and Tables~\ref{tab:aRTs80} and \ref{tab:aRTs320}. -}{\ifthenelse{\equal{\numberofalgorithms}{three}}{ +}{\ifthenelse{\(\numofalgs > 2\)}{ Figures~\ref{fig:scaling}, \ref{fig:ECDFs80D}, \ref{fig:ECDFs320D}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs80} and \ref{tab:aRTs320}. }{}}} %% @@ -279,7 +268,7 @@ \section{Results} unsuccessful trial under consideration. -\ifthenelse{\equal{\numberofalgorithms}{one}}{ +\ifthenelse{\equal{\numofalgs}{1}}{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -535,7 +524,7 @@ \section{Results} -\ifthenelse{\equal{\numberofalgorithms}{two} \or \equal{\numberofalgorithms}{three}}{ +\ifthenelse{\numofalgs > 1}{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -783,7 +772,7 @@ \section{Results} -\ifthenelse{\equal{\numberofalgorithms}{two}}{ +\ifthenelse{\numofalgs = 2}{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/code-postprocessing/latex-templates/templateMIXINTarticle.tex b/code-postprocessing/latex-templates/templateMIXINTarticle.tex index cbb60200d..8b18e3b40 100644 --- a/code-postprocessing/latex-templates/templateMIXINTarticle.tex +++ b/code-postprocessing/latex-templates/templateMIXINTarticle.tex @@ -74,20 +74,8 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % read in data and deal with the different number of algorithms: \input{\bbobdatapath cocopp_commands.tex} -\ifthenelse{\equal{\numofalgs}{1}} -{ - \newcommand{\numberofalgorithms}{one} -} -{ - \ifthenelse{\equal{\numofalgs}{2}} - { - \newcommand{\numberofalgorithms}{two} - }{ - \newcommand{\numberofalgorithms}{three} - } -} -\ifthenelse{\equal{\numberofalgorithms}{one}}{ +\ifthenelse{\equal{\numofalgs}{1}}{ \graphicspath{{\bbobdatapath\algfolder}}}{ \graphicspath{{\bbobdatapath\algsfolder}} } @@ -253,7 +241,7 @@ \section{CPU Timing} %\change{replace the previous sentence with ``on the function $f_{8}$ with restarts for at least 30 seconds and until a maximum budget equal to \change{$400 (n + 2)$} is reached.'' in case you use the old code base} The \change{C/Java/Matlab/Octave/Python} code was run on a \change{Mac Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz} with \change{1} processor and \change{4} cores \change{and (compile) options xxx}. The time per function evaluation for dimensions 2, 3, 5, 10, 20\change{, 40} equals \change{$x.x$}, \change{$x.x$}, \change{$x.x$}, \change{$xx$}, \change{$xxx$}\change{, and $xxx$} seconds respectively. -\ifthenelse{\equal{\numberofalgorithms}{one}}{}{ +\ifthenelse{\equal{\numofalgs}{1}}{}{ \change{repeat the above for any algorithm tested} } @@ -265,14 +253,14 @@ \section{Results} \cite{hansen2016perfass} on the benchmark functions given in \TODO{\cite{tusar2019}} are presented in %% -\ifthenelse{\equal{\numberofalgorithms}{one}}{ +\ifthenelse{\equal{\numofalgs}{1}}{ Figures~\ref{fig:aRTgraphs} and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:aRTs10} and \ref{tab:aRTs40}. %, \ref{tab:aRTloss}, and \ref{fig:aRTlogloss}. -}{\ifthenelse{\equal{\numberofalgorithms}{two}}{ +}{\ifthenelse{\equal{\numofalgs}{2}}{ Figures~\ref{fig:scaling}, \ref{fig:ECDFs10D}, \ref{fig:ECDFs40D}, \ref{fig:ECDFsingleOne}, and \ref{fig:scatterplots} and Tables~\ref{tab:aRTs10} and \ref{tab:aRTs40}. -}{\ifthenelse{\equal{\numberofalgorithms}{three}}{ +}{\ifthenelse{\(\numofalgs > 2\)}{ Figures~\ref{fig:scaling}, \ref{fig:ECDFs}, and \ref{fig:ECDFsingleOne} and Tables~\ref{tab:ERTs5} and \ref{tab:ERTs20}. -}{}}} +}}{}} %% @@ -297,7 +285,7 @@ \section{Results} -\ifthenelse{\equal{\numberofalgorithms}{one}}{ +\ifthenelse{\equal{\numofalgs}{1}}{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -616,7 +604,7 @@ \section{Results} -\ifthenelse{\equal{\numberofalgorithms}{two} \or \equal{\numberofalgorithms}{three}}{ +\ifthenelse{\numofalgs > 1}{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -868,7 +856,7 @@ \section{Results} -\ifthenelse{\equal{\numberofalgorithms}{two}}{ +\ifthenelse{\equal{\numofalgs}{2}}{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% From 9499778126b0add2ada9c976dda0c9324f5619ff Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Tue, 19 Feb 2019 06:09:32 +0100 Subject: [PATCH 375/446] Fixing memory leak --- .../src/transform_vars_permutation_helpers.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/transform_vars_permutation_helpers.c b/code-experiments/src/transform_vars_permutation_helpers.c index beede80da..386883e87 100644 --- a/code-experiments/src/transform_vars_permutation_helpers.c +++ b/code-experiments/src/transform_vars_permutation_helpers.c @@ -35,17 +35,14 @@ static int f_compare_doubles_for_random_permutation(const void *a, const void *b */ static void coco_compute_random_permutation(size_t *P, long seed, size_t n) { long i; - double *tmp_normal; - tmp_normal = coco_allocate_vector(n); - bbob2009_gauss(tmp_normal, n, seed); perm_random_data = coco_allocate_vector(n); + bbob2009_gauss(perm_random_data, n, seed); for (i = 0; i < n; i++){ P[i] = (size_t) i; - perm_random_data[i] = tmp_normal[i]; } qsort(P, n, sizeof(size_t), f_compare_doubles_for_random_permutation); - coco_free_memory(tmp_normal); + coco_free_memory(perm_random_data); } @@ -76,16 +73,13 @@ static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed long i, idx_swap, tmp_seed; size_t lower_bound, upper_bound, first_swap_var, second_swap_var, tmp; size_t *idx_order; - double *tmp_uniform; - tmp_uniform = coco_allocate_vector(n); - bbob2009_unif(tmp_uniform, n, seed); - perm_random_data = coco_allocate_vector(n); + bbob2009_unif(perm_random_data, n, seed); + idx_order = coco_allocate_vector_size_t(n); for (i = 0; i < n; i++){ P[i] = (size_t) i; idx_order[i] = (size_t) i; - perm_random_data[i] = tmp_uniform[i]; } if (swap_range > 0) { @@ -125,7 +119,7 @@ static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed } } - coco_free_memory(tmp_uniform); + coco_free_memory(perm_random_data); coco_free_memory(idx_order); } From b146a09f5a7e9a452ae21289e1337c06a8e8029c Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Tue, 19 Feb 2019 09:38:09 +0100 Subject: [PATCH 376/446] Remove logger_biobj.c from pull request since it is not modified --- code-experiments/src/logger_biobj.c | 1884 +++++++++++++-------------- 1 file changed, 942 insertions(+), 942 deletions(-) diff --git a/code-experiments/src/logger_biobj.c b/code-experiments/src/logger_biobj.c index 28b59de18..35f1dadd3 100644 --- a/code-experiments/src/logger_biobj.c +++ b/code-experiments/src/logger_biobj.c @@ -1,942 +1,942 @@ -/** - * @file logger_biobj.c - * @brief Implementation of the bbob-biobj logger. - * - * Logs the values of the implemented indicators and archives nondominated solutions. - * Produces four kinds of files: - * - The "info" files contain high-level information on the performed experiment. One .info file is created - * for each problem group (and indicator type) and contains information on all the problems in that problem - * group (and indicator type). - * - The "dat" files contain function evaluations, indicator values and target hits for every target hit as - * well as for the last evaluation. One .dat file is created for each problem function and dimension (and - * indicator type) and contains information for all instances of that problem (and indicator type). - * - The "tdat" files contain function evaluation and indicator values for every predefined evaluation - * number as well as for the last evaluation. One .tdat file is created for each problem function and - * dimension (and indicator type) and contains information for all instances of that problem (and indicator - * type). - * - The "adat" files are archive files that contain function evaluations, 2 objectives and dim variables - * for every nondominated solution. Whether these files are created, at what point in time the logger writes - * nondominated solutions to the archive and whether the decision variables are output or not depends on - * the values of log_nondom_mode and log_nondom_mode. See the bi-objective observer constructor - * observer_biobj() for more information. One .adat file is created for each problem function, dimension - * and instance. - * - * @note Whenever in this file a ROI is mentioned, it means the (normalized) region of interest in the - * objective space. The non-normalized ROI is a rectangle with the ideal and nadir points as its two - * opposite vertices, while the normalized ROI is the square [0, 1]^2. If not specifically mentioned, the - * normalized ROI is assumed. - * - * @note This logger can handle both the original bbob-biobj test suite with 55 and the extended - * bbob-biobj-ext test suite with 96 functions. - */ - -#include -#include -#include - -#include "coco.h" -#include "coco_internal.h" - -#include "coco_utilities.c" -#include "coco_problem.c" -#include "coco_string.c" -#include "mo_avl_tree.c" -#include "observer_biobj.c" - -#include "mo_utilities.c" - -/** @brief Number of implemented indicators */ -#define LOGGER_BIOBJ_NUMBER_OF_INDICATORS 1 - -/** @brief Names of implemented indicators - * - * "hyp" stands for the hypervolume indicator. - * */ -const char *logger_biobj_indicators[LOGGER_BIOBJ_NUMBER_OF_INDICATORS] = { "hyp" }; - -/** - * @brief The indicator type. - * - * The hypervolume indicator ("hyp") - * - * The hypervolume indicator measures the volume of the portion of the ROI in the objective space that is - * dominated by the current Pareto front approximation. Instead of logging the hypervolume indicator value, - * this implementation logs the difference between the best know hypervolume indicator (a value stored in - * best_value) and the hypervolume indicator of the current Pareto front approximation (current_value). The - * current_value equals 0 if no solution is located in the ROI. In order to be able to register the - * performance of an optimizer even before the ROI is reached, an additional value is computed when no - * solutions are located inside the ROI. This value is stored in additional_penalty and equals the - * normalized distance to the ROI of the solution closest to the ROI (additional_penalty is set to 0 as - * soon as a solution reaches the ROI). The final value to be logged (overall_value) is therefore computed - * in the following way: - * - * overall_value = best_value - current_value + additional_penalty - * - * @note Other indicators are yet to be implemented. - */ -typedef struct { - - char *name; /**< @brief Name of the indicator used for identification and the output. */ - - FILE *dat_file; /**< @brief File for logging indicator values at predefined values. */ - FILE *tdat_file; /**< @brief File for logging indicator values at predefined evaluations. */ - FILE *info_file; /**< @brief File for logging summary information on algorithm performance. */ - - int target_hit; /**< @brief Whether the target was hit in the latest evaluation. */ - coco_observer_targets_t *targets; - /**< @brief Triggers based on target values. */ - int evaluation_logged; /**< @brief Whether the whether the latest evaluation was logged. */ - coco_observer_evaluations_t *evaluations; - /**< @brief Triggers based on numbers of evaluations. */ - - double best_value; /**< @brief The best known indicator value for this problem. */ - double current_value; /**< @brief The current indicator value. */ - double additional_penalty; /**< @brief Additional penalty for solutions outside the ROI. */ - double overall_value; /**< @brief The overall value of the indicator tested for target hits. */ - double previous_value; /**< @brief The previous overall value of the indicator. */ - -} logger_biobj_indicator_t; - -/** - * @brief The bi-objective logger data type. - * - * @note Some fields from the observers (coco_observer as well as observer_biobj) need to be copied here - * because the observers can be deleted before the logger is finalized and we need these fields for - * finalization. - */ -typedef struct { - observer_biobj_log_nondom_e log_nondom_mode; - /**< @brief Mode for archiving nondominated solutions. */ - FILE *adat_file; /**< @brief File for archiving nondominated solutions (all or final). */ - - int log_vars; /**< @brief Whether to log the decision values. */ - - int precision_x; /**< @brief Precision for outputting decision values. */ - int precision_f; /**< @brief Precision for outputting objective values. */ - - size_t number_of_evaluations; /**< @brief The number of evaluations performed so far. */ - size_t number_of_variables; /**< @brief Dimension of the problem. */ - size_t number_of_objectives; /**< @brief Number of objectives (clearly equal to 2). */ - size_t suite_dep_instance; /**< @brief Suite-dependent instance number of the observed problem. */ - - size_t previous_evaluations; /**< @brief The number of evaluations from the previous call to the logger. */ - - avl_tree_t *archive_tree; /**< @brief The tree keeping currently non-dominated solutions. */ - avl_tree_t *buffer_tree; /**< @brief The tree with pointers to nondominated solutions that haven't - been logged yet. */ - - /* Indicators (TODO: Implement others!) */ - int compute_indicators; /**< @brief Whether to compute the indicators. */ - logger_biobj_indicator_t *indicators[LOGGER_BIOBJ_NUMBER_OF_INDICATORS]; - /**< @brief The implemented indicators. */ -} logger_biobj_data_t; - -/** - * @brief The type for the node's item in the AVL tree as used by the bi-objective logger. - * - * Contains information on the exact objective values (y) and their rounded normalized values (normalized_y). - * The exact values are used for output, while archive update and indicator computation use the normalized - * values. - */ -typedef struct { - double *x; /**< @brief The decision values of this solution. */ - double *y; /**< @brief The values of objectives of this solution. */ - double *normalized_y; /**< @brief The values of normalized objectives of this solution. */ - size_t evaluation_number; /**< @brief The evaluation number of when the solution was created. */ - - double indicator_contribution[LOGGER_BIOBJ_NUMBER_OF_INDICATORS]; - /**< @brief The contribution of this solution to the overall indicator values. */ - int within_ROI; /**< @brief Whether the solution is within the region of interest (ROI). */ - -} logger_biobj_avl_item_t; - -/** - * @brief Creates and returns the information on the solution in the form of a node's item in the AVL tree. - */ -static logger_biobj_avl_item_t* logger_biobj_node_create(const coco_problem_t *problem, - const double *x, - const double *y, - const size_t evaluation_number, - const size_t dim, - const size_t num_obj) { - - size_t i; - - /* Allocate memory to hold the data structure logger_biobj_node_t */ - logger_biobj_avl_item_t *item = (logger_biobj_avl_item_t*) coco_allocate_memory(sizeof(*item)); - - /* Allocate memory to store the (copied) data of the new node */ - item->x = coco_allocate_vector(dim); - item->y = coco_allocate_vector(num_obj); - - /* Copy the data */ - for (i = 0; i < dim; i++) - item->x[i] = x[i]; - for (i = 0; i < num_obj; i++) - item->y[i] = y[i]; - - /* Compute the normalized y */ - item->normalized_y = mo_normalize(item->y, problem->best_value, problem->nadir_value, num_obj); - item->within_ROI = mo_is_within_ROI(item->normalized_y, num_obj); - - item->evaluation_number = evaluation_number; - for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) - item->indicator_contribution[i] = 0; - - return item; -} - -/** - * @brief Frees the data of the given logger_biobj_avl_item_t. - */ -static void logger_biobj_node_free(logger_biobj_avl_item_t *item, void *userdata) { - - coco_free_memory(item->x); - coco_free_memory(item->y); - coco_free_memory(item->normalized_y); - coco_free_memory(item); - (void) userdata; /* To silence the compiler */ -} - -/** - * @brief Defines the ordering of AVL tree nodes based on the value of the last objective. - * - * @note This ordering is used by the archive_tree. - */ -static int avl_tree_compare_by_last_objective(const logger_biobj_avl_item_t *item1, - const logger_biobj_avl_item_t *item2, - void *userdata) { - if (coco_double_almost_equal(item1->normalized_y[1], item2->normalized_y[1], mo_precision)) - return 0; - else if (item1->normalized_y[1] < item2->normalized_y[1]) - return -1; - else - return 1; - - (void) userdata; /* To silence the compiler */ -} - -/** - * @brief Defines the ordering of AVL tree nodes based on the evaluation number (the time when the nodes were - * created). - * - * @note This ordering is used by the buffer_tree. - */ -static int avl_tree_compare_by_eval_number(const logger_biobj_avl_item_t *item1, - const logger_biobj_avl_item_t *item2, - void *userdata) { - if (item1->evaluation_number < item2->evaluation_number) - return -1; - else if (item1->evaluation_number > item2->evaluation_number) - return 1; - else - return 0; - - (void) userdata; /* To silence the compiler */ -} - -/** - * @brief Outputs the AVL tree to the given file. Returns the number of nodes in the tree. - */ -static size_t logger_biobj_tree_output(FILE *file, - const avl_tree_t *tree, - const size_t dim, - const size_t num_obj, - const int log_vars, - const int precision_x, - const int precision_f) { - - avl_node_t *solution; - size_t i; - size_t j; - size_t number_of_nodes = 0; - - if (tree->tail) { - /* There is at least a solution in the tree to output */ - solution = tree->head; - while (solution != NULL) { - fprintf(file, "%lu\t", (unsigned long) ((logger_biobj_avl_item_t*) solution->item)->evaluation_number); - for (j = 0; j < num_obj; j++) - fprintf(file, "%.*e\t", precision_f, ((logger_biobj_avl_item_t*) solution->item)->y[j]); - if (log_vars) { - for (i = 0; i < dim; i++) - fprintf(file, "%.*e\t", precision_x, ((logger_biobj_avl_item_t*) solution->item)->x[i]); - } - fprintf(file, "\n"); - solution = solution->next; - number_of_nodes++; - } - } - - return number_of_nodes; -} - -/** - * @brief Updates the archive and buffer trees with the given node. - * - * Checks for domination and updates the archive tree and the values of the indicators if the given node is - * not weakly dominated by existing nodes in the archive tree. This is where the main computation of - * indicator values takes place. - * - * @return 1 if the update was performed and 0 otherwise. - */ -static int logger_biobj_tree_update(logger_biobj_data_t *logger, - logger_biobj_avl_item_t *node_item) { - - avl_node_t *node, *next_node, *new_node; - int trigger_update = 0; - int dominance; - size_t i; - int previous_unavailable = 0; - - /* Find the first point that is not worse than the new point (NULL if such point does not exist) */ - node = avl_item_search_right(logger->archive_tree, node_item, NULL); - - if (node == NULL) { - /* The new point is an extreme point */ - trigger_update = 1; - next_node = logger->archive_tree->head; - } else { - dominance = mo_get_dominance(node_item->normalized_y, - ((logger_biobj_avl_item_t*) node->item)->normalized_y, logger->number_of_objectives); - if (dominance > -1) { - trigger_update = 1; - next_node = node->next; - if (dominance == 1) { - /* The new point dominates the next point, remove the next point */ - if (logger->compute_indicators) { - for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { - logger->indicators[i]->current_value -= ((logger_biobj_avl_item_t*) node->item)->indicator_contribution[i]; - } - } - avl_item_delete(logger->buffer_tree, node->item); - avl_node_delete(logger->archive_tree, node); - } - } else { - /* The new point is dominated or equal to an existing one, nothing more to do */ - trigger_update = 0; - } - } - - if (!trigger_update) { - logger_biobj_node_free(node_item, NULL); - } else { - /* Perform tree update */ - while (next_node != NULL) { - /* Check the dominance relation between the new node and the next node. There are only two possibilities: - * dominance = 0: the new node and the next node are nondominated - * dominance = 1: the new node dominates the next node */ - node = next_node; - dominance = mo_get_dominance(node_item->normalized_y, - ((logger_biobj_avl_item_t*) node->item)->normalized_y, logger->number_of_objectives); - if (dominance == 1) { - /* The new point dominates the next point, remove the next point */ - if (logger->compute_indicators) { - for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { - logger->indicators[i]->current_value -= ((logger_biobj_avl_item_t*) node->item)->indicator_contribution[i]; - } - } - next_node = node->next; - avl_item_delete(logger->buffer_tree, node->item); - avl_node_delete(logger->archive_tree, node); - } else { - break; - } - } - - new_node = avl_item_insert(logger->archive_tree, node_item); - assert(new_node != NULL); - avl_item_insert(logger->buffer_tree, node_item); - - if (logger->compute_indicators) { - if (node_item->within_ROI) { - /* Compute indicator value for new node and update the indicator value of the affected nodes */ - logger_biobj_avl_item_t *next_item, *previous_item; - - if (new_node->next != NULL) { - next_item = (logger_biobj_avl_item_t*) new_node->next->item; - if (next_item->within_ROI) { - for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { - logger->indicators[i]->current_value -= next_item->indicator_contribution[i]; - if (strcmp(logger->indicators[i]->name, "hyp") == 0) { - next_item->indicator_contribution[i] = (node_item->normalized_y[0] - next_item->normalized_y[0]) - * (1 - next_item->normalized_y[1]); - assert(next_item->indicator_contribution[i] >= 0); - } else { - coco_error( - "logger_biobj_tree_update(): Indicator computation not implemented yet for indicator %s", - logger->indicators[i]->name); - } - logger->indicators[i]->current_value += next_item->indicator_contribution[i]; - } - } - } - - previous_unavailable = 0; - if (new_node->prev != NULL) { - previous_item = (logger_biobj_avl_item_t*) new_node->prev->item; - if (previous_item->within_ROI) { - for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { - if (strcmp(logger->indicators[i]->name, "hyp") == 0) { - node_item->indicator_contribution[i] = (previous_item->normalized_y[0] - node_item->normalized_y[0]) - * (1 - node_item->normalized_y[1]); - assert(node_item->indicator_contribution[i] >= 0); - } else { - coco_error( - "logger_biobj_tree_update(): Indicator computation not implemented yet for indicator %s", - logger->indicators[i]->name); - } - } - } else { - previous_unavailable = 1; - } - } else { - previous_unavailable = 1; - } - - if (previous_unavailable) { - /* Previous item does not exist or is out of ROI, use reference point instead */ - for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { - if (strcmp(logger->indicators[i]->name, "hyp") == 0) { - node_item->indicator_contribution[i] = (1 - node_item->normalized_y[0]) - * (1 - node_item->normalized_y[1]); - assert(node_item->indicator_contribution[i] >= 0); - } else { - coco_error( - "logger_biobj_tree_update(): Indicator computation not implemented yet for indicator %s", - logger->indicators[i]->name); - } - } - } - - for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { - if (strcmp(logger->indicators[i]->name, "hyp") == 0) { - assert(node_item->indicator_contribution[i] >= 0); - logger->indicators[i]->current_value += node_item->indicator_contribution[i]; - } - } - } - } - } - - return trigger_update; -} - -/** - * @brief Initializes the indicator with name indicator_name. - * - * Opens files for writing and resets counters. - */ -static logger_biobj_indicator_t *logger_biobj_indicator(const logger_biobj_data_t *logger, - const coco_observer_t *observer, - const coco_problem_t *problem, - const char *indicator_name) { - - observer_biobj_data_t *observer_data; - logger_biobj_indicator_t *indicator; - char *prefix, *file_name, *path_name; - int info_file_exists = 0; - - indicator = (logger_biobj_indicator_t *) coco_allocate_memory(sizeof(*indicator)); - assert(observer); - assert(observer->data); - observer_data = (observer_biobj_data_t *) observer->data; - - indicator->name = coco_strdup(indicator_name); - - indicator->best_value = suite_biobj_get_best_value(indicator->name, problem->problem_id); - indicator->target_hit = 0; - indicator->evaluation_logged = 0; - indicator->current_value = 0; - indicator->additional_penalty = DBL_MAX; - indicator->overall_value = 0; - indicator->previous_value = 0; - - indicator->targets = coco_observer_targets(observer->number_target_triggers, observer->target_precision); - indicator->evaluations = coco_observer_evaluations(observer->base_evaluation_triggers, problem->number_of_variables); - - /* Prepare the info file */ - path_name = coco_allocate_string(COCO_PATH_MAX + 1); - memcpy(path_name, observer->result_folder, strlen(observer->result_folder) + 1); - coco_create_directory(path_name); - file_name = coco_strdupf("%s_%s.info", problem->problem_type, indicator_name); - coco_join_path(path_name, COCO_PATH_MAX, file_name, NULL); - info_file_exists = coco_file_exists(path_name); - indicator->info_file = fopen(path_name, "a"); - if (indicator->info_file == NULL) { - coco_error("logger_biobj_indicator() failed to open file '%s'.", path_name); - return NULL; /* Never reached */ - } - coco_free_memory(file_name); - coco_free_memory(path_name); - - /* Prepare the tdat file */ - path_name = coco_allocate_string(COCO_PATH_MAX + 1); - memcpy(path_name, observer->result_folder, strlen(observer->result_folder) + 1); - coco_join_path(path_name, COCO_PATH_MAX, problem->problem_type, NULL); - coco_create_directory(path_name); - prefix = coco_remove_from_string(problem->problem_id, "_i", "_d"); - file_name = coco_strdupf("%s_%s.tdat", prefix, indicator_name); - coco_join_path(path_name, COCO_PATH_MAX, file_name, NULL); - indicator->tdat_file = fopen(path_name, "a"); - if (indicator->tdat_file == NULL) { - coco_error("logger_biobj_indicator() failed to open file '%s'.", path_name); - return NULL; /* Never reached */ - } - coco_free_memory(file_name); - coco_free_memory(path_name); - - /* Prepare the dat file */ - path_name = coco_allocate_string(COCO_PATH_MAX + 1); - memcpy(path_name, observer->result_folder, strlen(observer->result_folder) + 1); - coco_join_path(path_name, COCO_PATH_MAX, problem->problem_type, NULL); - coco_create_directory(path_name); - file_name = coco_strdupf("%s_%s.dat", prefix, indicator_name); - coco_join_path(path_name, COCO_PATH_MAX, file_name, NULL); - indicator->dat_file = fopen(path_name, "a"); - if (indicator->dat_file == NULL) { - coco_error("logger_biobj_indicator() failed to open file '%s'.", path_name); - return NULL; /* Never reached */ - } - - /* Output header information to the info file */ - if (!info_file_exists) { - /* Output algorithm name */ - assert(problem->suite); - fprintf(indicator->info_file, - "suite = '%s', algorithm = '%s', indicator = '%s', folder = '%s', coco_version = '%s'\n%% %s", - problem->suite->suite_name, observer->algorithm_name, indicator_name, problem->problem_type, - coco_version, observer->algorithm_info); - if (logger->log_nondom_mode == LOG_NONDOM_READ) - fprintf(indicator->info_file, " (reconstructed)"); - } - if ((observer_data->previous_function != problem->suite_dep_function) - || (observer_data->previous_dimension != problem->number_of_variables)) { - fprintf(indicator->info_file, "\nfunction = %2lu, ", (unsigned long) problem->suite_dep_function); - fprintf(indicator->info_file, "dim = %2lu, ", (unsigned long) problem->number_of_variables); - fprintf(indicator->info_file, "%s", file_name); - } - - coco_free_memory(prefix); - coco_free_memory(file_name); - coco_free_memory(path_name); - - /* Output header information to the dat file */ - fprintf(indicator->dat_file, "%%\n%% index = %lu, name = %s\n", (unsigned long) problem->suite_dep_index, - problem->problem_name); - fprintf(indicator->dat_file, "%% instance = %lu, reference value = %.*e\n", - (unsigned long) problem->suite_dep_instance, logger->precision_f, indicator->best_value); - fprintf(indicator->dat_file, "%% function evaluation | indicator value | target hit\n"); - - /* Output header information to the tdat file */ - fprintf(indicator->tdat_file, "%%\n%% index = %lu, name = %s\n", (unsigned long) problem->suite_dep_index, - problem->problem_name); - fprintf(indicator->tdat_file, "%% instance = %lu, reference value = %.*e\n", - (unsigned long) problem->suite_dep_instance, logger->precision_f, indicator->best_value); - fprintf(indicator->tdat_file, "%% function evaluation | indicator value\n"); - - return indicator; -} - -/** - * @brief Outputs the final information about this indicator. - */ -static void logger_biobj_indicator_finalize(logger_biobj_indicator_t *indicator, const logger_biobj_data_t *logger) { - - /* Log the last eval_number in the dat file if wasn't already logged */ - if (!indicator->target_hit) { - fprintf(indicator->dat_file, "%lu\t%.*e\t%.*e\n", (unsigned long) logger->number_of_evaluations, - logger->precision_f, indicator->overall_value, logger->precision_f, - ((coco_observer_targets_t *) indicator->targets)->value); - } - - /* Log the last eval_number in the tdat file if wasn't already logged */ - if (!indicator->evaluation_logged) { - fprintf(indicator->tdat_file, "%lu\t%.*e\n", (unsigned long) logger->number_of_evaluations, - logger->precision_f, indicator->overall_value); - } - - /* Log the information in the info file */ - fprintf(indicator->info_file, ", %lu:%lu|%.1e", (unsigned long) logger->suite_dep_instance, - (unsigned long) logger->number_of_evaluations, indicator->overall_value); - fflush(indicator->info_file); -} - -/** - * @brief Frees the memory of the given indicator. - */ -static void logger_biobj_indicator_free(void *stuff) { - - logger_biobj_indicator_t *indicator; - - assert(stuff != NULL); - indicator = (logger_biobj_indicator_t *) stuff; - - if (indicator->name != NULL) { - coco_free_memory(indicator->name); - indicator->name = NULL; - } - - if (indicator->dat_file != NULL) { - fclose(indicator->dat_file); - indicator->dat_file = NULL; - } - - if (indicator->tdat_file != NULL) { - fclose(indicator->tdat_file); - indicator->tdat_file = NULL; - } - - if (indicator->info_file != NULL) { - fclose(indicator->info_file); - indicator->info_file = NULL; - } - - if (indicator->targets != NULL){ - coco_free_memory(indicator->targets); - indicator->targets = NULL; - } - - if (indicator->evaluations != NULL){ - coco_observer_evaluations_free(indicator->evaluations); - indicator->evaluations = NULL; - } - - coco_free_memory(stuff); - -} - -/* - * @brief Outputs the information according to the observer options. - * - * Outputs to the: - * - dat file, if the archive was updated and a new target was reached for an indicator; - * - tdat file, if the number of evaluations matches one of the predefined numbers. - * - * Note that a target is reached when - * best_value - current_value + additional_penalty <= relative_target_value - * - * The relative_target_value is a target for indicator difference, not the actual indicator value! - */ -static void logger_biobj_output(logger_biobj_data_t *logger, - const int update_performed, - const logger_biobj_avl_item_t *node_item) { - - size_t i, j; - logger_biobj_indicator_t *indicator; - - if (logger->compute_indicators) { - for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { - - indicator = logger->indicators[i]; - indicator->target_hit = 0; - indicator->previous_value = indicator->overall_value; - - /* If the update was performed, update the overall indicator value */ - if (update_performed) { - /* Compute the overall_value of an indicator */ - if (strcmp(indicator->name, "hyp") == 0) { - if (coco_double_almost_equal(indicator->current_value, 0, mo_precision)) { - /* Update the additional penalty for hypervolume (the minimal distance from the nondominated set - * to the ROI) */ - double new_distance = mo_get_distance_to_ROI(node_item->normalized_y, logger->number_of_objectives); - indicator->additional_penalty = coco_double_min(indicator->additional_penalty, new_distance); - assert(indicator->additional_penalty >= 0); - } else { - indicator->additional_penalty = 0; - } - indicator->overall_value = indicator->best_value - indicator->current_value - + indicator->additional_penalty; - } else { - coco_error("logger_biobj_evaluate(): Indicator computation not implemented yet for indicator %s", - indicator->name); - } - - /* Check whether a target was hit */ - indicator->target_hit = coco_observer_targets_trigger(indicator->targets, indicator->overall_value); - } - - /* Log to the dat file if a target was hit */ - if (indicator->target_hit) { - fprintf(indicator->dat_file, "%lu\t%.*e\t%.*e\n", (unsigned long) logger->number_of_evaluations, - logger->precision_f, indicator->overall_value, logger->precision_f, - ((coco_observer_targets_t *) indicator->targets)->value); - } - - if (logger->log_nondom_mode == LOG_NONDOM_READ) { - /* Log to the tdat file the previous indicator value if any evaluation number between the previous and - * this one matches one of the predefined evaluation numbers. */ - for (j = logger->previous_evaluations + 1; j < logger->number_of_evaluations; j++) { - indicator->evaluation_logged = coco_observer_evaluations_trigger(indicator->evaluations, j); - if (indicator->evaluation_logged) { - fprintf(indicator->tdat_file, "%lu\t%.*e\n", (unsigned long) j, logger->precision_f, - indicator->previous_value); - } - } - } - - /* Log to the tdat file if the number of evaluations matches one of the predefined numbers */ - indicator->evaluation_logged = coco_observer_evaluations_trigger(indicator->evaluations, - logger->number_of_evaluations); - if (indicator->evaluation_logged) { - fprintf(indicator->tdat_file, "%lu\t%.*e\n", (unsigned long) logger->number_of_evaluations, - logger->precision_f, indicator->overall_value); - } - - } - } -} - -/** - * @brief Evaluates the function, increases the number of evaluations and outputs information according to - * observer options. - */ -static void logger_biobj_evaluate(coco_problem_t *problem, const double *x, double *y) { - - logger_biobj_data_t *logger; - logger_biobj_avl_item_t *node_item; - int update_performed; - coco_problem_t *inner_problem; - - logger = (logger_biobj_data_t *) coco_problem_transformed_get_data(problem); - inner_problem = coco_problem_transformed_get_inner_problem(problem); - - /* Evaluate function */ - coco_evaluate_function(inner_problem, x, y); - logger->number_of_evaluations++; - - node_item = logger_biobj_node_create(inner_problem, x, y, logger->number_of_evaluations, logger->number_of_variables, - logger->number_of_objectives); - - /* Update the archive with the new solution, if it is not dominated by or equal to existing solutions in - * the archive */ - update_performed = logger_biobj_tree_update(logger, node_item); - - /* If the archive was updated and you need to log all nondominated solutions, output the new solution to - * nondom_file */ - if (update_performed && (logger->log_nondom_mode == LOG_NONDOM_ALL)) { - logger_biobj_tree_output(logger->adat_file, logger->buffer_tree, logger->number_of_variables, - logger->number_of_objectives, logger->log_vars, logger->precision_x, logger->precision_f); - avl_tree_purge(logger->buffer_tree); - - /* Flush output so that impatient users can see progress. */ - fflush(logger->adat_file); - } - - /* Output according to observer options */ - logger_biobj_output(logger, update_performed, node_item); -} - -/** - * Sets the number of evaluations, adds the objective vector to the archive and outputs information according - * to observer options (but does not output the archive). - * - * @note Vector y must point to a correctly sized allocated memory region and the given evaluation number must - * be larger than the existing one. - * - * @param problem The given COCO problem. - * @param evaluation The number of evaluations. - * @param y The objective vector. - * @return 1 if archive was updated was done and 0 otherwise. - */ -int coco_logger_biobj_feed_solution(coco_problem_t *problem, const size_t evaluation, const double *y) { - - logger_biobj_data_t *logger; - logger_biobj_avl_item_t *node_item; - int update_performed; - coco_problem_t *inner_problem; - double *x; - size_t i; - - assert(problem != NULL); - logger = (logger_biobj_data_t *) coco_problem_transformed_get_data(problem); - inner_problem = coco_problem_transformed_get_inner_problem(problem); - assert(logger->log_nondom_mode == LOG_NONDOM_READ); - - /* Set the number of evaluations */ - logger->previous_evaluations = logger->number_of_evaluations; - if (logger->previous_evaluations >= evaluation) - coco_error("coco_logger_biobj_reconstruct(): Evaluation %lu came before evaluation %lu. Note that " - "the evaluations need to be always increasing.", logger->previous_evaluations, evaluation); - logger->number_of_evaluations = evaluation; - - /* Update the archive with the new solution */ - x = coco_allocate_vector(problem->number_of_variables); - for (i = 0; i < problem->number_of_variables; i++) - x[i] = 0; - node_item = logger_biobj_node_create(inner_problem, x, y, logger->number_of_evaluations, - logger->number_of_variables, logger->number_of_objectives); - coco_free_memory(x); - - /* Update the archive */ - update_performed = logger_biobj_tree_update(logger, node_item); - - /* Output according to observer options */ - logger_biobj_output(logger, update_performed, node_item); - - return update_performed; -} - -/** - * @brief Outputs the final nondominated solutions to the archive file. - */ -static void logger_biobj_finalize(logger_biobj_data_t *logger) { - - avl_tree_t *resorted_tree; - avl_node_t *solution; - - /* Re-sort archive_tree according to time stamp and then output it */ - resorted_tree = avl_tree_construct((avl_compare_t) avl_tree_compare_by_eval_number, NULL); - - if (logger->archive_tree->tail) { - /* There is at least a solution in the tree to output */ - solution = logger->archive_tree->head; - while (solution != NULL) { - avl_item_insert(resorted_tree, solution->item); - solution = solution->next; - } - } - - logger_biobj_tree_output(logger->adat_file, resorted_tree, logger->number_of_variables, - logger->number_of_objectives, logger->log_vars, logger->precision_x, logger->precision_f); - - avl_tree_destruct(resorted_tree); -} - -/** - * @brief Frees the memory of the given biobjective logger. - */ -static void logger_biobj_free(void *stuff) { - - logger_biobj_data_t *logger; - size_t i; - - assert(stuff != NULL); - logger = (logger_biobj_data_t *) stuff; - - if (logger->log_nondom_mode == LOG_NONDOM_FINAL) { - logger_biobj_finalize(logger); - } - - if (logger->compute_indicators) { - for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { - logger_biobj_indicator_finalize(logger->indicators[i], logger); - logger_biobj_indicator_free(logger->indicators[i]); - } - } - - if (((logger->log_nondom_mode == LOG_NONDOM_ALL) || (logger->log_nondom_mode == LOG_NONDOM_FINAL)) && - (logger->adat_file != NULL)) { - fprintf(logger->adat_file, "%% evaluations = %lu\n", (unsigned long) logger->number_of_evaluations); - fclose(logger->adat_file); - logger->adat_file = NULL; - } - - avl_tree_destruct(logger->archive_tree); - avl_tree_destruct(logger->buffer_tree); - -} - -/** - * @brief Initializes the biobjective logger. - * - * Copies all observer field values that are needed after initialization into logger field values for two - * reasons: - * - If the observer is deleted before the suite, the observer is not available anymore when the logger - * is finalized. - * - This reduces function calls. - */ -static coco_problem_t *logger_biobj(coco_observer_t *observer, coco_problem_t *inner_problem) { - - coco_problem_t *problem; - logger_biobj_data_t *logger_data; - observer_biobj_data_t *observer_data; - const char nondom_folder_name[] = "archive"; - char *path_name, *file_name = NULL; - size_t i; - - if (inner_problem->number_of_objectives != 2) { - coco_error("logger_biobj(): The bi-objective logger cannot log a problem with %d objective(s)", - inner_problem->number_of_objectives); - return NULL; /* Never reached. */ - } - - logger_data = (logger_biobj_data_t *) coco_allocate_memory(sizeof(*logger_data)); - - logger_data->number_of_evaluations = 0; - logger_data->previous_evaluations = 0; - logger_data->number_of_variables = inner_problem->number_of_variables; - logger_data->number_of_objectives = inner_problem->number_of_objectives; - logger_data->suite_dep_instance = inner_problem->suite_dep_instance; - - observer_data = (observer_biobj_data_t *) observer->data; - /* Copy values from the observes that you might need even if they do not exist any more */ - logger_data->log_nondom_mode = observer_data->log_nondom_mode; - logger_data->compute_indicators = observer_data->compute_indicators; - logger_data->precision_x = observer->precision_x; - logger_data->precision_f = observer->precision_f; - - if (((observer_data->log_vars_mode == LOG_VARS_LOW_DIM) && (inner_problem->number_of_variables > 5)) - || (observer_data->log_vars_mode == LOG_VARS_NEVER)) - logger_data->log_vars = 0; - else - logger_data->log_vars = 1; - - /* Initialize logging of nondominated solutions into the archive file */ - if ((logger_data->log_nondom_mode == LOG_NONDOM_ALL) || - (logger_data->log_nondom_mode == LOG_NONDOM_FINAL)) { - - /* Create the path to the file */ - path_name = coco_allocate_string(COCO_PATH_MAX + 1); - memcpy(path_name, observer->result_folder, strlen(observer->result_folder) + 1); - coco_join_path(path_name, COCO_PATH_MAX, nondom_folder_name, NULL); - coco_create_directory(path_name); - - /* Construct file name */ - if (logger_data->log_nondom_mode == LOG_NONDOM_ALL) - file_name = coco_strdupf("%s_nondom_all.adat", inner_problem->problem_id); - else if (logger_data->log_nondom_mode == LOG_NONDOM_FINAL) - file_name = coco_strdupf("%s_nondom_final.adat", inner_problem->problem_id); - coco_join_path(path_name, COCO_PATH_MAX, file_name, NULL); - coco_free_memory(file_name); - - /* Open and initialize the archive file */ - logger_data->adat_file = fopen(path_name, "a"); - if (logger_data->adat_file == NULL) { - coco_error("logger_biobj() failed to open file '%s'.", path_name); - return NULL; /* Never reached */ - } - coco_free_memory(path_name); - - /* Output header information */ - fprintf(logger_data->adat_file, "%% instance = %lu, name = %s\n", - (unsigned long) inner_problem->suite_dep_instance, inner_problem->problem_name); - if (logger_data->log_vars) { - fprintf(logger_data->adat_file, "%% function evaluation | %lu objectives | %lu variables\n", - (unsigned long) inner_problem->number_of_objectives, - (unsigned long) inner_problem->number_of_variables); - } else { - fprintf(logger_data->adat_file, "%% function evaluation | %lu objectives \n", - (unsigned long) inner_problem->number_of_objectives); - } - } - - /* Initialize the AVL trees */ - logger_data->archive_tree = avl_tree_construct((avl_compare_t) avl_tree_compare_by_last_objective, - (avl_free_t) logger_biobj_node_free); - logger_data->buffer_tree = avl_tree_construct((avl_compare_t) avl_tree_compare_by_eval_number, NULL); - - /* Initialize the indicators */ - if (logger_data->compute_indicators) { - for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) - logger_data->indicators[i] = logger_biobj_indicator(logger_data, observer, inner_problem, logger_biobj_indicators[i]); - - observer_data->previous_function = (long) inner_problem->suite_dep_function; - observer_data->previous_dimension = (long) inner_problem->number_of_variables; - } - - problem = coco_problem_transformed_allocate(inner_problem, logger_data, logger_biobj_free, observer->observer_name); - problem->evaluate_function = logger_biobj_evaluate; - - return problem; -} +/** + * @file logger_biobj.c + * @brief Implementation of the bbob-biobj logger. + * + * Logs the values of the implemented indicators and archives nondominated solutions. + * Produces four kinds of files: + * - The "info" files contain high-level information on the performed experiment. One .info file is created + * for each problem group (and indicator type) and contains information on all the problems in that problem + * group (and indicator type). + * - The "dat" files contain function evaluations, indicator values and target hits for every target hit as + * well as for the last evaluation. One .dat file is created for each problem function and dimension (and + * indicator type) and contains information for all instances of that problem (and indicator type). + * - The "tdat" files contain function evaluation and indicator values for every predefined evaluation + * number as well as for the last evaluation. One .tdat file is created for each problem function and + * dimension (and indicator type) and contains information for all instances of that problem (and indicator + * type). + * - The "adat" files are archive files that contain function evaluations, 2 objectives and dim variables + * for every nondominated solution. Whether these files are created, at what point in time the logger writes + * nondominated solutions to the archive and whether the decision variables are output or not depends on + * the values of log_nondom_mode and log_nondom_mode. See the bi-objective observer constructor + * observer_biobj() for more information. One .adat file is created for each problem function, dimension + * and instance. + * + * @note Whenever in this file a ROI is mentioned, it means the (normalized) region of interest in the + * objective space. The non-normalized ROI is a rectangle with the ideal and nadir points as its two + * opposite vertices, while the normalized ROI is the square [0, 1]^2. If not specifically mentioned, the + * normalized ROI is assumed. + * + * @note This logger can handle both the original bbob-biobj test suite with 55 and the extended + * bbob-biobj-ext test suite with 96 functions. + */ + +#include +#include +#include + +#include "coco.h" +#include "coco_internal.h" + +#include "coco_utilities.c" +#include "coco_problem.c" +#include "coco_string.c" +#include "mo_avl_tree.c" +#include "observer_biobj.c" + +#include "mo_utilities.c" + +/** @brief Number of implemented indicators */ +#define LOGGER_BIOBJ_NUMBER_OF_INDICATORS 1 + +/** @brief Names of implemented indicators + * + * "hyp" stands for the hypervolume indicator. + * */ +const char *logger_biobj_indicators[LOGGER_BIOBJ_NUMBER_OF_INDICATORS] = { "hyp" }; + +/** + * @brief The indicator type. + * + * The hypervolume indicator ("hyp") + * + * The hypervolume indicator measures the volume of the portion of the ROI in the objective space that is + * dominated by the current Pareto front approximation. Instead of logging the hypervolume indicator value, + * this implementation logs the difference between the best know hypervolume indicator (a value stored in + * best_value) and the hypervolume indicator of the current Pareto front approximation (current_value). The + * current_value equals 0 if no solution is located in the ROI. In order to be able to register the + * performance of an optimizer even before the ROI is reached, an additional value is computed when no + * solutions are located inside the ROI. This value is stored in additional_penalty and equals the + * normalized distance to the ROI of the solution closest to the ROI (additional_penalty is set to 0 as + * soon as a solution reaches the ROI). The final value to be logged (overall_value) is therefore computed + * in the following way: + * + * overall_value = best_value - current_value + additional_penalty + * + * @note Other indicators are yet to be implemented. + */ +typedef struct { + + char *name; /**< @brief Name of the indicator used for identification and the output. */ + + FILE *dat_file; /**< @brief File for logging indicator values at predefined values. */ + FILE *tdat_file; /**< @brief File for logging indicator values at predefined evaluations. */ + FILE *info_file; /**< @brief File for logging summary information on algorithm performance. */ + + int target_hit; /**< @brief Whether the target was hit in the latest evaluation. */ + coco_observer_targets_t *targets; + /**< @brief Triggers based on target values. */ + int evaluation_logged; /**< @brief Whether the whether the latest evaluation was logged. */ + coco_observer_evaluations_t *evaluations; + /**< @brief Triggers based on numbers of evaluations. */ + + double best_value; /**< @brief The best known indicator value for this problem. */ + double current_value; /**< @brief The current indicator value. */ + double additional_penalty; /**< @brief Additional penalty for solutions outside the ROI. */ + double overall_value; /**< @brief The overall value of the indicator tested for target hits. */ + double previous_value; /**< @brief The previous overall value of the indicator. */ + +} logger_biobj_indicator_t; + +/** + * @brief The bi-objective logger data type. + * + * @note Some fields from the observers (coco_observer as well as observer_biobj) need to be copied here + * because the observers can be deleted before the logger is finalized and we need these fields for + * finalization. + */ +typedef struct { + observer_biobj_log_nondom_e log_nondom_mode; + /**< @brief Mode for archiving nondominated solutions. */ + FILE *adat_file; /**< @brief File for archiving nondominated solutions (all or final). */ + + int log_vars; /**< @brief Whether to log the decision values. */ + + int precision_x; /**< @brief Precision for outputting decision values. */ + int precision_f; /**< @brief Precision for outputting objective values. */ + + size_t number_of_evaluations; /**< @brief The number of evaluations performed so far. */ + size_t number_of_variables; /**< @brief Dimension of the problem. */ + size_t number_of_objectives; /**< @brief Number of objectives (clearly equal to 2). */ + size_t suite_dep_instance; /**< @brief Suite-dependent instance number of the observed problem. */ + + size_t previous_evaluations; /**< @brief The number of evaluations from the previous call to the logger. */ + + avl_tree_t *archive_tree; /**< @brief The tree keeping currently non-dominated solutions. */ + avl_tree_t *buffer_tree; /**< @brief The tree with pointers to nondominated solutions that haven't + been logged yet. */ + + /* Indicators (TODO: Implement others!) */ + int compute_indicators; /**< @brief Whether to compute the indicators. */ + logger_biobj_indicator_t *indicators[LOGGER_BIOBJ_NUMBER_OF_INDICATORS]; + /**< @brief The implemented indicators. */ +} logger_biobj_data_t; + +/** + * @brief The type for the node's item in the AVL tree as used by the bi-objective logger. + * + * Contains information on the exact objective values (y) and their rounded normalized values (normalized_y). + * The exact values are used for output, while archive update and indicator computation use the normalized + * values. + */ +typedef struct { + double *x; /**< @brief The decision values of this solution. */ + double *y; /**< @brief The values of objectives of this solution. */ + double *normalized_y; /**< @brief The values of normalized objectives of this solution. */ + size_t evaluation_number; /**< @brief The evaluation number of when the solution was created. */ + + double indicator_contribution[LOGGER_BIOBJ_NUMBER_OF_INDICATORS]; + /**< @brief The contribution of this solution to the overall indicator values. */ + int within_ROI; /**< @brief Whether the solution is within the region of interest (ROI). */ + +} logger_biobj_avl_item_t; + +/** + * @brief Creates and returns the information on the solution in the form of a node's item in the AVL tree. + */ +static logger_biobj_avl_item_t* logger_biobj_node_create(const coco_problem_t *problem, + const double *x, + const double *y, + const size_t evaluation_number, + const size_t dim, + const size_t num_obj) { + + size_t i; + + /* Allocate memory to hold the data structure logger_biobj_node_t */ + logger_biobj_avl_item_t *item = (logger_biobj_avl_item_t*) coco_allocate_memory(sizeof(*item)); + + /* Allocate memory to store the (copied) data of the new node */ + item->x = coco_allocate_vector(dim); + item->y = coco_allocate_vector(num_obj); + + /* Copy the data */ + for (i = 0; i < dim; i++) + item->x[i] = x[i]; + for (i = 0; i < num_obj; i++) + item->y[i] = y[i]; + + /* Compute the normalized y */ + item->normalized_y = mo_normalize(item->y, problem->best_value, problem->nadir_value, num_obj); + item->within_ROI = mo_is_within_ROI(item->normalized_y, num_obj); + + item->evaluation_number = evaluation_number; + for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) + item->indicator_contribution[i] = 0; + + return item; +} + +/** + * @brief Frees the data of the given logger_biobj_avl_item_t. + */ +static void logger_biobj_node_free(logger_biobj_avl_item_t *item, void *userdata) { + + coco_free_memory(item->x); + coco_free_memory(item->y); + coco_free_memory(item->normalized_y); + coco_free_memory(item); + (void) userdata; /* To silence the compiler */ +} + +/** + * @brief Defines the ordering of AVL tree nodes based on the value of the last objective. + * + * @note This ordering is used by the archive_tree. + */ +static int avl_tree_compare_by_last_objective(const logger_biobj_avl_item_t *item1, + const logger_biobj_avl_item_t *item2, + void *userdata) { + if (coco_double_almost_equal(item1->normalized_y[1], item2->normalized_y[1], mo_precision)) + return 0; + else if (item1->normalized_y[1] < item2->normalized_y[1]) + return -1; + else + return 1; + + (void) userdata; /* To silence the compiler */ +} + +/** + * @brief Defines the ordering of AVL tree nodes based on the evaluation number (the time when the nodes were + * created). + * + * @note This ordering is used by the buffer_tree. + */ +static int avl_tree_compare_by_eval_number(const logger_biobj_avl_item_t *item1, + const logger_biobj_avl_item_t *item2, + void *userdata) { + if (item1->evaluation_number < item2->evaluation_number) + return -1; + else if (item1->evaluation_number > item2->evaluation_number) + return 1; + else + return 0; + + (void) userdata; /* To silence the compiler */ +} + +/** + * @brief Outputs the AVL tree to the given file. Returns the number of nodes in the tree. + */ +static size_t logger_biobj_tree_output(FILE *file, + const avl_tree_t *tree, + const size_t dim, + const size_t num_obj, + const int log_vars, + const int precision_x, + const int precision_f) { + + avl_node_t *solution; + size_t i; + size_t j; + size_t number_of_nodes = 0; + + if (tree->tail) { + /* There is at least a solution in the tree to output */ + solution = tree->head; + while (solution != NULL) { + fprintf(file, "%lu\t", (unsigned long) ((logger_biobj_avl_item_t*) solution->item)->evaluation_number); + for (j = 0; j < num_obj; j++) + fprintf(file, "%.*e\t", precision_f, ((logger_biobj_avl_item_t*) solution->item)->y[j]); + if (log_vars) { + for (i = 0; i < dim; i++) + fprintf(file, "%.*e\t", precision_x, ((logger_biobj_avl_item_t*) solution->item)->x[i]); + } + fprintf(file, "\n"); + solution = solution->next; + number_of_nodes++; + } + } + + return number_of_nodes; +} + +/** + * @brief Updates the archive and buffer trees with the given node. + * + * Checks for domination and updates the archive tree and the values of the indicators if the given node is + * not weakly dominated by existing nodes in the archive tree. This is where the main computation of + * indicator values takes place. + * + * @return 1 if the update was performed and 0 otherwise. + */ +static int logger_biobj_tree_update(logger_biobj_data_t *logger, + logger_biobj_avl_item_t *node_item) { + + avl_node_t *node, *next_node, *new_node; + int trigger_update = 0; + int dominance; + size_t i; + int previous_unavailable = 0; + + /* Find the first point that is not worse than the new point (NULL if such point does not exist) */ + node = avl_item_search_right(logger->archive_tree, node_item, NULL); + + if (node == NULL) { + /* The new point is an extreme point */ + trigger_update = 1; + next_node = logger->archive_tree->head; + } else { + dominance = mo_get_dominance(node_item->normalized_y, + ((logger_biobj_avl_item_t*) node->item)->normalized_y, logger->number_of_objectives); + if (dominance > -1) { + trigger_update = 1; + next_node = node->next; + if (dominance == 1) { + /* The new point dominates the next point, remove the next point */ + if (logger->compute_indicators) { + for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { + logger->indicators[i]->current_value -= ((logger_biobj_avl_item_t*) node->item)->indicator_contribution[i]; + } + } + avl_item_delete(logger->buffer_tree, node->item); + avl_node_delete(logger->archive_tree, node); + } + } else { + /* The new point is dominated or equal to an existing one, nothing more to do */ + trigger_update = 0; + } + } + + if (!trigger_update) { + logger_biobj_node_free(node_item, NULL); + } else { + /* Perform tree update */ + while (next_node != NULL) { + /* Check the dominance relation between the new node and the next node. There are only two possibilities: + * dominance = 0: the new node and the next node are nondominated + * dominance = 1: the new node dominates the next node */ + node = next_node; + dominance = mo_get_dominance(node_item->normalized_y, + ((logger_biobj_avl_item_t*) node->item)->normalized_y, logger->number_of_objectives); + if (dominance == 1) { + /* The new point dominates the next point, remove the next point */ + if (logger->compute_indicators) { + for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { + logger->indicators[i]->current_value -= ((logger_biobj_avl_item_t*) node->item)->indicator_contribution[i]; + } + } + next_node = node->next; + avl_item_delete(logger->buffer_tree, node->item); + avl_node_delete(logger->archive_tree, node); + } else { + break; + } + } + + new_node = avl_item_insert(logger->archive_tree, node_item); + assert(new_node != NULL); + avl_item_insert(logger->buffer_tree, node_item); + + if (logger->compute_indicators) { + if (node_item->within_ROI) { + /* Compute indicator value for new node and update the indicator value of the affected nodes */ + logger_biobj_avl_item_t *next_item, *previous_item; + + if (new_node->next != NULL) { + next_item = (logger_biobj_avl_item_t*) new_node->next->item; + if (next_item->within_ROI) { + for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { + logger->indicators[i]->current_value -= next_item->indicator_contribution[i]; + if (strcmp(logger->indicators[i]->name, "hyp") == 0) { + next_item->indicator_contribution[i] = (node_item->normalized_y[0] - next_item->normalized_y[0]) + * (1 - next_item->normalized_y[1]); + assert(next_item->indicator_contribution[i] >= 0); + } else { + coco_error( + "logger_biobj_tree_update(): Indicator computation not implemented yet for indicator %s", + logger->indicators[i]->name); + } + logger->indicators[i]->current_value += next_item->indicator_contribution[i]; + } + } + } + + previous_unavailable = 0; + if (new_node->prev != NULL) { + previous_item = (logger_biobj_avl_item_t*) new_node->prev->item; + if (previous_item->within_ROI) { + for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { + if (strcmp(logger->indicators[i]->name, "hyp") == 0) { + node_item->indicator_contribution[i] = (previous_item->normalized_y[0] - node_item->normalized_y[0]) + * (1 - node_item->normalized_y[1]); + assert(node_item->indicator_contribution[i] >= 0); + } else { + coco_error( + "logger_biobj_tree_update(): Indicator computation not implemented yet for indicator %s", + logger->indicators[i]->name); + } + } + } else { + previous_unavailable = 1; + } + } else { + previous_unavailable = 1; + } + + if (previous_unavailable) { + /* Previous item does not exist or is out of ROI, use reference point instead */ + for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { + if (strcmp(logger->indicators[i]->name, "hyp") == 0) { + node_item->indicator_contribution[i] = (1 - node_item->normalized_y[0]) + * (1 - node_item->normalized_y[1]); + assert(node_item->indicator_contribution[i] >= 0); + } else { + coco_error( + "logger_biobj_tree_update(): Indicator computation not implemented yet for indicator %s", + logger->indicators[i]->name); + } + } + } + + for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { + if (strcmp(logger->indicators[i]->name, "hyp") == 0) { + assert(node_item->indicator_contribution[i] >= 0); + logger->indicators[i]->current_value += node_item->indicator_contribution[i]; + } + } + } + } + } + + return trigger_update; +} + +/** + * @brief Initializes the indicator with name indicator_name. + * + * Opens files for writing and resets counters. + */ +static logger_biobj_indicator_t *logger_biobj_indicator(const logger_biobj_data_t *logger, + const coco_observer_t *observer, + const coco_problem_t *problem, + const char *indicator_name) { + + observer_biobj_data_t *observer_data; + logger_biobj_indicator_t *indicator; + char *prefix, *file_name, *path_name; + int info_file_exists = 0; + + indicator = (logger_biobj_indicator_t *) coco_allocate_memory(sizeof(*indicator)); + assert(observer); + assert(observer->data); + observer_data = (observer_biobj_data_t *) observer->data; + + indicator->name = coco_strdup(indicator_name); + + indicator->best_value = suite_biobj_get_best_value(indicator->name, problem->problem_id); + indicator->target_hit = 0; + indicator->evaluation_logged = 0; + indicator->current_value = 0; + indicator->additional_penalty = DBL_MAX; + indicator->overall_value = 0; + indicator->previous_value = 0; + + indicator->targets = coco_observer_targets(observer->number_target_triggers, observer->target_precision); + indicator->evaluations = coco_observer_evaluations(observer->base_evaluation_triggers, problem->number_of_variables); + + /* Prepare the info file */ + path_name = coco_allocate_string(COCO_PATH_MAX + 1); + memcpy(path_name, observer->result_folder, strlen(observer->result_folder) + 1); + coco_create_directory(path_name); + file_name = coco_strdupf("%s_%s.info", problem->problem_type, indicator_name); + coco_join_path(path_name, COCO_PATH_MAX, file_name, NULL); + info_file_exists = coco_file_exists(path_name); + indicator->info_file = fopen(path_name, "a"); + if (indicator->info_file == NULL) { + coco_error("logger_biobj_indicator() failed to open file '%s'.", path_name); + return NULL; /* Never reached */ + } + coco_free_memory(file_name); + coco_free_memory(path_name); + + /* Prepare the tdat file */ + path_name = coco_allocate_string(COCO_PATH_MAX + 1); + memcpy(path_name, observer->result_folder, strlen(observer->result_folder) + 1); + coco_join_path(path_name, COCO_PATH_MAX, problem->problem_type, NULL); + coco_create_directory(path_name); + prefix = coco_remove_from_string(problem->problem_id, "_i", "_d"); + file_name = coco_strdupf("%s_%s.tdat", prefix, indicator_name); + coco_join_path(path_name, COCO_PATH_MAX, file_name, NULL); + indicator->tdat_file = fopen(path_name, "a"); + if (indicator->tdat_file == NULL) { + coco_error("logger_biobj_indicator() failed to open file '%s'.", path_name); + return NULL; /* Never reached */ + } + coco_free_memory(file_name); + coco_free_memory(path_name); + + /* Prepare the dat file */ + path_name = coco_allocate_string(COCO_PATH_MAX + 1); + memcpy(path_name, observer->result_folder, strlen(observer->result_folder) + 1); + coco_join_path(path_name, COCO_PATH_MAX, problem->problem_type, NULL); + coco_create_directory(path_name); + file_name = coco_strdupf("%s_%s.dat", prefix, indicator_name); + coco_join_path(path_name, COCO_PATH_MAX, file_name, NULL); + indicator->dat_file = fopen(path_name, "a"); + if (indicator->dat_file == NULL) { + coco_error("logger_biobj_indicator() failed to open file '%s'.", path_name); + return NULL; /* Never reached */ + } + + /* Output header information to the info file */ + if (!info_file_exists) { + /* Output algorithm name */ + assert(problem->suite); + fprintf(indicator->info_file, + "suite = '%s', algorithm = '%s', indicator = '%s', folder = '%s', coco_version = '%s'\n%% %s", + problem->suite->suite_name, observer->algorithm_name, indicator_name, problem->problem_type, + coco_version, observer->algorithm_info); + if (logger->log_nondom_mode == LOG_NONDOM_READ) + fprintf(indicator->info_file, " (reconstructed)"); + } + if ((observer_data->previous_function != problem->suite_dep_function) + || (observer_data->previous_dimension != problem->number_of_variables)) { + fprintf(indicator->info_file, "\nfunction = %2lu, ", (unsigned long) problem->suite_dep_function); + fprintf(indicator->info_file, "dim = %2lu, ", (unsigned long) problem->number_of_variables); + fprintf(indicator->info_file, "%s", file_name); + } + + coco_free_memory(prefix); + coco_free_memory(file_name); + coco_free_memory(path_name); + + /* Output header information to the dat file */ + fprintf(indicator->dat_file, "%%\n%% index = %lu, name = %s\n", (unsigned long) problem->suite_dep_index, + problem->problem_name); + fprintf(indicator->dat_file, "%% instance = %lu, reference value = %.*e\n", + (unsigned long) problem->suite_dep_instance, logger->precision_f, indicator->best_value); + fprintf(indicator->dat_file, "%% function evaluation | indicator value | target hit\n"); + + /* Output header information to the tdat file */ + fprintf(indicator->tdat_file, "%%\n%% index = %lu, name = %s\n", (unsigned long) problem->suite_dep_index, + problem->problem_name); + fprintf(indicator->tdat_file, "%% instance = %lu, reference value = %.*e\n", + (unsigned long) problem->suite_dep_instance, logger->precision_f, indicator->best_value); + fprintf(indicator->tdat_file, "%% function evaluation | indicator value\n"); + + return indicator; +} + +/** + * @brief Outputs the final information about this indicator. + */ +static void logger_biobj_indicator_finalize(logger_biobj_indicator_t *indicator, const logger_biobj_data_t *logger) { + + /* Log the last eval_number in the dat file if wasn't already logged */ + if (!indicator->target_hit) { + fprintf(indicator->dat_file, "%lu\t%.*e\t%.*e\n", (unsigned long) logger->number_of_evaluations, + logger->precision_f, indicator->overall_value, logger->precision_f, + ((coco_observer_targets_t *) indicator->targets)->value); + } + + /* Log the last eval_number in the tdat file if wasn't already logged */ + if (!indicator->evaluation_logged) { + fprintf(indicator->tdat_file, "%lu\t%.*e\n", (unsigned long) logger->number_of_evaluations, + logger->precision_f, indicator->overall_value); + } + + /* Log the information in the info file */ + fprintf(indicator->info_file, ", %lu:%lu|%.1e", (unsigned long) logger->suite_dep_instance, + (unsigned long) logger->number_of_evaluations, indicator->overall_value); + fflush(indicator->info_file); +} + +/** + * @brief Frees the memory of the given indicator. + */ +static void logger_biobj_indicator_free(void *stuff) { + + logger_biobj_indicator_t *indicator; + + assert(stuff != NULL); + indicator = (logger_biobj_indicator_t *) stuff; + + if (indicator->name != NULL) { + coco_free_memory(indicator->name); + indicator->name = NULL; + } + + if (indicator->dat_file != NULL) { + fclose(indicator->dat_file); + indicator->dat_file = NULL; + } + + if (indicator->tdat_file != NULL) { + fclose(indicator->tdat_file); + indicator->tdat_file = NULL; + } + + if (indicator->info_file != NULL) { + fclose(indicator->info_file); + indicator->info_file = NULL; + } + + if (indicator->targets != NULL){ + coco_free_memory(indicator->targets); + indicator->targets = NULL; + } + + if (indicator->evaluations != NULL){ + coco_observer_evaluations_free(indicator->evaluations); + indicator->evaluations = NULL; + } + + coco_free_memory(stuff); + +} + +/* + * @brief Outputs the information according to the observer options. + * + * Outputs to the: + * - dat file, if the archive was updated and a new target was reached for an indicator; + * - tdat file, if the number of evaluations matches one of the predefined numbers. + * + * Note that a target is reached when + * best_value - current_value + additional_penalty <= relative_target_value + * + * The relative_target_value is a target for indicator difference, not the actual indicator value! + */ +static void logger_biobj_output(logger_biobj_data_t *logger, + const int update_performed, + const logger_biobj_avl_item_t *node_item) { + + size_t i, j; + logger_biobj_indicator_t *indicator; + + if (logger->compute_indicators) { + for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { + + indicator = logger->indicators[i]; + indicator->target_hit = 0; + indicator->previous_value = indicator->overall_value; + + /* If the update was performed, update the overall indicator value */ + if (update_performed) { + /* Compute the overall_value of an indicator */ + if (strcmp(indicator->name, "hyp") == 0) { + if (coco_double_almost_equal(indicator->current_value, 0, mo_precision)) { + /* Update the additional penalty for hypervolume (the minimal distance from the nondominated set + * to the ROI) */ + double new_distance = mo_get_distance_to_ROI(node_item->normalized_y, logger->number_of_objectives); + indicator->additional_penalty = coco_double_min(indicator->additional_penalty, new_distance); + assert(indicator->additional_penalty >= 0); + } else { + indicator->additional_penalty = 0; + } + indicator->overall_value = indicator->best_value - indicator->current_value + + indicator->additional_penalty; + } else { + coco_error("logger_biobj_evaluate(): Indicator computation not implemented yet for indicator %s", + indicator->name); + } + + /* Check whether a target was hit */ + indicator->target_hit = coco_observer_targets_trigger(indicator->targets, indicator->overall_value); + } + + /* Log to the dat file if a target was hit */ + if (indicator->target_hit) { + fprintf(indicator->dat_file, "%lu\t%.*e\t%.*e\n", (unsigned long) logger->number_of_evaluations, + logger->precision_f, indicator->overall_value, logger->precision_f, + ((coco_observer_targets_t *) indicator->targets)->value); + } + + if (logger->log_nondom_mode == LOG_NONDOM_READ) { + /* Log to the tdat file the previous indicator value if any evaluation number between the previous and + * this one matches one of the predefined evaluation numbers. */ + for (j = logger->previous_evaluations + 1; j < logger->number_of_evaluations; j++) { + indicator->evaluation_logged = coco_observer_evaluations_trigger(indicator->evaluations, j); + if (indicator->evaluation_logged) { + fprintf(indicator->tdat_file, "%lu\t%.*e\n", (unsigned long) j, logger->precision_f, + indicator->previous_value); + } + } + } + + /* Log to the tdat file if the number of evaluations matches one of the predefined numbers */ + indicator->evaluation_logged = coco_observer_evaluations_trigger(indicator->evaluations, + logger->number_of_evaluations); + if (indicator->evaluation_logged) { + fprintf(indicator->tdat_file, "%lu\t%.*e\n", (unsigned long) logger->number_of_evaluations, + logger->precision_f, indicator->overall_value); + } + + } + } +} + +/** + * @brief Evaluates the function, increases the number of evaluations and outputs information according to + * observer options. + */ +static void logger_biobj_evaluate(coco_problem_t *problem, const double *x, double *y) { + + logger_biobj_data_t *logger; + logger_biobj_avl_item_t *node_item; + int update_performed; + coco_problem_t *inner_problem; + + logger = (logger_biobj_data_t *) coco_problem_transformed_get_data(problem); + inner_problem = coco_problem_transformed_get_inner_problem(problem); + + /* Evaluate function */ + coco_evaluate_function(inner_problem, x, y); + logger->number_of_evaluations++; + + node_item = logger_biobj_node_create(inner_problem, x, y, logger->number_of_evaluations, logger->number_of_variables, + logger->number_of_objectives); + + /* Update the archive with the new solution, if it is not dominated by or equal to existing solutions in + * the archive */ + update_performed = logger_biobj_tree_update(logger, node_item); + + /* If the archive was updated and you need to log all nondominated solutions, output the new solution to + * nondom_file */ + if (update_performed && (logger->log_nondom_mode == LOG_NONDOM_ALL)) { + logger_biobj_tree_output(logger->adat_file, logger->buffer_tree, logger->number_of_variables, + logger->number_of_objectives, logger->log_vars, logger->precision_x, logger->precision_f); + avl_tree_purge(logger->buffer_tree); + + /* Flush output so that impatient users can see progress. */ + fflush(logger->adat_file); + } + + /* Output according to observer options */ + logger_biobj_output(logger, update_performed, node_item); +} + +/** + * Sets the number of evaluations, adds the objective vector to the archive and outputs information according + * to observer options (but does not output the archive). + * + * @note Vector y must point to a correctly sized allocated memory region and the given evaluation number must + * be larger than the existing one. + * + * @param problem The given COCO problem. + * @param evaluation The number of evaluations. + * @param y The objective vector. + * @return 1 if archive was updated was done and 0 otherwise. + */ +int coco_logger_biobj_feed_solution(coco_problem_t *problem, const size_t evaluation, const double *y) { + + logger_biobj_data_t *logger; + logger_biobj_avl_item_t *node_item; + int update_performed; + coco_problem_t *inner_problem; + double *x; + size_t i; + + assert(problem != NULL); + logger = (logger_biobj_data_t *) coco_problem_transformed_get_data(problem); + inner_problem = coco_problem_transformed_get_inner_problem(problem); + assert(logger->log_nondom_mode == LOG_NONDOM_READ); + + /* Set the number of evaluations */ + logger->previous_evaluations = logger->number_of_evaluations; + if (logger->previous_evaluations >= evaluation) + coco_error("coco_logger_biobj_reconstruct(): Evaluation %lu came before evaluation %lu. Note that " + "the evaluations need to be always increasing.", logger->previous_evaluations, evaluation); + logger->number_of_evaluations = evaluation; + + /* Update the archive with the new solution */ + x = coco_allocate_vector(problem->number_of_variables); + for (i = 0; i < problem->number_of_variables; i++) + x[i] = 0; + node_item = logger_biobj_node_create(inner_problem, x, y, logger->number_of_evaluations, + logger->number_of_variables, logger->number_of_objectives); + coco_free_memory(x); + + /* Update the archive */ + update_performed = logger_biobj_tree_update(logger, node_item); + + /* Output according to observer options */ + logger_biobj_output(logger, update_performed, node_item); + + return update_performed; +} + +/** + * @brief Outputs the final nondominated solutions to the archive file. + */ +static void logger_biobj_finalize(logger_biobj_data_t *logger) { + + avl_tree_t *resorted_tree; + avl_node_t *solution; + + /* Re-sort archive_tree according to time stamp and then output it */ + resorted_tree = avl_tree_construct((avl_compare_t) avl_tree_compare_by_eval_number, NULL); + + if (logger->archive_tree->tail) { + /* There is at least a solution in the tree to output */ + solution = logger->archive_tree->head; + while (solution != NULL) { + avl_item_insert(resorted_tree, solution->item); + solution = solution->next; + } + } + + logger_biobj_tree_output(logger->adat_file, resorted_tree, logger->number_of_variables, + logger->number_of_objectives, logger->log_vars, logger->precision_x, logger->precision_f); + + avl_tree_destruct(resorted_tree); +} + +/** + * @brief Frees the memory of the given biobjective logger. + */ +static void logger_biobj_free(void *stuff) { + + logger_biobj_data_t *logger; + size_t i; + + assert(stuff != NULL); + logger = (logger_biobj_data_t *) stuff; + + if (logger->log_nondom_mode == LOG_NONDOM_FINAL) { + logger_biobj_finalize(logger); + } + + if (logger->compute_indicators) { + for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) { + logger_biobj_indicator_finalize(logger->indicators[i], logger); + logger_biobj_indicator_free(logger->indicators[i]); + } + } + + if (((logger->log_nondom_mode == LOG_NONDOM_ALL) || (logger->log_nondom_mode == LOG_NONDOM_FINAL)) && + (logger->adat_file != NULL)) { + fprintf(logger->adat_file, "%% evaluations = %lu\n", (unsigned long) logger->number_of_evaluations); + fclose(logger->adat_file); + logger->adat_file = NULL; + } + + avl_tree_destruct(logger->archive_tree); + avl_tree_destruct(logger->buffer_tree); + +} + +/** + * @brief Initializes the biobjective logger. + * + * Copies all observer field values that are needed after initialization into logger field values for two + * reasons: + * - If the observer is deleted before the suite, the observer is not available anymore when the logger + * is finalized. + * - This reduces function calls. + */ +static coco_problem_t *logger_biobj(coco_observer_t *observer, coco_problem_t *inner_problem) { + + coco_problem_t *problem; + logger_biobj_data_t *logger_data; + observer_biobj_data_t *observer_data; + const char nondom_folder_name[] = "archive"; + char *path_name, *file_name = NULL; + size_t i; + + if (inner_problem->number_of_objectives != 2) { + coco_error("logger_biobj(): The bi-objective logger cannot log a problem with %d objective(s)", + inner_problem->number_of_objectives); + return NULL; /* Never reached. */ + } + + logger_data = (logger_biobj_data_t *) coco_allocate_memory(sizeof(*logger_data)); + + logger_data->number_of_evaluations = 0; + logger_data->previous_evaluations = 0; + logger_data->number_of_variables = inner_problem->number_of_variables; + logger_data->number_of_objectives = inner_problem->number_of_objectives; + logger_data->suite_dep_instance = inner_problem->suite_dep_instance; + + observer_data = (observer_biobj_data_t *) observer->data; + /* Copy values from the observes that you might need even if they do not exist any more */ + logger_data->log_nondom_mode = observer_data->log_nondom_mode; + logger_data->compute_indicators = observer_data->compute_indicators; + logger_data->precision_x = observer->precision_x; + logger_data->precision_f = observer->precision_f; + + if (((observer_data->log_vars_mode == LOG_VARS_LOW_DIM) && (inner_problem->number_of_variables > 5)) + || (observer_data->log_vars_mode == LOG_VARS_NEVER)) + logger_data->log_vars = 0; + else + logger_data->log_vars = 1; + + /* Initialize logging of nondominated solutions into the archive file */ + if ((logger_data->log_nondom_mode == LOG_NONDOM_ALL) || + (logger_data->log_nondom_mode == LOG_NONDOM_FINAL)) { + + /* Create the path to the file */ + path_name = coco_allocate_string(COCO_PATH_MAX + 1); + memcpy(path_name, observer->result_folder, strlen(observer->result_folder) + 1); + coco_join_path(path_name, COCO_PATH_MAX, nondom_folder_name, NULL); + coco_create_directory(path_name); + + /* Construct file name */ + if (logger_data->log_nondom_mode == LOG_NONDOM_ALL) + file_name = coco_strdupf("%s_nondom_all.adat", inner_problem->problem_id); + else if (logger_data->log_nondom_mode == LOG_NONDOM_FINAL) + file_name = coco_strdupf("%s_nondom_final.adat", inner_problem->problem_id); + coco_join_path(path_name, COCO_PATH_MAX, file_name, NULL); + coco_free_memory(file_name); + + /* Open and initialize the archive file */ + logger_data->adat_file = fopen(path_name, "a"); + if (logger_data->adat_file == NULL) { + coco_error("logger_biobj() failed to open file '%s'.", path_name); + return NULL; /* Never reached */ + } + coco_free_memory(path_name); + + /* Output header information */ + fprintf(logger_data->adat_file, "%% instance = %lu, name = %s\n", + (unsigned long) inner_problem->suite_dep_instance, inner_problem->problem_name); + if (logger_data->log_vars) { + fprintf(logger_data->adat_file, "%% function evaluation | %lu objectives | %lu variables\n", + (unsigned long) inner_problem->number_of_objectives, + (unsigned long) inner_problem->number_of_variables); + } else { + fprintf(logger_data->adat_file, "%% function evaluation | %lu objectives \n", + (unsigned long) inner_problem->number_of_objectives); + } + } + + /* Initialize the AVL trees */ + logger_data->archive_tree = avl_tree_construct((avl_compare_t) avl_tree_compare_by_last_objective, + (avl_free_t) logger_biobj_node_free); + logger_data->buffer_tree = avl_tree_construct((avl_compare_t) avl_tree_compare_by_eval_number, NULL); + + /* Initialize the indicators */ + if (logger_data->compute_indicators) { + for (i = 0; i < LOGGER_BIOBJ_NUMBER_OF_INDICATORS; i++) + logger_data->indicators[i] = logger_biobj_indicator(logger_data, observer, inner_problem, logger_biobj_indicators[i]); + + observer_data->previous_function = (long) inner_problem->suite_dep_function; + observer_data->previous_dimension = (long) inner_problem->number_of_variables; + } + + problem = coco_problem_transformed_allocate(inner_problem, logger_data, logger_biobj_free, observer->observer_name); + problem->evaluate_function = logger_biobj_evaluate; + + return problem; +} From 5936a47a1a5f36833e30bf6fb4e1628cdff43048 Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Tue, 19 Feb 2019 10:31:40 +0100 Subject: [PATCH 377/446] Overwriting f_sharp_ridge.c from development branch --- code-experiments/src/f_sharp_ridge.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code-experiments/src/f_sharp_ridge.c b/code-experiments/src/f_sharp_ridge.c index b671737a2..a1f7a1e0f 100644 --- a/code-experiments/src/f_sharp_ridge.c +++ b/code-experiments/src/f_sharp_ridge.c @@ -12,10 +12,6 @@ #include "transform_obj_shift.c" #include "transform_vars_affine.c" #include "transform_vars_shift.c" -#include "transform_vars_conditioning.c" -#include "transform_vars_permutation.c" -#include "transform_vars_blockrotation.c" -#include "transform_obj_norm_by_dim.c" /** * @brief Implements the sharp ridge function without connections to any COCO structures. @@ -117,5 +113,3 @@ static coco_problem_t *f_sharp_ridge_bbob_problem_allocate(const size_t function coco_free_memory(xopt); return problem; } - - From e282bf75948ce4d04979167ef2769205839e7735 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tea=20Tus=CC=8Car?= Date: Tue, 19 Feb 2019 23:11:54 +0100 Subject: [PATCH 378/446] Printing out the rotation matrices. --- code-experiments/build/c/example_experiment.c | 10 ++++++++++ code-experiments/src/suite_bbob_legacy_code.c | 8 ++++++++ .../src/transform_vars_blockrotation_helpers.c | 12 ++++++++++++ 3 files changed, 30 insertions(+) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index ed51fb752..d0f8952c9 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -109,6 +109,16 @@ int main(void) { coco_random_state_t *random_generator = coco_random_new(RANDOM_SEED); + coco_suite_t *suite; + coco_problem_t *problem; + suite = coco_suite("bbob", "", "dimensions: 20 instance_indices: 1 function_indices: 10"); + problem = coco_suite_get_next_problem(suite, NULL); + coco_suite_free(suite); + suite = coco_suite("bbob-largescale", "", "dimensions: 20 instance_indices: 1 function_indices: 10"); + problem = coco_suite_get_next_problem(suite, NULL); + coco_suite_free(suite); + return 0; + /* Change the log level to "warning" to get less output */ coco_set_log_level("info"); diff --git a/code-experiments/src/suite_bbob_legacy_code.c b/code-experiments/src/suite_bbob_legacy_code.c index 8c2e920c9..fb764b9fa 100644 --- a/code-experiments/src/suite_bbob_legacy_code.c +++ b/code-experiments/src/suite_bbob_legacy_code.c @@ -156,6 +156,14 @@ static void bbob2009_compute_rotation(double **B, const long seed, const size_t for (k = 0; k < DIM; k++) B[k][i] /= sqrt(prod); } + + fprintf(stdout, "n=%d\n", (int)DIM); + for (i = 0; i < DIM; i++) { + for (j = 0; j < DIM; j++) { + fprintf(stdout, "%7.4f ", B[i][j]); + } + fprintf(stdout, "\n"); + } } static void bbob2009_copy_rotation_matrix(double **rot, double *M, double *b, const size_t DIM) { diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index 1ad80d57b..65306817b 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -146,6 +146,18 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * coco_free_memory(tmp_normal); } /*coco_free_memory(gvect);*/ + + fprintf(stdout, "n=%d, nb_blocks=%d\n", (int)n, (int)nb_blocks); + for (i = 0; i < nb_blocks; i++) { + fprintf(stdout, "i=%d, block_sizes[i]=%d\n", (int)i, (int)block_sizes[i]); + for (j = 0; j < block_sizes[i]; j++) { + for (k = 0; k < n; k++) { + fprintf(stdout, "%7.4f ", B[k][j]); + } + fprintf(stdout, "\n"); + } + fprintf(stdout, "\n"); + } } /** From 8d61a02d566c247a8d1e03e70e819544b7f55c8f Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Wed, 20 Feb 2019 10:33:10 +0100 Subject: [PATCH 379/446] Modified to show more functions simultaneously --- code-experiments/build/c/example_experiment.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index d0f8952c9..5016965cf 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -111,11 +111,13 @@ int main(void) { coco_suite_t *suite; coco_problem_t *problem; - suite = coco_suite("bbob", "", "dimensions: 20 instance_indices: 1 function_indices: 10"); - problem = coco_suite_get_next_problem(suite, NULL); - coco_suite_free(suite); - suite = coco_suite("bbob-largescale", "", "dimensions: 20 instance_indices: 1 function_indices: 10"); - problem = coco_suite_get_next_problem(suite, NULL); + /*suite = coco_suite("bbob", "", "dimensions: 40 instance_indices: 1 function_indices: 1-24"); + while ((problem = coco_suite_get_next_problem(suite, NULL)) != NULL) + fprintf(stdout, "\n%s\n", coco_problem_get_id(problem)); + coco_suite_free(suite);*/ + suite = coco_suite("bbob-largescale", "", "dimensions: 20 instance_indices: 1 function_indices: 1-24"); + while ((problem = coco_suite_get_next_problem(suite, NULL)) != NULL) + fprintf(stdout, "\n%s\n", coco_problem_get_id(problem)); coco_suite_free(suite); return 0; From d2ccdd07d40bb26208b9da5ae2ec58ef87266dc8 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Wed, 20 Feb 2019 11:24:48 +0100 Subject: [PATCH 380/446] Possible fix --- code-experiments/src/transform_vars_blockrotation_helpers.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index 65306817b..98df61d0d 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -110,7 +110,7 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * for (i = 0; i < current_blocksize; i++) { for (j = 0; j < current_blocksize; j++) { - current_block[i][j] = tmp_normal[i * j + j]; + current_block[i][j] = tmp_normal[j * current_blocksize + i]; } } @@ -136,7 +136,7 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * /* now fill the block matrix*/ for (i = 0 ; i < current_blocksize; i++) { for (j = 0; j < current_blocksize; j++) { - B[i + cumsum_prev_block_sizes][j]=current_block[i][j]; + B[i + cumsum_prev_block_sizes][j] = current_block[i][j]; } } @@ -158,6 +158,7 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * } fprintf(stdout, "\n"); } + fflush(stdout); } /** From fa21fdb1a728e963f2fd1435ae7d9ceb91356a10 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Wed, 20 Feb 2019 13:21:46 +0100 Subject: [PATCH 381/446] Fixed a bug in large-scale rotation matrices --- .../src/transform_vars_blockrotation_helpers.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index 1ad80d57b..38b3b0069 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -107,12 +107,7 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * current_nb_entries = current_blocksize * current_blocksize; tmp_normal = coco_allocate_vector(current_nb_entries); bbob2009_gauss(tmp_normal, current_nb_entries, seed + (long) 1000000 * (long) current_blocksize);/* TODO: To be discussed */ - - for (i = 0; i < current_blocksize; i++) { - for (j = 0; j < current_blocksize; j++) { - current_block[i][j] = tmp_normal[i * j + j]; - } - } + bbob2009_reshape(current_block, tmp_normal, current_blocksize, current_blocksize); for (i = 0; i < current_blocksize; i++) { for (j = 0; j < i; j++) { From 6f933dccf278914032889445ead3f190c4801f9b Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Wed, 20 Feb 2019 14:24:11 +0100 Subject: [PATCH 382/446] Removed printing of matrices --- code-experiments/src/suite_bbob_legacy_code.c | 7 ------- .../src/transform_vars_blockrotation_helpers.c | 13 ------------- 2 files changed, 20 deletions(-) diff --git a/code-experiments/src/suite_bbob_legacy_code.c b/code-experiments/src/suite_bbob_legacy_code.c index fb764b9fa..c6ffd61cd 100644 --- a/code-experiments/src/suite_bbob_legacy_code.c +++ b/code-experiments/src/suite_bbob_legacy_code.c @@ -157,13 +157,6 @@ static void bbob2009_compute_rotation(double **B, const long seed, const size_t B[k][i] /= sqrt(prod); } - fprintf(stdout, "n=%d\n", (int)DIM); - for (i = 0; i < DIM; i++) { - for (j = 0; j < DIM; j++) { - fprintf(stdout, "%7.4f ", B[i][j]); - } - fprintf(stdout, "\n"); - } } static void bbob2009_copy_rotation_matrix(double **rot, double *M, double *b, const size_t DIM) { diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index 5a47fa4ea..4788346dc 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -141,19 +141,6 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * coco_free_memory(tmp_normal); } /*coco_free_memory(gvect);*/ - - fprintf(stdout, "n=%d, nb_blocks=%d\n", (int)n, (int)nb_blocks); - for (i = 0; i < nb_blocks; i++) { - fprintf(stdout, "i=%d, block_sizes[i]=%d\n", (int)i, (int)block_sizes[i]); - for (j = 0; j < block_sizes[i]; j++) { - for (k = 0; k < n; k++) { - fprintf(stdout, "%7.4f ", B[k][j]); - } - fprintf(stdout, "\n"); - } - fprintf(stdout, "\n"); - } - fflush(stdout); } /** From 2f0d2532015ea69193c755924facaff57439688a Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Wed, 20 Feb 2019 15:31:25 +0100 Subject: [PATCH 383/446] Fixing f21 and f22 --- code-experiments/build/c/example_experiment.c | 2 +- code-experiments/src/f_gallagher.c | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index 5016965cf..8b7d1f1f7 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -115,7 +115,7 @@ int main(void) { while ((problem = coco_suite_get_next_problem(suite, NULL)) != NULL) fprintf(stdout, "\n%s\n", coco_problem_get_id(problem)); coco_suite_free(suite);*/ - suite = coco_suite("bbob-largescale", "", "dimensions: 20 instance_indices: 1 function_indices: 1-24"); + suite = coco_suite("bbob-largescale", "", "dimensions: 20 instance_indices: 1 function_indices: 21"); while ((problem = coco_suite_get_next_problem(suite, NULL)) != NULL) fprintf(stdout, "\n%s\n", coco_problem_get_id(problem)); coco_suite_free(suite); diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 94e8dcc88..b9bd35b55 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -491,9 +491,25 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz for (j = versatile_data->first_non_zero_map[i]; j < versatile_data->first_non_zero_map[i] + versatile_data->block_size_map[i]; ++j) { y_i_tmp[i] += B_copy[i][j - versatile_data->first_non_zero_map[i]] * y_i[j]; } + } + + /*fprintf(stdout, "\ntmp_uniform, y_i, y_i_tmp (peak_index=%d, peak_seed=%ld)\n", (int)peak_index, peak_seed);*/ + for (i = 0; i < dimension; ++i) { + /*fprintf(stdout, "%7.4f %7.4f %7.4f\n", tmp_uniform[i], y_i[i], y_i_tmp[i]);*/ y_i[i] = y_i_tmp[i]; } + /********************************************************************* + for (i = 0; i < inner_problem->number_of_variables; ++i) { + current_blocksize = data->block_size_map[i]; + first_non_zero_ind = data->first_non_zero_map[i]; + data->x[i] = 0; + for (j = first_non_zero_ind; j < first_non_zero_ind + current_blocksize; ++j) { + data->x[i] += data->B[i][j - first_non_zero_ind] * x[j]; + } + } + *********************************************************************/ + if (peak_index == 0) { for (i = 0; i < dimension; i++){ y_i[i] *= a; @@ -512,7 +528,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz /* apply var transformations to sub problem*/ *problem_i = transform_vars_scale(*problem_i, 1. / sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ *problem_i = transform_vars_conditioning(*problem_i, alpha_i); - /**problem_i = transform_vars_blockrotation(*problem_i, B_copy, dimension, block_sizes, nb_blocks);*/ + *problem_i = transform_vars_blockrotation(*problem_i, B_copy, dimension, block_sizes, nb_blocks); *problem_i = transform_vars_permutation(*problem_i, P_Lambda, dimension); *problem_i = transform_vars_shift(*problem_i, y_i, 0); From 4b5829b32ba9b3f277d5da96777633936dcc886d Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Thu, 21 Feb 2019 15:57:33 +0100 Subject: [PATCH 384/446] Fixed rotation in the large-scale Gallagher functions --- code-experiments/src/f_gallagher.c | 34 ++++-------------------------- 1 file changed, 4 insertions(+), 30 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index b9bd35b55..77bedf842 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -397,9 +397,9 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz const char *problem_id_template, const char *problem_name_template) { - size_t i, j; + size_t i; int peak_index; - double fopt, *y_i, *y_i_tmp; + double fopt, *y_i; double penalty_factor = 1.0; coco_problem_t *problem = NULL, **problem_i; f_gallagher_versatile_data_t *versatile_data; @@ -482,37 +482,12 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz y_i = coco_allocate_vector(dimension); for (i = 0; i < dimension; i++) { y_i[i] = b * tmp_uniform[i] - c; /* Wassim: not sure the random numbers are used in the same order as for the standard case*/ + if (peak_index == 0) + y_i[i] *= a; } - y_i_tmp = coco_allocate_vector(dimension); - /* block rotate y_i */ - /* TODO: there should be an independent code to apply the rotations and block-rotations, a helper_function maybe*/ - for (i = 0; i < dimension; ++i) { - y_i_tmp[i] = 0; - for (j = versatile_data->first_non_zero_map[i]; j < versatile_data->first_non_zero_map[i] + versatile_data->block_size_map[i]; ++j) { - y_i_tmp[i] += B_copy[i][j - versatile_data->first_non_zero_map[i]] * y_i[j]; - } - } - - /*fprintf(stdout, "\ntmp_uniform, y_i, y_i_tmp (peak_index=%d, peak_seed=%ld)\n", (int)peak_index, peak_seed);*/ - for (i = 0; i < dimension; ++i) { - /*fprintf(stdout, "%7.4f %7.4f %7.4f\n", tmp_uniform[i], y_i[i], y_i_tmp[i]);*/ - y_i[i] = y_i_tmp[i]; - } - - /********************************************************************* - for (i = 0; i < inner_problem->number_of_variables; ++i) { - current_blocksize = data->block_size_map[i]; - first_non_zero_ind = data->first_non_zero_map[i]; - data->x[i] = 0; - for (j = first_non_zero_ind; j < first_non_zero_ind + current_blocksize; ++j) { - data->x[i] += data->B[i][j - first_non_zero_ind] * x[j]; - } - } - *********************************************************************/ if (peak_index == 0) { for (i = 0; i < dimension; i++){ - y_i[i] *= a; problem->best_parameter[i] = y_i[i]; } alpha_i = maxcondition; @@ -535,7 +510,6 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_free_memory(P_Lambda); coco_free_memory(y_i); - coco_free_memory(y_i_tmp); y_i = NULL; } f_gallagher_evaluate_core(problem, problem->best_parameter, problem->best_value); From 1ef0c17fa651fe11dd9b2f2cdc2f38a64cce7f1d Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Thu, 21 Feb 2019 17:21:45 +0100 Subject: [PATCH 385/446] Fixed the Gallagher problems --- code-experiments/src/f_gallagher.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 77bedf842..09befa206 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -227,7 +227,7 @@ static coco_problem_t *f_gallagher_bbob_problem_allocate(const size_t function, } qsort(rperm, dimension, sizeof(*rperm), f_gallagher_compare_doubles); for (j = 0; j < dimension; ++j) { - data->arr_scales[i][j] = pow(arrCondition[i], + data->arr_scales[i][j] = pow(arrCondition[i], /* Lambda^alpha_i from the doc */ ((double) rperm[j].index) / ((double) (dimension - 1)) - 0.5); } } @@ -388,7 +388,6 @@ static coco_problem_t *f_gallagher_problem_allocate(const size_t number_of_varia return problem; } - static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const size_t function, const size_t dimension, const size_t instance, @@ -416,18 +415,24 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz const size_t peaks_21 = 21; const size_t peaks_101 = 101; double a = 0.8, b, c; - double maxcondition = 1000.0; + double first_condition; double alpha_i, *alpha_i_vals; size_t *P_alpha_i, *P_Lambda; - /* maxcondition satisfies the old code and the doc but seems wrong in that it is, with very high + /* first_condition satisfies the old code and the doc but seems wrong in that it is, with very high * probability, not the largest condition level!!! */ + /* Done to silence unused function warnings */ + coco_problem_t *(*fun_ptr1)(coco_problem_t *) = transform_vars_gallagher_blockrotation; + coco_problem_t *(*fun_ptr2)(coco_problem_t *) = fun_ptr1; + fun_ptr1 = fun_ptr2; + fopt = bbob2009_compute_fopt(function, instance); if (number_of_peaks == peaks_101) { - maxcondition = sqrt(maxcondition); + first_condition = 1000; b = 10.0; c = 5.0; } else if (number_of_peaks == peaks_21) { + first_condition = 1000 * 1000; b = 9.8; c = 4.9; } else { @@ -468,7 +473,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz alpha_i_vals = coco_allocate_vector(number_of_peaks - 1); for (i = 0; i < number_of_peaks - 1; i++) { - alpha_i_vals[i] = pow(maxcondition, (double) (i) / ((double) (number_of_peaks - 2))); + alpha_i_vals[i] = pow(1000, 2 * (double) (i) / ((double) (number_of_peaks - 2))); } P_alpha_i = coco_allocate_vector_size_t(number_of_peaks - 1);/* random permutation of the alpha_i's to allow sampling without replacement*/ coco_compute_random_permutation(P_alpha_i, rseed + 4000000, number_of_peaks - 1); @@ -490,7 +495,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz for (i = 0; i < dimension; i++){ problem->best_parameter[i] = y_i[i]; } - alpha_i = maxcondition; + alpha_i = first_condition; } else { alpha_i = alpha_i_vals[P_alpha_i[peak_index - 1]];/*already square-rooted */ } @@ -502,12 +507,11 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz /* apply var transformations to sub problem*/ *problem_i = transform_vars_scale(*problem_i, 1. / sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ - *problem_i = transform_vars_conditioning(*problem_i, alpha_i); + *problem_i = transform_vars_conditioning(*problem_i, sqrt(alpha_i)); *problem_i = transform_vars_blockrotation(*problem_i, B_copy, dimension, block_sizes, nb_blocks); *problem_i = transform_vars_permutation(*problem_i, P_Lambda, dimension); *problem_i = transform_vars_shift(*problem_i, y_i, 0); - coco_free_memory(P_Lambda); coco_free_memory(y_i); y_i = NULL; @@ -519,10 +523,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz problem = transform_obj_power(problem, 2.0); problem = transform_obj_penalize(problem, penalty_factor); problem = transform_obj_shift(problem, fopt); - /* Wassim: TODO: re-activate*/ /*problem = transform_vars_gallagher_blockrotation(problem);*//* block-matrix in versatile_data*/ - coco_problem_set_id(problem, problem_id_template, function, instance, dimension); coco_problem_set_name(problem, problem_name_template, function, instance, dimension); coco_problem_set_type(problem, "5-weakly-structured"); From 012b131b0302807191465f3cf35266ba8c56c34b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tea=20Tus=CC=8Car?= Date: Fri, 22 Feb 2019 02:29:46 +0100 Subject: [PATCH 386/446] Fixing the Gallagher function --- code-experiments/src/f_gallagher.c | 48 +++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 09befa206..63eebcf55 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -400,17 +400,17 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz int peak_index; double fopt, *y_i; double penalty_factor = 1.0; - coco_problem_t *problem = NULL, **problem_i; + coco_problem_t *problem = NULL, **problem_i, *rotation_problem; f_gallagher_versatile_data_t *versatile_data; double **B; - const double *const *B_copy; + const double *const *B_const; /*size_t *P1, *P2;*/ size_t *block_sizes; size_t nb_blocks; size_t idx_blocksize, current_blocksize, next_bs_change; /* needed for the rotated y_i*/ /*size_t swap_range; size_t nb_swaps;*/ - double *tmp_uniform; + double *tmp_uniform, *best_param_before_rotation, *best_param_after_rotation; long peak_seed; const size_t peaks_21 = 21; const size_t peaks_101 = 101; @@ -446,8 +446,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz nb_swaps = coco_get_nb_swaps(dimension, "bbob-largescale");*/ B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); - B_copy = (const double *const *)B; - coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_blockrotation(B, rseed, dimension, block_sizes, nb_blocks); + B_const = (const double *const *)B; /* Required because of the type */ /*P1 = coco_allocate_vector_size_t(dimension); P2 = coco_allocate_vector_size_t(dimension); @@ -469,32 +469,44 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz versatile_data->block_size_map[i] = current_blocksize; versatile_data->first_non_zero_map[i] = next_bs_change - current_blocksize; } - versatile_data->B = coco_copy_block_matrix(B_copy, dimension, block_sizes, nb_blocks); + versatile_data->B = coco_copy_block_matrix(B_const, dimension, block_sizes, nb_blocks); + + rotation_problem = coco_problem_allocate(dimension, 1, 0); + rotation_problem = transform_vars_blockrotation(rotation_problem, B_const, dimension, block_sizes, nb_blocks); alpha_i_vals = coco_allocate_vector(number_of_peaks - 1); for (i = 0; i < number_of_peaks - 1; i++) { alpha_i_vals[i] = pow(1000, 2 * (double) (i) / ((double) (number_of_peaks - 2))); } P_alpha_i = coco_allocate_vector_size_t(number_of_peaks - 1);/* random permutation of the alpha_i's to allow sampling without replacement*/ - coco_compute_random_permutation(P_alpha_i, rseed + 4000000, number_of_peaks - 1); + coco_compute_random_permutation(P_alpha_i, rseed, number_of_peaks - 1); tmp_uniform = coco_allocate_vector(dimension); + best_param_before_rotation = coco_allocate_vector(dimension); + best_param_after_rotation = coco_allocate_vector(dimension); for (peak_index = 0; peak_index < number_of_peaks; peak_index++) { - peak_seed = rseed + (long) peak_index * (long) 1000000; + peak_seed = rseed + (long) peak_index * (long) 1000; bbob2009_unif(tmp_uniform, dimension, peak_seed); /*TODO: To be discussed*/ problem_i = &(versatile_data->sub_problems[peak_index]); + /* compute transformation parameters: */ /* y_i and block-rotate it once and for all */ y_i = coco_allocate_vector(dimension); for (i = 0; i < dimension; i++) { y_i[i] = b * tmp_uniform[i] - c; /* Wassim: not sure the random numbers are used in the same order as for the standard case*/ - if (peak_index == 0) + if (peak_index == 0) { y_i[i] *= a; + problem->best_parameter[i] = 0; + best_param_before_rotation[i] = y_i[i]; + } } - + transform_vars_blockrotation_apply(rotation_problem, y_i, y_i); if (peak_index == 0) { - for (i = 0; i < dimension; i++){ - problem->best_parameter[i] = y_i[i]; + for (i = 0; i < dimension; i++) { + best_param_after_rotation[i] = y_i[i]; } + } + + if (peak_index == 0) { alpha_i = first_condition; } else { alpha_i = alpha_i_vals[P_alpha_i[peak_index - 1]];/*already square-rooted */ @@ -508,7 +520,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz /* apply var transformations to sub problem*/ *problem_i = transform_vars_scale(*problem_i, 1. / sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ *problem_i = transform_vars_conditioning(*problem_i, sqrt(alpha_i)); - *problem_i = transform_vars_blockrotation(*problem_i, B_copy, dimension, block_sizes, nb_blocks); + /**problem_i = transform_vars_blockrotation(*problem_i, B_copy, dimension, block_sizes, nb_blocks);*/ *problem_i = transform_vars_permutation(*problem_i, P_Lambda, dimension); *problem_i = transform_vars_shift(*problem_i, y_i, 0); @@ -516,7 +528,12 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_free_memory(y_i); y_i = NULL; } - f_gallagher_evaluate_core(problem, problem->best_parameter, problem->best_value); + + f_gallagher_evaluate_core(problem, best_param_after_rotation, problem->best_value); + problem = transform_vars_blockrotation(problem, B_const, dimension, block_sizes, nb_blocks); + for (i = 0; i < dimension; i++) { + problem->best_parameter[i] = best_param_before_rotation[i]; + } /*transform global objective function*/ problem = transform_obj_oscillate(problem); @@ -536,5 +553,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_free_memory(block_sizes); coco_free_memory(alpha_i_vals); coco_free_memory(P_alpha_i); + coco_free_memory(rotation_problem); + coco_free_memory(best_param_before_rotation); + coco_free_memory(best_param_after_rotation); return problem; } From 7e5d6846e4fa5153f8fe921b87c43c6aef34557d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tea=20Tus=CC=8Car?= Date: Fri, 22 Feb 2019 02:30:36 +0100 Subject: [PATCH 387/446] Simplifying block rotation --- .../src/transform_vars_blockrotation.c | 42 +++++++++++++------ .../transform_vars_blockrotation_helpers.c | 33 ++------------- 2 files changed, 34 insertions(+), 41 deletions(-) diff --git a/code-experiments/src/transform_vars_blockrotation.c b/code-experiments/src/transform_vars_blockrotation.c index bf1c5d6cf..20668eb8a 100644 --- a/code-experiments/src/transform_vars_blockrotation.c +++ b/code-experiments/src/transform_vars_blockrotation.c @@ -17,7 +17,7 @@ */ typedef struct { double **B; /**< @brief the block-diagonal matrices*/ - double *x; + double *Bx; size_t dimension; size_t *block_sizes; /**< @brief the list of block-sizes*/ size_t nb_blocks; /**< @brief the number of blocks in the matrix */ @@ -25,24 +25,42 @@ typedef struct { size_t *first_non_zero_map; /**< @brief maps a row to the index of its first non zero element */ } transform_vars_blockrotation_t; -static void transform_vars_blockrotation_evaluate(coco_problem_t *problem, const double *x, double *y) { +/* + * @brief Computes y = Bx, where all the pertinent information about B is given in the problem data. + */ +static void transform_vars_blockrotation_apply(coco_problem_t *problem, + const double *x, + double *y) { size_t i, j, current_blocksize, first_non_zero_ind; transform_vars_blockrotation_t *data; - coco_problem_t *inner_problem; - + data = (transform_vars_blockrotation_t *) coco_problem_transformed_get_data(problem); - inner_problem = coco_problem_transformed_get_inner_problem(problem); - for (i = 0; i < inner_problem->number_of_variables; ++i) { + assert(x != data->Bx); + for (i = 0; i < data->dimension; ++i) { current_blocksize = data->block_size_map[i]; first_non_zero_ind = data->first_non_zero_map[i]; - data->x[i] = 0; - /*compute data->x[i] = < B[i,:] , x > */ + data->Bx[i] = 0; + /*compute y[i] = < B[i,:] , x > */ for (j = first_non_zero_ind; j < first_non_zero_ind + current_blocksize; ++j) { - data->x[i] += data->B[i][j - first_non_zero_ind] * x[j]; /*all B lines start at 0*/ + data->Bx[i] += data->B[i][j - first_non_zero_ind] * x[j]; /*all B lines start at 0*/ + } + } + if (y != data->Bx) { + for (i = 0; i < data->dimension; ++i) { + y[i] = data->Bx[i]; } } +} - coco_evaluate_function(inner_problem, data->x, y); +static void transform_vars_blockrotation_evaluate(coco_problem_t *problem, const double *x, double *y) { + coco_problem_t *inner_problem = coco_problem_transformed_get_inner_problem(problem); + transform_vars_blockrotation_t *data; + data = (transform_vars_blockrotation_t *) coco_problem_transformed_get_data(problem); + + transform_vars_blockrotation_apply(problem, x, data->Bx); + + inner_problem = coco_problem_transformed_get_inner_problem(problem); + coco_evaluate_function(inner_problem, data->Bx, y); assert(y[0] + 1e-13 >= problem->best_value[0]); } @@ -50,7 +68,7 @@ static void transform_vars_blockrotation_free(void *stuff) { transform_vars_blockrotation_t *data = (transform_vars_blockrotation_t *) stuff; coco_free_block_matrix(data->B, data->dimension); coco_free_memory(data->block_sizes); - coco_free_memory(data->x); + coco_free_memory(data->Bx); coco_free_memory(data->block_size_map); coco_free_memory(data->first_non_zero_map); } @@ -73,7 +91,7 @@ static coco_problem_t *transform_vars_blockrotation(coco_problem_t *inner_proble data = (transform_vars_blockrotation_t *) coco_allocate_memory(sizeof(*data)); data->dimension = number_of_variables; data->B = coco_copy_block_matrix(B, number_of_variables, block_sizes, nb_blocks); - data->x = coco_allocate_vector(inner_problem->number_of_variables); + data->Bx = coco_allocate_vector(inner_problem->number_of_variables); data->block_sizes = coco_duplicate_size_t_vector(block_sizes, nb_blocks); data->nb_blocks = nb_blocks; data->block_size_map = coco_allocate_vector_size_t(number_of_variables); diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index 4788346dc..1b21b41b4 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -85,13 +85,10 @@ static void coco_free_block_matrix(double **matrix, const size_t n) { * B is a 2D vector with DIM lines and each line has blocksize(line) elements (the zeros are not stored) */ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t *block_sizes, size_t nb_blocks) { - double prod; - /*double *gvect;*/ double **current_block; - size_t i, j, k; /* Loop over pairs of column vectors. */ - size_t idx_block, current_blocksize,cumsum_prev_block_sizes, sum_block_sizes; + size_t i, j; + size_t idx_block, current_blocksize, cumsum_prev_block_sizes, sum_block_sizes; size_t nb_entries, current_nb_entries; - double *tmp_normal; nb_entries = 0; sum_block_sizes = 0; for (i = 0; i < nb_blocks; i++){ @@ -105,28 +102,8 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * current_blocksize = block_sizes[idx_block]; current_block = bbob2009_allocate_matrix(current_blocksize, current_blocksize); current_nb_entries = current_blocksize * current_blocksize; - tmp_normal = coco_allocate_vector(current_nb_entries); - bbob2009_gauss(tmp_normal, current_nb_entries, seed + (long) 1000000 * (long) current_blocksize);/* TODO: To be discussed */ - bbob2009_reshape(current_block, tmp_normal, current_blocksize, current_blocksize); - - for (i = 0; i < current_blocksize; i++) { - for (j = 0; j < i; j++) { - prod = 0; - for (k = 0; k < current_blocksize; k++){ - prod += current_block[k][i] * current_block[k][j]; - } - for (k = 0; k < current_blocksize; k++){ - current_block[k][i] -= prod * current_block[k][j]; - } - } - prod = 0; - for (k = 0; k < current_blocksize; k++){ - prod += current_block[k][i] * current_block[k][i]; - } - for (k = 0; k < current_blocksize; k++){ - current_block[k][i] /= sqrt(prod); - } - } + assert(current_blocksize <= 44); + bbob2009_compute_rotation(current_block, seed + (long) 1000000 * (long) idx_block, current_blocksize); /* now fill the block matrix*/ for (i = 0 ; i < current_blocksize; i++) { @@ -138,9 +115,7 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * cumsum_prev_block_sizes+=current_blocksize; /*current_gvect_pos += current_blocksize * current_blocksize;*/ coco_free_block_matrix(current_block, current_blocksize); - coco_free_memory(tmp_normal); } - /*coco_free_memory(gvect);*/ } /** From c97e1b8483a19e97d5a2d4b1b37103fef26f6c3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tea=20Tus=CC=8Car?= Date: Fri, 22 Feb 2019 02:32:20 +0100 Subject: [PATCH 388/446] Permutation not done for dimensions <= 40 --- .../src/transform_vars_permutation_helpers.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/code-experiments/src/transform_vars_permutation_helpers.c b/code-experiments/src/transform_vars_permutation_helpers.c index 386883e87..3d186a88e 100644 --- a/code-experiments/src/transform_vars_permutation_helpers.c +++ b/code-experiments/src/transform_vars_permutation_helpers.c @@ -73,15 +73,18 @@ static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed long i, idx_swap, tmp_seed; size_t lower_bound, upper_bound, first_swap_var, second_swap_var, tmp; size_t *idx_order; - perm_random_data = coco_allocate_vector(n); - bbob2009_unif(perm_random_data, n, seed); - idx_order = coco_allocate_vector_size_t(n); - for (i = 0; i < n; i++){ + for (i = 0; i < n; i++) P[i] = (size_t) i; - idx_order[i] = (size_t) i; + if (n <= 40) { + /* Do an identity permutation for dimensions <= 40 */ + return; } + idx_order = coco_allocate_vector_size_t(n); + for (i = 0; i < n; i++) + idx_order[i] = (size_t) i; + if (swap_range > 0) { /*sort the random data in random_data and arange idx_order accordingly*/ /*did not use coco_compute_random_permutation to only use the seed once*/ @@ -119,7 +122,6 @@ static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed } } - coco_free_memory(perm_random_data); coco_free_memory(idx_order); } From 8be1977fb3af1ebbf0f9757d0808b69a31d50402 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tea=20Tus=CC=8Car?= Date: Fri, 22 Feb 2019 02:33:17 +0100 Subject: [PATCH 389/446] Changed seeds to get the same instances as in the bbob problems --- code-experiments/src/f_griewank_rosenbrock.c | 2 +- code-experiments/src/f_katsuura.c | 2 +- code-experiments/src/f_lunacek_bi_rastrigin.c | 2 +- code-experiments/src/f_rastrigin.c | 2 +- code-experiments/src/f_rosenbrock.c | 2 +- code-experiments/src/f_schaffers.c | 2 +- code-experiments/src/f_sharp_ridge_generalized.c | 2 +- code-experiments/src/f_weierstrass.c | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code-experiments/src/f_griewank_rosenbrock.c b/code-experiments/src/f_griewank_rosenbrock.c index 2d02228d7..1e81490a6 100644 --- a/code-experiments/src/f_griewank_rosenbrock.c +++ b/code-experiments/src/f_griewank_rosenbrock.c @@ -169,7 +169,7 @@ static coco_problem_t *f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_all B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_blockrotation(B, rseed, dimension, block_sizes, nb_blocks); coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index 2b0e17a90..fc2db65c2 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -176,7 +176,7 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps1, swap_range1); coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps1, swap_range1); diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index 7419978c9..32c797fde 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -333,7 +333,7 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat B1_copy = (const double *const *)B1; B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); P11 = coco_allocate_vector_size_t(dimension); P12 = coco_allocate_vector_size_t(dimension); diff --git a/code-experiments/src/f_rastrigin.c b/code-experiments/src/f_rastrigin.c index 14711ad57..928f7f592 100644 --- a/code-experiments/src/f_rastrigin.c +++ b/code-experiments/src/f_rastrigin.c @@ -217,7 +217,7 @@ static coco_problem_t *f_rastrigin_permblockdiag_bbob_problem_allocate(const siz B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps1, swap_range1); coco_compute_truncated_uniform_swap_permutation(P12, rseed + 4000000, dimension, nb_swaps1, swap_range1); diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index 11481a7ed..d9fc8d514 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -217,7 +217,7 @@ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const si B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); B_copy = (const double *const *)B; - coco_compute_blockrotation(B, rseed + 1000000, dimension, block_sizes, nb_blocks); + coco_compute_blockrotation(B, rseed, dimension, block_sizes, nb_blocks); coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P2, rseed + 3000000, dimension, nb_swaps, swap_range); diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index 09097d4f1..38a5c0249 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -173,7 +173,7 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); diff --git a/code-experiments/src/f_sharp_ridge_generalized.c b/code-experiments/src/f_sharp_ridge_generalized.c index a5fd5acb5..f77f07b05 100644 --- a/code-experiments/src/f_sharp_ridge_generalized.c +++ b/code-experiments/src/f_sharp_ridge_generalized.c @@ -138,7 +138,7 @@ static coco_problem_t *f_sharp_ridge_generalized_permblockdiag_bbob_problem_allo B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index 7e8aad880..3a868fce9 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -196,7 +196,7 @@ static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const s B2_copy = (const double *const *)B2; coco_compute_blockrotation(B1, rseed + 1000000, dimension, block_sizes1, nb_blocks1); - coco_compute_blockrotation(B2, rseed + 2000000, dimension, block_sizes2, nb_blocks2); + coco_compute_blockrotation(B2, rseed, dimension, block_sizes2, nb_blocks2); coco_compute_truncated_uniform_swap_permutation(P11, rseed + 3000000, dimension, nb_swaps, swap_range); coco_compute_truncated_uniform_swap_permutation(P21, rseed + 4000000, dimension, nb_swaps, swap_range); From d97f24067239ddb8c443d4ed29485c51e3837916 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Fri, 22 Feb 2019 15:30:04 +0100 Subject: [PATCH 390/446] Fixed rotations for some functions --- code-experiments/src/f_attractive_sector.c | 4 ++-- code-experiments/src/f_katsuura.c | 4 ++-- code-experiments/src/f_lunacek_bi_rastrigin.c | 4 ++-- code-experiments/src/f_schaffers.c | 4 ++-- code-experiments/src/f_step_ellipsoid.c | 4 ++-- code-experiments/src/f_weierstrass.c | 6 +++--- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/code-experiments/src/f_attractive_sector.c b/code-experiments/src/f_attractive_sector.c index de98cabb8..52173e1a3 100644 --- a/code-experiments/src/f_attractive_sector.c +++ b/code-experiments/src/f_attractive_sector.c @@ -198,11 +198,11 @@ static coco_problem_t *f_attractive_sector_permblockdiag_bbob_problem_allocate(c problem = transform_obj_shift(problem, fopt); problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_conditioning(problem, condition); problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); diff --git a/code-experiments/src/f_katsuura.c b/code-experiments/src/f_katsuura.c index fc2db65c2..0055a36a4 100644 --- a/code-experiments/src/f_katsuura.c +++ b/code-experiments/src/f_katsuura.c @@ -185,11 +185,11 @@ static coco_problem_t *f_katsuura_permblockdiag_bbob_problem_allocate(const size problem = f_katsuura_allocate(dimension); problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_conditioning(problem, 100.0); problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); diff --git a/code-experiments/src/f_lunacek_bi_rastrigin.c b/code-experiments/src/f_lunacek_bi_rastrigin.c index 32c797fde..0d8a34bb8 100644 --- a/code-experiments/src/f_lunacek_bi_rastrigin.c +++ b/code-experiments/src/f_lunacek_bi_rastrigin.c @@ -379,12 +379,12 @@ static coco_problem_t *f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocat /* transformations on main problem */ problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_conditioning(problem, condition); problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, mu0_vector, 0); problem = transform_vars_x_hat_generic(problem, sign_vector); diff --git a/code-experiments/src/f_schaffers.c b/code-experiments/src/f_schaffers.c index 38a5c0249..df8c6ba90 100644 --- a/code-experiments/src/f_schaffers.c +++ b/code-experiments/src/f_schaffers.c @@ -183,12 +183,12 @@ static coco_problem_t *f_schaffers_permblockdiag_bbob_problem_allocate(const siz problem = f_schaffers_allocate(dimension); problem = transform_vars_conditioning(problem, conditioning); problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_asymmetric(problem, 0.5); problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); diff --git a/code-experiments/src/f_step_ellipsoid.c b/code-experiments/src/f_step_ellipsoid.c index 393af2b67..8bdd59ac7 100644 --- a/code-experiments/src/f_step_ellipsoid.c +++ b/code-experiments/src/f_step_ellipsoid.c @@ -287,13 +287,13 @@ static coco_problem_t *f_step_ellipsoid_permblockdiag_bbob_problem_allocate(cons problem = f_step_ellipsoid_allocate(dimension); problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P21, dimension); problem = transform_vars_round_step(problem, alpha); problem = transform_vars_conditioning(problem, 10.0); problem = transform_vars_permutation(problem, P12, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_shift(problem, xopt, 0); diff --git a/code-experiments/src/f_weierstrass.c b/code-experiments/src/f_weierstrass.c index 3a868fce9..29bbeefe6 100644 --- a/code-experiments/src/f_weierstrass.c +++ b/code-experiments/src/f_weierstrass.c @@ -205,17 +205,17 @@ static coco_problem_t *f_weierstrass_permblockdiag_bbob_problem_allocate(const s problem = f_weierstrass_allocate(dimension); problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_conditioning(problem, 1.0/condition); problem = transform_vars_permutation(problem, P21, dimension); - problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); + problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); problem = transform_vars_permutation(problem, P11, dimension); problem = transform_vars_oscillate(problem); problem = transform_vars_permutation(problem, P22, dimension); - problem = transform_vars_blockrotation(problem, B2_copy, dimension, block_sizes2, nb_blocks2); + problem = transform_vars_blockrotation(problem, B1_copy, dimension, block_sizes1, nb_blocks1); problem = transform_vars_permutation(problem, P12, dimension); problem = transform_vars_shift(problem, xopt, 0); From 31b4acb1a087b6a1f267a2250ff069ba0b251cf6 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Fri, 22 Feb 2019 15:30:25 +0100 Subject: [PATCH 391/446] Removed unused variable --- code-experiments/src/transform_vars_blockrotation_helpers.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index 1b21b41b4..6c21e6a8d 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -88,7 +88,7 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * double **current_block; size_t i, j; size_t idx_block, current_blocksize, cumsum_prev_block_sizes, sum_block_sizes; - size_t nb_entries, current_nb_entries; + size_t nb_entries; nb_entries = 0; sum_block_sizes = 0; for (i = 0; i < nb_blocks; i++){ @@ -101,7 +101,6 @@ static void coco_compute_blockrotation(double **B, long seed, size_t n, size_t * for (idx_block = 0; idx_block < nb_blocks; idx_block++) { current_blocksize = block_sizes[idx_block]; current_block = bbob2009_allocate_matrix(current_blocksize, current_blocksize); - current_nb_entries = current_blocksize * current_blocksize; assert(current_blocksize <= 44); bbob2009_compute_rotation(current_block, seed + (long) 1000000 * (long) idx_block, current_blocksize); From dfeef5956110a8583bd90c32c2e11c10e387517e Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Fri, 22 Feb 2019 15:30:43 +0100 Subject: [PATCH 392/446] A change of seed (not yet enough) --- code-experiments/src/f_gallagher.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 63eebcf55..f6db69681 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -515,7 +515,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz (*problem_i)->best_value[0] = 0;/* to prevent raising the assert */ /* P_Lambda the permutation */ P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the values in C_i */ - coco_compute_random_permutation(P_Lambda, rseed + 5000000 + peak_index, dimension); + coco_compute_random_permutation(P_Lambda, rseed + (long) (1000 * peak_index), dimension); /* apply var transformations to sub problem*/ *problem_i = transform_vars_scale(*problem_i, 1. / sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ From 2abf88c7bb5a442d697fa8ae4995fd924f7fe80a Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Mon, 25 Feb 2019 13:43:56 +0100 Subject: [PATCH 393/446] Debugging Gallagher - Attempting same instances between bbob and bbob-largescale --- code-experiments/build/c/example_experiment.c | 2 +- code-experiments/src/f_gallagher.c | 23 +++++++++++-------- .../src/transform_vars_permutation_helpers.c | 16 +++++++++++++ 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index 8b7d1f1f7..cacc6fe7c 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -115,7 +115,7 @@ int main(void) { while ((problem = coco_suite_get_next_problem(suite, NULL)) != NULL) fprintf(stdout, "\n%s\n", coco_problem_get_id(problem)); coco_suite_free(suite);*/ - suite = coco_suite("bbob-largescale", "", "dimensions: 20 instance_indices: 1 function_indices: 21"); + suite = coco_suite("bbob-largescale", "", "dimensions: 20 instance_indices: 1 function_indices: 22"); while ((problem = coco_suite_get_next_problem(suite, NULL)) != NULL) fprintf(stdout, "\n%s\n", coco_problem_get_id(problem)); coco_suite_free(suite); diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index f6db69681..f8a40eb63 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -397,7 +397,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz const char *problem_name_template) { size_t i; - int peak_index; + size_t peak_index; double fopt, *y_i; double penalty_factor = 1.0; coco_problem_t *problem = NULL, **problem_i, *rotation_problem; @@ -410,8 +410,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz size_t idx_blocksize, current_blocksize, next_bs_change; /* needed for the rotated y_i*/ /*size_t swap_range; size_t nb_swaps;*/ - double *tmp_uniform, *best_param_before_rotation, *best_param_after_rotation; - long peak_seed; + double *tmp_uniform, *tmp_uniform2, *best_param_before_rotation, *best_param_after_rotation; const size_t peaks_21 = 21; const size_t peaks_101 = 101; double a = 0.8, b, c; @@ -478,21 +477,22 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz for (i = 0; i < number_of_peaks - 1; i++) { alpha_i_vals[i] = pow(1000, 2 * (double) (i) / ((double) (number_of_peaks - 2))); } + tmp_uniform = coco_allocate_vector(dimension * number_of_peaks); + bbob2009_unif(tmp_uniform, number_of_peaks - 1, rseed); P_alpha_i = coco_allocate_vector_size_t(number_of_peaks - 1);/* random permutation of the alpha_i's to allow sampling without replacement*/ - coco_compute_random_permutation(P_alpha_i, rseed, number_of_peaks - 1); - tmp_uniform = coco_allocate_vector(dimension); + coco_compute_permutation_from_sequence(P_alpha_i, tmp_uniform, number_of_peaks - 1); + bbob2009_unif(tmp_uniform, dimension * number_of_peaks, rseed); best_param_before_rotation = coco_allocate_vector(dimension); best_param_after_rotation = coco_allocate_vector(dimension); + tmp_uniform2 = coco_allocate_vector(dimension); for (peak_index = 0; peak_index < number_of_peaks; peak_index++) { - peak_seed = rseed + (long) peak_index * (long) 1000; - bbob2009_unif(tmp_uniform, dimension, peak_seed); /*TODO: To be discussed*/ problem_i = &(versatile_data->sub_problems[peak_index]); /* compute transformation parameters: */ /* y_i and block-rotate it once and for all */ y_i = coco_allocate_vector(dimension); for (i = 0; i < dimension; i++) { - y_i[i] = b * tmp_uniform[i] - c; /* Wassim: not sure the random numbers are used in the same order as for the standard case*/ + y_i[i] = b * tmp_uniform[i + peak_index * dimension] - c; if (peak_index == 0) { y_i[i] *= a; problem->best_parameter[i] = 0; @@ -515,12 +515,14 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz (*problem_i)->best_value[0] = 0;/* to prevent raising the assert */ /* P_Lambda the permutation */ P_Lambda = coco_allocate_vector_size_t(dimension);/* random permutation of the values in C_i */ - coco_compute_random_permutation(P_Lambda, rseed + (long) (1000 * peak_index), dimension); + bbob2009_unif(tmp_uniform2, dimension, rseed + (long) (1000 * peak_index)); + coco_compute_permutation_from_sequence(P_Lambda, tmp_uniform2, dimension); + /*coco_compute_random_permutation(P_Lambda, rseed + (long) (1000 * peak_index), dimension);*/ /* apply var transformations to sub problem*/ *problem_i = transform_vars_scale(*problem_i, 1. / sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ *problem_i = transform_vars_conditioning(*problem_i, sqrt(alpha_i)); - /**problem_i = transform_vars_blockrotation(*problem_i, B_copy, dimension, block_sizes, nb_blocks);*/ + /**problem_i = transform_vars_blockrotation(*problem_i, B_const, dimension, block_sizes, nb_blocks);*/ *problem_i = transform_vars_permutation(*problem_i, P_Lambda, dimension); *problem_i = transform_vars_shift(*problem_i, y_i, 0); @@ -548,6 +550,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_free_block_matrix(B, dimension); coco_free_memory(tmp_uniform); + coco_free_memory(tmp_uniform2); /*coco_free_memory(P1); coco_free_memory(P2);*/ coco_free_memory(block_sizes); diff --git a/code-experiments/src/transform_vars_permutation_helpers.c b/code-experiments/src/transform_vars_permutation_helpers.c index 3d186a88e..e2bfe9fc8 100644 --- a/code-experiments/src/transform_vars_permutation_helpers.c +++ b/code-experiments/src/transform_vars_permutation_helpers.c @@ -46,6 +46,22 @@ static void coco_compute_random_permutation(size_t *P, long seed, size_t n) { } +/** + * @brief generates a permutation by sorting a sequence and puts it in P + */ +static void coco_compute_permutation_from_sequence(size_t *P, double *seq, size_t length) { + long i; + + perm_random_data = coco_allocate_vector(length); + for (i = 0; i < length; i++){ + P[i] = (size_t) i; + perm_random_data[i] = seq[i]; + } + qsort(P, length, sizeof(size_t), f_compare_doubles_for_random_permutation); + coco_free_memory(perm_random_data); +} + + /** * @brief returns a uniformly distributed integer between lower_bound and upper_bound using seed * without using coco_random_new. From e3cd1c20bfffabdefcdc520c25f7159b088c732a Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Mon, 4 Mar 2019 17:25:54 +0100 Subject: [PATCH 394/446] Fixed a type conversion problem --- code-experiments/examples/bbob-biobj-matlab-smsemoa/hv.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/examples/bbob-biobj-matlab-smsemoa/hv.cpp b/code-experiments/examples/bbob-biobj-matlab-smsemoa/hv.cpp index 7f6da5958..849964cf1 100644 --- a/code-experiments/examples/bbob-biobj-matlab-smsemoa/hv.cpp +++ b/code-experiments/examples/bbob-biobj-matlab-smsemoa/hv.cpp @@ -18,7 +18,7 @@ void mexFunction( int nlhs, mxArray *plhs[] , int nrhs, const mxArray *prhs[] ) double * volume; double * data, * reference; unsigned int row, col, row_r, col_r; - const int *dims, *dims_r; + const mwSize *dims, *dims_r; if(nrhs != 2 || nlhs != 1) { From 0081941b333facfbb5713ebdc8a2db0eb49514bc Mon Sep 17 00:00:00 2001 From: Konstantinos Varelas Date: Tue, 5 Mar 2019 11:37:47 +0100 Subject: [PATCH 395/446] Implementing inverse permutation transformation for Gallagher correction --- code-experiments/src/f_gallagher.c | 3 +- .../src/transform_vars_permutation.c | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index f8a40eb63..2f3f42124 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -447,7 +447,6 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz B = coco_allocate_blockmatrix(dimension, block_sizes, nb_blocks); coco_compute_blockrotation(B, rseed, dimension, block_sizes, nb_blocks); B_const = (const double *const *)B; /* Required because of the type */ - /*P1 = coco_allocate_vector_size_t(dimension); P2 = coco_allocate_vector_size_t(dimension); coco_compute_truncated_uniform_swap_permutation(P1, rseed + 2000000, dimension, nb_swaps, swap_range); @@ -523,7 +522,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz *problem_i = transform_vars_scale(*problem_i, 1. / sqrt(sqrt(sqrt(alpha_i))));/* sqrt( alpha^1/4) */ *problem_i = transform_vars_conditioning(*problem_i, sqrt(alpha_i)); /**problem_i = transform_vars_blockrotation(*problem_i, B_const, dimension, block_sizes, nb_blocks);*/ - *problem_i = transform_vars_permutation(*problem_i, P_Lambda, dimension); + *problem_i = transform_vars_inverse_permutation(*problem_i, P_Lambda, dimension); *problem_i = transform_vars_shift(*problem_i, y_i, 0); coco_free_memory(P_Lambda); diff --git a/code-experiments/src/transform_vars_permutation.c b/code-experiments/src/transform_vars_permutation.c index a08fe0030..a68882a02 100644 --- a/code-experiments/src/transform_vars_permutation.c +++ b/code-experiments/src/transform_vars_permutation.c @@ -58,3 +58,35 @@ static coco_problem_t *transform_vars_permutation(coco_problem_t *inner_problem, } +static void transform_vars_inverse_permutation_evaluate(coco_problem_t *problem, const double *x, double *y) { + size_t i; + transform_vars_permutation_t *data; + coco_problem_t *inner_problem; + + data = (transform_vars_permutation_t *) coco_problem_transformed_get_data(problem); + inner_problem = coco_problem_transformed_get_inner_problem(problem); + for (i = 0; i < inner_problem->number_of_variables; ++i) { + data->x[data->P[i]] = x[i]; + } + + coco_evaluate_function(inner_problem, data->x, y); + assert(y[0] + 1e-13 >= problem->best_value[0]); +} + + +static coco_problem_t *transform_vars_inverse_permutation(coco_problem_t *inner_problem, + const size_t *P, + const size_t number_of_variables) { + coco_problem_t *problem; + transform_vars_permutation_t *data; + + assert(number_of_variables > 0);/*tmp*/ + + data = (transform_vars_permutation_t *) coco_allocate_memory(sizeof(*data)); + data->x = coco_allocate_vector(inner_problem->number_of_variables); + data->P = coco_duplicate_size_t_vector(P, inner_problem->number_of_variables); + + problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_permutation_free, "transform_vars_inverse_permutation"); + problem->evaluate_function = transform_vars_inverse_permutation_evaluate; + return problem; +} From bc8de24a64e007ceefc48e5b3a58192b80d9f3b6 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 14:43:25 +0100 Subject: [PATCH 396/446] Fixed identation and typo --- code-experiments/src/suite_largescale.c | 36 +++++++++---------- .../transform_vars_blockrotation_helpers.c | 2 +- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 7d293f937..8779b59a4 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -85,61 +85,61 @@ static coco_problem_t *coco_get_largescale_problem(const size_t function, problem_id_template, problem_name_template); } else if (function == 6) { problem = f_attractive_sector_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 7) { problem = f_step_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 8) { problem = f_rosenbrock_bbob_problem_allocate(function, dimension, instance, rseed, problem_id_template, problem_name_template); } else if (function == 9) { problem = f_rosenbrock_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 10) { problem = f_ellipsoid_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 11) { problem = f_discus_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 12) { problem = f_bent_cigar_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 13) { problem = f_sharp_ridge_generalized_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 14) { problem = f_different_powers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 15) { problem = f_rastrigin_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 16) { problem = f_weierstrass_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 17) { problem = f_schaffers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, 10, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 18) { problem = f_schaffers_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed_17, 1000, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 19) { problem = f_griewank_rosenbrock_permblockdiag_bbob_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 20) { problem = f_schwefel_generalized_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 21) { problem = f_gallagher_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, 101, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 22) { problem = f_gallagher_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, 21, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 23) { problem = f_katsuura_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else if (function == 24) { problem = f_lunacek_bi_rastrigin_permblockdiag_bbob_problem_allocate(function, dimension, instance, rseed, - problem_id_template, problem_name_template); + problem_id_template, problem_name_template); } else { coco_error("coco_get_largescale_problem(): cannot retrieve problem f%lu instance %lu in %luD", (unsigned long) function, (unsigned long) instance, (unsigned long) dimension); diff --git a/code-experiments/src/transform_vars_blockrotation_helpers.c b/code-experiments/src/transform_vars_blockrotation_helpers.c index 6c21e6a8d..5f133b236 100644 --- a/code-experiments/src/transform_vars_blockrotation_helpers.c +++ b/code-experiments/src/transform_vars_blockrotation_helpers.c @@ -65,7 +65,7 @@ static double **coco_allocate_blockmatrix(const size_t n, const size_t* block_si /** - * @brief frees a block diagonal matrix (same as a matrix but in case of change, easier to update separatly from free_matrix) + * @brief frees a block diagonal matrix (same as a matrix but in case of change, easier to update separately from free_matrix) */ static void coco_free_block_matrix(double **matrix, const size_t n) { size_t i; From cb395e84ac03c68074224d76095551e751730f64 Mon Sep 17 00:00:00 2001 From: Dimo Brockhoff Date: Tue, 5 Mar 2019 15:06:29 +0100 Subject: [PATCH 397/446] corrected link... ...and took out references to now solved issues --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index 4cf71d956..233547ce8 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ numbbo/coco: Comparing Continuous Optimizers ============================================ [![CircleCI](https://circleci.com/gh/numbbo/coco/tree/master.svg?style=shield)](https://circleci.com/gh/numbbo/coco/tree/master) -[![Build status](https://ci.appveyor.com/api/projects/status/6ma1i8xsby9v3r8i/branch/master?svg=true)](https://ci.appveyor.com/project/nikohansen/coco-28e3ab1txqzfiw9/branch/master) [This code](https://github.com/numbbo/coco) reimplements the original Comparing Continous Optimizer platform, now rewritten fully in `ANSI C` and `Python` with @@ -614,7 +613,7 @@ Comprehensive List of Documentations * General introduction: http://numbbo.github.io/coco-doc * Experimental setup: http://numbbo.github.io/coco-doc/experimental-setup/ * Testbeds - - bbob: http://coco.lri.fr/downloads/download15.03/bbobdocfunctions.pdf ^1 + - bbob: http://coco.gforge.inria.fr/downloads/download16.00/bbobdocfunctions.pdf - bbob-biobj: http://numbbo.github.io/coco-doc/bbob-biobj/functions/ - bbob-biobj-ext: http://numbbo.github.io/coco-doc/bbob-biobj/functions/ - bbob-noisy (only in old code basis): http://coco.lri.fr/downloads/download15.03/bbobdocnoisyfunctions.pdf @@ -638,5 +637,3 @@ Comprehensive List of Documentations * Some examples of [results](https://github.com/numbbo/coco/wiki/COCO-Wiki-Home). -^1: see [#837](https://github.com/numbbo/coco/issues/837) and [#1266](https://github.com/numbbo/coco/issues/1266) for two pending errata - From 598bec49438fc31011eff7af4338bb5ac0aeaa81 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 15:07:33 +0100 Subject: [PATCH 398/446] Implemented integration test for bbob-largescale --- code-experiments/test/integration-test/Makefile.in | 8 +++++++- .../test/integration-test/Makefile_win_gcc.in | 9 ++++++++- do.py | 4 ++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/code-experiments/test/integration-test/Makefile.in b/code-experiments/test/integration-test/Makefile.in index 172ff08c0..eb92ee0e7 100644 --- a/code-experiments/test/integration-test/Makefile.in +++ b/code-experiments/test/integration-test/Makefile.in @@ -17,7 +17,7 @@ CCFLAGS = -g -ggdb -std=c89 -pedantic -Wall -Wextra -Wstrict-prototypes -Wshadow ######################################################################## ## Toplevel targets -all: test_coco test_instance_extraction test_biobj test_bbob-constrained test_bbob-mixint +all: test_coco test_instance_extraction test_biobj test_bbob-constrained test_bbob-largescale test_bbob-mixint clean: rm -f coco.o @@ -25,6 +25,7 @@ clean: rm -f test_instance_extraction.o test_instance_extraction rm -f test_biobj.o test_biobj rm -f test_bbob-constrained.o test_bbob-constrained + rm -f test_bbob-largescale.o test_bbob-largescale rm -f test_bbob-mixint.o test_bbob-mixint ######################################################################## @@ -41,6 +42,9 @@ test_biobj: test_biobj.o coco.o test_bbob-constrained: test_bbob-constrained.o coco.o ${CC} ${CCFLAGS} -o test_bbob-constrained coco.o test_bbob-constrained.o ${LDFLAGS} +test_bbob-largescale: test_bbob-largescale.o coco.o + ${CC} ${CCFLAGS} -o test_bbob-largescale coco.o test_bbob-largescale.o ${LDFLAGS} + test_bbob-mixint: test_bbob-mixint.o ${CC} ${CCFLAGS} -o test_bbob-mixint test_bbob-mixint.o ${LDFLAGS} @@ -56,5 +60,7 @@ test_biobj.o: coco.h coco.c test_biobj.c ${CC} -c ${CCFLAGS} -o test_biobj.o test_biobj.c test_bbob-constrained.o: coco.h coco.c test_bbob-constrained.c ${CC} -c ${CCFLAGS} -o test_bbob-constrained.o test_bbob-constrained.c +test_bbob-largescale.o: coco.h coco.c test_bbob-largescale.c + ${CC} -c ${CCFLAGS} -o test_bbob-largescale.o test_bbob-largescale.c test_bbob-mixint.o: test_bbob-mixint.c ${CC} -c ${CCFLAGS} -o test_bbob-mixint.o test_bbob-mixint.c diff --git a/code-experiments/test/integration-test/Makefile_win_gcc.in b/code-experiments/test/integration-test/Makefile_win_gcc.in index 046fa8b32..b1ddfc055 100644 --- a/code-experiments/test/integration-test/Makefile_win_gcc.in +++ b/code-experiments/test/integration-test/Makefile_win_gcc.in @@ -15,7 +15,7 @@ CCFLAGS = -g -ggdb -std=c89 -pedantic -Wall -Wextra -Wstrict-prototypes -Wshadow ######################################################################## ## Toplevel targets -all: test_coco test_instance_extraction test_biobj test_bbob-constrained test_bbob-mixint +all: test_coco test_instance_extraction test_biobj test_bbob-constrained test_bbob-largescale test_bbob-mixint clean: IF EXIST "coco.o" DEL /F coco.o @@ -27,6 +27,8 @@ clean: IF EXIST "test_biobj.exe" DEL /F test_biobj.exe IF EXIST "test_bbob-constrained.o" DEL /F test_bbob-constrained.o IF EXIST "test_bbob-constrained.exe" DEL /F test_bbob-constrained.exe + IF EXIST "test_bbob-largescale.o" DEL /F test_bbob-largescale.o + IF EXIST "test_bbob-largescale.exe" DEL /F test_bbob-largescale.exe IF EXIST "test_bbob-mixint.o" DEL /F test_bbob-mixint.o IF EXIST "test_bbob-mixint.exe" DEL /F test_bbob-mixint.exe @@ -44,6 +46,9 @@ test_biobj: test_biobj.o coco.o test_bbob-constrained: test_bbob-constrained.o coco.o ${CC} ${CCFLAGS} -o test_bbob-constrained coco.o test_bbob-constrained.o ${LDFLAGS} +test_bbob-largescale: test_bbob-largescale.o coco.o + ${CC} ${CCFLAGS} -o test_bbob-largescale coco.o test_bbob-largescale.o ${LDFLAGS} + test_bbob-mixint: test_bbob-mixint.o ${CC} ${CCFLAGS} -o test_bbob-mixint test_bbob-mixint.o ${LDFLAGS} @@ -59,5 +64,7 @@ test_biobj.o: coco.h coco.c test_biobj.c ${CC} -c ${CCFLAGS} -o test_biobj.o test_biobj.c test_bbob-constrained.o: coco.h coco.c test_bbob-constrained.c ${CC} -c ${CCFLAGS} -o test_bbob-constrained.o test_bbob-constrained.c +test_bbob-largescale.o: coco.h coco.c test_bbob-largescale.c + ${CC} -c ${CCFLAGS} -o test_bbob-largescale.o test_bbob-largescale.c test_bbob-mixint.o: test_bbob-mixint.c ${CC} -c ${CCFLAGS} -o test_bbob-mixint.o test_bbob-mixint.c diff --git a/do.py b/do.py index e15a63c37..57b548730 100755 --- a/do.py +++ b/do.py @@ -204,6 +204,10 @@ def leak_check(): build_c() build_c_integration_tests() os.environ['CFLAGS'] = '-g -Os' + valgrind_cmd = ['valgrind', '--error-exitcode=1', '--track-origins=yes', + '--leak-check=full', '--show-reachable=yes', + './test_bbob-largescale', 'leak_check'] + run('code-experiments/test/integration-test', valgrind_cmd, verbose=_verbosity) valgrind_cmd = ['valgrind', '--error-exitcode=1', '--track-origins=yes', '--leak-check=full', '--show-reachable=yes', './test_bbob-mixint', 'leak_check'] From a2d82b70b84b793d30a133f2317d16e85693c306 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 15:07:56 +0100 Subject: [PATCH 399/446] Fixed integration test for bbob-constrained --- code-experiments/test/integration-test/test_bbob-constrained.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/test/integration-test/test_bbob-constrained.c b/code-experiments/test/integration-test/test_bbob-constrained.c index 144b30567..55d741cf5 100644 --- a/code-experiments/test/integration-test/test_bbob-constrained.c +++ b/code-experiments/test/integration-test/test_bbob-constrained.c @@ -86,7 +86,7 @@ void run_once(char *suite_options) { int main(void) { - run_once("dimensions: 5, 10 function_indices: 1-6 instance_indices: 1-3"); + run_once("dimensions: 5,10 function_indices: 1-6 instance_indices: 1-3"); run_once("dimensions: 40 function_indices: 19,25,31 instance_indices: 10-15"); run_once("dimensions: 15,20,25 function_indices: 37,43,48 instance_indices: 5-10"); From ed0b8d42531fff3c0b498cc91f3a9a49e49b1c90 Mon Sep 17 00:00:00 2001 From: Dimo Brockhoff Date: Tue, 5 Mar 2019 15:08:38 +0100 Subject: [PATCH 400/446] removed "in progress" for bbob-largescale link --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 233547ce8..60c029de9 100644 --- a/README.md +++ b/README.md @@ -617,8 +617,9 @@ Comprehensive List of Documentations - bbob-biobj: http://numbbo.github.io/coco-doc/bbob-biobj/functions/ - bbob-biobj-ext: http://numbbo.github.io/coco-doc/bbob-biobj/functions/ - bbob-noisy (only in old code basis): http://coco.lri.fr/downloads/download15.03/bbobdocnoisyfunctions.pdf + - bbob-largescale: http://numbbo.github.io/coco-doc/bbob-largescale/functions/ - bbob-constrained (in progress): http://numbbo.github.io/coco-doc/bbob-constrained/functions/ - - bbob-largescale (in progress): http://numbbo.github.io/coco-doc/bbob-largescale/functions/ + * Performance assessment: http://numbbo.github.io/coco-doc/perf-assessment/ * Performance assessment for biobjective testbeds: http://numbbo.github.io/coco-doc/bbob-biobj/perf-assessment/ From 5802cf4c88beca7c587c6cd054c10b0c3f3e094b Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 15:14:29 +0100 Subject: [PATCH 401/446] Added the largescale integration test to do.py --- do.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/do.py b/do.py index 57b548730..abc5e4c02 100755 --- a/do.py +++ b/do.py @@ -165,6 +165,8 @@ def run_c_integration_tests(): ['./test_biobj'], verbose=_verbosity) run('code-experiments/test/integration-test', ['./test_bbob-constrained'], verbose=_verbosity) + run('code-experiments/test/integration-test', + ['./test_bbob-largescale'], verbose=_verbosity) run('code-experiments/test/integration-test', ['./test_bbob-mixint'], verbose=_verbosity) except subprocess.CalledProcessError: From cba956e60cd72ebdb86cac6c24098815d0bd5a34 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 15:16:39 +0100 Subject: [PATCH 402/446] Added the missing file for the largescale integration test --- .../integration-test/test_bbob-largescale.c | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 code-experiments/test/integration-test/test_bbob-largescale.c diff --git a/code-experiments/test/integration-test/test_bbob-largescale.c b/code-experiments/test/integration-test/test_bbob-largescale.c new file mode 100644 index 000000000..430c58eef --- /dev/null +++ b/code-experiments/test/integration-test/test_bbob-largescale.c @@ -0,0 +1,95 @@ +/** + * Tests different combinations of suite options for the largescale suite + */ + +#include +#include +#include +#include + +#include "coco.h" + +static void wait_in_seconds(time_t secs) { + time_t retTime = time(0) + secs; + while (time(0) < retTime); +} + +/** + * A random search optimizer. + */ +void my_optimizer(coco_problem_t *problem) { + + const size_t budget = 2; + coco_random_state_t *rng = coco_random_new(0xdeadbeef); + const double *lbounds = coco_problem_get_smallest_values_of_interest(problem); + const double *ubounds = coco_problem_get_largest_values_of_interest(problem); + size_t dimension = coco_problem_get_dimension(problem); + size_t number_of_objectives = coco_problem_get_number_of_objectives(problem); + size_t number_of_constraints = coco_problem_get_number_of_constraints(problem); + double *x = coco_allocate_vector(dimension); + double *function_values = coco_allocate_vector(number_of_objectives); + double *cons_values = coco_allocate_vector(number_of_constraints); + double range; + size_t i, j; + + for (i = 0; i < budget; ++i) { + + for (j = 0; j < dimension; ++j) { + range = ubounds[j] - lbounds[j]; + x[j] = lbounds[j] + coco_random_uniform(rng) * range; + } + + coco_evaluate_function(problem, x, function_values); + coco_evaluate_constraint(problem, x, cons_values); + + } + + coco_random_free(rng); + coco_free_memory(x); + coco_free_memory(function_values); + coco_free_memory(cons_values); +} + +/* Each time: run the benchmark and delete the output folder */ +void run_once(char *suite_options) { + + coco_suite_t *suite; + coco_observer_t *observer; + coco_problem_t *problem; + + /* Set some options for the observer. See documentation for other options. */ + char *observer_options = + coco_strdupf("result_folder: RS_on_%s " + "algorithm_name: RS " + "algorithm_info: \"A simple random search algorithm\"", + "bbob-constrained"); + + printf("Running experiment with suite options %s\n", suite_options); + fflush(stdout); + + suite = coco_suite("bbob-largescale", NULL, suite_options); + observer = coco_observer("bbob", observer_options); + coco_free_memory(observer_options); + + while ((problem = coco_suite_get_next_problem(suite, observer)) != NULL) { + my_optimizer(problem); + } + + coco_observer_free(observer); + coco_suite_free(suite); + + wait_in_seconds(2); /* So that the directory removal is surely finished */ + + printf("DONE!\n"); + fflush(stdout); +} + +int main(void) { + + run_once("dimensions: 20,40 function_indices: 1-8 instance_indices: 1-5"); + run_once("dimensions: 80 function_indices: 9-20 instance_indices: 10-15"); + run_once("dimensions: 160,320,640 function_indices: 21-24 instance_indices: 5-10"); + + coco_remove_directory("exdata"); + return 0; +} From bda3d630bb88189b4ca9b5c75c7fa581f9643b26 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 15:44:46 +0100 Subject: [PATCH 403/446] Fixing a largescale test problem --- code-experiments/test/integration-test/test_bbob-largescale.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code-experiments/test/integration-test/test_bbob-largescale.c b/code-experiments/test/integration-test/test_bbob-largescale.c index 430c58eef..c031b1bf6 100644 --- a/code-experiments/test/integration-test/test_bbob-largescale.c +++ b/code-experiments/test/integration-test/test_bbob-largescale.c @@ -25,10 +25,8 @@ void my_optimizer(coco_problem_t *problem) { const double *ubounds = coco_problem_get_largest_values_of_interest(problem); size_t dimension = coco_problem_get_dimension(problem); size_t number_of_objectives = coco_problem_get_number_of_objectives(problem); - size_t number_of_constraints = coco_problem_get_number_of_constraints(problem); double *x = coco_allocate_vector(dimension); double *function_values = coco_allocate_vector(number_of_objectives); - double *cons_values = coco_allocate_vector(number_of_constraints); double range; size_t i, j; @@ -40,14 +38,12 @@ void my_optimizer(coco_problem_t *problem) { } coco_evaluate_function(problem, x, function_values); - coco_evaluate_constraint(problem, x, cons_values); } coco_random_free(rng); coco_free_memory(x); coco_free_memory(function_values); - coco_free_memory(cons_values); } /* Each time: run the benchmark and delete the output folder */ From 1f42d9fa57a6b8e66e36d8a71d241f4b3027c037 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 15:56:51 +0100 Subject: [PATCH 404/446] Fixed default instances --- code-experiments/src/suite_largescale.c | 2 +- code-experiments/src/suite_toy.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/suite_largescale.c b/code-experiments/src/suite_largescale.c index 8779b59a4..becefa132 100644 --- a/code-experiments/src/suite_largescale.c +++ b/code-experiments/src/suite_largescale.c @@ -34,7 +34,7 @@ static coco_suite_t *suite_largescale_initialize(void) { coco_suite_t *suite; const size_t dimensions[] = { 20, 40, 80, 160, 320, 640}; - suite = coco_suite_allocate("bbob-largescale", 24, 6, dimensions, "instances:1-15"); + suite = coco_suite_allocate("bbob-largescale", 24, 6, dimensions, "instances: 1-15"); return suite; } diff --git a/code-experiments/src/suite_toy.c b/code-experiments/src/suite_toy.c index f4f49e88b..0b355acb6 100644 --- a/code-experiments/src/suite_toy.c +++ b/code-experiments/src/suite_toy.c @@ -26,7 +26,7 @@ static coco_suite_t *suite_toy_initialize(void) { coco_suite_t *suite; const size_t dimensions[] = { 2, 3, 5, 10, 20 }; - suite = coco_suite_allocate("toy", 6, 3, dimensions, "instances:1"); + suite = coco_suite_allocate("toy", 6, 3, dimensions, "instances: 1"); return suite; } From 597140013d5ab8a42937b7476bfa03605726aad5 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 16:17:40 +0100 Subject: [PATCH 405/446] Diminished number of tested instances for the largescale integration test --- .../test/integration-test/test_bbob-largescale.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code-experiments/test/integration-test/test_bbob-largescale.c b/code-experiments/test/integration-test/test_bbob-largescale.c index c031b1bf6..618157545 100644 --- a/code-experiments/test/integration-test/test_bbob-largescale.c +++ b/code-experiments/test/integration-test/test_bbob-largescale.c @@ -82,9 +82,9 @@ void run_once(char *suite_options) { int main(void) { - run_once("dimensions: 20,40 function_indices: 1-8 instance_indices: 1-5"); - run_once("dimensions: 80 function_indices: 9-20 instance_indices: 10-15"); - run_once("dimensions: 160,320,640 function_indices: 21-24 instance_indices: 5-10"); + run_once("dimensions: 20,40 function_indices: 1-8 instance_indices: 1"); + run_once("dimensions: 80 function_indices: 9-20 instance_indices: 15"); + run_once("dimensions: 160,320,640 function_indices: 21-24 instance_indices: 10"); coco_remove_directory("exdata"); return 0; From 11b2d725a06107c50249bd32467a27e132ee03b3 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 16:36:43 +0100 Subject: [PATCH 406/446] Fixed the rotation_problem in f_gallagher --- code-experiments/src/f_gallagher.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 2f3f42124..b4880f48e 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -469,7 +469,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz } versatile_data->B = coco_copy_block_matrix(B_const, dimension, block_sizes, nb_blocks); - rotation_problem = coco_problem_allocate(dimension, 1, 0); + rotation_problem = coco_problem_allocate_from_scalars("dummy rotation", NULL, NULL, dimension, -5, 5, 0); rotation_problem = transform_vars_blockrotation(rotation_problem, B_const, dimension, block_sizes, nb_blocks); alpha_i_vals = coco_allocate_vector(number_of_peaks - 1); From a3b9838e6c381c1f0ef35b32c3012c30785c90e3 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 16:45:41 +0100 Subject: [PATCH 407/446] Fixed the rotation_problem in f_gallagher --- code-experiments/src/f_gallagher.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index b4880f48e..be516b26b 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -469,7 +469,8 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz } versatile_data->B = coco_copy_block_matrix(B_const, dimension, block_sizes, nb_blocks); - rotation_problem = coco_problem_allocate_from_scalars("dummy rotation", NULL, NULL, dimension, -5, 5, 0); + rotation_problem = coco_problem_allocate_from_scalars("dummy rotation", f_gallagher_evaluate_core, + f_gallagher_versatile_data_free, dimension, -5, 5, 0); rotation_problem = transform_vars_blockrotation(rotation_problem, B_const, dimension, block_sizes, nb_blocks); alpha_i_vals = coco_allocate_vector(number_of_peaks - 1); From b7cccc9621e167f83dd832ea0b3a0677279c6646 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 16:54:24 +0100 Subject: [PATCH 408/446] Corrected identation --- code-experiments/src/f_rosenbrock.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code-experiments/src/f_rosenbrock.c b/code-experiments/src/f_rosenbrock.c index d9fc8d514..474ed7ac3 100644 --- a/code-experiments/src/f_rosenbrock.c +++ b/code-experiments/src/f_rosenbrock.c @@ -176,11 +176,11 @@ static coco_problem_t *f_rosenbrock_rotated_bbob_problem_allocate(const size_t f * @brief Creates the BBOB permuted block-rotated Rosenbrock problem. */ static coco_problem_t *f_rosenbrock_permblockdiag_bbob_problem_allocate(const size_t function, - const size_t dimension, - const size_t instance, - const long rseed, - const char *problem_id_template, - const char *problem_name_template) { + const size_t dimension, + const size_t instance, + const long rseed, + const char *problem_id_template, + const char *problem_name_template) { double *xopt, fopt; coco_problem_t *problem = NULL; From 1221959e0e926de42918480180072bb4800fee84 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 17:18:45 +0100 Subject: [PATCH 409/446] Debugging Gallagher's rotation problem --- code-experiments/src/f_gallagher.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index be516b26b..136a2a9d7 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -469,8 +469,9 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz } versatile_data->B = coco_copy_block_matrix(B_const, dimension, block_sizes, nb_blocks); - rotation_problem = coco_problem_allocate_from_scalars("dummy rotation", f_gallagher_evaluate_core, - f_gallagher_versatile_data_free, dimension, -5, 5, 0); + rotation_problem = coco_problem_allocate_from_scalars("dummy rotation", NULL, NULL, dimension, -5.0, 5.0, 0.0); + coco_problem_set_id(rotation_problem, "dummy id"); + coco_problem_set_type(rotation_problem, "dummy type"); rotation_problem = transform_vars_blockrotation(rotation_problem, B_const, dimension, block_sizes, nb_blocks); alpha_i_vals = coco_allocate_vector(number_of_peaks - 1); From 010158010c02ee4bb17acbc06fe6d30986d79f5f Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 17:19:38 +0100 Subject: [PATCH 410/446] Debugging Gallagher's rotation problem --- code-experiments/src/f_gallagher.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 136a2a9d7..0cd23c28c 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -470,8 +470,6 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz versatile_data->B = coco_copy_block_matrix(B_const, dimension, block_sizes, nb_blocks); rotation_problem = coco_problem_allocate_from_scalars("dummy rotation", NULL, NULL, dimension, -5.0, 5.0, 0.0); - coco_problem_set_id(rotation_problem, "dummy id"); - coco_problem_set_type(rotation_problem, "dummy type"); rotation_problem = transform_vars_blockrotation(rotation_problem, B_const, dimension, block_sizes, nb_blocks); alpha_i_vals = coco_allocate_vector(number_of_peaks - 1); @@ -557,7 +555,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_free_memory(block_sizes); coco_free_memory(alpha_i_vals); coco_free_memory(P_alpha_i); - coco_free_memory(rotation_problem); + coco_free_problem(rotation_problem); coco_free_memory(best_param_before_rotation); coco_free_memory(best_param_after_rotation); return problem; From bd6899e23142e322347dc73e8bfd1bd08b755860 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 17:20:40 +0100 Subject: [PATCH 411/446] Debugging Gallagher's rotation problem --- code-experiments/src/f_gallagher.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/f_gallagher.c b/code-experiments/src/f_gallagher.c index 0cd23c28c..5044ff384 100644 --- a/code-experiments/src/f_gallagher.c +++ b/code-experiments/src/f_gallagher.c @@ -555,7 +555,7 @@ static coco_problem_t *f_gallagher_permblockdiag_bbob_problem_allocate(const siz coco_free_memory(block_sizes); coco_free_memory(alpha_i_vals); coco_free_memory(P_alpha_i); - coco_free_problem(rotation_problem); + coco_problem_free(rotation_problem); coco_free_memory(best_param_before_rotation); coco_free_memory(best_param_after_rotation); return problem; From 253df275aa65f52050ab95385c1f8362f29795b8 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 5 Mar 2019 18:00:29 +0100 Subject: [PATCH 412/446] Fixing the truncated swap permutation --- .../src/transform_vars_permutation_helpers.c | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/code-experiments/src/transform_vars_permutation_helpers.c b/code-experiments/src/transform_vars_permutation_helpers.c index e2bfe9fc8..c1c619c4c 100644 --- a/code-experiments/src/transform_vars_permutation_helpers.c +++ b/code-experiments/src/transform_vars_permutation_helpers.c @@ -81,28 +81,33 @@ static long coco_random_unif_integer(long lower_bound, long upper_bound, long se /** * @brief generates a random permutation resulting from nb_swaps truncated uniform swaps of range swap_range - * missing paramteters: dynamic_not_static pool, seems empirically irrelevant + * missing parameters: dynamic_not_static pool, seems empirically irrelevant * for now so dynamic is implemented (simple since no need for tracking indices - * if swap_range is the largest possible size_t value ( (size_t) -1 ), a random uniform permutation is generated + * if swap_range is 0, a random uniform permutation is generated */ static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed, size_t n, size_t nb_swaps, size_t swap_range) { long i, idx_swap, tmp_seed; size_t lower_bound, upper_bound, first_swap_var, second_swap_var, tmp; size_t *idx_order; - for (i = 0; i < n; i++) - P[i] = (size_t) i; if (n <= 40) { /* Do an identity permutation for dimensions <= 40 */ + for (i = 0; i < n; i++) + P[i] = (size_t) i; return; } + perm_random_data = coco_allocate_vector(n); + bbob2009_unif(perm_random_data, n, seed); + idx_order = coco_allocate_vector_size_t(n); - for (i = 0; i < n; i++) + for (i = 0; i < n; i++) { + P[i] = (size_t) i; idx_order[i] = (size_t) i; + } if (swap_range > 0) { - /*sort the random data in random_data and arange idx_order accordingly*/ + /*sort the random data in perm_random_data and arrange idx_order accordingly*/ /*did not use coco_compute_random_permutation to only use the seed once*/ qsort(idx_order, n, sizeof(size_t), f_compare_doubles_for_random_permutation); for (idx_swap = 0; idx_swap < nb_swaps; idx_swap++) { @@ -132,13 +137,11 @@ static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed P[second_swap_var] = tmp; } } else { - if ( swap_range == (size_t) -1) { - /* generate random permutation instead */ - coco_compute_random_permutation(P, seed, n); - } - + /* generate random permutation instead */ + coco_compute_random_permutation(P, seed, n); } coco_free_memory(idx_order); + coco_free_memory(perm_random_data); } From 67bf5d88cb6943a044243c36c3e27e9a4dd25c3d Mon Sep 17 00:00:00 2001 From: nikohansen Date: Tue, 5 Mar 2019 20:21:04 +0100 Subject: [PATCH 413/446] added test of block rotations --- .../src/transform_vars_blockrotation.c | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/code-experiments/src/transform_vars_blockrotation.c b/code-experiments/src/transform_vars_blockrotation.c index 20668eb8a..9018d4aad 100644 --- a/code-experiments/src/transform_vars_blockrotation.c +++ b/code-experiments/src/transform_vars_blockrotation.c @@ -25,6 +25,26 @@ typedef struct { size_t *first_non_zero_map; /**< @brief maps a row to the index of its first non zero element */ } transform_vars_blockrotation_t; +/* + * @brief write i-th row of blockrotation problem->data->B into y. + */ +static void transform_vars_blockrotation_get_row(coco_problem_t *problem, + size_t i, + double *y) { + size_t j, current_blocksize, first_non_zero_ind; + transform_vars_blockrotation_t *data; + + data = (transform_vars_blockrotation_t *) coco_problem_transformed_get_data(problem); + for (j = 0; j < data->dimension; ++j) { + y[j] = 0; + } + current_blocksize = data->block_size_map[i]; + first_non_zero_ind = data->first_non_zero_map[i]; + for (j = first_non_zero_ind; j < first_non_zero_ind + current_blocksize; ++j) { + y[j] = data->B[i][j - first_non_zero_ind]; /*all B lines start at 0*/ + } +} + /* * @brief Computes y = Bx, where all the pertinent information about B is given in the problem data. */ @@ -73,6 +93,25 @@ static void transform_vars_blockrotation_free(void *stuff) { coco_free_memory(data->first_non_zero_map); } +/* + * @brief test blockrotation on its own rows via assert + */ +static void transform_vars_blockrotation_test(coco_problem_t *problem, double precision) { + size_t i, j; + size_t number_of_variables = coco_problem_get_dimension(problem); + + double *y = coco_allocate_vector(number_of_variables); + for (i = 0; i < number_of_variables; ++i) { /* for each row */ + transform_vars_blockrotation_get_row(problem, i, y); + transform_vars_blockrotation_apply(problem, y, y); + for (j = 0; j < number_of_variables; ++j) { /* check result */ + assert(coco_double_almost_equal(y[j], i == j, precision)); + /* printf("%f", y[j]); */ + } + /* printf("\n"); */ + } + coco_free_memory(y); +} static coco_problem_t *transform_vars_blockrotation(coco_problem_t *inner_problem, const double * const *B, @@ -114,7 +153,10 @@ static coco_problem_t *transform_vars_blockrotation(coco_problem_t *inner_proble } problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_blockrotation_free, "transform_vars_blockrotation"); problem->evaluate_function = transform_vars_blockrotation_evaluate; + + if (1 < 3) { + transform_vars_blockrotation_test(problem, 1e-6); /* 1e-11 still passes and 1e-12 fails under macos */ + } return problem; } - From 07059d2f207419328e0b818718157febc87ba155 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Wed, 6 Mar 2019 13:38:30 +0100 Subject: [PATCH 414/446] cleaning up block rotation test --- .../src/transform_vars_blockrotation.c | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/code-experiments/src/transform_vars_blockrotation.c b/code-experiments/src/transform_vars_blockrotation.c index 9018d4aad..93245b339 100644 --- a/code-experiments/src/transform_vars_blockrotation.c +++ b/code-experiments/src/transform_vars_blockrotation.c @@ -26,22 +26,21 @@ typedef struct { } transform_vars_blockrotation_t; /* - * @brief write i-th row of blockrotation problem->data->B into y. + * @brief return i-th row of blockrotation problem->data->B in y. */ static void transform_vars_blockrotation_get_row(coco_problem_t *problem, size_t i, double *y) { - size_t j, current_blocksize, first_non_zero_ind; + size_t j, current_blocksize, first_non_zero_ind; /* cp-paste from apply */ transform_vars_blockrotation_t *data; data = (transform_vars_blockrotation_t *) coco_problem_transformed_get_data(problem); - for (j = 0; j < data->dimension; ++j) { - y[j] = 0; - } current_blocksize = data->block_size_map[i]; first_non_zero_ind = data->first_non_zero_map[i]; - for (j = first_non_zero_ind; j < first_non_zero_ind + current_blocksize; ++j) { - y[j] = data->B[i][j - first_non_zero_ind]; /*all B lines start at 0*/ + + for (j = 0; j < data->dimension; ++j) { + y[j] = (j < first_non_zero_ind || j >= first_non_zero_ind + current_blocksize) ? + 0 : data->B[i][j - first_non_zero_ind]; /*all B lines start at 0*/ } } @@ -99,14 +98,17 @@ static void transform_vars_blockrotation_free(void *stuff) { static void transform_vars_blockrotation_test(coco_problem_t *problem, double precision) { size_t i, j; size_t number_of_variables = coco_problem_get_dimension(problem); - double *y = coco_allocate_vector(number_of_variables); + for (i = 0; i < number_of_variables; ++i) { /* for each row */ transform_vars_blockrotation_get_row(problem, i, y); transform_vars_blockrotation_apply(problem, y, y); for (j = 0; j < number_of_variables; ++j) { /* check result */ - assert(coco_double_almost_equal(y[j], i == j, precision)); - /* printf("%f", y[j]); */ + if (!coco_double_almost_equal(y[j], i == j, precision)) { + coco_error("transform_vars_blockrotation_test() with precision %e failed on row %i", + precision, i); + } + /* printf("%f ", y[j]); */ } /* printf("\n"); */ } @@ -154,8 +156,9 @@ static coco_problem_t *transform_vars_blockrotation(coco_problem_t *inner_proble problem = coco_problem_transformed_allocate(inner_problem, data, transform_vars_blockrotation_free, "transform_vars_blockrotation"); problem->evaluate_function = transform_vars_blockrotation_evaluate; - if (1 < 3) { - transform_vars_blockrotation_test(problem, 1e-6); /* 1e-11 still passes and 1e-12 fails under macos */ + if (number_of_variables < 100) { + /* 1e-11 still passes and 1e-12 fails under macOS */ + transform_vars_blockrotation_test(problem, 1e-5); } return problem; } From 05252b752bc65cf5c2040b4fde616a430be89827 Mon Sep 17 00:00:00 2001 From: Dimo Brockhoff Date: Wed, 6 Mar 2019 15:34:41 +0100 Subject: [PATCH 415/446] updated some links --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 60c029de9..cea7a3489 100644 --- a/README.md +++ b/README.md @@ -595,10 +595,12 @@ Links and Documentation * For details on the experimental set-up to carry out the benchmarking please refer to http://numbbo.github.io/coco-doc/experimental-setup/. * More detailed documentation of the existing benchmark suites can be found here: - - for the **`bbob`** problem suite at http://coco.lri.fr/downloads/download15.03/bbobdocfunctions.pdf + - for the **`bbob`** problem suite at http://coco.gforge.inria.fr/downloads/download16.00/bbobdocfunctions.pdf with the experimental setup at http://coco.lri.fr/downloads/download15.03/bbobdocexperiment.pdf - for the **`bbob-biobj`** and **`bbob-biobj-ext`** problem suites at http://numbbo.github.io/coco-doc/bbob-biobj/functions + - for the **`bbob-largescale`** problem suite + at http://numbbo.github.io/coco-doc/bbob-largescale/functions * Online documentation of the NumBBO/Coco API (i.e. for the ANSI C code) is available at http://numbbo.github.io/coco-doc/C * More detailed documentation on how the performance assessement is done can @@ -634,7 +636,7 @@ Comprehensive List of Documentations * Somewhat outdated documents: - Full description of the platform: http://coco.lri.fr/COCOdoc/ - Experimental setup before 2016: http://coco.lri.fr/downloads/download15.03/bbobdocexperiment.pdf - - Old framework software documentation: http://coco.lri.fr/downloads/download15.03/bbobdocsoftware.pdf + - Old framework software documentation: http://coco.lri.fr/downloads/download15.03/bbobdocsoftware.pdf * Some examples of [results](https://github.com/numbbo/coco/wiki/COCO-Wiki-Home). From 0afaf0af1d3811241dda2fede1d53897db46fcef Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Thu, 7 Mar 2019 17:07:36 +0100 Subject: [PATCH 416/446] Removed some code used only for debugging. --- code-experiments/build/c/example_experiment.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index cacc6fe7c..ed51fb752 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -109,18 +109,6 @@ int main(void) { coco_random_state_t *random_generator = coco_random_new(RANDOM_SEED); - coco_suite_t *suite; - coco_problem_t *problem; - /*suite = coco_suite("bbob", "", "dimensions: 40 instance_indices: 1 function_indices: 1-24"); - while ((problem = coco_suite_get_next_problem(suite, NULL)) != NULL) - fprintf(stdout, "\n%s\n", coco_problem_get_id(problem)); - coco_suite_free(suite);*/ - suite = coco_suite("bbob-largescale", "", "dimensions: 20 instance_indices: 1 function_indices: 22"); - while ((problem = coco_suite_get_next_problem(suite, NULL)) != NULL) - fprintf(stdout, "\n%s\n", coco_problem_get_id(problem)); - coco_suite_free(suite); - return 0; - /* Change the log level to "warning" to get less output */ coco_set_log_level("info"); From eaf9f6cb60efba2e6e96ac5e84273cb9906dd989 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Thu, 7 Mar 2019 17:16:43 +0100 Subject: [PATCH 417/446] adjusted comment to code in transform_vars_blockrotation_test --- code-experiments/src/transform_vars_blockrotation.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/transform_vars_blockrotation.c b/code-experiments/src/transform_vars_blockrotation.c index 93245b339..791306a75 100644 --- a/code-experiments/src/transform_vars_blockrotation.c +++ b/code-experiments/src/transform_vars_blockrotation.c @@ -93,7 +93,7 @@ static void transform_vars_blockrotation_free(void *stuff) { } /* - * @brief test blockrotation on its own rows via assert + * @brief test blockrotation on its own rows and raise coco_error in case */ static void transform_vars_blockrotation_test(coco_problem_t *problem, double precision) { size_t i, j; From 7fa838cbc9b21b6c15e22332627043a4cae8aa39 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Thu, 7 Mar 2019 17:18:04 +0100 Subject: [PATCH 418/446] fixed seeding bug for transform_vars_permblockdiag in coco_compute_truncated_uniform_swap_permutation --- .../src/transform_vars_permutation_helpers.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code-experiments/src/transform_vars_permutation_helpers.c b/code-experiments/src/transform_vars_permutation_helpers.c index c1c619c4c..d4c5ed261 100644 --- a/code-experiments/src/transform_vars_permutation_helpers.c +++ b/code-experiments/src/transform_vars_permutation_helpers.c @@ -86,7 +86,7 @@ static long coco_random_unif_integer(long lower_bound, long upper_bound, long se * if swap_range is 0, a random uniform permutation is generated */ static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed, size_t n, size_t nb_swaps, size_t swap_range) { - long i, idx_swap, tmp_seed; + long i, idx_swap; size_t lower_bound, upper_bound, first_swap_var, second_swap_var, tmp; size_t *idx_order; @@ -125,11 +125,11 @@ static void coco_compute_truncated_uniform_swap_permutation(size_t *P, long seed upper_bound = first_swap_var + swap_range; } - tmp_seed = 0; - second_swap_var = (size_t) coco_random_unif_integer((long) lower_bound, (long) upper_bound, seed); - while (first_swap_var == second_swap_var) { - tmp_seed += 1; - second_swap_var = (size_t) coco_random_unif_integer((long) lower_bound, (long) upper_bound, seed + tmp_seed + 5000000); + second_swap_var = (size_t) coco_random_unif_integer((long) lower_bound, + (long) upper_bound - 1, + seed + (1 + idx_swap) * 1000); + if (second_swap_var >= first_swap_var) { + second_swap_var += 1; } /* swap*/ tmp = P[first_swap_var]; From de8adbb98905bcdf3ee3d883f537ec48a5c8db56 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Thu, 7 Mar 2019 17:50:06 +0100 Subject: [PATCH 419/446] added --user as option synonym to install-user --- do.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/do.py b/do.py index a5d9dda20..c72885af3 100755 --- a/do.py +++ b/do.py @@ -945,7 +945,7 @@ def main(args): for arg in args[1:]: if arg == 'and-test': also_test_python = True - elif arg == 'install-user': + elif arg in ('install-user', '--user'): package_install_option = ['--user'] elif arg[:13] == 'install-home=': package_install_option = ['--home=' + arg[13:]] From b437bfa7f7128b8b76ea3272496b393a575cdcb1 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Tue, 5 Mar 2019 14:44:08 +0100 Subject: [PATCH 420/446] revised example_experiment2.py --- .../build/python/example_experiment2.py | 116 +++++++++++------- 1 file changed, 70 insertions(+), 46 deletions(-) diff --git a/code-experiments/build/python/example_experiment2.py b/code-experiments/build/python/example_experiment2.py index 64395f424..ca519e6a1 100755 --- a/code-experiments/build/python/example_experiment2.py +++ b/code-experiments/build/python/example_experiment2.py @@ -1,30 +1,33 @@ #!/usr/bin/env python +# -*- coding: utf-8 -*- """A short and simple example experiment with restarts. The script is fully functional but also emphasises on readability. It features restarts, timings and recording termination conditions. To benchmark a different solver, `fmin` must be re-assigned and another -`elif` block added around line 70 to account for the solver-specific +`elif` block added around line 136 to account for the solver-specific call. -When calling the script, variables can be re-assigned via a -``name=value`` argument white spaces, where ``value`` is interpreted as -a single python literal. Additionally, ``batch`` is recognized as -argument defining the `current_batch` number and the number of -`batches`, like ``batch=2/8`` runs batch 2 of 8. +When calling the script, previously assigned variables can be re-assigned +via a ``name=value`` argument without white spaces, where ``value`` is +interpreted as a single python literal. Additionally, ``batch`` is recognized +as argument defining the `current_batch` number and the number of `batches`, +like ``batch=2/8`` runs batch 2 of 8. Examples, preceeded by "python" in an OS shell and by "run" in an IPython shell:: example_experiment2.py budget_multiplier=3 # times dimension - example_experiment2.py budget_multiplier=1e4 cocopp=None + example_experiment2.py budget_multiplier=1e4 cocopp=None # omit post-processing example_experiment2.py budget_multiplier=1e4 suite_name=bbob-biobj example_experiment2.py budget_multiplier=1000 batch=1/16 +Post-processing with `cocopp` is only invoked in the single-batch case. + Details: ``batch=9/8`` is equivalent to ``batch=1/8``. The first number is taken modulo to the second. @@ -37,11 +40,18 @@ import os, webbrowser # to show post-processed results in the browser import numpy as np # for np.median import cocoex # experimentation module -import cocopp # post-processing module, comment out if post-processing is not desired +try: import cocopp # post-processing module +except: pass ### solver imports (add other imports if necessary) import scipy.optimize # to define the solver to be benchmarked -# import cma +try: import cma +except: pass # may not be installed + +def random_search(f, lbounds, ubounds, evals): + """Won't work (well or at all) for `evals` much larger than 1e5""" + [f(x) for x in np.asarray(lbounds) + (np.asarray(ubounds) - lbounds) + * np.random.rand(int(evals), len(ubounds))] ### input (to be modified if necessary/desired) # fmin = scipy.optimize.fmin @@ -52,23 +62,31 @@ suite_name = "bbob" # see cocoex.known_suite_names budget_multiplier = 2 # times dimension, increase to 10, 100, ... -omit_last_dimension = False - +suite_filter_options = (# "dimensions: 2,3,5,10,20 " + # skip dimension 40 + # "instance_indices: 1-5 " + # relative to suite instances + "") # without filtering a suite has instance_indices 1-15 batches = 1 # number of batches, batch=3/32 works to set both, current_batch and batches current_batch = 1 # only current_batch modulo batches is relevant +output_folder = '' ### possibly modify/overwrite above input parameters from input args if __name__ == "__main__": + if len(sys.argv) > 1 and sys.argv[1] in ('-h', 'help', '-help', '--help'): + print(__doc__) + raise ValueError("printed help and aborted") input_params = cocoex.utilities.args_to_dict( sys.argv[1:], globals(), {'batch': 'current_batch/batches'}, print=print) globals().update(input_params) # (re-)assign variables -# overwrites folder input parameter, comment out if desired otherwise -output_folder = '%s_of_%s_%dD_on_%s' % (fmin.__name__, fmin.__module__, - int(budget_multiplier), suite_name) +# extend output folder input parameter, comment out if desired otherwise +output_folder += '%s_of_%s_%dD_on_%s' % ( + fmin.__name__, fmin.__module__, int(budget_multiplier), suite_name) + +if batches > 1: + output_folder += "_batch%03dof%d" % (current_batch, batches) ### prepare -suite = cocoex.Suite(suite_name, "", "") +suite = cocoex.Suite(suite_name, "", suite_filter_options) observer = cocoex.Observer(suite_name, "result_folder: " + output_folder) minimal_print = cocoex.utilities.MiniPrint() stoppings = defaultdict(list) # dict of lists, key is the problem index @@ -78,60 +96,59 @@ print('*** benchmarking %s from %s on suite %s ***' % (fmin.__name__, fmin.__module__, suite_name)) time0 = time.time() -for problem in suite: # this loop may take several minutes or hours or days... - if omit_last_dimension and problem.dimension == max(suite.dimensions): - break - if problem.index % batches != current_batch % batches: +for batch_counter, problem in enumerate(suite): # this loop may take hours or days... + if batch_counter % batches != current_batch % batches: continue if not len(timings[problem.dimension]) and len(timings) > 1: - print("\n done in %.1e seconds/evaluations" - % np.median(timings[sorted(timings)[-2]]), end='') + print("\n %s %d-D done in %.1e seconds/evaluations" + % (minimal_print.stime, sorted(timings)[-2], + np.median(timings[sorted(timings)[-2]])), end='') problem.observe_with(observer) # generate the data for cocopp post-processing - maxevals = problem.dimension * budget_multiplier # just giving a short name + problem(np.zeros(problem.dimension)) # making algorithms more comparable + propose_x0 = problem.initial_solution_proposal # callable, all zeros in first call + evalsleft = lambda: int(problem.dimension * budget_multiplier + 1 - + max((problem.evaluations, problem.evaluations_constraints))) time1 = time.time() - # apply restarts - while max((problem.evaluations, problem.evaluations_constraints)) < maxevals and not problem.final_target_hit: - x0 = problem.initial_solution_proposal() # give different proposals, all zeros in first call + irestart = -1 + while evalsleft() > 0 and not problem.final_target_hit: + irestart += 1 + # here we assume that `fmin` evaluates the final/returned solution: if fmin is scipy.optimize.fmin: - output = fmin(problem, x0, maxfun=maxevals, disp=False, full_output=True) + output = fmin(problem, propose_x0(), maxfun=evalsleft(), disp=False, full_output=True) stoppings[problem.index].append(output[4]) elif fmin is scipy.optimize.fmin_slsqp: - output = fmin(problem, x0, iter=int(budget_multiplier+1), # very approximate way to respect budget + output = fmin(problem, propose_x0(), iter=int(evalsleft() / problem.dimension + 1), # very approximate way to respect budget full_output=True, iprint = -1) # print(problem.dimension, problem.evaluations) stoppings[problem.index].append(output[3:]) - elif fmin is cocoex.solvers.random_search: - fmin(problem, problem.dimension * [-5], problem.dimension * [5], - maxevals) + elif fmin in (cocoex.solvers.random_search, random_search): + fmin(problem, problem.dimension * [-5], problem.dimension * [5], evalsleft()) elif fmin.__name__ == 'fmin2' and 'cma' in fmin.__module__: # cma.fmin2: - xopt, es = fmin(problem, problem.initial_solution_proposal(), 2, - {'maxfevals':maxevals, 'verbose':-9}, restarts=7) + xopt, es = fmin(problem, propose_x0, 2, + {'maxfevals':evalsleft(), 'verbose':-9}, restarts=9) stoppings[problem.index].append(es.stop()) elif fmin is scipy.optimize.fmin_cobyla: - fmin(problem, x0, lambda x: -problem.constraint(x), maxfun=maxevals, - disp=0, rhoend=1e-9) - # add another solver here + fmin(problem, propose_x0(), lambda x: -problem.constraint(x), maxfun=evalsleft(), + disp=0, rhoend=1e-9) + else: # add another solver here + raise NotImplementedError timings[problem.dimension].append((time.time() - time1) / problem.evaluations if problem.evaluations else 0) - minimal_print(problem, restarted=any(x0 != problem.initial_solution), - final=problem.index == len(suite) - 1) - with open(output_folder + '_stopping_conditions.out', 'wt') as file_: + minimal_print(problem, restarted=irestart, final=problem.index == len(suite) - 1) + with open(output_folder + '_stopping_conditions.pydict', 'wt') as file_: file_.write("# code to read in these data:\n" "# import ast\n" - "# with open('%s_stopping_conditions.out', 'rt') as file_:\n" + "# with open('%s_stopping_conditions.pydict', 'rt') as file_:\n" "# stoppings = ast.literal_eval(file_.read())\n" % output_folder) - file_.write(repr(stoppings)) + file_.write(repr(dict(stoppings))) ### print timings and final message -print("\n dimension median seconds/evaluations") -print(" -------------------------------------") -for dimension in sorted(timings): - print(" %3d %.1e" % (dimension, np.median(timings[dimension]))) -print(" -------------------------------------") +print("\n %s %d-D done in %.1e seconds/evaluations" + % (minimal_print.stime, sorted(timings)[-1], np.median(timings[sorted(timings)[-1]]))) if batches > 1: print("*** Batch %d of %d batches finished in %s." " Make sure to run *all* batches (via current_batch or batch=#/#) ***" @@ -140,7 +157,14 @@ print("*** Full experiment done in %s ***" % cocoex.utilities.ascetime(time.time() - time0)) +print("Timing summary:\n" + " dimension median seconds/evaluations\n" + " -------------------------------------") +for dimension in sorted(timings): + print(" %3d %.1e" % (dimension, np.median(timings[dimension]))) +print(" -------------------------------------") + ### post-process data if batches == 1 and 'cocopp' in globals() and cocopp not in (None, 'None'): cocopp.main(observer.result_folder) # re-run folders look like "...-001" etc - webbrowser.open("file://" + os.getcwd() + "/ppdata/index.html") \ No newline at end of file + webbrowser.open("file://" + os.getcwd() + "/ppdata/index.html") From b9281af38d8925661e47569430ef6210d9c1d48d Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Fri, 8 Mar 2019 13:47:00 +0100 Subject: [PATCH 421/446] Minor fix in largescale integration test --- code-experiments/test/integration-test/test_bbob-largescale.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/test/integration-test/test_bbob-largescale.c b/code-experiments/test/integration-test/test_bbob-largescale.c index 618157545..6b0cf3591 100644 --- a/code-experiments/test/integration-test/test_bbob-largescale.c +++ b/code-experiments/test/integration-test/test_bbob-largescale.c @@ -58,7 +58,7 @@ void run_once(char *suite_options) { coco_strdupf("result_folder: RS_on_%s " "algorithm_name: RS " "algorithm_info: \"A simple random search algorithm\"", - "bbob-constrained"); + "bbob-largescale"); printf("Running experiment with suite options %s\n", suite_options); fflush(stdout); From d97569c9801315653a5dc6f378927dd34c77085c Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Mon, 11 Mar 2019 15:21:12 +0100 Subject: [PATCH 422/446] Restored example experiment (stops when the final target is hit) --- code-experiments/build/c/example_experiment.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code-experiments/build/c/example_experiment.c b/code-experiments/build/c/example_experiment.c index ed51fb752..18f64f330 100644 --- a/code-experiments/build/c/example_experiment.c +++ b/code-experiments/build/c/example_experiment.c @@ -189,8 +189,10 @@ void example_experiment(const char *suite_name, coco_problem_get_evaluations_constraints(PROBLEM)); long evaluations_remaining = (long) (dimension * BUDGET_MULTIPLIER) - evaluations_done; - /* Break the loop if there are no more remaining evaluations */ - if (evaluations_remaining <= 0) + /* Break the loop if the target was hit or there are no more remaining evaluations */ + if ((coco_problem_final_target_hit(PROBLEM) && + coco_problem_get_number_of_constraints(PROBLEM) == 0) + || (evaluations_remaining <= 0)) break; /* Call the optimization algorithm for the remaining number of evaluations */ @@ -228,7 +230,8 @@ void example_experiment(const char *suite_name, } /** - * A random search algorithm that can be used for single- as well as multi-objective optimization. + * A random search algorithm that can be used for single- as well as multi-objective optimization. The + * problem's initial solution is evaluated first. * * @param evaluate_func The function used to evaluate the objective function. * @param evaluate_cons The function used to evaluate the constraints. From 6628ff3bfed14c0325783eee7a3229ee76c1b740 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Mon, 11 Mar 2019 15:38:28 +0100 Subject: [PATCH 423/446] Updated a coment regarding the supported suites --- code-experiments/src/coco_suite.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/coco_suite.c b/code-experiments/src/coco_suite.c index a2e50c6c4..e66c37c4f 100644 --- a/code-experiments/src/coco_suite.c +++ b/code-experiments/src/coco_suite.c @@ -589,8 +589,7 @@ static int coco_suite_is_next_dimension_found(coco_suite_t *suite) { } /** - * Currently, six suites are supported. - * Seven suites with artificial test functions: + * Currently, seven suites are supported: * - "bbob" contains 24 * single-objective functions in 6 dimensions (2, 3, 5, 10, 20, 40) * - "bbob-biobj" contains 55 bi-objective @@ -604,6 +603,7 @@ static int coco_suite_is_next_dimension_found(coco_suite_t *suite) { * objective functions with 6 different numbers of linear constraints (1, 2, 10, dimension/2, dimension-1, * dimension+1), in 6 dimensions (2, 3, 5, 10, 20, 40). * - "bbob-mixint" contains mixed-integer single-objective functions in 6 dimensions (2, 3, 5, 10, 20, 40) + * - "bbob-biobj-mixint" contains 92 mixed-integer bi-objective functions in 6 dimensions (2, 3, 5, 10, 20, 40) * - "toy" contains 6 * single-objective functions in 5 dimensions (2, 3, 5, 10, 20) * From 1365322609124a4f6652ea722c4105b8b3e02b48 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Mon, 11 Mar 2019 20:59:59 +0100 Subject: [PATCH 424/446] cocopp.main accepts also a Python regular expression as implemented in COCODataArchive.get_extended --- code-postprocessing/cocopp/archiving.py | 26 ++++++++++++++++-------- code-postprocessing/cocopp/rungeneric.py | 10 +++++---- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/code-postprocessing/cocopp/archiving.py b/code-postprocessing/cocopp/archiving.py index 4f4aadb94..d633f5370 100644 --- a/code-postprocessing/cocopp/archiving.py +++ b/code-postprocessing/cocopp/archiving.py @@ -51,6 +51,7 @@ import warnings import hashlib import ast +import re as _re from .toolsdivers import StringList try: @@ -829,12 +830,15 @@ def get_one(self, *args, **kwargs): def get_extended(self, args, remote=True): """return a list of valid paths. - Elements in `args` may be a valid path name or a known name - from the data archive, or a uniquely matching substring of such - a name, or a matching substring with added "!" in which case - the first match is taken only (calling `self.get_first`), - or a matching substring with added "*" in which case all - matches are taken (calling `self.get_all`). + Elements in `args` may be a valid path name or a known name from the + data archive, or a uniquely matching substring of such a name, or a + matching substring with added "!" in which case the first match is taken + only (calling `self.get_first`), or a matching substring with added "*" + in which case all matches are taken (calling `self.get_all`), or a + Python regular expression containing one or more '*' before the last + character, in which case, for example, "bbob/.*7.*cma" matches + "bbob/2017/DTS-CMA-ES-Pitra.tgz" (among others). + """ res = [] args = _str_to_list(args) @@ -847,8 +851,14 @@ def get_extended(self, args, remote=True): if res and res[-1] is None: warnings.warn('"%s" seems not to be an existing file or ' 'match any archived data' % name) - elif name.endswith('*'): # take all matches - res.extend(self.get_all(name[:-1], remote=remote)) + elif '*' in name: + if name.index('*') == len(name) - 1: # only trailing * -> take all matches + res.extend(self.get_all(name[:-1], remote=remote)) + else: # assume a Python regular expression + rex = _re.compile(name, _re.IGNORECASE) + for s in self: + if rex.match(s): + res.append(self.get(s, remote=remote)) elif self.find(name): # get will bail out if there is not exactly one match res.append(self.get(name, remote=remote)) else: diff --git a/code-postprocessing/cocopp/rungeneric.py b/code-postprocessing/cocopp/rungeneric.py index fa79be639..103d8edb5 100644 --- a/code-postprocessing/cocopp/rungeneric.py +++ b/code-postprocessing/cocopp/rungeneric.py @@ -76,10 +76,12 @@ def main(argv=None): to a location which is in the path) ``data_folder`` may be a name from the known data archive, see e.g. - `cocopp.bbob`, or a uniquely matching substring of such a name, - or a matching substring with added "!" in which case the first - match is taken, or a matching substring with added "*" in which - case all matches are taken. + `cocopp.bbob`, or a uniquely matching substring of such a name, or a + matching substring with added "!" in which case the first match is taken, or + a matching substring with added "*" in which case all matches are taken, or + a Python regular expression containing a '*' before the last character, + in which case, for example, "bbob/.*7.*cma" matches + "bbob/2017/DTS-CMA-ES-Pitra.tgz" (among others). This routine will: From 4ad4977e3e60cbba5020a458c9bf208d6dc91b72 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Mon, 11 Mar 2019 21:25:29 +0100 Subject: [PATCH 425/446] editing readme and minor edits in docstring --- README.md | 18 ++++++++++-------- code-postprocessing/cocopp/archiving.py | 4 ++-- code-postprocessing/cocopp/rungeneric.py | 6 +++--- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index cea7a3489..e26926b7d 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ numbbo/coco: Comparing Continuous Optimizers ============================================ [![CircleCI](https://circleci.com/gh/numbbo/coco/tree/master.svg?style=shield)](https://circleci.com/gh/numbbo/coco/tree/master) +[![Appveyor](https://ci.appveyor.com/api/projects/status/4dawpqr7aq2ioici/branch/master?svg=true)](https://ci.appveyor.com/project/nikohansen/coco-j53aywshl8udzvb/branch/master) [This code](https://github.com/numbbo/coco) reimplements the original Comparing Continous Optimizer platform, now rewritten fully in `ANSI C` and `Python` with @@ -164,16 +165,17 @@ Getting Started ``` processes the referenced archived BFGS data set. The given substring must - have a unique match in the archive. Otherwise, all matches are listed but none - is processed with this call. For more information in how to obtain and - display specific archived data, see + have a unique match in the archive or must end with `!` or `*` or must be a + [regular expression](https://docs.python.org/3/library/re.html#regular-expression-syntax) + containing a `*` before the last character. Otherwise, all matches are listed + but none is processed with this call. For more information in how to obtain + and display specific archived data, see [`help(cocopp)`](http://coco.gforge.inria.fr/apidocs-cocopp/cocopp.html) or - [`help(cocopp.archives`)](http://coco.gforge.inria.fr/apidocs-cocopp/cocopp. - archiving.KnownArchives.html) or the class - [`COCODataArchive`](http://coco.gforge.inria.fr/apidocs-cocopp/cocopp. - archiving.COCODataArchive.html). + [`help(cocopp.archives)`](http://coco.gforge.inria.fr/apidocs-cocopp/cocopp.archiving.KnownArchives.html) + or the class + [`COCODataArchive`](http://coco.gforge.inria.fr/apidocs-cocopp/cocopp.archiving.COCODataArchive.html). - For the `bbob` test suite, the data descriptions can be found at + Data descriptions can be found for the `bbob` test suite at http://coco.gforge.inria.fr/doku.php?id=algorithms and for the `bbob-biobj` test suite at http://coco.gforge.inria.fr/doku.php?id=algorithms-biobj. diff --git a/code-postprocessing/cocopp/archiving.py b/code-postprocessing/cocopp/archiving.py index d633f5370..a7e182ee3 100644 --- a/code-postprocessing/cocopp/archiving.py +++ b/code-postprocessing/cocopp/archiving.py @@ -835,8 +835,8 @@ def get_extended(self, args, remote=True): matching substring with added "!" in which case the first match is taken only (calling `self.get_first`), or a matching substring with added "*" in which case all matches are taken (calling `self.get_all`), or a - Python regular expression containing one or more '*' before the last - character, in which case, for example, "bbob/.*7.*cma" matches + regular expression containing one or more '*' before the last character, + in which case, for example, "bbob/.*7.*cma" matches "bbob/2017/DTS-CMA-ES-Pitra.tgz" (among others). """ diff --git a/code-postprocessing/cocopp/rungeneric.py b/code-postprocessing/cocopp/rungeneric.py index 103d8edb5..14ce462be 100644 --- a/code-postprocessing/cocopp/rungeneric.py +++ b/code-postprocessing/cocopp/rungeneric.py @@ -79,9 +79,9 @@ def main(argv=None): `cocopp.bbob`, or a uniquely matching substring of such a name, or a matching substring with added "!" in which case the first match is taken, or a matching substring with added "*" in which case all matches are taken, or - a Python regular expression containing a '*' before the last character, - in which case, for example, "bbob/.*7.*cma" matches - "bbob/2017/DTS-CMA-ES-Pitra.tgz" (among others). + a regular expression containing a '*' before the last character, in which + case, for example, "bbob/.*7.*cma" matches "bbob/2017/DTS-CMA-ES-Pitra.tgz" + (among others). This routine will: From 3824a741c62c44d4f0a7e9e3eb7e33cacbd5befc Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 12 Mar 2019 12:38:28 +0100 Subject: [PATCH 426/446] Comment update --- code-experiments/build/matlab/my_optimizer.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/build/matlab/my_optimizer.m b/code-experiments/build/matlab/my_optimizer.m index a98af5e58..bcc55da9f 100644 --- a/code-experiments/build/matlab/my_optimizer.m +++ b/code-experiments/build/matlab/my_optimizer.m @@ -3,7 +3,7 @@ function my_optimizer (problem, lower_bounds, upper_bounds, num_integer_vars, nu delta = upper_bounds - lower_bounds; for i= 1:budget x = lower_bounds + rand(1,n) .* delta; - % Round the variable values that need to be integer + % Round the variable values that need to be integer (not really needed) if num_integer_vars > 0 x(1:num_integer_vars) = round(x(1:num_integer_vars)); end From a7f4f62230fcf49179b5229e36497f0ab9f0bf94 Mon Sep 17 00:00:00 2001 From: brockhof Date: Tue, 12 Mar 2019 13:58:43 +0100 Subject: [PATCH 427/446] added links to additional 2018 data by Vodopija et al. and some random search data (from 2019) to the data archive --- code-postprocessing/cocopp/archiving.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/code-postprocessing/cocopp/archiving.py b/code-postprocessing/cocopp/archiving.py index a7e182ee3..4d8cbe502 100644 --- a/code-postprocessing/cocopp/archiving.py +++ b/code-postprocessing/cocopp/archiving.py @@ -540,6 +540,27 @@ class COCODataArchive(list): ('bbob/2018/DE-ttb.tgz', 'f08d2fa51303429b69821cd09ff1b164fc89e4dc27a40abe657706133243eb36', 15514), ('bbob/2018/PSA-CMA-ES.tgz', 'c6a2cd2dda68e109b8454738fc7148f6ffa4cc779c66e303bd0a077efaefce56', 11087), ('bbob/2018/PSA-CMA-ESwRS.tgz', '8237619d4b0bae888c3aded23b6cbbc07387a11df9af4d2a9c6bea888493a38a', 10835), + ('bbob/2018-others/uBBDE-best.tgz', '53d211e46fc2ac68e427ca0b525a240f0071dac686cf2a426babf5f0d300276b', 17121), + ('bbob/2018-others/uBBDE-N.tgz', 'd0d94d7c0e4c7cb57aa45dc68392f543bb825b185e937ef7f20d74d3feb54942', 16835), + ('bbob/2018-others/uBBDE-ttb.tgz', '6a13395434e4a1a44b33883ee1bd6eb49c174148e2709fbf613f7cf39afcf9ef', 17642), + ('bbob/2018-others/uBBDE.tgz', '2546cea871f739a69f9832e1976fd25b21be6a54c7b4f19caea8ebced1d9fd55', 14390), + ('bbob/2018-others/uDE-best.tgz', '00d67330af759717b2d43ac7d6d7f66c32d80614b8bb0b6cb4378ea89f4f3865', 14918), + ('bbob/2018-others/uDE-rand.tgz', '744e29c3e35a488224481ecad3fc2ea0fa1b13a6ec5078aaa729ef21321f83fc', 13427), + ('bbob/2018-others/uDE-ttb.tgz', '9833d10050ae14c74663fb8976a8b34372cb0d7cff70d7f89028648560e6bbba', 14939), + ('bbob/2019/RS-0p5-initIn0.tgz', '5c2b7659fb56bba698e042cda690857cc20c686d9a4ebd78bc1b8cdd8cda45e6', 10996), + ('bbob/2019/RS-0p5.tgz', '16dba43641078c2e5d9d0252cf46c10f78202168ff2db643e5df09df016c7d4b', 11083), + ('bbob/2019/RS-1-initIn0.tgz', '29a630eddf47b3503cd1503209e7a260e7051d1cbf9596bdf8e6f7ccf79b13d0', 11272), + ('bbob/2019/RS-1.tgz', 'cbdf7cc2d65dd45c9a35cdfc95426b9825ecc920c3fa516e7217efd3f67f2382', 11534), + ('bbob/2019/RS-10-initIn0.tgz', 'ae95352427b5fb9e980daea8db1d539033491dd7a874b155ebca129724a8faf2', 11001), + ('bbob/2019/RS-2-initIn0.tgz', '4712fc44c77c534a891f95daeef5dbecadd172393ce4f37ebc054ba88f33514c', 11495), + ('bbob/2019/RS-2.tgz', 'fc4c22616b8b8ca3a3170ae0648cdd7b952033cded2e4ce68b993723a73d3058', 11644), + ('bbob/2019/RS-20-initIn0.tgz', '09e4c37c2622eba7144a9831894cb3b9e046073ce15f64c09f0a07f93140c43d', 10678), + ('bbob/2019/RS-3-initIn0.tgz', '1db808f05314732e8e9b4a988a256edb3bd1d9d26502a6fb231517ba760eae58', 11427), + ('bbob/2019/RS-3.tgz', 'f8425a60593395587674ccfbc1ccd99c0d69a1617e816e81ac21f0c697ef2371', 11665), + ('bbob/2019/RS-4-initIn0.tgz', '2310762ff5b4e5bb7e55809fed3731fc11470c64c84842db43d6a969ca5dd283', 11404), + ('bbob/2019/RS-5-initIn0.tgz', '1c0b706b70885f2380d981a150af0f7732a69fdf274a8fe24aa5139e4d57fbb9', 11342), + ('bbob/2019/RS-6-initIn0.tar.gz', 'a1c0aec578079177c3cecd7fedb778a8ff08eb75f76df16f31b2e22467d7ed83', 11241), + ('bbob/2019/RS-6.tgz', '7b3eec226e020d333c5acc89ac3f949b5765c2ae82999170dd9e36a25e3f471d', 11688), ('bbob-biobj/2016/DEMO_Tusar_bbob-biobj.tgz', 'f1e4d3d19d5d36a88bec9916462432f297f5d5ee67ef137e685b45bbce631ed4', 9509), ('bbob-biobj/2016/HMO-CMA-ES_Loshchilov_bbob-biobj.tgz', '07254ffa5d818298bb77714e5fb08e226e31f4da60d8500e8f00a030e2e8f530', 18435), ('bbob-biobj/2016/MAT-DIRECT_Al-Dujaili_bbob-biobj.tgz', 'b2b08f4614c5881738d04b98246183444b21d801a804a3ce32dbf85a02783cd8', 737), From 60511bafd6ebc7c6157430b49f0bfe27b4c85110 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 12 Mar 2019 14:51:16 +0100 Subject: [PATCH 428/446] Updated regression test --- code-experiments/test/regression-test/test_suites.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code-experiments/test/regression-test/test_suites.py b/code-experiments/test/regression-test/test_suites.py index e11ccd2ff..5eea132e8 100755 --- a/code-experiments/test/regression-test/test_suites.py +++ b/code-experiments/test/regression-test/test_suites.py @@ -59,6 +59,7 @@ def regression_test_a_suite(suite_name, filename): sys.stdout.flush() t0 = time.clock() suite = cocoex.Suite(suite_name, "year: 0000", "") # choose "default" year for test + failed_test_counter = 0 for key in xfc_dict: f, x = suite[key[0]], key[1] try: @@ -66,17 +67,20 @@ def regression_test_a_suite(suite_name, filename): except AssertionError: print(f.name, "id,x =", key, "stored f(x),con(x) =", xfc_dict[key], "computed f(x) =", f(x)) - raise + failed_test_counter += 1 if f.number_of_constraints > 0: try: assert is_equal(f.constraint(x), xfc_dict[key][1]) except AssertionError: print(f.name, "index,x =", key, "stored f,con =", xfc_dict[key], "computed con =", f.constraint(x)) - raise + failed_test_counter += 1 + if failed_test_counter > 0: + raise AssertionError("{} assertions failed".format(failed_test_counter)) if verbose: print("done in %.1fs" % (time.clock() - t0)) + if __name__ == "__main__": try: ndata = int(sys.argv[1]) From a232faee270378523eee7ff8e9c87c50019ade27 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 12 Mar 2019 16:55:51 +0100 Subject: [PATCH 429/446] Implemented coco_double_round_offset to be used in the mixed-integer suite --- code-experiments/src/coco_utilities.c | 9 +++++++++ code-experiments/src/transform_vars_discretize.c | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/coco_utilities.c b/code-experiments/src/coco_utilities.c index 28984aa70..833aecef8 100644 --- a/code-experiments/src/coco_utilities.c +++ b/code-experiments/src/coco_utilities.c @@ -869,6 +869,15 @@ static double coco_double_round(const double number) { return floor(number + 0.5); } +/** + * @brief Rounds the given double to the nearest integer using an offset (safer to use for the mixed-integer + * suite). + */ +static double coco_double_round_offset(const double number) { + const double offset = 1e-9; + return floor(number + 0.5 + offset); +} + /** * @brief Returns the maximum of a and b. */ diff --git a/code-experiments/src/transform_vars_discretize.c b/code-experiments/src/transform_vars_discretize.c index 9d7fa52c7..9871c7933 100644 --- a/code-experiments/src/transform_vars_discretize.c +++ b/code-experiments/src/transform_vars_discretize.c @@ -61,7 +61,7 @@ static void transform_vars_discretize_evaluate_function(coco_problem_t *problem, inner_l = l + (u - l) / (n + 1); inner_u = u - (u - l) / (n + 1); /* Make sure you the bounds are respected */ - discretized_x[i] = coco_double_round(x[i]); + discretized_x[i] = coco_double_round_offset(x[i]); if (discretized_x[i] < outer_l) discretized_x[i] = outer_l; if (discretized_x[i] > outer_u) @@ -120,7 +120,7 @@ static coco_problem_t *transform_vars_discretize(coco_problem_t *inner_problem, /* Find the location of the optimum in the coordinates of the outer problem */ inner_xopt = inner_problem->best_parameter[i]; outer_xopt = outer_l + (outer_u - outer_l) * (inner_xopt - inner_l) / (inner_u - inner_l); - outer_xopt = coco_double_round(outer_xopt); + outer_xopt = coco_double_round_offset(outer_xopt); /* Make sure you the bounds are respected */ if (outer_xopt < outer_l) outer_xopt = outer_l; From 5220628f4077f4f83caeaa78eeddf79fe09e559d Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 12 Mar 2019 16:56:01 +0100 Subject: [PATCH 430/446] Fixed typos in comments --- code-experiments/src/transform_vars_round_step.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/transform_vars_round_step.c b/code-experiments/src/transform_vars_round_step.c index 0caf998bf..b66f1903d 100644 --- a/code-experiments/src/transform_vars_round_step.c +++ b/code-experiments/src/transform_vars_round_step.c @@ -1,6 +1,6 @@ /** * @file transform_vars_round_step.c - * @brief Implementation of rounding the varaibles for the step-ellispoid function + * @brief Implementation of rounding the variables for the step-ellipsoid function * TODO: should this be a helper function instead? */ From d3c259414cbdcb2670d8afe49dacf9e9eb8cf36a Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 12 Mar 2019 17:07:58 +0100 Subject: [PATCH 431/446] Using coco_double_round_offset in the initial solution --- code-experiments/src/coco_problem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/coco_problem.c b/code-experiments/src/coco_problem.c index 4b155cf0d..18254b5fc 100644 --- a/code-experiments/src/coco_problem.c +++ b/code-experiments/src/coco_problem.c @@ -568,7 +568,7 @@ void coco_problem_get_initial_solution(const coco_problem_t *problem, double *in * (problem->largest_values_of_interest[i] - problem->smallest_values_of_interest[i]); if (problem->number_of_integer_variables > 0) { for (i = 0; i < problem->number_of_integer_variables; ++i) { - initial_solution[i] = coco_double_round(initial_solution[i]); + initial_solution[i] = coco_double_round_offset(initial_solution[i]); } } } From 7fce7f85c494b843924e91838a3cded815fee3c6 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 12 Mar 2019 17:08:32 +0100 Subject: [PATCH 432/446] Changed offset in coco_double_round_offset --- code-experiments/src/coco_utilities.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/coco_utilities.c b/code-experiments/src/coco_utilities.c index 833aecef8..dd587b490 100644 --- a/code-experiments/src/coco_utilities.c +++ b/code-experiments/src/coco_utilities.c @@ -874,7 +874,7 @@ static double coco_double_round(const double number) { * suite). */ static double coco_double_round_offset(const double number) { - const double offset = 1e-9; + const double offset = 1e-7; return floor(number + 0.5 + offset); } From 89524d44ee3bdafc973d14a59237100d41021426 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 12 Mar 2019 17:32:01 +0100 Subject: [PATCH 433/446] Handling the rounding offset in a different way --- code-experiments/src/coco_problem.c | 2 +- code-experiments/src/coco_utilities.c | 9 --------- code-experiments/src/transform_vars_discretize.c | 7 ++++--- 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/code-experiments/src/coco_problem.c b/code-experiments/src/coco_problem.c index 18254b5fc..4b155cf0d 100644 --- a/code-experiments/src/coco_problem.c +++ b/code-experiments/src/coco_problem.c @@ -568,7 +568,7 @@ void coco_problem_get_initial_solution(const coco_problem_t *problem, double *in * (problem->largest_values_of_interest[i] - problem->smallest_values_of_interest[i]); if (problem->number_of_integer_variables > 0) { for (i = 0; i < problem->number_of_integer_variables; ++i) { - initial_solution[i] = coco_double_round_offset(initial_solution[i]); + initial_solution[i] = coco_double_round(initial_solution[i]); } } } diff --git a/code-experiments/src/coco_utilities.c b/code-experiments/src/coco_utilities.c index dd587b490..28984aa70 100644 --- a/code-experiments/src/coco_utilities.c +++ b/code-experiments/src/coco_utilities.c @@ -869,15 +869,6 @@ static double coco_double_round(const double number) { return floor(number + 0.5); } -/** - * @brief Rounds the given double to the nearest integer using an offset (safer to use for the mixed-integer - * suite). - */ -static double coco_double_round_offset(const double number) { - const double offset = 1e-7; - return floor(number + 0.5 + offset); -} - /** * @brief Returns the maximum of a and b. */ diff --git a/code-experiments/src/transform_vars_discretize.c b/code-experiments/src/transform_vars_discretize.c index 9871c7933..492ce79ee 100644 --- a/code-experiments/src/transform_vars_discretize.c +++ b/code-experiments/src/transform_vars_discretize.c @@ -61,7 +61,7 @@ static void transform_vars_discretize_evaluate_function(coco_problem_t *problem, inner_l = l + (u - l) / (n + 1); inner_u = u - (u - l) / (n + 1); /* Make sure you the bounds are respected */ - discretized_x[i] = coco_double_round_offset(x[i]); + discretized_x[i] = coco_double_round(x[i]); if (discretized_x[i] < outer_l) discretized_x[i] = outer_l; if (discretized_x[i] > outer_u) @@ -92,6 +92,7 @@ static coco_problem_t *transform_vars_discretize(coco_problem_t *inner_problem, coco_problem_t *problem = NULL; double l, u, inner_l, inner_u, outer_l, outer_u; double outer_xopt, inner_xopt, inner_approx_xopt; + const double offset = 1e-9; /* Needed to avoid issues with rounding doubles */ int n; size_t i; @@ -118,9 +119,9 @@ static coco_problem_t *transform_vars_discretize(coco_problem_t *inner_problem, inner_l = l + (u - l) / (n + 1); inner_u = u - (u - l) / (n + 1); /* Find the location of the optimum in the coordinates of the outer problem */ - inner_xopt = inner_problem->best_parameter[i]; + inner_xopt = inner_problem->best_parameter[i] + offset; outer_xopt = outer_l + (outer_u - outer_l) * (inner_xopt - inner_l) / (inner_u - inner_l); - outer_xopt = coco_double_round_offset(outer_xopt); + outer_xopt = coco_double_round(outer_xopt); /* Make sure you the bounds are respected */ if (outer_xopt < outer_l) outer_xopt = outer_l; From fc09d284c4a8c7135ab47b8f1d04ba534eb9b7c9 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 12 Mar 2019 17:55:09 +0100 Subject: [PATCH 434/446] Handling the rounding offset in a different way --- code-experiments/src/transform_vars_discretize.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/transform_vars_discretize.c b/code-experiments/src/transform_vars_discretize.c index 492ce79ee..2815aed1a 100644 --- a/code-experiments/src/transform_vars_discretize.c +++ b/code-experiments/src/transform_vars_discretize.c @@ -119,9 +119,9 @@ static coco_problem_t *transform_vars_discretize(coco_problem_t *inner_problem, inner_l = l + (u - l) / (n + 1); inner_u = u - (u - l) / (n + 1); /* Find the location of the optimum in the coordinates of the outer problem */ - inner_xopt = inner_problem->best_parameter[i] + offset; + inner_xopt = inner_problem->best_parameter[i]; outer_xopt = outer_l + (outer_u - outer_l) * (inner_xopt - inner_l) / (inner_u - inner_l); - outer_xopt = coco_double_round(outer_xopt); + outer_xopt = coco_double_round(outer_xopt + offset); /* Make sure you the bounds are respected */ if (outer_xopt < outer_l) outer_xopt = outer_l; From 414676ceb77439de59b3a4828eb79bec1b8790a0 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Tue, 12 Mar 2019 18:44:34 +0100 Subject: [PATCH 435/446] Using larger offset --- code-experiments/src/transform_vars_discretize.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code-experiments/src/transform_vars_discretize.c b/code-experiments/src/transform_vars_discretize.c index 2815aed1a..5d0e83983 100644 --- a/code-experiments/src/transform_vars_discretize.c +++ b/code-experiments/src/transform_vars_discretize.c @@ -92,7 +92,7 @@ static coco_problem_t *transform_vars_discretize(coco_problem_t *inner_problem, coco_problem_t *problem = NULL; double l, u, inner_l, inner_u, outer_l, outer_u; double outer_xopt, inner_xopt, inner_approx_xopt; - const double offset = 1e-9; /* Needed to avoid issues with rounding doubles */ + const double precision_offset = 1e-7; /* Needed to avoid issues with rounding doubles */ int n; size_t i; @@ -121,7 +121,7 @@ static coco_problem_t *transform_vars_discretize(coco_problem_t *inner_problem, /* Find the location of the optimum in the coordinates of the outer problem */ inner_xopt = inner_problem->best_parameter[i]; outer_xopt = outer_l + (outer_u - outer_l) * (inner_xopt - inner_l) / (inner_u - inner_l); - outer_xopt = coco_double_round(outer_xopt + offset); + outer_xopt = coco_double_round(outer_xopt + precision_offset); /* Make sure you the bounds are respected */ if (outer_xopt < outer_l) outer_xopt = outer_l; From 12329f91f9782e1449106947bc4dd9f53c84b057 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Tue, 12 Mar 2019 17:00:52 +0100 Subject: [PATCH 436/446] cocopp's COCODataArchive.find now also understands regular expressions --- README.md | 2 +- code-postprocessing/cocopp/archiving.py | 51 ++++++++++++++----------- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index e26926b7d..e4d92462e 100644 --- a/README.md +++ b/README.md @@ -167,7 +167,7 @@ Getting Started processes the referenced archived BFGS data set. The given substring must have a unique match in the archive or must end with `!` or `*` or must be a [regular expression](https://docs.python.org/3/library/re.html#regular-expression-syntax) - containing a `*` before the last character. Otherwise, all matches are listed + containing a `*` and not ending with `!` or `*`. Otherwise, all matches are listed but none is processed with this call. For more information in how to obtain and display specific archived data, see [`help(cocopp)`](http://coco.gforge.inria.fr/apidocs-cocopp/cocopp.html) or diff --git a/code-postprocessing/cocopp/archiving.py b/code-postprocessing/cocopp/archiving.py index 4d8cbe502..94c945783 100644 --- a/code-postprocessing/cocopp/archiving.py +++ b/code-postprocessing/cocopp/archiving.py @@ -687,20 +687,25 @@ def find(self, *substrs): - an index of `type` `int` - a list of indices - Returned names correspond to the unique trailing subpath of - data filenames. The next call to `get` without argument will - retrieve the first found data and return the full data path. A - call to `get_all` will call `get` on all found entries and - return a `list` of full data paths which can be used with - `cocopp.main`. + A single substring matches either if a data entry contains the substring + or if the substring matches as regular expression, where "." matches any + single character and ".*" matches any number >= 0 of characters. + + Returned names correspond to the unique trailing subpath of data + filenames. The next call to `get` without argument will retrieve the + first found data and return the full data path. A call to `get_all` will + call `get` on all found entries and return a `list` of full data paths + which can be used with `cocopp.main`. Example: >>> import cocopp - >>> cocopp.archives.bbob.find('Auger', '2013')[1] # doctest:+SKIP, + >>> cocopp.archives.bbob.find('Auger', '2013')[1] '2013/lmm-CMA-ES_auger_noiseless.tgz' + >>> cocopp.archives.all.find("bbob/2017.*cma")[0] + 'bbob/2017/CMAES-APOP-Nguyen.tgz' - Sitting in front of a shell, we prefer using the shortcut to find + For typing in a Python shell, we may prefer using the shortcut to `find` via `__call__`: >>> cocopp.archives.bbob('Auger', '2013') == cocopp.archives.bbob.find('Auger', '2013') @@ -719,8 +724,9 @@ def find(self, *substrs): return StringList(self._names_found) names = list(self) for s in substrs: + rex = _re.compile(s, _re.IGNORECASE) try: - names = [name for name in names if s.lower() in name.lower()] + names = [name for name in names if rex.match(name) or s.lower() in name.lower()] except AttributeError: warnings.warn("arguments to `find` must be strings or a " "single integer or an integer list") @@ -856,13 +862,16 @@ def get_extended(self, args, remote=True): matching substring with added "!" in which case the first match is taken only (calling `self.get_first`), or a matching substring with added "*" in which case all matches are taken (calling `self.get_all`), or a - regular expression containing one or more '*' before the last character, - in which case, for example, "bbob/.*7.*cma" matches - "bbob/2017/DTS-CMA-ES-Pitra.tgz" (among others). + regular expression containing a `*` and not ending with `!` or `*`, in + which case, for example, "bbob/2017.*cma" matches + "bbob/2017/DTS-CMA-ES-Pitra.tgz" among others (in a regular expression + "." matches any single character and ".*" matches any number >= 0 of + characters). """ res = [] args = _str_to_list(args) + nb_results = 0 for i, name in enumerate(args): name = name.strip() if os.path.exists(name): @@ -872,22 +881,20 @@ def get_extended(self, args, remote=True): if res and res[-1] is None: warnings.warn('"%s" seems not to be an existing file or ' 'match any archived data' % name) - elif '*' in name: - if name.index('*') == len(name) - 1: # only trailing * -> take all matches - res.extend(self.get_all(name[:-1], remote=remote)) - else: # assume a Python regular expression - rex = _re.compile(name, _re.IGNORECASE) - for s in self: - if rex.match(s): - res.append(self.get(s, remote=remote)) + elif name.endswith('*'): # take all matches + res.extend(self.get_all(name[:-1], remote=remote)) + elif '*' in name: # use find which also handles regular expressions + res.extend(self.get(found, remote=remote) + for found in self.find(name)) elif self.find(name): # get will bail out if there is not exactly one match res.append(self.get(name, remote=remote)) - else: + if len(res) <= nb_results: warnings.warn('"%s" seems not to be an existing file or ' 'match any archived data' % name) + nb_results = len(res) if len(args) != len(set(args)): warnings.warn("Several data arguments point to the very same " - "location. This will most likely lead to \n" + "location. This will likely lead to \n" "rather unexpected outcomes.") # TODO: we would like the users input with timeout to confirm # and otherwise raise a ValueError From ae0044816e8c7b206888e2a5b4534b7eb237a313 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Wed, 13 Mar 2019 09:12:51 +0100 Subject: [PATCH 437/446] Corrected typo --- code-experiments/src/transform_vars_gallagher_blockrotation.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/src/transform_vars_gallagher_blockrotation.c b/code-experiments/src/transform_vars_gallagher_blockrotation.c index 392a8126e..1527ce231 100644 --- a/code-experiments/src/transform_vars_gallagher_blockrotation.c +++ b/code-experiments/src/transform_vars_gallagher_blockrotation.c @@ -1,6 +1,6 @@ /** * @file transform_vars_gallagher_blockrotation.c - * @brief Implementation of performing a block-rotation transformation on decision values for the gallagher function. + * @brief Implementation of performing a block-rotation transformation on decision values for the Gallagher function. * The block-rotation is applied only once per call and the result is stored such that the sub-problems can access it * */ From e73f163c9e871c82234582789ce58bf174d66867 Mon Sep 17 00:00:00 2001 From: Tea Tusar Date: Wed, 13 Mar 2019 13:38:29 +0100 Subject: [PATCH 438/446] Fixed Python 2 issue with unicode strings --- code-postprocessing/cocopp/archiving.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-postprocessing/cocopp/archiving.py b/code-postprocessing/cocopp/archiving.py index 94c945783..ca7f7e098 100644 --- a/code-postprocessing/cocopp/archiving.py +++ b/code-postprocessing/cocopp/archiving.py @@ -726,7 +726,7 @@ def find(self, *substrs): for s in substrs: rex = _re.compile(s, _re.IGNORECASE) try: - names = [name for name in names if rex.match(name) or s.lower() in name.lower()] + names = [str(name) for name in names if rex.match(name) or s.lower() in name.lower()] except AttributeError: warnings.warn("arguments to `find` must be strings or a " "single integer or an integer list") From 5852df21dc755d8694cc436702b4fc72fee9a4bf Mon Sep 17 00:00:00 2001 From: nikohansen Date: Wed, 13 Mar 2019 13:55:20 +0100 Subject: [PATCH 439/446] fixing cocopp.archiving doctest --- code-postprocessing/cocopp/archiving.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code-postprocessing/cocopp/archiving.py b/code-postprocessing/cocopp/archiving.py index 94c945783..fe6015c4e 100644 --- a/code-postprocessing/cocopp/archiving.py +++ b/code-postprocessing/cocopp/archiving.py @@ -700,10 +700,10 @@ def find(self, *substrs): Example: >>> import cocopp - >>> cocopp.archives.bbob.find('Auger', '2013')[1] - '2013/lmm-CMA-ES_auger_noiseless.tgz' - >>> cocopp.archives.all.find("bbob/2017.*cma")[0] - 'bbob/2017/CMAES-APOP-Nguyen.tgz' + >>> print(cocopp.archives.bbob.find('Auger', '2013')[1]) + 2013/lmm-CMA-ES_auger_noiseless.tgz + >>> print(cocopp.archives.all.find("bbob/2017.*cma")[0]) + bbob/2017/CMAES-APOP-Nguyen.tgz For typing in a Python shell, we may prefer using the shortcut to `find` via `__call__`: From 96f1e06e92e9b289a2fb01e65d2e46c42c3f2143 Mon Sep 17 00:00:00 2001 From: nikohansen Date: Thu, 14 Mar 2019 14:50:19 +0100 Subject: [PATCH 440/446] Revert "Fixed Python 2 issue with unicode strings" which has been fixed in the test. This reverts commit e73f163c9e871c82234582789ce58bf174d66867. --- code-postprocessing/cocopp/archiving.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-postprocessing/cocopp/archiving.py b/code-postprocessing/cocopp/archiving.py index f0429a236..fe6015c4e 100644 --- a/code-postprocessing/cocopp/archiving.py +++ b/code-postprocessing/cocopp/archiving.py @@ -726,7 +726,7 @@ def find(self, *substrs): for s in substrs: rex = _re.compile(s, _re.IGNORECASE) try: - names = [str(name) for name in names if rex.match(name) or s.lower() in name.lower()] + names = [name for name in names if rex.match(name) or s.lower() in name.lower()] except AttributeError: warnings.warn("arguments to `find` must be strings or a " "single integer or an integer list") From fb22efbeabfd94c35fe473dc7562ea93e18d2c14 Mon Sep 17 00:00:00 2001 From: brockhof Date: Thu, 14 Mar 2019 16:41:47 +0100 Subject: [PATCH 441/446] updated/added links to COCO archive data (in particular to the new data set by Bajer et al) --- code-postprocessing/cocopp/archiving.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/code-postprocessing/cocopp/archiving.py b/code-postprocessing/cocopp/archiving.py index fe6015c4e..9ddeb8b1b 100644 --- a/code-postprocessing/cocopp/archiving.py +++ b/code-postprocessing/cocopp/archiving.py @@ -540,13 +540,14 @@ class COCODataArchive(list): ('bbob/2018/DE-ttb.tgz', 'f08d2fa51303429b69821cd09ff1b164fc89e4dc27a40abe657706133243eb36', 15514), ('bbob/2018/PSA-CMA-ES.tgz', 'c6a2cd2dda68e109b8454738fc7148f6ffa4cc779c66e303bd0a077efaefce56', 11087), ('bbob/2018/PSA-CMA-ESwRS.tgz', '8237619d4b0bae888c3aded23b6cbbc07387a11df9af4d2a9c6bea888493a38a', 10835), - ('bbob/2018-others/uBBDE-best.tgz', '53d211e46fc2ac68e427ca0b525a240f0071dac686cf2a426babf5f0d300276b', 17121), - ('bbob/2018-others/uBBDE-N.tgz', 'd0d94d7c0e4c7cb57aa45dc68392f543bb825b185e937ef7f20d74d3feb54942', 16835), - ('bbob/2018-others/uBBDE-ttb.tgz', '6a13395434e4a1a44b33883ee1bd6eb49c174148e2709fbf613f7cf39afcf9ef', 17642), - ('bbob/2018-others/uBBDE.tgz', '2546cea871f739a69f9832e1976fd25b21be6a54c7b4f19caea8ebced1d9fd55', 14390), - ('bbob/2018-others/uDE-best.tgz', '00d67330af759717b2d43ac7d6d7f66c32d80614b8bb0b6cb4378ea89f4f3865', 14918), - ('bbob/2018-others/uDE-rand.tgz', '744e29c3e35a488224481ecad3fc2ea0fa1b13a6ec5078aaa729ef21321f83fc', 13427), - ('bbob/2018-others/uDE-ttb.tgz', '9833d10050ae14c74663fb8976a8b34372cb0d7cff70d7f89028648560e6bbba', 14939), + ('bbob/2018-others/uBBDE-best-Vodopija.tgz', '53d211e46fc2ac68e427ca0b525a240f0071dac686cf2a426babf5f0d300276b', 17121), + ('bbob/2018-others/uBBDE-N-Vodopija.tgz', 'd0d94d7c0e4c7cb57aa45dc68392f543bb825b185e937ef7f20d74d3feb54942', 16835), + ('bbob/2018-others/uBBDE-ttb-Vodopija.tgz', '6a13395434e4a1a44b33883ee1bd6eb49c174148e2709fbf613f7cf39afcf9ef', 17642), + ('bbob/2018-others/uBBDE-Vodopija.tgz', '2546cea871f739a69f9832e1976fd25b21be6a54c7b4f19caea8ebced1d9fd55', 14390), + ('bbob/2018-others/uDE-best-Vodopija.tgz', '00d67330af759717b2d43ac7d6d7f66c32d80614b8bb0b6cb4378ea89f4f3865', 14918), + ('bbob/2018-others/uDE-rand-Vodopija.tgz', '744e29c3e35a488224481ecad3fc2ea0fa1b13a6ec5078aaa729ef21321f83fc', 13427), + ('bbob/2018-others/uDE-ttb-Vodopija.tgz', '9833d10050ae14c74663fb8976a8b34372cb0d7cff70d7f89028648560e6bbba', 14939), + ('bbob/2018-others/DTS-CMA-ES_005-2pop_v26_1model-Bajer.tgz', 'd71e32e2df7c45d3c1552a84d36d8018ee923cc64a868d3b96d4af415fdba589', 5837), ('bbob/2019/RS-0p5-initIn0.tgz', '5c2b7659fb56bba698e042cda690857cc20c686d9a4ebd78bc1b8cdd8cda45e6', 10996), ('bbob/2019/RS-0p5.tgz', '16dba43641078c2e5d9d0252cf46c10f78202168ff2db643e5df09df016c7d4b', 11083), ('bbob/2019/RS-1-initIn0.tgz', '29a630eddf47b3503cd1503209e7a260e7051d1cbf9596bdf8e6f7ccf79b13d0', 11272), From b3c2666ede280350dd95c7176dc3fa5b1991cdbd Mon Sep 17 00:00:00 2001 From: brockhof Date: Thu, 14 Mar 2019 17:03:08 +0100 Subject: [PATCH 442/446] updated interface.c according to changed .pyx --- .../build/python/cython/interface.c | 7850 ++++++++--------- 1 file changed, 3438 insertions(+), 4412 deletions(-) diff --git a/code-experiments/build/python/cython/interface.c b/code-experiments/build/python/cython/interface.c index cab419a1c..93fe0af59 100644 --- a/code-experiments/build/python/cython/interface.c +++ b/code-experiments/build/python/cython/interface.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.28.3 */ +/* Generated by Cython 0.27.3 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,7 +7,7 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_28_3" +#define CYTHON_ABI "0_27_3" #define CYTHON_FUTURE_DIVISION 1 #include #ifndef offsetof @@ -183,103 +183,6 @@ #undef BASE #undef MASK #endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) #define Py_OptimizeFlag 0 #endif @@ -308,12 +211,12 @@ #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) +#if PY_VERSION_HEX < 0x030700A0 || !defined(METH_FASTCALL) #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast @@ -325,18 +228,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif #if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 #define __Pyx_PyThreadState_Current PyThreadState_GET() #elif PY_VERSION_HEX >= 0x03060000 @@ -346,36 +237,6 @@ #else #define __Pyx_PyThreadState_Current _PyThreadState_Current #endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -388,11 +249,6 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) #endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ @@ -437,6 +293,18 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_PYSTON + #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 @@ -453,7 +321,6 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) @@ -465,11 +332,7 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type @@ -504,10 +367,16 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t #endif #if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) + #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods @@ -525,6 +394,96 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int32 uint32_t; + #endif + #endif +#else + #include +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) && __cplusplus >= 201103L + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #elif __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__ ) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif #if defined(WIN32) || defined(MS_WINDOWS) #define _USE_MATH_DEFINES @@ -561,7 +520,6 @@ static CYTHON_INLINE float __PYX_NAN() { #define __PYX_HAVE__cocoex__interface #define __PYX_HAVE_API__cocoex__interface -/* Early includes */ #include #include #include "numpy/arrayobject.h" @@ -651,7 +609,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); #define __Pyx_PySequence_Tuple(obj)\ @@ -759,7 +717,7 @@ static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } static PyObject *__pyx_m = NULL; static PyObject *__pyx_d; static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; +static PyObject *__pyx_cython_runtime; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static PyObject *__pyx_empty_unicode; @@ -834,7 +792,7 @@ typedef struct { } __Pyx_BufFmt_Context; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":743 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -843,7 +801,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":744 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -852,7 +810,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":745 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -861,7 +819,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":746 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -870,7 +828,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":750 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -879,7 +837,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":751 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -888,7 +846,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":739 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":752 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -897,7 +855,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":740 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -906,7 +864,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":744 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":757 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -915,7 +873,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":745 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":758 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -924,7 +882,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":754 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":767 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -933,7 +891,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":768 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -942,7 +900,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":769 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -951,7 +909,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":771 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -960,7 +918,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":772 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -969,7 +927,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":773 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -978,7 +936,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":775 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -987,7 +945,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":776 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -996,7 +954,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":765 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":778 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -1005,7 +963,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":779 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -1014,7 +972,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":767 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":780 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -1053,7 +1011,7 @@ struct __pyx_obj_6cocoex_9interface_Observer; struct __pyx_obj_6cocoex_9interface_Problem; struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":769 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":782 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -1062,7 +1020,7 @@ struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":770 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":783 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -1071,7 +1029,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":784 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -1080,7 +1038,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":773 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":786 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -1091,7 +1049,7 @@ typedef npy_cdouble __pyx_t_5numpy_complex_t; struct __pyx_opt_args_6cocoex_9interface_Problem_init; struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize; -/* "cython/interface.pyx":500 +/* "cython/interface.pyx":498 * coco_observer_free(self._observer) * * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< @@ -1104,7 +1062,7 @@ struct __pyx_opt_args_6cocoex_9interface_Problem_init { PyObject *suite_name; }; -/* "cython/interface.pyx":531 +/* "cython/interface.pyx":529 * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< @@ -1116,7 +1074,7 @@ struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize { PyObject *free; }; -/* "cython/interface.pyx":83 +/* "cython/interface.pyx":81 * cdef coco_observer_t* _current_observer * * cdef class Suite: # <<<<<<<<<<<<<< @@ -1142,7 +1100,7 @@ struct __pyx_obj_6cocoex_9interface_Suite { }; -/* "cython/interface.pyx":445 +/* "cython/interface.pyx":443 * s is self or s.free() * * cdef class Observer: # <<<<<<<<<<<<<< @@ -1158,7 +1116,7 @@ struct __pyx_obj_6cocoex_9interface_Observer { }; -/* "cython/interface.pyx":509 +/* "cython/interface.pyx":507 * res._suite_name = suite_name * return res._initialize(problem, free) * cdef class Problem: # <<<<<<<<<<<<<< @@ -1188,7 +1146,7 @@ struct __pyx_obj_6cocoex_9interface_Problem { }; -/* "cython/interface.pyx":418 +/* "cython/interface.pyx":416 * return len(self._indices) * * def __iter__(self): # <<<<<<<<<<<<<< @@ -1207,7 +1165,7 @@ struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ { -/* "cython/interface.pyx":83 +/* "cython/interface.pyx":81 * cdef coco_observer_t* _current_observer * * cdef class Suite: # <<<<<<<<<<<<<< @@ -1221,7 +1179,7 @@ struct __pyx_vtabstruct_6cocoex_9interface_Suite { static struct __pyx_vtabstruct_6cocoex_9interface_Suite *__pyx_vtabptr_6cocoex_9interface_Suite; -/* "cython/interface.pyx":509 +/* "cython/interface.pyx":507 * res._suite_name = suite_name * return res._initialize(problem, free) * cdef class Problem: # <<<<<<<<<<<<<< @@ -1300,7 +1258,16 @@ static struct __pyx_vtabstruct_6cocoex_9interface_Problem *__pyx_vtabptr_6cocoex /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif @@ -1315,41 +1282,15 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type #else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() PyErr_Occurred() #endif /* PyErrFetchRestore.proto */ @@ -1392,6 +1333,32 @@ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ const char* function_name); +/* PyCFunctionFastCall.proto */ +#if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); +#else +#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); +#else +#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) +#endif +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + /* PyObjectCallNoArg.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); @@ -1425,17 +1392,6 @@ static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* s return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); } -/* PyObjectFormatAndDecref.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f); -static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObject* f); - -/* IncludeStringH.proto */ -#include - -/* JoinPyUnicode.proto */ -static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, - Py_UCS4 max_char); - /* SaveResetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) @@ -1487,6 +1443,9 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) #endif +/* KeywordStringCheck.proto */ +static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); + /* GetItemInt.proto */ #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ @@ -1509,45 +1468,13 @@ static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, int wraparound, int boundscheck); -/* ObjectGetItem.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key); -#else -#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) -#endif - -/* KeywordStringCheck.proto */ -static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); - -/* PyObjectFormat.proto */ -#if CYTHON_USE_UNICODE_WRITER -static PyObject* __Pyx_PyObject_Format(PyObject* s, PyObject* f); -#else -#define __Pyx_PyObject_Format(s, f) PyObject_Format(s, f) -#endif - -/* BuildPyUnicode.proto */ -static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength, - int prepend_sign, char padding_char); - -/* CIntToPyUnicode.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char); - -/* PyUnicode_Unicode.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); #else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) #endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) /* SwapException.proto */ #if CYTHON_FAST_THREAD_STATE @@ -1610,6 +1537,9 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, long i (inplace ? PyNumber_InPlaceTrueDivide(op1, op2) : PyNumber_TrueDivide(op1, op2)) #endif +/* IncludeStringH.proto */ +#include + /* BytesEquals.proto */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); @@ -1627,42 +1557,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( PyObject** py_start, PyObject** py_stop, PyObject** py_slice, int has_cstart, int has_cstop, int wraparound); -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - /* dict_getitem_default.proto */ static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value); -/* UnpackUnboundCMethod.proto */ -typedef struct { - PyObject *type; - PyObject **method_name; - PyCFunction func; - PyObject *method; - int flag; -} __Pyx_CachedCFunction; - -/* CallUnboundCMethod1.proto */ -static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); -#else -#define __Pyx_CallUnboundCMethod1(cfunc, self, arg) __Pyx__CallUnboundCMethod1(cfunc, self, arg) -#endif - -/* CallUnboundCMethod2.proto */ -static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2); -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1 -static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2); -#else -#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2) -#endif - /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace); @@ -1673,13 +1570,23 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, i /* DictGetItem.proto */ #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY -static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); -#define __Pyx_PyObject_Dict_GetItem(obj, name)\ - (likely(PyDict_CheckExact(obj)) ?\ - __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) + PyErr_SetObject(PyExc_KeyError, args); + Py_XDECREF(args); + } + return NULL; + } + Py_INCREF(value); + return value; +} #else -#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) -#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) + #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) #endif /* RaiseTooManyValuesToUnpack.proto */ @@ -1691,20 +1598,6 @@ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); /* RaiseNoneIterError.proto */ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* PyObject_GenericGetAttr.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -#endif - /* SetVTable.proto */ static int __Pyx_SetVtable(PyObject *dict, void *vtable); @@ -1882,6 +1775,18 @@ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif + /* FetchCommonType.proto */ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); @@ -1900,15 +1805,14 @@ typedef struct { PyObject *gi_name; PyObject *gi_qualname; PyObject *gi_modulename; - PyObject *gi_code; int resume_label; char is_running; } __pyx_CoroutineObject; static __pyx_CoroutineObject *__Pyx__Coroutine_New( - PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name); static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( - __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name); static int __Pyx_Coroutine_clear(PyObject *self); static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); @@ -1942,8 +1846,8 @@ static int __Pyx_patch_abc(void); #define __Pyx_Generator_USED static PyTypeObject *__pyx_GeneratorType = 0; #define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType) -#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\ - __Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name) +#define __Pyx_Generator_New(body, closure, name, qualname, module_name)\ + __Pyx__Coroutine_New(__pyx_GeneratorType, body, closure, name, qualname, module_name) static PyObject *__Pyx_Generator_Next(PyObject *self); static int __pyx_Generator_init(void); @@ -2027,49 +1931,37 @@ static PyObject *__pyx_builtin_RuntimeError; static PyObject *__pyx_builtin_range; static PyObject *__pyx_builtin_ImportError; static const char __pyx_k_C[] = "C"; -static const char __pyx_k_a[] = ": a "; -static const char __pyx_k_d[] = "d"; static const char __pyx_k_f[] = "_f"; static const char __pyx_k_i[] = "_i"; static const char __pyx_k_s[] = "s"; static const char __pyx_k_u[] = "u'"; static const char __pyx_k_x[] = "x"; static const char __pyx_k_y[] = "y"; -static const char __pyx_k_If[] = ".\nIf "; static const char __pyx_k__2[] = ""; -static const char __pyx_k__8[] = ", "; -static const char __pyx_k__9[] = ")"; static const char __pyx_k_bi[] = "bi"; static const char __pyx_k_id[] = "id"; static const char __pyx_k_np[] = "np"; -static const char __pyx_k__10[] = "\", \""; +static const char __pyx_k__10[] = ","; static const char __pyx_k__11[] = " "; -static const char __pyx_k__12[] = "="; -static const char __pyx_k__15[] = ","; -static const char __pyx_k__17[] = "'"; -static const char __pyx_k__18[] = "\""; -static const char __pyx_k__19[] = "{"; -static const char __pyx_k__20[] = "}"; -static const char __pyx_k__27[] = "_"; -static const char __pyx_k__31[] = "\")"; -static const char __pyx_k__32[] = "<"; -static const char __pyx_k__34[] = ">"; +static const char __pyx_k__13[] = "'"; +static const char __pyx_k__14[] = "\""; +static const char __pyx_k__15[] = "{"; +static const char __pyx_k__16[] = "}"; +static const char __pyx_k__23[] = "_"; static const char __pyx_k_all[] = "all"; static const char __pyx_k_and[] = "and"; +static const char __pyx_k_d_d[] = "%d=%d"; static const char __pyx_k_get[] = "get"; static const char __pyx_k_inf[] = "inf"; static const char __pyx_k_max[] = "max"; static const char __pyx_k_min[] = "min"; static const char __pyx_k_sys[] = "sys"; static const char __pyx_k_u_2[] = "u\""; -static const char __pyx_k_None[] = "None"; static const char __pyx_k_args[] = "args"; static const char __pyx_k_bbob[] = "bbob"; static const char __pyx_k_copy[] = "copy"; static const char __pyx_k_find[] = "find"; static const char __pyx_k_free[] = "free"; -static const char __pyx_k_id_2[] = " id="; -static const char __pyx_k_id_3[] = "(), id="; static const char __pyx_k_iter[] = "__iter__"; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_name[] = "name"; @@ -2079,8 +1971,7 @@ static const char __pyx_k_send[] = "send"; static const char __pyx_k_size[] = "size"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_what[] = "what"; -static const char __pyx_k_with[] = "\") with "; -static const char __pyx_k_Suite[] = "Suite("; +static const char __pyx_k_with[] = "with"; static const char __pyx_k_array[] = "array"; static const char __pyx_k_ascii[] = "ascii"; static const char __pyx_k_class[] = "__class__"; @@ -2106,17 +1997,13 @@ static const char __pyx_k_import[] = "__import__"; static const char __pyx_k_name_2[] = "__name__"; static const char __pyx_k_random[] = "random"; static const char __pyx_k_reduce[] = "__reduce__"; +static const char __pyx_k_s_id_r[] = "<%s(), id=%r>"; static const char __pyx_k_single[] = "single"; -static const char __pyx_k_with_2[] = " with "; -static const char __pyx_k_with_3[] = "with"; -static const char __pyx_k_Suite_2[] = "Suite(\""; static const char __pyx_k_asarray[] = "asarray"; static const char __pyx_k_dealloc[] = "__dealloc__"; -static const char __pyx_k_index_2[] = ", index="; static const char __pyx_k_indices[] = "indices"; static const char __pyx_k_level_2[] = "_level"; static const char __pyx_k_options[] = "options"; -static const char __pyx_k_problem[] = " problem"; static const char __pyx_k_replace[] = "replace"; static const char __pyx_k_verbose[] = "verbose"; static const char __pyx_k_warning[] = "warning"; @@ -2124,25 +2011,22 @@ static const char __pyx_k_function[] = "function"; static const char __pyx_k_getstate[] = "__getstate__"; static const char __pyx_k_instance[] = "instance"; static const char __pyx_k_observer[] = "observer"; -static const char __pyx_k_of_suite[] = " of suite \""; static const char __pyx_k_parse_id[] = "_parse_id"; static const char __pyx_k_setstate[] = "__setstate__"; static const char __pyx_k_TypeError[] = "TypeError"; static const char __pyx_k_dimension[] = "dimension"; static const char __pyx_k_enumerate[] = "enumerate"; static const char __pyx_k_log_level[] = "log_level"; -static const char __pyx_k_problem_2[] = " (problem "; static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; static const char __pyx_k_traceback[] = "traceback"; -static const char __pyx_k_with_name[] = "\" with name \""; static const char __pyx_k_ValueError[] = "ValueError"; static const char __pyx_k_bbob_biobj[] = "bbob-biobj"; -static const char __pyx_k_constraint[] = " constraint"; static const char __pyx_k_dimensions[] = "dimensions"; static const char __pyx_k_evaluation[] = "evaluation"; static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; static const char __pyx_k_suite_name[] = "suite_name"; static const char __pyx_k_ImportError[] = "ImportError"; +static const char __pyx_k_Suite_r_r_r[] = "Suite(%r, %r, %r)"; static const char __pyx_k_bbob_mixint[] = "bbob-mixint"; static const char __pyx_k_deactivated[] = "deactivated"; static const char __pyx_k_get_problem[] = "get_problem"; @@ -2150,7 +2034,7 @@ static const char __pyx_k_initialized[] = "initialized"; static const char __pyx_k_s_objective[] = "%s-objective"; static const char __pyx_k_RuntimeError[] = "RuntimeError"; static const char __pyx_k_Suite___iter[] = "Suite.__iter__"; -static const char __pyx_k_in_dimension[] = " in dimension"; +static const char __pyx_k_id_s_index_d[] = " id=%s, index=%d"; static const char __pyx_k_lower_bounds[] = "lower_bounds"; static const char __pyx_k_next_problem[] = "next_problem"; static const char __pyx_k_observe_with[] = "observe_with"; @@ -2168,48 +2052,48 @@ static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; static const char __pyx_k_bbob_constrained[] = "bbob-constrained"; static const char __pyx_k_cocoex_interface[] = "cocoex.interface"; static const char __pyx_k_initial_solution[] = "initial_solution"; -static const char __pyx_k_integer_variable[] = " integer variable"; static const char __pyx_k_bbob_biobj_mixint[] = "bbob-biobj-mixint"; static const char __pyx_k_cocoex_exceptions[] = "cocoex.exceptions"; static const char __pyx_k_known_suite_names[] = "known_suite_names"; -static const char __pyx_k_Suite_ids_line_299[] = "Suite.ids (line 299)"; +static const char __pyx_k_Suite_ids_line_297[] = "Suite.ids (line 297)"; static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; static const char __pyx_k_NotImplementedError[] = "NotImplementedError"; -static const char __pyx_k_known_suite_names_2[] = "_known_suite_names"; static const char __pyx_k_number_of_variables[] = "number_of_variables"; +static const char __pyx_k_with_d_constraint_s[] = " with %d constraint%s"; static const char __pyx_k_NoSuchSuiteException[] = "NoSuchSuiteException"; static const char __pyx_k_cython_interface_pyx[] = "cython\\interface.pyx"; static const char __pyx_k_final_target_fvalue1[] = "final_target_fvalue1"; static const char __pyx_k_number_of_objectives[] = "number_of_objectives"; -static const char __pyx_k_Known_suite_names_are[] = ".\nKnown suite names are "; static const char __pyx_k_expect_a_string_got_s[] = "expect a string, got %s"; static const char __pyx_k_number_of_constraints[] = "number_of_constraints"; static const char __pyx_k_NoSuchProblemException[] = "NoSuchProblemException"; +static const char __pyx_k_s_d_integer_variable_s[] = " %s %d integer variable%s"; static const char __pyx_k_InvalidProblemException[] = "InvalidProblemException"; static const char __pyx_k_finalized_invalid_problem[] = "finalized/invalid problem"; static const char __pyx_k_No_suite_with_name_s_found[] = "No suite with name '%s' found"; -static const char __pyx_k_Suite_get_problem_line_195[] = "Suite.get_problem (line 195)"; +static const char __pyx_k_Suite_get_problem_line_193[] = "Suite.get_problem (line 193)"; static const char __pyx_k_Problem_already_initialized[] = "Problem already initialized"; -static const char __pyx_k_Unkown_benchmark_suite_name[] = "\nUnkown benchmark suite name "; static const char __pyx_k_finalized_invalid_problem_2[] = ""; static const char __pyx_k_function_dimension_instance[] = "function: {}, dimension: {}, instance: {}"; static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous"; static const char __pyx_k_number_of_integer_variables[] = "number_of_integer_variables"; static const char __pyx_k_update_current_observer_global[] = "_update_current_observer_global"; -static const char __pyx_k_was_not_a_typo_you_can_add_the[] = " was not a typo, you can add the desired name to `known_suite_names`::\n\n >> import cocoex as ex\n >> ex.known_suite_names.append(b\"my_name\") # must be a byte string\n >> suite = ex.Suite(\"my_name\", \"\", \"\")\n COCO FATAL ERROR: coco_suite(): unknow problem suite\n\nThis will crash Python, if the suite \"my_name\" does in fact not exist. You might\nalso report back a missing name to https://github.com/numbbo/coco/issues\n"; +static const char __pyx_k_Suite_s_s_s_with_d_problem_s_in[] = "Suite(\"%s\", \"%s\", \"%s\") with %d problem%s in dimension%s %s"; +static const char __pyx_k_Unkown_benchmark_suite_name_s_K[] = "\nUnkown benchmark suite name %s.\nKnown suite names are %s.\nIf %s was not a typo, you can add the desired name to `known_suite_names`::\n\n >> import cocoex as ex\n >> ex.known_suite_names.append(b\"my_name\") # must be a byte string\n >> suite = ex.Suite(\"my_name\", \"\", \"\")\n COCO FATAL ERROR: coco_suite(): unknow problem suite\n\nThis will crash Python, if the suite \"my_name\" does in fact not exist. You might\nalso report back a missing name to https://github.com/numbbo/coco/issues\n"; static const char __pyx_k_find_problem_ids_has_been_renam[] = "`find_problem_ids()` has been renamed to `ids()`"; static const char __pyx_k_get_problem_self_id_observer_No[] = "`get_problem(self, id, observer=None)` returns a `Problem` instance,\n by default unobserved, using `id: str` or index (where `id: int`) to\n identify the desired problem.\n\n All values between zero and `len(self) - 1` are valid index values::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob-biobj\", \"\", \"\")\n >>> for index in range(len(suite)):\n ... problem = suite.get_problem(index)\n ... # work work work using problem\n ... problem.free()\n\n A shortcut for `suite.get_problem(index)` is `suite[index]`, they are\n synonym.\n\n Details:\n - Here an `index` takes values between 0 and `len(self) - 1` and can in\n principle be different from the problem index in the benchmark suite.\n\n - This call does not affect the state of the `current_problem` and\n `current_index` attributes.\n\n - For some suites and/or observers, the `free()` method of the problem\n must be called before the next call of `get_problem`. Otherwise Python\n might just silently die, which is e.g. a known issue of the \"bbob\"\n observer.\n\n See also `ids`, `get_problem_by_function_dimension_instance`.\n "; static const char __pyx_k_has_never_been_tested_incomment[] = "has never been tested, incomment this to start testing"; static const char __pyx_k_ids_id_snippets_get_problem_Fal[] = "`ids(*id_snippets, get_problem=False, verbose=False)`\n return all problem IDs that contain all of the `id_snippets`.\n\n An ID can be used for indexing, that is, when calling the method\n `get_problem(id)`.\n\n If `get_problem is True`, the problem for the first matching ID is\n returned.\n\n >>> import cocoex as ex\n >>> s = ex.Suite(\"bbob\", \"\", \"\")\n >>> s.ids(\"f001\", \"d10\", \"i01\")\n ['bbob_f001_i01_d10']\n\n We can sweep through all instances of the ellipsoidal function f10\n in 20-D of the BBOB suite like this::\n\n >>> import cocoex as ex\n >>> suite = ex.Suite(\"bbob\", \"\", \"\")\n >>> ids = suite.ids(\"f010\", \"d20\")\n >>> used_indices = []\n >>> for p in suite:\n ... if p.id in ids:\n ... # work work work with problem `p`\n ... used_indices.append(p.index)\n >>> print(used_indices)\n [1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589]\n\n A desired problem can also be filtered out during creation::\n\n >>> import cocoex as ex\n >>> f9 = ex.Suite(\"bbob\", \"\",\n ... \"function_indices:9 dimensions:20 instance_indices:1-5\")[0]\n >>> print(f9.id)\n bbob_f009_i01_d20\n\n "; static const char __pyx_k_not_match_the_problem_dimension[] = "not match the problem dimension `number_of_variables==%d`."; static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import"; +static const char __pyx_k_s_a_s_s_problem_s_s_problem_d_o[] = "%s: a %s %s problem%s%s (problem %d of suite \"%s\" with name \"%s\")"; static const char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)"; static const char __pyx_k_Dimension_np_size_x_d_of_input_x[] = "Dimension, `np.size(x)==%d`, of input `x` does "; static const char __pyx_k_Dimension_np_size_y_d_of_input_y[] = "Dimension, `np.size(y)==%d`, of input `y` does "; static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd"; static const char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported"; -static const char __pyx_k_Suite_current_index___get___line[] = "Suite.current_index.__get__ (line 352)"; -static const char __pyx_k_Suite_get_problem_by_function_di[] = "Suite.get_problem_by_function_dimension_instance (line 239)"; +static const char __pyx_k_Suite_current_index___get___line[] = "Suite.current_index.__get__ (line 350)"; +static const char __pyx_k_Suite_get_problem_by_function_di[] = "Suite.get_problem_by_function_dimension_instance (line 237)"; static const char __pyx_k_Suite_has_been_finalized_free_ed[] = "Suite has been finalized/free'ed"; static const char __pyx_k_cannot_deduce_function_id_from_s[] = "cannot deduce function id from '%s'"; static const char __pyx_k_cannot_deduce_instance_id_from_s[] = "cannot deduce instance id from '%s'"; @@ -2226,45 +2110,34 @@ static PyObject *__pyx_kp_u_Dimension_np_size_x_d_of_input_x; static PyObject *__pyx_kp_u_Dimension_np_size_y_d_of_input_y; static PyObject *__pyx_kp_u_Format_string_allocated_too_shor; static PyObject *__pyx_kp_u_Format_string_allocated_too_shor_2; -static PyObject *__pyx_kp_u_If; static PyObject *__pyx_n_s_ImportError; static PyObject *__pyx_n_s_InvalidProblemException; -static PyObject *__pyx_kp_u_Known_suite_names_are; static PyObject *__pyx_n_s_NoSuchProblemException; static PyObject *__pyx_n_s_NoSuchSuiteException; static PyObject *__pyx_kp_u_No_suite_with_name_s_found; static PyObject *__pyx_kp_u_Non_native_byte_order_not_suppor; -static PyObject *__pyx_kp_u_None; static PyObject *__pyx_n_s_NotImplementedError; static PyObject *__pyx_kp_u_Problem_already_initialized; static PyObject *__pyx_n_s_RuntimeError; -static PyObject *__pyx_kp_u_Suite; -static PyObject *__pyx_kp_u_Suite_2; static PyObject *__pyx_n_s_Suite___iter; static PyObject *__pyx_kp_u_Suite_current_index___get___line; static PyObject *__pyx_kp_u_Suite_get_problem_by_function_di; -static PyObject *__pyx_kp_u_Suite_get_problem_line_195; +static PyObject *__pyx_kp_u_Suite_get_problem_line_193; static PyObject *__pyx_kp_u_Suite_has_been_finalized_free_ed; -static PyObject *__pyx_kp_u_Suite_ids_line_299; +static PyObject *__pyx_kp_u_Suite_ids_line_297; +static PyObject *__pyx_kp_u_Suite_r_r_r; +static PyObject *__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in; static PyObject *__pyx_n_s_TypeError; -static PyObject *__pyx_kp_u_Unkown_benchmark_suite_name; +static PyObject *__pyx_kp_u_Unkown_benchmark_suite_name_s_K; static PyObject *__pyx_n_s_ValueError; static PyObject *__pyx_kp_u__10; static PyObject *__pyx_kp_u__11; -static PyObject *__pyx_kp_u__12; +static PyObject *__pyx_kp_u__13; +static PyObject *__pyx_kp_u__14; static PyObject *__pyx_kp_u__15; -static PyObject *__pyx_kp_u__17; -static PyObject *__pyx_kp_u__18; -static PyObject *__pyx_kp_u__19; +static PyObject *__pyx_kp_u__16; static PyObject *__pyx_kp_u__2; -static PyObject *__pyx_kp_u__20; -static PyObject *__pyx_n_u__27; -static PyObject *__pyx_kp_u__31; -static PyObject *__pyx_kp_u__32; -static PyObject *__pyx_kp_u__34; -static PyObject *__pyx_kp_u__8; -static PyObject *__pyx_kp_u__9; -static PyObject *__pyx_kp_u_a; +static PyObject *__pyx_n_u__23; static PyObject *__pyx_n_s_all; static PyObject *__pyx_n_u_and; static PyObject *__pyx_n_s_append; @@ -2287,10 +2160,9 @@ static PyObject *__pyx_n_s_cline_in_traceback; static PyObject *__pyx_n_s_close; static PyObject *__pyx_n_s_cocoex_exceptions; static PyObject *__pyx_n_s_cocoex_interface; -static PyObject *__pyx_kp_u_constraint; static PyObject *__pyx_n_s_copy; static PyObject *__pyx_kp_s_cython_interface_pyx; -static PyObject *__pyx_n_u_d; +static PyObject *__pyx_kp_u_d_d; static PyObject *__pyx_kp_u_d_dimensional; static PyObject *__pyx_n_u_deactivated; static PyObject *__pyx_n_s_dealloc; @@ -2322,24 +2194,19 @@ static PyObject *__pyx_n_s_getstate; static PyObject *__pyx_kp_u_has_never_been_tested_incomment; static PyObject *__pyx_n_u_i; static PyObject *__pyx_n_s_id; -static PyObject *__pyx_kp_u_id_2; -static PyObject *__pyx_kp_u_id_3; +static PyObject *__pyx_kp_u_id_s_index_d; static PyObject *__pyx_kp_u_ids_id_snippets_get_problem_Fal; static PyObject *__pyx_n_s_import; static PyObject *__pyx_kp_u_in_Problem__initialize_problem_p; -static PyObject *__pyx_kp_u_in_dimension; static PyObject *__pyx_n_s_index; -static PyObject *__pyx_kp_u_index_2; static PyObject *__pyx_kp_u_index_in_the_enumerator_of_all_p; static PyObject *__pyx_n_s_indices; static PyObject *__pyx_n_s_inf; static PyObject *__pyx_n_s_initial_solution; static PyObject *__pyx_n_u_initialized; static PyObject *__pyx_n_s_instance; -static PyObject *__pyx_kp_u_integer_variable; static PyObject *__pyx_n_s_iter; static PyObject *__pyx_n_s_known_suite_names; -static PyObject *__pyx_n_s_known_suite_names_2; static PyObject *__pyx_n_s_level; static PyObject *__pyx_n_s_level_2; static PyObject *__pyx_n_s_log_level; @@ -2365,15 +2232,12 @@ static PyObject *__pyx_kp_u_numpy_core_multiarray_failed_to; static PyObject *__pyx_kp_u_numpy_core_umath_failed_to_impor; static PyObject *__pyx_n_s_observe_with; static PyObject *__pyx_n_s_observer; -static PyObject *__pyx_kp_u_of_suite; static PyObject *__pyx_n_s_ones; static PyObject *__pyx_n_s_options; static PyObject *__pyx_n_s_order; static PyObject *__pyx_n_s_parse_id; static PyObject *__pyx_n_s_print; static PyObject *__pyx_n_u_print; -static PyObject *__pyx_kp_u_problem; -static PyObject *__pyx_kp_u_problem_2; static PyObject *__pyx_n_s_pyx_vtable; static PyObject *__pyx_n_s_rand; static PyObject *__pyx_n_s_random; @@ -2386,6 +2250,9 @@ static PyObject *__pyx_n_s_reset; static PyObject *__pyx_n_s_restart_number; static PyObject *__pyx_kp_u_returns_a_Problem_instance_by_de; static PyObject *__pyx_n_u_s; +static PyObject *__pyx_kp_u_s_a_s_s_problem_s_s_problem_d_o; +static PyObject *__pyx_kp_u_s_d_integer_variable_s; +static PyObject *__pyx_kp_u_s_id_r; static PyObject *__pyx_kp_u_s_objective; static PyObject *__pyx_n_s_send; static PyObject *__pyx_n_s_setstate; @@ -2408,12 +2275,9 @@ static PyObject *__pyx_n_s_update_current_observer_global; static PyObject *__pyx_n_s_upper_bounds; static PyObject *__pyx_n_s_verbose; static PyObject *__pyx_n_u_warning; -static PyObject *__pyx_kp_u_was_not_a_typo_you_can_add_the; static PyObject *__pyx_n_s_what; -static PyObject *__pyx_kp_u_with; -static PyObject *__pyx_kp_u_with_2; -static PyObject *__pyx_n_u_with_3; -static PyObject *__pyx_kp_u_with_name; +static PyObject *__pyx_n_u_with; +static PyObject *__pyx_kp_u_with_d_constraint_s; static PyObject *__pyx_n_s_x; static PyObject *__pyx_n_s_y; static PyObject *__pyx_n_s_zeros; @@ -2502,7 +2366,6 @@ static PyObject *__pyx_tp_new_6cocoex_9interface_Suite(PyTypeObject *t, PyObject static PyObject *__pyx_tp_new_6cocoex_9interface_Observer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_6cocoex_9interface_Problem(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_6cocoex_9interface___pyx_scope_struct____iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get = {0, &__pyx_n_s_get, 0, 0, 0}; static PyObject *__pyx_float_1_0; static PyObject *__pyx_int_0; static PyObject *__pyx_int_1; @@ -2515,35 +2378,34 @@ static PyObject *__pyx_tuple__4; static PyObject *__pyx_tuple__5; static PyObject *__pyx_tuple__6; static PyObject *__pyx_tuple__7; -static PyObject *__pyx_slice__33; -static PyObject *__pyx_tuple__13; -static PyObject *__pyx_tuple__14; -static PyObject *__pyx_tuple__16; +static PyObject *__pyx_tuple__8; +static PyObject *__pyx_tuple__9; +static PyObject *__pyx_slice__27; +static PyObject *__pyx_tuple__12; +static PyObject *__pyx_tuple__17; +static PyObject *__pyx_tuple__18; +static PyObject *__pyx_tuple__19; +static PyObject *__pyx_tuple__20; static PyObject *__pyx_tuple__21; static PyObject *__pyx_tuple__22; -static PyObject *__pyx_tuple__23; static PyObject *__pyx_tuple__24; static PyObject *__pyx_tuple__25; static PyObject *__pyx_tuple__26; static PyObject *__pyx_tuple__28; static PyObject *__pyx_tuple__29; static PyObject *__pyx_tuple__30; +static PyObject *__pyx_tuple__31; +static PyObject *__pyx_tuple__32; +static PyObject *__pyx_tuple__33; +static PyObject *__pyx_tuple__34; static PyObject *__pyx_tuple__35; static PyObject *__pyx_tuple__36; static PyObject *__pyx_tuple__37; static PyObject *__pyx_tuple__38; static PyObject *__pyx_tuple__39; -static PyObject *__pyx_tuple__40; -static PyObject *__pyx_tuple__41; -static PyObject *__pyx_tuple__42; -static PyObject *__pyx_tuple__43; -static PyObject *__pyx_tuple__44; -static PyObject *__pyx_tuple__45; -static PyObject *__pyx_tuple__46; -static PyObject *__pyx_codeobj__47; -/* Late includes */ - -/* "cython/interface.pyx":73 +static PyObject *__pyx_codeobj__40; + +/* "cython/interface.pyx":71 * void bbob_biobj_problem_best_parameter_print(const coco_problem_t *problem) * * cdef bytes _bstring(s): # <<<<<<<<<<<<<< @@ -2561,7 +2423,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("_bstring", 0); - /* "cython/interface.pyx":74 + /* "cython/interface.pyx":72 * * cdef bytes _bstring(s): * if type(s) is bytes: # <<<<<<<<<<<<<< @@ -2572,7 +2434,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":75 + /* "cython/interface.pyx":73 * cdef bytes _bstring(s): * if type(s) is bytes: * return s # <<<<<<<<<<<<<< @@ -2584,7 +2446,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { __pyx_r = ((PyObject*)__pyx_v_s); goto __pyx_L0; - /* "cython/interface.pyx":74 + /* "cython/interface.pyx":72 * * cdef bytes _bstring(s): * if type(s) is bytes: # <<<<<<<<<<<<<< @@ -2593,7 +2455,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { */ } - /* "cython/interface.pyx":76 + /* "cython/interface.pyx":74 * if type(s) is bytes: * return s * if isinstance(s, (str, unicode)): # <<<<<<<<<<<<<< @@ -2612,9 +2474,9 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { __pyx_t_2 = __pyx_t_1; __pyx_L5_bool_binop_done:; __pyx_t_1 = (__pyx_t_2 != 0); - if (likely(__pyx_t_1)) { + if (__pyx_t_1) { - /* "cython/interface.pyx":77 + /* "cython/interface.pyx":75 * return s * if isinstance(s, (str, unicode)): * return s.encode('ascii') # why not s.encode('ascii') ? # <<<<<<<<<<<<<< @@ -2622,17 +2484,17 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * raise TypeError("expect a string, got %s" % str(type(s))) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 77, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 77, __pyx_L1_error) + if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 75, __pyx_L1_error) __pyx_r = ((PyObject*)__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L0; - /* "cython/interface.pyx":76 + /* "cython/interface.pyx":74 * if type(s) is bytes: * return s * if isinstance(s, (str, unicode)): # <<<<<<<<<<<<<< @@ -2641,7 +2503,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { */ } - /* "cython/interface.pyx":79 + /* "cython/interface.pyx":77 * return s.encode('ascii') # why not s.encode('ascii') ? * else: * raise TypeError("expect a string, got %s" % str(type(s))) # <<<<<<<<<<<<<< @@ -2649,20 +2511,31 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * cdef coco_observer_t* _current_observer */ /*else*/ { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), ((PyObject *)Py_TYPE(__pyx_v_s))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_expect_a_string_got_s, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_s))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_s))); + PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)Py_TYPE(__pyx_v_s))); + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) + __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_expect_a_string_got_s, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(0, 79, __pyx_L1_error) + __PYX_ERR(0, 77, __pyx_L1_error) } - /* "cython/interface.pyx":73 + /* "cython/interface.pyx":71 * void bbob_biobj_problem_best_parameter_print(const coco_problem_t *problem) * * cdef bytes _bstring(s): # <<<<<<<<<<<<<< @@ -2682,7 +2555,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { return __pyx_r; } -/* "cython/interface.pyx":99 +/* "cython/interface.pyx":97 * cdef initialized * * def __cinit__(self, suite_name, suite_instance, suite_options): # <<<<<<<<<<<<<< @@ -2718,23 +2591,23 @@ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_suite_name)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_suite_instance)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_instance)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(0, 99, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(0, 97, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_suite_options)) != 0)) kw_args--; + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_options)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(0, 99, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(0, 97, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 99, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 97, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -2749,7 +2622,7 @@ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 99, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 97, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -2770,14 +2643,14 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("__cinit__", 0); - /* "cython/interface.pyx":101 + /* "cython/interface.pyx":99 * def __cinit__(self, suite_name, suite_instance, suite_options): * cdef np.npy_intp shape[1] # probably completely useless * self._name = _bstring(suite_name) # <<<<<<<<<<<<<< * self._instance = _bstring(suite_instance if suite_instance is not None else "") * self._options = _bstring(suite_options if suite_options is not None else "") */ - __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_suite_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) + __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_suite_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_name); @@ -2785,7 +2658,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __pyx_v_self->_name = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":102 + /* "cython/interface.pyx":100 * cdef np.npy_intp shape[1] # probably completely useless * self._name = _bstring(suite_name) * self._instance = _bstring(suite_instance if suite_instance is not None else "") # <<<<<<<<<<<<<< @@ -2800,7 +2673,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_1 = __pyx_kp_u__2; } - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_3); @@ -2809,7 +2682,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __pyx_v_self->_instance = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":103 + /* "cython/interface.pyx":101 * self._name = _bstring(suite_name) * self._instance = _bstring(suite_instance if suite_instance is not None else "") * self._options = _bstring(suite_options if suite_options is not None else "") # <<<<<<<<<<<<<< @@ -2824,7 +2697,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_3 = __pyx_kp_u__2; } - __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error) + __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_1); @@ -2833,7 +2706,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __pyx_v_self->_options = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":104 + /* "cython/interface.pyx":102 * self._instance = _bstring(suite_instance if suite_instance is not None else "") * self._options = _bstring(suite_options if suite_options is not None else "") * self._current_problem = NULL # <<<<<<<<<<<<<< @@ -2842,7 +2715,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex */ __pyx_v_self->_current_problem = NULL; - /* "cython/interface.pyx":105 + /* "cython/interface.pyx":103 * self._options = _bstring(suite_options if suite_options is not None else "") * self._current_problem = NULL * self.current_problem_ = None # <<<<<<<<<<<<<< @@ -2855,7 +2728,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_DECREF(__pyx_v_self->current_problem_); __pyx_v_self->current_problem_ = Py_None; - /* "cython/interface.pyx":106 + /* "cython/interface.pyx":104 * self._current_problem = NULL * self.current_problem_ = None * self._current_index = None # <<<<<<<<<<<<<< @@ -2868,7 +2741,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_DECREF(__pyx_v_self->_current_index); __pyx_v_self->_current_index = Py_None; - /* "cython/interface.pyx":107 + /* "cython/interface.pyx":105 * self.current_problem_ = None * self._current_index = None * self.initialized = False # <<<<<<<<<<<<<< @@ -2881,18 +2754,18 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_False; - /* "cython/interface.pyx":108 + /* "cython/interface.pyx":106 * self._current_index = None * self.initialized = False * self._initialize() # <<<<<<<<<<<<<< * assert self.initialized * cdef _initialize(self): */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Suite *)__pyx_v_self->__pyx_vtab)->_initialize(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Suite *)__pyx_v_self->__pyx_vtab)->_initialize(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":109 + /* "cython/interface.pyx":107 * self.initialized = False * self._initialize() * assert self.initialized # <<<<<<<<<<<<<< @@ -2901,15 +2774,15 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 109, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 107, __pyx_L1_error) if (unlikely(!__pyx_t_2)) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 109, __pyx_L1_error) + __PYX_ERR(0, 107, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":99 + /* "cython/interface.pyx":97 * cdef initialized * * def __cinit__(self, suite_name, suite_instance, suite_options): # <<<<<<<<<<<<<< @@ -2930,7 +2803,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex return __pyx_r; } -/* "cython/interface.pyx":110 +/* "cython/interface.pyx":108 * self._initialize() * assert self.initialized * cdef _initialize(self): # <<<<<<<<<<<<<< @@ -2952,39 +2825,38 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ Py_ssize_t __pyx_t_5; PyObject *(*__pyx_t_6)(PyObject *); int __pyx_t_7; - Py_UCS4 __pyx_t_8; + PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; + char const *__pyx_t_13; char const *__pyx_t_14; char const *__pyx_t_15; - char const *__pyx_t_16; + PyObject *__pyx_t_16 = NULL; PyObject *__pyx_t_17 = NULL; PyObject *__pyx_t_18 = NULL; - PyObject *__pyx_t_19 = NULL; - int __pyx_t_20; + int __pyx_t_19; __Pyx_RefNannySetupContext("_initialize", 0); - /* "cython/interface.pyx":118 + /* "cython/interface.pyx":116 * cdef bytes _old_level * * if self.initialized: # <<<<<<<<<<<<<< * self.reset() * self._ids = [] */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 118, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 116, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":119 + /* "cython/interface.pyx":117 * * if self.initialized: * self.reset() # <<<<<<<<<<<<<< * self._ids = [] * self._indices = [] */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 119, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -2997,16 +2869,16 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":118 + /* "cython/interface.pyx":116 * cdef bytes _old_level * * if self.initialized: # <<<<<<<<<<<<<< @@ -3015,14 +2887,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":120 + /* "cython/interface.pyx":118 * if self.initialized: * self.reset() * self._ids = [] # <<<<<<<<<<<<<< * self._indices = [] * self._names = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_ids); @@ -3030,14 +2902,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_ids = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":121 + /* "cython/interface.pyx":119 * self.reset() * self._ids = [] * self._indices = [] # <<<<<<<<<<<<<< * self._names = [] * self._dimensions = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_indices); @@ -3045,14 +2917,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_indices = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":122 + /* "cython/interface.pyx":120 * self._ids = [] * self._indices = [] * self._names = [] # <<<<<<<<<<<<<< * self._dimensions = [] * self._number_of_objectives = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_names); @@ -3060,14 +2932,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_names = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":123 + /* "cython/interface.pyx":121 * self._indices = [] * self._names = [] * self._dimensions = [] # <<<<<<<<<<<<<< * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_dimensions); @@ -3075,14 +2947,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_dimensions = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":124 + /* "cython/interface.pyx":122 * self._names = [] * self._dimensions = [] * self._number_of_objectives = [] # <<<<<<<<<<<<<< * if self._name not in [_bstring(name) for name in known_suite_names]: * raise NoSuchSuiteException(""" */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_number_of_objectives); @@ -3090,24 +2962,24 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_number_of_objectives = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":125 + /* "cython/interface.pyx":123 * self._dimensions = [] * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: # <<<<<<<<<<<<<< * raise NoSuchSuiteException(""" * Unkown benchmark suite name %s. */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { - __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 125, __pyx_L1_error) + __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error) + __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 123, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { @@ -3115,17 +2987,17 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 125, __pyx_L1_error) + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 123, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 125, __pyx_L1_error) + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 123, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } @@ -3135,7 +3007,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 125, __pyx_L1_error) + else __PYX_ERR(0, 123, __pyx_L1_error) } break; } @@ -3143,143 +3015,109 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 125, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_self->_name, __pyx_t_2, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 125, __pyx_L1_error) + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_self->_name, __pyx_t_2, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = (__pyx_t_1 != 0); - if (unlikely(__pyx_t_7)) { + if (__pyx_t_7) { - /* "cython/interface.pyx":126 + /* "cython/interface.pyx":124 * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: * raise NoSuchSuiteException(""" # <<<<<<<<<<<<<< * Unkown benchmark suite name %s. * Known suite names are %s. */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 126, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyTuple_New(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = 0; - __pyx_t_8 = 127; - __Pyx_INCREF(__pyx_kp_u_Unkown_benchmark_suite_name); - __pyx_t_5 += 29; - __Pyx_GIVEREF(__pyx_kp_u_Unkown_benchmark_suite_name); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_Unkown_benchmark_suite_name); - /* "cython/interface.pyx":138 + /* "cython/interface.pyx":136 * This will crash Python, if the suite "my_name" does in fact not exist. You might * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) # <<<<<<<<<<<<<< * try: * suite = coco_suite(self._name, self._instance, self._options) */ - __pyx_t_9 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_v_self->_name), __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_8; - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_9); - __pyx_t_9 = 0; - __Pyx_INCREF(__pyx_kp_u_Known_suite_names_are); - __pyx_t_5 += 24; - __Pyx_GIVEREF(__pyx_kp_u_Known_suite_names_are); - PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u_Known_suite_names_are); - __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_10), __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_8; - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_9); - __pyx_t_9 = 0; - __Pyx_INCREF(__pyx_kp_u_If); - __pyx_t_5 += 5; - __Pyx_GIVEREF(__pyx_kp_u_If); - PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_kp_u_If); - __pyx_t_9 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_v_self->_name), __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_8; - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_t_9); - __pyx_t_9 = 0; - __Pyx_INCREF(__pyx_kp_u_was_not_a_typo_you_can_add_the); - __pyx_t_5 += 442; - __Pyx_GIVEREF(__pyx_kp_u_was_not_a_typo_you_can_add_the); - PyTuple_SET_ITEM(__pyx_t_3, 6, __pyx_kp_u_was_not_a_typo_you_can_add_the); - - /* "cython/interface.pyx":126 - * self._number_of_objectives = [] - * if self._name not in [_bstring(name) for name in known_suite_names]: - * raise NoSuchSuiteException(""" # <<<<<<<<<<<<<< - * Unkown benchmark suite name %s. - * Known suite names are %s. - */ - __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_3, 7, __pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = NULL; + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_INCREF(__pyx_v_self->_name); + __Pyx_GIVEREF(__pyx_v_self->_name); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_self->_name); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3); + __Pyx_INCREF(__pyx_v_self->_name); + __Pyx_GIVEREF(__pyx_v_self->_name); + PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_self->_name); + __pyx_t_3 = 0; + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Unkown_benchmark_suite_name_s_K, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_3)) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } - if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (!__pyx_t_8) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_9}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_3}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_9}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_3}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { - __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_9); - __pyx_t_9 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 126, __pyx_L1_error) + __PYX_ERR(0, 124, __pyx_L1_error) - /* "cython/interface.pyx":125 + /* "cython/interface.pyx":123 * self._dimensions = [] * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: # <<<<<<<<<<<<<< @@ -3288,7 +3126,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":139 + /* "cython/interface.pyx":137 * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) * try: # <<<<<<<<<<<<<< @@ -3298,13 +3136,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); + __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); /*try:*/ { - /* "cython/interface.pyx":140 + /* "cython/interface.pyx":138 * """ % (self._name, str(known_suite_names), self._name)) * try: * suite = coco_suite(self._name, self._instance, self._options) # <<<<<<<<<<<<<< @@ -3313,22 +3151,22 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ if (unlikely(__pyx_v_self->_name == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 140, __pyx_L7_error) + __PYX_ERR(0, 138, __pyx_L7_error) } - __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 140, __pyx_L7_error) + __pyx_t_13 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 138, __pyx_L7_error) if (unlikely(__pyx_v_self->_instance == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 140, __pyx_L7_error) + __PYX_ERR(0, 138, __pyx_L7_error) } - __pyx_t_15 = __Pyx_PyBytes_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 140, __pyx_L7_error) + __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 138, __pyx_L7_error) if (unlikely(__pyx_v_self->_options == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 140, __pyx_L7_error) + __PYX_ERR(0, 138, __pyx_L7_error) } - __pyx_t_16 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_16) && PyErr_Occurred())) __PYX_ERR(0, 140, __pyx_L7_error) - __pyx_v_suite = coco_suite(__pyx_t_14, __pyx_t_15, __pyx_t_16); + __pyx_t_15 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 138, __pyx_L7_error) + __pyx_v_suite = coco_suite(__pyx_t_13, __pyx_t_14, __pyx_t_15); - /* "cython/interface.pyx":139 + /* "cython/interface.pyx":137 * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) * try: # <<<<<<<<<<<<<< @@ -3336,18 +3174,18 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * except: */ } + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; goto __pyx_L12_try_end; __pyx_L7_error:; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":141 + /* "cython/interface.pyx":139 * try: * suite = coco_suite(self._name, self._instance, self._options) * except: # <<<<<<<<<<<<<< @@ -3356,90 +3194,90 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite._initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_10) < 0) __PYX_ERR(0, 141, __pyx_L9_except_error) + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_9) < 0) __PYX_ERR(0, 139, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_10); + __Pyx_GOTREF(__pyx_t_9); - /* "cython/interface.pyx":142 + /* "cython/interface.pyx":140 * suite = coco_suite(self._name, self._instance, self._options) * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) # <<<<<<<<<<<<<< * if suite == NULL: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_17 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 142, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_17); - __pyx_t_18 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_18 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_18)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_18); + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 140, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_16 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 140, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_16); + __pyx_t_17 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_17)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_17); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); + __Pyx_DECREF_SET(__pyx_t_8, function); } } - if (!__pyx_t_18) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L9_except_error) - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __Pyx_GOTREF(__pyx_t_9); + if (!__pyx_t_17) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L9_except_error) + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_18, __pyx_t_17}; - __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L9_except_error) - __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + if (PyFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_16}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L9_except_error) + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; } else #endif #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_18, __pyx_t_17}; - __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L9_except_error) - __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_16}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L9_except_error) + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; } else #endif { - __pyx_t_19 = PyTuple_New(1+1); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 142, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_19); - __Pyx_GIVEREF(__pyx_t_18); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_18); __pyx_t_18 = NULL; - __Pyx_GIVEREF(__pyx_t_17); - PyTuple_SET_ITEM(__pyx_t_19, 0+1, __pyx_t_17); - __pyx_t_17 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_19, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; + __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 140, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_18); + __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL; + __Pyx_GIVEREF(__pyx_t_16); + PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_16); + __pyx_t_16 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_9, 0, 0, 0); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_ERR(0, 142, __pyx_L9_except_error) + __PYX_ERR(0, 140, __pyx_L9_except_error) } __pyx_L9_except_error:; - /* "cython/interface.pyx":139 + /* "cython/interface.pyx":137 * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) * try: # <<<<<<<<<<<<<< * suite = coco_suite(self._name, self._instance, self._options) * except: */ + __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); goto __pyx_L1_error; __pyx_L12_try_end:; } - /* "cython/interface.pyx":143 + /* "cython/interface.pyx":141 * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * if suite == NULL: # <<<<<<<<<<<<<< @@ -3447,70 +3285,70 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ * while True: */ __pyx_t_7 = ((__pyx_v_suite == NULL) != 0); - if (unlikely(__pyx_t_7)) { + if (__pyx_t_7) { - /* "cython/interface.pyx":144 + /* "cython/interface.pyx":142 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * if suite == NULL: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) # <<<<<<<<<<<<<< * while True: * old_level = log_level('warning') */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error) + __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = NULL; + __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_9)) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } - if (!__pyx_t_9) { - __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 144, __pyx_L1_error) + if (!__pyx_t_3) { + __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_10); + __Pyx_GOTREF(__pyx_t_9); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_2}; - __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 144, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_10); + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_2}; - __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 144, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_10); + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 144, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9); __pyx_t_9 = NULL; + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_2); __pyx_t_2 = 0; - __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 144, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_10, 0, 0, 0); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_Raise(__pyx_t_9, 0, 0, 0); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __PYX_ERR(0, 142, __pyx_L1_error) - /* "cython/interface.pyx":143 + /* "cython/interface.pyx":141 * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * if suite == NULL: # <<<<<<<<<<<<<< @@ -3519,7 +3357,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":145 + /* "cython/interface.pyx":143 * if suite == NULL: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * while True: # <<<<<<<<<<<<<< @@ -3528,22 +3366,22 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ while (1) { - /* "cython/interface.pyx":146 + /* "cython/interface.pyx":144 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * while True: * old_level = log_level('warning') # <<<<<<<<<<<<<< * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) */ - __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 146, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 146, __pyx_L1_error) + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_old_level, __pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":147 + /* "cython/interface.pyx":145 * while True: * old_level = log_level('warning') * p = coco_suite_get_next_problem(suite, NULL) # <<<<<<<<<<<<<< @@ -3552,61 +3390,61 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ __pyx_v_p = coco_suite_get_next_problem(__pyx_v_suite, NULL); - /* "cython/interface.pyx":148 + /* "cython/interface.pyx":146 * old_level = log_level('warning') * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) # <<<<<<<<<<<<<< * if not p: * break */ - __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); - __Pyx_INCREF(__pyx_t_3); + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_8 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_10, function); + __Pyx_DECREF_SET(__pyx_t_9, function); } } - if (!__pyx_t_3) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_old_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) + if (!__pyx_t_8) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_old_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 146, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_10)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_old_level}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyFunction_Check(__pyx_t_9)) { + PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_old_level}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 146, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_old_level}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { + PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_old_level}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 146, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { - __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 148, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 146, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL; __Pyx_INCREF(__pyx_v_old_level); __Pyx_GIVEREF(__pyx_v_old_level); PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_old_level); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 146, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } } - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":149 + /* "cython/interface.pyx":147 * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) * if not p: # <<<<<<<<<<<<<< @@ -3616,7 +3454,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_t_7 = ((!(__pyx_v_p != 0)) != 0); if (__pyx_t_7) { - /* "cython/interface.pyx":150 + /* "cython/interface.pyx":148 * log_level(old_level) * if not p: * break # <<<<<<<<<<<<<< @@ -3625,7 +3463,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ goto __pyx_L17_break; - /* "cython/interface.pyx":149 + /* "cython/interface.pyx":147 * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) * if not p: # <<<<<<<<<<<<<< @@ -3634,69 +3472,69 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":151 + /* "cython/interface.pyx":149 * if not p: * break * self._indices.append(coco_problem_get_suite_dep_index(p)) # <<<<<<<<<<<<<< * self._ids.append(coco_problem_get_id(p)) * self._names.append(coco_problem_get_name(p)) */ - __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_20 = __Pyx_PyObject_Append(__pyx_v_self->_indices, __pyx_t_4); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 151, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_indices, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 149, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":152 + /* "cython/interface.pyx":150 * break * self._indices.append(coco_problem_get_suite_dep_index(p)) * self._ids.append(coco_problem_get_id(p)) # <<<<<<<<<<<<<< * self._names.append(coco_problem_get_name(p)) * self._dimensions.append(coco_problem_get_dimension(p)) */ - __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 150, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_20 = __Pyx_PyObject_Append(__pyx_v_self->_ids, __pyx_t_4); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 152, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_ids, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 150, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":153 + /* "cython/interface.pyx":151 * self._indices.append(coco_problem_get_suite_dep_index(p)) * self._ids.append(coco_problem_get_id(p)) * self._names.append(coco_problem_get_name(p)) # <<<<<<<<<<<<<< * self._dimensions.append(coco_problem_get_dimension(p)) * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) */ - __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 153, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_20 = __Pyx_PyObject_Append(__pyx_v_self->_names, __pyx_t_4); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 153, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_names, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":154 + /* "cython/interface.pyx":152 * self._ids.append(coco_problem_get_id(p)) * self._names.append(coco_problem_get_name(p)) * self._dimensions.append(coco_problem_get_dimension(p)) # <<<<<<<<<<<<<< * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) * coco_suite_free(suite) */ - __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_dimension(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 154, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_dimension(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_20 = __Pyx_PyObject_Append(__pyx_v_self->_dimensions, __pyx_t_4); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 154, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_dimensions, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 152, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":155 + /* "cython/interface.pyx":153 * self._names.append(coco_problem_get_name(p)) * self._dimensions.append(coco_problem_get_dimension(p)) * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) # <<<<<<<<<<<<<< * coco_suite_free(suite) * self.suite = coco_suite(self._name, self._instance, self._options) */ - __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_number_of_objectives(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_number_of_objectives(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_20 = __Pyx_PyObject_Append(__pyx_v_self->_number_of_objectives, __pyx_t_4); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 155, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_number_of_objectives, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_L17_break:; - /* "cython/interface.pyx":156 + /* "cython/interface.pyx":154 * self._dimensions.append(coco_problem_get_dimension(p)) * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) * coco_suite_free(suite) # <<<<<<<<<<<<<< @@ -3705,7 +3543,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ coco_suite_free(__pyx_v_suite); - /* "cython/interface.pyx":157 + /* "cython/interface.pyx":155 * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) * coco_suite_free(suite) * self.suite = coco_suite(self._name, self._instance, self._options) # <<<<<<<<<<<<<< @@ -3714,22 +3552,22 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ if (unlikely(__pyx_v_self->_name == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 157, __pyx_L1_error) + __PYX_ERR(0, 155, __pyx_L1_error) } - __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 155, __pyx_L1_error) if (unlikely(__pyx_v_self->_instance == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 157, __pyx_L1_error) + __PYX_ERR(0, 155, __pyx_L1_error) } - __pyx_t_15 = __Pyx_PyBytes_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 155, __pyx_L1_error) if (unlikely(__pyx_v_self->_options == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 157, __pyx_L1_error) + __PYX_ERR(0, 155, __pyx_L1_error) } - __pyx_t_16 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_16) && PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L1_error) - __pyx_v_self->suite = coco_suite(__pyx_t_14, __pyx_t_15, __pyx_t_16); + __pyx_t_15 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 155, __pyx_L1_error) + __pyx_v_self->suite = coco_suite(__pyx_t_13, __pyx_t_14, __pyx_t_15); - /* "cython/interface.pyx":158 + /* "cython/interface.pyx":156 * coco_suite_free(suite) * self.suite = coco_suite(self._name, self._instance, self._options) * self.initialized = True # <<<<<<<<<<<<<< @@ -3742,7 +3580,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_True; - /* "cython/interface.pyx":159 + /* "cython/interface.pyx":157 * self.suite = coco_suite(self._name, self._instance, self._options) * self.initialized = True * return self # <<<<<<<<<<<<<< @@ -3754,7 +3592,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":110 + /* "cython/interface.pyx":108 * self._initialize() * assert self.initialized * cdef _initialize(self): # <<<<<<<<<<<<<< @@ -3767,11 +3605,11 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_16); __Pyx_XDECREF(__pyx_t_17); __Pyx_XDECREF(__pyx_t_18); - __Pyx_XDECREF(__pyx_t_19); __Pyx_AddTraceback("cocoex.interface.Suite._initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -3782,7 +3620,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ return __pyx_r; } -/* "cython/interface.pyx":160 +/* "cython/interface.pyx":158 * self.initialized = True * return self * def reset(self): # <<<<<<<<<<<<<< @@ -3813,7 +3651,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("reset", 0); - /* "cython/interface.pyx":163 + /* "cython/interface.pyx":161 * """reset to original state, affecting `next_problem()`, * `current_problem`, `current_index`""" * self._current_index = None # <<<<<<<<<<<<<< @@ -3826,24 +3664,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->_current_index); __pyx_v_self->_current_index = Py_None; - /* "cython/interface.pyx":164 + /* "cython/interface.pyx":162 * `current_problem`, `current_index`""" * self._current_index = None * if self.current_problem_: # <<<<<<<<<<<<<< * self.current_problem_.free() * self.current_problem_ = None */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 164, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 162, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":165 + /* "cython/interface.pyx":163 * self._current_index = None * if self.current_problem_: * self.current_problem_.free() # <<<<<<<<<<<<<< * self.current_problem_ = None * self._current_problem = NULL */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 165, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -3856,16 +3694,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 165, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 163, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 165, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 163, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":164 + /* "cython/interface.pyx":162 * `current_problem`, `current_index`""" * self._current_index = None * if self.current_problem_: # <<<<<<<<<<<<<< @@ -3874,7 +3712,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc */ } - /* "cython/interface.pyx":166 + /* "cython/interface.pyx":164 * if self.current_problem_: * self.current_problem_.free() * self.current_problem_ = None # <<<<<<<<<<<<<< @@ -3887,7 +3725,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->current_problem_); __pyx_v_self->current_problem_ = Py_None; - /* "cython/interface.pyx":167 + /* "cython/interface.pyx":165 * self.current_problem_.free() * self.current_problem_ = None * self._current_problem = NULL # <<<<<<<<<<<<<< @@ -3896,7 +3734,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc */ __pyx_v_self->_current_problem = NULL; - /* "cython/interface.pyx":160 + /* "cython/interface.pyx":158 * self.initialized = True * return self * def reset(self): # <<<<<<<<<<<<<< @@ -3919,7 +3757,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":168 +/* "cython/interface.pyx":166 * self.current_problem_ = None * self._current_problem = NULL * def next_problem(self, observer=None): # <<<<<<<<<<<<<< @@ -3952,12 +3790,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__py switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_observer); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_observer); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "next_problem") < 0)) __PYX_ERR(0, 168, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "next_problem") < 0)) __PYX_ERR(0, 166, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3971,7 +3809,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("next_problem", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 168, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("next_problem", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 166, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.next_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -3999,31 +3837,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("next_problem", 0); - /* "cython/interface.pyx":176 + /* "cython/interface.pyx":174 * cdef size_t index * global _current_observer * if not self.initialized: # <<<<<<<<<<<<<< * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 176, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 174, __pyx_L1_error) __pyx_t_2 = ((!__pyx_t_1) != 0); - if (unlikely(__pyx_t_2)) { + if (__pyx_t_2) { - /* "cython/interface.pyx":177 + /* "cython/interface.pyx":175 * global _current_observer * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * if self.current_problem_: * self.current_problem_.free() */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 177, __pyx_L1_error) + __PYX_ERR(0, 175, __pyx_L1_error) - /* "cython/interface.pyx":176 + /* "cython/interface.pyx":174 * cdef size_t index * global _current_observer * if not self.initialized: # <<<<<<<<<<<<<< @@ -4032,24 +3870,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ } - /* "cython/interface.pyx":178 + /* "cython/interface.pyx":176 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: # <<<<<<<<<<<<<< * self.current_problem_.free() * if self._current_index is None: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 178, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 176, __pyx_L1_error) if (__pyx_t_2) { - /* "cython/interface.pyx":179 + /* "cython/interface.pyx":177 * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: * self.current_problem_.free() # <<<<<<<<<<<<<< * if self._current_index is None: * self._current_index = -1 */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { @@ -4062,16 +3900,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o } } if (__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":178 + /* "cython/interface.pyx":176 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: # <<<<<<<<<<<<<< @@ -4080,7 +3918,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ } - /* "cython/interface.pyx":180 + /* "cython/interface.pyx":178 * if self.current_problem_: * self.current_problem_.free() * if self._current_index is None: # <<<<<<<<<<<<<< @@ -4091,7 +3929,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":181 + /* "cython/interface.pyx":179 * self.current_problem_.free() * if self._current_index is None: * self._current_index = -1 # <<<<<<<<<<<<<< @@ -4104,7 +3942,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __Pyx_DECREF(__pyx_v_self->_current_index); __pyx_v_self->_current_index = __pyx_int_neg_1; - /* "cython/interface.pyx":180 + /* "cython/interface.pyx":178 * if self.current_problem_: * self.current_problem_.free() * if self._current_index is None: # <<<<<<<<<<<<<< @@ -4113,14 +3951,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ } - /* "cython/interface.pyx":182 + /* "cython/interface.pyx":180 * if self._current_index is None: * self._current_index = -1 * self._current_index += 1 # <<<<<<<<<<<<<< * if self._current_index >= len(self): * self._current_problem = NULL */ - __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_current_index, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 182, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_current_index, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_current_index); @@ -4128,23 +3966,23 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_v_self->_current_index = __pyx_t_3; __pyx_t_3 = 0; - /* "cython/interface.pyx":183 + /* "cython/interface.pyx":181 * self._current_index = -1 * self._current_index += 1 * if self._current_index >= len(self): # <<<<<<<<<<<<<< * self._current_problem = NULL * self.current_problem_ = None */ - __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 183, __pyx_L1_error) - __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 183, __pyx_L1_error) + __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 181, __pyx_L1_error) + __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->_current_index, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 183, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->_current_index, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 183, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_1) { - /* "cython/interface.pyx":184 + /* "cython/interface.pyx":182 * self._current_index += 1 * if self._current_index >= len(self): * self._current_problem = NULL # <<<<<<<<<<<<<< @@ -4153,7 +3991,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ __pyx_v_self->_current_problem = NULL; - /* "cython/interface.pyx":185 + /* "cython/interface.pyx":183 * if self._current_index >= len(self): * self._current_problem = NULL * self.current_problem_ = None # <<<<<<<<<<<<<< @@ -4166,7 +4004,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __Pyx_DECREF(__pyx_v_self->current_problem_); __pyx_v_self->current_problem_ = Py_None; - /* "cython/interface.pyx":183 + /* "cython/interface.pyx":181 * self._current_index = -1 * self._current_index += 1 * if self._current_index >= len(self): # <<<<<<<<<<<<<< @@ -4176,7 +4014,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o goto __pyx_L6; } - /* "cython/interface.pyx":188 + /* "cython/interface.pyx":186 * # self._current_index = -1 # or use reset? * else: * index = self.indices[self._current_index] # "conversion" to size_t # <<<<<<<<<<<<<< @@ -4184,16 +4022,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * self.suite, index) */ /*else*/ { - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 188, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_v_self->_current_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 188, __pyx_L1_error) + __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_v_self->_current_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 188, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 186, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_index = __pyx_t_7; - /* "cython/interface.pyx":189 + /* "cython/interface.pyx":187 * else: * index = self.indices[self._current_index] # "conversion" to size_t * self._current_problem = coco_suite_get_problem( # <<<<<<<<<<<<<< @@ -4202,7 +4040,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ __pyx_v_self->_current_problem = coco_suite_get_problem(__pyx_v_self->suite, __pyx_v_index); - /* "cython/interface.pyx":192 + /* "cython/interface.pyx":190 * self.suite, index) * self.current_problem_ = Problem_init(self._current_problem, * True, self._name) # <<<<<<<<<<<<<< @@ -4212,7 +4050,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_3 = __pyx_v_self->_name; __Pyx_INCREF(__pyx_t_3); - /* "cython/interface.pyx":191 + /* "cython/interface.pyx":189 * self._current_problem = coco_suite_get_problem( * self.suite, index) * self.current_problem_ = Problem_init(self._current_problem, # <<<<<<<<<<<<<< @@ -4222,7 +4060,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_8.__pyx_n = 2; __pyx_t_8.free = Py_True; __pyx_t_8.suite_name = __pyx_t_3; - __pyx_t_4 = __pyx_f_6cocoex_9interface_Problem_init(__pyx_v_self->_current_problem, &__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error) + __pyx_t_4 = __pyx_f_6cocoex_9interface_Problem_init(__pyx_v_self->_current_problem, &__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_4); @@ -4231,14 +4069,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_v_self->current_problem_ = __pyx_t_4; __pyx_t_4 = 0; - /* "cython/interface.pyx":193 + /* "cython/interface.pyx":191 * self.current_problem_ = Problem_init(self._current_problem, * True, self._name) * self.current_problem_.observe_with(observer) # <<<<<<<<<<<<<< * return self.current_problem_ * def get_problem(self, id, observer=None): */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -4251,13 +4089,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o } } if (!__pyx_t_5) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else @@ -4265,19 +4103,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 193, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -4287,7 +4125,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o } __pyx_L6:; - /* "cython/interface.pyx":194 + /* "cython/interface.pyx":192 * True, self._name) * self.current_problem_.observe_with(observer) * return self.current_problem_ # <<<<<<<<<<<<<< @@ -4299,7 +4137,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_r = __pyx_v_self->current_problem_; goto __pyx_L0; - /* "cython/interface.pyx":168 + /* "cython/interface.pyx":166 * self.current_problem_ = None * self._current_problem = NULL * def next_problem(self, observer=None): # <<<<<<<<<<<<<< @@ -4321,7 +4159,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":195 +/* "cython/interface.pyx":193 * self.current_problem_.observe_with(observer) * return self.current_problem_ * def get_problem(self, id, observer=None): # <<<<<<<<<<<<<< @@ -4356,17 +4194,17 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_id)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_id)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_observer); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_observer); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem") < 0)) __PYX_ERR(0, 195, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem") < 0)) __PYX_ERR(0, 193, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -4382,7 +4220,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_problem", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 195, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 193, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -4418,31 +4256,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob PyObject *__pyx_t_17 = NULL; __Pyx_RefNannySetupContext("get_problem", 0); - /* "cython/interface.pyx":226 + /* "cython/interface.pyx":224 * See also `ids`, `get_problem_by_function_dimension_instance`. * """ * if not self.initialized: # <<<<<<<<<<<<<< * raise ValueError("Suite has been finalized/free'ed") * index = id */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 226, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 224, __pyx_L1_error) __pyx_t_2 = ((!__pyx_t_1) != 0); - if (unlikely(__pyx_t_2)) { + if (__pyx_t_2) { - /* "cython/interface.pyx":227 + /* "cython/interface.pyx":225 * """ * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * index = id * try: */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 227, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 227, __pyx_L1_error) + __PYX_ERR(0, 225, __pyx_L1_error) - /* "cython/interface.pyx":226 + /* "cython/interface.pyx":224 * See also `ids`, `get_problem_by_function_dimension_instance`. * """ * if not self.initialized: # <<<<<<<<<<<<<< @@ -4451,7 +4289,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ } - /* "cython/interface.pyx":228 + /* "cython/interface.pyx":226 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * index = id # <<<<<<<<<<<<<< @@ -4461,7 +4299,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_INCREF(__pyx_v_id); __pyx_v_index = __pyx_v_id; - /* "cython/interface.pyx":229 + /* "cython/interface.pyx":227 * raise ValueError("Suite has been finalized/free'ed") * index = id * try: # <<<<<<<<<<<<<< @@ -4477,23 +4315,23 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XGOTREF(__pyx_t_6); /*try:*/ { - /* "cython/interface.pyx":230 + /* "cython/interface.pyx":228 * index = id * try: * 1 / (id == int(id)) # int(id) might raise an exception # <<<<<<<<<<<<<< * except: * index = self._ids.index(id) */ - __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L4_error) + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 228, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = PyObject_RichCompare(__pyx_v_id, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 230, __pyx_L4_error) + __pyx_t_7 = PyObject_RichCompare(__pyx_v_id, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 228, __pyx_L4_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L4_error) + __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 228, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":229 + /* "cython/interface.pyx":227 * raise ValueError("Suite has been finalized/free'ed") * index = id * try: # <<<<<<<<<<<<<< @@ -4509,7 +4347,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":231 + /* "cython/interface.pyx":229 * try: * 1 / (id == int(id)) # int(id) might raise an exception * except: # <<<<<<<<<<<<<< @@ -4518,19 +4356,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 231, __pyx_L6_except_error) + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 229, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_8); - /* "cython/interface.pyx":232 + /* "cython/interface.pyx":230 * 1 / (id == int(id)) # int(id) might raise an exception * except: * index = self._ids.index(id) # <<<<<<<<<<<<<< * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), */ - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ids, __pyx_n_s_index); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 232, __pyx_L6_except_error) + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ids, __pyx_n_s_index); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 230, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { @@ -4543,13 +4381,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } } if (!__pyx_t_11) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 232, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 230, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_9); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_v_id}; - __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 232, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 230, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_9); } else @@ -4557,19 +4395,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_v_id}; - __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 232, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 230, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_9); } else #endif { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 232, __pyx_L6_except_error) + __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 230, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL; __Pyx_INCREF(__pyx_v_id); __Pyx_GIVEREF(__pyx_v_id); PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_id); - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 232, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 230, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } @@ -4584,7 +4422,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } __pyx_L6_except_error:; - /* "cython/interface.pyx":229 + /* "cython/interface.pyx":227 * raise ValueError("Suite has been finalized/free'ed") * index = id * try: # <<<<<<<<<<<<<< @@ -4604,7 +4442,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_L9_try_end:; } - /* "cython/interface.pyx":233 + /* "cython/interface.pyx":231 * except: * index = self._ids.index(id) * try: # <<<<<<<<<<<<<< @@ -4620,7 +4458,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { - /* "cython/interface.pyx":234 + /* "cython/interface.pyx":232 * index = self._ids.index(id) * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< @@ -4629,27 +4467,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ __Pyx_XDECREF(__pyx_r); - /* "cython/interface.pyx":235 + /* "cython/interface.pyx":233 * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< * except: * raise NoSuchProblemException(self.name, str(id)) */ - __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_self->_indices, __pyx_v_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 234, __pyx_L12_error) + __pyx_t_7 = PyObject_GetItem(__pyx_v_self->_indices, __pyx_v_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 232, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_7); - /* "cython/interface.pyx":234 + /* "cython/interface.pyx":232 * index = self._ids.index(id) * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< * True, self._name).observe_with(observer) * except: */ - __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_7); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 234, __pyx_L12_error) + __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_7); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 232, __pyx_L12_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":235 + /* "cython/interface.pyx":233 * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< @@ -4659,7 +4497,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_7 = __pyx_v_self->_name; __Pyx_INCREF(__pyx_t_7); - /* "cython/interface.pyx":234 + /* "cython/interface.pyx":232 * index = self._ids.index(id) * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< @@ -4669,18 +4507,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_14.__pyx_n = 2; __pyx_t_14.free = Py_True; __pyx_t_14.suite_name = __pyx_t_7; - __pyx_t_3 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem(__pyx_v_self->suite, __pyx_t_13), &__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L12_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem(__pyx_v_self->suite, __pyx_t_13), &__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 232, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":235 + /* "cython/interface.pyx":233 * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< * except: * raise NoSuchProblemException(self.name, str(id)) */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 235, __pyx_L12_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 233, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; @@ -4694,13 +4532,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } } if (!__pyx_t_3) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_observer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 235, __pyx_L12_error) + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_observer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 233, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_8); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 235, __pyx_L12_error) + __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 233, __pyx_L12_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_8); } else @@ -4708,19 +4546,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 235, __pyx_L12_error) + __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 233, __pyx_L12_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_8); } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 235, __pyx_L12_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 233, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 235, __pyx_L12_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 233, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -4730,7 +4568,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_8 = 0; goto __pyx_L16_try_return; - /* "cython/interface.pyx":233 + /* "cython/interface.pyx":231 * except: * index = self._ids.index(id) * try: # <<<<<<<<<<<<<< @@ -4747,7 +4585,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "cython/interface.pyx":236 + /* "cython/interface.pyx":234 * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) * except: # <<<<<<<<<<<<<< @@ -4756,31 +4594,37 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(0, 236, __pyx_L14_except_error) + if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(0, 234, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_9); - /* "cython/interface.pyx":237 + /* "cython/interface.pyx":235 * True, self._name).observe_with(observer) * except: * raise NoSuchProblemException(self.name, str(id)) # <<<<<<<<<<<<<< * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): */ - __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 237, __pyx_L14_except_error) + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 235, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 237, __pyx_L14_except_error) + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 235, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_12); - __pyx_t_11 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_id); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 237, __pyx_L14_except_error) + __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 235, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_11); - __pyx_t_15 = NULL; + __Pyx_INCREF(__pyx_v_id); + __Pyx_GIVEREF(__pyx_v_id); + PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_id); + __pyx_t_15 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 235, __pyx_L14_except_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; __pyx_t_16 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { - __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_10); - if (likely(__pyx_t_15)) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); - __Pyx_INCREF(__pyx_t_15); + __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); __pyx_t_16 = 1; @@ -4788,48 +4632,48 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { - PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_12, __pyx_t_11}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L14_except_error) - __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_12, __pyx_t_15}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 235, __pyx_L14_except_error) + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { - PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_12, __pyx_t_11}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L14_except_error) - __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_12, __pyx_t_15}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 235, __pyx_L14_except_error) + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } else #endif { - __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 237, __pyx_L14_except_error) + __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 235, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_17); - if (__pyx_t_15) { - __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_15); __pyx_t_15 = NULL; + if (__pyx_t_11) { + __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_11); __pyx_t_11 = NULL; } __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_16, __pyx_t_12); - __Pyx_GIVEREF(__pyx_t_11); - PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_t_11); + __Pyx_GIVEREF(__pyx_t_15); + PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_t_15); __pyx_t_12 = 0; - __pyx_t_11 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L14_except_error) + __pyx_t_15 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 235, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 237, __pyx_L14_except_error) + __PYX_ERR(0, 235, __pyx_L14_except_error) } __pyx_L14_except_error:; - /* "cython/interface.pyx":233 + /* "cython/interface.pyx":231 * except: * index = self._ids.index(id) * try: # <<<<<<<<<<<<<< @@ -4849,7 +4693,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob goto __pyx_L0; } - /* "cython/interface.pyx":195 + /* "cython/interface.pyx":193 * self.current_problem_.observe_with(observer) * return self.current_problem_ * def get_problem(self, id, observer=None): # <<<<<<<<<<<<<< @@ -4877,7 +4721,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":239 +/* "cython/interface.pyx":237 * raise NoSuchProblemException(self.name, str(id)) * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): # <<<<<<<<<<<<<< @@ -4918,29 +4762,29 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_function)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_function)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dimension)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimension)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 1); __PYX_ERR(0, 239, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 1); __PYX_ERR(0, 237, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_instance)) != 0)) kw_args--; + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_instance)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 2); __PYX_ERR(0, 239, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 2); __PYX_ERR(0, 237, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_observer); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_observer); if (value) { values[3] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem_by_function_dimension_instance") < 0)) __PYX_ERR(0, 239, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem_by_function_dimension_instance") < 0)) __PYX_ERR(0, 237, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -4960,7 +4804,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 239, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 237, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.get_problem_by_function_dimension_instance", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -4999,61 +4843,61 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim PyObject *__pyx_t_18 = NULL; __Pyx_RefNannySetupContext("get_problem_by_function_dimension_instance", 0); - /* "cython/interface.pyx":263 + /* "cython/interface.pyx":261 * just silently die, which is e.g. a known issue of the "bbob" observer. * """ * cdef size_t _function = function # "conversion" to size_t # <<<<<<<<<<<<<< * cdef size_t _dimension = dimension # "conversion" to size_t * cdef size_t _instance = instance # "conversion" to size_t */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_function); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 263, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_function); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 261, __pyx_L1_error) __pyx_v__function = __pyx_t_1; - /* "cython/interface.pyx":264 + /* "cython/interface.pyx":262 * """ * cdef size_t _function = function # "conversion" to size_t * cdef size_t _dimension = dimension # "conversion" to size_t # <<<<<<<<<<<<<< * cdef size_t _instance = instance # "conversion" to size_t * */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_dimension); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 264, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_dimension); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 262, __pyx_L1_error) __pyx_v__dimension = __pyx_t_1; - /* "cython/interface.pyx":265 + /* "cython/interface.pyx":263 * cdef size_t _function = function # "conversion" to size_t * cdef size_t _dimension = dimension # "conversion" to size_t * cdef size_t _instance = instance # "conversion" to size_t # <<<<<<<<<<<<<< * * if not self.initialized: */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_instance); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 265, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_instance); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 263, __pyx_L1_error) __pyx_v__instance = __pyx_t_1; - /* "cython/interface.pyx":267 + /* "cython/interface.pyx":265 * cdef size_t _instance = instance # "conversion" to size_t * * if not self.initialized: # <<<<<<<<<<<<<< * raise ValueError("Suite has been finalized/free'ed") * try: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 267, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 265, __pyx_L1_error) __pyx_t_3 = ((!__pyx_t_2) != 0); - if (unlikely(__pyx_t_3)) { + if (__pyx_t_3) { - /* "cython/interface.pyx":268 + /* "cython/interface.pyx":266 * * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, */ - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 268, __pyx_L1_error) + __PYX_ERR(0, 266, __pyx_L1_error) - /* "cython/interface.pyx":267 + /* "cython/interface.pyx":265 * cdef size_t _instance = instance # "conversion" to size_t * * if not self.initialized: # <<<<<<<<<<<<<< @@ -5062,7 +4906,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ } - /* "cython/interface.pyx":269 + /* "cython/interface.pyx":267 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * try: # <<<<<<<<<<<<<< @@ -5078,7 +4922,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_XGOTREF(__pyx_t_7); /*try:*/ { - /* "cython/interface.pyx":270 + /* "cython/interface.pyx":268 * raise ValueError("Suite has been finalized/free'ed") * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, # <<<<<<<<<<<<<< @@ -5087,7 +4931,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ __Pyx_XDECREF(__pyx_r); - /* "cython/interface.pyx":272 + /* "cython/interface.pyx":270 * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, * _dimension, _instance), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< @@ -5097,7 +4941,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_8 = __pyx_v_self->_name; __Pyx_INCREF(__pyx_t_8); - /* "cython/interface.pyx":270 + /* "cython/interface.pyx":268 * raise ValueError("Suite has been finalized/free'ed") * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, # <<<<<<<<<<<<<< @@ -5107,18 +4951,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_10.__pyx_n = 2; __pyx_t_10.free = Py_True; __pyx_t_10.suite_name = __pyx_t_8; - __pyx_t_9 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem_by_function_dimension_instance(__pyx_v_self->suite, __pyx_v__function, __pyx_v__dimension, __pyx_v__instance), &__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 270, __pyx_L4_error) + __pyx_t_9 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem_by_function_dimension_instance(__pyx_v_self->suite, __pyx_v__function, __pyx_v__dimension, __pyx_v__instance), &__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 268, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "cython/interface.pyx":272 + /* "cython/interface.pyx":270 * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, * _dimension, _instance), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< * except: * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 272, __pyx_L4_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 270, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; @@ -5132,13 +4976,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim } } if (!__pyx_t_9) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L4_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_4); } else @@ -5146,19 +4990,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L4_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 272, __pyx_L4_error) + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 270, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_observer); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } @@ -5168,7 +5012,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_4 = 0; goto __pyx_L8_try_return; - /* "cython/interface.pyx":269 + /* "cython/interface.pyx":267 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * try: # <<<<<<<<<<<<<< @@ -5182,7 +5026,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":273 + /* "cython/interface.pyx":271 * _dimension, _instance), * True, self._name).observe_with(observer) * except: # <<<<<<<<<<<<<< @@ -5191,26 +5035,26 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem_by_function_dimension_instance", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_11) < 0) __PYX_ERR(0, 273, __pyx_L6_except_error) + if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_11) < 0) __PYX_ERR(0, 271, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_11); - /* "cython/interface.pyx":274 + /* "cython/interface.pyx":272 * True, self._name).observe_with(observer) * except: * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, # <<<<<<<<<<<<<< * dimension, * instance)) */ - __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 274, __pyx_L6_except_error) + __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 272, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_12); - __pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 274, __pyx_L6_except_error) + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 272, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_13); - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_function_dimension_instance, __pyx_n_s_format); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 274, __pyx_L6_except_error) + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_function_dimension_instance, __pyx_n_s_format); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 272, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_15); - /* "cython/interface.pyx":276 + /* "cython/interface.pyx":274 * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, * dimension, * instance)) # <<<<<<<<<<<<<< @@ -5232,7 +5076,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[4] = {__pyx_t_16, __pyx_v_function, __pyx_v_dimension, __pyx_v_instance}; - __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 274, __pyx_L6_except_error) + __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 272, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_14); } else @@ -5240,13 +5084,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[4] = {__pyx_t_16, __pyx_v_function, __pyx_v_dimension, __pyx_v_instance}; - __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 274, __pyx_L6_except_error) + __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 272, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_14); } else #endif { - __pyx_t_18 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 274, __pyx_L6_except_error) + __pyx_t_18 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 272, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_18); if (__pyx_t_16) { __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_16); __pyx_t_16 = NULL; @@ -5260,7 +5104,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_INCREF(__pyx_v_instance); __Pyx_GIVEREF(__pyx_v_instance); PyTuple_SET_ITEM(__pyx_t_18, 2+__pyx_t_17, __pyx_v_instance); - __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_18, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 274, __pyx_L6_except_error) + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_18, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 272, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } @@ -5280,7 +5124,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_13, __pyx_t_14}; - __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 274, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 272, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -5290,7 +5134,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_13, __pyx_t_14}; - __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 274, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 272, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -5298,7 +5142,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim } else #endif { - __pyx_t_18 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 274, __pyx_L6_except_error) + __pyx_t_18 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 272, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_18); if (__pyx_t_15) { __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_15); __pyx_t_15 = NULL; @@ -5309,18 +5153,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_t_14); __pyx_t_13 = 0; __pyx_t_14 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_18, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 274, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_18, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 272, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_ERR(0, 274, __pyx_L6_except_error) + __PYX_ERR(0, 272, __pyx_L6_except_error) } __pyx_L6_except_error:; - /* "cython/interface.pyx":269 + /* "cython/interface.pyx":267 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * try: # <<<<<<<<<<<<<< @@ -5340,7 +5184,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim goto __pyx_L0; } - /* "cython/interface.pyx":239 + /* "cython/interface.pyx":237 * raise NoSuchProblemException(self.name, str(id)) * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): # <<<<<<<<<<<<<< @@ -5368,7 +5212,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim return __pyx_r; } -/* "cython/interface.pyx":278 +/* "cython/interface.pyx":276 * instance)) * * def __getitem__(self, key): # <<<<<<<<<<<<<< @@ -5402,7 +5246,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("__getitem__", 0); - /* "cython/interface.pyx":281 + /* "cython/interface.pyx":279 * """`self[i]` is a synonym for `self.get_problem(i)`, see `get_problem` * """ * return self.get_problem(key) # <<<<<<<<<<<<<< @@ -5410,7 +5254,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o * def free(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 281, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -5423,13 +5267,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_key}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -5437,19 +5281,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_key}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 281, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_key); __Pyx_GIVEREF(__pyx_v_key); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_key); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } @@ -5459,7 +5303,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":278 + /* "cython/interface.pyx":276 * instance)) * * def __getitem__(self, key): # <<<<<<<<<<<<<< @@ -5481,7 +5325,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":283 +/* "cython/interface.pyx":281 * return self.get_problem(key) * * def free(self): # <<<<<<<<<<<<<< @@ -5509,7 +5353,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc int __pyx_t_1; __Pyx_RefNannySetupContext("free", 0); - /* "cython/interface.pyx":285 + /* "cython/interface.pyx":283 * def free(self): * """free underlying C structures""" * if self.suite: # for some reason __dealloc__ cannot be called here # <<<<<<<<<<<<<< @@ -5519,7 +5363,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc __pyx_t_1 = (__pyx_v_self->suite != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":286 + /* "cython/interface.pyx":284 * """free underlying C structures""" * if self.suite: # for some reason __dealloc__ cannot be called here * coco_suite_free(self.suite) # <<<<<<<<<<<<<< @@ -5528,7 +5372,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc */ coco_suite_free(__pyx_v_self->suite); - /* "cython/interface.pyx":285 + /* "cython/interface.pyx":283 * def free(self): * """free underlying C structures""" * if self.suite: # for some reason __dealloc__ cannot be called here # <<<<<<<<<<<<<< @@ -5537,7 +5381,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc */ } - /* "cython/interface.pyx":287 + /* "cython/interface.pyx":285 * if self.suite: # for some reason __dealloc__ cannot be called here * coco_suite_free(self.suite) * self.suite = NULL # <<<<<<<<<<<<<< @@ -5546,7 +5390,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc */ __pyx_v_self->suite = NULL; - /* "cython/interface.pyx":288 + /* "cython/interface.pyx":286 * coco_suite_free(self.suite) * self.suite = NULL * self.initialized = False # not (yet) visible from outside # <<<<<<<<<<<<<< @@ -5559,7 +5403,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_False; - /* "cython/interface.pyx":283 + /* "cython/interface.pyx":281 * return self.get_problem(key) * * def free(self): # <<<<<<<<<<<<<< @@ -5574,7 +5418,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":289 +/* "cython/interface.pyx":287 * self.suite = NULL * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -5598,7 +5442,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c int __pyx_t_1; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "cython/interface.pyx":290 + /* "cython/interface.pyx":288 * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): * if self.suite: # <<<<<<<<<<<<<< @@ -5608,7 +5452,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c __pyx_t_1 = (__pyx_v_self->suite != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":291 + /* "cython/interface.pyx":289 * def __dealloc__(self): * if self.suite: * coco_suite_free(self.suite) # <<<<<<<<<<<<<< @@ -5617,7 +5461,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c */ coco_suite_free(__pyx_v_self->suite); - /* "cython/interface.pyx":290 + /* "cython/interface.pyx":288 * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): * if self.suite: # <<<<<<<<<<<<<< @@ -5626,7 +5470,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c */ } - /* "cython/interface.pyx":289 + /* "cython/interface.pyx":287 * self.suite = NULL * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -5638,7 +5482,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c __Pyx_RefNannyFinishContext(); } -/* "cython/interface.pyx":293 +/* "cython/interface.pyx":291 * coco_suite_free(self.suite) * * def find_problem_ids(self, *args, **kwargs): # <<<<<<<<<<<<<< @@ -5673,20 +5517,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(CYTHON_UN PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("find_problem_ids", 0); - /* "cython/interface.pyx":295 + /* "cython/interface.pyx":293 * def find_problem_ids(self, *args, **kwargs): * """has been renamed to `ids`""" * raise NotImplementedError( # <<<<<<<<<<<<<< * "`find_problem_ids()` has been renamed to `ids()`") * */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 295, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 295, __pyx_L1_error) + __PYX_ERR(0, 293, __pyx_L1_error) - /* "cython/interface.pyx":293 + /* "cython/interface.pyx":291 * coco_suite_free(self.suite) * * def find_problem_ids(self, *args, **kwargs): # <<<<<<<<<<<<<< @@ -5704,7 +5548,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(CYTHON_UN return __pyx_r; } -/* "cython/interface.pyx":299 +/* "cython/interface.pyx":297 * * * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< @@ -5748,12 +5592,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self if (kw_args > 0 && likely(kw_args <= 2)) { Py_ssize_t index; for (index = 0; index < 2 && kw_args > 0; index++) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, *__pyx_pyargnames[index]); + PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]); if (value) { values[index] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "ids") < 0)) __PYX_ERR(0, 299, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "ids") < 0)) __PYX_ERR(0, 297, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) < 0) { goto __pyx_L5_argtuple_error; @@ -5764,7 +5608,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("ids", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 299, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("ids", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 297, __pyx_L3_error) __pyx_L3_error:; __Pyx_DECREF(__pyx_v_id_snippets); __pyx_v_id_snippets = 0; __Pyx_AddTraceback("cocoex.interface.Suite.ids", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -5798,23 +5642,22 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; int __pyx_t_12; - Py_UCS4 __pyx_t_13; - int __pyx_t_14; + int __pyx_t_13; __Pyx_RefNannySetupContext("ids", 0); - /* "cython/interface.pyx":337 + /* "cython/interface.pyx":335 * * """ * res = [] # <<<<<<<<<<<<<< * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_res = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":338 + /* "cython/interface.pyx":336 * """ * res = [] * for idx, id in enumerate(self._ids): # <<<<<<<<<<<<<< @@ -5827,26 +5670,26 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_2 = __pyx_v_self->_ids; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 336, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 336, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 336, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } @@ -5856,7 +5699,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 338, __pyx_L1_error) + else __PYX_ERR(0, 336, __pyx_L1_error) } break; } @@ -5866,33 +5709,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_5 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_1); - __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; __pyx_t_5 = 0; - /* "cython/interface.pyx":339 + /* "cython/interface.pyx":337 * res = [] * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): # <<<<<<<<<<<<<< * if verbose: * print(" id=%s, index=%d" % (id, idx)) */ - __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __pyx_v_id_snippets; __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0; for (;;) { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 337, __pyx_L1_error) #else - __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_8); __pyx_t_8 = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_id, __pyx_n_s_find); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_id, __pyx_n_s_find); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { @@ -5905,13 +5748,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco } } if (!__pyx_t_10) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_i); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_i); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_v_i}; - __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_8); } else @@ -5919,89 +5762,81 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_v_i}; - __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_8); } else #endif { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL; __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_i); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 339, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_all, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 339, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_12) { - /* "cython/interface.pyx":340 + /* "cython/interface.pyx":338 * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): * if verbose: # <<<<<<<<<<<<<< * print(" id=%s, index=%d" % (id, idx)) * res.append(id) */ - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_verbose); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_verbose); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 338, __pyx_L1_error) if (__pyx_t_12) { - /* "cython/interface.pyx":341 + /* "cython/interface.pyx":339 * if all([id.find(i) >= 0 for i in id_snippets]): * if verbose: * print(" id=%s, index=%d" % (id, idx)) # <<<<<<<<<<<<<< * res.append(id) * if get_problem: */ - __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = 0; - __pyx_t_13 = 127; - __Pyx_INCREF(__pyx_kp_u_id_2); - __pyx_t_7 += 5; - __Pyx_GIVEREF(__pyx_kp_u_id_2); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_id_2); - __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_v_id), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_13; - __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); - __pyx_t_5 = 0; - __Pyx_INCREF(__pyx_kp_u_index_2); - __pyx_t_7 += 8; - __Pyx_GIVEREF(__pyx_kp_u_index_2); - PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u_index_2); - __pyx_t_5 = __Pyx_PyObject_Format(__pyx_v_idx, __pyx_n_u_d); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 341, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_13 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_13) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_13; - __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_6, 4, __pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 341, __pyx_L1_error) + __Pyx_INCREF(__pyx_v_id); + __Pyx_GIVEREF(__pyx_v_id); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_id); + __Pyx_INCREF(__pyx_v_idx); + __Pyx_GIVEREF(__pyx_v_idx); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_idx); + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_id_s_index_d, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 339, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 341, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":340 + /* "cython/interface.pyx":338 * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): * if verbose: # <<<<<<<<<<<<<< @@ -6010,16 +5845,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco */ } - /* "cython/interface.pyx":342 + /* "cython/interface.pyx":340 * if verbose: * print(" id=%s, index=%d" % (id, idx)) * res.append(id) # <<<<<<<<<<<<<< * if get_problem: * return self.get_problem(res[0]) */ - __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_res, __pyx_v_id); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 342, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_res, __pyx_v_id); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 340, __pyx_L1_error) - /* "cython/interface.pyx":339 + /* "cython/interface.pyx":337 * res = [] * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): # <<<<<<<<<<<<<< @@ -6028,7 +5863,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco */ } - /* "cython/interface.pyx":338 + /* "cython/interface.pyx":336 * """ * res = [] * for idx, id in enumerate(self._ids): # <<<<<<<<<<<<<< @@ -6039,17 +5874,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":343 + /* "cython/interface.pyx":341 * print(" id=%s, index=%d" % (id, idx)) * res.append(id) * if get_problem: # <<<<<<<<<<<<<< * return self.get_problem(res[0]) * return res */ - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_get_problem); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 343, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_get_problem); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 341, __pyx_L1_error) if (__pyx_t_12) { - /* "cython/interface.pyx":344 + /* "cython/interface.pyx":342 * res.append(id) * if get_problem: * return self.get_problem(res[0]) # <<<<<<<<<<<<<< @@ -6057,9 +5892,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 344, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 344, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -6072,14 +5907,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco } } if (!__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -6088,20 +5923,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 344, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6); __pyx_t_6 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -6111,7 +5946,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":343 + /* "cython/interface.pyx":341 * print(" id=%s, index=%d" % (id, idx)) * res.append(id) * if get_problem: # <<<<<<<<<<<<<< @@ -6120,7 +5955,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco */ } - /* "cython/interface.pyx":345 + /* "cython/interface.pyx":343 * if get_problem: * return self.get_problem(res[0]) * return res # <<<<<<<<<<<<<< @@ -6132,7 +5967,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_r = __pyx_v_res; goto __pyx_L0; - /* "cython/interface.pyx":299 + /* "cython/interface.pyx":297 * * * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< @@ -6162,7 +5997,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco return __pyx_r; } -/* "cython/interface.pyx":348 +/* "cython/interface.pyx":346 * * @property * def current_problem(self): # <<<<<<<<<<<<<< @@ -6188,7 +6023,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(st __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":350 + /* "cython/interface.pyx":348 * def current_problem(self): * """current "open/active" problem to be benchmarked""" * return self.current_problem_ # <<<<<<<<<<<<<< @@ -6200,7 +6035,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(st __pyx_r = __pyx_v_self->current_problem_; goto __pyx_L0; - /* "cython/interface.pyx":348 + /* "cython/interface.pyx":346 * * @property * def current_problem(self): # <<<<<<<<<<<<<< @@ -6215,7 +6050,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(st return __pyx_r; } -/* "cython/interface.pyx":352 +/* "cython/interface.pyx":350 * return self.current_problem_ * @property * def current_index(self): # <<<<<<<<<<<<<< @@ -6241,7 +6076,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(stru __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":368 + /* "cython/interface.pyx":366 * * """ * return self._current_index # <<<<<<<<<<<<<< @@ -6253,7 +6088,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(stru __pyx_r = __pyx_v_self->_current_index; goto __pyx_L0; - /* "cython/interface.pyx":352 + /* "cython/interface.pyx":350 * return self.current_problem_ * @property * def current_index(self): # <<<<<<<<<<<<<< @@ -6268,7 +6103,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(stru return __pyx_r; } -/* "cython/interface.pyx":370 +/* "cython/interface.pyx":368 * return self._current_index * @property * def problem_names(self): # <<<<<<<<<<<<<< @@ -6295,7 +6130,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":372 + /* "cython/interface.pyx":370 * def problem_names(self): * """list of problem names in this `Suite`, see also `ids`""" * return list(self._names) # <<<<<<<<<<<<<< @@ -6303,13 +6138,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru * def dimensions(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PySequence_List(__pyx_v_self->_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error) + __pyx_t_1 = PySequence_List(__pyx_v_self->_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":370 + /* "cython/interface.pyx":368 * return self._current_index * @property * def problem_names(self): # <<<<<<<<<<<<<< @@ -6328,7 +6163,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru return __pyx_r; } -/* "cython/interface.pyx":374 +/* "cython/interface.pyx":372 * return list(self._names) * @property * def dimensions(self): # <<<<<<<<<<<<<< @@ -6358,7 +6193,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct int __pyx_t_4; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":376 + /* "cython/interface.pyx":374 * def dimensions(self): * """list of problem dimensions occuring at least once in this `Suite`""" * return sorted(set(self._dimensions)) # <<<<<<<<<<<<<< @@ -6366,19 +6201,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct * def number_of_objectives(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PySet_New(__pyx_v_self->_dimensions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 376, __pyx_L1_error) + __pyx_t_2 = PySet_New(__pyx_v_self->_dimensions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 376, __pyx_L1_error) + __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 376, __pyx_L1_error) + __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 374, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":374 + /* "cython/interface.pyx":372 * return list(self._names) * @property * def dimensions(self): # <<<<<<<<<<<<<< @@ -6399,7 +6234,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct return __pyx_r; } -/* "cython/interface.pyx":378 +/* "cython/interface.pyx":376 * return sorted(set(self._dimensions)) * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -6429,7 +6264,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get int __pyx_t_4; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":380 + /* "cython/interface.pyx":378 * def number_of_objectives(self): * """list of number of objectives occuring in this `Suite`""" * return sorted(set(self._number_of_objectives)) # <<<<<<<<<<<<<< @@ -6437,19 +6272,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get * def indices(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PySet_New(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 380, __pyx_L1_error) + __pyx_t_2 = PySet_New(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 380, __pyx_L1_error) + __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 380, __pyx_L1_error) + __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 378, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":378 + /* "cython/interface.pyx":376 * return sorted(set(self._dimensions)) * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -6470,7 +6305,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get return __pyx_r; } -/* "cython/interface.pyx":382 +/* "cython/interface.pyx":380 * return sorted(set(self._number_of_objectives)) * @property * def indices(self): # <<<<<<<<<<<<<< @@ -6497,7 +6332,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":388 + /* "cython/interface.pyx":386 * Indices used in the Python interface run between 0 and `len(self)`. * """ * return list(self._indices) # <<<<<<<<<<<<<< @@ -6505,13 +6340,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py * def name(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PySequence_List(__pyx_v_self->_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 388, __pyx_L1_error) + __pyx_t_1 = PySequence_List(__pyx_v_self->_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":382 + /* "cython/interface.pyx":380 * return sorted(set(self._number_of_objectives)) * @property * def indices(self): # <<<<<<<<<<<<<< @@ -6530,7 +6365,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":390 +/* "cython/interface.pyx":388 * return list(self._indices) * @property * def name(self): # <<<<<<<<<<<<<< @@ -6556,7 +6391,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_o __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":392 + /* "cython/interface.pyx":390 * def name(self): * """see __init__.py""" * return self._name # <<<<<<<<<<<<<< @@ -6568,7 +6403,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_o __pyx_r = __pyx_v_self->_name; goto __pyx_L0; - /* "cython/interface.pyx":390 + /* "cython/interface.pyx":388 * return list(self._indices) * @property * def name(self): # <<<<<<<<<<<<<< @@ -6583,7 +6418,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":394 +/* "cython/interface.pyx":392 * return self._name * @property * def instance(self): # <<<<<<<<<<<<<< @@ -6609,7 +6444,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __p __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":397 + /* "cython/interface.pyx":395 * """instance of this suite as used to instantiate the suite via * `Suite(name, instance, ...)`""" * return self._instance # <<<<<<<<<<<<<< @@ -6621,7 +6456,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __p __pyx_r = __pyx_v_self->_instance; goto __pyx_L0; - /* "cython/interface.pyx":394 + /* "cython/interface.pyx":392 * return self._name * @property * def instance(self): # <<<<<<<<<<<<<< @@ -6636,7 +6471,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __p return __pyx_r; } -/* "cython/interface.pyx":399 +/* "cython/interface.pyx":397 * return self._instance * @property * def options(self): # <<<<<<<<<<<<<< @@ -6662,7 +6497,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":402 + /* "cython/interface.pyx":400 * """options for this suite as used to instantiate the suite via * `Suite(name, instance, options)`""" * return self._options # <<<<<<<<<<<<<< @@ -6674,7 +6509,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __py __pyx_r = __pyx_v_self->_options; goto __pyx_L0; - /* "cython/interface.pyx":399 + /* "cython/interface.pyx":397 * return self._instance * @property * def options(self): # <<<<<<<<<<<<<< @@ -6689,7 +6524,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":405 +/* "cython/interface.pyx":403 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -6714,9 +6549,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":406 + /* "cython/interface.pyx":404 * @property * def info(self): * return str(self) # <<<<<<<<<<<<<< @@ -6724,13 +6560,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 406, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 404, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 404, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":405 + /* "cython/interface.pyx":403 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -6741,6 +6583,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cocoex.interface.Suite.info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -6749,7 +6592,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":407 +/* "cython/interface.pyx":405 * def info(self): * return str(self) * def __repr__(self): # <<<<<<<<<<<<<< @@ -6774,13 +6617,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - Py_UCS4 __pyx_t_3; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("__repr__", 0); - /* "cython/interface.pyx":408 + /* "cython/interface.pyx":406 * return str(self) * def __repr__(self): * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets # <<<<<<<<<<<<<< @@ -6788,64 +6630,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 408, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = 0; - __pyx_t_3 = 127; - __Pyx_INCREF(__pyx_kp_u_Suite); - __pyx_t_2 += 6; - __Pyx_GIVEREF(__pyx_kp_u_Suite); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Suite); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 408, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; - __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5); - __pyx_t_5 = 0; - __Pyx_INCREF(__pyx_kp_u__8); - __pyx_t_2 += 2; - __Pyx_GIVEREF(__pyx_kp_u__8); - PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__8); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 408, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_5), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; - __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4); - __pyx_t_4 = 0; - __Pyx_INCREF(__pyx_kp_u__8); - __pyx_t_2 += 2; - __Pyx_GIVEREF(__pyx_kp_u__8); - PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u__8); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 406, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 406, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 408, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_t_3 = 0; + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Suite_r_r_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 406, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; - __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_5); - __pyx_t_5 = 0; - __Pyx_INCREF(__pyx_kp_u__9); - __pyx_t_2 += 1; - __Pyx_GIVEREF(__pyx_kp_u__9); - PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u__9); - __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 7, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 408, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_5; - __pyx_t_5 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":407 + /* "cython/interface.pyx":405 * def info(self): * return str(self) * def __repr__(self): # <<<<<<<<<<<<<< @@ -6856,8 +6665,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cocoex.interface.Suite.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -6866,7 +6676,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ return __pyx_r; } -/* "cython/interface.pyx":409 +/* "cython/interface.pyx":407 * def __repr__(self): * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets * def __str__(self): # <<<<<<<<<<<<<< @@ -6891,16 +6701,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - Py_UCS4 __pyx_t_3; - PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; PyObject *__pyx_t_5 = NULL; - Py_ssize_t __pyx_t_6; - Py_UCS4 __pyx_t_7; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; __Pyx_RefNannySetupContext("__str__", 0); - /* "cython/interface.pyx":410 + /* "cython/interface.pyx":408 * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets * def __str__(self): * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ # <<<<<<<<<<<<<< @@ -6908,200 +6720,136 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 * len(self), '' if len(self) == 1 else 's', */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(14); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 410, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = 0; - __pyx_t_3 = 127; - __Pyx_INCREF(__pyx_kp_u_Suite_2); - __pyx_t_2 += 7; - __Pyx_GIVEREF(__pyx_kp_u_Suite_2); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Suite_2); - /* "cython/interface.pyx":411 + /* "cython/interface.pyx":409 * def __str__(self): * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ * % (self.name, self.instance, self.options, # <<<<<<<<<<<<<< * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 411, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; - __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5); - __pyx_t_5 = 0; - __Pyx_INCREF(__pyx_kp_u__10); - __pyx_t_2 += 4; - __Pyx_GIVEREF(__pyx_kp_u__10); - PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__10); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 411, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_5), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; - __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4); - __pyx_t_4 = 0; - __Pyx_INCREF(__pyx_kp_u__10); - __pyx_t_2 += 4; - __Pyx_GIVEREF(__pyx_kp_u__10); - PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u__10); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 411, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; - __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_5); - __pyx_t_5 = 0; - __Pyx_INCREF(__pyx_kp_u_with); - __pyx_t_2 += 8; - __Pyx_GIVEREF(__pyx_kp_u_with); - PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u_with); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 409, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 409, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 409, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); - /* "cython/interface.pyx":412 + /* "cython/interface.pyx":410 * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ * % (self.name, self.instance, self.options, * len(self), '' if len(self) == 1 else 's', # <<<<<<<<<<<<<< * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) */ - __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 412, __pyx_L1_error) - __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_6, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 410, __pyx_L1_error) + __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_t_5); - __pyx_t_5 = 0; - __Pyx_INCREF(__pyx_kp_u_problem); - __pyx_t_2 += 8; - __Pyx_GIVEREF(__pyx_kp_u_problem); - PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_kp_u_problem); - __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 412, __pyx_L1_error) - if (((__pyx_t_6 == 1) != 0)) { + __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 410, __pyx_L1_error) + if (((__pyx_t_4 == 1) != 0)) { __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_5 = __pyx_kp_u__2; + __pyx_t_6 = __pyx_kp_u__2; } else { __Pyx_INCREF(__pyx_n_u_s); - __pyx_t_5 = __pyx_n_u_s; + __pyx_t_6 = __pyx_n_u_s; } - __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 412, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; - __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_1, 9, __pyx_t_4); - __pyx_t_4 = 0; - __Pyx_INCREF(__pyx_kp_u_in_dimension); - __pyx_t_2 += 13; - __Pyx_GIVEREF(__pyx_kp_u_in_dimension); - PyTuple_SET_ITEM(__pyx_t_1, 10, __pyx_kp_u_in_dimension); - /* "cython/interface.pyx":413 + /* "cython/interface.pyx":411 * % (self.name, self.instance, self.options, * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', # <<<<<<<<<<<<<< * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 413, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 413, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (((__pyx_t_6 == 1) != 0)) { + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 411, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_4 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 411, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (((__pyx_t_4 == 1) != 0)) { __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_4 = __pyx_kp_u__2; + __pyx_t_7 = __pyx_kp_u__2; } else { __Pyx_INCREF(__pyx_n_u_s); - __pyx_t_4 = __pyx_n_u_s; + __pyx_t_7 = __pyx_n_u_s; } - __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 413, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; - __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_1, 11, __pyx_t_5); - __pyx_t_5 = 0; - __Pyx_INCREF(__pyx_kp_u__11); - __pyx_t_2 += 1; - __Pyx_GIVEREF(__pyx_kp_u__11); - PyTuple_SET_ITEM(__pyx_t_1, 12, __pyx_kp_u__11); - /* "cython/interface.pyx":414 + /* "cython/interface.pyx":412 * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) # <<<<<<<<<<<<<< * def __len__(self): * return len(self._indices) */ - __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 414, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = 0; - __pyx_t_7 = 127; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 414, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_8, __pyx_n_u_d); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); - __pyx_t_4 = 0; - __Pyx_INCREF(__pyx_kp_u__12); - __pyx_t_6 += 1; - __Pyx_GIVEREF(__pyx_kp_u__12); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_kp_u__12); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 414, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 412, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); + __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_min, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_8, __pyx_n_u_d); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; - __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_1, 13, __pyx_t_4); - __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 412, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 412, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); + __pyx_t_9 = 0; + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 412, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 412, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); + __pyx_t_8 = 0; + __pyx_t_9 = 0; + __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 412, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - /* "cython/interface.pyx":410 - * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets + /* "cython/interface.pyx":409 * def __str__(self): - * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ # <<<<<<<<<<<<<< - * % (self.name, self.instance, self.options, + * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ + * % (self.name, self.instance, self.options, # <<<<<<<<<<<<<< * len(self), '' if len(self) == 1 else 's', + * '' if len(self.dimensions) == 1 else 's', */ - __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 14, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 410, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; + __pyx_t_10 = PyTuple_New(7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 409, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_10, 4, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_10, 5, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_10, 6, __pyx_t_9); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_t_3 = 0; + __pyx_t_5 = 0; + __pyx_t_6 = 0; + __pyx_t_7 = 0; + __pyx_t_9 = 0; + __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 409, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_r = __pyx_t_9; + __pyx_t_9 = 0; goto __pyx_L0; - /* "cython/interface.pyx":409 + /* "cython/interface.pyx":407 * def __repr__(self): * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets * def __str__(self): # <<<<<<<<<<<<<< @@ -7112,9 +6860,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("cocoex.interface.Suite.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -7123,7 +6876,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 return __pyx_r; } -/* "cython/interface.pyx":415 +/* "cython/interface.pyx":413 * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): # <<<<<<<<<<<<<< @@ -7151,7 +6904,7 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ Py_ssize_t __pyx_t_2; __Pyx_RefNannySetupContext("__len__", 0); - /* "cython/interface.pyx":416 + /* "cython/interface.pyx":414 * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): * return len(self._indices) # <<<<<<<<<<<<<< @@ -7160,12 +6913,12 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ */ __pyx_t_1 = __pyx_v_self->_indices; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 416, __pyx_L1_error) + __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 414, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; goto __pyx_L0; - /* "cython/interface.pyx":415 + /* "cython/interface.pyx":413 * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): # <<<<<<<<<<<<<< @@ -7184,7 +6937,7 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ } static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ -/* "cython/interface.pyx":418 +/* "cython/interface.pyx":416 * return len(self._indices) * * def __iter__(self): # <<<<<<<<<<<<<< @@ -7218,7 +6971,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_ if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)Py_None); __Pyx_INCREF(Py_None); - __PYX_ERR(0, 418, __pyx_L1_error) + __PYX_ERR(0, 416, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } @@ -7226,7 +6979,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_ __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); { - __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6cocoex_9interface_5Suite_28generator, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_Suite___iter, __pyx_n_s_cocoex_interface); if (unlikely(!gen)) __PYX_ERR(0, 418, __pyx_L1_error) + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6cocoex_9interface_5Suite_28generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_Suite___iter, __pyx_n_s_cocoex_interface); if (unlikely(!gen)) __PYX_ERR(0, 416, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; @@ -7257,8 +7010,8 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO PyObject *__pyx_t_9 = NULL; int __pyx_t_10; int __pyx_t_11; - PyObject *__pyx_t_12 = NULL; - int __pyx_t_13; + int __pyx_t_12; + PyObject *__pyx_t_13 = NULL; int __pyx_t_14; char const *__pyx_t_15; PyObject *__pyx_t_16 = NULL; @@ -7272,9 +7025,9 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO return NULL; } __pyx_L3_first_run:; - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 418, __pyx_L1_error) + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 416, __pyx_L1_error) - /* "cython/interface.pyx":425 + /* "cython/interface.pyx":423 * rewinds the suite to the initial state. """ * if 1 < 3: * s = self # <<<<<<<<<<<<<< @@ -7285,14 +7038,14 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); __pyx_cur_scope->__pyx_v_s = __pyx_cur_scope->__pyx_v_self; - /* "cython/interface.pyx":426 + /* "cython/interface.pyx":424 * if 1 < 3: * s = self * s.reset() # <<<<<<<<<<<<<< * else: * s = Suite(self.name, self.instance, self.options) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_reset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 426, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_reset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -7305,16 +7058,16 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 424, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 424, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":429 + /* "cython/interface.pyx":427 * else: * s = Suite(self.name, self.instance, self.options) * try: # <<<<<<<<<<<<<< @@ -7329,7 +7082,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XGOTREF(__pyx_t_6); /*try:*/ { - /* "cython/interface.pyx":430 + /* "cython/interface.pyx":428 * s = Suite(self.name, self.instance, self.options) * try: * while True: # <<<<<<<<<<<<<< @@ -7338,7 +7091,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ while (1) { - /* "cython/interface.pyx":431 + /* "cython/interface.pyx":429 * try: * while True: * try: # <<<<<<<<<<<<<< @@ -7352,14 +7105,14 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XGOTREF(__pyx_t_9); /*try:*/ { - /* "cython/interface.pyx":432 + /* "cython/interface.pyx":430 * while True: * try: * problem = s.next_problem() # <<<<<<<<<<<<<< * if problem is None: * return # StopIteration is deprecated */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_next_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 432, __pyx_L15_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_next_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 430, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -7372,10 +7125,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L15_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 430, __pyx_L15_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L15_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 430, __pyx_L15_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -7384,7 +7137,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":433 + /* "cython/interface.pyx":431 * try: * problem = s.next_problem() * if problem is None: # <<<<<<<<<<<<<< @@ -7395,7 +7148,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_11 = (__pyx_t_10 != 0); if (__pyx_t_11) { - /* "cython/interface.pyx":434 + /* "cython/interface.pyx":432 * problem = s.next_problem() * if problem is None: * return # StopIteration is deprecated # <<<<<<<<<<<<<< @@ -7406,7 +7159,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_r = NULL; goto __pyx_L19_try_return; - /* "cython/interface.pyx":433 + /* "cython/interface.pyx":431 * try: * problem = s.next_problem() * if problem is None: # <<<<<<<<<<<<<< @@ -7415,7 +7168,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ } - /* "cython/interface.pyx":431 + /* "cython/interface.pyx":429 * try: * while True: * try: # <<<<<<<<<<<<<< @@ -7432,28 +7185,25 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":436 + /* "cython/interface.pyx":434 * return # StopIteration is deprecated * raise StopIteration * except NoSuchProblemException: # <<<<<<<<<<<<<< * return # StopIteration is deprecated * raise StopIteration */ - __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 436, __pyx_L17_except_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_13 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_12); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3); - __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; - if (__pyx_t_13) { + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 434, __pyx_L17_except_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_12) { __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 436, __pyx_L17_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 434, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GOTREF(__pyx_t_3); - /* "cython/interface.pyx":437 + /* "cython/interface.pyx":435 * raise StopIteration * except NoSuchProblemException: * return # StopIteration is deprecated # <<<<<<<<<<<<<< @@ -7470,7 +7220,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO goto __pyx_L17_except_error; __pyx_L17_except_error:; - /* "cython/interface.pyx":431 + /* "cython/interface.pyx":429 * try: * while True: * try: # <<<<<<<<<<<<<< @@ -7497,7 +7247,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_L22_try_end:; } - /* "cython/interface.pyx":439 + /* "cython/interface.pyx":437 * return # StopIteration is deprecated * raise StopIteration * yield problem # <<<<<<<<<<<<<< @@ -7528,10 +7278,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_6 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_6); - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 439, __pyx_L7_error) + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 437, __pyx_L7_error) } - /* "cython/interface.pyx":429 + /* "cython/interface.pyx":427 * else: * s = Suite(self.name, self.instance, self.options) * try: # <<<<<<<<<<<<<< @@ -7544,12 +7294,11 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L12_try_end; __pyx_L7_error:; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":440 + /* "cython/interface.pyx":438 * raise StopIteration * yield problem * except: # <<<<<<<<<<<<<< @@ -7558,28 +7307,28 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 440, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 438, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GOTREF(__pyx_t_1); - /* "cython/interface.pyx":441 + /* "cython/interface.pyx":439 * yield problem * except: * raise # <<<<<<<<<<<<<< * finally: # makes this ctrl-c safe, at least it should * s is self or s.free() */ - __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_2, __pyx_t_3); - __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; - __PYX_ERR(0, 441, __pyx_L9_except_error) + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_1); + __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; + __PYX_ERR(0, 439, __pyx_L9_except_error) } __pyx_L9_except_error:; - /* "cython/interface.pyx":429 + /* "cython/interface.pyx":427 * else: * s = Suite(self.name, self.instance, self.options) * try: # <<<<<<<<<<<<<< @@ -7601,7 +7350,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } - /* "cython/interface.pyx":443 + /* "cython/interface.pyx":441 * raise * finally: # makes this ctrl-c safe, at least it should * s is self or s.free() # <<<<<<<<<<<<<< @@ -7613,47 +7362,46 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); if (!__pyx_t_11) { } else { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __pyx_t_2; + __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L29_bool_binop_done; } - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 443, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_12 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_12)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_12); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); + __Pyx_DECREF_SET(__pyx_t_3, function); } } - if (__pyx_t_12) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (__pyx_t_13) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = __pyx_t_2; + __pyx_t_1 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_L29_bool_binop_done:; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L6; } __pyx_L5_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_6); @@ -7662,42 +7410,42 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_7); - __pyx_t_13 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename; + __pyx_t_12 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename; { __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); if (!__pyx_t_11) { } else { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L32_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L32_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __pyx_t_2; + __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L33_bool_binop_done; } - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 443, __pyx_L32_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_12 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_12)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_12); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L32_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); + __Pyx_DECREF_SET(__pyx_t_3, function); } } - if (__pyx_t_12) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L32_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (__pyx_t_13) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L32_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L32_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L32_error) } __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = __pyx_t_2; + __pyx_t_1 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_L33_bool_binop_done:; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_9); @@ -7710,7 +7458,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ErrRestore(__pyx_t_6, __pyx_t_5, __pyx_t_4); __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; - __pyx_lineno = __pyx_t_13; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15; + __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15; goto __pyx_L1_error; __pyx_L32_error:; if (PY_MAJOR_VERSION >= 3) { @@ -7741,37 +7489,37 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); if (!__pyx_t_11) { } else { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __pyx_t_2; + __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L35_bool_binop_done; } - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 443, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_12 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_12)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_12); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); + __Pyx_DECREF_SET(__pyx_t_3, function); } } - if (__pyx_t_12) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (__pyx_t_13) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = __pyx_t_2; + __pyx_t_1 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_L35_bool_binop_done:; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_16; __pyx_t_16 = 0; if (PY_MAJOR_VERSION >= 3) { @@ -7791,7 +7539,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); - /* "cython/interface.pyx":418 + /* "cython/interface.pyx":416 * return len(self._indices) * * def __iter__(self): # <<<<<<<<<<<<<< @@ -7806,7 +7554,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); __Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; @@ -7848,7 +7596,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_29__reduce_cython__(CYTHON_U * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -7901,7 +7649,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_31__setstate_cython__(CYTHON * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -7924,7 +7672,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_31__setstate_cython__(CYTHON return __pyx_r; } -/* "cython/interface.pyx":452 +/* "cython/interface.pyx":450 * cdef _state * * def __cinit__(self, name, options): # <<<<<<<<<<<<<< @@ -7957,17 +7705,17 @@ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_se kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(0, 452, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(0, 450, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 452, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 450, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -7980,7 +7728,7 @@ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_se } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 452, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 450, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Observer.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -8012,7 +7760,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_RefNannySetupContext("__cinit__", 0); __Pyx_INCREF(__pyx_v_options); - /* "cython/interface.pyx":453 + /* "cython/interface.pyx":451 * * def __cinit__(self, name, options): * if isinstance(options, dict): # <<<<<<<<<<<<<< @@ -8023,51 +7771,57 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":454 + /* "cython/interface.pyx":452 * def __cinit__(self, name, options): * if isinstance(options, dict): * s = str(options).replace(',', ' ') # <<<<<<<<<<<<<< * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') */ - __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_replace); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 454, __pyx_L1_error) + __Pyx_INCREF(__pyx_v_options); + __Pyx_GIVEREF(__pyx_v_options); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_options); + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_s = __pyx_t_3; - __pyx_t_3 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 452, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_s = __pyx_t_4; + __pyx_t_4 = 0; - /* "cython/interface.pyx":455 + /* "cython/interface.pyx":453 * if isinstance(options, dict): * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: # <<<<<<<<<<<<<< * s = s.replace(c, '') * options = s */ - __pyx_t_3 = __pyx_tuple__21; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0; + __pyx_t_4 = __pyx_tuple__17; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; for (;;) { if (__pyx_t_5 >= 6) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 455, __pyx_L1_error) + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 453, __pyx_L1_error) #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 455, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); #endif - __Pyx_XDECREF_SET(__pyx_v_c, ((PyObject*)__pyx_t_4)); - __pyx_t_4 = 0; + __Pyx_XDECREF_SET(__pyx_v_c, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; - /* "cython/interface.pyx":456 + /* "cython/interface.pyx":454 * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') # <<<<<<<<<<<<<< * options = s * self._name = _bstring(name) */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 456, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; @@ -8084,21 +7838,21 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_c, __pyx_kp_u__2}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 456, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); + __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_c, __pyx_kp_u__2}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 456, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); + __Pyx_GOTREF(__pyx_t_3); } else #endif { - __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 456, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; @@ -8109,15 +7863,15 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_INCREF(__pyx_kp_u__2); __Pyx_GIVEREF(__pyx_kp_u__2); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_kp_u__2); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 456, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_4); - __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_3); + __pyx_t_3 = 0; - /* "cython/interface.pyx":455 + /* "cython/interface.pyx":453 * if isinstance(options, dict): * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: # <<<<<<<<<<<<<< @@ -8125,9 +7879,9 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc * options = s */ } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":457 + /* "cython/interface.pyx":455 * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') * options = s # <<<<<<<<<<<<<< @@ -8137,7 +7891,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_INCREF(__pyx_v_s); __Pyx_DECREF_SET(__pyx_v_options, __pyx_v_s); - /* "cython/interface.pyx":453 + /* "cython/interface.pyx":451 * * def __cinit__(self, name, options): * if isinstance(options, dict): # <<<<<<<<<<<<<< @@ -8146,22 +7900,22 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc */ } - /* "cython/interface.pyx":458 + /* "cython/interface.pyx":456 * s = s.replace(c, '') * options = s * self._name = _bstring(name) # <<<<<<<<<<<<<< * self._options = _bstring(options if options is not None else "") * self._observer = coco_observer(self._name, self._options) */ - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 458, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_4 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 456, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->_name); __Pyx_DECREF(__pyx_v_self->_name); - __pyx_v_self->_name = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_v_self->_name = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; - /* "cython/interface.pyx":459 + /* "cython/interface.pyx":457 * options = s * self._name = _bstring(name) * self._options = _bstring(options if options is not None else "") # <<<<<<<<<<<<<< @@ -8171,21 +7925,21 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __pyx_t_2 = (__pyx_v_options != Py_None); if ((__pyx_t_2 != 0)) { __Pyx_INCREF(__pyx_v_options); - __pyx_t_3 = __pyx_v_options; + __pyx_t_4 = __pyx_v_options; } else { __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_3 = __pyx_kp_u__2; + __pyx_t_4 = __pyx_kp_u__2; } - __pyx_t_4 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 459, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GIVEREF(__pyx_t_4); + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_options); __Pyx_DECREF(__pyx_v_self->_options); - __pyx_v_self->_options = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; + __pyx_v_self->_options = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; - /* "cython/interface.pyx":460 + /* "cython/interface.pyx":458 * self._name = _bstring(name) * self._options = _bstring(options if options is not None else "") * self._observer = coco_observer(self._name, self._options) # <<<<<<<<<<<<<< @@ -8194,17 +7948,17 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc */ if (unlikely(__pyx_v_self->_name == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 460, __pyx_L1_error) + __PYX_ERR(0, 458, __pyx_L1_error) } - __pyx_t_10 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 460, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 458, __pyx_L1_error) if (unlikely(__pyx_v_self->_options == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 460, __pyx_L1_error) + __PYX_ERR(0, 458, __pyx_L1_error) } - __pyx_t_11 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 460, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 458, __pyx_L1_error) __pyx_v_self->_observer = coco_observer(__pyx_t_10, __pyx_t_11); - /* "cython/interface.pyx":461 + /* "cython/interface.pyx":459 * self._options = _bstring(options if options is not None else "") * self._observer = coco_observer(self._name, self._options) * self._state = 'initialized' # <<<<<<<<<<<<<< @@ -8217,7 +7971,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->_state); __pyx_v_self->_state = __pyx_n_u_initialized; - /* "cython/interface.pyx":452 + /* "cython/interface.pyx":450 * cdef _state * * def __cinit__(self, name, options): # <<<<<<<<<<<<<< @@ -8244,7 +7998,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":463 +/* "cython/interface.pyx":461 * self._state = 'initialized' * * def _update_current_observer_global(self): # <<<<<<<<<<<<<< @@ -8272,7 +8026,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer coco_observer_t *__pyx_t_1; __Pyx_RefNannySetupContext("_update_current_observer_global", 0); - /* "cython/interface.pyx":467 + /* "cython/interface.pyx":465 * for purely technical reasons""" * global _current_observer * _current_observer = self._observer # <<<<<<<<<<<<<< @@ -8282,7 +8036,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer __pyx_t_1 = __pyx_v_self->_observer; __pyx_v_6cocoex_9interface__current_observer = __pyx_t_1; - /* "cython/interface.pyx":463 + /* "cython/interface.pyx":461 * self._state = 'initialized' * * def _update_current_observer_global(self): # <<<<<<<<<<<<<< @@ -8297,7 +8051,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer return __pyx_r; } -/* "cython/interface.pyx":469 +/* "cython/interface.pyx":467 * _current_observer = self._observer * * def observe(self, problem): # <<<<<<<<<<<<<< @@ -8328,14 +8082,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("observe", 0); - /* "cython/interface.pyx":473 + /* "cython/interface.pyx":471 * calling `problem.observe_with(self)`. * """ * problem.observe_with(self) # <<<<<<<<<<<<<< * return self * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 473, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -8348,13 +8102,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -8362,19 +8116,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } @@ -8382,7 +8136,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":474 + /* "cython/interface.pyx":472 * """ * problem.observe_with(self) * return self # <<<<<<<<<<<<<< @@ -8394,7 +8148,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":469 + /* "cython/interface.pyx":467 * _current_observer = self._observer * * def observe(self, problem): # <<<<<<<<<<<<<< @@ -8416,7 +8170,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj return __pyx_r; } -/* "cython/interface.pyx":477 +/* "cython/interface.pyx":475 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -8442,7 +8196,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":481 + /* "cython/interface.pyx":479 * `self` before. * """ * return self._name # <<<<<<<<<<<<<< @@ -8454,7 +8208,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __py __pyx_r = __pyx_v_self->_name; goto __pyx_L0; - /* "cython/interface.pyx":477 + /* "cython/interface.pyx":475 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -8469,7 +8223,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":483 +/* "cython/interface.pyx":481 * return self._name * @property * def options(self): # <<<<<<<<<<<<<< @@ -8495,7 +8249,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct _ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":484 + /* "cython/interface.pyx":482 * @property * def options(self): * return self._options # <<<<<<<<<<<<<< @@ -8507,7 +8261,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct _ __pyx_r = __pyx_v_self->_options; goto __pyx_L0; - /* "cython/interface.pyx":483 + /* "cython/interface.pyx":481 * return self._name * @property * def options(self): # <<<<<<<<<<<<<< @@ -8522,7 +8276,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct _ return __pyx_r; } -/* "cython/interface.pyx":486 +/* "cython/interface.pyx":484 * return self._options * @property * def state(self): # <<<<<<<<<<<<<< @@ -8548,7 +8302,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __p __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":487 + /* "cython/interface.pyx":485 * @property * def state(self): * return self._state # <<<<<<<<<<<<<< @@ -8560,7 +8314,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __p __pyx_r = __pyx_v_self->_state; goto __pyx_L0; - /* "cython/interface.pyx":486 + /* "cython/interface.pyx":484 * return self._options * @property * def state(self): # <<<<<<<<<<<<<< @@ -8575,7 +8329,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __p return __pyx_r; } -/* "cython/interface.pyx":489 +/* "cython/interface.pyx":487 * return self._state * @property * def result_folder(self): # <<<<<<<<<<<<<< @@ -8602,7 +8356,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_13result_folder___get__(s PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":490 + /* "cython/interface.pyx":488 * @property * def result_folder(self): * return coco_observer_get_result_folder(self._observer) # <<<<<<<<<<<<<< @@ -8610,13 +8364,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_13result_folder___get__(s * def free(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyStr_FromString(coco_observer_get_result_folder(__pyx_v_self->_observer)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 490, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyStr_FromString(coco_observer_get_result_folder(__pyx_v_self->_observer)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":489 + /* "cython/interface.pyx":487 * return self._state * @property * def result_folder(self): # <<<<<<<<<<<<<< @@ -8635,7 +8389,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_13result_folder___get__(s return __pyx_r; } -/* "cython/interface.pyx":492 +/* "cython/interface.pyx":490 * return coco_observer_get_result_folder(self._observer) * * def free(self): # <<<<<<<<<<<<<< @@ -8664,14 +8418,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("free", 0); - /* "cython/interface.pyx":493 + /* "cython/interface.pyx":491 * * def free(self): * self.__dealloc__() # <<<<<<<<<<<<<< * self._observer = NULL * self._state = 'deactivated' */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dealloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 493, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dealloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -8684,16 +8438,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 493, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 491, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 493, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 491, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":494 + /* "cython/interface.pyx":492 * def free(self): * self.__dealloc__() * self._observer = NULL # <<<<<<<<<<<<<< @@ -8702,7 +8456,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c */ __pyx_v_self->_observer = NULL; - /* "cython/interface.pyx":495 + /* "cython/interface.pyx":493 * self.__dealloc__() * self._observer = NULL * self._state = 'deactivated' # <<<<<<<<<<<<<< @@ -8715,7 +8469,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c __Pyx_DECREF(__pyx_v_self->_state); __pyx_v_self->_state = __pyx_n_u_deactivated; - /* "cython/interface.pyx":492 + /* "cython/interface.pyx":490 * return coco_observer_get_result_folder(self._observer) * * def free(self): # <<<<<<<<<<<<<< @@ -8738,7 +8492,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c return __pyx_r; } -/* "cython/interface.pyx":496 +/* "cython/interface.pyx":494 * self._observer = NULL * self._state = 'deactivated' * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -8762,7 +8516,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ int __pyx_t_1; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "cython/interface.pyx":497 + /* "cython/interface.pyx":495 * self._state = 'deactivated' * def __dealloc__(self): * if self._observer != NULL: # <<<<<<<<<<<<<< @@ -8772,7 +8526,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ __pyx_t_1 = ((__pyx_v_self->_observer != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":498 + /* "cython/interface.pyx":496 * def __dealloc__(self): * if self._observer != NULL: * coco_observer_free(self._observer) # <<<<<<<<<<<<<< @@ -8781,7 +8535,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ */ coco_observer_free(__pyx_v_self->_observer); - /* "cython/interface.pyx":497 + /* "cython/interface.pyx":495 * self._state = 'deactivated' * def __dealloc__(self): * if self._observer != NULL: # <<<<<<<<<<<<<< @@ -8790,7 +8544,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ */ } - /* "cython/interface.pyx":496 + /* "cython/interface.pyx":494 * self._observer = NULL * self._state = 'deactivated' * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -8833,7 +8587,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_10__reduce_cython__(CYTHO * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -8886,7 +8640,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_12__setstate_cython__(CYT * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -8909,7 +8663,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_12__setstate_cython__(CYT return __pyx_r; } -/* "cython/interface.pyx":500 +/* "cython/interface.pyx":498 * coco_observer_free(self._observer) * * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< @@ -8935,19 +8689,19 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v } } - /* "cython/interface.pyx":506 + /* "cython/interface.pyx":504 * This is necessary because __cinit__ cannot be defined as cdef, only as def. * """ * res = Problem() # <<<<<<<<<<<<<< * res._suite_name = suite_name * return res._initialize(problem, free) */ - __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6cocoex_9interface_Problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6cocoex_9interface_Problem), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_res = ((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":507 + /* "cython/interface.pyx":505 * """ * res = Problem() * res._suite_name = suite_name # <<<<<<<<<<<<<< @@ -8960,7 +8714,7 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v __Pyx_DECREF(__pyx_v_res->_suite_name); __pyx_v_res->_suite_name = __pyx_v_suite_name; - /* "cython/interface.pyx":508 + /* "cython/interface.pyx":506 * res = Problem() * res._suite_name = suite_name * return res._initialize(problem, free) # <<<<<<<<<<<<<< @@ -8970,13 +8724,13 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v __Pyx_XDECREF(__pyx_r); __pyx_t_2.__pyx_n = 1; __pyx_t_2.free = __pyx_v_free; - __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Problem *)__pyx_v_res->__pyx_vtab)->_initialize(__pyx_v_res, __pyx_v_problem, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 508, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Problem *)__pyx_v_res->__pyx_vtab)->_initialize(__pyx_v_res, __pyx_v_problem, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":500 + /* "cython/interface.pyx":498 * coco_observer_free(self._observer) * * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< @@ -8996,7 +8750,7 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v return __pyx_r; } -/* "cython/interface.pyx":528 +/* "cython/interface.pyx":526 * cdef _initial_solution_proposal_calls * cdef initialized * def __cinit__(self): # <<<<<<<<<<<<<< @@ -9025,7 +8779,7 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__", 0); - /* "cython/interface.pyx":530 + /* "cython/interface.pyx":528 * def __cinit__(self): * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize # <<<<<<<<<<<<<< @@ -9038,7 +8792,7 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_False; - /* "cython/interface.pyx":528 + /* "cython/interface.pyx":526 * cdef _initial_solution_proposal_calls * cdef initialized * def __cinit__(self): # <<<<<<<<<<<<<< @@ -9052,7 +8806,7 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco return __pyx_r; } -/* "cython/interface.pyx":531 +/* "cython/interface.pyx":529 * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< @@ -9074,7 +8828,6 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob PyObject *__pyx_t_7 = NULL; size_t __pyx_t_8; size_t __pyx_t_9; - size_t __pyx_t_10; __Pyx_RefNannySetupContext("_initialize", 0); if (__pyx_optional_args) { if (__pyx_optional_args->__pyx_n > 0) { @@ -9082,30 +8835,30 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } - /* "cython/interface.pyx":533 + /* "cython/interface.pyx":531 * cdef _initialize(self, coco_problem_t* problem, free=True): * cdef np.npy_intp shape[1] * if self.initialized: # <<<<<<<<<<<<<< * raise RuntimeError("Problem already initialized") * if problem == NULL: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 533, __pyx_L1_error) - if (unlikely(__pyx_t_1)) { + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 531, __pyx_L1_error) + if (__pyx_t_1) { - /* "cython/interface.pyx":534 + /* "cython/interface.pyx":532 * cdef np.npy_intp shape[1] * if self.initialized: * raise RuntimeError("Problem already initialized") # <<<<<<<<<<<<<< * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 534, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 534, __pyx_L1_error) + __PYX_ERR(0, 532, __pyx_L1_error) - /* "cython/interface.pyx":533 + /* "cython/interface.pyx":531 * cdef _initialize(self, coco_problem_t* problem, free=True): * cdef np.npy_intp shape[1] * if self.initialized: # <<<<<<<<<<<<<< @@ -9114,7 +8867,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ } - /* "cython/interface.pyx":535 + /* "cython/interface.pyx":533 * if self.initialized: * raise RuntimeError("Problem already initialized") * if problem == NULL: # <<<<<<<<<<<<<< @@ -9122,22 +8875,22 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self.problem = problem */ __pyx_t_1 = ((__pyx_v_problem == NULL) != 0); - if (unlikely(__pyx_t_1)) { + if (__pyx_t_1) { - /* "cython/interface.pyx":536 + /* "cython/interface.pyx":534 * raise RuntimeError("Problem already initialized") * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") # <<<<<<<<<<<<<< * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 536, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 536, __pyx_L1_error) + __PYX_ERR(0, 534, __pyx_L1_error) - /* "cython/interface.pyx":535 + /* "cython/interface.pyx":533 * if self.initialized: * raise RuntimeError("Problem already initialized") * if problem == NULL: # <<<<<<<<<<<<<< @@ -9146,7 +8899,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ } - /* "cython/interface.pyx":537 + /* "cython/interface.pyx":535 * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") * self.problem = problem # <<<<<<<<<<<<<< @@ -9155,14 +8908,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->problem = __pyx_v_problem; - /* "cython/interface.pyx":538 + /* "cython/interface.pyx":536 * raise ValueError("in Problem._initialize(problem,...): problem is NULL") * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) # <<<<<<<<<<<<<< * self._do_free = free * self._list_of_observers = [] */ - __pyx_t_2 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 538, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_problem_index); @@ -9170,7 +8923,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_v_self->_problem_index = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":539 + /* "cython/interface.pyx":537 * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) * self._do_free = free # <<<<<<<<<<<<<< @@ -9183,14 +8936,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_v_self->_do_free); __pyx_v_self->_do_free = __pyx_v_free; - /* "cython/interface.pyx":540 + /* "cython/interface.pyx":538 * self._problem_index = coco_problem_get_suite_dep_index(self.problem) * self._do_free = free * self._list_of_observers = [] # <<<<<<<<<<<<<< * # _problem_suite = _bstring(problem_suite) * # self.problem_suite = _problem_suite */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 540, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_list_of_observers); @@ -9198,7 +8951,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_v_self->_list_of_observers = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":545 + /* "cython/interface.pyx":543 * # Implicit type conversion via passing safe, * # see http://docs.cython.org/src/userguide/language_basics.html * self._number_of_variables = coco_problem_get_dimension(self.problem) # <<<<<<<<<<<<<< @@ -9207,7 +8960,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->_number_of_variables = coco_problem_get_dimension(__pyx_v_self->problem); - /* "cython/interface.pyx":546 + /* "cython/interface.pyx":544 * # see http://docs.cython.org/src/userguide/language_basics.html * self._number_of_variables = coco_problem_get_dimension(self.problem) * self._number_of_objectives = coco_problem_get_number_of_objectives(self.problem) # <<<<<<<<<<<<<< @@ -9216,7 +8969,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->_number_of_objectives = coco_problem_get_number_of_objectives(__pyx_v_self->problem); - /* "cython/interface.pyx":547 + /* "cython/interface.pyx":545 * self._number_of_variables = coco_problem_get_dimension(self.problem) * self._number_of_objectives = coco_problem_get_number_of_objectives(self.problem) * self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) # <<<<<<<<<<<<<< @@ -9225,7 +8978,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->_number_of_constraints = coco_problem_get_number_of_constraints(__pyx_v_self->problem); - /* "cython/interface.pyx":548 + /* "cython/interface.pyx":546 * self._number_of_objectives = coco_problem_get_number_of_objectives(self.problem) * self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) * self._number_of_integer_variables = coco_problem_get_number_of_integer_variables(self.problem) # <<<<<<<<<<<<<< @@ -9234,19 +8987,19 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->_number_of_integer_variables = coco_problem_get_number_of_integer_variables(__pyx_v_self->problem); - /* "cython/interface.pyx":549 + /* "cython/interface.pyx":547 * self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) * self._number_of_integer_variables = coco_problem_get_number_of_integer_variables(self.problem) * self.y_values = np.zeros(self._number_of_objectives) # <<<<<<<<<<<<<< * self.constraint_values = np.zeros(self._number_of_constraints) * self.x_initial = np.zeros(self._number_of_variables) */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -9259,14 +9012,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_5) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -9275,45 +9028,45 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 549, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->y_values); __Pyx_DECREF(((PyObject *)__pyx_v_self->y_values)); __pyx_v_self->y_values = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":550 + /* "cython/interface.pyx":548 * self._number_of_integer_variables = coco_problem_get_number_of_integer_variables(self.problem) * self.y_values = np.zeros(self._number_of_objectives) * self.constraint_values = np.zeros(self._number_of_constraints) # <<<<<<<<<<<<<< * self.x_initial = np.zeros(self._number_of_variables) * self._initial_solution_proposal_calls = 0 */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { @@ -9326,14 +9079,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 548, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 548, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -9342,45 +9095,45 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 548, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 550, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 548, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->constraint_values); __Pyx_DECREF(((PyObject *)__pyx_v_self->constraint_values)); __pyx_v_self->constraint_values = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":551 + /* "cython/interface.pyx":549 * self.y_values = np.zeros(self._number_of_objectives) * self.constraint_values = np.zeros(self._number_of_constraints) * self.x_initial = np.zeros(self._number_of_variables) # <<<<<<<<<<<<<< * self._initial_solution_proposal_calls = 0 * ## FIXME: Inefficient because we copy the bounds instead of */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 551, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 551, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 551, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { @@ -9393,14 +9146,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -9409,33 +9162,33 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 551, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_6); __pyx_t_6 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 551, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->x_initial); __Pyx_DECREF(((PyObject *)__pyx_v_self->x_initial)); __pyx_v_self->x_initial = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":552 + /* "cython/interface.pyx":550 * self.constraint_values = np.zeros(self._number_of_constraints) * self.x_initial = np.zeros(self._number_of_variables) * self._initial_solution_proposal_calls = 0 # <<<<<<<<<<<<<< @@ -9448,27 +9201,27 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_v_self->_initial_solution_proposal_calls); __pyx_v_self->_initial_solution_proposal_calls = __pyx_int_0; - /* "cython/interface.pyx":555 + /* "cython/interface.pyx":553 * ## FIXME: Inefficient because we copy the bounds instead of * ## sharing the data. * self._lower_bounds = -np.inf * np.ones(self._number_of_variables) # <<<<<<<<<<<<<< * self._upper_bounds = np.inf * np.ones(self._number_of_variables) * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 555, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 555, __pyx_L1_error) + __pyx_t_2 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 555, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 555, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 555, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { @@ -9481,14 +9234,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_4) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_5); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; - __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -9497,54 +9250,54 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; - __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 555, __pyx_L1_error) + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 555, __pyx_L1_error) + __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 555, __pyx_L1_error) + if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_6); __Pyx_GOTREF(__pyx_v_self->_lower_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_lower_bounds)); __pyx_v_self->_lower_bounds = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":556 + /* "cython/interface.pyx":554 * ## sharing the data. * self._lower_bounds = -np.inf * np.ones(self._number_of_variables) * self._upper_bounds = np.inf * np.ones(self._number_of_variables) # <<<<<<<<<<<<<< * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { @@ -9557,14 +9310,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_3) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -9573,37 +9326,37 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2); __pyx_t_2 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyNumber_Multiply(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_7 = PyNumber_Multiply(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 556, __pyx_L1_error) + if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_self->_upper_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_upper_bounds)); __pyx_v_self->_upper_bounds = ((PyArrayObject *)__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":558 + /* "cython/interface.pyx":556 * self._upper_bounds = np.inf * np.ones(self._number_of_variables) * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): # <<<<<<<<<<<<<< @@ -9611,11 +9364,10 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] */ __pyx_t_8 = __pyx_v_self->_number_of_variables; - __pyx_t_9 = __pyx_t_8; - for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { - __pyx_v_i = __pyx_t_10; + for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { + __pyx_v_i = __pyx_t_9; - /* "cython/interface.pyx":559 + /* "cython/interface.pyx":557 * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -9625,19 +9377,19 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_1 = ((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem) != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":560 + /* "cython/interface.pyx":558 * for i in range(self._number_of_variables): * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] # <<<<<<<<<<<<<< * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] */ - __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 560, __pyx_L1_error) + __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_lower_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 560, __pyx_L1_error) + if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_lower_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 558, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":559 + /* "cython/interface.pyx":557 * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -9646,7 +9398,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ } - /* "cython/interface.pyx":561 + /* "cython/interface.pyx":559 * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -9656,19 +9408,19 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_1 = ((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem) != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":562 + /* "cython/interface.pyx":560 * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] # <<<<<<<<<<<<<< * self._largest_fvalues_of_interest = None * self.initialized = True */ - __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 562, __pyx_L1_error) + __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_upper_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 562, __pyx_L1_error) + if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_upper_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":561 + /* "cython/interface.pyx":559 * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -9678,7 +9430,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } - /* "cython/interface.pyx":563 + /* "cython/interface.pyx":561 * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] * self._largest_fvalues_of_interest = None # <<<<<<<<<<<<<< @@ -9691,7 +9443,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(((PyObject *)__pyx_v_self->_largest_fvalues_of_interest)); __pyx_v_self->_largest_fvalues_of_interest = ((PyArrayObject *)Py_None); - /* "cython/interface.pyx":564 + /* "cython/interface.pyx":562 * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] * self._largest_fvalues_of_interest = None * self.initialized = True # <<<<<<<<<<<<<< @@ -9704,7 +9456,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_True; - /* "cython/interface.pyx":565 + /* "cython/interface.pyx":563 * self._largest_fvalues_of_interest = None * self.initialized = True * return self # <<<<<<<<<<<<<< @@ -9716,7 +9468,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":531 + /* "cython/interface.pyx":529 * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< @@ -9740,7 +9492,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":566 +/* "cython/interface.pyx":564 * self.initialized = True * return self * def constraint(self, x): # <<<<<<<<<<<<<< @@ -9785,22 +9537,22 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_pybuffernd__x.data = NULL; __pyx_pybuffernd__x.rcbuffer = &__pyx_pybuffer__x; - /* "cython/interface.pyx":568 + /* "cython/interface.pyx":566 * def constraint(self, x): * """see __init__.py""" * if self.number_of_constraints <= 0: # <<<<<<<<<<<<<< * return # return None, prevent Python kernel from dying * # or should we return `[]` for zero constraints? */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 566, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 566, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { - /* "cython/interface.pyx":569 + /* "cython/interface.pyx":567 * """see __init__.py""" * if self.number_of_constraints <= 0: * return # return None, prevent Python kernel from dying # <<<<<<<<<<<<<< @@ -9811,7 +9563,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "cython/interface.pyx":568 + /* "cython/interface.pyx":566 * def constraint(self, x): * """see __init__.py""" * if self.number_of_constraints <= 0: # <<<<<<<<<<<<<< @@ -9820,35 +9572,35 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o */ } - /* "cython/interface.pyx":573 + /* "cython/interface.pyx":571 * # `[]` is more likely to produce quietly unexpected result? * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') # <<<<<<<<<<<<<< * if np.size(x) != self.number_of_variables: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); - __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 573, __pyx_L1_error) - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 573, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 571, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 573, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 573, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 573, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 571, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -9856,16 +9608,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":574 + /* "cython/interface.pyx":572 * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -9879,13 +9631,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o } } if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else @@ -9893,43 +9645,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else #endif { - __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_x); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 572, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(__pyx_t_3)) { + if (__pyx_t_3) { - /* "cython/interface.pyx":576 + /* "cython/interface.pyx":574 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 576, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 576, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -9943,13 +9695,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o } } if (!__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -9957,68 +9709,73 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 576, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 576, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":578 + /* "cython/interface.pyx":576 * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) # <<<<<<<<<<<<<< * _x = x # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 578, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":576 + /* "cython/interface.pyx":574 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":575 + /* "cython/interface.pyx":573 * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: * raise ValueError( # <<<<<<<<<<<<<< * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." */ - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 575, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 575, __pyx_L1_error) + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(0, 573, __pyx_L1_error) - /* "cython/interface.pyx":574 + /* "cython/interface.pyx":572 * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< @@ -10027,20 +9784,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o */ } - /* "cython/interface.pyx":579 + /* "cython/interface.pyx":577 * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) * _x = x # this is the final type conversion # <<<<<<<<<<<<<< * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 579, __pyx_L1_error) - __pyx_t_4 = __pyx_v_x; - __Pyx_INCREF(__pyx_t_4); + if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 577, __pyx_L1_error) + __pyx_t_1 = __pyx_v_x; + __Pyx_INCREF(__pyx_t_1); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__x.rcbuffer->pybuffer); - __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_4), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); + __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); if (unlikely(__pyx_t_7 < 0)) { PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)__pyx_v__x, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) { @@ -10052,12 +9809,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0; } __pyx_pybuffernd__x.diminfo[0].strides = __pyx_pybuffernd__x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__x.diminfo[0].shape = __pyx_pybuffernd__x.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 579, __pyx_L1_error) + if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 577, __pyx_L1_error) } - __pyx_v__x = ((PyArrayObject *)__pyx_t_4); - __pyx_t_4 = 0; + __pyx_v__x = ((PyArrayObject *)__pyx_t_1); + __pyx_t_1 = 0; - /* "cython/interface.pyx":580 + /* "cython/interface.pyx":578 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -10065,40 +9822,40 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o * coco_evaluate_constraint(self.problem, */ __pyx_t_3 = ((__pyx_v_self->problem == NULL) != 0); - if (unlikely(__pyx_t_3)) { + if (__pyx_t_3) { - /* "cython/interface.pyx":581 + /* "cython/interface.pyx":579 * _x = x # this is the final type conversion * if self.problem is NULL: * raise InvalidProblemException() # <<<<<<<<<<<<<< * coco_evaluate_constraint(self.problem, * np.PyArray_DATA(_x), */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 579, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); + __Pyx_DECREF_SET(__pyx_t_4, function); } } if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 581, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 581, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error) } - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 581, __pyx_L1_error) + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(0, 579, __pyx_L1_error) - /* "cython/interface.pyx":580 + /* "cython/interface.pyx":578 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -10107,27 +9864,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o */ } - /* "cython/interface.pyx":584 + /* "cython/interface.pyx":582 * coco_evaluate_constraint(self.problem, * np.PyArray_DATA(_x), * np.PyArray_DATA(self.constraint_values)) # <<<<<<<<<<<<<< * return np.array(self.constraint_values, copy=True) * def recommend(self, arx): */ - __pyx_t_4 = ((PyObject *)__pyx_v_self->constraint_values); - __Pyx_INCREF(__pyx_t_4); + __pyx_t_1 = ((PyObject *)__pyx_v_self->constraint_values); + __Pyx_INCREF(__pyx_t_1); - /* "cython/interface.pyx":582 + /* "cython/interface.pyx":580 * if self.problem is NULL: * raise InvalidProblemException() * coco_evaluate_constraint(self.problem, # <<<<<<<<<<<<<< * np.PyArray_DATA(_x), * np.PyArray_DATA(self.constraint_values)) */ - coco_evaluate_constraint(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_4)))); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + coco_evaluate_constraint(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_1)))); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":585 + /* "cython/interface.pyx":583 * np.PyArray_DATA(_x), * np.PyArray_DATA(self.constraint_values)) * return np.array(self.constraint_values, copy=True) # <<<<<<<<<<<<<< @@ -10135,29 +9892,29 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o * """Recommend a solution, return `None`. */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 585, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 585, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self->constraint_values)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->constraint_values)); - PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self->constraint_values)); - __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 585, __pyx_L1_error) + PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->constraint_values)); + __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 585, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 585, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 583, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":566 + /* "cython/interface.pyx":564 * self.initialized = True * return self * def constraint(self, x): # <<<<<<<<<<<<<< @@ -10191,7 +9948,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":586 +/* "cython/interface.pyx":584 * np.PyArray_DATA(self.constraint_values)) * return np.array(self.constraint_values, copy=True) * def recommend(self, arx): # <<<<<<<<<<<<<< @@ -10219,20 +9976,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED s PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("recommend", 0); - /* "cython/interface.pyx":592 + /* "cython/interface.pyx":590 * for the assessment of the algorithm. * """ * raise NotImplementedError("has never been tested, incomment this to start testing") # <<<<<<<<<<<<<< * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 592, __pyx_L1_error) + __PYX_ERR(0, 590, __pyx_L1_error) - /* "cython/interface.pyx":586 + /* "cython/interface.pyx":584 * np.PyArray_DATA(self.constraint_values)) * return np.array(self.constraint_values, copy=True) * def recommend(self, arx): # <<<<<<<<<<<<<< @@ -10250,7 +10007,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED s return __pyx_r; } -/* "cython/interface.pyx":605 +/* "cython/interface.pyx":603 * coco_recommend_solution(self.problem, np.PyArray_DATA(_x)) * * def logger_biobj_feed_solution(self, evaluation, y): # <<<<<<<<<<<<<< @@ -10284,17 +10041,17 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solutio kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_evaluation)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_evaluation)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, 1); __PYX_ERR(0, 605, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, 1); __PYX_ERR(0, 603, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "logger_biobj_feed_solution") < 0)) __PYX_ERR(0, 605, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "logger_biobj_feed_solution") < 0)) __PYX_ERR(0, 603, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -10307,7 +10064,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solutio } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 605, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 603, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.logger_biobj_feed_solution", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -10345,45 +10102,45 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __pyx_pybuffernd__y.data = NULL; __pyx_pybuffernd__y.rcbuffer = &__pyx_pybuffer__y; - /* "cython/interface.pyx":614 + /* "cython/interface.pyx":612 * with new indicator reference values. * """ * cdef size_t _evaluation = evaluation # "conversion" to size_t # <<<<<<<<<<<<<< * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_evaluation); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 614, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_evaluation); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 612, __pyx_L1_error) __pyx_v__evaluation = __pyx_t_1; - /* "cython/interface.pyx":616 + /* "cython/interface.pyx":614 * cdef size_t _evaluation = evaluation # "conversion" to size_t * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') # <<<<<<<<<<<<<< * if np.size(y) != self.number_of_objectives: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 616, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); - __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 616, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 616, __pyx_L1_error) - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 616, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 614, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 616, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 616, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 614, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 616, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 616, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 614, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -10391,16 +10148,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __Pyx_DECREF_SET(__pyx_v_y, __pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":617 + /* "cython/interface.pyx":615 * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') * if np.size(y) != self.number_of_objectives: # <<<<<<<<<<<<<< * raise ValueError( * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 615, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 615, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -10414,13 +10171,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio } } if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_y}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else @@ -10428,43 +10185,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_y}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else #endif { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 615, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_y); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 615, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 615, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 615, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(__pyx_t_7)) { + if (__pyx_t_7) { - /* "cython/interface.pyx":619 + /* "cython/interface.pyx":617 * if np.size(y) != self.number_of_objectives: * raise ValueError( * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + # <<<<<<<<<<<<<< * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 619, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -10478,13 +10235,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio } } if (!__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_y}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else @@ -10492,68 +10249,73 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_y}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 619, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_y); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 619, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":621 + /* "cython/interface.pyx":619 * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) # <<<<<<<<<<<<<< * _y = y # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 621, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_number_of_objectiv, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 621, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_number_of_objectiv, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":619 + /* "cython/interface.pyx":617 * if np.size(y) != self.number_of_objectives: * raise ValueError( * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + # <<<<<<<<<<<<<< * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) */ - __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":618 + /* "cython/interface.pyx":616 * y = np.array(y, copy=False, dtype=np.double, order='C') * if np.size(y) != self.number_of_objectives: * raise ValueError( # <<<<<<<<<<<<<< * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + * "not match the number of objectives `number_of_objectives==%d`." */ - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 618, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 616, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 618, __pyx_L1_error) + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 616, __pyx_L1_error) - /* "cython/interface.pyx":617 + /* "cython/interface.pyx":615 * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') * if np.size(y) != self.number_of_objectives: # <<<<<<<<<<<<<< @@ -10562,20 +10324,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio */ } - /* "cython/interface.pyx":622 + /* "cython/interface.pyx":620 * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) * _y = y # this is the final type conversion # <<<<<<<<<<<<<< * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_y) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_y, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 622, __pyx_L1_error) - __pyx_t_4 = __pyx_v_y; - __Pyx_INCREF(__pyx_t_4); + if (!(likely(((__pyx_v_y) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_y, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 620, __pyx_L1_error) + __pyx_t_3 = __pyx_v_y; + __Pyx_INCREF(__pyx_t_3); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__y.rcbuffer->pybuffer); - __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__y.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_4), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); + __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__y.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_3), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); if (unlikely(__pyx_t_8 < 0)) { PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd__y.rcbuffer->pybuffer, (PyObject*)__pyx_v__y, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) { @@ -10587,12 +10349,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __pyx_t_9 = __pyx_t_10 = __pyx_t_11 = 0; } __pyx_pybuffernd__y.diminfo[0].strides = __pyx_pybuffernd__y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__y.diminfo[0].shape = __pyx_pybuffernd__y.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 622, __pyx_L1_error) + if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 620, __pyx_L1_error) } - __pyx_v__y = ((PyArrayObject *)__pyx_t_4); - __pyx_t_4 = 0; + __pyx_v__y = ((PyArrayObject *)__pyx_t_3); + __pyx_t_3 = 0; - /* "cython/interface.pyx":623 + /* "cython/interface.pyx":621 * % self.number_of_objectives) * _y = y # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -10600,40 +10362,40 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) */ __pyx_t_7 = ((__pyx_v_self->problem == NULL) != 0); - if (unlikely(__pyx_t_7)) { + if (__pyx_t_7) { - /* "cython/interface.pyx":624 + /* "cython/interface.pyx":622 * _y = y # this is the final type conversion * if self.problem is NULL: * raise InvalidProblemException() # <<<<<<<<<<<<<< * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) * */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 624, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 622, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); + __Pyx_DECREF_SET(__pyx_t_4, function); } } if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 624, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 622, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 624, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 622, __pyx_L1_error) } - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 624, __pyx_L1_error) + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 622, __pyx_L1_error) - /* "cython/interface.pyx":623 + /* "cython/interface.pyx":621 * % self.number_of_objectives) * _y = y # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -10642,7 +10404,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio */ } - /* "cython/interface.pyx":625 + /* "cython/interface.pyx":623 * if self.problem is NULL: * raise InvalidProblemException() * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) # <<<<<<<<<<<<<< @@ -10650,13 +10412,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyInt_From_int(coco_logger_biobj_feed_solution(__pyx_v_self->problem, __pyx_v__evaluation, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__y))))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 625, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; + __pyx_t_3 = __Pyx_PyInt_From_int(coco_logger_biobj_feed_solution(__pyx_v_self->problem, __pyx_v__evaluation, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__y))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 623, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":605 + /* "cython/interface.pyx":603 * coco_recommend_solution(self.problem, np.PyArray_DATA(_x)) * * def logger_biobj_feed_solution(self, evaluation, y): # <<<<<<<<<<<<<< @@ -10690,7 +10452,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio return __pyx_r; } -/* "cython/interface.pyx":628 +/* "cython/interface.pyx":626 * * * def add_observer(self, observer): # <<<<<<<<<<<<<< @@ -10721,7 +10483,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("add_observer", 0); - /* "cython/interface.pyx":631 + /* "cython/interface.pyx":629 * """`add_observer(self, observer: Observer)`, see `observe_with`. * """ * return self.observe_with(observer) # <<<<<<<<<<<<<< @@ -10729,7 +10491,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx * def observe_with(self, observer): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 631, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -10742,13 +10504,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_observer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_observer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -10756,19 +10518,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 631, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_observer); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } @@ -10778,7 +10540,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":628 + /* "cython/interface.pyx":626 * * * def add_observer(self, observer): # <<<<<<<<<<<<<< @@ -10800,7 +10562,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx return __pyx_r; } -/* "cython/interface.pyx":633 +/* "cython/interface.pyx":631 * return self.observe_with(observer) * * def observe_with(self, observer): # <<<<<<<<<<<<<< @@ -10832,17 +10594,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py int __pyx_t_5; __Pyx_RefNannySetupContext("observe_with", 0); - /* "cython/interface.pyx":645 + /* "cython/interface.pyx":643 * See also: class `Observer` * """ * if observer: # <<<<<<<<<<<<<< * assert self.problem * observer._update_current_observer_global() */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_observer); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 645, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_observer); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 643, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":646 + /* "cython/interface.pyx":644 * """ * if observer: * assert self.problem # <<<<<<<<<<<<<< @@ -10853,19 +10615,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 646, __pyx_L1_error) + __PYX_ERR(0, 644, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":647 + /* "cython/interface.pyx":645 * if observer: * assert self.problem * observer._update_current_observer_global() # <<<<<<<<<<<<<< * self.problem = coco_problem_add_observer(self.problem, _current_observer) * self._list_of_observers.append(observer) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_observer, __pyx_n_s_update_current_observer_global); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 647, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_observer, __pyx_n_s_update_current_observer_global); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 645, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -10878,16 +10640,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 645, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 645, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":648 + /* "cython/interface.pyx":646 * assert self.problem * observer._update_current_observer_global() * self.problem = coco_problem_add_observer(self.problem, _current_observer) # <<<<<<<<<<<<<< @@ -10896,16 +10658,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py */ __pyx_v_self->problem = coco_problem_add_observer(__pyx_v_self->problem, __pyx_v_6cocoex_9interface__current_observer); - /* "cython/interface.pyx":649 + /* "cython/interface.pyx":647 * observer._update_current_observer_global() * self.problem = coco_problem_add_observer(self.problem, _current_observer) * self._list_of_observers.append(observer) # <<<<<<<<<<<<<< * return self * */ - __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_list_of_observers, __pyx_v_observer); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 649, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_list_of_observers, __pyx_v_observer); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 647, __pyx_L1_error) - /* "cython/interface.pyx":645 + /* "cython/interface.pyx":643 * See also: class `Observer` * """ * if observer: # <<<<<<<<<<<<<< @@ -10914,7 +10676,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py */ } - /* "cython/interface.pyx":650 + /* "cython/interface.pyx":648 * self.problem = coco_problem_add_observer(self.problem, _current_observer) * self._list_of_observers.append(observer) * return self # <<<<<<<<<<<<<< @@ -10926,7 +10688,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":633 + /* "cython/interface.pyx":631 * return self.observe_with(observer) * * def observe_with(self, observer): # <<<<<<<<<<<<<< @@ -10947,7 +10709,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py return __pyx_r; } -/* "cython/interface.pyx":652 +/* "cython/interface.pyx":650 * return self * * def _f0(self, x): # <<<<<<<<<<<<<< @@ -10978,7 +10740,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("_f0", 0); - /* "cython/interface.pyx":654 + /* "cython/interface.pyx":652 * def _f0(self, x): * """"inofficial" interface to `self` with target f-value of zero. """ * return self(x) - self.final_target_fvalue1 # <<<<<<<<<<<<<< @@ -10998,13 +10760,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -11012,27 +10774,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 654, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_final_target_fvalue1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 654, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_final_target_fvalue1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 654, __pyx_L1_error) + __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -11040,7 +10802,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":652 + /* "cython/interface.pyx":650 * return self * * def _f0(self, x): # <<<<<<<<<<<<<< @@ -11062,7 +10824,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co return __pyx_r; } -/* "cython/interface.pyx":656 +/* "cython/interface.pyx":654 * return self(x) - self.final_target_fvalue1 * * def initial_solution_proposal(self, restart_number=None): # <<<<<<<<<<<<<< @@ -11095,12 +10857,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution_proposa switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_restart_number); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_restart_number); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "initial_solution_proposal") < 0)) __PYX_ERR(0, 656, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "initial_solution_proposal") < 0)) __PYX_ERR(0, 654, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -11114,7 +10876,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution_proposa } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("initial_solution_proposal", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 656, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("initial_solution_proposal", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 654, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.initial_solution_proposal", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -11142,7 +10904,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __Pyx_RefNannySetupContext("initial_solution_proposal", 0); __Pyx_INCREF(__pyx_v_restart_number); - /* "cython/interface.pyx":682 + /* "cython/interface.pyx":680 * * """ * if restart_number is None: # <<<<<<<<<<<<<< @@ -11153,7 +10915,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":683 + /* "cython/interface.pyx":681 * """ * if restart_number is None: * restart_number = self._initial_solution_proposal_calls # <<<<<<<<<<<<<< @@ -11165,14 +10927,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __Pyx_DECREF_SET(__pyx_v_restart_number, __pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":684 + /* "cython/interface.pyx":682 * if restart_number is None: * restart_number = self._initial_solution_proposal_calls * self._initial_solution_proposal_calls += 1 # count calls without explicit argument # <<<<<<<<<<<<<< * if restart_number <= 0: * return self.initial_solution */ - __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_initial_solution_proposal_calls, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 684, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_initial_solution_proposal_calls, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_initial_solution_proposal_calls); @@ -11180,7 +10942,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_v_self->_initial_solution_proposal_calls = __pyx_t_3; __pyx_t_3 = 0; - /* "cython/interface.pyx":682 + /* "cython/interface.pyx":680 * * """ * if restart_number is None: # <<<<<<<<<<<<<< @@ -11189,19 +10951,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa */ } - /* "cython/interface.pyx":685 + /* "cython/interface.pyx":683 * restart_number = self._initial_solution_proposal_calls * self._initial_solution_proposal_calls += 1 # count calls without explicit argument * if restart_number <= 0: # <<<<<<<<<<<<<< * return self.initial_solution * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) */ - __pyx_t_3 = PyObject_RichCompare(__pyx_v_restart_number, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_restart_number, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 683, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 683, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_2) { - /* "cython/interface.pyx":686 + /* "cython/interface.pyx":684 * self._initial_solution_proposal_calls += 1 # count calls without explicit argument * if restart_number <= 0: * return self.initial_solution # <<<<<<<<<<<<<< @@ -11209,13 +10971,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa * if self.number_of_constraints > 0: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 686, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":685 + /* "cython/interface.pyx":683 * restart_number = self._initial_solution_proposal_calls * self._initial_solution_proposal_calls += 1 # count calls without explicit argument * if restart_number <= 0: # <<<<<<<<<<<<<< @@ -11224,22 +10986,22 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa */ } - /* "cython/interface.pyx":687 + /* "cython/interface.pyx":685 * if restart_number <= 0: * return self.initial_solution * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) # <<<<<<<<<<<<<< * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rand); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rand); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { @@ -11252,14 +11014,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa } } if (!__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -11268,34 +11030,34 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rand); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rand); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { @@ -11308,14 +11070,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa } } if (!__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -11324,48 +11086,48 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_rv_triangular = __pyx_t_7; __pyx_t_7 = 0; - /* "cython/interface.pyx":688 + /* "cython/interface.pyx":686 * return self.initial_solution * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) * if self.number_of_constraints > 0: # <<<<<<<<<<<<<< * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 688, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 686, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 688, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 686, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 688, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 686, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_2) { - /* "cython/interface.pyx":689 + /* "cython/interface.pyx":687 * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) # <<<<<<<<<<<<<< @@ -11373,14 +11135,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa * self.upper_bounds - self.lower_bounds) / 2 */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 689, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = __Pyx_PyInt_SubtractObjC(__pyx_v_rv_triangular, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 689, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyInt_SubtractObjC(__pyx_v_rv_triangular, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = PyNumber_Multiply(__pyx_float_1_0, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 689, __pyx_L1_error) + __pyx_t_3 = PyNumber_Multiply(__pyx_float_1_0, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 689, __pyx_L1_error) + __pyx_t_7 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -11388,7 +11150,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_t_7 = 0; goto __pyx_L0; - /* "cython/interface.pyx":688 + /* "cython/interface.pyx":686 * return self.initial_solution * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) * if self.number_of_constraints > 0: # <<<<<<<<<<<<<< @@ -11397,7 +11159,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa */ } - /* "cython/interface.pyx":690 + /* "cython/interface.pyx":688 * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( # <<<<<<<<<<<<<< @@ -11405,55 +11167,55 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 690, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - /* "cython/interface.pyx":691 + /* "cython/interface.pyx":689 * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( * self.upper_bounds - self.lower_bounds) / 2 # <<<<<<<<<<<<<< * @property * def initial_solution(self): */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_upper_bounds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 691, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_upper_bounds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 691, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_8 = PyNumber_Subtract(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 691, __pyx_L1_error) + __pyx_t_8 = PyNumber_Subtract(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":690 + /* "cython/interface.pyx":688 * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( # <<<<<<<<<<<<<< * self.upper_bounds - self.lower_bounds) / 2 * @property */ - __pyx_t_4 = PyNumber_Multiply(__pyx_v_rv_triangular, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 690, __pyx_L1_error) + __pyx_t_4 = PyNumber_Multiply(__pyx_v_rv_triangular, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "cython/interface.pyx":691 + /* "cython/interface.pyx":689 * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( * self.upper_bounds - self.lower_bounds) / 2 # <<<<<<<<<<<<<< * @property * def initial_solution(self): */ - __pyx_t_8 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_4, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 691, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_4, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":690 + /* "cython/interface.pyx":688 * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( # <<<<<<<<<<<<<< * self.upper_bounds - self.lower_bounds) / 2 * @property */ - __pyx_t_4 = PyNumber_Add(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 690, __pyx_L1_error) + __pyx_t_4 = PyNumber_Add(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; @@ -11461,7 +11223,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":656 + /* "cython/interface.pyx":654 * return self(x) - self.final_target_fvalue1 * * def initial_solution_proposal(self, restart_number=None): # <<<<<<<<<<<<<< @@ -11487,7 +11249,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa return __pyx_r; } -/* "cython/interface.pyx":693 +/* "cython/interface.pyx":691 * self.upper_bounds - self.lower_bounds) / 2 * @property * def initial_solution(self): # <<<<<<<<<<<<<< @@ -11517,7 +11279,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":696 + /* "cython/interface.pyx":694 * """return feasible initial solution""" * coco_problem_get_initial_solution(self.problem, * np.PyArray_DATA(self.x_initial)) # <<<<<<<<<<<<<< @@ -11527,7 +11289,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ __pyx_t_1 = ((PyObject *)__pyx_v_self->x_initial); __Pyx_INCREF(__pyx_t_1); - /* "cython/interface.pyx":695 + /* "cython/interface.pyx":693 * def initial_solution(self): * """return feasible initial solution""" * coco_problem_get_initial_solution(self.problem, # <<<<<<<<<<<<<< @@ -11537,7 +11299,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ coco_problem_get_initial_solution(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_1)))); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":697 + /* "cython/interface.pyx":695 * coco_problem_get_initial_solution(self.problem, * np.PyArray_DATA(self.x_initial)) * return np.array(self.x_initial, copy=True) # <<<<<<<<<<<<<< @@ -11545,20 +11307,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ * def observers(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 697, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 697, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 697, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self->x_initial)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->x_initial)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->x_initial)); - __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 697, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 697, __pyx_L1_error) - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 697, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 695, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -11567,7 +11329,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":693 + /* "cython/interface.pyx":691 * self.upper_bounds - self.lower_bounds) / 2 * @property * def initial_solution(self): # <<<<<<<<<<<<<< @@ -11589,7 +11351,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ return __pyx_r; } -/* "cython/interface.pyx":699 +/* "cython/interface.pyx":697 * return np.array(self.x_initial, copy=True) * @property * def observers(self): # <<<<<<<<<<<<<< @@ -11615,7 +11377,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9observers___get__(struct __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":701 + /* "cython/interface.pyx":699 * def observers(self): * """list of observers wrapped around this problem""" * return self._list_of_observers # <<<<<<<<<<<<<< @@ -11627,7 +11389,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9observers___get__(struct __pyx_r = __pyx_v_self->_list_of_observers; goto __pyx_L0; - /* "cython/interface.pyx":699 + /* "cython/interface.pyx":697 * return np.array(self.x_initial, copy=True) * @property * def observers(self): # <<<<<<<<<<<<<< @@ -11642,7 +11404,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9observers___get__(struct return __pyx_r; } -/* "cython/interface.pyx":703 +/* "cython/interface.pyx":701 * return self._list_of_observers * @property * def is_observed(self): # <<<<<<<<<<<<<< @@ -11670,7 +11432,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11is_observed___get__(stru Py_ssize_t __pyx_t_2; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":708 + /* "cython/interface.pyx":706 * See also: the list of observers in property `observers`. * """ * return len(self._list_of_observers) # <<<<<<<<<<<<<< @@ -11680,15 +11442,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11is_observed___get__(stru __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_v_self->_list_of_observers; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 708, __pyx_L1_error) + __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 706, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 708, __pyx_L1_error) + __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":703 + /* "cython/interface.pyx":701 * return self._list_of_observers * @property * def is_observed(self): # <<<<<<<<<<<<<< @@ -11707,7 +11469,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11is_observed___get__(stru return __pyx_r; } -/* "cython/interface.pyx":713 +/* "cython/interface.pyx":711 * # this is a class definition which is instantiated automatically!? * """Number of variables this problem instance expects as input.""" * def __get__(self): # <<<<<<<<<<<<<< @@ -11734,7 +11496,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":714 + /* "cython/interface.pyx":712 * """Number of variables this problem instance expects as input.""" * def __get__(self): * return self._number_of_variables # <<<<<<<<<<<<<< @@ -11742,13 +11504,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge * def dimension(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 714, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":713 + /* "cython/interface.pyx":711 * # this is a class definition which is instantiated automatically!? * """Number of variables this problem instance expects as input.""" * def __get__(self): # <<<<<<<<<<<<<< @@ -11767,7 +11529,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge return __pyx_r; } -/* "cython/interface.pyx":716 +/* "cython/interface.pyx":714 * return self._number_of_variables * @property * def dimension(self): # <<<<<<<<<<<<<< @@ -11794,7 +11556,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":718 + /* "cython/interface.pyx":716 * def dimension(self): * """alias for `number_of_variables` of the input space""" * return self._number_of_variables # <<<<<<<<<<<<<< @@ -11802,13 +11564,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct * def number_of_objectives(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 718, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":716 + /* "cython/interface.pyx":714 * return self._number_of_variables * @property * def dimension(self): # <<<<<<<<<<<<<< @@ -11827,7 +11589,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct return __pyx_r; } -/* "cython/interface.pyx":720 +/* "cython/interface.pyx":718 * return self._number_of_variables * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -11854,7 +11616,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":722 + /* "cython/interface.pyx":720 * def number_of_objectives(self): * "number of objectives, if equal to 1, call returns a scalar" * return self._number_of_objectives # <<<<<<<<<<<<<< @@ -11862,13 +11624,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g * def number_of_constraints(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 720, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":720 + /* "cython/interface.pyx":718 * return self._number_of_variables * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -11887,7 +11649,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g return __pyx_r; } -/* "cython/interface.pyx":724 +/* "cython/interface.pyx":722 * return self._number_of_objectives * @property * def number_of_constraints(self): # <<<<<<<<<<<<<< @@ -11914,7 +11676,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":726 + /* "cython/interface.pyx":724 * def number_of_constraints(self): * "number of constraints" * return self._number_of_constraints # <<<<<<<<<<<<<< @@ -11922,13 +11684,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___ * def number_of_integer_variables(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 726, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":724 + /* "cython/interface.pyx":722 * return self._number_of_objectives * @property * def number_of_constraints(self): # <<<<<<<<<<<<<< @@ -11947,7 +11709,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___ return __pyx_r; } -/* "cython/interface.pyx":728 +/* "cython/interface.pyx":726 * return self._number_of_constraints * @property * def number_of_integer_variables(self): # <<<<<<<<<<<<<< @@ -11974,7 +11736,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27number_of_integer_variab PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":730 + /* "cython/interface.pyx":728 * def number_of_integer_variables(self): * "number of integer variables" * return self._number_of_integer_variables # <<<<<<<<<<<<<< @@ -11982,13 +11744,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27number_of_integer_variab * def lower_bounds(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_integer_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 730, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_integer_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":728 + /* "cython/interface.pyx":726 * return self._number_of_constraints * @property * def number_of_integer_variables(self): # <<<<<<<<<<<<<< @@ -12007,7 +11769,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27number_of_integer_variab return __pyx_r; } -/* "cython/interface.pyx":732 +/* "cython/interface.pyx":730 * return self._number_of_integer_variables * @property * def lower_bounds(self): # <<<<<<<<<<<<<< @@ -12033,7 +11795,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(str __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":735 + /* "cython/interface.pyx":733 * """depending on the test bed, these are not necessarily strict bounds * """ * return self._lower_bounds # <<<<<<<<<<<<<< @@ -12045,7 +11807,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(str __pyx_r = ((PyObject *)__pyx_v_self->_lower_bounds); goto __pyx_L0; - /* "cython/interface.pyx":732 + /* "cython/interface.pyx":730 * return self._number_of_integer_variables * @property * def lower_bounds(self): # <<<<<<<<<<<<<< @@ -12060,7 +11822,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(str return __pyx_r; } -/* "cython/interface.pyx":737 +/* "cython/interface.pyx":735 * return self._lower_bounds * @property * def upper_bounds(self): # <<<<<<<<<<<<<< @@ -12086,7 +11848,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(str __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":740 + /* "cython/interface.pyx":738 * """depending on the test bed, these are not necessarily strict bounds * """ * return self._upper_bounds # <<<<<<<<<<<<<< @@ -12098,7 +11860,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(str __pyx_r = ((PyObject *)__pyx_v_self->_upper_bounds); goto __pyx_L0; - /* "cython/interface.pyx":737 + /* "cython/interface.pyx":735 * return self._lower_bounds * @property * def upper_bounds(self): # <<<<<<<<<<<<<< @@ -12113,7 +11875,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(str return __pyx_r; } -/* "cython/interface.pyx":742 +/* "cython/interface.pyx":740 * return self._upper_bounds * @property * def evaluations(self): # <<<<<<<<<<<<<< @@ -12140,7 +11902,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":743 + /* "cython/interface.pyx":741 * @property * def evaluations(self): * return coco_problem_get_evaluations(self.problem) # <<<<<<<<<<<<<< @@ -12148,13 +11910,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru * def evaluations_constraints(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 743, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":742 + /* "cython/interface.pyx":740 * return self._upper_bounds * @property * def evaluations(self): # <<<<<<<<<<<<<< @@ -12173,7 +11935,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru return __pyx_r; } -/* "cython/interface.pyx":745 +/* "cython/interface.pyx":743 * return coco_problem_get_evaluations(self.problem) * @property * def evaluations_constraints(self): # <<<<<<<<<<<<<< @@ -12200,7 +11962,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_23evaluations_constraints_ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":746 + /* "cython/interface.pyx":744 * @property * def evaluations_constraints(self): * return coco_problem_get_evaluations_constraints(self.problem) # <<<<<<<<<<<<<< @@ -12208,13 +11970,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_23evaluations_constraints_ * def final_target_hit(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations_constraints(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations_constraints(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 744, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":745 + /* "cython/interface.pyx":743 * return coco_problem_get_evaluations(self.problem) * @property * def evaluations_constraints(self): # <<<<<<<<<<<<<< @@ -12233,7 +11995,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_23evaluations_constraints_ return __pyx_r; } -/* "cython/interface.pyx":748 +/* "cython/interface.pyx":746 * return coco_problem_get_evaluations_constraints(self.problem) * @property * def final_target_hit(self): # <<<<<<<<<<<<<< @@ -12260,7 +12022,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":751 + /* "cython/interface.pyx":749 * """return 1 if the final target is known and has been hit, 0 otherwise * """ * assert(self.problem) # <<<<<<<<<<<<<< @@ -12271,12 +12033,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 751, __pyx_L1_error) + __PYX_ERR(0, 749, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":752 + /* "cython/interface.pyx":750 * """ * assert(self.problem) * return coco_problem_final_target_hit(self.problem) # <<<<<<<<<<<<<< @@ -12284,13 +12046,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ * #def final_target_fvalue1(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(coco_problem_final_target_hit(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 752, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(coco_problem_final_target_hit(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":748 + /* "cython/interface.pyx":746 * return coco_problem_get_evaluations_constraints(self.problem) * @property * def final_target_hit(self): # <<<<<<<<<<<<<< @@ -12309,7 +12071,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ return __pyx_r; } -/* "cython/interface.pyx":758 +/* "cython/interface.pyx":756 * # return coco_problem_get_final_target_fvalue1(self.problem) * @property * def best_observed_fvalue1(self): # <<<<<<<<<<<<<< @@ -12336,7 +12098,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":759 + /* "cython/interface.pyx":757 * @property * def best_observed_fvalue1(self): * assert(self.problem) # <<<<<<<<<<<<<< @@ -12347,12 +12109,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 759, __pyx_L1_error) + __PYX_ERR(0, 757, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":760 + /* "cython/interface.pyx":758 * def best_observed_fvalue1(self): * assert(self.problem) * return coco_problem_get_best_observed_fvalue1(self.problem) # <<<<<<<<<<<<<< @@ -12360,13 +12122,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ * def largest_fvalues_of_interest(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_best_observed_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 760, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_best_observed_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":758 + /* "cython/interface.pyx":756 * # return coco_problem_get_final_target_fvalue1(self.problem) * @property * def best_observed_fvalue1(self): # <<<<<<<<<<<<<< @@ -12385,7 +12147,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ return __pyx_r; } -/* "cython/interface.pyx":762 +/* "cython/interface.pyx":760 * return coco_problem_get_best_observed_fvalue1(self.problem) * @property * def largest_fvalues_of_interest(self): # <<<<<<<<<<<<<< @@ -12417,12 +12179,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter PyObject *__pyx_t_5 = NULL; size_t __pyx_t_6; size_t __pyx_t_7; - size_t __pyx_t_8; + PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":764 + /* "cython/interface.pyx":762 * def largest_fvalues_of_interest(self): * "largest f-values of interest (defined only for multi-objective problems)" * assert(self.problem) # <<<<<<<<<<<<<< @@ -12433,12 +12194,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 764, __pyx_L1_error) + __PYX_ERR(0, 762, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":765 + /* "cython/interface.pyx":763 * "largest f-values of interest (defined only for multi-objective problems)" * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -12456,99 +12217,98 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "cython/interface.pyx":766 + /* "cython/interface.pyx":764 * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: * self._largest_fvalues_of_interest = np.asarray( # <<<<<<<<<<<<<< * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) * return self._largest_fvalues_of_interest */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 766, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 766, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":767 + /* "cython/interface.pyx":765 * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: * self._largest_fvalues_of_interest = np.asarray( * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) # <<<<<<<<<<<<<< * return self._largest_fvalues_of_interest * */ - __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 767, __pyx_L1_error) + __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __pyx_v_self->_number_of_objectives; - __pyx_t_7 = __pyx_t_6; - for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { - __pyx_v_i = __pyx_t_8; - __pyx_t_9 = PyFloat_FromDouble((coco_problem_get_largest_fvalues_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 767, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 767, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { + __pyx_v_i = __pyx_t_7; + __pyx_t_8 = PyFloat_FromDouble((coco_problem_get_largest_fvalues_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 765, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 765, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } - __pyx_t_9 = NULL; + __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_9)) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } - if (!__pyx_t_9) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 766, __pyx_L1_error) + if (!__pyx_t_8) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 766, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 764, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 766, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 764, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { - __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 766, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL; + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 764, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 766, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "cython/interface.pyx":766 + /* "cython/interface.pyx":764 * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: * self._largest_fvalues_of_interest = np.asarray( # <<<<<<<<<<<<<< * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) * return self._largest_fvalues_of_interest */ - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 766, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_largest_fvalues_of_interest); __Pyx_DECREF(((PyObject *)__pyx_v_self->_largest_fvalues_of_interest)); __pyx_v_self->_largest_fvalues_of_interest = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":765 + /* "cython/interface.pyx":763 * "largest f-values of interest (defined only for multi-objective problems)" * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -12557,7 +12317,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter */ } - /* "cython/interface.pyx":768 + /* "cython/interface.pyx":766 * self._largest_fvalues_of_interest = np.asarray( * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) * return self._largest_fvalues_of_interest # <<<<<<<<<<<<<< @@ -12569,7 +12329,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter __pyx_r = ((PyObject *)__pyx_v_self->_largest_fvalues_of_interest); goto __pyx_L0; - /* "cython/interface.pyx":762 + /* "cython/interface.pyx":760 * return coco_problem_get_best_observed_fvalue1(self.problem) * @property * def largest_fvalues_of_interest(self): # <<<<<<<<<<<<<< @@ -12582,8 +12342,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("cocoex.interface.Problem.largest_fvalues_of_interest.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -12592,7 +12352,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter return __pyx_r; } -/* "cython/interface.pyx":770 +/* "cython/interface.pyx":768 * return self._largest_fvalues_of_interest * * def _best_parameter(self, what=None): # <<<<<<<<<<<<<< @@ -12624,12 +12384,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17_best_parameter(PyObject switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_what); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_what); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_best_parameter") < 0)) __PYX_ERR(0, 770, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_best_parameter") < 0)) __PYX_ERR(0, 768, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -12643,7 +12403,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17_best_parameter(PyObject } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_best_parameter", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 770, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("_best_parameter", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 768, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem._best_parameter", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -12662,17 +12422,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ int __pyx_t_1; __Pyx_RefNannySetupContext("_best_parameter", 0); - /* "cython/interface.pyx":771 + /* "cython/interface.pyx":769 * * def _best_parameter(self, what=None): * if what == 'print': # <<<<<<<<<<<<<< * if self._number_of_objectives == 2: * bbob_biobj_problem_best_parameter_print(self.problem) */ - __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_what, __pyx_n_u_print, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 771, __pyx_L1_error) + __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_what, __pyx_n_u_print, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 769, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":772 + /* "cython/interface.pyx":770 * def _best_parameter(self, what=None): * if what == 'print': * if self._number_of_objectives == 2: # <<<<<<<<<<<<<< @@ -12682,7 +12442,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ __pyx_t_1 = ((__pyx_v_self->_number_of_objectives == 2) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":773 + /* "cython/interface.pyx":771 * if what == 'print': * if self._number_of_objectives == 2: * bbob_biobj_problem_best_parameter_print(self.problem) # <<<<<<<<<<<<<< @@ -12691,7 +12451,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ */ bbob_biobj_problem_best_parameter_print(__pyx_v_self->problem); - /* "cython/interface.pyx":772 + /* "cython/interface.pyx":770 * def _best_parameter(self, what=None): * if what == 'print': * if self._number_of_objectives == 2: # <<<<<<<<<<<<<< @@ -12701,7 +12461,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ goto __pyx_L4; } - /* "cython/interface.pyx":775 + /* "cython/interface.pyx":773 * bbob_biobj_problem_best_parameter_print(self.problem) * else: * bbob_problem_best_parameter_print(self.problem) # <<<<<<<<<<<<<< @@ -12713,7 +12473,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ } __pyx_L4:; - /* "cython/interface.pyx":771 + /* "cython/interface.pyx":769 * * def _best_parameter(self, what=None): * if what == 'print': # <<<<<<<<<<<<<< @@ -12722,7 +12482,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ */ } - /* "cython/interface.pyx":770 + /* "cython/interface.pyx":768 * return self._largest_fvalues_of_interest * * def _best_parameter(self, what=None): # <<<<<<<<<<<<<< @@ -12742,7 +12502,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ return __pyx_r; } -/* "cython/interface.pyx":777 +/* "cython/interface.pyx":775 * bbob_problem_best_parameter_print(self.problem) * * def free(self, force=False): # <<<<<<<<<<<<<< @@ -12775,12 +12535,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19free(PyObject *__pyx_v_s switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_force); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_force); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "free") < 0)) __PYX_ERR(0, 777, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "free") < 0)) __PYX_ERR(0, 775, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -12794,7 +12554,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19free(PyObject *__pyx_v_s } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("free", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 777, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("free", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 775, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.free", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -12814,7 +12574,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c int __pyx_t_2; __Pyx_RefNannySetupContext("free", 0); - /* "cython/interface.pyx":786 + /* "cython/interface.pyx":784 * exception. * """ * if self.problem != NULL and (self._do_free or force): # <<<<<<<<<<<<<< @@ -12827,18 +12587,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c __pyx_t_1 = __pyx_t_2; goto __pyx_L4_bool_binop_done; } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 786, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 784, __pyx_L1_error) if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L4_bool_binop_done; } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 786, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 784, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "cython/interface.pyx":787 + /* "cython/interface.pyx":785 * """ * if self.problem != NULL and (self._do_free or force): * coco_problem_free(self.problem) # <<<<<<<<<<<<<< @@ -12847,7 +12607,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c */ coco_problem_free(__pyx_v_self->problem); - /* "cython/interface.pyx":788 + /* "cython/interface.pyx":786 * if self.problem != NULL and (self._do_free or force): * coco_problem_free(self.problem) * self.problem = NULL # <<<<<<<<<<<<<< @@ -12856,7 +12616,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c */ __pyx_v_self->problem = NULL; - /* "cython/interface.pyx":786 + /* "cython/interface.pyx":784 * exception. * """ * if self.problem != NULL and (self._do_free or force): # <<<<<<<<<<<<<< @@ -12865,7 +12625,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c */ } - /* "cython/interface.pyx":777 + /* "cython/interface.pyx":775 * bbob_problem_best_parameter_print(self.problem) * * def free(self, force=False): # <<<<<<<<<<<<<< @@ -12885,7 +12645,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c return __pyx_r; } -/* "cython/interface.pyx":790 +/* "cython/interface.pyx":788 * self.problem = NULL * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -12910,14 +12670,14 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ int __pyx_t_2; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "cython/interface.pyx":794 + /* "cython/interface.pyx":792 * # free let the problem_free() call(s) in coco_suite_t crash, hence * # the possibility to set _do_free = False * if self._do_free and self.problem != NULL: # this is not guaranteed to work, see above link # <<<<<<<<<<<<<< * coco_problem_free(self.problem) * */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 794, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 792, __pyx_L1_error) if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; @@ -12928,7 +12688,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "cython/interface.pyx":795 + /* "cython/interface.pyx":793 * # the possibility to set _do_free = False * if self._do_free and self.problem != NULL: # this is not guaranteed to work, see above link * coco_problem_free(self.problem) # <<<<<<<<<<<<<< @@ -12937,7 +12697,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ */ coco_problem_free(__pyx_v_self->problem); - /* "cython/interface.pyx":794 + /* "cython/interface.pyx":792 * # free let the problem_free() call(s) in coco_suite_t crash, hence * # the possibility to set _do_free = False * if self._do_free and self.problem != NULL: # this is not guaranteed to work, see above link # <<<<<<<<<<<<<< @@ -12946,7 +12706,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ */ } - /* "cython/interface.pyx":790 + /* "cython/interface.pyx":788 * self.problem = NULL * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -12962,7 +12722,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ __Pyx_RefNannyFinishContext(); } -/* "cython/interface.pyx":798 +/* "cython/interface.pyx":796 * * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): * def __call__(self, x): # <<<<<<<<<<<<<< @@ -12996,11 +12756,11 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23__call__(PyObject *__pyx kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 798, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 796, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { goto __pyx_L5_argtuple_error; @@ -13011,7 +12771,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23__call__(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 798, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 796, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -13047,7 +12807,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_pybuffernd__x.data = NULL; __pyx_pybuffernd__x.rcbuffer = &__pyx_pybuffer__x; - /* "cython/interface.pyx":801 + /* "cython/interface.pyx":799 * """return objective function value of input `x`""" * cdef np.ndarray[double, ndim=1, mode="c"] _x * assert self.initialized # <<<<<<<<<<<<<< @@ -13056,43 +12816,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 801, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 799, __pyx_L1_error) if (unlikely(!__pyx_t_1)) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 801, __pyx_L1_error) + __PYX_ERR(0, 799, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":802 + /* "cython/interface.pyx":800 * cdef np.ndarray[double, ndim=1, mode="c"] _x * assert self.initialized * x = np.array(x, copy=False, dtype=np.double, order='C') # <<<<<<<<<<<<<< * if np.size(x) != self.number_of_variables: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 802, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 802, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 802, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); - __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 802, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 802, __pyx_L1_error) - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 802, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 800, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 802, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 802, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 800, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 802, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 802, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 800, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -13100,16 +12860,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":803 + /* "cython/interface.pyx":801 * assert self.initialized * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -13123,13 +12883,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob } } if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 801, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else @@ -13137,43 +12897,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 801, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else #endif { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_x); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 801, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 801, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(__pyx_t_1)) { + if (__pyx_t_1) { - /* "cython/interface.pyx":805 + /* "cython/interface.pyx":803 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 805, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 805, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -13187,13 +12947,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob } } if (!__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else @@ -13201,68 +12961,73 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 805, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 805, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":807 + /* "cython/interface.pyx":805 * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) # <<<<<<<<<<<<<< * _x = x # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 807, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 807, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":805 + /* "cython/interface.pyx":803 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":804 + /* "cython/interface.pyx":802 * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: * raise ValueError( # <<<<<<<<<<<<<< * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." */ - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 804, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 802, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 804, __pyx_L1_error) + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 802, __pyx_L1_error) - /* "cython/interface.pyx":803 + /* "cython/interface.pyx":801 * assert self.initialized * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< @@ -13271,20 +13036,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ } - /* "cython/interface.pyx":808 + /* "cython/interface.pyx":806 * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) * _x = x # this is the final type conversion # <<<<<<<<<<<<<< * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 808, __pyx_L1_error) - __pyx_t_4 = __pyx_v_x; - __Pyx_INCREF(__pyx_t_4); + if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 806, __pyx_L1_error) + __pyx_t_3 = __pyx_v_x; + __Pyx_INCREF(__pyx_t_3); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__x.rcbuffer->pybuffer); - __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_4), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); + __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_3), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack); if (unlikely(__pyx_t_7 < 0)) { PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd__x.rcbuffer->pybuffer, (PyObject*)__pyx_v__x, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) { @@ -13296,12 +13061,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0; } __pyx_pybuffernd__x.diminfo[0].strides = __pyx_pybuffernd__x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__x.diminfo[0].shape = __pyx_pybuffernd__x.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 808, __pyx_L1_error) + if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 806, __pyx_L1_error) } - __pyx_v__x = ((PyArrayObject *)__pyx_t_4); - __pyx_t_4 = 0; + __pyx_v__x = ((PyArrayObject *)__pyx_t_3); + __pyx_t_3 = 0; - /* "cython/interface.pyx":809 + /* "cython/interface.pyx":807 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -13309,40 +13074,40 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob * coco_evaluate_function(self.problem, */ __pyx_t_1 = ((__pyx_v_self->problem == NULL) != 0); - if (unlikely(__pyx_t_1)) { + if (__pyx_t_1) { - /* "cython/interface.pyx":810 + /* "cython/interface.pyx":808 * _x = x # this is the final type conversion * if self.problem is NULL: * raise InvalidProblemException() # <<<<<<<<<<<<<< * coco_evaluate_function(self.problem, * np.PyArray_DATA(_x), */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 810, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 808, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); + __Pyx_DECREF_SET(__pyx_t_4, function); } } if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 810, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 808, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 810, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 808, __pyx_L1_error) } - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 810, __pyx_L1_error) + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 808, __pyx_L1_error) - /* "cython/interface.pyx":809 + /* "cython/interface.pyx":807 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -13351,27 +13116,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ } - /* "cython/interface.pyx":813 + /* "cython/interface.pyx":811 * coco_evaluate_function(self.problem, * np.PyArray_DATA(_x), * np.PyArray_DATA(self.y_values)) # <<<<<<<<<<<<<< * if self._number_of_objectives == 1: * return self.y_values[0] */ - __pyx_t_4 = ((PyObject *)__pyx_v_self->y_values); - __Pyx_INCREF(__pyx_t_4); + __pyx_t_3 = ((PyObject *)__pyx_v_self->y_values); + __Pyx_INCREF(__pyx_t_3); - /* "cython/interface.pyx":811 + /* "cython/interface.pyx":809 * if self.problem is NULL: * raise InvalidProblemException() * coco_evaluate_function(self.problem, # <<<<<<<<<<<<<< * np.PyArray_DATA(_x), * np.PyArray_DATA(self.y_values)) */ - coco_evaluate_function(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_4)))); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + coco_evaluate_function(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_3)))); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":814 + /* "cython/interface.pyx":812 * np.PyArray_DATA(_x), * np.PyArray_DATA(self.y_values)) * if self._number_of_objectives == 1: # <<<<<<<<<<<<<< @@ -13381,7 +13146,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_t_1 = ((__pyx_v_self->_number_of_objectives == 1) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":815 + /* "cython/interface.pyx":813 * np.PyArray_DATA(self.y_values)) * if self._number_of_objectives == 1: * return self.y_values[0] # <<<<<<<<<<<<<< @@ -13389,13 +13154,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->y_values), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 815, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; + __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->y_values), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 813, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":814 + /* "cython/interface.pyx":812 * np.PyArray_DATA(_x), * np.PyArray_DATA(self.y_values)) * if self._number_of_objectives == 1: # <<<<<<<<<<<<<< @@ -13404,7 +13169,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ } - /* "cython/interface.pyx":816 + /* "cython/interface.pyx":814 * if self._number_of_objectives == 1: * return self.y_values[0] * return np.array(self.y_values, copy=True) # <<<<<<<<<<<<<< @@ -13412,29 +13177,29 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 816, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 816, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 816, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 814, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_self->y_values)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->y_values)); - PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self->y_values)); - __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 816, __pyx_L1_error) + PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->y_values)); + __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 816, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 816, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 814, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":798 + /* "cython/interface.pyx":796 * * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): * def __call__(self, x): # <<<<<<<<<<<<<< @@ -13468,7 +13233,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":819 +/* "cython/interface.pyx":817 * * @property * def id(self): # <<<<<<<<<<<<<< @@ -13496,7 +13261,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":821 + /* "cython/interface.pyx":819 * def id(self): * "id as string without spaces or weird characters" * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -13506,7 +13271,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":822 + /* "cython/interface.pyx":820 * "id as string without spaces or weird characters" * if self.problem is not NULL: * return coco_problem_get_id(self.problem) # <<<<<<<<<<<<<< @@ -13514,13 +13279,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o * def _parse_id(self, substr): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 822, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":821 + /* "cython/interface.pyx":819 * def id(self): * "id as string without spaces or weird characters" * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -13529,7 +13294,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o */ } - /* "cython/interface.pyx":819 + /* "cython/interface.pyx":817 * * @property * def id(self): # <<<<<<<<<<<<<< @@ -13550,7 +13315,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":824 +/* "cython/interface.pyx":822 * return coco_problem_get_id(self.problem) * * def _parse_id(self, substr): # <<<<<<<<<<<<<< @@ -13584,7 +13349,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o Py_ssize_t __pyx_t_6; __Pyx_RefNannySetupContext("_parse_id", 0); - /* "cython/interface.pyx":826 + /* "cython/interface.pyx":824 * def _parse_id(self, substr): * "search `substr` in `id` and return converted `int` up to '_'" * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -13594,7 +13359,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o __pyx_t_1 = ((__pyx_v_self->problem == NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":827 + /* "cython/interface.pyx":825 * "search `substr` in `id` and return converted `int` up to '_'" * if self.problem is NULL: * return None # <<<<<<<<<<<<<< @@ -13602,10 +13367,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o * if i < 0: */ __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + __Pyx_INCREF(Py_None); + __pyx_r = Py_None; goto __pyx_L0; - /* "cython/interface.pyx":826 + /* "cython/interface.pyx":824 * def _parse_id(self, substr): * "search `substr` in `id` and return converted `int` up to '_'" * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -13614,16 +13380,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o */ } - /* "cython/interface.pyx":828 + /* "cython/interface.pyx":826 * if self.problem is NULL: * return None * i = self.id.find(substr) # <<<<<<<<<<<<<< * if i < 0: * raise ValueError() */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 828, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_find); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 828, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_find); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; @@ -13637,13 +13403,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o } } if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_substr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_substr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_substr}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else @@ -13651,19 +13417,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_substr}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 828, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_substr); __Pyx_GIVEREF(__pyx_v_substr); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_substr); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } @@ -13672,32 +13438,32 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o __pyx_v_i = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":829 + /* "cython/interface.pyx":827 * return None * i = self.id.find(substr) * if i < 0: # <<<<<<<<<<<<<< * raise ValueError() * return int(self.id[i + len(substr):].split('_')[0]) */ - __pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 829, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 829, __pyx_L1_error) + __pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 827, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 827, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(__pyx_t_1)) { + if (__pyx_t_1) { - /* "cython/interface.pyx":830 + /* "cython/interface.pyx":828 * i = self.id.find(substr) * if i < 0: * raise ValueError() # <<<<<<<<<<<<<< * return int(self.id[i + len(substr):].split('_')[0]) * */ - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_ValueError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 830, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_ValueError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 830, __pyx_L1_error) + __PYX_ERR(0, 828, __pyx_L1_error) - /* "cython/interface.pyx":829 + /* "cython/interface.pyx":827 * return None * i = self.id.find(substr) * if i < 0: # <<<<<<<<<<<<<< @@ -13706,7 +13472,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o */ } - /* "cython/interface.pyx":831 + /* "cython/interface.pyx":829 * if i < 0: * raise ValueError() * return int(self.id[i + len(substr):].split('_')[0]) # <<<<<<<<<<<<<< @@ -13714,35 +13480,35 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 831, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = PyObject_Length(__pyx_v_substr); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 831, __pyx_L1_error) - __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 831, __pyx_L1_error) + __pyx_t_6 = PyObject_Length(__pyx_v_substr); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 829, __pyx_L1_error) + __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyNumber_Add(__pyx_v_i, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 831, __pyx_L1_error) + __pyx_t_5 = PyNumber_Add(__pyx_v_i, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, 0, &__pyx_t_5, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 831, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, 0, &__pyx_t_5, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 831, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 831, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 831, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 831, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":824 + /* "cython/interface.pyx":822 * return coco_problem_get_id(self.problem) * * def _parse_id(self, substr): # <<<<<<<<<<<<<< @@ -13765,7 +13531,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":834 +/* "cython/interface.pyx":832 * * @property * def id_function(self): # <<<<<<<<<<<<<< @@ -13800,7 +13566,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":836 + /* "cython/interface.pyx":834 * def id_function(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13816,7 +13582,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "cython/interface.pyx":837 + /* "cython/interface.pyx":835 * "see __init__.py" * try: * return self._parse_id('_f') # <<<<<<<<<<<<<< @@ -13824,16 +13590,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru * raise ValueError("cannot deduce function id from '%s'" % self.id) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parse_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 837, __pyx_L3_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parse_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 835, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 837, __pyx_L3_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 835, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L7_try_return; - /* "cython/interface.pyx":836 + /* "cython/interface.pyx":834 * def id_function(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13845,7 +13611,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "cython/interface.pyx":838 + /* "cython/interface.pyx":836 * try: * return self._parse_id('_f') * except ValueError: # <<<<<<<<<<<<<< @@ -13855,34 +13621,39 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); if (__pyx_t_6) { __Pyx_AddTraceback("cocoex.interface.Problem.id_function.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 838, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 836, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_7); - /* "cython/interface.pyx":839 + /* "cython/interface.pyx":837 * return self._parse_id('_f') * except ValueError: * raise ValueError("cannot deduce function id from '%s'" % self.id) # <<<<<<<<<<<<<< * * @property */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 839, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 837, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_cannot_deduce_function_id_from_s, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 839, __pyx_L5_except_error) + __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_cannot_deduce_function_id_from_s, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 837, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 839, __pyx_L5_except_error) + __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 837, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); + __pyx_t_9 = 0; + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 837, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(0, 839, __pyx_L5_except_error) + __Pyx_Raise(__pyx_t_9, 0, 0, 0); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __PYX_ERR(0, 837, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "cython/interface.pyx":836 + /* "cython/interface.pyx":834 * def id_function(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13902,7 +13673,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru goto __pyx_L0; } - /* "cython/interface.pyx":834 + /* "cython/interface.pyx":832 * * @property * def id_function(self): # <<<<<<<<<<<<<< @@ -13925,7 +13696,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru return __pyx_r; } -/* "cython/interface.pyx":842 +/* "cython/interface.pyx":840 * * @property * def id_instance(self): # <<<<<<<<<<<<<< @@ -13960,7 +13731,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":844 + /* "cython/interface.pyx":842 * def id_instance(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13976,7 +13747,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "cython/interface.pyx":845 + /* "cython/interface.pyx":843 * "see __init__.py" * try: * return self._parse_id('_i') # <<<<<<<<<<<<<< @@ -13984,16 +13755,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru * raise ValueError("cannot deduce instance id from '%s'" % self.id) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parse_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 845, __pyx_L3_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parse_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 843, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 845, __pyx_L3_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 843, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L7_try_return; - /* "cython/interface.pyx":844 + /* "cython/interface.pyx":842 * def id_instance(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -14005,7 +13776,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "cython/interface.pyx":846 + /* "cython/interface.pyx":844 * try: * return self._parse_id('_i') * except ValueError: # <<<<<<<<<<<<<< @@ -14015,34 +13786,39 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); if (__pyx_t_6) { __Pyx_AddTraceback("cocoex.interface.Problem.id_instance.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 846, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 844, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_7); - /* "cython/interface.pyx":847 + /* "cython/interface.pyx":845 * return self._parse_id('_i') * except ValueError: * raise ValueError("cannot deduce instance id from '%s'" % self.id) # <<<<<<<<<<<<<< * * @property */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 847, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 845, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_cannot_deduce_instance_id_from_s, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 847, __pyx_L5_except_error) + __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_cannot_deduce_instance_id_from_s, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 845, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 847, __pyx_L5_except_error) + __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 845, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); + __pyx_t_9 = 0; + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 845, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(0, 847, __pyx_L5_except_error) + __Pyx_Raise(__pyx_t_9, 0, 0, 0); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __PYX_ERR(0, 845, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "cython/interface.pyx":844 + /* "cython/interface.pyx":842 * def id_instance(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -14062,7 +13838,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru goto __pyx_L0; } - /* "cython/interface.pyx":842 + /* "cython/interface.pyx":840 * * @property * def id_instance(self): # <<<<<<<<<<<<<< @@ -14085,7 +13861,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru return __pyx_r; } -/* "cython/interface.pyx":850 +/* "cython/interface.pyx":848 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -14113,7 +13889,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":851 + /* "cython/interface.pyx":849 * @property * def name(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -14123,7 +13899,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":852 + /* "cython/interface.pyx":850 * def name(self): * if self.problem is not NULL: * return coco_problem_get_name(self.problem) # <<<<<<<<<<<<<< @@ -14131,13 +13907,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 852, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":851 + /* "cython/interface.pyx":849 * @property * def name(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -14146,7 +13922,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx */ } - /* "cython/interface.pyx":850 + /* "cython/interface.pyx":848 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -14167,7 +13943,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx return __pyx_r; } -/* "cython/interface.pyx":855 +/* "cython/interface.pyx":853 * * @property * def index(self): # <<<<<<<<<<<<<< @@ -14193,7 +13969,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":857 + /* "cython/interface.pyx":855 * def index(self): * """problem index in the benchmark `Suite` of origin""" * return self._problem_index # <<<<<<<<<<<<<< @@ -14205,7 +13981,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __py __pyx_r = __pyx_v_self->_problem_index; goto __pyx_L0; - /* "cython/interface.pyx":855 + /* "cython/interface.pyx":853 * * @property * def index(self): # <<<<<<<<<<<<<< @@ -14220,7 +13996,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":860 +/* "cython/interface.pyx":858 * * @property * def suite(self): # <<<<<<<<<<<<<< @@ -14246,7 +14022,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":862 + /* "cython/interface.pyx":860 * def suite(self): * """benchmark suite this problem is from""" * return self._suite_name # <<<<<<<<<<<<<< @@ -14258,7 +14034,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __py __pyx_r = __pyx_v_self->_suite_name; goto __pyx_L0; - /* "cython/interface.pyx":860 + /* "cython/interface.pyx":858 * * @property * def suite(self): # <<<<<<<<<<<<<< @@ -14273,7 +14049,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":865 +/* "cython/interface.pyx":863 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -14298,9 +14074,10 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":867 + /* "cython/interface.pyx":865 * def info(self): * """see __init__.py""" * return str(self) # <<<<<<<<<<<<<< @@ -14308,13 +14085,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx * def __str__(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 867, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 865, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":865 + /* "cython/interface.pyx":863 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -14325,6 +14108,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cocoex.interface.Problem.info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -14333,7 +14117,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx return __pyx_r; } -/* "cython/interface.pyx":869 +/* "cython/interface.pyx":867 * return str(self) * * def __str__(self): # <<<<<<<<<<<<<< @@ -14366,13 +14150,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; - Py_ssize_t __pyx_t_6; - Py_UCS4 __pyx_t_7; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; __Pyx_RefNannySetupContext("__str__", 0); - /* "cython/interface.pyx":870 + /* "cython/interface.pyx":868 * * def __str__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -14382,299 +14165,255 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":871 + /* "cython/interface.pyx":869 * def __str__(self): * if self.problem is not NULL: * dimensional = "%d-dimensional" % self.dimension # <<<<<<<<<<<<<< * objective = "%s-objective" % { * 1: 'single', */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 871, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 869, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_d_dimensional, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 871, __pyx_L1_error) + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_d_dimensional, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 869, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_dimensional = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":873 + /* "cython/interface.pyx":871 * dimensional = "%d-dimensional" % self.dimension * objective = "%s-objective" % { * 1: 'single', # <<<<<<<<<<<<<< * 2: 'bi'}.get(self.number_of_objectives, * str(self.number_of_objectives)) */ - __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 873, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_int_1, __pyx_n_u_single) < 0) __PYX_ERR(0, 873, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_3, __pyx_int_2, __pyx_n_u_bi) < 0) __PYX_ERR(0, 873, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_int_1, __pyx_n_u_single) < 0) __PYX_ERR(0, 871, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_int_2, __pyx_n_u_bi) < 0) __PYX_ERR(0, 871, __pyx_L1_error) - /* "cython/interface.pyx":874 + /* "cython/interface.pyx":872 * objective = "%s-objective" % { * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, # <<<<<<<<<<<<<< * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 874, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 872, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - /* "cython/interface.pyx":875 + /* "cython/interface.pyx":873 * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, * str(self.number_of_objectives)) # <<<<<<<<<<<<<< * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 875, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 875, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 873, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "cython/interface.pyx":874 + /* "cython/interface.pyx":872 * objective = "%s-objective" % { * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, # <<<<<<<<<<<<<< * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( */ - __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_t_3, __pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 874, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 872, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":872 + /* "cython/interface.pyx":870 * if self.problem is not NULL: * dimensional = "%d-dimensional" % self.dimension * objective = "%s-objective" % { # <<<<<<<<<<<<<< * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, */ - __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_s_objective, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 872, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_objective = ((PyObject*)__pyx_t_5); - __pyx_t_5 = 0; + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_s_objective, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 870, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_objective = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; - /* "cython/interface.pyx":876 + /* "cython/interface.pyx":874 * 2: 'bi'}.get(self.number_of_objectives, * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( # <<<<<<<<<<<<<< * " with %d constraint%s" % (self.number_of_constraints, * "s" if self.number_of_constraints > 1 else "") */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 876, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_4, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 876, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 874, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 876, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_5 = __pyx_kp_u__2; + __pyx_t_4 = __pyx_kp_u__2; } else { - /* "cython/interface.pyx":877 + /* "cython/interface.pyx":875 * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, # <<<<<<<<<<<<<< * "s" if self.number_of_constraints > 1 else "") * ) */ - __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 877, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = 0; - __pyx_t_7 = 127; - __Pyx_INCREF(__pyx_kp_u_with_2); - __pyx_t_6 += 6; - __Pyx_GIVEREF(__pyx_kp_u_with_2); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_with_2); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 877, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_Format(__pyx_t_4, __pyx_n_u_d); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 877, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); - __pyx_t_3 = 0; - __Pyx_INCREF(__pyx_kp_u_constraint); - __pyx_t_6 += 11; - __Pyx_GIVEREF(__pyx_kp_u_constraint); - PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_constraint); - /* "cython/interface.pyx":878 + /* "cython/interface.pyx":876 * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, * "s" if self.number_of_constraints > 1 else "") # <<<<<<<<<<<<<< * ) * integer_variables = "" if self.number_of_integer_variables == 0 else ( */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 878, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_8 = PyObject_RichCompare(__pyx_t_4, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 878, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 878, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (__pyx_t_9) { + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 876, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 876, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 876, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (__pyx_t_7) { __Pyx_INCREF(__pyx_n_u_s); - __pyx_t_3 = __pyx_n_u_s; + __pyx_t_5 = __pyx_n_u_s; } else { __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_3 = __pyx_kp_u__2; + __pyx_t_5 = __pyx_kp_u__2; } - __pyx_t_8 = __Pyx_PyUnicode_Unicode(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 878, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_8); - PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_8); - __pyx_t_8 = 0; - /* "cython/interface.pyx":877 + /* "cython/interface.pyx":875 * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, # <<<<<<<<<<<<<< * "s" if self.number_of_constraints > 1 else "") * ) */ - __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 877, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __pyx_t_8; - __pyx_t_8 = 0; + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 875, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); + __pyx_t_2 = 0; + __pyx_t_5 = 0; + __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_with_d_constraint_s, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 875, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_4 = __pyx_t_5; + __pyx_t_5 = 0; } - __pyx_v_constraints = ((PyObject*)__pyx_t_5); - __pyx_t_5 = 0; + __pyx_v_constraints = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; - /* "cython/interface.pyx":880 + /* "cython/interface.pyx":878 * "s" if self.number_of_constraints > 1 else "") * ) * integer_variables = "" if self.number_of_integer_variables == 0 else ( # <<<<<<<<<<<<<< * " %s %d integer variable%s" % ("and" if constraints != "" else "with", * self.number_of_integer_variables, */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 880, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_8, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 880, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 880, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 878, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 878, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 878, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_1) { __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_5 = __pyx_kp_u__2; + __pyx_t_4 = __pyx_kp_u__2; } else { - /* "cython/interface.pyx":881 + /* "cython/interface.pyx":879 * ) * integer_variables = "" if self.number_of_integer_variables == 0 else ( * " %s %d integer variable%s" % ("and" if constraints != "" else "with", # <<<<<<<<<<<<<< * self.number_of_integer_variables, * "s" if self.number_of_integer_variables > 1 else "") */ - __pyx_t_2 = PyTuple_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 881, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = 0; - __pyx_t_7 = 127; - __Pyx_INCREF(__pyx_kp_u__11); - __pyx_t_6 += 1; - __Pyx_GIVEREF(__pyx_kp_u__11); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__11); - __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_constraints, __pyx_kp_u__2, Py_NE)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 881, __pyx_L1_error) - if ((__pyx_t_9 != 0)) { + __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_constraints, __pyx_kp_u__2, Py_NE)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 879, __pyx_L1_error) + if ((__pyx_t_7 != 0)) { __Pyx_INCREF(__pyx_n_u_and); - __pyx_t_8 = __pyx_n_u_and; + __pyx_t_6 = __pyx_n_u_and; } else { - __Pyx_INCREF(__pyx_n_u_with_3); - __pyx_t_8 = __pyx_n_u_with_3; + __Pyx_INCREF(__pyx_n_u_with); + __pyx_t_6 = __pyx_n_u_with; } - __pyx_t_3 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 881, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); - __pyx_t_3 = 0; - __Pyx_INCREF(__pyx_kp_u__11); - __pyx_t_6 += 1; - __Pyx_GIVEREF(__pyx_kp_u__11); - PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__11); - /* "cython/interface.pyx":882 + /* "cython/interface.pyx":880 * integer_variables = "" if self.number_of_integer_variables == 0 else ( * " %s %d integer variable%s" % ("and" if constraints != "" else "with", * self.number_of_integer_variables, # <<<<<<<<<<<<<< * "s" if self.number_of_integer_variables > 1 else "") * ) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 882, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = __Pyx_PyObject_Format(__pyx_t_3, __pyx_n_u_d); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 882, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_8); - PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_8); - __pyx_t_8 = 0; - __Pyx_INCREF(__pyx_kp_u_integer_variable); - __pyx_t_6 += 17; - __Pyx_GIVEREF(__pyx_kp_u_integer_variable); - PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_integer_variable); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 880, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); - /* "cython/interface.pyx":883 + /* "cython/interface.pyx":881 * " %s %d integer variable%s" % ("and" if constraints != "" else "with", * self.number_of_integer_variables, * "s" if self.number_of_integer_variables > 1 else "") # <<<<<<<<<<<<<< * ) * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_8 = PyObject_RichCompare(__pyx_t_3, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 881, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 883, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__pyx_t_9) { + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 881, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__pyx_t_7) { __Pyx_INCREF(__pyx_n_u_s); - __pyx_t_8 = __pyx_n_u_s; + __pyx_t_2 = __pyx_n_u_s; } else { __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_8 = __pyx_kp_u__2; + __pyx_t_2 = __pyx_kp_u__2; } - __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 883, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_t_4); - __pyx_t_4 = 0; - /* "cython/interface.pyx":881 + /* "cython/interface.pyx":879 * ) * integer_variables = "" if self.number_of_integer_variables == 0 else ( * " %s %d integer variable%s" % ("and" if constraints != "" else "with", # <<<<<<<<<<<<<< * self.number_of_integer_variables, * "s" if self.number_of_integer_variables > 1 else "") */ - __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_2, 6, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 881, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __pyx_t_4; - __pyx_t_4 = 0; + __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 879, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_2); + __pyx_t_6 = 0; + __pyx_t_5 = 0; + __pyx_t_2 = 0; + __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_s_d_integer_variable_s, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 879, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_4 = __pyx_t_2; + __pyx_t_2 = 0; } - __pyx_v_integer_variables = ((PyObject*)__pyx_t_5); - __pyx_t_5 = 0; + __pyx_v_integer_variables = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; - /* "cython/interface.pyx":885 + /* "cython/interface.pyx":883 * "s" if self.number_of_integer_variables > 1 else "") * ) * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( # <<<<<<<<<<<<<< @@ -14682,134 +14421,80 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj * self.suite, self.name) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_5 = PyTuple_New(15); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 885, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = 0; - __pyx_t_7 = 127; - /* "cython/interface.pyx":886 + /* "cython/interface.pyx":884 * ) * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( * self.id, dimensional, objective, constraints, integer_variables, self.index, # <<<<<<<<<<<<<< * self.suite, self.name) * # self.name.replace(self.name.split()[0], */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 886, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 884, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 886, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_kp_u_a); - __pyx_t_6 += 4; - __Pyx_GIVEREF(__pyx_kp_u_a); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_kp_u_a); - __Pyx_INCREF(__pyx_v_dimensional); - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_dimensional) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_dimensional) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_v_dimensional); - __Pyx_GIVEREF(__pyx_v_dimensional); - PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_dimensional); - __Pyx_INCREF(__pyx_kp_u__11); - __pyx_t_6 += 1; - __Pyx_GIVEREF(__pyx_kp_u__11); - PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_kp_u__11); - __Pyx_INCREF(__pyx_v_objective); - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_objective) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_objective) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_v_objective); - __Pyx_GIVEREF(__pyx_v_objective); - PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_v_objective); - __Pyx_INCREF(__pyx_kp_u_problem); - __pyx_t_6 += 8; - __Pyx_GIVEREF(__pyx_kp_u_problem); - PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_kp_u_problem); - __pyx_t_2 = __Pyx_PyUnicode_Unicode(__pyx_v_constraints); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 886, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 884, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyUnicode_Unicode(__pyx_v_integer_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 886, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_5, 7, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_kp_u_problem_2); - __pyx_t_6 += 10; - __Pyx_GIVEREF(__pyx_kp_u_problem_2); - PyTuple_SET_ITEM(__pyx_t_5, 8, __pyx_kp_u_problem_2); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 886, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_2, __pyx_n_u_d); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 886, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_5, 9, __pyx_t_4); - __pyx_t_4 = 0; - __Pyx_INCREF(__pyx_kp_u_of_suite); - __pyx_t_6 += 11; - __Pyx_GIVEREF(__pyx_kp_u_of_suite); - PyTuple_SET_ITEM(__pyx_t_5, 10, __pyx_kp_u_of_suite); - /* "cython/interface.pyx":887 + /* "cython/interface.pyx":885 * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( * self.id, dimensional, objective, constraints, integer_variables, self.index, * self.suite, self.name) # <<<<<<<<<<<<<< * # self.name.replace(self.name.split()[0], * # self.name.split()[0] + "(%d)" */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_suite); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 887, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 887, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_5, 11, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_kp_u_with_name); - __pyx_t_6 += 13; - __Pyx_GIVEREF(__pyx_kp_u_with_name); - PyTuple_SET_ITEM(__pyx_t_5, 12, __pyx_kp_u_with_name); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 887, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_2), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 887, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7; - __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_suite); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 885, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 885, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + + /* "cython/interface.pyx":884 + * ) + * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( + * self.id, dimensional, objective, constraints, integer_variables, self.index, # <<<<<<<<<<<<<< + * self.suite, self.name) + * # self.name.replace(self.name.split()[0], + */ + __pyx_t_6 = PyTuple_New(8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 884, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_5, 13, __pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); + __Pyx_INCREF(__pyx_v_dimensional); + __Pyx_GIVEREF(__pyx_v_dimensional); + PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_dimensional); + __Pyx_INCREF(__pyx_v_objective); + __Pyx_GIVEREF(__pyx_v_objective); + PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_objective); + __Pyx_INCREF(__pyx_v_constraints); + __Pyx_GIVEREF(__pyx_v_constraints); + PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_v_constraints); + __Pyx_INCREF(__pyx_v_integer_variables); + __Pyx_GIVEREF(__pyx_v_integer_variables); + PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_v_integer_variables); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_6, 5, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_6, 6, __pyx_t_8); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_6, 7, __pyx_t_5); __pyx_t_4 = 0; - __Pyx_INCREF(__pyx_kp_u__31); - __pyx_t_6 += 2; - __Pyx_GIVEREF(__pyx_kp_u__31); - PyTuple_SET_ITEM(__pyx_t_5, 14, __pyx_kp_u__31); + __pyx_t_2 = 0; + __pyx_t_8 = 0; + __pyx_t_5 = 0; - /* "cython/interface.pyx":885 + /* "cython/interface.pyx":883 * "s" if self.number_of_integer_variables > 1 else "") * ) * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( # <<<<<<<<<<<<<< * self.id, dimensional, objective, constraints, integer_variables, self.index, * self.suite, self.name) */ - __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_5, 15, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 885, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; + __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_s_a_s_s_problem_s_s_problem_d_o, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; goto __pyx_L0; - /* "cython/interface.pyx":870 + /* "cython/interface.pyx":868 * * def __str__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -14818,7 +14503,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj */ } - /* "cython/interface.pyx":892 + /* "cython/interface.pyx":890 * # % (self.index if self.index is not None else -2))) * else: * return "finalized/invalid problem" # <<<<<<<<<<<<<< @@ -14832,7 +14517,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj goto __pyx_L0; } - /* "cython/interface.pyx":869 + /* "cython/interface.pyx":867 * return str(self) * * def __str__(self): # <<<<<<<<<<<<<< @@ -14846,6 +14531,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("cocoex.interface.Problem.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; @@ -14859,7 +14545,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj return __pyx_r; } -/* "cython/interface.pyx":894 +/* "cython/interface.pyx":892 * return "finalized/invalid problem" * * def __repr__(self): # <<<<<<<<<<<<<< @@ -14885,14 +14571,11 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; - Py_ssize_t __pyx_t_3; - Py_UCS4 __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("__repr__", 0); - /* "cython/interface.pyx":895 + /* "cython/interface.pyx":893 * * def __repr__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -14902,7 +14585,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":896 + /* "cython/interface.pyx":894 * def __repr__(self): * if self.problem is not NULL: * return "<%s(), id=%r>" % ( # <<<<<<<<<<<<<< @@ -14910,104 +14593,88 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob * # self.problem_suite, self.problem_index, */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 896, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = 0; - __pyx_t_4 = 127; - __Pyx_INCREF(__pyx_kp_u__32); - __pyx_t_3 += 1; - __Pyx_GIVEREF(__pyx_kp_u__32); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__32); - /* "cython/interface.pyx":897 + /* "cython/interface.pyx":895 * if self.problem is not NULL: * return "<%s(), id=%r>" % ( * repr(self.__class__).split()[1][1:-2], # <<<<<<<<<<<<<< * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 897, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = PyObject_Repr(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 897, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_split); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 897, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_7); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 895, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_Repr(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 895, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 895, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); + __Pyx_DECREF_SET(__pyx_t_3, function); } } - if (__pyx_t_7) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 897, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (__pyx_t_4) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 895, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 897, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 895, __pyx_L1_error) } - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 897, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_6, 1, -2L, NULL, NULL, &__pyx_slice__33, 1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 897, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_5), __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 897, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_4; - __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6); - __pyx_t_6 = 0; - __Pyx_INCREF(__pyx_kp_u_id_3); - __pyx_t_3 += 7; - __Pyx_GIVEREF(__pyx_kp_u_id_3); - PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_id_3); - - /* "cython/interface.pyx":899 - * repr(self.__class__).split()[1][1:-2], - * # self.problem_suite, self.problem_index, - * self.id) # <<<<<<<<<<<<<< - * else: + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 895, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, -2L, NULL, NULL, &__pyx_slice__27, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 895, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "cython/interface.pyx":897 + * repr(self.__class__).split()[1][1:-2], + * # self.problem_suite, self.problem_index, + * self.id) # <<<<<<<<<<<<<< + * else: * return "" */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 899, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_6), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 899, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4; - __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5); - __pyx_t_5 = 0; - __Pyx_INCREF(__pyx_kp_u__34); - __pyx_t_3 += 1; - __Pyx_GIVEREF(__pyx_kp_u__34); - PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__34); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 897, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "cython/interface.pyx":895 + * if self.problem is not NULL: + * return "<%s(), id=%r>" % ( + * repr(self.__class__).split()[1][1:-2], # <<<<<<<<<<<<<< + * # self.problem_suite, self.problem_index, + * self.id) + */ + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 895, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); + __pyx_t_2 = 0; + __pyx_t_3 = 0; - /* "cython/interface.pyx":896 + /* "cython/interface.pyx":894 * def __repr__(self): * if self.problem is not NULL: * return "<%s(), id=%r>" % ( # <<<<<<<<<<<<<< * repr(self.__class__).split()[1][1:-2], * # self.problem_suite, self.problem_index, */ - __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 896, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __pyx_t_5 = 0; + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_s_id_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 894, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":895 + /* "cython/interface.pyx":893 * * def __repr__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -15016,7 +14683,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob */ } - /* "cython/interface.pyx":901 + /* "cython/interface.pyx":899 * self.id) * else: * return "" # <<<<<<<<<<<<<< @@ -15030,7 +14697,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob goto __pyx_L0; } - /* "cython/interface.pyx":894 + /* "cython/interface.pyx":892 * return "finalized/invalid problem" * * def __repr__(self): # <<<<<<<<<<<<<< @@ -15041,9 +14708,8 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cocoex.interface.Problem.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -15052,7 +14718,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":903 +/* "cython/interface.pyx":901 * return "" * * def __enter__(self): # <<<<<<<<<<<<<< @@ -15079,7 +14745,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__enter__(struct __pyx_o __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__enter__", 0); - /* "cython/interface.pyx":906 + /* "cython/interface.pyx":904 * """Allows ``with Suite(...)[index] as problem:`` (or ``Suite(...).get_problem(...)``) * """ * return self # <<<<<<<<<<<<<< @@ -15091,7 +14757,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__enter__(struct __pyx_o __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":903 + /* "cython/interface.pyx":901 * return "" * * def __enter__(self): # <<<<<<<<<<<<<< @@ -15106,7 +14772,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__enter__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":907 +/* "cython/interface.pyx":905 * """ * return self * def __exit__(self, exception_type, exception_value, traceback): # <<<<<<<<<<<<<< @@ -15142,23 +14808,23 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_33__exit__(PyObject *__pyx kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exception_type)) != 0)) kw_args--; + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_type)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exception_value)) != 0)) kw_args--; + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_value)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 907, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 905, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--; + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 907, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 905, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 907, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 905, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -15173,7 +14839,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_33__exit__(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 907, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 905, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -15197,7 +14863,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("__exit__", 0); - /* "cython/interface.pyx":908 + /* "cython/interface.pyx":906 * return self * def __exit__(self, exception_type, exception_value, traceback): * try: # <<<<<<<<<<<<<< @@ -15213,14 +14879,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "cython/interface.pyx":909 + /* "cython/interface.pyx":907 * def __exit__(self, exception_type, exception_value, traceback): * try: * self.free() # <<<<<<<<<<<<<< * except: * pass */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_free); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 909, __pyx_L3_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_free); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 907, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { @@ -15233,16 +14899,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob } } if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 909, __pyx_L3_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 907, __pyx_L3_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 909, __pyx_L3_error) + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 907, __pyx_L3_error) } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":908 + /* "cython/interface.pyx":906 * return self * def __exit__(self, exception_type, exception_value, traceback): * try: # <<<<<<<<<<<<<< @@ -15259,7 +14925,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":910 + /* "cython/interface.pyx":908 * try: * self.free() * except: # <<<<<<<<<<<<<< @@ -15278,7 +14944,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob __pyx_L8_try_end:; } - /* "cython/interface.pyx":907 + /* "cython/interface.pyx":905 * """ * return self * def __exit__(self, exception_type, exception_value, traceback): # <<<<<<<<<<<<<< @@ -15324,7 +14990,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_34__reduce_cython__(CYTHON * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -15377,7 +15043,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36__setstate_cython__(CYTH * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -15400,7 +15066,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36__setstate_cython__(CYTH return __pyx_r; } -/* "cython/interface.pyx":913 +/* "cython/interface.pyx":911 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< @@ -15434,12 +15100,12 @@ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, Py switch (pos_args) { case 0: if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_level); + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_level); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log_level") < 0)) __PYX_ERR(0, 913, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log_level") < 0)) __PYX_ERR(0, 911, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -15453,7 +15119,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, Py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("log_level", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 913, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("log_level", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 911, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.log_level", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -15476,7 +15142,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ char const *__pyx_t_4; __Pyx_RefNannySetupContext("log_level", 0); - /* "cython/interface.pyx":920 + /* "cython/interface.pyx":918 * with increasing verbosity, or '' which doesn't change anything. * """ * cdef bytes _level = _bstring(level if level is not None else "") # <<<<<<<<<<<<<< @@ -15490,13 +15156,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_1 = __pyx_kp_u__2; } - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 920, __pyx_L1_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 918, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v__level = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":921 + /* "cython/interface.pyx":919 * """ * cdef bytes _level = _bstring(level if level is not None else "") * return coco_set_log_level(_level) # <<<<<<<<<<<<<< @@ -15504,16 +15170,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ __Pyx_XDECREF(__pyx_r); if (unlikely(__pyx_v__level == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 921, __pyx_L1_error) + __PYX_ERR(0, 919, __pyx_L1_error) } - __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_v__level); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 921, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyStr_FromString(coco_set_log_level(__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 921, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_v__level); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 919, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyStr_FromString(coco_set_log_level(__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":913 + /* "cython/interface.pyx":911 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< @@ -15534,12 +15200,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ return __pyx_r; } -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":215 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":214 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< * # This implementation of getbuffer is geared towards Cython - * # requirements, and does not yet fulfill the PEP. + * # requirements, and does not yet fullfill the PEP. */ /* Python wrapper */ @@ -15556,6 +15222,7 @@ static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx } static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { + int __pyx_v_copy_shape; int __pyx_v_i; int __pyx_v_ndim; int __pyx_v_endian_detector; @@ -15564,6 +15231,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P char *__pyx_v_f; PyArray_Descr *__pyx_v_descr = 0; int __pyx_v_offset; + int __pyx_v_hasfields; int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -15571,28 +15239,38 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P PyObject *__pyx_t_3 = NULL; int __pyx_t_4; int __pyx_t_5; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - char *__pyx_t_8; - if (__pyx_v_info == NULL) { - PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete"); - return -1; - } + PyObject *__pyx_t_6 = NULL; + char *__pyx_t_7; __Pyx_RefNannySetupContext("__getbuffer__", 0); - __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(__pyx_v_info->obj); + if (__pyx_v_info != NULL) { + __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(__pyx_v_info->obj); + } + + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":220 + * # of flags + * + * if info == NULL: return # <<<<<<<<<<<<<< + * + * cdef int copy_shape, i, ndim + */ + __pyx_t_1 = ((__pyx_v_info == NULL) != 0); + if (__pyx_t_1) { + __pyx_r = 0; + goto __pyx_L0; + } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":223 * - * cdef int i, ndim + * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< * cdef bint little_endian = ((&endian_detector)[0] != 0) * */ __pyx_v_endian_detector = 1; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":223 - * cdef int i, ndim + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":224 + * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< * @@ -15600,18 +15278,59 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":225 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":226 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< * - * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) + * if sizeof(npy_intp) != sizeof(Py_ssize_t): */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":228 + * ndim = PyArray_NDIM(self) + * + * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< + * copy_shape = 1 + * else: + */ + __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); + if (__pyx_t_1) { + + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":229 + * + * if sizeof(npy_intp) != sizeof(Py_ssize_t): + * copy_shape = 1 # <<<<<<<<<<<<<< + * else: + * copy_shape = 0 + */ + __pyx_v_copy_shape = 1; + + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":228 * ndim = PyArray_NDIM(self) * + * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< + * copy_shape = 1 + * else: + */ + goto __pyx_L4; + } + + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":231 + * copy_shape = 1 + * else: + * copy_shape = 0 # <<<<<<<<<<<<<< + * + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) + */ + /*else*/ { + __pyx_v_copy_shape = 0; + } + __pyx_L4:; + + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":233 + * copy_shape = 0 + * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") @@ -15620,10 +15339,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; + goto __pyx_L6_bool_binop_done; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":234 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -15632,32 +15351,32 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0); __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; + __pyx_L6_bool_binop_done:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":227 - * ndim = PyArray_NDIM(self) + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":233 + * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") */ - if (unlikely(__pyx_t_1)) { + if (__pyx_t_1) { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":235 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 229, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 229, __pyx_L1_error) + __PYX_ERR(2, 235, __pyx_L1_error) - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":227 - * ndim = PyArray_NDIM(self) + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":233 + * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): @@ -15665,7 +15384,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":231 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":237 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -15676,10 +15395,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; - goto __pyx_L7_bool_binop_done; + goto __pyx_L9_bool_binop_done; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":238 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -15688,31 +15407,31 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0); __pyx_t_1 = __pyx_t_2; - __pyx_L7_bool_binop_done:; + __pyx_L9_bool_binop_done:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":231 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":237 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") */ - if (unlikely(__pyx_t_1)) { + if (__pyx_t_1) { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":239 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< * * info.buf = PyArray_DATA(self) */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 233, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 233, __pyx_L1_error) + __PYX_ERR(2, 239, __pyx_L1_error) - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":231 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":237 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -15721,35 +15440,35 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":241 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< * info.ndim = ndim - * if sizeof(npy_intp) != sizeof(Py_ssize_t): + * if copy_shape: */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":242 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< - * if sizeof(npy_intp) != sizeof(Py_ssize_t): + * if copy_shape: * # Allocate new buffer for strides and shape info. */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":237 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":243 * info.buf = PyArray_DATA(self) * info.ndim = ndim - * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< + * if copy_shape: # <<<<<<<<<<<<<< * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. */ - __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); + __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":246 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) # <<<<<<<<<<<<<< @@ -15758,7 +15477,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim)))); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":241 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":247 * # This is allocated as one block, strides first. * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -15767,7 +15486,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":242 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":248 * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -15775,11 +15494,10 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * info.shape[i] = PyArray_DIMS(self)[i] */ __pyx_t_4 = __pyx_v_ndim; - __pyx_t_5 = __pyx_t_4; - for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { - __pyx_v_i = __pyx_t_6; + for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { + __pyx_v_i = __pyx_t_5; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":243 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":249 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -15788,7 +15506,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":250 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -15798,17 +15516,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]); } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":237 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":243 * info.buf = PyArray_DATA(self) * info.ndim = ndim - * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< + * if copy_shape: # <<<<<<<<<<<<<< * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. */ - goto __pyx_L9; + goto __pyx_L11; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":252 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -15818,7 +15536,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":247 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":253 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -15827,9 +15545,9 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(__pyx_v_self)); } - __pyx_L9:; + __pyx_L11:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":254 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -15838,7 +15556,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":249 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":255 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -15847,7 +15565,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":250 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":256 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -15856,7 +15574,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":259 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -15865,7 +15583,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":260 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -15877,32 +15595,85 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":263 * cdef int offset * - * info.obj = self # <<<<<<<<<<<<<< + * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< * - * if not PyDataType_HASFIELDS(descr): + * if not hasfields and not copy_shape: */ - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - __Pyx_GOTREF(__pyx_v_info->obj); - __Pyx_DECREF(__pyx_v_info->obj); - __pyx_v_info->obj = ((PyObject *)__pyx_v_self); + __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); + + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":265 + * cdef bint hasfields = PyDataType_HASFIELDS(descr) + * + * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< + * # do not call releasebuffer + * info.obj = None + */ + __pyx_t_2 = ((!(__pyx_v_hasfields != 0)) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_2 = ((!(__pyx_v_copy_shape != 0)) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L15_bool_binop_done:; + if (__pyx_t_1) { + + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":267 + * if not hasfields and not copy_shape: + * # do not call releasebuffer + * info.obj = None # <<<<<<<<<<<<<< + * else: + * # need to call releasebuffer + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); + __pyx_v_info->obj = Py_None; + + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":265 + * cdef bint hasfields = PyDataType_HASFIELDS(descr) + * + * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< + * # do not call releasebuffer + * info.obj = None + */ + goto __pyx_L14; + } + + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":270 + * else: + * # need to call releasebuffer + * info.obj = self # <<<<<<<<<<<<<< + * + * if not hasfields: + */ + /*else*/ { + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); + __pyx_v_info->obj = ((PyObject *)__pyx_v_self); + } + __pyx_L14:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":259 - * info.obj = self + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":272 + * info.obj = self * - * if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<< + * if not hasfields: # <<<<<<<<<<<<<< * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or */ - __pyx_t_1 = ((!(PyDataType_HASFIELDS(__pyx_v_descr) != 0)) != 0); + __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":273 * - * if not PyDataType_HASFIELDS(descr): + * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): @@ -15910,8 +15681,8 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":261 - * if not PyDataType_HASFIELDS(descr): + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":274 + * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< * (descr.byteorder == c'<' and not little_endian)): @@ -15919,18 +15690,18 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_t_2 = ((__pyx_v_descr->byteorder == '>') != 0); if (!__pyx_t_2) { - goto __pyx_L15_next_or; + goto __pyx_L20_next_or; } else { } __pyx_t_2 = (__pyx_v_little_endian != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; - goto __pyx_L14_bool_binop_done; + goto __pyx_L19_bool_binop_done; } - __pyx_L15_next_or:; + __pyx_L20_next_or:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":275 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -15941,36 +15712,36 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; - goto __pyx_L14_bool_binop_done; + goto __pyx_L19_bool_binop_done; } __pyx_t_2 = ((!(__pyx_v_little_endian != 0)) != 0); __pyx_t_1 = __pyx_t_2; - __pyx_L14_bool_binop_done:; + __pyx_L19_bool_binop_done:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":261 - * if not PyDataType_HASFIELDS(descr): + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":274 + * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") */ - if (unlikely(__pyx_t_1)) { + if (__pyx_t_1) { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":276 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 263, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 263, __pyx_L1_error) + __PYX_ERR(2, 276, __pyx_L1_error) - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":261 - * if not PyDataType_HASFIELDS(descr): + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":274 + * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< * (descr.byteorder == c'<' and not little_endian)): @@ -15978,7 +15749,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":277 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -15990,7 +15761,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"b"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -16001,7 +15772,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"B"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":279 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -16012,7 +15783,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"h"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":280 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -16023,7 +15794,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"H"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":281 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -16034,7 +15805,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"i"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":282 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -16045,7 +15816,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"I"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":283 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -16056,7 +15827,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"l"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":284 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -16067,7 +15838,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"L"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":285 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -16078,7 +15849,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"q"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":286 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -16089,7 +15860,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Q"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":287 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -16100,7 +15871,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"f"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":275 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":288 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -16111,7 +15882,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"d"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":289 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -16122,7 +15893,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"g"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":290 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -16133,7 +15904,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zf"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":291 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -16144,7 +15915,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zd"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":279 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":292 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -16155,7 +15926,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zg"); break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":293 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -16167,28 +15938,33 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":295 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< * info.format = f * return */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 282, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 282, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 295, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 282, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 295, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 282, __pyx_L1_error) + __Pyx_Raise(__pyx_t_6, 0, 0, 0); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __PYX_ERR(2, 295, __pyx_L1_error) break; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":296 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -16197,7 +15973,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":284 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":297 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -16207,16 +15983,16 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_r = 0; goto __pyx_L0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":259 - * info.obj = self + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":272 + * info.obj = self * - * if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<< + * if not hasfields: # <<<<<<<<<<<<<< * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or */ } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":299 * return * else: * info.format = PyObject_Malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -16226,7 +16002,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->format = ((char *)PyObject_Malloc(0xFF)); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":287 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":300 * else: * info.format = PyObject_Malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -16235,7 +16011,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":301 * info.format = PyObject_Malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -16244,17 +16020,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":302 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< * info.format + _buffer_format_string_len, * &offset) */ - __pyx_t_8 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_8 == ((char *)NULL))) __PYX_ERR(2, 289, __pyx_L1_error) - __pyx_v_f = __pyx_t_8; + __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == ((char *)NULL))) __PYX_ERR(2, 302, __pyx_L1_error) + __pyx_v_f = __pyx_t_7; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":305 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -16264,12 +16040,12 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":214 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< * # This implementation of getbuffer is geared towards Cython - * # requirements, and does not yet fulfill the PEP. + * # requirements, and does not yet fullfill the PEP. */ /* function exit code */ @@ -16277,18 +16053,18 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; - if (__pyx_v_info->obj != NULL) { + if (__pyx_v_info != NULL && __pyx_v_info->obj != NULL) { __Pyx_GOTREF(__pyx_v_info->obj); - __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; + __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = NULL; } goto __pyx_L2; __pyx_L0:; - if (__pyx_v_info->obj == Py_None) { - __Pyx_GOTREF(__pyx_v_info->obj); - __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; + if (__pyx_v_info != NULL && __pyx_v_info->obj == Py_None) { + __Pyx_GOTREF(Py_None); + __Pyx_DECREF(Py_None); __pyx_v_info->obj = NULL; } __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_descr); @@ -16296,7 +16072,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":294 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":307 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -16320,7 +16096,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":295 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":308 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -16330,7 +16106,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":296 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":309 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * PyObject_Free(info.format) # <<<<<<<<<<<<<< @@ -16339,7 +16115,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ PyObject_Free(__pyx_v_info->format); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":295 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":308 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -16348,7 +16124,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":297 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":310 * if PyArray_HASFIELDS(self): * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -16358,7 +16134,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":298 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":311 * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * PyObject_Free(info.strides) # <<<<<<<<<<<<<< @@ -16367,7 +16143,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ PyObject_Free(__pyx_v_info->strides); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":297 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":310 * if PyArray_HASFIELDS(self): * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -16376,7 +16152,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":294 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":307 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -16388,7 +16164,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":775 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":788 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -16402,7 +16178,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":776 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":789 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -16410,13 +16186,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ * cdef inline object PyArray_MultiIterNew2(a, b): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 776, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":788 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -16435,7 +16211,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":778 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":791 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -16449,7 +16225,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":779 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":792 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -16457,13 +16233,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ * cdef inline object PyArray_MultiIterNew3(a, b, c): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 779, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 792, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":791 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -16482,7 +16258,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":781 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":794 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -16496,7 +16272,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":782 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":795 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -16504,13 +16280,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ * cdef inline object PyArray_MultiIterNew4(a, b, c, d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 782, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":794 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -16529,7 +16305,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":784 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":797 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -16543,7 +16319,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":785 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":798 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -16551,13 +16327,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 785, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":784 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":797 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -16576,7 +16352,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":787 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":800 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -16590,7 +16366,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":788 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":801 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -16598,13 +16374,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ * cdef inline tuple PyDataType_SHAPE(dtype d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 788, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":787 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":800 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -16623,7 +16399,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":790 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":803 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -16637,7 +16413,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ int __pyx_t_1; __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":804 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -16647,7 +16423,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0); if (__pyx_t_1) { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":792 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":805 * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape # <<<<<<<<<<<<<< @@ -16659,7 +16435,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape); goto __pyx_L0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":804 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -16668,7 +16444,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ */ } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":807 * return d.subarray.shape * else: * return () # <<<<<<<<<<<<<< @@ -16682,7 +16458,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ goto __pyx_L0; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":803 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -16697,7 +16473,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ return __pyx_r; } -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":796 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":809 * return () * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -16726,7 +16502,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx char *__pyx_t_9; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":814 * * cdef dtype child * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -16735,7 +16511,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":815 * cdef dtype child * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -16744,7 +16520,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":805 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":818 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -16753,21 +16529,21 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ if (unlikely(__pyx_v_descr->names == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(2, 805, __pyx_L1_error) + __PYX_ERR(2, 818, __pyx_L1_error) } __pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; for (;;) { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(2, 805, __pyx_L1_error) + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(2, 818, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 805, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":806 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":819 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -16776,15 +16552,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ if (unlikely(__pyx_v_descr->fields == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(2, 806, __pyx_L1_error) + __PYX_ERR(2, 819, __pyx_L1_error) } - __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 806, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(2, 806, __pyx_L1_error) + if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(2, 819, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":807 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":820 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -16793,11 +16569,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ if (likely(__pyx_v_fields != Py_None)) { PyObject* sequence = __pyx_v_fields; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + #if !CYTHON_COMPILING_IN_PYPY + Py_ssize_t size = Py_SIZE(sequence); + #else + Py_ssize_t size = PySequence_Size(sequence); + #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(2, 807, __pyx_L1_error) + __PYX_ERR(2, 820, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); @@ -16805,51 +16585,51 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); #else - __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 807, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 807, __pyx_L1_error) + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 807, __pyx_L1_error) + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 820, __pyx_L1_error) } - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(2, 807, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(2, 820, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3)); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":809 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":822 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * */ - __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 809, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 809, __pyx_L1_error) + __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 809, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 822, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); - if (unlikely(__pyx_t_6)) { + if (__pyx_t_6) { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":810 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":823 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< * * if ((child.byteorder == c'>' and little_endian) or */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 810, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 823, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 810, __pyx_L1_error) + __PYX_ERR(2, 823, __pyx_L1_error) - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":809 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":822 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -16858,7 +16638,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":812 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":825 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -16878,7 +16658,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":826 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -16895,29 +16675,29 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = __pyx_t_7; __pyx_L7_bool_binop_done:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":812 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":825 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") */ - if (unlikely(__pyx_t_6)) { + if (__pyx_t_6) { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":827 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * # One could encode it in the format string and have Cython * # complain instead, BUT: < and > in format strings also imply */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 814, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 814, __pyx_L1_error) + __PYX_ERR(2, 827, __pyx_L1_error) - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":812 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":825 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -16926,7 +16706,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":824 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":837 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -16934,15 +16714,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * f += 1 */ while (1) { - __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 824, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 837, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 824, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 837, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 824, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 837, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":825 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":838 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -16951,7 +16731,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 0x78; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":839 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -16960,7 +16740,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":840 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -16971,7 +16751,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":842 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -16981,7 +16761,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":844 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -16991,19 +16771,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":845 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") */ - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 832, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 845, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":846 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -17011,22 +16791,22 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * */ __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); - if (unlikely(__pyx_t_6)) { + if (__pyx_t_6) { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":847 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< * * # Until ticket #99 is fixed, use integers to avoid warnings */ - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 834, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(2, 834, __pyx_L1_error) + __PYX_ERR(2, 847, __pyx_L1_error) - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":846 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -17035,252 +16815,252 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":850 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 837, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 837, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 850, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 837, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 850, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 98; goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":851 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 838, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 851, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 838, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 851, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 838, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 851, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 66; goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":852 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 839, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 852, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 839, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 852, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 839, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 852, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x68; goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":853 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 840, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 840, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 853, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 840, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 853, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 72; goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":854 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 841, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 841, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 854, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 841, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 854, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x69; goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":855 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 842, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 842, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 855, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 842, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 855, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 73; goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":843 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":856 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 843, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 843, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 856, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 843, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 856, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x6C; goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":857 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 844, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 844, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 857, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 844, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 857, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 76; goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":858 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 845, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 845, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 858, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 845, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 858, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x71; goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":846 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":859 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 846, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 846, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 859, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 846, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 859, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 81; goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":847 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":860 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 847, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 860, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 847, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 860, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 847, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 860, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x66; goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":848 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":861 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 848, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 861, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 848, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 861, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 848, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 861, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x64; goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":862 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 849, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 862, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 849, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 862, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 849, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 862, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 0x67; goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":863 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 850, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 850, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 863, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 850, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 863, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; @@ -17289,18 +17069,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":851 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":864 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 851, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 851, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 864, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 851, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 864, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; @@ -17309,18 +17089,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":852 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":865 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 852, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 852, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 865, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 852, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 865, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; @@ -17329,25 +17109,25 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":853 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":866 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 853, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 866, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 853, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 866, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 853, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 866, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (likely(__pyx_t_6)) { + if (__pyx_t_6) { (__pyx_v_f[0]) = 79; goto __pyx_L15; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":855 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":868 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -17355,18 +17135,23 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * else: */ /*else*/ { - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 855, __pyx_L1_error) + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 855, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 868, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(2, 855, __pyx_L1_error) + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(2, 868, __pyx_L1_error) } __pyx_L15:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":856 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":869 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -17375,7 +17160,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":844 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -17385,7 +17170,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L13; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":860 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":873 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -17393,12 +17178,12 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * */ /*else*/ { - __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 860, __pyx_L1_error) + __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 873, __pyx_L1_error) __pyx_v_f = __pyx_t_9; } __pyx_L13:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":805 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":818 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -17408,7 +17193,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":861 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":874 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -17418,7 +17203,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":809 * return () * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -17443,7 +17228,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":977 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":990 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -17458,7 +17243,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":979 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":992 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -17469,7 +17254,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":993 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -17478,7 +17263,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_baseptr = NULL; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":979 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":992 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -17488,7 +17273,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a goto __pyx_L3; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":982 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":995 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -17498,7 +17283,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a /*else*/ { Py_INCREF(__pyx_v_base); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":983 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":996 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -17509,7 +17294,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":984 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":997 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -17518,7 +17303,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":985 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":998 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -17527,7 +17312,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":990 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -17539,7 +17324,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":987 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1000 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -17553,7 +17338,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":988 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1001 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -17563,7 +17348,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":989 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1002 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -17571,10 +17356,11 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py * return arr.base */ __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); + __Pyx_INCREF(Py_None); + __pyx_r = Py_None; goto __pyx_L0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":988 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1001 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -17583,7 +17369,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":991 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1004 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -17597,7 +17383,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":987 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1000 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -17612,7 +17398,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":996 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1009 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -17633,7 +17419,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_array", 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":997 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1010 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -17649,16 +17435,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":998 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1011 * cdef inline int import_array() except -1: * try: * _import_array() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.multiarray failed to import") */ - __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 998, __pyx_L3_error) + __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1011, __pyx_L3_error) - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":997 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1010 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -17672,7 +17458,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":999 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1012 * try: * _import_array() * except Exception: # <<<<<<<<<<<<<< @@ -17682,28 +17468,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 999, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1012, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1000 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1013 * _import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_umath() except -1: */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1000, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1013, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 1000, __pyx_L5_except_error) + __PYX_ERR(2, 1013, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":997 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1010 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -17718,7 +17504,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_L8_try_end:; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":996 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1009 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -17741,7 +17527,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1002 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1015 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -17762,7 +17548,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_umath", 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1003 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1016 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -17778,16 +17564,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1004 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1017 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.umath failed to import") */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1004, __pyx_L3_error) + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1017, __pyx_L3_error) - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1003 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1016 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -17801,7 +17587,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1005 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1018 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -17811,28 +17597,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1005, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1018, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1006 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1019 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_ufunc() except -1: */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1006, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1019, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 1006, __pyx_L5_except_error) + __PYX_ERR(2, 1019, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1003 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1016 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -17847,7 +17633,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_L8_try_end:; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1002 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1015 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -17870,7 +17656,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1008 +/* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1021 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -17891,7 +17677,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1009 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1022 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -17907,16 +17693,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1010 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1023 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.umath failed to import") */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1010, __pyx_L3_error) + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1023, __pyx_L3_error) - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1009 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1022 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -17930,7 +17716,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1011 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1024 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -17939,26 +17725,26 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1011, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1024, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1012 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1025 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1012, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1025, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 1012, __pyx_L5_except_error) + __PYX_ERR(2, 1025, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1009 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1022 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -17973,7 +17759,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_L8_try_end:; } - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1008 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1021 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18911,45 +18697,34 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_k_Dimension_np_size_y_d_of_input_y, sizeof(__pyx_k_Dimension_np_size_y_d_of_input_y), 0, 1, 0, 0}, {&__pyx_kp_u_Format_string_allocated_too_shor, __pyx_k_Format_string_allocated_too_shor, sizeof(__pyx_k_Format_string_allocated_too_shor), 0, 1, 0, 0}, {&__pyx_kp_u_Format_string_allocated_too_shor_2, __pyx_k_Format_string_allocated_too_shor_2, sizeof(__pyx_k_Format_string_allocated_too_shor_2), 0, 1, 0, 0}, - {&__pyx_kp_u_If, __pyx_k_If, sizeof(__pyx_k_If), 0, 1, 0, 0}, {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, {&__pyx_n_s_InvalidProblemException, __pyx_k_InvalidProblemException, sizeof(__pyx_k_InvalidProblemException), 0, 0, 1, 1}, - {&__pyx_kp_u_Known_suite_names_are, __pyx_k_Known_suite_names_are, sizeof(__pyx_k_Known_suite_names_are), 0, 1, 0, 0}, {&__pyx_n_s_NoSuchProblemException, __pyx_k_NoSuchProblemException, sizeof(__pyx_k_NoSuchProblemException), 0, 0, 1, 1}, {&__pyx_n_s_NoSuchSuiteException, __pyx_k_NoSuchSuiteException, sizeof(__pyx_k_NoSuchSuiteException), 0, 0, 1, 1}, {&__pyx_kp_u_No_suite_with_name_s_found, __pyx_k_No_suite_with_name_s_found, sizeof(__pyx_k_No_suite_with_name_s_found), 0, 1, 0, 0}, {&__pyx_kp_u_Non_native_byte_order_not_suppor, __pyx_k_Non_native_byte_order_not_suppor, sizeof(__pyx_k_Non_native_byte_order_not_suppor), 0, 1, 0, 0}, - {&__pyx_kp_u_None, __pyx_k_None, sizeof(__pyx_k_None), 0, 1, 0, 0}, {&__pyx_n_s_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 0, 1, 1}, {&__pyx_kp_u_Problem_already_initialized, __pyx_k_Problem_already_initialized, sizeof(__pyx_k_Problem_already_initialized), 0, 1, 0, 0}, {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1}, - {&__pyx_kp_u_Suite, __pyx_k_Suite, sizeof(__pyx_k_Suite), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_2, __pyx_k_Suite_2, sizeof(__pyx_k_Suite_2), 0, 1, 0, 0}, {&__pyx_n_s_Suite___iter, __pyx_k_Suite___iter, sizeof(__pyx_k_Suite___iter), 0, 0, 1, 1}, {&__pyx_kp_u_Suite_current_index___get___line, __pyx_k_Suite_current_index___get___line, sizeof(__pyx_k_Suite_current_index___get___line), 0, 1, 0, 0}, {&__pyx_kp_u_Suite_get_problem_by_function_di, __pyx_k_Suite_get_problem_by_function_di, sizeof(__pyx_k_Suite_get_problem_by_function_di), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_get_problem_line_195, __pyx_k_Suite_get_problem_line_195, sizeof(__pyx_k_Suite_get_problem_line_195), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_get_problem_line_193, __pyx_k_Suite_get_problem_line_193, sizeof(__pyx_k_Suite_get_problem_line_193), 0, 1, 0, 0}, {&__pyx_kp_u_Suite_has_been_finalized_free_ed, __pyx_k_Suite_has_been_finalized_free_ed, sizeof(__pyx_k_Suite_has_been_finalized_free_ed), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_ids_line_299, __pyx_k_Suite_ids_line_299, sizeof(__pyx_k_Suite_ids_line_299), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_ids_line_297, __pyx_k_Suite_ids_line_297, sizeof(__pyx_k_Suite_ids_line_297), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_r_r_r, __pyx_k_Suite_r_r_r, sizeof(__pyx_k_Suite_r_r_r), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_k_Suite_s_s_s_with_d_problem_s_in, sizeof(__pyx_k_Suite_s_s_s_with_d_problem_s_in), 0, 1, 0, 0}, {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, - {&__pyx_kp_u_Unkown_benchmark_suite_name, __pyx_k_Unkown_benchmark_suite_name, sizeof(__pyx_k_Unkown_benchmark_suite_name), 0, 1, 0, 0}, + {&__pyx_kp_u_Unkown_benchmark_suite_name_s_K, __pyx_k_Unkown_benchmark_suite_name_s_K, sizeof(__pyx_k_Unkown_benchmark_suite_name_s_K), 0, 1, 0, 0}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, {&__pyx_kp_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 0}, {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0}, - {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0}, + {&__pyx_kp_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 0}, + {&__pyx_kp_u__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0, 0}, {&__pyx_kp_u__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 1, 0, 0}, - {&__pyx_kp_u__17, __pyx_k__17, sizeof(__pyx_k__17), 0, 1, 0, 0}, - {&__pyx_kp_u__18, __pyx_k__18, sizeof(__pyx_k__18), 0, 1, 0, 0}, - {&__pyx_kp_u__19, __pyx_k__19, sizeof(__pyx_k__19), 0, 1, 0, 0}, + {&__pyx_kp_u__16, __pyx_k__16, sizeof(__pyx_k__16), 0, 1, 0, 0}, {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0}, - {&__pyx_kp_u__20, __pyx_k__20, sizeof(__pyx_k__20), 0, 1, 0, 0}, - {&__pyx_n_u__27, __pyx_k__27, sizeof(__pyx_k__27), 0, 1, 0, 1}, - {&__pyx_kp_u__31, __pyx_k__31, sizeof(__pyx_k__31), 0, 1, 0, 0}, - {&__pyx_kp_u__32, __pyx_k__32, sizeof(__pyx_k__32), 0, 1, 0, 0}, - {&__pyx_kp_u__34, __pyx_k__34, sizeof(__pyx_k__34), 0, 1, 0, 0}, - {&__pyx_kp_u__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0, 0}, - {&__pyx_kp_u__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 1, 0, 0}, - {&__pyx_kp_u_a, __pyx_k_a, sizeof(__pyx_k_a), 0, 1, 0, 0}, + {&__pyx_n_u__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 1, 0, 1}, {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, {&__pyx_n_u_and, __pyx_k_and, sizeof(__pyx_k_and), 0, 1, 0, 1}, {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, @@ -18972,10 +18747,9 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, {&__pyx_n_s_cocoex_exceptions, __pyx_k_cocoex_exceptions, sizeof(__pyx_k_cocoex_exceptions), 0, 0, 1, 1}, {&__pyx_n_s_cocoex_interface, __pyx_k_cocoex_interface, sizeof(__pyx_k_cocoex_interface), 0, 0, 1, 1}, - {&__pyx_kp_u_constraint, __pyx_k_constraint, sizeof(__pyx_k_constraint), 0, 1, 0, 0}, {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1}, {&__pyx_kp_s_cython_interface_pyx, __pyx_k_cython_interface_pyx, sizeof(__pyx_k_cython_interface_pyx), 0, 0, 1, 0}, - {&__pyx_n_u_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 1, 0, 1}, + {&__pyx_kp_u_d_d, __pyx_k_d_d, sizeof(__pyx_k_d_d), 0, 1, 0, 0}, {&__pyx_kp_u_d_dimensional, __pyx_k_d_dimensional, sizeof(__pyx_k_d_dimensional), 0, 1, 0, 0}, {&__pyx_n_u_deactivated, __pyx_k_deactivated, sizeof(__pyx_k_deactivated), 0, 1, 0, 1}, {&__pyx_n_s_dealloc, __pyx_k_dealloc, sizeof(__pyx_k_dealloc), 0, 0, 1, 1}, @@ -19007,24 +18781,19 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_u_has_never_been_tested_incomment, __pyx_k_has_never_been_tested_incomment, sizeof(__pyx_k_has_never_been_tested_incomment), 0, 1, 0, 0}, {&__pyx_n_u_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 1, 0, 1}, {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, - {&__pyx_kp_u_id_2, __pyx_k_id_2, sizeof(__pyx_k_id_2), 0, 1, 0, 0}, - {&__pyx_kp_u_id_3, __pyx_k_id_3, sizeof(__pyx_k_id_3), 0, 1, 0, 0}, + {&__pyx_kp_u_id_s_index_d, __pyx_k_id_s_index_d, sizeof(__pyx_k_id_s_index_d), 0, 1, 0, 0}, {&__pyx_kp_u_ids_id_snippets_get_problem_Fal, __pyx_k_ids_id_snippets_get_problem_Fal, sizeof(__pyx_k_ids_id_snippets_get_problem_Fal), 0, 1, 0, 0}, {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, {&__pyx_kp_u_in_Problem__initialize_problem_p, __pyx_k_in_Problem__initialize_problem_p, sizeof(__pyx_k_in_Problem__initialize_problem_p), 0, 1, 0, 0}, - {&__pyx_kp_u_in_dimension, __pyx_k_in_dimension, sizeof(__pyx_k_in_dimension), 0, 1, 0, 0}, {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1}, - {&__pyx_kp_u_index_2, __pyx_k_index_2, sizeof(__pyx_k_index_2), 0, 1, 0, 0}, {&__pyx_kp_u_index_in_the_enumerator_of_all_p, __pyx_k_index_in_the_enumerator_of_all_p, sizeof(__pyx_k_index_in_the_enumerator_of_all_p), 0, 1, 0, 0}, {&__pyx_n_s_indices, __pyx_k_indices, sizeof(__pyx_k_indices), 0, 0, 1, 1}, {&__pyx_n_s_inf, __pyx_k_inf, sizeof(__pyx_k_inf), 0, 0, 1, 1}, {&__pyx_n_s_initial_solution, __pyx_k_initial_solution, sizeof(__pyx_k_initial_solution), 0, 0, 1, 1}, {&__pyx_n_u_initialized, __pyx_k_initialized, sizeof(__pyx_k_initialized), 0, 1, 0, 1}, {&__pyx_n_s_instance, __pyx_k_instance, sizeof(__pyx_k_instance), 0, 0, 1, 1}, - {&__pyx_kp_u_integer_variable, __pyx_k_integer_variable, sizeof(__pyx_k_integer_variable), 0, 1, 0, 0}, {&__pyx_n_s_iter, __pyx_k_iter, sizeof(__pyx_k_iter), 0, 0, 1, 1}, {&__pyx_n_s_known_suite_names, __pyx_k_known_suite_names, sizeof(__pyx_k_known_suite_names), 0, 0, 1, 1}, - {&__pyx_n_s_known_suite_names_2, __pyx_k_known_suite_names_2, sizeof(__pyx_k_known_suite_names_2), 0, 0, 1, 1}, {&__pyx_n_s_level, __pyx_k_level, sizeof(__pyx_k_level), 0, 0, 1, 1}, {&__pyx_n_s_level_2, __pyx_k_level_2, sizeof(__pyx_k_level_2), 0, 0, 1, 1}, {&__pyx_n_s_log_level, __pyx_k_log_level, sizeof(__pyx_k_log_level), 0, 0, 1, 1}, @@ -19050,15 +18819,12 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_u_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 1, 0, 0}, {&__pyx_n_s_observe_with, __pyx_k_observe_with, sizeof(__pyx_k_observe_with), 0, 0, 1, 1}, {&__pyx_n_s_observer, __pyx_k_observer, sizeof(__pyx_k_observer), 0, 0, 1, 1}, - {&__pyx_kp_u_of_suite, __pyx_k_of_suite, sizeof(__pyx_k_of_suite), 0, 1, 0, 0}, {&__pyx_n_s_ones, __pyx_k_ones, sizeof(__pyx_k_ones), 0, 0, 1, 1}, {&__pyx_n_s_options, __pyx_k_options, sizeof(__pyx_k_options), 0, 0, 1, 1}, {&__pyx_n_s_order, __pyx_k_order, sizeof(__pyx_k_order), 0, 0, 1, 1}, {&__pyx_n_s_parse_id, __pyx_k_parse_id, sizeof(__pyx_k_parse_id), 0, 0, 1, 1}, {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, {&__pyx_n_u_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 1, 0, 1}, - {&__pyx_kp_u_problem, __pyx_k_problem, sizeof(__pyx_k_problem), 0, 1, 0, 0}, - {&__pyx_kp_u_problem_2, __pyx_k_problem_2, sizeof(__pyx_k_problem_2), 0, 1, 0, 0}, {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, {&__pyx_n_s_rand, __pyx_k_rand, sizeof(__pyx_k_rand), 0, 0, 1, 1}, {&__pyx_n_s_random, __pyx_k_random, sizeof(__pyx_k_random), 0, 0, 1, 1}, @@ -19071,6 +18837,9 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_restart_number, __pyx_k_restart_number, sizeof(__pyx_k_restart_number), 0, 0, 1, 1}, {&__pyx_kp_u_returns_a_Problem_instance_by_de, __pyx_k_returns_a_Problem_instance_by_de, sizeof(__pyx_k_returns_a_Problem_instance_by_de), 0, 1, 0, 0}, {&__pyx_n_u_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 1, 0, 1}, + {&__pyx_kp_u_s_a_s_s_problem_s_s_problem_d_o, __pyx_k_s_a_s_s_problem_s_s_problem_d_o, sizeof(__pyx_k_s_a_s_s_problem_s_s_problem_d_o), 0, 1, 0, 0}, + {&__pyx_kp_u_s_d_integer_variable_s, __pyx_k_s_d_integer_variable_s, sizeof(__pyx_k_s_d_integer_variable_s), 0, 1, 0, 0}, + {&__pyx_kp_u_s_id_r, __pyx_k_s_id_r, sizeof(__pyx_k_s_id_r), 0, 1, 0, 0}, {&__pyx_kp_u_s_objective, __pyx_k_s_objective, sizeof(__pyx_k_s_objective), 0, 1, 0, 0}, {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, @@ -19093,29 +18862,26 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_upper_bounds, __pyx_k_upper_bounds, sizeof(__pyx_k_upper_bounds), 0, 0, 1, 1}, {&__pyx_n_s_verbose, __pyx_k_verbose, sizeof(__pyx_k_verbose), 0, 0, 1, 1}, {&__pyx_n_u_warning, __pyx_k_warning, sizeof(__pyx_k_warning), 0, 1, 0, 1}, - {&__pyx_kp_u_was_not_a_typo_you_can_add_the, __pyx_k_was_not_a_typo_you_can_add_the, sizeof(__pyx_k_was_not_a_typo_you_can_add_the), 0, 1, 0, 0}, {&__pyx_n_s_what, __pyx_k_what, sizeof(__pyx_k_what), 0, 0, 1, 1}, - {&__pyx_kp_u_with, __pyx_k_with, sizeof(__pyx_k_with), 0, 1, 0, 0}, - {&__pyx_kp_u_with_2, __pyx_k_with_2, sizeof(__pyx_k_with_2), 0, 1, 0, 0}, - {&__pyx_n_u_with_3, __pyx_k_with_3, sizeof(__pyx_k_with_3), 0, 1, 0, 1}, - {&__pyx_kp_u_with_name, __pyx_k_with_name, sizeof(__pyx_k_with_name), 0, 1, 0, 0}, + {&__pyx_n_u_with, __pyx_k_with, sizeof(__pyx_k_with), 0, 1, 0, 1}, + {&__pyx_kp_u_with_d_constraint_s, __pyx_k_with_d_constraint_s, sizeof(__pyx_k_with_d_constraint_s), 0, 1, 0, 0}, {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1}, {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1}, {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 79, __pyx_L1_error) - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 177, __pyx_L1_error) - __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 295, __pyx_L1_error) - __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 338, __pyx_L1_error) - __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 339, __pyx_L1_error) - __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 341, __pyx_L1_error) - __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(0, 414, __pyx_L1_error) - __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 414, __pyx_L1_error) - __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 534, __pyx_L1_error) - __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 558, __pyx_L1_error) - __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1000, __pyx_L1_error) + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 77, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 175, __pyx_L1_error) + __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 293, __pyx_L1_error) + __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 336, __pyx_L1_error) + __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 532, __pyx_L1_error) + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1013, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; @@ -19125,69 +18891,69 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "cython/interface.pyx":77 + /* "cython/interface.pyx":75 * return s * if isinstance(s, (str, unicode)): * return s.encode('ascii') # why not s.encode('ascii') ? # <<<<<<<<<<<<<< * else: * raise TypeError("expect a string, got %s" % str(type(s))) */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_u_ascii); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 77, __pyx_L1_error) + __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_u_ascii); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); - /* "cython/interface.pyx":146 + /* "cython/interface.pyx":144 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * while True: * old_level = log_level('warning') # <<<<<<<<<<<<<< * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) */ - __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_u_warning); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 146, __pyx_L1_error) + __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_u_warning); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "cython/interface.pyx":177 + /* "cython/interface.pyx":175 * global _current_observer * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * if self.current_problem_: * self.current_problem_.free() */ - __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 177, __pyx_L1_error) + __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 175, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "cython/interface.pyx":227 + /* "cython/interface.pyx":225 * """ * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * index = id * try: */ - __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 227, __pyx_L1_error) + __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 225, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "cython/interface.pyx":268 + /* "cython/interface.pyx":266 * * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, */ - __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 268, __pyx_L1_error) + __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 266, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); - /* "cython/interface.pyx":295 + /* "cython/interface.pyx":293 * def find_problem_ids(self, *args, **kwargs): * """has been renamed to `ids`""" * raise NotImplementedError( # <<<<<<<<<<<<<< * "`find_problem_ids()` has been renamed to `ids()`") * */ - __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_find_problem_ids_has_been_renam); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 295, __pyx_L1_error) + __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_find_problem_ids_has_been_renam); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 293, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7); @@ -19197,40 +18963,40 @@ static int __Pyx_InitCachedConstants(void) { * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__13); - __Pyx_GIVEREF(__pyx_tuple__13); + __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__8); + __Pyx_GIVEREF(__pyx_tuple__8); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__14); - __Pyx_GIVEREF(__pyx_tuple__14); + __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__9); + __Pyx_GIVEREF(__pyx_tuple__9); - /* "cython/interface.pyx":454 + /* "cython/interface.pyx":452 * def __cinit__(self, name, options): * if isinstance(options, dict): * s = str(options).replace(',', ' ') # <<<<<<<<<<<<<< * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') */ - __pyx_tuple__16 = PyTuple_Pack(2, __pyx_kp_u__15, __pyx_kp_u__11); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 454, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__16); - __Pyx_GIVEREF(__pyx_tuple__16); + __pyx_tuple__12 = PyTuple_Pack(2, __pyx_kp_u__10, __pyx_kp_u__11); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 452, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__12); + __Pyx_GIVEREF(__pyx_tuple__12); - /* "cython/interface.pyx":455 + /* "cython/interface.pyx":453 * if isinstance(options, dict): * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: # <<<<<<<<<<<<<< * s = s.replace(c, '') * options = s */ - __pyx_tuple__21 = PyTuple_Pack(6, __pyx_kp_u_u, __pyx_kp_u_u_2, __pyx_kp_u__17, __pyx_kp_u__18, __pyx_kp_u__19, __pyx_kp_u__20); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 455, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__21); - __Pyx_GIVEREF(__pyx_tuple__21); + __pyx_tuple__17 = PyTuple_Pack(6, __pyx_kp_u_u, __pyx_kp_u_u_2, __pyx_kp_u__13, __pyx_kp_u__14, __pyx_kp_u__15, __pyx_kp_u__16); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 453, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__17); + __Pyx_GIVEREF(__pyx_tuple__17); /* "(tree fragment)":2 * def __reduce_cython__(self): @@ -19238,95 +19004,95 @@ static int __Pyx_InitCachedConstants(void) { * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__22); - __Pyx_GIVEREF(__pyx_tuple__22); + __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__18); + __Pyx_GIVEREF(__pyx_tuple__18); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__23); - __Pyx_GIVEREF(__pyx_tuple__23); + __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__19); + __Pyx_GIVEREF(__pyx_tuple__19); - /* "cython/interface.pyx":534 + /* "cython/interface.pyx":532 * cdef np.npy_intp shape[1] * if self.initialized: * raise RuntimeError("Problem already initialized") # <<<<<<<<<<<<<< * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") */ - __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_u_Problem_already_initialized); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 534, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__24); - __Pyx_GIVEREF(__pyx_tuple__24); + __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_u_Problem_already_initialized); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 532, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__20); + __Pyx_GIVEREF(__pyx_tuple__20); - /* "cython/interface.pyx":536 + /* "cython/interface.pyx":534 * raise RuntimeError("Problem already initialized") * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") # <<<<<<<<<<<<<< * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) */ - __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_u_in_Problem__initialize_problem_p); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 536, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__25); - __Pyx_GIVEREF(__pyx_tuple__25); + __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_u_in_Problem__initialize_problem_p); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 534, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__21); + __Pyx_GIVEREF(__pyx_tuple__21); - /* "cython/interface.pyx":592 + /* "cython/interface.pyx":590 * for the assessment of the algorithm. * """ * raise NotImplementedError("has never been tested, incomment this to start testing") # <<<<<<<<<<<<<< * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_u_has_never_been_tested_incomment); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 592, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__26); - __Pyx_GIVEREF(__pyx_tuple__26); + __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u_has_never_been_tested_incomment); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 590, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__22); + __Pyx_GIVEREF(__pyx_tuple__22); - /* "cython/interface.pyx":831 + /* "cython/interface.pyx":829 * if i < 0: * raise ValueError() * return int(self.id[i + len(substr):].split('_')[0]) # <<<<<<<<<<<<<< * * @property */ - __pyx_tuple__28 = PyTuple_Pack(1, __pyx_n_u__27); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 831, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__28); - __Pyx_GIVEREF(__pyx_tuple__28); + __pyx_tuple__24 = PyTuple_Pack(1, __pyx_n_u__23); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 829, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__24); + __Pyx_GIVEREF(__pyx_tuple__24); - /* "cython/interface.pyx":837 + /* "cython/interface.pyx":835 * "see __init__.py" * try: * return self._parse_id('_f') # <<<<<<<<<<<<<< * except ValueError: * raise ValueError("cannot deduce function id from '%s'" % self.id) */ - __pyx_tuple__29 = PyTuple_Pack(1, __pyx_n_u_f); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 837, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__29); - __Pyx_GIVEREF(__pyx_tuple__29); + __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_u_f); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 835, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__25); + __Pyx_GIVEREF(__pyx_tuple__25); - /* "cython/interface.pyx":845 + /* "cython/interface.pyx":843 * "see __init__.py" * try: * return self._parse_id('_i') # <<<<<<<<<<<<<< * except ValueError: * raise ValueError("cannot deduce instance id from '%s'" % self.id) */ - __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_u_i); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 845, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__30); - __Pyx_GIVEREF(__pyx_tuple__30); + __pyx_tuple__26 = PyTuple_Pack(1, __pyx_n_u_i); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 843, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__26); + __Pyx_GIVEREF(__pyx_tuple__26); - /* "cython/interface.pyx":897 + /* "cython/interface.pyx":895 * if self.problem is not NULL: * return "<%s(), id=%r>" % ( * repr(self.__class__).split()[1][1:-2], # <<<<<<<<<<<<<< * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_slice__33 = PySlice_New(__pyx_int_1, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__33)) __PYX_ERR(0, 897, __pyx_L1_error) - __Pyx_GOTREF(__pyx_slice__33); - __Pyx_GIVEREF(__pyx_slice__33); + __pyx_slice__27 = PySlice_New(__pyx_int_1, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__27)) __PYX_ERR(0, 895, __pyx_L1_error) + __Pyx_GOTREF(__pyx_slice__27); + __Pyx_GIVEREF(__pyx_slice__27); /* "(tree fragment)":2 * def __reduce_cython__(self): @@ -19334,127 +19100,127 @@ static int __Pyx_InitCachedConstants(void) { * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(1, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__35); - __Pyx_GIVEREF(__pyx_tuple__35); + __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__28); + __Pyx_GIVEREF(__pyx_tuple__28); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__36); - __Pyx_GIVEREF(__pyx_tuple__36); + __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__29); + __Pyx_GIVEREF(__pyx_tuple__29); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":235 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) */ - __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(2, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__37); - __Pyx_GIVEREF(__pyx_tuple__37); + __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(2, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__30); + __Pyx_GIVEREF(__pyx_tuple__30); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":239 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< * * info.buf = PyArray_DATA(self) */ - __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(2, 233, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__38); - __Pyx_GIVEREF(__pyx_tuple__38); + __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(2, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__31); + __Pyx_GIVEREF(__pyx_tuple__31); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":276 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" */ - __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(2, 263, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__39); - __Pyx_GIVEREF(__pyx_tuple__39); + __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(2, 276, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__32); + __Pyx_GIVEREF(__pyx_tuple__32); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":810 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":823 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< * * if ((child.byteorder == c'>' and little_endian) or */ - __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(2, 810, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__40); - __Pyx_GIVEREF(__pyx_tuple__40); + __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(2, 823, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__33); + __Pyx_GIVEREF(__pyx_tuple__33); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":827 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * # One could encode it in the format string and have Cython * # complain instead, BUT: < and > in format strings also imply */ - __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(2, 814, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__41); - __Pyx_GIVEREF(__pyx_tuple__41); + __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(2, 827, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__34); + __Pyx_GIVEREF(__pyx_tuple__34); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":847 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< * * # Until ticket #99 is fixed, use integers to avoid warnings */ - __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(2, 834, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__42); - __Pyx_GIVEREF(__pyx_tuple__42); + __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(2, 847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__35); + __Pyx_GIVEREF(__pyx_tuple__35); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1000 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1013 * _import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_umath() except -1: */ - __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(2, 1000, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__43); - __Pyx_GIVEREF(__pyx_tuple__43); + __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(2, 1013, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__36); + __Pyx_GIVEREF(__pyx_tuple__36); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1006 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1019 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_ufunc() except -1: */ - __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(2, 1006, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__44); - __Pyx_GIVEREF(__pyx_tuple__44); + __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(2, 1019, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__37); + __Pyx_GIVEREF(__pyx_tuple__37); - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1012 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1025 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< */ - __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(2, 1012, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__45); - __Pyx_GIVEREF(__pyx_tuple__45); + __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(2, 1025, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__38); + __Pyx_GIVEREF(__pyx_tuple__38); - /* "cython/interface.pyx":913 + /* "cython/interface.pyx":911 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< * """`log_level(level=None)` return current log level and * set new log level if `level is not None and level`. */ - __pyx_tuple__46 = PyTuple_Pack(2, __pyx_n_s_level, __pyx_n_s_level_2); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 913, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__46); - __Pyx_GIVEREF(__pyx_tuple__46); - __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_cython_interface_pyx, __pyx_n_s_log_level, 913, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 913, __pyx_L1_error) + __pyx_tuple__39 = PyTuple_Pack(2, __pyx_n_s_level, __pyx_n_s_level_2); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 911, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__39); + __Pyx_GIVEREF(__pyx_tuple__39); + __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_cython_interface_pyx, __pyx_n_s_log_level, 911, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -19463,7 +19229,6 @@ static int __Pyx_InitCachedConstants(void) { } static int __Pyx_InitGlobals(void) { - __pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type; if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); __pyx_float_1_0 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_float_1_0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) @@ -19476,201 +19241,28 @@ static int __Pyx_InitGlobals(void) { return -1; } -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; +#if PY_MAJOR_VERSION < 3 +PyMODINIT_FUNC initinterface(void); /*proto*/ +PyMODINIT_FUNC initinterface(void) +#else +PyMODINIT_FUNC PyInit_interface(void); /*proto*/ +PyMODINIT_FUNC PyInit_interface(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); } - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __pyx_vtabptr_6cocoex_9interface_Suite = &__pyx_vtable_6cocoex_9interface_Suite; - __pyx_vtable_6cocoex_9interface_Suite._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Suite *))__pyx_f_6cocoex_9interface_5Suite__initialize; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 83, __pyx_L1_error) - __pyx_type_6cocoex_9interface_Suite.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6cocoex_9interface_Suite.tp_dictoffset && __pyx_type_6cocoex_9interface_Suite.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6cocoex_9interface_Suite.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #if CYTHON_COMPILING_IN_CPYTHON - { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 83, __pyx_L1_error) - if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { - __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base; - __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__.doc = __pyx_doc_6cocoex_9interface_5Suite_10__getitem__; - ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__; - } - } - #endif - #if CYTHON_COMPILING_IN_CPYTHON - { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__iter__"); if (unlikely(!wrapper)) __PYX_ERR(0, 83, __pyx_L1_error) - if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { - __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base; - __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__.doc = __pyx_doc_6cocoex_9interface_5Suite_26__iter__; - ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__; - } - } - #endif - if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Suite.tp_dict, __pyx_vtabptr_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 83, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Suite", (PyObject *)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 83, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 83, __pyx_L1_error) - __pyx_ptype_6cocoex_9interface_Suite = &__pyx_type_6cocoex_9interface_Suite; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 445, __pyx_L1_error) - __pyx_type_6cocoex_9interface_Observer.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6cocoex_9interface_Observer.tp_dictoffset && __pyx_type_6cocoex_9interface_Observer.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6cocoex_9interface_Observer.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "Observer", (PyObject *)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 445, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 445, __pyx_L1_error) - __pyx_ptype_6cocoex_9interface_Observer = &__pyx_type_6cocoex_9interface_Observer; - __pyx_vtabptr_6cocoex_9interface_Problem = &__pyx_vtable_6cocoex_9interface_Problem; - __pyx_vtable_6cocoex_9interface_Problem._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Problem *, coco_problem_t *, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args))__pyx_f_6cocoex_9interface_7Problem__initialize; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 509, __pyx_L1_error) - __pyx_type_6cocoex_9interface_Problem.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6cocoex_9interface_Problem.tp_dictoffset && __pyx_type_6cocoex_9interface_Problem.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6cocoex_9interface_Problem.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #if CYTHON_COMPILING_IN_CPYTHON - { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Problem, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 509, __pyx_L1_error) - if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { - __pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__ = *((PyWrapperDescrObject *)wrapper)->d_base; - __pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__.doc = __pyx_doc_6cocoex_9interface_7Problem_22__call__; - ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__; - } - } - #endif - if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Problem.tp_dict, __pyx_vtabptr_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 509, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Problem", (PyObject *)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 509, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 509, __pyx_L1_error) - __pyx_ptype_6cocoex_9interface_Problem = &__pyx_type_6cocoex_9interface_Problem; - if (PyType_Ready(&__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__) < 0) __PYX_ERR(0, 418, __pyx_L1_error) - __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_dictoffset && __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - __pyx_ptype_6cocoex_9interface___pyx_scope_struct____iter__ = &__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", - #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyTypeObject), - #else - sizeof(PyHeapTypeObject), - #endif - 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(3, 9, __pyx_L1_error) - __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(2, 164, __pyx_L1_error) - __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(2, 186, __pyx_L1_error) - __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(2, 190, __pyx_L1_error) - __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(2, 199, __pyx_L1_error) - __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(2, 872, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((optimize("Os"))) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC initinterface(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC initinterface(void) -#else -__Pyx_PyMODINIT_FUNC PyInit_interface(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit_interface(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; +static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + result = PyDict_SetItemString(moddict, to_name, value); + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; } static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { PyObject *module = NULL, *moddict, *modname; @@ -19704,19 +19296,17 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) __Pyx_RefNannyDeclarations #if CYTHON_PEP489_MULTI_PHASE_INIT if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); #endif #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_interface(void)", 0); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); + if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); + } + #endif + __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_interface(void)", 0); if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) @@ -19786,14 +19376,79 @@ if (!__Pyx_RefNanny) { if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - (void)__Pyx_modinit_variable_export_code(); - (void)__Pyx_modinit_function_export_code(); - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error; - (void)__Pyx_modinit_variable_import_code(); - (void)__Pyx_modinit_function_import_code(); + /*--- Global init code ---*/ + /*--- Variable export code ---*/ + /*--- Function export code ---*/ + /*--- Type init code ---*/ + __pyx_vtabptr_6cocoex_9interface_Suite = &__pyx_vtable_6cocoex_9interface_Suite; + __pyx_vtable_6cocoex_9interface_Suite._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Suite *))__pyx_f_6cocoex_9interface_5Suite__initialize; + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 81, __pyx_L1_error) + __pyx_type_6cocoex_9interface_Suite.tp_print = 0; + #if CYTHON_COMPILING_IN_CPYTHON + { + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 81, __pyx_L1_error) + if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { + __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__.doc = __pyx_doc_6cocoex_9interface_5Suite_10__getitem__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__; + } + } + #endif + #if CYTHON_COMPILING_IN_CPYTHON + { + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__iter__"); if (unlikely(!wrapper)) __PYX_ERR(0, 81, __pyx_L1_error) + if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { + __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__.doc = __pyx_doc_6cocoex_9interface_5Suite_26__iter__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__; + } + } + #endif + if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Suite.tp_dict, __pyx_vtabptr_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 81, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "Suite", (PyObject *)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 81, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 81, __pyx_L1_error) + __pyx_ptype_6cocoex_9interface_Suite = &__pyx_type_6cocoex_9interface_Suite; + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 443, __pyx_L1_error) + __pyx_type_6cocoex_9interface_Observer.tp_print = 0; + if (PyObject_SetAttrString(__pyx_m, "Observer", (PyObject *)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 443, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 443, __pyx_L1_error) + __pyx_ptype_6cocoex_9interface_Observer = &__pyx_type_6cocoex_9interface_Observer; + __pyx_vtabptr_6cocoex_9interface_Problem = &__pyx_vtable_6cocoex_9interface_Problem; + __pyx_vtable_6cocoex_9interface_Problem._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Problem *, coco_problem_t *, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args))__pyx_f_6cocoex_9interface_7Problem__initialize; + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 507, __pyx_L1_error) + __pyx_type_6cocoex_9interface_Problem.tp_print = 0; + #if CYTHON_COMPILING_IN_CPYTHON + { + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Problem, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 507, __pyx_L1_error) + if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { + __pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__.doc = __pyx_doc_6cocoex_9interface_7Problem_22__call__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__; + } + } + #endif + if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Problem.tp_dict, __pyx_vtabptr_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 507, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "Problem", (PyObject *)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 507, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 507, __pyx_L1_error) + __pyx_ptype_6cocoex_9interface_Problem = &__pyx_type_6cocoex_9interface_Problem; + if (PyType_Ready(&__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__) < 0) __PYX_ERR(0, 416, __pyx_L1_error) + __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_print = 0; + __pyx_ptype_6cocoex_9interface___pyx_scope_struct____iter__ = &__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__; + /*--- Type import code ---*/ + __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", + #if CYTHON_COMPILING_IN_PYPY + sizeof(PyTypeObject), + #else + sizeof(PyHeapTypeObject), + #endif + 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(3, 9, __pyx_L1_error) + __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(2, 163, __pyx_L1_error) + __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(2, 185, __pyx_L1_error) + __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(2, 189, __pyx_L1_error) + __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(2, 198, __pyx_L1_error) + __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(2, 885, __pyx_L1_error) + /*--- Variable import code ---*/ + /*--- Function import code ---*/ /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) @@ -19863,7 +19518,7 @@ if (!__Pyx_RefNanny) { * * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale", # <<<<<<<<<<<<<< * "bbob-mixint", "bbob-biobj-mixint"] - * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] + * */ __pyx_t_2 = PyList_New(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); @@ -19891,58 +19546,25 @@ if (!__Pyx_RefNanny) { if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":13 - * "bbob-mixint", "bbob-biobj-mixint"] - * # known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext"] - * _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale", # <<<<<<<<<<<<<< - * "bbob-mixint", "bbob-biobj-mixint"] - * - */ - __pyx_t_2 = PyList_New(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_u_bbob); - __Pyx_GIVEREF(__pyx_n_u_bbob); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_bbob); - __Pyx_INCREF(__pyx_kp_u_bbob_biobj); - __Pyx_GIVEREF(__pyx_kp_u_bbob_biobj); - PyList_SET_ITEM(__pyx_t_2, 1, __pyx_kp_u_bbob_biobj); - __Pyx_INCREF(__pyx_kp_u_bbob_biobj_ext); - __Pyx_GIVEREF(__pyx_kp_u_bbob_biobj_ext); - PyList_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_bbob_biobj_ext); - __Pyx_INCREF(__pyx_kp_u_bbob_constrained); - __Pyx_GIVEREF(__pyx_kp_u_bbob_constrained); - PyList_SET_ITEM(__pyx_t_2, 3, __pyx_kp_u_bbob_constrained); - __Pyx_INCREF(__pyx_kp_u_bbob_largescale); - __Pyx_GIVEREF(__pyx_kp_u_bbob_largescale); - PyList_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_bbob_largescale); - __Pyx_INCREF(__pyx_kp_u_bbob_mixint); - __Pyx_GIVEREF(__pyx_kp_u_bbob_mixint); - PyList_SET_ITEM(__pyx_t_2, 5, __pyx_kp_u_bbob_mixint); - __Pyx_INCREF(__pyx_kp_u_bbob_biobj_mixint); - __Pyx_GIVEREF(__pyx_kp_u_bbob_biobj_mixint); - PyList_SET_ITEM(__pyx_t_2, 6, __pyx_kp_u_bbob_biobj_mixint); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names_2, __pyx_t_2) < 0) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "cython/interface.pyx":20 + /* "cython/interface.pyx":18 * * # Must initialize numpy or risk segfaults * np.import_array() # <<<<<<<<<<<<<< * * cdef extern from "coco.h": */ - __pyx_t_3 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 20, __pyx_L1_error) + __pyx_t_3 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 18, __pyx_L1_error) - /* "cython/interface.pyx":913 + /* "cython/interface.pyx":911 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< * """`log_level(level=None)` return current log level and * set new log level if `level is not None and level`. */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6cocoex_9interface_1log_level, NULL, __pyx_n_s_cocoex_interface); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error) + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6cocoex_9interface_1log_level, NULL, __pyx_n_s_cocoex_interface); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_log_level, __pyx_t_2) < 0) __PYX_ERR(0, 913, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_log_level, __pyx_t_2) < 0) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":1 @@ -19952,14 +19574,14 @@ if (!__Pyx_RefNanny) { */ __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_line_195, __pyx_kp_u_get_problem_self_id_observer_No) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_line_193, __pyx_kp_u_get_problem_self_id_observer_No) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_by_function_di, __pyx_kp_u_returns_a_Problem_instance_by_de) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_ids_line_299, __pyx_kp_u_ids_id_snippets_get_problem_Fal) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_ids_line_297, __pyx_kp_u_ids_id_snippets_get_problem_Fal) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_current_index___get___line, __pyx_kp_u_index_in_the_enumerator_of_all_p) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "C:/Anaconda3/envs/py36coco/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1008 + /* "../../../../../../Anaconda2/lib/site-packages/Cython/Includes/numpy/__init__.pxd":1021 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -20010,20 +19632,6 @@ static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { } #endif -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - /* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); @@ -20031,186 +19639,23 @@ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyErr_Format(PyExc_NameError, #if PY_MAJOR_VERSION >= 3 "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); #endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); + } return result; } -#endif -#endif -/* PyObjectCallMethO */ +/* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = func->ob_type->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; - result = cfunc(self, arg); + result = (*call)(func, arg, kw); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( @@ -20221,46 +19666,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject } #endif -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - /* PyErrFetchRestore */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { @@ -20586,6 +19991,209 @@ static int __Pyx_ParseOptionalKeywords( return -1; } +/* PyCFunctionFastCall */ +#if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { + PyCFunctionObject *func = (PyCFunctionObject*)func_obj; + PyCFunction meth = PyCFunction_GET_FUNCTION(func); + PyObject *self = PyCFunction_GET_SELF(func); + int flags = PyCFunction_GET_FLAGS(func); + assert(PyCFunction_Check(func)); + assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); + assert(nargs >= 0); + assert(nargs == 0 || args != NULL); + /* _PyCFunction_FastCallDict() must not be called with an exception set, + because it may clear it (directly or indirectly) and so the + caller loses its exception */ + assert(!PyErr_Occurred()); + if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { + return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); + } else { + return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); + } +} +#endif + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL +#include "frameobject.h" +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = f->f_localsplus; + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { + return NULL; + } + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = PyCFunction_GET_FUNCTION(func); + self = PyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallOneArg */ +#if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_New(1); + if (unlikely(!args)) return NULL; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +#if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCall(func, &arg, 1); + } +#endif + if (likely(PyCFunction_Check(func))) { + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, arg); +#if CYTHON_FAST_PYCCALL + } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { + return __Pyx_PyCFunction_FastCall(func, &arg, 1); +#endif + } + } + return __Pyx__PyObject_CallOneArg(func, arg); +} +#else +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_Pack(1, arg); + if (unlikely(!args)) return NULL; + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +#endif + /* PyObjectCallNoArg */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { @@ -20611,19 +20219,10 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else result = PyDict_GetItem(__pyx_d, name); if (likely(result)) { Py_INCREF(result); } else { -#endif #else result = PyObject_GetItem(__pyx_d, name); if (!result) { @@ -20634,89 +20233,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { return result; } -/* PyObjectFormatAndDecref */ - static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f) { - if (unlikely(!s)) return NULL; - if (likely(PyUnicode_CheckExact(s))) return s; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_CheckExact(s))) { - PyObject *result = PyUnicode_FromEncodedObject(s, NULL, "strict"); - Py_DECREF(s); - return result; - } - #endif - return __Pyx_PyObject_FormatAndDecref(s, f); -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObject* f) { - PyObject *result = PyObject_Format(s, f); - Py_DECREF(s); - return result; -} - -/* JoinPyUnicode */ - static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, - CYTHON_UNUSED Py_UCS4 max_char) { -#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - PyObject *result_uval; - int result_ukind; - Py_ssize_t i, char_pos; - void *result_udata; -#if CYTHON_PEP393_ENABLED - result_uval = PyUnicode_New(result_ulength, max_char); - if (unlikely(!result_uval)) return NULL; - result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; - result_udata = PyUnicode_DATA(result_uval); -#else - result_uval = PyUnicode_FromUnicode(NULL, result_ulength); - if (unlikely(!result_uval)) return NULL; - result_ukind = sizeof(Py_UNICODE); - result_udata = PyUnicode_AS_UNICODE(result_uval); -#endif - char_pos = 0; - for (i=0; i < value_count; i++) { - int ukind; - Py_ssize_t ulength; - void *udata; - PyObject *uval = PyTuple_GET_ITEM(value_tuple, i); - if (unlikely(__Pyx_PyUnicode_READY(uval))) - goto bad; - ulength = __Pyx_PyUnicode_GET_LENGTH(uval); - if (unlikely(!ulength)) - continue; - if (unlikely(char_pos + ulength < 0)) - goto overflow; - ukind = __Pyx_PyUnicode_KIND(uval); - udata = __Pyx_PyUnicode_DATA(uval); - if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) { - memcpy((char *)result_udata + char_pos * result_ukind, udata, (size_t) (ulength * result_ukind)); - } else { - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters) - _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); - #else - Py_ssize_t j; - for (j=0; j < ulength; j++) { - Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); - __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); - } - #endif - } - char_pos += ulength; - } - return result_uval; -overflow: - PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); -bad: - Py_DECREF(result_uval); - return NULL; -#else - result_ulength++; - value_count++; - return PyUnicode_Join(__pyx_empty_unicode, value_tuple); -#endif -} - /* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE + #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #if PY_VERSION_HEX >= 0x030700A2 *type = tstate->exc_state.exc_type; @@ -20755,7 +20273,7 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject #endif /* GetException */ - #if CYTHON_FAST_THREAD_STATE + #if CYTHON_FAST_THREAD_STATE static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { @@ -20825,7 +20343,7 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) } /* PyObjectCallMethod1 */ - static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { PyObject *result = NULL; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(method))) { @@ -20867,16 +20385,17 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) return result; } static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { - PyObject *method, *result; + PyObject *method, *result = NULL; method = __Pyx_PyObject_GetAttrStr(obj, method_name); - if (unlikely(!method)) return NULL; + if (unlikely(!method)) goto done; result = __Pyx__PyObject_CallMethod1(method, arg); - Py_DECREF(method); +done: + Py_XDECREF(method); return result; } /* append */ - static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { + static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { if (likely(PyList_CheckExact(L))) { if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; } else { @@ -20889,7 +20408,7 @@ static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name } /* PyIntBinop */ - #if !CYTHON_COMPILING_IN_PYPY + #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { @@ -20927,7 +20446,6 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED goto long_long; #endif } - CYTHON_FALLTHROUGH; case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -20938,7 +20456,6 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED goto long_long; #endif } - CYTHON_FALLTHROUGH; case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -20949,7 +20466,6 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED goto long_long; #endif } - CYTHON_FALLTHROUGH; case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -20960,7 +20476,6 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED goto long_long; #endif } - CYTHON_FALLTHROUGH; case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -20971,7 +20486,6 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED goto long_long; #endif } - CYTHON_FALLTHROUGH; case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -20982,7 +20496,6 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED goto long_long; #endif } - CYTHON_FALLTHROUGH; default: return PyLong_Type.tp_as_number->nb_add(op1, op2); } } @@ -21010,8 +20523,48 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED } #endif +/* KeywordStringCheck */ + static int __Pyx_CheckKeywordStrings( + PyObject *kwdict, + const char* function_name, + int kw_allowed) +{ + PyObject* key = 0; + Py_ssize_t pos = 0; +#if CYTHON_COMPILING_IN_PYPY + if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) + goto invalid_keyword; + return 1; +#else + while (PyDict_Next(kwdict, &pos, &key, 0)) { + #if PY_MAJOR_VERSION < 3 + if (unlikely(!PyString_Check(key))) + #endif + if (unlikely(!PyUnicode_Check(key))) + goto invalid_keyword_type; + } + if ((!kw_allowed) && unlikely(key)) + goto invalid_keyword; + return 1; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + return 0; +#endif +invalid_keyword: + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION < 3 + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif + return 0; +} + /* GetItemInt */ - static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; if (!j) return NULL; r = PyObject_GetItem(o, j); @@ -21066,404 +20619,64 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, return r; } } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { - PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; - if (likely(m && m->sq_item)) { - if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { - Py_ssize_t l = m->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return NULL; - PyErr_Clear(); - } - } - return m->sq_item(o, i); - } - } -#else - if (is_list || PySequence_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} - -/* ObjectGetItem */ - #if CYTHON_USE_TYPE_SLOTS -static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { - PyObject *runerr; - Py_ssize_t key_value; - PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence; - if (unlikely(!(m && m->sq_item))) { - PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name); - return NULL; - } - key_value = __Pyx_PyIndex_AsSsize_t(index); - if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { - return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); - } - if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { - PyErr_Clear(); - PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name); - } - return NULL; -} -static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) { - PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping; - if (likely(m && m->mp_subscript)) { - return m->mp_subscript(obj, key); - } - return __Pyx_PyObject_GetIndex(obj, key); -} -#endif - -/* KeywordStringCheck */ - static int __Pyx_CheckKeywordStrings( - PyObject *kwdict, - const char* function_name, - int kw_allowed) -{ - PyObject* key = 0; - Py_ssize_t pos = 0; -#if CYTHON_COMPILING_IN_PYPY - if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) - goto invalid_keyword; - return 1; -#else - while (PyDict_Next(kwdict, &pos, &key, 0)) { - #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_Check(key))) - #endif - if (unlikely(!PyUnicode_Check(key))) - goto invalid_keyword_type; - } - if ((!kw_allowed) && unlikely(key)) - goto invalid_keyword; - return 1; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - return 0; -#endif -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif - return 0; -} - -/* PyObjectFormat */ - #if CYTHON_USE_UNICODE_WRITER -static PyObject* __Pyx_PyObject_Format(PyObject* obj, PyObject* format_spec) { - int ret; - _PyUnicodeWriter writer; - if (likely(PyFloat_CheckExact(obj))) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x03040000 - _PyUnicodeWriter_Init(&writer, 0); -#else - _PyUnicodeWriter_Init(&writer); -#endif - ret = _PyFloat_FormatAdvancedWriter( - &writer, - obj, - format_spec, 0, PyUnicode_GET_LENGTH(format_spec)); - } else if (likely(PyLong_CheckExact(obj))) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x03040000 - _PyUnicodeWriter_Init(&writer, 0); -#else - _PyUnicodeWriter_Init(&writer); -#endif - ret = _PyLong_FormatAdvancedWriter( - &writer, - obj, - format_spec, 0, PyUnicode_GET_LENGTH(format_spec)); - } else { - return PyObject_Format(obj, format_spec); - } - if (unlikely(ret == -1)) { - _PyUnicodeWriter_Dealloc(&writer); - return NULL; - } - return _PyUnicodeWriter_Finish(&writer); -} -#endif - -/* CIntToDigits */ - static const char DIGIT_PAIRS_10[2*10*10+1] = { - "00010203040506070809" - "10111213141516171819" - "20212223242526272829" - "30313233343536373839" - "40414243444546474849" - "50515253545556575859" - "60616263646566676869" - "70717273747576777879" - "80818283848586878889" - "90919293949596979899" -}; -static const char DIGIT_PAIRS_8[2*8*8+1] = { - "0001020304050607" - "1011121314151617" - "2021222324252627" - "3031323334353637" - "4041424344454647" - "5051525354555657" - "6061626364656667" - "7071727374757677" -}; -static const char DIGITS_HEX[2*16+1] = { - "0123456789abcdef" - "0123456789ABCDEF" -}; - -/* BuildPyUnicode */ - static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength, - int prepend_sign, char padding_char) { - PyObject *uval; - Py_ssize_t uoffset = ulength - clength; -#if CYTHON_USE_UNICODE_INTERNALS - Py_ssize_t i; -#if CYTHON_PEP393_ENABLED - void *udata; - uval = PyUnicode_New(ulength, 127); - if (unlikely(!uval)) return NULL; - udata = PyUnicode_DATA(uval); -#else - Py_UNICODE *udata; - uval = PyUnicode_FromUnicode(NULL, ulength); - if (unlikely(!uval)) return NULL; - udata = PyUnicode_AS_UNICODE(uval); -#endif - if (uoffset > 0) { - i = 0; - if (prepend_sign) { - __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, 0, '-'); - i++; - } - for (; i < uoffset; i++) { - __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, i, padding_char); - } - } - for (i=0; i < clength; i++) { - __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, uoffset+i, chars[i]); - } -#else - { - uval = NULL; - PyObject *sign = NULL, *padding = NULL; - if (uoffset > 0) { - prepend_sign = !!prepend_sign; - if (uoffset > prepend_sign) { - padding = PyUnicode_FromOrdinal(padding_char); - if (likely(padding) && uoffset > prepend_sign + 1) { - PyObject *tmp; - PyObject *repeat = PyInt_FromSize_t(uoffset - prepend_sign); - if (unlikely(!repeat)) goto done_or_error; - tmp = PyNumber_Multiply(padding, repeat); - Py_DECREF(repeat); - Py_DECREF(padding); - padding = tmp; - } - if (unlikely(!padding)) goto done_or_error; - } - if (prepend_sign) { - sign = PyUnicode_FromOrdinal('-'); - if (unlikely(!sign)) goto done_or_error; - } - } - uval = PyUnicode_DecodeASCII(chars, clength, NULL); - if (likely(uval) && padding) { - PyObject *tmp = PyNumber_Add(padding, uval); - Py_DECREF(uval); - uval = tmp; - } - if (likely(uval) && sign) { - PyObject *tmp = PyNumber_Add(sign, uval); - Py_DECREF(uval); - uval = tmp; - } -done_or_error: - Py_XDECREF(padding); - Py_XDECREF(sign); - } -#endif - return uval; -} - -/* CIntToPyUnicode */ - #ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned short uint16_t; - #else - typedef unsigned __int16 uint16_t; - #endif - #endif -#else - #include -#endif -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) { - char digits[sizeof(Py_ssize_t)*3+2]; - char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2; - const char *hex_digits = DIGITS_HEX; - Py_ssize_t length, ulength; - int prepend_sign, last_one_off; - Py_ssize_t remaining; - const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0; - const int is_unsigned = neg_one > const_zero; - if (format_char == 'X') { - hex_digits += 16; - format_char = 'x'; - } - remaining = value; - last_one_off = 0; - dpos = end; - do { - int digit_pos; - switch (format_char) { - case 'o': - digit_pos = abs((int)(remaining % (8*8))); - remaining = (Py_ssize_t) (remaining / (8*8)); - dpos -= 2; - *(uint16_t*)dpos = ((uint16_t*)DIGIT_PAIRS_8)[digit_pos]; - last_one_off = (digit_pos < 8); - break; - case 'd': - digit_pos = abs((int)(remaining % (10*10))); - remaining = (Py_ssize_t) (remaining / (10*10)); - dpos -= 2; - *(uint16_t*)dpos = ((uint16_t*)DIGIT_PAIRS_10)[digit_pos]; - last_one_off = (digit_pos < 10); - break; - case 'x': - *(--dpos) = hex_digits[abs((int)(remaining % 16))]; - remaining = (Py_ssize_t) (remaining / 16); - break; - default: - assert(0); - break; - } - } while (unlikely(remaining != 0)); - if (last_one_off) { - assert(*dpos == '0'); - dpos++; - } - length = end - dpos; - ulength = length; - prepend_sign = 0; - if (!is_unsigned && value <= neg_one) { - if (padding_char == ' ' || width <= length + 1) { - *(--dpos) = '-'; - ++length; - } else { - prepend_sign = 1; - } - ++ulength; - } - if (width > ulength) { - ulength = width; - } - if (ulength == 1) { - return PyUnicode_FromOrdinal(*dpos); - } - return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char); -} - -/* PyUnicode_Unicode */ - static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj) { - if (unlikely(obj == Py_None)) - obj = __pyx_kp_u_None; - return __Pyx_NewRef(obj); -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; + if (likely(m && m->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { + Py_ssize_t l = m->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return m->sq_item(o, i); + } + } #else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + if (is_list || PySequence_Check(o)) { + return PySequence_GetItem(o, i); } - return res; +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); } + +/* PyErrExceptionMatches */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; icurexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; + if (unlikely(PyTuple_Check(err))) + return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); } #endif /* SwapException */ - #if CYTHON_FAST_THREAD_STATE + #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; #if PY_VERSION_HEX >= 0x030700A2 @@ -21497,7 +20710,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, #endif /* ExtTypeTest */ - static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { if (unlikely(!type)) { PyErr_SetString(PyExc_SystemError, "Missing type object"); return 0; @@ -21510,7 +20723,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, } /* SetItemInt */ - static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { + static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { int r; if (!j) return -1; r = PyObject_SetItem(o, j, v); @@ -21558,7 +20771,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje } /* IsLittleEndian */ - static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) + static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) { union { uint32_t u32; @@ -21569,7 +20782,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje } /* BufferFormatCheck */ - static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, + static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, __Pyx_BufFmt_StackElem* stack, __Pyx_TypeInfo* type) { stack[0].field = &ctx->root; @@ -22028,7 +21241,6 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha __Pyx_BufFmt_RaiseUnexpectedChar('Z'); return NULL; } - CYTHON_FALLTHROUGH; case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I': case 'l': case 'L': case 'q': case 'Q': case 'f': case 'd': case 'g': @@ -22041,7 +21253,6 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha ++ts; break; } - CYTHON_FALLTHROUGH; case 's': if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; ctx->enc_count = ctx->new_count; @@ -22071,7 +21282,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha } /* BufferGetAndValidate */ - static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { + static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { if (unlikely(info->buf == NULL)) return; if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; __Pyx_ReleaseBuffer(info); @@ -22118,13 +21329,13 @@ fail:; } /* BufferFallbackError */ - static void __Pyx_RaiseBufferFallbackError(void) { + static void __Pyx_RaiseBufferFallbackError(void) { PyErr_SetString(PyExc_ValueError, "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); } /* PyIntBinop */ - #if !CYTHON_COMPILING_IN_PYPY + #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { @@ -22162,7 +21373,6 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U goto long_long; #endif } - CYTHON_FALLTHROUGH; case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -22173,7 +21383,6 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U goto long_long; #endif } - CYTHON_FALLTHROUGH; case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -22184,7 +21393,6 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U goto long_long; #endif } - CYTHON_FALLTHROUGH; case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -22195,7 +21403,6 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U goto long_long; #endif } - CYTHON_FALLTHROUGH; case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -22206,7 +21413,6 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U goto long_long; #endif } - CYTHON_FALLTHROUGH; case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); @@ -22217,7 +21423,6 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U goto long_long; #endif } - CYTHON_FALLTHROUGH; default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2); } } @@ -22246,7 +21451,7 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U #endif /* PyIntBinop */ - #if !CYTHON_COMPILING_IN_PYPY + #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { @@ -22274,37 +21479,31 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } - CYTHON_FALLTHROUGH; case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT && 1 * PyLong_SHIFT < 53) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } - CYTHON_FALLTHROUGH; case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT && 2 * PyLong_SHIFT < 53) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } - CYTHON_FALLTHROUGH; case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT && 2 * PyLong_SHIFT < 53) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } - CYTHON_FALLTHROUGH; case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT && 3 * PyLong_SHIFT < 53) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } - CYTHON_FALLTHROUGH; case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT && 3 * PyLong_SHIFT < 53) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } - CYTHON_FALLTHROUGH; default: return PyLong_Type.tp_as_number->nb_true_divide(op1, op2); } } @@ -22331,7 +21530,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON #endif /* BytesEquals */ - static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { + static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY return PyObject_RichCompareBool(s1, s2, equals); #else @@ -22378,7 +21577,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON } /* UnicodeEquals */ - static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { + static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY return PyObject_RichCompareBool(s1, s2, equals); #else @@ -22477,7 +21676,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON } /* WriteUnraisableException */ - static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, + static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, int full_traceback, CYTHON_UNUSED int nogil) { PyObject *old_exc, *old_val, *old_tb; @@ -22519,7 +21718,7 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON } /* SliceObject */ - static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, + static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) { @@ -22615,161 +21814,8 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON return NULL; } -/* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; icurexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* UnpackUnboundCMethod */ - static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { - PyObject *method; - method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); - if (unlikely(!method)) - return -1; - target->method = method; -#if CYTHON_COMPILING_IN_CPYTHON - #if PY_MAJOR_VERSION >= 3 - if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type))) - #endif - { - PyMethodDescrObject *descr = (PyMethodDescrObject*) method; - target->func = descr->d_method->ml_meth; - target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST); - } -#endif - return 0; -} - -/* CallUnboundCMethod1 */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) { - if (likely(cfunc->func)) { - int flag = cfunc->flag; - if (flag == METH_O) { - return (*(cfunc->func))(self, arg); - } else if (PY_VERSION_HEX >= 0x030600B1 && flag == METH_FASTCALL) { - if (PY_VERSION_HEX >= 0x030700A0) { - return (*(__Pyx_PyCFunctionFast)cfunc->func)(self, &arg, 1); - } else { - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, &arg, 1, NULL); - } - } else if (PY_VERSION_HEX >= 0x030700A0 && flag == (METH_FASTCALL | METH_KEYWORDS)) { - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, &arg, 1, NULL); - } - } - return __Pyx__CallUnboundCMethod1(cfunc, self, arg); -} -#endif -static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){ - PyObject *args, *result = NULL; - if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_COMPILING_IN_CPYTHON - if (cfunc->func && (cfunc->flag & METH_VARARGS)) { - args = PyTuple_New(1); - if (unlikely(!args)) goto bad; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - if (cfunc->flag & METH_KEYWORDS) - result = (*(PyCFunctionWithKeywords)cfunc->func)(self, args, NULL); - else - result = (*cfunc->func)(self, args); - } else { - args = PyTuple_New(2); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 1, arg); - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - } -#else - args = PyTuple_Pack(2, self, arg); - if (unlikely(!args)) goto bad; - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); -#endif -bad: - Py_XDECREF(args); - return result; -} - -/* CallUnboundCMethod2 */ - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1 -static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) { - if (likely(cfunc->func)) { - PyObject *args[2] = {arg1, arg2}; - if (cfunc->flag == METH_FASTCALL) { - #if PY_VERSION_HEX >= 0x030700A0 - return (*(__Pyx_PyCFunctionFast)cfunc->func)(self, args, 2); - #else - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, args, 2, NULL); - #endif - } - #if PY_VERSION_HEX >= 0x030700A0 - if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS)) - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, args, 2, NULL); - #endif - } - return __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2); -} -#endif -static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){ - PyObject *args, *result = NULL; - if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_COMPILING_IN_CPYTHON - if (cfunc->func && (cfunc->flag & METH_VARARGS)) { - args = PyTuple_New(2); - if (unlikely(!args)) goto bad; - Py_INCREF(arg1); - PyTuple_SET_ITEM(args, 0, arg1); - Py_INCREF(arg2); - PyTuple_SET_ITEM(args, 1, arg2); - if (cfunc->flag & METH_KEYWORDS) - result = (*(PyCFunctionWithKeywords)cfunc->func)(self, args, NULL); - else - result = (*cfunc->func)(self, args); - } else { - args = PyTuple_New(3); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); - Py_INCREF(arg1); - PyTuple_SET_ITEM(args, 1, arg1); - Py_INCREF(arg2); - PyTuple_SET_ITEM(args, 2, arg2); - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - } -#else - args = PyTuple_Pack(3, self, arg1, arg2); - if (unlikely(!args)) goto bad; - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); -#endif -bad: - Py_XDECREF(args); - return result; -} - /* dict_getitem_default */ - static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) { + static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) { PyObject* value; #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY value = PyDict_GetItemWithError(d, key); @@ -22779,7 +21825,6 @@ static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObje value = default_value; } Py_INCREF(value); - if ((1)); #else if (PyString_CheckExact(key) || PyUnicode_CheckExact(key) || PyInt_CheckExact(key)) { value = PyDict_GetItem(d, key); @@ -22787,19 +21832,18 @@ static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObje value = default_value; } Py_INCREF(value); - } -#endif - else { + } else { if (default_value == Py_None) - value = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_get, d, key); - else - value = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_get, d, key, default_value); + default_value = NULL; + value = PyObject_CallMethodObjArgs( + d, __pyx_n_s_get, key, default_value, NULL); } +#endif return value; } /* PyIntBinop */ - #if !CYTHON_COMPILING_IN_PYPY + #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { if (op1 == op2) { Py_RETURN_TRUE; @@ -22831,37 +21875,31 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } - CYTHON_FALLTHROUGH; case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } - CYTHON_FALLTHROUGH; case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } - CYTHON_FALLTHROUGH; case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } - CYTHON_FALLTHROUGH; case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } - CYTHON_FALLTHROUGH; case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } - CYTHON_FALLTHROUGH; #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15 default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ); #else @@ -22889,95 +21927,26 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED } #endif -/* DictGetItem */ - #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY -static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { - PyObject *value; - value = PyDict_GetItemWithError(d, key); - if (unlikely(!value)) { - if (!PyErr_Occurred()) { - PyObject* args = PyTuple_Pack(1, key); - if (likely(args)) - PyErr_SetObject(PyExc_KeyError, args); - Py_XDECREF(args); - } - return NULL; - } - Py_INCREF(value); - return value; -} -#endif - /* RaiseTooManyValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { PyErr_Format(PyExc_ValueError, "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); } /* RaiseNeedMoreValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { PyErr_Format(PyExc_ValueError, "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", index, (index == 1) ? "" : "s"); } /* RaiseNoneIterError */ - static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { + static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); } -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* PyObject_GenericGetAttr */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { - if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { - return PyObject_GenericGetAttr(obj, attr_name); - } - return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -} -#endif - /* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { + static int __Pyx_SetVtable(PyObject *dict, void *vtable) { #if PY_VERSION_HEX >= 0x02070000 PyObject *ob = PyCapsule_New(vtable, 0, 0); #else @@ -22995,7 +21964,7 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam } /* SetupReduce */ - static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { + static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { int ret; PyObject *name_attr; name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2); @@ -23071,7 +22040,7 @@ static int __Pyx_setup_reduce(PyObject* type_obj) { } /* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { PyObject *empty_list = 0; PyObject *module = 0; PyObject *global_dict = 0; @@ -23136,7 +22105,7 @@ static int __Pyx_setup_reduce(PyObject* type_obj) { } /* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Format(PyExc_ImportError, @@ -23150,21 +22119,18 @@ static int __Pyx_setup_reduce(PyObject* type_obj) { } /* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK + #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { PyObject *use_cline; PyObject *ptype, *pvalue, *ptraceback; #if CYTHON_COMPILING_IN_CPYTHON PyObject **cython_runtime_dict; #endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); #if CYTHON_COMPILING_IN_CPYTHON cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); + use_cline = PyDict_GetItem(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); } else #endif { @@ -23190,7 +22156,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li #endif /* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; @@ -23270,7 +22236,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { } /* AddTraceback */ - #include "compile.h" + #include "compile.h" #include "frameobject.h" #include "traceback.h" static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( @@ -23376,8 +22342,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif - /* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + /* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) @@ -23399,7 +22365,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { @@ -23430,7 +22396,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { @@ -23461,7 +22427,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* Declarations */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { return ::std::complex< float >(x, y); @@ -23481,7 +22447,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* Arithmetic */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #else static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { return (a.real == b.real) && (a.imag == b.imag); @@ -23616,7 +22582,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* Declarations */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { return ::std::complex< double >(x, y); @@ -23636,7 +22602,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* Arithmetic */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #else static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { return (a.real == b.real) && (a.imag == b.imag); @@ -23771,7 +22737,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) { + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) { const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { @@ -23802,7 +22768,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntFromPy */ - static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { + static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { const size_t neg_one = (size_t) -1, const_zero = (size_t) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 @@ -23991,7 +22957,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 @@ -24180,7 +23146,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 @@ -24368,8 +23334,80 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { return (long) -1; } +/* FastTypeChecks */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = a->tp_base; + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; + if (!res) { + res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } + return res; +} +#endif +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { + if (likely(err == exc_type)) return 1; + if (likely(PyExceptionClass_Check(err))) { + return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); + } + return PyErr_GivenExceptionMatches(err, exc_type); +} +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { + if (likely(err == exc_type1 || err == exc_type2)) return 1; + if (likely(PyExceptionClass_Check(err))) { + return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); + } + return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); +} +#endif + /* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { PyObject* fake_module; PyTypeObject* cached_type = NULL; fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); @@ -24408,7 +23446,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CoroutineBase */ - #include + #include #include #define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) static int __Pyx_PyGen__FetchStopIterationValue(CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject **pvalue) { @@ -24507,7 +23545,7 @@ static void __Pyx__Coroutine_AlreadyRunningError(CYTHON_UNUSED __pyx_CoroutineOb const char *msg; if (0) { #ifdef __Pyx_Coroutine_USED - } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { + } else if (__Pyx_Coroutine_CheckExact((PyObject*)gen)) { msg = "coroutine already executing"; #endif #ifdef __Pyx_AsyncGen_USED @@ -24524,7 +23562,7 @@ static void __Pyx__Coroutine_NotStartedError(CYTHON_UNUSED PyObject *gen) { const char *msg; if (0) { #ifdef __Pyx_Coroutine_USED - } else if (__Pyx_Coroutine_Check(gen)) { + } else if (__Pyx_Coroutine_CheckExact(gen)) { msg = "can't send non-None value to a just-started coroutine"; #endif #ifdef __Pyx_AsyncGen_USED @@ -24539,7 +23577,7 @@ static void __Pyx__Coroutine_NotStartedError(CYTHON_UNUSED PyObject *gen) { #define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL) static void __Pyx__Coroutine_AlreadyTerminatedError(CYTHON_UNUSED PyObject *gen, PyObject *value, CYTHON_UNUSED int closing) { #ifdef __Pyx_Coroutine_USED - if (!closing && __Pyx_Coroutine_Check(gen)) { + if (!closing && __Pyx_Coroutine_CheckExact(gen)) { PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); } else #endif @@ -24645,7 +23683,7 @@ static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { } else #endif #ifdef __Pyx_Coroutine_USED - if (__Pyx_Coroutine_Check(yf)) { + if (__Pyx_Coroutine_CheckExact(yf)) { ret = __Pyx_Coroutine_Send(yf, value); } else #endif @@ -24691,7 +23729,7 @@ static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { } else #endif #ifdef __Pyx_Coroutine_USED - if (__Pyx_Coroutine_Check(yf)) { + if (__Pyx_Coroutine_CheckExact(yf)) { retval = __Pyx_Coroutine_Close(yf); if (!retval) return -1; @@ -24747,11 +23785,6 @@ static PyObject *__Pyx_Generator_Next(PyObject *self) { if (PyGen_CheckExact(yf)) { ret = _PyGen_Send((PyGenObject*)yf, NULL); } else - #endif - #ifdef __Pyx_Coroutine_USED - if (__Pyx_Coroutine_Check(yf)) { - ret = __Pyx_Coroutine_Send(yf, Py_None); - } else #endif ret = Py_TYPE(yf)->tp_iternext(yf); gen->is_running = 0; @@ -24783,7 +23816,7 @@ static PyObject *__Pyx_Coroutine_Close(PyObject *self) { Py_DECREF(retval); if ((0)) { #ifdef __Pyx_Coroutine_USED - } else if (__Pyx_Coroutine_Check(self)) { + } else if (__Pyx_Coroutine_CheckExact(self)) { msg = "coroutine ignored GeneratorExit"; #endif #ifdef __Pyx_AsyncGen_USED @@ -24831,7 +23864,7 @@ static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject || __Pyx_Generator_CheckExact(yf) #endif #ifdef __Pyx_Coroutine_USED - || __Pyx_Coroutine_Check(yf) + || __Pyx_Coroutine_CheckExact(yf) #endif ) { ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); @@ -24900,7 +23933,6 @@ static int __Pyx_Coroutine_clear(PyObject *self) { Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); } #endif - Py_CLEAR(gen->gi_code); Py_CLEAR(gen->gi_name); Py_CLEAR(gen->gi_qualname); Py_CLEAR(gen->gi_modulename); @@ -25086,15 +24118,15 @@ __Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value) return 0; } static __pyx_CoroutineObject *__Pyx__Coroutine_New( - PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name) { __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); if (unlikely(!gen)) return NULL; - return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name); + return __Pyx__Coroutine_NewInit(gen, body, closure, name, qualname, module_name); } static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( - __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name) { gen->body = body; gen->closure = closure; @@ -25113,14 +24145,12 @@ static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( gen->gi_name = name; Py_XINCREF(module_name); gen->gi_modulename = module_name; - Py_XINCREF(code); - gen->gi_code = code; PyObject_GC_Track(gen); return gen; } /* PatchModuleWithCoroutine */ - static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { + static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) int result; PyObject *globals, *result_obj; @@ -25160,7 +24190,7 @@ static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( } /* PatchGeneratorABC */ - #ifndef CYTHON_REGISTER_ABCS + #ifndef CYTHON_REGISTER_ABCS #define CYTHON_REGISTER_ABCS 1 #endif #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) @@ -25217,7 +24247,7 @@ static int __Pyx_patch_abc(void) { } /* Generator */ - static PyMethodDef __pyx_Generator_methods[] = { + static PyMethodDef __pyx_Generator_methods[] = { {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")}, {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, @@ -25230,7 +24260,6 @@ static PyMemberDef __pyx_Generator_memberlist[] = { {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, (char*) PyDoc_STR("object being iterated by 'yield from', or None")}, - {(char*) "gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, {0, 0, 0, 0, 0} }; static PyGetSetDef __pyx_Generator_getsets[] = { @@ -25299,7 +24328,7 @@ static PyTypeObject __pyx_GeneratorType_type = { #endif }; static int __pyx_Generator_init(void) { - __pyx_GeneratorType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; + __pyx_GeneratorType_type.tp_getattro = PyObject_GenericGetAttr; __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter; __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type); if (unlikely(!__pyx_GeneratorType)) { @@ -25309,7 +24338,7 @@ static int __pyx_Generator_init(void) { } /* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { + static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); @@ -25325,7 +24354,7 @@ static int __pyx_Generator_init(void) { } /* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule + #ifndef __PYX_HAVE_RT_ImportModule #define __PYX_HAVE_RT_ImportModule static PyObject *__Pyx_ImportModule(const char *name) { PyObject *py_name = 0; @@ -25343,7 +24372,7 @@ static PyObject *__Pyx_ImportModule(const char *name) { #endif /* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType + #ifndef __PYX_HAVE_RT_ImportType #define __PYX_HAVE_RT_ImportType static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict) @@ -25408,7 +24437,7 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class #endif /* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { @@ -25434,7 +24463,7 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class if (!*t->p) return -1; if (PyObject_Hash(*t->p) == -1) - return -1; + PyErr_Clear(); ++t; } return 0; @@ -25648,9 +24677,6 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_DECREF(x); return ival; } -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } From f8de2cc6d4390ebac2c866ee527da2df5040d87e Mon Sep 17 00:00:00 2001 From: brockhof Date: Thu, 14 Mar 2019 17:07:48 +0100 Subject: [PATCH 443/446] removed unsupported test suites from known_suite_names for release --- .../build/python/cython/interface.c | 2806 +++++++++-------- .../build/python/cython/interface.pyx | 4 +- 2 files changed, 1421 insertions(+), 1389 deletions(-) diff --git a/code-experiments/build/python/cython/interface.c b/code-experiments/build/python/cython/interface.c index 93fe0af59..5d560a9e4 100644 --- a/code-experiments/build/python/cython/interface.c +++ b/code-experiments/build/python/cython/interface.c @@ -1049,7 +1049,7 @@ typedef npy_cdouble __pyx_t_5numpy_complex_t; struct __pyx_opt_args_6cocoex_9interface_Problem_init; struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize; -/* "cython/interface.pyx":498 +/* "cython/interface.pyx":500 * coco_observer_free(self._observer) * * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< @@ -1062,7 +1062,7 @@ struct __pyx_opt_args_6cocoex_9interface_Problem_init { PyObject *suite_name; }; -/* "cython/interface.pyx":529 +/* "cython/interface.pyx":531 * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< @@ -1074,7 +1074,7 @@ struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize { PyObject *free; }; -/* "cython/interface.pyx":81 +/* "cython/interface.pyx":83 * cdef coco_observer_t* _current_observer * * cdef class Suite: # <<<<<<<<<<<<<< @@ -1100,7 +1100,7 @@ struct __pyx_obj_6cocoex_9interface_Suite { }; -/* "cython/interface.pyx":443 +/* "cython/interface.pyx":445 * s is self or s.free() * * cdef class Observer: # <<<<<<<<<<<<<< @@ -1116,7 +1116,7 @@ struct __pyx_obj_6cocoex_9interface_Observer { }; -/* "cython/interface.pyx":507 +/* "cython/interface.pyx":509 * res._suite_name = suite_name * return res._initialize(problem, free) * cdef class Problem: # <<<<<<<<<<<<<< @@ -1146,7 +1146,7 @@ struct __pyx_obj_6cocoex_9interface_Problem { }; -/* "cython/interface.pyx":416 +/* "cython/interface.pyx":418 * return len(self._indices) * * def __iter__(self): # <<<<<<<<<<<<<< @@ -1165,7 +1165,7 @@ struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ { -/* "cython/interface.pyx":81 +/* "cython/interface.pyx":83 * cdef coco_observer_t* _current_observer * * cdef class Suite: # <<<<<<<<<<<<<< @@ -1179,7 +1179,7 @@ struct __pyx_vtabstruct_6cocoex_9interface_Suite { static struct __pyx_vtabstruct_6cocoex_9interface_Suite *__pyx_vtabptr_6cocoex_9interface_Suite; -/* "cython/interface.pyx":507 +/* "cython/interface.pyx":509 * res._suite_name = suite_name * return res._initialize(problem, free) * cdef class Problem: # <<<<<<<<<<<<<< @@ -2055,9 +2055,10 @@ static const char __pyx_k_initial_solution[] = "initial_solution"; static const char __pyx_k_bbob_biobj_mixint[] = "bbob-biobj-mixint"; static const char __pyx_k_cocoex_exceptions[] = "cocoex.exceptions"; static const char __pyx_k_known_suite_names[] = "known_suite_names"; -static const char __pyx_k_Suite_ids_line_297[] = "Suite.ids (line 297)"; +static const char __pyx_k_Suite_ids_line_299[] = "Suite.ids (line 299)"; static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; static const char __pyx_k_NotImplementedError[] = "NotImplementedError"; +static const char __pyx_k_known_suite_names_2[] = "_known_suite_names"; static const char __pyx_k_number_of_variables[] = "number_of_variables"; static const char __pyx_k_with_d_constraint_s[] = " with %d constraint%s"; static const char __pyx_k_NoSuchSuiteException[] = "NoSuchSuiteException"; @@ -2071,7 +2072,7 @@ static const char __pyx_k_s_d_integer_variable_s[] = " %s %d integer variable%s" static const char __pyx_k_InvalidProblemException[] = "InvalidProblemException"; static const char __pyx_k_finalized_invalid_problem[] = "finalized/invalid problem"; static const char __pyx_k_No_suite_with_name_s_found[] = "No suite with name '%s' found"; -static const char __pyx_k_Suite_get_problem_line_193[] = "Suite.get_problem (line 193)"; +static const char __pyx_k_Suite_get_problem_line_195[] = "Suite.get_problem (line 195)"; static const char __pyx_k_Problem_already_initialized[] = "Problem already initialized"; static const char __pyx_k_finalized_invalid_problem_2[] = ""; static const char __pyx_k_function_dimension_instance[] = "function: {}, dimension: {}, instance: {}"; @@ -2092,8 +2093,8 @@ static const char __pyx_k_Dimension_np_size_x_d_of_input_x[] = "Dimension, `np.s static const char __pyx_k_Dimension_np_size_y_d_of_input_y[] = "Dimension, `np.size(y)==%d`, of input `y` does "; static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd"; static const char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported"; -static const char __pyx_k_Suite_current_index___get___line[] = "Suite.current_index.__get__ (line 350)"; -static const char __pyx_k_Suite_get_problem_by_function_di[] = "Suite.get_problem_by_function_dimension_instance (line 237)"; +static const char __pyx_k_Suite_current_index___get___line[] = "Suite.current_index.__get__ (line 352)"; +static const char __pyx_k_Suite_get_problem_by_function_di[] = "Suite.get_problem_by_function_dimension_instance (line 239)"; static const char __pyx_k_Suite_has_been_finalized_free_ed[] = "Suite has been finalized/free'ed"; static const char __pyx_k_cannot_deduce_function_id_from_s[] = "cannot deduce function id from '%s'"; static const char __pyx_k_cannot_deduce_instance_id_from_s[] = "cannot deduce instance id from '%s'"; @@ -2122,9 +2123,9 @@ static PyObject *__pyx_n_s_RuntimeError; static PyObject *__pyx_n_s_Suite___iter; static PyObject *__pyx_kp_u_Suite_current_index___get___line; static PyObject *__pyx_kp_u_Suite_get_problem_by_function_di; -static PyObject *__pyx_kp_u_Suite_get_problem_line_193; +static PyObject *__pyx_kp_u_Suite_get_problem_line_195; static PyObject *__pyx_kp_u_Suite_has_been_finalized_free_ed; -static PyObject *__pyx_kp_u_Suite_ids_line_297; +static PyObject *__pyx_kp_u_Suite_ids_line_299; static PyObject *__pyx_kp_u_Suite_r_r_r; static PyObject *__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in; static PyObject *__pyx_n_s_TypeError; @@ -2207,6 +2208,7 @@ static PyObject *__pyx_n_u_initialized; static PyObject *__pyx_n_s_instance; static PyObject *__pyx_n_s_iter; static PyObject *__pyx_n_s_known_suite_names; +static PyObject *__pyx_n_s_known_suite_names_2; static PyObject *__pyx_n_s_level; static PyObject *__pyx_n_s_level_2; static PyObject *__pyx_n_s_log_level; @@ -2405,7 +2407,7 @@ static PyObject *__pyx_tuple__38; static PyObject *__pyx_tuple__39; static PyObject *__pyx_codeobj__40; -/* "cython/interface.pyx":71 +/* "cython/interface.pyx":73 * void bbob_biobj_problem_best_parameter_print(const coco_problem_t *problem) * * cdef bytes _bstring(s): # <<<<<<<<<<<<<< @@ -2423,7 +2425,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("_bstring", 0); - /* "cython/interface.pyx":72 + /* "cython/interface.pyx":74 * * cdef bytes _bstring(s): * if type(s) is bytes: # <<<<<<<<<<<<<< @@ -2434,7 +2436,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":73 + /* "cython/interface.pyx":75 * cdef bytes _bstring(s): * if type(s) is bytes: * return s # <<<<<<<<<<<<<< @@ -2446,7 +2448,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { __pyx_r = ((PyObject*)__pyx_v_s); goto __pyx_L0; - /* "cython/interface.pyx":72 + /* "cython/interface.pyx":74 * * cdef bytes _bstring(s): * if type(s) is bytes: # <<<<<<<<<<<<<< @@ -2455,7 +2457,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { */ } - /* "cython/interface.pyx":74 + /* "cython/interface.pyx":76 * if type(s) is bytes: * return s * if isinstance(s, (str, unicode)): # <<<<<<<<<<<<<< @@ -2476,7 +2478,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":75 + /* "cython/interface.pyx":77 * return s * if isinstance(s, (str, unicode)): * return s.encode('ascii') # why not s.encode('ascii') ? # <<<<<<<<<<<<<< @@ -2484,17 +2486,17 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * raise TypeError("expect a string, got %s" % str(type(s))) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 75, __pyx_L1_error) + if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 77, __pyx_L1_error) __pyx_r = ((PyObject*)__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L0; - /* "cython/interface.pyx":74 + /* "cython/interface.pyx":76 * if type(s) is bytes: * return s * if isinstance(s, (str, unicode)): # <<<<<<<<<<<<<< @@ -2503,7 +2505,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { */ } - /* "cython/interface.pyx":77 + /* "cython/interface.pyx":79 * return s.encode('ascii') # why not s.encode('ascii') ? * else: * raise TypeError("expect a string, got %s" % str(type(s))) # <<<<<<<<<<<<<< @@ -2511,31 +2513,31 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { * cdef coco_observer_t* _current_observer */ /*else*/ { - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_s))); __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_s))); PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)Py_TYPE(__pyx_v_s))); - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 77, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_expect_a_string_got_s, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) + __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_expect_a_string_got_s, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 77, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(0, 77, __pyx_L1_error) + __PYX_ERR(0, 79, __pyx_L1_error) } - /* "cython/interface.pyx":71 + /* "cython/interface.pyx":73 * void bbob_biobj_problem_best_parameter_print(const coco_problem_t *problem) * * cdef bytes _bstring(s): # <<<<<<<<<<<<<< @@ -2555,7 +2557,7 @@ static PyObject *__pyx_f_6cocoex_9interface__bstring(PyObject *__pyx_v_s) { return __pyx_r; } -/* "cython/interface.pyx":97 +/* "cython/interface.pyx":99 * cdef initialized * * def __cinit__(self, suite_name, suite_instance, suite_options): # <<<<<<<<<<<<<< @@ -2597,17 +2599,17 @@ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_instance)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(0, 97, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(0, 99, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_suite_options)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(0, 97, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(0, 99, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 97, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 99, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -2622,7 +2624,7 @@ static int __pyx_pw_6cocoex_9interface_5Suite_1__cinit__(PyObject *__pyx_v_self, } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 97, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 99, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -2643,14 +2645,14 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("__cinit__", 0); - /* "cython/interface.pyx":99 + /* "cython/interface.pyx":101 * def __cinit__(self, suite_name, suite_instance, suite_options): * cdef np.npy_intp shape[1] # probably completely useless * self._name = _bstring(suite_name) # <<<<<<<<<<<<<< * self._instance = _bstring(suite_instance if suite_instance is not None else "") * self._options = _bstring(suite_options if suite_options is not None else "") */ - __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_suite_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error) + __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_suite_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_name); @@ -2658,7 +2660,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __pyx_v_self->_name = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":100 + /* "cython/interface.pyx":102 * cdef np.npy_intp shape[1] # probably completely useless * self._name = _bstring(suite_name) * self._instance = _bstring(suite_instance if suite_instance is not None else "") # <<<<<<<<<<<<<< @@ -2673,7 +2675,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_1 = __pyx_kp_u__2; } - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_3); @@ -2682,7 +2684,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __pyx_v_self->_instance = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":101 + /* "cython/interface.pyx":103 * self._name = _bstring(suite_name) * self._instance = _bstring(suite_instance if suite_instance is not None else "") * self._options = _bstring(suite_options if suite_options is not None else "") # <<<<<<<<<<<<<< @@ -2697,7 +2699,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_3 = __pyx_kp_u__2; } - __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) + __pyx_t_1 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_1); @@ -2706,7 +2708,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __pyx_v_self->_options = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":102 + /* "cython/interface.pyx":104 * self._instance = _bstring(suite_instance if suite_instance is not None else "") * self._options = _bstring(suite_options if suite_options is not None else "") * self._current_problem = NULL # <<<<<<<<<<<<<< @@ -2715,7 +2717,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex */ __pyx_v_self->_current_problem = NULL; - /* "cython/interface.pyx":103 + /* "cython/interface.pyx":105 * self._options = _bstring(suite_options if suite_options is not None else "") * self._current_problem = NULL * self.current_problem_ = None # <<<<<<<<<<<<<< @@ -2728,7 +2730,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_DECREF(__pyx_v_self->current_problem_); __pyx_v_self->current_problem_ = Py_None; - /* "cython/interface.pyx":104 + /* "cython/interface.pyx":106 * self._current_problem = NULL * self.current_problem_ = None * self._current_index = None # <<<<<<<<<<<<<< @@ -2741,7 +2743,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_DECREF(__pyx_v_self->_current_index); __pyx_v_self->_current_index = Py_None; - /* "cython/interface.pyx":105 + /* "cython/interface.pyx":107 * self.current_problem_ = None * self._current_index = None * self.initialized = False # <<<<<<<<<<<<<< @@ -2754,18 +2756,18 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_False; - /* "cython/interface.pyx":106 + /* "cython/interface.pyx":108 * self._current_index = None * self.initialized = False * self._initialize() # <<<<<<<<<<<<<< * assert self.initialized * cdef _initialize(self): */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Suite *)__pyx_v_self->__pyx_vtab)->_initialize(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Suite *)__pyx_v_self->__pyx_vtab)->_initialize(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":107 + /* "cython/interface.pyx":109 * self.initialized = False * self._initialize() * assert self.initialized # <<<<<<<<<<<<<< @@ -2774,15 +2776,15 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 107, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 109, __pyx_L1_error) if (unlikely(!__pyx_t_2)) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 107, __pyx_L1_error) + __PYX_ERR(0, 109, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":97 + /* "cython/interface.pyx":99 * cdef initialized * * def __cinit__(self, suite_name, suite_instance, suite_options): # <<<<<<<<<<<<<< @@ -2803,7 +2805,7 @@ static int __pyx_pf_6cocoex_9interface_5Suite___cinit__(struct __pyx_obj_6cocoex return __pyx_r; } -/* "cython/interface.pyx":108 +/* "cython/interface.pyx":110 * self._initialize() * assert self.initialized * cdef _initialize(self): # <<<<<<<<<<<<<< @@ -2839,24 +2841,24 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ int __pyx_t_19; __Pyx_RefNannySetupContext("_initialize", 0); - /* "cython/interface.pyx":116 + /* "cython/interface.pyx":118 * cdef bytes _old_level * * if self.initialized: # <<<<<<<<<<<<<< * self.reset() * self._ids = [] */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 116, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 118, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":117 + /* "cython/interface.pyx":119 * * if self.initialized: * self.reset() # <<<<<<<<<<<<<< * self._ids = [] * self._indices = [] */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 117, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -2869,16 +2871,16 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":116 + /* "cython/interface.pyx":118 * cdef bytes _old_level * * if self.initialized: # <<<<<<<<<<<<<< @@ -2887,14 +2889,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":118 + /* "cython/interface.pyx":120 * if self.initialized: * self.reset() * self._ids = [] # <<<<<<<<<<<<<< * self._indices = [] * self._names = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_ids); @@ -2902,14 +2904,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_ids = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":119 + /* "cython/interface.pyx":121 * self.reset() * self._ids = [] * self._indices = [] # <<<<<<<<<<<<<< * self._names = [] * self._dimensions = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_indices); @@ -2917,14 +2919,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_indices = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":120 + /* "cython/interface.pyx":122 * self._ids = [] * self._indices = [] * self._names = [] # <<<<<<<<<<<<<< * self._dimensions = [] * self._number_of_objectives = [] */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_names); @@ -2932,14 +2934,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_names = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":121 + /* "cython/interface.pyx":123 * self._indices = [] * self._names = [] * self._dimensions = [] # <<<<<<<<<<<<<< * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_dimensions); @@ -2947,14 +2949,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_dimensions = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":122 + /* "cython/interface.pyx":124 * self._names = [] * self._dimensions = [] * self._number_of_objectives = [] # <<<<<<<<<<<<<< * if self._name not in [_bstring(name) for name in known_suite_names]: * raise NoSuchSuiteException(""" */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_number_of_objectives); @@ -2962,24 +2964,24 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_v_self->_number_of_objectives = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":123 + /* "cython/interface.pyx":125 * self._dimensions = [] * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: # <<<<<<<<<<<<<< * raise NoSuchSuiteException(""" * Unkown benchmark suite name %s. */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { - __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { @@ -2987,17 +2989,17 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 125, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 125, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } @@ -3007,7 +3009,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 123, __pyx_L1_error) + else __PYX_ERR(0, 125, __pyx_L1_error) } break; } @@ -3015,45 +3017,45 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 123, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_self->_name, __pyx_t_2, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_self->_name, __pyx_t_2, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = (__pyx_t_1 != 0); if (__pyx_t_7) { - /* "cython/interface.pyx":124 + /* "cython/interface.pyx":126 * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: * raise NoSuchSuiteException(""" # <<<<<<<<<<<<<< * Unkown benchmark suite name %s. * Known suite names are %s. */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 126, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - /* "cython/interface.pyx":136 + /* "cython/interface.pyx":138 * This will crash Python, if the suite "my_name" does in fact not exist. You might * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) # <<<<<<<<<<<<<< * try: * suite = coco_suite(self._name, self._instance, self._options) */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_known_suite_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 136, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 136, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_self->_name); __Pyx_GIVEREF(__pyx_v_self->_name); @@ -3064,7 +3066,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_GIVEREF(__pyx_v_self->_name); PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_self->_name); __pyx_t_3 = 0; - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Unkown_benchmark_suite_name_s_K, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error) + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Unkown_benchmark_suite_name_s_K, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; @@ -3078,14 +3080,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } } if (!__pyx_t_8) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -3094,20 +3096,20 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 124, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 126, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -3115,9 +3117,9 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 124, __pyx_L1_error) + __PYX_ERR(0, 126, __pyx_L1_error) - /* "cython/interface.pyx":123 + /* "cython/interface.pyx":125 * self._dimensions = [] * self._number_of_objectives = [] * if self._name not in [_bstring(name) for name in known_suite_names]: # <<<<<<<<<<<<<< @@ -3126,7 +3128,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":137 + /* "cython/interface.pyx":139 * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) * try: # <<<<<<<<<<<<<< @@ -3142,7 +3144,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_XGOTREF(__pyx_t_12); /*try:*/ { - /* "cython/interface.pyx":138 + /* "cython/interface.pyx":140 * """ % (self._name, str(known_suite_names), self._name)) * try: * suite = coco_suite(self._name, self._instance, self._options) # <<<<<<<<<<<<<< @@ -3151,22 +3153,22 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ if (unlikely(__pyx_v_self->_name == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 138, __pyx_L7_error) + __PYX_ERR(0, 140, __pyx_L7_error) } - __pyx_t_13 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 138, __pyx_L7_error) + __pyx_t_13 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 140, __pyx_L7_error) if (unlikely(__pyx_v_self->_instance == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 138, __pyx_L7_error) + __PYX_ERR(0, 140, __pyx_L7_error) } - __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 138, __pyx_L7_error) + __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 140, __pyx_L7_error) if (unlikely(__pyx_v_self->_options == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 138, __pyx_L7_error) + __PYX_ERR(0, 140, __pyx_L7_error) } - __pyx_t_15 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 138, __pyx_L7_error) + __pyx_t_15 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 140, __pyx_L7_error) __pyx_v_suite = coco_suite(__pyx_t_13, __pyx_t_14, __pyx_t_15); - /* "cython/interface.pyx":137 + /* "cython/interface.pyx":139 * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) * try: # <<<<<<<<<<<<<< @@ -3185,7 +3187,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":139 + /* "cython/interface.pyx":141 * try: * suite = coco_suite(self._name, self._instance, self._options) * except: # <<<<<<<<<<<<<< @@ -3194,21 +3196,21 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite._initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_9) < 0) __PYX_ERR(0, 139, __pyx_L9_except_error) + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_9) < 0) __PYX_ERR(0, 141, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_9); - /* "cython/interface.pyx":140 + /* "cython/interface.pyx":142 * suite = coco_suite(self._name, self._instance, self._options) * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) # <<<<<<<<<<<<<< * if suite == NULL: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) */ - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 140, __pyx_L9_except_error) + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 142, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_16 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 140, __pyx_L9_except_error) + __pyx_t_16 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 142, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { @@ -3221,14 +3223,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } } if (!__pyx_t_17) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L9_except_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L9_except_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_16}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L9_except_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L9_except_error) __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; @@ -3237,20 +3239,20 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_16}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L9_except_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L9_except_error) __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; } else #endif { - __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 140, __pyx_L9_except_error) + __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 142, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL; __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_16); __pyx_t_16 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L9_except_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } @@ -3258,11 +3260,11 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 140, __pyx_L9_except_error) + __PYX_ERR(0, 142, __pyx_L9_except_error) } __pyx_L9_except_error:; - /* "cython/interface.pyx":137 + /* "cython/interface.pyx":139 * also report back a missing name to https://github.com/numbbo/coco/issues * """ % (self._name, str(known_suite_names), self._name)) * try: # <<<<<<<<<<<<<< @@ -3277,7 +3279,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_L12_try_end:; } - /* "cython/interface.pyx":141 + /* "cython/interface.pyx":143 * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * if suite == NULL: # <<<<<<<<<<<<<< @@ -3287,16 +3289,16 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_t_7 = ((__pyx_v_suite == NULL) != 0); if (__pyx_t_7) { - /* "cython/interface.pyx":142 + /* "cython/interface.pyx":144 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * if suite == NULL: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) # <<<<<<<<<<<<<< * while True: * old_level = log_level('warning') */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchSuiteException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error) + __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_No_suite_with_name_s_found, __pyx_v_self->_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -3309,14 +3311,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } } if (!__pyx_t_3) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_9); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -3325,20 +3327,20 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 142, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 142, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } @@ -3346,9 +3348,9 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_ERR(0, 142, __pyx_L1_error) + __PYX_ERR(0, 144, __pyx_L1_error) - /* "cython/interface.pyx":141 + /* "cython/interface.pyx":143 * except: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * if suite == NULL: # <<<<<<<<<<<<<< @@ -3357,7 +3359,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":143 + /* "cython/interface.pyx":145 * if suite == NULL: * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * while True: # <<<<<<<<<<<<<< @@ -3366,22 +3368,22 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ while (1) { - /* "cython/interface.pyx":144 + /* "cython/interface.pyx":146 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * while True: * old_level = log_level('warning') # <<<<<<<<<<<<<< * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) */ - __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 144, __pyx_L1_error) + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 146, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 146, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_old_level, __pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":145 + /* "cython/interface.pyx":147 * while True: * old_level = log_level('warning') * p = coco_suite_get_next_problem(suite, NULL) # <<<<<<<<<<<<<< @@ -3390,14 +3392,14 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ __pyx_v_p = coco_suite_get_next_problem(__pyx_v_suite, NULL); - /* "cython/interface.pyx":146 + /* "cython/interface.pyx":148 * old_level = log_level('warning') * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) # <<<<<<<<<<<<<< * if not p: * break */ - __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 146, __pyx_L1_error) + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_log_level); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { @@ -3410,13 +3412,13 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ } } if (!__pyx_t_8) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_old_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 146, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_old_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_old_level}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 146, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); } else @@ -3424,19 +3426,19 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_old_level}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 146, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { - __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 146, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL; __Pyx_INCREF(__pyx_v_old_level); __Pyx_GIVEREF(__pyx_v_old_level); PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_old_level); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 146, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } @@ -3444,7 +3446,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":147 + /* "cython/interface.pyx":149 * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) * if not p: # <<<<<<<<<<<<<< @@ -3454,7 +3456,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_t_7 = ((!(__pyx_v_p != 0)) != 0); if (__pyx_t_7) { - /* "cython/interface.pyx":148 + /* "cython/interface.pyx":150 * log_level(old_level) * if not p: * break # <<<<<<<<<<<<<< @@ -3463,7 +3465,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ goto __pyx_L17_break; - /* "cython/interface.pyx":147 + /* "cython/interface.pyx":149 * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) * if not p: # <<<<<<<<<<<<<< @@ -3472,69 +3474,69 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ } - /* "cython/interface.pyx":149 + /* "cython/interface.pyx":151 * if not p: * break * self._indices.append(coco_problem_get_suite_dep_index(p)) # <<<<<<<<<<<<<< * self._ids.append(coco_problem_get_id(p)) * self._names.append(coco_problem_get_name(p)) */ - __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 149, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_indices, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 149, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_indices, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":150 + /* "cython/interface.pyx":152 * break * self._indices.append(coco_problem_get_suite_dep_index(p)) * self._ids.append(coco_problem_get_id(p)) # <<<<<<<<<<<<<< * self._names.append(coco_problem_get_name(p)) * self._dimensions.append(coco_problem_get_dimension(p)) */ - __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 150, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_ids, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 150, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_ids, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 152, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":151 + /* "cython/interface.pyx":153 * self._indices.append(coco_problem_get_suite_dep_index(p)) * self._ids.append(coco_problem_get_id(p)) * self._names.append(coco_problem_get_name(p)) # <<<<<<<<<<<<<< * self._dimensions.append(coco_problem_get_dimension(p)) * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) */ - __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_names, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 151, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_names, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":152 + /* "cython/interface.pyx":154 * self._ids.append(coco_problem_get_id(p)) * self._names.append(coco_problem_get_name(p)) * self._dimensions.append(coco_problem_get_dimension(p)) # <<<<<<<<<<<<<< * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) * coco_suite_free(suite) */ - __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_dimension(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_dimension(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_dimensions, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 152, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_dimensions, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 154, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":153 + /* "cython/interface.pyx":155 * self._names.append(coco_problem_get_name(p)) * self._dimensions.append(coco_problem_get_dimension(p)) * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) # <<<<<<<<<<<<<< * coco_suite_free(suite) * self.suite = coco_suite(self._name, self._instance, self._options) */ - __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_number_of_objectives(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 153, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(coco_problem_get_number_of_objectives(__pyx_v_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_number_of_objectives, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 153, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_Append(__pyx_v_self->_number_of_objectives, __pyx_t_4); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_L17_break:; - /* "cython/interface.pyx":154 + /* "cython/interface.pyx":156 * self._dimensions.append(coco_problem_get_dimension(p)) * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) * coco_suite_free(suite) # <<<<<<<<<<<<<< @@ -3543,7 +3545,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ coco_suite_free(__pyx_v_suite); - /* "cython/interface.pyx":155 + /* "cython/interface.pyx":157 * self._number_of_objectives.append(coco_problem_get_number_of_objectives(p)) * coco_suite_free(suite) * self.suite = coco_suite(self._name, self._instance, self._options) # <<<<<<<<<<<<<< @@ -3552,22 +3554,22 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ */ if (unlikely(__pyx_v_self->_name == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 155, __pyx_L1_error) + __PYX_ERR(0, 157, __pyx_L1_error) } - __pyx_t_13 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 155, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L1_error) if (unlikely(__pyx_v_self->_instance == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 155, __pyx_L1_error) + __PYX_ERR(0, 157, __pyx_L1_error) } - __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 155, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_self->_instance); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L1_error) if (unlikely(__pyx_v_self->_options == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 155, __pyx_L1_error) + __PYX_ERR(0, 157, __pyx_L1_error) } - __pyx_t_15 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 155, __pyx_L1_error) + __pyx_t_15 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L1_error) __pyx_v_self->suite = coco_suite(__pyx_t_13, __pyx_t_14, __pyx_t_15); - /* "cython/interface.pyx":156 + /* "cython/interface.pyx":158 * coco_suite_free(suite) * self.suite = coco_suite(self._name, self._instance, self._options) * self.initialized = True # <<<<<<<<<<<<<< @@ -3580,7 +3582,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_True; - /* "cython/interface.pyx":157 + /* "cython/interface.pyx":159 * self.suite = coco_suite(self._name, self._instance, self._options) * self.initialized = True * return self # <<<<<<<<<<<<<< @@ -3592,7 +3594,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":108 + /* "cython/interface.pyx":110 * self._initialize() * assert self.initialized * cdef _initialize(self): # <<<<<<<<<<<<<< @@ -3620,7 +3622,7 @@ static PyObject *__pyx_f_6cocoex_9interface_5Suite__initialize(struct __pyx_obj_ return __pyx_r; } -/* "cython/interface.pyx":158 +/* "cython/interface.pyx":160 * self.initialized = True * return self * def reset(self): # <<<<<<<<<<<<<< @@ -3651,7 +3653,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("reset", 0); - /* "cython/interface.pyx":161 + /* "cython/interface.pyx":163 * """reset to original state, affecting `next_problem()`, * `current_problem`, `current_index`""" * self._current_index = None # <<<<<<<<<<<<<< @@ -3664,24 +3666,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->_current_index); __pyx_v_self->_current_index = Py_None; - /* "cython/interface.pyx":162 + /* "cython/interface.pyx":164 * `current_problem`, `current_index`""" * self._current_index = None * if self.current_problem_: # <<<<<<<<<<<<<< * self.current_problem_.free() * self.current_problem_ = None */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 162, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 164, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":163 + /* "cython/interface.pyx":165 * self._current_index = None * if self.current_problem_: * self.current_problem_.free() # <<<<<<<<<<<<<< * self.current_problem_ = None * self._current_problem = NULL */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 163, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -3694,16 +3696,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 163, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 165, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 163, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 165, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":162 + /* "cython/interface.pyx":164 * `current_problem`, `current_index`""" * self._current_index = None * if self.current_problem_: # <<<<<<<<<<<<<< @@ -3712,7 +3714,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc */ } - /* "cython/interface.pyx":164 + /* "cython/interface.pyx":166 * if self.current_problem_: * self.current_problem_.free() * self.current_problem_ = None # <<<<<<<<<<<<<< @@ -3725,7 +3727,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->current_problem_); __pyx_v_self->current_problem_ = Py_None; - /* "cython/interface.pyx":165 + /* "cython/interface.pyx":167 * self.current_problem_.free() * self.current_problem_ = None * self._current_problem = NULL # <<<<<<<<<<<<<< @@ -3734,7 +3736,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc */ __pyx_v_self->_current_problem = NULL; - /* "cython/interface.pyx":158 + /* "cython/interface.pyx":160 * self.initialized = True * return self * def reset(self): # <<<<<<<<<<<<<< @@ -3757,7 +3759,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_2reset(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":166 +/* "cython/interface.pyx":168 * self.current_problem_ = None * self._current_problem = NULL * def next_problem(self, observer=None): # <<<<<<<<<<<<<< @@ -3795,7 +3797,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__py } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "next_problem") < 0)) __PYX_ERR(0, 166, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "next_problem") < 0)) __PYX_ERR(0, 168, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3809,7 +3811,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_5next_problem(PyObject *__py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("next_problem", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 166, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("next_problem", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 168, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.next_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -3837,31 +3839,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("next_problem", 0); - /* "cython/interface.pyx":174 + /* "cython/interface.pyx":176 * cdef size_t index * global _current_observer * if not self.initialized: # <<<<<<<<<<<<<< * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 174, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 176, __pyx_L1_error) __pyx_t_2 = ((!__pyx_t_1) != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":175 + /* "cython/interface.pyx":177 * global _current_observer * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * if self.current_problem_: * self.current_problem_.free() */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 175, __pyx_L1_error) + __PYX_ERR(0, 177, __pyx_L1_error) - /* "cython/interface.pyx":174 + /* "cython/interface.pyx":176 * cdef size_t index * global _current_observer * if not self.initialized: # <<<<<<<<<<<<<< @@ -3870,24 +3872,24 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ } - /* "cython/interface.pyx":176 + /* "cython/interface.pyx":178 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: # <<<<<<<<<<<<<< * self.current_problem_.free() * if self._current_index is None: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 176, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->current_problem_); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 178, __pyx_L1_error) if (__pyx_t_2) { - /* "cython/interface.pyx":177 + /* "cython/interface.pyx":179 * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: * self.current_problem_.free() # <<<<<<<<<<<<<< * if self._current_index is None: * self._current_index = -1 */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 177, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_free); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { @@ -3900,16 +3902,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o } } if (__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":176 + /* "cython/interface.pyx":178 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * if self.current_problem_: # <<<<<<<<<<<<<< @@ -3918,7 +3920,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ } - /* "cython/interface.pyx":178 + /* "cython/interface.pyx":180 * if self.current_problem_: * self.current_problem_.free() * if self._current_index is None: # <<<<<<<<<<<<<< @@ -3929,7 +3931,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":179 + /* "cython/interface.pyx":181 * self.current_problem_.free() * if self._current_index is None: * self._current_index = -1 # <<<<<<<<<<<<<< @@ -3942,7 +3944,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __Pyx_DECREF(__pyx_v_self->_current_index); __pyx_v_self->_current_index = __pyx_int_neg_1; - /* "cython/interface.pyx":178 + /* "cython/interface.pyx":180 * if self.current_problem_: * self.current_problem_.free() * if self._current_index is None: # <<<<<<<<<<<<<< @@ -3951,14 +3953,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ } - /* "cython/interface.pyx":180 + /* "cython/interface.pyx":182 * if self._current_index is None: * self._current_index = -1 * self._current_index += 1 # <<<<<<<<<<<<<< * if self._current_index >= len(self): * self._current_problem = NULL */ - __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_current_index, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 180, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_current_index, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_current_index); @@ -3966,23 +3968,23 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_v_self->_current_index = __pyx_t_3; __pyx_t_3 = 0; - /* "cython/interface.pyx":181 + /* "cython/interface.pyx":183 * self._current_index = -1 * self._current_index += 1 * if self._current_index >= len(self): # <<<<<<<<<<<<<< * self._current_problem = NULL * self.current_problem_ = None */ - __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 181, __pyx_L1_error) - __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 181, __pyx_L1_error) + __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 183, __pyx_L1_error) + __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->_current_index, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 181, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->_current_index, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 183, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 181, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 183, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_1) { - /* "cython/interface.pyx":182 + /* "cython/interface.pyx":184 * self._current_index += 1 * if self._current_index >= len(self): * self._current_problem = NULL # <<<<<<<<<<<<<< @@ -3991,7 +3993,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ __pyx_v_self->_current_problem = NULL; - /* "cython/interface.pyx":183 + /* "cython/interface.pyx":185 * if self._current_index >= len(self): * self._current_problem = NULL * self.current_problem_ = None # <<<<<<<<<<<<<< @@ -4004,7 +4006,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __Pyx_DECREF(__pyx_v_self->current_problem_); __pyx_v_self->current_problem_ = Py_None; - /* "cython/interface.pyx":181 + /* "cython/interface.pyx":183 * self._current_index = -1 * self._current_index += 1 * if self._current_index >= len(self): # <<<<<<<<<<<<<< @@ -4014,7 +4016,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o goto __pyx_L6; } - /* "cython/interface.pyx":186 + /* "cython/interface.pyx":188 * # self._current_index = -1 # or use reset? * else: * index = self.indices[self._current_index] # "conversion" to size_t # <<<<<<<<<<<<<< @@ -4022,16 +4024,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o * self.suite, index) */ /*else*/ { - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 186, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_v_self->_current_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 186, __pyx_L1_error) + __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_v_self->_current_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 186, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_index = __pyx_t_7; - /* "cython/interface.pyx":187 + /* "cython/interface.pyx":189 * else: * index = self.indices[self._current_index] # "conversion" to size_t * self._current_problem = coco_suite_get_problem( # <<<<<<<<<<<<<< @@ -4040,7 +4042,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o */ __pyx_v_self->_current_problem = coco_suite_get_problem(__pyx_v_self->suite, __pyx_v_index); - /* "cython/interface.pyx":190 + /* "cython/interface.pyx":192 * self.suite, index) * self.current_problem_ = Problem_init(self._current_problem, * True, self._name) # <<<<<<<<<<<<<< @@ -4050,7 +4052,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_3 = __pyx_v_self->_name; __Pyx_INCREF(__pyx_t_3); - /* "cython/interface.pyx":189 + /* "cython/interface.pyx":191 * self._current_problem = coco_suite_get_problem( * self.suite, index) * self.current_problem_ = Problem_init(self._current_problem, # <<<<<<<<<<<<<< @@ -4060,7 +4062,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_t_8.__pyx_n = 2; __pyx_t_8.free = Py_True; __pyx_t_8.suite_name = __pyx_t_3; - __pyx_t_4 = __pyx_f_6cocoex_9interface_Problem_init(__pyx_v_self->_current_problem, &__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 189, __pyx_L1_error) + __pyx_t_4 = __pyx_f_6cocoex_9interface_Problem_init(__pyx_v_self->_current_problem, &__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_4); @@ -4069,14 +4071,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_v_self->current_problem_ = __pyx_t_4; __pyx_t_4 = 0; - /* "cython/interface.pyx":191 + /* "cython/interface.pyx":193 * self.current_problem_ = Problem_init(self._current_problem, * True, self._name) * self.current_problem_.observe_with(observer) # <<<<<<<<<<<<<< * return self.current_problem_ * def get_problem(self, id, observer=None): */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->current_problem_, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -4089,13 +4091,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o } } if (!__pyx_t_5) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else @@ -4103,19 +4105,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 191, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -4125,7 +4127,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o } __pyx_L6:; - /* "cython/interface.pyx":192 + /* "cython/interface.pyx":194 * True, self._name) * self.current_problem_.observe_with(observer) * return self.current_problem_ # <<<<<<<<<<<<<< @@ -4137,7 +4139,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o __pyx_r = __pyx_v_self->current_problem_; goto __pyx_L0; - /* "cython/interface.pyx":166 + /* "cython/interface.pyx":168 * self.current_problem_ = None * self._current_problem = NULL * def next_problem(self, observer=None): # <<<<<<<<<<<<<< @@ -4159,7 +4161,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4next_problem(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":193 +/* "cython/interface.pyx":195 * self.current_problem_.observe_with(observer) * return self.current_problem_ * def get_problem(self, id, observer=None): # <<<<<<<<<<<<<< @@ -4204,7 +4206,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem") < 0)) __PYX_ERR(0, 193, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem") < 0)) __PYX_ERR(0, 195, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -4220,7 +4222,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_7get_problem(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_problem", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 193, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 195, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -4256,31 +4258,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob PyObject *__pyx_t_17 = NULL; __Pyx_RefNannySetupContext("get_problem", 0); - /* "cython/interface.pyx":224 + /* "cython/interface.pyx":226 * See also `ids`, `get_problem_by_function_dimension_instance`. * """ * if not self.initialized: # <<<<<<<<<<<<<< * raise ValueError("Suite has been finalized/free'ed") * index = id */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 224, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 226, __pyx_L1_error) __pyx_t_2 = ((!__pyx_t_1) != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":225 + /* "cython/interface.pyx":227 * """ * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * index = id * try: */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 225, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 225, __pyx_L1_error) + __PYX_ERR(0, 227, __pyx_L1_error) - /* "cython/interface.pyx":224 + /* "cython/interface.pyx":226 * See also `ids`, `get_problem_by_function_dimension_instance`. * """ * if not self.initialized: # <<<<<<<<<<<<<< @@ -4289,7 +4291,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ } - /* "cython/interface.pyx":226 + /* "cython/interface.pyx":228 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * index = id # <<<<<<<<<<<<<< @@ -4299,7 +4301,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_INCREF(__pyx_v_id); __pyx_v_index = __pyx_v_id; - /* "cython/interface.pyx":227 + /* "cython/interface.pyx":229 * raise ValueError("Suite has been finalized/free'ed") * index = id * try: # <<<<<<<<<<<<<< @@ -4315,23 +4317,23 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XGOTREF(__pyx_t_6); /*try:*/ { - /* "cython/interface.pyx":228 + /* "cython/interface.pyx":230 * index = id * try: * 1 / (id == int(id)) # int(id) might raise an exception # <<<<<<<<<<<<<< * except: * index = self._ids.index(id) */ - __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 228, __pyx_L4_error) + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = PyObject_RichCompare(__pyx_v_id, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 228, __pyx_L4_error) + __pyx_t_7 = PyObject_RichCompare(__pyx_v_id, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 230, __pyx_L4_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 228, __pyx_L4_error) + __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":227 + /* "cython/interface.pyx":229 * raise ValueError("Suite has been finalized/free'ed") * index = id * try: # <<<<<<<<<<<<<< @@ -4347,7 +4349,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":229 + /* "cython/interface.pyx":231 * try: * 1 / (id == int(id)) # int(id) might raise an exception * except: # <<<<<<<<<<<<<< @@ -4356,19 +4358,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 229, __pyx_L6_except_error) + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 231, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_8); - /* "cython/interface.pyx":230 + /* "cython/interface.pyx":232 * 1 / (id == int(id)) # int(id) might raise an exception * except: * index = self._ids.index(id) # <<<<<<<<<<<<<< * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), */ - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ids, __pyx_n_s_index); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 230, __pyx_L6_except_error) + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_ids, __pyx_n_s_index); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 232, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { @@ -4381,13 +4383,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } } if (!__pyx_t_11) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 230, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 232, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_9); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_v_id}; - __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 230, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 232, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_9); } else @@ -4395,19 +4397,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_v_id}; - __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 230, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 232, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_9); } else #endif { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 230, __pyx_L6_except_error) + __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 232, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL; __Pyx_INCREF(__pyx_v_id); __Pyx_GIVEREF(__pyx_v_id); PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_id); - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 230, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 232, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } @@ -4422,7 +4424,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } __pyx_L6_except_error:; - /* "cython/interface.pyx":227 + /* "cython/interface.pyx":229 * raise ValueError("Suite has been finalized/free'ed") * index = id * try: # <<<<<<<<<<<<<< @@ -4442,7 +4444,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_L9_try_end:; } - /* "cython/interface.pyx":231 + /* "cython/interface.pyx":233 * except: * index = self._ids.index(id) * try: # <<<<<<<<<<<<<< @@ -4458,7 +4460,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { - /* "cython/interface.pyx":232 + /* "cython/interface.pyx":234 * index = self._ids.index(id) * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< @@ -4467,27 +4469,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ __Pyx_XDECREF(__pyx_r); - /* "cython/interface.pyx":233 + /* "cython/interface.pyx":235 * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< * except: * raise NoSuchProblemException(self.name, str(id)) */ - __pyx_t_7 = PyObject_GetItem(__pyx_v_self->_indices, __pyx_v_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 232, __pyx_L12_error) + __pyx_t_7 = PyObject_GetItem(__pyx_v_self->_indices, __pyx_v_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 234, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_7); - /* "cython/interface.pyx":232 + /* "cython/interface.pyx":234 * index = self._ids.index(id) * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< * True, self._name).observe_with(observer) * except: */ - __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_7); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 232, __pyx_L12_error) + __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_7); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 234, __pyx_L12_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":233 + /* "cython/interface.pyx":235 * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< @@ -4497,7 +4499,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_7 = __pyx_v_self->_name; __Pyx_INCREF(__pyx_t_7); - /* "cython/interface.pyx":232 + /* "cython/interface.pyx":234 * index = self._ids.index(id) * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), # <<<<<<<<<<<<<< @@ -4507,18 +4509,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_14.__pyx_n = 2; __pyx_t_14.free = Py_True; __pyx_t_14.suite_name = __pyx_t_7; - __pyx_t_3 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem(__pyx_v_self->suite, __pyx_t_13), &__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 232, __pyx_L12_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem(__pyx_v_self->suite, __pyx_t_13), &__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":233 + /* "cython/interface.pyx":235 * try: * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< * except: * raise NoSuchProblemException(self.name, str(id)) */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 233, __pyx_L12_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 235, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; @@ -4532,13 +4534,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } } if (!__pyx_t_3) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_observer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 233, __pyx_L12_error) + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_observer); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 235, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_8); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 233, __pyx_L12_error) + __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 235, __pyx_L12_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_8); } else @@ -4546,19 +4548,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 233, __pyx_L12_error) + __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 235, __pyx_L12_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_8); } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 233, __pyx_L12_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 235, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_observer); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 233, __pyx_L12_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 235, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -4568,7 +4570,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __pyx_t_8 = 0; goto __pyx_L16_try_return; - /* "cython/interface.pyx":231 + /* "cython/interface.pyx":233 * except: * index = self._ids.index(id) * try: # <<<<<<<<<<<<<< @@ -4585,7 +4587,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "cython/interface.pyx":234 + /* "cython/interface.pyx":236 * return Problem_init(coco_suite_get_problem(self.suite, self._indices[index]), * True, self._name).observe_with(observer) * except: # <<<<<<<<<<<<<< @@ -4594,28 +4596,28 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(0, 234, __pyx_L14_except_error) + if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(0, 236, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_9); - /* "cython/interface.pyx":235 + /* "cython/interface.pyx":237 * True, self._name).observe_with(observer) * except: * raise NoSuchProblemException(self.name, str(id)) # <<<<<<<<<<<<<< * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): */ - __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 235, __pyx_L14_except_error) + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 237, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 235, __pyx_L14_except_error) + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 237, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_12); - __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 235, __pyx_L14_except_error) + __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 237, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_v_id); __Pyx_GIVEREF(__pyx_v_id); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_id); - __pyx_t_15 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 235, __pyx_L14_except_error) + __pyx_t_15 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 237, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; @@ -4633,7 +4635,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_12, __pyx_t_15}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 235, __pyx_L14_except_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L14_except_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; @@ -4643,7 +4645,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_12, __pyx_t_15}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 235, __pyx_L14_except_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L14_except_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; @@ -4651,7 +4653,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob } else #endif { - __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 235, __pyx_L14_except_error) + __pyx_t_17 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 237, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_17); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_11); __pyx_t_11 = NULL; @@ -4662,18 +4664,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_t_15); __pyx_t_12 = 0; __pyx_t_15 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 235, __pyx_L14_except_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L14_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 235, __pyx_L14_except_error) + __PYX_ERR(0, 237, __pyx_L14_except_error) } __pyx_L14_except_error:; - /* "cython/interface.pyx":231 + /* "cython/interface.pyx":233 * except: * index = self._ids.index(id) * try: # <<<<<<<<<<<<<< @@ -4693,7 +4695,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob goto __pyx_L0; } - /* "cython/interface.pyx":193 + /* "cython/interface.pyx":195 * self.current_problem_.observe_with(observer) * return self.current_problem_ * def get_problem(self, id, observer=None): # <<<<<<<<<<<<<< @@ -4721,7 +4723,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_6get_problem(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":237 +/* "cython/interface.pyx":239 * raise NoSuchProblemException(self.name, str(id)) * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): # <<<<<<<<<<<<<< @@ -4768,13 +4770,13 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimension)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 1); __PYX_ERR(0, 237, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 1); __PYX_ERR(0, 239, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_instance)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 2); __PYX_ERR(0, 237, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, 2); __PYX_ERR(0, 239, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: @@ -4784,7 +4786,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem_by_function_dimension_instance") < 0)) __PYX_ERR(0, 237, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_problem_by_function_dimension_instance") < 0)) __PYX_ERR(0, 239, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -4804,7 +4806,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_9get_problem_by_function_dim } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 237, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_problem_by_function_dimension_instance", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 239, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Suite.get_problem_by_function_dimension_instance", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -4843,61 +4845,61 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim PyObject *__pyx_t_18 = NULL; __Pyx_RefNannySetupContext("get_problem_by_function_dimension_instance", 0); - /* "cython/interface.pyx":261 + /* "cython/interface.pyx":263 * just silently die, which is e.g. a known issue of the "bbob" observer. * """ * cdef size_t _function = function # "conversion" to size_t # <<<<<<<<<<<<<< * cdef size_t _dimension = dimension # "conversion" to size_t * cdef size_t _instance = instance # "conversion" to size_t */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_function); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 261, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_function); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 263, __pyx_L1_error) __pyx_v__function = __pyx_t_1; - /* "cython/interface.pyx":262 + /* "cython/interface.pyx":264 * """ * cdef size_t _function = function # "conversion" to size_t * cdef size_t _dimension = dimension # "conversion" to size_t # <<<<<<<<<<<<<< * cdef size_t _instance = instance # "conversion" to size_t * */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_dimension); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 262, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_dimension); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 264, __pyx_L1_error) __pyx_v__dimension = __pyx_t_1; - /* "cython/interface.pyx":263 + /* "cython/interface.pyx":265 * cdef size_t _function = function # "conversion" to size_t * cdef size_t _dimension = dimension # "conversion" to size_t * cdef size_t _instance = instance # "conversion" to size_t # <<<<<<<<<<<<<< * * if not self.initialized: */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_instance); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 263, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_instance); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 265, __pyx_L1_error) __pyx_v__instance = __pyx_t_1; - /* "cython/interface.pyx":265 + /* "cython/interface.pyx":267 * cdef size_t _instance = instance # "conversion" to size_t * * if not self.initialized: # <<<<<<<<<<<<<< * raise ValueError("Suite has been finalized/free'ed") * try: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 265, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 267, __pyx_L1_error) __pyx_t_3 = ((!__pyx_t_2) != 0); if (__pyx_t_3) { - /* "cython/interface.pyx":266 + /* "cython/interface.pyx":268 * * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, */ - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 266, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 266, __pyx_L1_error) + __PYX_ERR(0, 268, __pyx_L1_error) - /* "cython/interface.pyx":265 + /* "cython/interface.pyx":267 * cdef size_t _instance = instance # "conversion" to size_t * * if not self.initialized: # <<<<<<<<<<<<<< @@ -4906,7 +4908,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ } - /* "cython/interface.pyx":267 + /* "cython/interface.pyx":269 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * try: # <<<<<<<<<<<<<< @@ -4922,7 +4924,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_XGOTREF(__pyx_t_7); /*try:*/ { - /* "cython/interface.pyx":268 + /* "cython/interface.pyx":270 * raise ValueError("Suite has been finalized/free'ed") * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, # <<<<<<<<<<<<<< @@ -4931,7 +4933,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ __Pyx_XDECREF(__pyx_r); - /* "cython/interface.pyx":270 + /* "cython/interface.pyx":272 * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, * _dimension, _instance), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< @@ -4941,7 +4943,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_8 = __pyx_v_self->_name; __Pyx_INCREF(__pyx_t_8); - /* "cython/interface.pyx":268 + /* "cython/interface.pyx":270 * raise ValueError("Suite has been finalized/free'ed") * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, # <<<<<<<<<<<<<< @@ -4951,18 +4953,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_10.__pyx_n = 2; __pyx_t_10.free = Py_True; __pyx_t_10.suite_name = __pyx_t_8; - __pyx_t_9 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem_by_function_dimension_instance(__pyx_v_self->suite, __pyx_v__function, __pyx_v__dimension, __pyx_v__instance), &__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 268, __pyx_L4_error) + __pyx_t_9 = __pyx_f_6cocoex_9interface_Problem_init(coco_suite_get_problem_by_function_dimension_instance(__pyx_v_self->suite, __pyx_v__function, __pyx_v__dimension, __pyx_v__instance), &__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 270, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "cython/interface.pyx":270 + /* "cython/interface.pyx":272 * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, * _dimension, _instance), * True, self._name).observe_with(observer) # <<<<<<<<<<<<<< * except: * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 270, __pyx_L4_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 272, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; @@ -4976,13 +4978,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim } } if (!__pyx_t_9) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_observer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L4_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_4); } else @@ -4990,19 +4992,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_observer}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L4_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 270, __pyx_L4_error) + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 272, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_observer); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L4_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } @@ -5012,7 +5014,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __pyx_t_4 = 0; goto __pyx_L8_try_return; - /* "cython/interface.pyx":267 + /* "cython/interface.pyx":269 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * try: # <<<<<<<<<<<<<< @@ -5026,7 +5028,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":271 + /* "cython/interface.pyx":273 * _dimension, _instance), * True, self._name).observe_with(observer) * except: # <<<<<<<<<<<<<< @@ -5035,26 +5037,26 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.get_problem_by_function_dimension_instance", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_11) < 0) __PYX_ERR(0, 271, __pyx_L6_except_error) + if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_11) < 0) __PYX_ERR(0, 273, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_11); - /* "cython/interface.pyx":272 + /* "cython/interface.pyx":274 * True, self._name).observe_with(observer) * except: * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, # <<<<<<<<<<<<<< * dimension, * instance)) */ - __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 272, __pyx_L6_except_error) + __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_12); - __pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 272, __pyx_L6_except_error) + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_13); - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_function_dimension_instance, __pyx_n_s_format); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 272, __pyx_L6_except_error) + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_function_dimension_instance, __pyx_n_s_format); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_15); - /* "cython/interface.pyx":274 + /* "cython/interface.pyx":276 * raise NoSuchProblemException(self.name, 'function: {}, dimension: {}, instance: {}'.format(function, * dimension, * instance)) # <<<<<<<<<<<<<< @@ -5076,7 +5078,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[4] = {__pyx_t_16, __pyx_v_function, __pyx_v_dimension, __pyx_v_instance}; - __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 272, __pyx_L6_except_error) + __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_14); } else @@ -5084,13 +5086,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[4] = {__pyx_t_16, __pyx_v_function, __pyx_v_dimension, __pyx_v_instance}; - __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 272, __pyx_L6_except_error) + __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_17, 3+__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_14); } else #endif { - __pyx_t_18 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 272, __pyx_L6_except_error) + __pyx_t_18 = PyTuple_New(3+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_18); if (__pyx_t_16) { __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_16); __pyx_t_16 = NULL; @@ -5104,7 +5106,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim __Pyx_INCREF(__pyx_v_instance); __Pyx_GIVEREF(__pyx_v_instance); PyTuple_SET_ITEM(__pyx_t_18, 2+__pyx_t_17, __pyx_v_instance); - __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_18, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 272, __pyx_L6_except_error) + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_18, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } @@ -5124,7 +5126,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_13, __pyx_t_14}; - __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 272, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -5134,7 +5136,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_13, __pyx_t_14}; - __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 272, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -5142,7 +5144,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim } else #endif { - __pyx_t_18 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 272, __pyx_L6_except_error) + __pyx_t_18 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_18); if (__pyx_t_15) { __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_15); __pyx_t_15 = NULL; @@ -5153,18 +5155,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_t_14); __pyx_t_13 = 0; __pyx_t_14 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_18, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 272, __pyx_L6_except_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_18, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 274, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_ERR(0, 272, __pyx_L6_except_error) + __PYX_ERR(0, 274, __pyx_L6_except_error) } __pyx_L6_except_error:; - /* "cython/interface.pyx":267 + /* "cython/interface.pyx":269 * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") * try: # <<<<<<<<<<<<<< @@ -5184,7 +5186,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim goto __pyx_L0; } - /* "cython/interface.pyx":237 + /* "cython/interface.pyx":239 * raise NoSuchProblemException(self.name, str(id)) * * def get_problem_by_function_dimension_instance(self, function, dimension, instance, observer=None): # <<<<<<<<<<<<<< @@ -5212,7 +5214,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8get_problem_by_function_dim return __pyx_r; } -/* "cython/interface.pyx":276 +/* "cython/interface.pyx":278 * instance)) * * def __getitem__(self, key): # <<<<<<<<<<<<<< @@ -5246,7 +5248,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("__getitem__", 0); - /* "cython/interface.pyx":279 + /* "cython/interface.pyx":281 * """`self[i]` is a synonym for `self.get_problem(i)`, see `get_problem` * """ * return self.get_problem(key) # <<<<<<<<<<<<<< @@ -5254,7 +5256,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o * def free(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 279, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -5267,13 +5269,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_key}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -5281,19 +5283,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_key}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_key); __Pyx_GIVEREF(__pyx_v_key); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_key); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } @@ -5303,7 +5305,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":276 + /* "cython/interface.pyx":278 * instance)) * * def __getitem__(self, key): # <<<<<<<<<<<<<< @@ -5325,7 +5327,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10__getitem__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":281 +/* "cython/interface.pyx":283 * return self.get_problem(key) * * def free(self): # <<<<<<<<<<<<<< @@ -5353,7 +5355,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc int __pyx_t_1; __Pyx_RefNannySetupContext("free", 0); - /* "cython/interface.pyx":283 + /* "cython/interface.pyx":285 * def free(self): * """free underlying C structures""" * if self.suite: # for some reason __dealloc__ cannot be called here # <<<<<<<<<<<<<< @@ -5363,7 +5365,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc __pyx_t_1 = (__pyx_v_self->suite != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":284 + /* "cython/interface.pyx":286 * """free underlying C structures""" * if self.suite: # for some reason __dealloc__ cannot be called here * coco_suite_free(self.suite) # <<<<<<<<<<<<<< @@ -5372,7 +5374,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc */ coco_suite_free(__pyx_v_self->suite); - /* "cython/interface.pyx":283 + /* "cython/interface.pyx":285 * def free(self): * """free underlying C structures""" * if self.suite: # for some reason __dealloc__ cannot be called here # <<<<<<<<<<<<<< @@ -5381,7 +5383,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc */ } - /* "cython/interface.pyx":285 + /* "cython/interface.pyx":287 * if self.suite: # for some reason __dealloc__ cannot be called here * coco_suite_free(self.suite) * self.suite = NULL # <<<<<<<<<<<<<< @@ -5390,7 +5392,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc */ __pyx_v_self->suite = NULL; - /* "cython/interface.pyx":286 + /* "cython/interface.pyx":288 * coco_suite_free(self.suite) * self.suite = NULL * self.initialized = False # not (yet) visible from outside # <<<<<<<<<<<<<< @@ -5403,7 +5405,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_False; - /* "cython/interface.pyx":281 + /* "cython/interface.pyx":283 * return self.get_problem(key) * * def free(self): # <<<<<<<<<<<<<< @@ -5418,7 +5420,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_12free(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":287 +/* "cython/interface.pyx":289 * self.suite = NULL * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -5442,7 +5444,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c int __pyx_t_1; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "cython/interface.pyx":288 + /* "cython/interface.pyx":290 * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): * if self.suite: # <<<<<<<<<<<<<< @@ -5452,7 +5454,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c __pyx_t_1 = (__pyx_v_self->suite != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":289 + /* "cython/interface.pyx":291 * def __dealloc__(self): * if self.suite: * coco_suite_free(self.suite) # <<<<<<<<<<<<<< @@ -5461,7 +5463,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c */ coco_suite_free(__pyx_v_self->suite); - /* "cython/interface.pyx":288 + /* "cython/interface.pyx":290 * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): * if self.suite: # <<<<<<<<<<<<<< @@ -5470,7 +5472,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c */ } - /* "cython/interface.pyx":287 + /* "cython/interface.pyx":289 * self.suite = NULL * self.initialized = False # not (yet) visible from outside * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -5482,7 +5484,7 @@ static void __pyx_pf_6cocoex_9interface_5Suite_14__dealloc__(struct __pyx_obj_6c __Pyx_RefNannyFinishContext(); } -/* "cython/interface.pyx":291 +/* "cython/interface.pyx":293 * coco_suite_free(self.suite) * * def find_problem_ids(self, *args, **kwargs): # <<<<<<<<<<<<<< @@ -5517,20 +5519,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(CYTHON_UN PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("find_problem_ids", 0); - /* "cython/interface.pyx":293 + /* "cython/interface.pyx":295 * def find_problem_ids(self, *args, **kwargs): * """has been renamed to `ids`""" * raise NotImplementedError( # <<<<<<<<<<<<<< * "`find_problem_ids()` has been renamed to `ids()`") * */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 293, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 293, __pyx_L1_error) + __PYX_ERR(0, 295, __pyx_L1_error) - /* "cython/interface.pyx":291 + /* "cython/interface.pyx":293 * coco_suite_free(self.suite) * * def find_problem_ids(self, *args, **kwargs): # <<<<<<<<<<<<<< @@ -5548,7 +5550,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_16find_problem_ids(CYTHON_UN return __pyx_r; } -/* "cython/interface.pyx":297 +/* "cython/interface.pyx":299 * * * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< @@ -5597,7 +5599,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "ids") < 0)) __PYX_ERR(0, 297, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "ids") < 0)) __PYX_ERR(0, 299, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) < 0) { goto __pyx_L5_argtuple_error; @@ -5608,7 +5610,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_5Suite_19ids(PyObject *__pyx_v_self } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("ids", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 297, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("ids", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 299, __pyx_L3_error) __pyx_L3_error:; __Pyx_DECREF(__pyx_v_id_snippets); __pyx_v_id_snippets = 0; __Pyx_AddTraceback("cocoex.interface.Suite.ids", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -5645,19 +5647,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco int __pyx_t_13; __Pyx_RefNannySetupContext("ids", 0); - /* "cython/interface.pyx":335 + /* "cython/interface.pyx":337 * * """ * res = [] # <<<<<<<<<<<<<< * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_res = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":336 + /* "cython/interface.pyx":338 * """ * res = [] * for idx, id in enumerate(self._ids): # <<<<<<<<<<<<<< @@ -5670,26 +5672,26 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_2 = __pyx_v_self->_ids; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 336, __pyx_L1_error) + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 336, __pyx_L1_error) + __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 336, __pyx_L1_error) + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 338, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 336, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 336, __pyx_L1_error) + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 338, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 336, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } @@ -5699,7 +5701,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 336, __pyx_L1_error) + else __PYX_ERR(0, 338, __pyx_L1_error) } break; } @@ -5709,33 +5711,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_5 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_1); - __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 336, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; __pyx_t_5 = 0; - /* "cython/interface.pyx":337 + /* "cython/interface.pyx":339 * res = [] * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): # <<<<<<<<<<<<<< * if verbose: * print(" id=%s, index=%d" % (id, idx)) */ - __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __pyx_v_id_snippets; __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0; for (;;) { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 339, __pyx_L1_error) #else - __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_8); __pyx_t_8 = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_id, __pyx_n_s_find); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_id, __pyx_n_s_find); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { @@ -5748,13 +5750,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco } } if (!__pyx_t_10) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_i); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_i); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_v_i}; - __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_8); } else @@ -5762,60 +5764,60 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_v_i}; - __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_8); } else #endif { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL; __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_i); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 337, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 339, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_12) { - /* "cython/interface.pyx":338 + /* "cython/interface.pyx":340 * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): * if verbose: # <<<<<<<<<<<<<< * print(" id=%s, index=%d" % (id, idx)) * res.append(id) */ - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_verbose); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_verbose); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 340, __pyx_L1_error) if (__pyx_t_12) { - /* "cython/interface.pyx":339 + /* "cython/interface.pyx":341 * if all([id.find(i) >= 0 for i in id_snippets]): * if verbose: * print(" id=%s, index=%d" % (id, idx)) # <<<<<<<<<<<<<< * res.append(id) * if get_problem: */ - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_id); __Pyx_GIVEREF(__pyx_v_id); @@ -5823,20 +5825,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __Pyx_INCREF(__pyx_v_idx); __Pyx_GIVEREF(__pyx_v_idx); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_idx); - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_id_s_index_d, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_id_s_index_d, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":338 + /* "cython/interface.pyx":340 * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): * if verbose: # <<<<<<<<<<<<<< @@ -5845,16 +5847,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco */ } - /* "cython/interface.pyx":340 + /* "cython/interface.pyx":342 * if verbose: * print(" id=%s, index=%d" % (id, idx)) * res.append(id) # <<<<<<<<<<<<<< * if get_problem: * return self.get_problem(res[0]) */ - __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_res, __pyx_v_id); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_res, __pyx_v_id); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 342, __pyx_L1_error) - /* "cython/interface.pyx":337 + /* "cython/interface.pyx":339 * res = [] * for idx, id in enumerate(self._ids): * if all([id.find(i) >= 0 for i in id_snippets]): # <<<<<<<<<<<<<< @@ -5863,7 +5865,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco */ } - /* "cython/interface.pyx":336 + /* "cython/interface.pyx":338 * """ * res = [] * for idx, id in enumerate(self._ids): # <<<<<<<<<<<<<< @@ -5874,17 +5876,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":341 + /* "cython/interface.pyx":343 * print(" id=%s, index=%d" % (id, idx)) * res.append(id) * if get_problem: # <<<<<<<<<<<<<< * return self.get_problem(res[0]) * return res */ - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_get_problem); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 341, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_get_problem); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 343, __pyx_L1_error) if (__pyx_t_12) { - /* "cython/interface.pyx":342 + /* "cython/interface.pyx":344 * res.append(id) * if get_problem: * return self.get_problem(res[0]) # <<<<<<<<<<<<<< @@ -5892,9 +5894,9 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 342, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 342, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -5907,14 +5909,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco } } if (!__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -5923,20 +5925,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 342, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6); __pyx_t_6 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -5946,7 +5948,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":341 + /* "cython/interface.pyx":343 * print(" id=%s, index=%d" % (id, idx)) * res.append(id) * if get_problem: # <<<<<<<<<<<<<< @@ -5955,7 +5957,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco */ } - /* "cython/interface.pyx":343 + /* "cython/interface.pyx":345 * if get_problem: * return self.get_problem(res[0]) * return res # <<<<<<<<<<<<<< @@ -5967,7 +5969,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco __pyx_r = __pyx_v_res; goto __pyx_L0; - /* "cython/interface.pyx":297 + /* "cython/interface.pyx":299 * * * def ids(self, *id_snippets, get_problem=False, verbose=False): # <<<<<<<<<<<<<< @@ -5997,7 +5999,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_18ids(struct __pyx_obj_6coco return __pyx_r; } -/* "cython/interface.pyx":346 +/* "cython/interface.pyx":348 * * @property * def current_problem(self): # <<<<<<<<<<<<<< @@ -6023,7 +6025,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(st __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":348 + /* "cython/interface.pyx":350 * def current_problem(self): * """current "open/active" problem to be benchmarked""" * return self.current_problem_ # <<<<<<<<<<<<<< @@ -6035,7 +6037,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(st __pyx_r = __pyx_v_self->current_problem_; goto __pyx_L0; - /* "cython/interface.pyx":346 + /* "cython/interface.pyx":348 * * @property * def current_problem(self): # <<<<<<<<<<<<<< @@ -6050,7 +6052,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_15current_problem___get__(st return __pyx_r; } -/* "cython/interface.pyx":350 +/* "cython/interface.pyx":352 * return self.current_problem_ * @property * def current_index(self): # <<<<<<<<<<<<<< @@ -6076,7 +6078,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(stru __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":366 + /* "cython/interface.pyx":368 * * """ * return self._current_index # <<<<<<<<<<<<<< @@ -6088,7 +6090,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(stru __pyx_r = __pyx_v_self->_current_index; goto __pyx_L0; - /* "cython/interface.pyx":350 + /* "cython/interface.pyx":352 * return self.current_problem_ * @property * def current_index(self): # <<<<<<<<<<<<<< @@ -6103,7 +6105,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13current_index___get__(stru return __pyx_r; } -/* "cython/interface.pyx":368 +/* "cython/interface.pyx":370 * return self._current_index * @property * def problem_names(self): # <<<<<<<<<<<<<< @@ -6130,7 +6132,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":370 + /* "cython/interface.pyx":372 * def problem_names(self): * """list of problem names in this `Suite`, see also `ids`""" * return list(self._names) # <<<<<<<<<<<<<< @@ -6138,13 +6140,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru * def dimensions(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PySequence_List(__pyx_v_self->_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error) + __pyx_t_1 = PySequence_List(__pyx_v_self->_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":368 + /* "cython/interface.pyx":370 * return self._current_index * @property * def problem_names(self): # <<<<<<<<<<<<<< @@ -6163,7 +6165,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_13problem_names___get__(stru return __pyx_r; } -/* "cython/interface.pyx":372 +/* "cython/interface.pyx":374 * return list(self._names) * @property * def dimensions(self): # <<<<<<<<<<<<<< @@ -6193,7 +6195,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct int __pyx_t_4; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":374 + /* "cython/interface.pyx":376 * def dimensions(self): * """list of problem dimensions occuring at least once in this `Suite`""" * return sorted(set(self._dimensions)) # <<<<<<<<<<<<<< @@ -6201,19 +6203,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct * def number_of_objectives(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PySet_New(__pyx_v_self->_dimensions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 374, __pyx_L1_error) + __pyx_t_2 = PySet_New(__pyx_v_self->_dimensions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 376, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 374, __pyx_L1_error) + __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 376, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 374, __pyx_L1_error) + __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 376, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":372 + /* "cython/interface.pyx":374 * return list(self._names) * @property * def dimensions(self): # <<<<<<<<<<<<<< @@ -6234,7 +6236,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_10dimensions___get__(struct return __pyx_r; } -/* "cython/interface.pyx":376 +/* "cython/interface.pyx":378 * return sorted(set(self._dimensions)) * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -6264,7 +6266,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get int __pyx_t_4; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":378 + /* "cython/interface.pyx":380 * def number_of_objectives(self): * """list of number of objectives occuring in this `Suite`""" * return sorted(set(self._number_of_objectives)) # <<<<<<<<<<<<<< @@ -6272,19 +6274,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get * def indices(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PySet_New(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 378, __pyx_L1_error) + __pyx_t_2 = PySet_New(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 378, __pyx_L1_error) + __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 378, __pyx_L1_error) + __pyx_t_4 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 380, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":376 + /* "cython/interface.pyx":378 * return sorted(set(self._dimensions)) * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -6305,7 +6307,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20number_of_objectives___get return __pyx_r; } -/* "cython/interface.pyx":380 +/* "cython/interface.pyx":382 * return sorted(set(self._number_of_objectives)) * @property * def indices(self): # <<<<<<<<<<<<<< @@ -6332,7 +6334,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":386 + /* "cython/interface.pyx":388 * Indices used in the Python interface run between 0 and `len(self)`. * """ * return list(self._indices) # <<<<<<<<<<<<<< @@ -6340,13 +6342,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py * def name(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PySequence_List(__pyx_v_self->_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 386, __pyx_L1_error) + __pyx_t_1 = PySequence_List(__pyx_v_self->_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":380 + /* "cython/interface.pyx":382 * return sorted(set(self._number_of_objectives)) * @property * def indices(self): # <<<<<<<<<<<<<< @@ -6365,7 +6367,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7indices___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":388 +/* "cython/interface.pyx":390 * return list(self._indices) * @property * def name(self): # <<<<<<<<<<<<<< @@ -6391,7 +6393,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_o __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":390 + /* "cython/interface.pyx":392 * def name(self): * """see __init__.py""" * return self._name # <<<<<<<<<<<<<< @@ -6403,7 +6405,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_o __pyx_r = __pyx_v_self->_name; goto __pyx_L0; - /* "cython/interface.pyx":388 + /* "cython/interface.pyx":390 * return list(self._indices) * @property * def name(self): # <<<<<<<<<<<<<< @@ -6418,7 +6420,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4name___get__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":392 +/* "cython/interface.pyx":394 * return self._name * @property * def instance(self): # <<<<<<<<<<<<<< @@ -6444,7 +6446,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __p __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":395 + /* "cython/interface.pyx":397 * """instance of this suite as used to instantiate the suite via * `Suite(name, instance, ...)`""" * return self._instance # <<<<<<<<<<<<<< @@ -6456,7 +6458,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __p __pyx_r = __pyx_v_self->_instance; goto __pyx_L0; - /* "cython/interface.pyx":392 + /* "cython/interface.pyx":394 * return self._name * @property * def instance(self): # <<<<<<<<<<<<<< @@ -6471,7 +6473,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_8instance___get__(struct __p return __pyx_r; } -/* "cython/interface.pyx":397 +/* "cython/interface.pyx":399 * return self._instance * @property * def options(self): # <<<<<<<<<<<<<< @@ -6497,7 +6499,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":400 + /* "cython/interface.pyx":402 * """options for this suite as used to instantiate the suite via * `Suite(name, instance, options)`""" * return self._options # <<<<<<<<<<<<<< @@ -6509,7 +6511,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __py __pyx_r = __pyx_v_self->_options; goto __pyx_L0; - /* "cython/interface.pyx":397 + /* "cython/interface.pyx":399 * return self._instance * @property * def options(self): # <<<<<<<<<<<<<< @@ -6524,7 +6526,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_7options___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":403 +/* "cython/interface.pyx":405 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -6552,7 +6554,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":404 + /* "cython/interface.pyx":406 * @property * def info(self): * return str(self) # <<<<<<<<<<<<<< @@ -6560,19 +6562,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 404, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 404, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":403 + /* "cython/interface.pyx":405 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -6592,7 +6594,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_4info___get__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":405 +/* "cython/interface.pyx":407 * def info(self): * return str(self) * def __repr__(self): # <<<<<<<<<<<<<< @@ -6622,7 +6624,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("__repr__", 0); - /* "cython/interface.pyx":406 + /* "cython/interface.pyx":408 * return str(self) * def __repr__(self): * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets # <<<<<<<<<<<<<< @@ -6630,13 +6632,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 406, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 406, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 406, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 406, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); @@ -6647,14 +6649,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Suite_r_r_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 406, __pyx_L1_error) + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_Suite_r_r_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":405 + /* "cython/interface.pyx":407 * def info(self): * return str(self) * def __repr__(self): # <<<<<<<<<<<<<< @@ -6676,7 +6678,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_20__repr__(struct __pyx_obj_ return __pyx_r; } -/* "cython/interface.pyx":407 +/* "cython/interface.pyx":409 * def __repr__(self): * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets * def __str__(self): # <<<<<<<<<<<<<< @@ -6712,7 +6714,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 PyObject *__pyx_t_10 = NULL; __Pyx_RefNannySetupContext("__str__", 0); - /* "cython/interface.pyx":408 + /* "cython/interface.pyx":410 * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets * def __str__(self): * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ # <<<<<<<<<<<<<< @@ -6721,31 +6723,31 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 */ __Pyx_XDECREF(__pyx_r); - /* "cython/interface.pyx":409 + /* "cython/interface.pyx":411 * def __str__(self): * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ * % (self.name, self.instance, self.options, # <<<<<<<<<<<<<< * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 409, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 409, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_instance); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 409, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - /* "cython/interface.pyx":410 + /* "cython/interface.pyx":412 * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ * % (self.name, self.instance, self.options, * len(self), '' if len(self) == 1 else 's', # <<<<<<<<<<<<<< * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) */ - __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 410, __pyx_L1_error) - __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 410, __pyx_L1_error) + __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 410, __pyx_L1_error) + __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 412, __pyx_L1_error) if (((__pyx_t_4 == 1) != 0)) { __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_6 = __pyx_kp_u__2; @@ -6754,16 +6756,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 __pyx_t_6 = __pyx_n_u_s; } - /* "cython/interface.pyx":411 + /* "cython/interface.pyx":413 * % (self.name, self.instance, self.options, * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', # <<<<<<<<<<<<<< * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 411, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_4 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 411, __pyx_L1_error) + __pyx_t_4 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 413, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (((__pyx_t_4 == 1) != 0)) { __Pyx_INCREF(__pyx_kp_u__2); @@ -6773,34 +6775,34 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 __pyx_t_7 = __pyx_n_u_s; } - /* "cython/interface.pyx":412 + /* "cython/interface.pyx":414 * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) # <<<<<<<<<<<<<< * def __len__(self): * return len(self._indices) */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_min, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_min, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); @@ -6808,18 +6810,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); __pyx_t_8 = 0; __pyx_t_9 = 0; - __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 412, __pyx_L1_error) + __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - /* "cython/interface.pyx":409 + /* "cython/interface.pyx":411 * def __str__(self): * return 'Suite("%s", "%s", "%s") with %d problem%s in dimension%s %s' \ * % (self.name, self.instance, self.options, # <<<<<<<<<<<<<< * len(self), '' if len(self) == 1 else 's', * '' if len(self.dimensions) == 1 else 's', */ - __pyx_t_10 = PyTuple_New(7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 409, __pyx_L1_error) + __pyx_t_10 = PyTuple_New(7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); @@ -6842,14 +6844,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_9 = 0; - __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 409, __pyx_L1_error) + __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_r = __pyx_t_9; __pyx_t_9 = 0; goto __pyx_L0; - /* "cython/interface.pyx":407 + /* "cython/interface.pyx":409 * def __repr__(self): * return 'Suite(%r, %r, %r)' % (self.name, self.instance, self.options) # angled brackets * def __str__(self): # <<<<<<<<<<<<<< @@ -6876,7 +6878,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_22__str__(struct __pyx_obj_6 return __pyx_r; } -/* "cython/interface.pyx":413 +/* "cython/interface.pyx":415 * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): # <<<<<<<<<<<<<< @@ -6904,7 +6906,7 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ Py_ssize_t __pyx_t_2; __Pyx_RefNannySetupContext("__len__", 0); - /* "cython/interface.pyx":414 + /* "cython/interface.pyx":416 * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): * return len(self._indices) # <<<<<<<<<<<<<< @@ -6913,12 +6915,12 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ */ __pyx_t_1 = __pyx_v_self->_indices; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 414, __pyx_L1_error) + __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 416, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; goto __pyx_L0; - /* "cython/interface.pyx":413 + /* "cython/interface.pyx":415 * '' if len(self.dimensions) == 1 else 's', * '%d=%d' % (min(self.dimensions), max(self.dimensions))) * def __len__(self): # <<<<<<<<<<<<<< @@ -6937,7 +6939,7 @@ static Py_ssize_t __pyx_pf_6cocoex_9interface_5Suite_24__len__(struct __pyx_obj_ } static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ -/* "cython/interface.pyx":416 +/* "cython/interface.pyx":418 * return len(self._indices) * * def __iter__(self): # <<<<<<<<<<<<<< @@ -6971,7 +6973,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_ if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_6cocoex_9interface___pyx_scope_struct____iter__ *)Py_None); __Pyx_INCREF(Py_None); - __PYX_ERR(0, 416, __pyx_L1_error) + __PYX_ERR(0, 418, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } @@ -6979,7 +6981,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_26__iter__(struct __pyx_obj_ __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); { - __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6cocoex_9interface_5Suite_28generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_Suite___iter, __pyx_n_s_cocoex_interface); if (unlikely(!gen)) __PYX_ERR(0, 416, __pyx_L1_error) + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6cocoex_9interface_5Suite_28generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_Suite___iter, __pyx_n_s_cocoex_interface); if (unlikely(!gen)) __PYX_ERR(0, 418, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; @@ -7025,9 +7027,9 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO return NULL; } __pyx_L3_first_run:; - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 416, __pyx_L1_error) + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 418, __pyx_L1_error) - /* "cython/interface.pyx":423 + /* "cython/interface.pyx":425 * rewinds the suite to the initial state. """ * if 1 < 3: * s = self # <<<<<<<<<<<<<< @@ -7038,14 +7040,14 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); __pyx_cur_scope->__pyx_v_s = __pyx_cur_scope->__pyx_v_self; - /* "cython/interface.pyx":424 + /* "cython/interface.pyx":426 * if 1 < 3: * s = self * s.reset() # <<<<<<<<<<<<<< * else: * s = Suite(self.name, self.instance, self.options) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_reset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 424, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_reset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -7058,16 +7060,16 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 424, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 424, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":427 + /* "cython/interface.pyx":429 * else: * s = Suite(self.name, self.instance, self.options) * try: # <<<<<<<<<<<<<< @@ -7082,7 +7084,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XGOTREF(__pyx_t_6); /*try:*/ { - /* "cython/interface.pyx":428 + /* "cython/interface.pyx":430 * s = Suite(self.name, self.instance, self.options) * try: * while True: # <<<<<<<<<<<<<< @@ -7091,7 +7093,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ while (1) { - /* "cython/interface.pyx":429 + /* "cython/interface.pyx":431 * try: * while True: * try: # <<<<<<<<<<<<<< @@ -7105,14 +7107,14 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XGOTREF(__pyx_t_9); /*try:*/ { - /* "cython/interface.pyx":430 + /* "cython/interface.pyx":432 * while True: * try: * problem = s.next_problem() # <<<<<<<<<<<<<< * if problem is None: * return # StopIteration is deprecated */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_next_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 430, __pyx_L15_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_next_problem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 432, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -7125,10 +7127,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 430, __pyx_L15_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L15_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 430, __pyx_L15_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L15_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -7137,7 +7139,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":431 + /* "cython/interface.pyx":433 * try: * problem = s.next_problem() * if problem is None: # <<<<<<<<<<<<<< @@ -7148,7 +7150,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_11 = (__pyx_t_10 != 0); if (__pyx_t_11) { - /* "cython/interface.pyx":432 + /* "cython/interface.pyx":434 * problem = s.next_problem() * if problem is None: * return # StopIteration is deprecated # <<<<<<<<<<<<<< @@ -7159,7 +7161,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_r = NULL; goto __pyx_L19_try_return; - /* "cython/interface.pyx":431 + /* "cython/interface.pyx":433 * try: * problem = s.next_problem() * if problem is None: # <<<<<<<<<<<<<< @@ -7168,7 +7170,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ } - /* "cython/interface.pyx":429 + /* "cython/interface.pyx":431 * try: * while True: * try: # <<<<<<<<<<<<<< @@ -7185,25 +7187,25 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":434 + /* "cython/interface.pyx":436 * return # StopIteration is deprecated * raise StopIteration * except NoSuchProblemException: # <<<<<<<<<<<<<< * return # StopIteration is deprecated * raise StopIteration */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 434, __pyx_L17_except_error) + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoSuchProblemException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_12) { __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 434, __pyx_L17_except_error) + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 436, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_3); - /* "cython/interface.pyx":435 + /* "cython/interface.pyx":437 * raise StopIteration * except NoSuchProblemException: * return # StopIteration is deprecated # <<<<<<<<<<<<<< @@ -7220,7 +7222,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO goto __pyx_L17_except_error; __pyx_L17_except_error:; - /* "cython/interface.pyx":429 + /* "cython/interface.pyx":431 * try: * while True: * try: # <<<<<<<<<<<<<< @@ -7247,7 +7249,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_L22_try_end:; } - /* "cython/interface.pyx":437 + /* "cython/interface.pyx":439 * return # StopIteration is deprecated * raise StopIteration * yield problem # <<<<<<<<<<<<<< @@ -7278,10 +7280,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_6 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_6); - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 437, __pyx_L7_error) + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 439, __pyx_L7_error) } - /* "cython/interface.pyx":427 + /* "cython/interface.pyx":429 * else: * s = Suite(self.name, self.instance, self.options) * try: # <<<<<<<<<<<<<< @@ -7298,7 +7300,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":438 + /* "cython/interface.pyx":440 * raise StopIteration * yield problem * except: # <<<<<<<<<<<<<< @@ -7307,12 +7309,12 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO */ /*except:*/ { __Pyx_AddTraceback("cocoex.interface.Suite.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 438, __pyx_L9_except_error) + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 440, __pyx_L9_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_1); - /* "cython/interface.pyx":439 + /* "cython/interface.pyx":441 * yield problem * except: * raise # <<<<<<<<<<<<<< @@ -7324,11 +7326,11 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __Pyx_XGIVEREF(__pyx_t_1); __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_1); __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; - __PYX_ERR(0, 439, __pyx_L9_except_error) + __PYX_ERR(0, 441, __pyx_L9_except_error) } __pyx_L9_except_error:; - /* "cython/interface.pyx":427 + /* "cython/interface.pyx":429 * else: * s = Suite(self.name, self.instance, self.options) * try: # <<<<<<<<<<<<<< @@ -7350,7 +7352,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } - /* "cython/interface.pyx":441 + /* "cython/interface.pyx":443 * raise * finally: # makes this ctrl-c safe, at least it should * s is self or s.free() # <<<<<<<<<<<<<< @@ -7362,13 +7364,13 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); if (!__pyx_t_11) { } else { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L29_bool_binop_done; } - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -7381,10 +7383,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_13) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -7415,13 +7417,13 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); if (!__pyx_t_11) { } else { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L32_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L32_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L33_bool_binop_done; } - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L32_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 443, __pyx_L32_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -7434,10 +7436,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_13) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L32_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L32_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L32_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L32_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -7489,13 +7491,13 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO __pyx_t_11 = (__pyx_cur_scope->__pyx_v_s == __pyx_cur_scope->__pyx_v_self); if (!__pyx_t_11) { } else { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L35_bool_binop_done; } - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_s), __pyx_n_s_free); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -7508,10 +7510,10 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } } if (__pyx_t_13) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -7539,7 +7541,7 @@ static PyObject *__pyx_gb_6cocoex_9interface_5Suite_28generator(__pyx_CoroutineO } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); - /* "cython/interface.pyx":416 + /* "cython/interface.pyx":418 * return len(self._indices) * * def __iter__(self): # <<<<<<<<<<<<<< @@ -7672,7 +7674,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_5Suite_31__setstate_cython__(CYTHON return __pyx_r; } -/* "cython/interface.pyx":450 +/* "cython/interface.pyx":452 * cdef _state * * def __cinit__(self, name, options): # <<<<<<<<<<<<<< @@ -7711,11 +7713,11 @@ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_se case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(0, 450, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(0, 452, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 450, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 452, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -7728,7 +7730,7 @@ static int __pyx_pw_6cocoex_9interface_8Observer_1__cinit__(PyObject *__pyx_v_se } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 450, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 452, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Observer.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -7760,7 +7762,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_RefNannySetupContext("__cinit__", 0); __Pyx_INCREF(__pyx_v_options); - /* "cython/interface.pyx":451 + /* "cython/interface.pyx":453 * * def __cinit__(self, name, options): * if isinstance(options, dict): # <<<<<<<<<<<<<< @@ -7771,31 +7773,31 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":452 + /* "cython/interface.pyx":454 * def __cinit__(self, name, options): * if isinstance(options, dict): * s = str(options).replace(',', ' ') # <<<<<<<<<<<<<< * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') */ - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_options); __Pyx_GIVEREF(__pyx_v_options); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_options); - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 452, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 452, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_s = __pyx_t_4; __pyx_t_4 = 0; - /* "cython/interface.pyx":453 + /* "cython/interface.pyx":455 * if isinstance(options, dict): * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: # <<<<<<<<<<<<<< @@ -7806,22 +7808,22 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc for (;;) { if (__pyx_t_5 >= 6) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 453, __pyx_L1_error) + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 455, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_XDECREF_SET(__pyx_v_c, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "cython/interface.pyx":454 + /* "cython/interface.pyx":456 * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') # <<<<<<<<<<<<<< * options = s * self._name = _bstring(name) */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 454, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 456, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; @@ -7838,7 +7840,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_c, __pyx_kp_u__2}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 456, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); } else @@ -7846,13 +7848,13 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_c, __pyx_kp_u__2}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 456, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { - __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 454, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 456, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; @@ -7863,7 +7865,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_INCREF(__pyx_kp_u__2); __Pyx_GIVEREF(__pyx_kp_u__2); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_kp_u__2); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 456, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -7871,7 +7873,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":453 + /* "cython/interface.pyx":455 * if isinstance(options, dict): * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: # <<<<<<<<<<<<<< @@ -7881,7 +7883,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":455 + /* "cython/interface.pyx":457 * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') * options = s # <<<<<<<<<<<<<< @@ -7891,7 +7893,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_INCREF(__pyx_v_s); __Pyx_DECREF_SET(__pyx_v_options, __pyx_v_s); - /* "cython/interface.pyx":451 + /* "cython/interface.pyx":453 * * def __cinit__(self, name, options): * if isinstance(options, dict): # <<<<<<<<<<<<<< @@ -7900,14 +7902,14 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc */ } - /* "cython/interface.pyx":456 + /* "cython/interface.pyx":458 * s = s.replace(c, '') * options = s * self._name = _bstring(name) # <<<<<<<<<<<<<< * self._options = _bstring(options if options is not None else "") * self._observer = coco_observer(self._name, self._options) */ - __pyx_t_4 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 456, __pyx_L1_error) + __pyx_t_4 = __pyx_f_6cocoex_9interface__bstring(__pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->_name); @@ -7915,7 +7917,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __pyx_v_self->_name = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":457 + /* "cython/interface.pyx":459 * options = s * self._name = _bstring(name) * self._options = _bstring(options if options is not None else "") # <<<<<<<<<<<<<< @@ -7930,7 +7932,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_4 = __pyx_kp_u__2; } - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GIVEREF(__pyx_t_3); @@ -7939,7 +7941,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __pyx_v_self->_options = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":458 + /* "cython/interface.pyx":460 * self._name = _bstring(name) * self._options = _bstring(options if options is not None else "") * self._observer = coco_observer(self._name, self._options) # <<<<<<<<<<<<<< @@ -7948,17 +7950,17 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc */ if (unlikely(__pyx_v_self->_name == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 458, __pyx_L1_error) + __PYX_ERR(0, 460, __pyx_L1_error) } - __pyx_t_10 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 458, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 460, __pyx_L1_error) if (unlikely(__pyx_v_self->_options == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 458, __pyx_L1_error) + __PYX_ERR(0, 460, __pyx_L1_error) } - __pyx_t_11 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 458, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyBytes_AsString(__pyx_v_self->_options); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 460, __pyx_L1_error) __pyx_v_self->_observer = coco_observer(__pyx_t_10, __pyx_t_11); - /* "cython/interface.pyx":459 + /* "cython/interface.pyx":461 * self._options = _bstring(options if options is not None else "") * self._observer = coco_observer(self._name, self._options) * self._state = 'initialized' # <<<<<<<<<<<<<< @@ -7971,7 +7973,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc __Pyx_DECREF(__pyx_v_self->_state); __pyx_v_self->_state = __pyx_n_u_initialized; - /* "cython/interface.pyx":450 + /* "cython/interface.pyx":452 * cdef _state * * def __cinit__(self, name, options): # <<<<<<<<<<<<<< @@ -7998,7 +8000,7 @@ static int __pyx_pf_6cocoex_9interface_8Observer___cinit__(struct __pyx_obj_6coc return __pyx_r; } -/* "cython/interface.pyx":461 +/* "cython/interface.pyx":463 * self._state = 'initialized' * * def _update_current_observer_global(self): # <<<<<<<<<<<<<< @@ -8026,7 +8028,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer coco_observer_t *__pyx_t_1; __Pyx_RefNannySetupContext("_update_current_observer_global", 0); - /* "cython/interface.pyx":465 + /* "cython/interface.pyx":467 * for purely technical reasons""" * global _current_observer * _current_observer = self._observer # <<<<<<<<<<<<<< @@ -8036,7 +8038,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer __pyx_t_1 = __pyx_v_self->_observer; __pyx_v_6cocoex_9interface__current_observer = __pyx_t_1; - /* "cython/interface.pyx":461 + /* "cython/interface.pyx":463 * self._state = 'initialized' * * def _update_current_observer_global(self): # <<<<<<<<<<<<<< @@ -8051,7 +8053,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_2_update_current_observer return __pyx_r; } -/* "cython/interface.pyx":467 +/* "cython/interface.pyx":469 * _current_observer = self._observer * * def observe(self, problem): # <<<<<<<<<<<<<< @@ -8082,14 +8084,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("observe", 0); - /* "cython/interface.pyx":471 + /* "cython/interface.pyx":473 * calling `problem.observe_with(self)`. * """ * problem.observe_with(self) # <<<<<<<<<<<<<< * return self * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 471, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -8102,13 +8104,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -8116,19 +8118,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 471, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } @@ -8136,7 +8138,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":472 + /* "cython/interface.pyx":474 * """ * problem.observe_with(self) * return self # <<<<<<<<<<<<<< @@ -8148,7 +8150,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":467 + /* "cython/interface.pyx":469 * _current_observer = self._observer * * def observe(self, problem): # <<<<<<<<<<<<<< @@ -8170,7 +8172,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4observe(struct __pyx_obj return __pyx_r; } -/* "cython/interface.pyx":475 +/* "cython/interface.pyx":477 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -8196,7 +8198,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":479 + /* "cython/interface.pyx":481 * `self` before. * """ * return self._name # <<<<<<<<<<<<<< @@ -8208,7 +8210,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __py __pyx_r = __pyx_v_self->_name; goto __pyx_L0; - /* "cython/interface.pyx":475 + /* "cython/interface.pyx":477 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -8223,7 +8225,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_4name___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":481 +/* "cython/interface.pyx":483 * return self._name * @property * def options(self): # <<<<<<<<<<<<<< @@ -8249,7 +8251,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct _ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":482 + /* "cython/interface.pyx":484 * @property * def options(self): * return self._options # <<<<<<<<<<<<<< @@ -8261,7 +8263,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct _ __pyx_r = __pyx_v_self->_options; goto __pyx_L0; - /* "cython/interface.pyx":481 + /* "cython/interface.pyx":483 * return self._name * @property * def options(self): # <<<<<<<<<<<<<< @@ -8276,7 +8278,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_7options___get__(struct _ return __pyx_r; } -/* "cython/interface.pyx":484 +/* "cython/interface.pyx":486 * return self._options * @property * def state(self): # <<<<<<<<<<<<<< @@ -8302,7 +8304,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __p __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":485 + /* "cython/interface.pyx":487 * @property * def state(self): * return self._state # <<<<<<<<<<<<<< @@ -8314,7 +8316,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __p __pyx_r = __pyx_v_self->_state; goto __pyx_L0; - /* "cython/interface.pyx":484 + /* "cython/interface.pyx":486 * return self._options * @property * def state(self): # <<<<<<<<<<<<<< @@ -8329,7 +8331,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_5state___get__(struct __p return __pyx_r; } -/* "cython/interface.pyx":487 +/* "cython/interface.pyx":489 * return self._state * @property * def result_folder(self): # <<<<<<<<<<<<<< @@ -8356,7 +8358,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_13result_folder___get__(s PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":488 + /* "cython/interface.pyx":490 * @property * def result_folder(self): * return coco_observer_get_result_folder(self._observer) # <<<<<<<<<<<<<< @@ -8364,13 +8366,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_13result_folder___get__(s * def free(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyStr_FromString(coco_observer_get_result_folder(__pyx_v_self->_observer)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 488, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyStr_FromString(coco_observer_get_result_folder(__pyx_v_self->_observer)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":487 + /* "cython/interface.pyx":489 * return self._state * @property * def result_folder(self): # <<<<<<<<<<<<<< @@ -8389,7 +8391,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_13result_folder___get__(s return __pyx_r; } -/* "cython/interface.pyx":490 +/* "cython/interface.pyx":492 * return coco_observer_get_result_folder(self._observer) * * def free(self): # <<<<<<<<<<<<<< @@ -8418,14 +8420,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("free", 0); - /* "cython/interface.pyx":491 + /* "cython/interface.pyx":493 * * def free(self): * self.__dealloc__() # <<<<<<<<<<<<<< * self._observer = NULL * self._state = 'deactivated' */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dealloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 491, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dealloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -8438,16 +8440,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 491, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 493, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 491, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 493, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":492 + /* "cython/interface.pyx":494 * def free(self): * self.__dealloc__() * self._observer = NULL # <<<<<<<<<<<<<< @@ -8456,7 +8458,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c */ __pyx_v_self->_observer = NULL; - /* "cython/interface.pyx":493 + /* "cython/interface.pyx":495 * self.__dealloc__() * self._observer = NULL * self._state = 'deactivated' # <<<<<<<<<<<<<< @@ -8469,7 +8471,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c __Pyx_DECREF(__pyx_v_self->_state); __pyx_v_self->_state = __pyx_n_u_deactivated; - /* "cython/interface.pyx":490 + /* "cython/interface.pyx":492 * return coco_observer_get_result_folder(self._observer) * * def free(self): # <<<<<<<<<<<<<< @@ -8492,7 +8494,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_6free(struct __pyx_obj_6c return __pyx_r; } -/* "cython/interface.pyx":494 +/* "cython/interface.pyx":496 * self._observer = NULL * self._state = 'deactivated' * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -8516,7 +8518,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ int __pyx_t_1; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "cython/interface.pyx":495 + /* "cython/interface.pyx":497 * self._state = 'deactivated' * def __dealloc__(self): * if self._observer != NULL: # <<<<<<<<<<<<<< @@ -8526,7 +8528,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ __pyx_t_1 = ((__pyx_v_self->_observer != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":496 + /* "cython/interface.pyx":498 * def __dealloc__(self): * if self._observer != NULL: * coco_observer_free(self._observer) # <<<<<<<<<<<<<< @@ -8535,7 +8537,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ */ coco_observer_free(__pyx_v_self->_observer); - /* "cython/interface.pyx":495 + /* "cython/interface.pyx":497 * self._state = 'deactivated' * def __dealloc__(self): * if self._observer != NULL: # <<<<<<<<<<<<<< @@ -8544,7 +8546,7 @@ static void __pyx_pf_6cocoex_9interface_8Observer_8__dealloc__(struct __pyx_obj_ */ } - /* "cython/interface.pyx":494 + /* "cython/interface.pyx":496 * self._observer = NULL * self._state = 'deactivated' * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -8663,7 +8665,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_8Observer_12__setstate_cython__(CYT return __pyx_r; } -/* "cython/interface.pyx":498 +/* "cython/interface.pyx":500 * coco_observer_free(self._observer) * * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< @@ -8689,19 +8691,19 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v } } - /* "cython/interface.pyx":504 + /* "cython/interface.pyx":506 * This is necessary because __cinit__ cannot be defined as cdef, only as def. * """ * res = Problem() # <<<<<<<<<<<<<< * res._suite_name = suite_name * return res._initialize(problem, free) */ - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6cocoex_9interface_Problem), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6cocoex_9interface_Problem), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_res = ((struct __pyx_obj_6cocoex_9interface_Problem *)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":505 + /* "cython/interface.pyx":507 * """ * res = Problem() * res._suite_name = suite_name # <<<<<<<<<<<<<< @@ -8714,7 +8716,7 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v __Pyx_DECREF(__pyx_v_res->_suite_name); __pyx_v_res->_suite_name = __pyx_v_suite_name; - /* "cython/interface.pyx":506 + /* "cython/interface.pyx":508 * res = Problem() * res._suite_name = suite_name * return res._initialize(problem, free) # <<<<<<<<<<<<<< @@ -8724,13 +8726,13 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v __Pyx_XDECREF(__pyx_r); __pyx_t_2.__pyx_n = 1; __pyx_t_2.free = __pyx_v_free; - __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Problem *)__pyx_v_res->__pyx_vtab)->_initialize(__pyx_v_res, __pyx_v_problem, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_6cocoex_9interface_Problem *)__pyx_v_res->__pyx_vtab)->_initialize(__pyx_v_res, __pyx_v_problem, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":498 + /* "cython/interface.pyx":500 * coco_observer_free(self._observer) * * cdef Problem_init(coco_problem_t* problem, free=True, suite_name=None): # <<<<<<<<<<<<<< @@ -8750,7 +8752,7 @@ static PyObject *__pyx_f_6cocoex_9interface_Problem_init(coco_problem_t *__pyx_v return __pyx_r; } -/* "cython/interface.pyx":526 +/* "cython/interface.pyx":528 * cdef _initial_solution_proposal_calls * cdef initialized * def __cinit__(self): # <<<<<<<<<<<<<< @@ -8779,7 +8781,7 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__", 0); - /* "cython/interface.pyx":528 + /* "cython/interface.pyx":530 * def __cinit__(self): * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize # <<<<<<<<<<<<<< @@ -8792,7 +8794,7 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_False; - /* "cython/interface.pyx":526 + /* "cython/interface.pyx":528 * cdef _initial_solution_proposal_calls * cdef initialized * def __cinit__(self): # <<<<<<<<<<<<<< @@ -8806,7 +8808,7 @@ static int __pyx_pf_6cocoex_9interface_7Problem___cinit__(struct __pyx_obj_6coco return __pyx_r; } -/* "cython/interface.pyx":529 +/* "cython/interface.pyx":531 * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< @@ -8835,30 +8837,30 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } - /* "cython/interface.pyx":531 + /* "cython/interface.pyx":533 * cdef _initialize(self, coco_problem_t* problem, free=True): * cdef np.npy_intp shape[1] * if self.initialized: # <<<<<<<<<<<<<< * raise RuntimeError("Problem already initialized") * if problem == NULL: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 531, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 533, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":532 + /* "cython/interface.pyx":534 * cdef np.npy_intp shape[1] * if self.initialized: * raise RuntimeError("Problem already initialized") # <<<<<<<<<<<<<< * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 532, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 532, __pyx_L1_error) + __PYX_ERR(0, 534, __pyx_L1_error) - /* "cython/interface.pyx":531 + /* "cython/interface.pyx":533 * cdef _initialize(self, coco_problem_t* problem, free=True): * cdef np.npy_intp shape[1] * if self.initialized: # <<<<<<<<<<<<<< @@ -8867,7 +8869,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ } - /* "cython/interface.pyx":533 + /* "cython/interface.pyx":535 * if self.initialized: * raise RuntimeError("Problem already initialized") * if problem == NULL: # <<<<<<<<<<<<<< @@ -8877,20 +8879,20 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_1 = ((__pyx_v_problem == NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":534 + /* "cython/interface.pyx":536 * raise RuntimeError("Problem already initialized") * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") # <<<<<<<<<<<<<< * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 534, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 534, __pyx_L1_error) + __PYX_ERR(0, 536, __pyx_L1_error) - /* "cython/interface.pyx":533 + /* "cython/interface.pyx":535 * if self.initialized: * raise RuntimeError("Problem already initialized") * if problem == NULL: # <<<<<<<<<<<<<< @@ -8899,7 +8901,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ } - /* "cython/interface.pyx":535 + /* "cython/interface.pyx":537 * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") * self.problem = problem # <<<<<<<<<<<<<< @@ -8908,14 +8910,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->problem = __pyx_v_problem; - /* "cython/interface.pyx":536 + /* "cython/interface.pyx":538 * raise ValueError("in Problem._initialize(problem,...): problem is NULL") * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) # <<<<<<<<<<<<<< * self._do_free = free * self._list_of_observers = [] */ - __pyx_t_2 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 536, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_FromSize_t(coco_problem_get_suite_dep_index(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_problem_index); @@ -8923,7 +8925,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_v_self->_problem_index = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":537 + /* "cython/interface.pyx":539 * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) * self._do_free = free # <<<<<<<<<<<<<< @@ -8936,14 +8938,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_v_self->_do_free); __pyx_v_self->_do_free = __pyx_v_free; - /* "cython/interface.pyx":538 + /* "cython/interface.pyx":540 * self._problem_index = coco_problem_get_suite_dep_index(self.problem) * self._do_free = free * self._list_of_observers = [] # <<<<<<<<<<<<<< * # _problem_suite = _bstring(problem_suite) * # self.problem_suite = _problem_suite */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 538, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_list_of_observers); @@ -8951,7 +8953,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_v_self->_list_of_observers = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":543 + /* "cython/interface.pyx":545 * # Implicit type conversion via passing safe, * # see http://docs.cython.org/src/userguide/language_basics.html * self._number_of_variables = coco_problem_get_dimension(self.problem) # <<<<<<<<<<<<<< @@ -8960,7 +8962,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->_number_of_variables = coco_problem_get_dimension(__pyx_v_self->problem); - /* "cython/interface.pyx":544 + /* "cython/interface.pyx":546 * # see http://docs.cython.org/src/userguide/language_basics.html * self._number_of_variables = coco_problem_get_dimension(self.problem) * self._number_of_objectives = coco_problem_get_number_of_objectives(self.problem) # <<<<<<<<<<<<<< @@ -8969,7 +8971,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->_number_of_objectives = coco_problem_get_number_of_objectives(__pyx_v_self->problem); - /* "cython/interface.pyx":545 + /* "cython/interface.pyx":547 * self._number_of_variables = coco_problem_get_dimension(self.problem) * self._number_of_objectives = coco_problem_get_number_of_objectives(self.problem) * self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) # <<<<<<<<<<<<<< @@ -8978,7 +8980,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->_number_of_constraints = coco_problem_get_number_of_constraints(__pyx_v_self->problem); - /* "cython/interface.pyx":546 + /* "cython/interface.pyx":548 * self._number_of_objectives = coco_problem_get_number_of_objectives(self.problem) * self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) * self._number_of_integer_variables = coco_problem_get_number_of_integer_variables(self.problem) # <<<<<<<<<<<<<< @@ -8987,19 +8989,19 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ __pyx_v_self->_number_of_integer_variables = coco_problem_get_number_of_integer_variables(__pyx_v_self->problem); - /* "cython/interface.pyx":547 + /* "cython/interface.pyx":549 * self._number_of_constraints = coco_problem_get_number_of_constraints(self.problem) * self._number_of_integer_variables = coco_problem_get_number_of_integer_variables(self.problem) * self.y_values = np.zeros(self._number_of_objectives) # <<<<<<<<<<<<<< * self.constraint_values = np.zeros(self._number_of_constraints) * self.x_initial = np.zeros(self._number_of_variables) */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 547, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 547, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 547, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -9012,14 +9014,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_5) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 547, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 547, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -9028,45 +9030,45 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 547, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 547, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 547, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 547, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->y_values); __Pyx_DECREF(((PyObject *)__pyx_v_self->y_values)); __pyx_v_self->y_values = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":548 + /* "cython/interface.pyx":550 * self._number_of_integer_variables = coco_problem_get_number_of_integer_variables(self.problem) * self.y_values = np.zeros(self._number_of_objectives) * self.constraint_values = np.zeros(self._number_of_constraints) # <<<<<<<<<<<<<< * self.x_initial = np.zeros(self._number_of_variables) * self._initial_solution_proposal_calls = 0 */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 548, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 548, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 548, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { @@ -9079,14 +9081,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 548, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 548, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -9095,45 +9097,45 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 548, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 548, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 548, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 548, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->constraint_values); __Pyx_DECREF(((PyObject *)__pyx_v_self->constraint_values)); __pyx_v_self->constraint_values = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":549 + /* "cython/interface.pyx":551 * self.y_values = np.zeros(self._number_of_objectives) * self.constraint_values = np.zeros(self._number_of_constraints) * self.x_initial = np.zeros(self._number_of_variables) # <<<<<<<<<<<<<< * self._initial_solution_proposal_calls = 0 * ## FIXME: Inefficient because we copy the bounds instead of */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { @@ -9146,14 +9148,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -9162,33 +9164,33 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_6); __pyx_t_6 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 549, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->x_initial); __Pyx_DECREF(((PyObject *)__pyx_v_self->x_initial)); __pyx_v_self->x_initial = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":550 + /* "cython/interface.pyx":552 * self.constraint_values = np.zeros(self._number_of_constraints) * self.x_initial = np.zeros(self._number_of_variables) * self._initial_solution_proposal_calls = 0 # <<<<<<<<<<<<<< @@ -9201,27 +9203,27 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_v_self->_initial_solution_proposal_calls); __pyx_v_self->_initial_solution_proposal_calls = __pyx_int_0; - /* "cython/interface.pyx":553 + /* "cython/interface.pyx":555 * ## FIXME: Inefficient because we copy the bounds instead of * ## sharing the data. * self._lower_bounds = -np.inf * np.ones(self._number_of_variables) # <<<<<<<<<<<<<< * self._upper_bounds = np.inf * np.ones(self._number_of_variables) * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_t_2 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { @@ -9234,14 +9236,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_4) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_5); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; - __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -9250,54 +9252,54 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; - __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 553, __pyx_L1_error) + if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_6); __Pyx_GOTREF(__pyx_v_self->_lower_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_lower_bounds)); __pyx_v_self->_lower_bounds = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":554 + /* "cython/interface.pyx":556 * ## sharing the data. * self._lower_bounds = -np.inf * np.ones(self._number_of_variables) * self._upper_bounds = np.inf * np.ones(self._number_of_variables) # <<<<<<<<<<<<<< * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 554, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 554, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 554, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 554, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 554, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { @@ -9310,14 +9312,14 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } if (!__pyx_t_3) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 554, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 554, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -9326,37 +9328,37 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 554, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 554, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2); __pyx_t_2 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 554, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyNumber_Multiply(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 554, __pyx_L1_error) + __pyx_t_7 = PyNumber_Multiply(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 554, __pyx_L1_error) + if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_self->_upper_bounds); __Pyx_DECREF(((PyObject *)__pyx_v_self->_upper_bounds)); __pyx_v_self->_upper_bounds = ((PyArrayObject *)__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":556 + /* "cython/interface.pyx":558 * self._upper_bounds = np.inf * np.ones(self._number_of_variables) * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): # <<<<<<<<<<<<<< @@ -9367,7 +9369,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { __pyx_v_i = __pyx_t_9; - /* "cython/interface.pyx":557 + /* "cython/interface.pyx":559 * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -9377,19 +9379,19 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_1 = ((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem) != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":558 + /* "cython/interface.pyx":560 * for i in range(self._number_of_variables): * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] # <<<<<<<<<<<<<< * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] */ - __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 558, __pyx_L1_error) + __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_smallest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_lower_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 558, __pyx_L1_error) + if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_lower_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":557 + /* "cython/interface.pyx":559 * # self.test_bounds = coco_problem_get_smallest_values_of_interest(self.problem) # fails * for i in range(self._number_of_variables): * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -9398,7 +9400,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob */ } - /* "cython/interface.pyx":559 + /* "cython/interface.pyx":561 * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -9408,19 +9410,19 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_t_1 = ((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem) != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":560 + /* "cython/interface.pyx":562 * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] # <<<<<<<<<<<<<< * self._largest_fvalues_of_interest = None * self.initialized = True */ - __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 560, __pyx_L1_error) + __pyx_t_7 = PyFloat_FromDouble((coco_problem_get_largest_values_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_upper_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 560, __pyx_L1_error) + if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->_upper_bounds), __pyx_v_i, __pyx_t_7, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1) < 0)) __PYX_ERR(0, 562, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "cython/interface.pyx":559 + /* "cython/interface.pyx":561 * if coco_problem_get_smallest_values_of_interest(self.problem) is not NULL: * self._lower_bounds[i] = coco_problem_get_smallest_values_of_interest(self.problem)[i] * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -9430,7 +9432,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob } } - /* "cython/interface.pyx":561 + /* "cython/interface.pyx":563 * if coco_problem_get_largest_values_of_interest(self.problem) is not NULL: * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] * self._largest_fvalues_of_interest = None # <<<<<<<<<<<<<< @@ -9443,7 +9445,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(((PyObject *)__pyx_v_self->_largest_fvalues_of_interest)); __pyx_v_self->_largest_fvalues_of_interest = ((PyArrayObject *)Py_None); - /* "cython/interface.pyx":562 + /* "cython/interface.pyx":564 * self._upper_bounds[i] = coco_problem_get_largest_values_of_interest(self.problem)[i] * self._largest_fvalues_of_interest = None * self.initialized = True # <<<<<<<<<<<<<< @@ -9456,7 +9458,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __Pyx_DECREF(__pyx_v_self->initialized); __pyx_v_self->initialized = Py_True; - /* "cython/interface.pyx":563 + /* "cython/interface.pyx":565 * self._largest_fvalues_of_interest = None * self.initialized = True * return self # <<<<<<<<<<<<<< @@ -9468,7 +9470,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":529 + /* "cython/interface.pyx":531 * cdef np.npy_intp shape[1] * self.initialized = False # all done in _initialize * cdef _initialize(self, coco_problem_t* problem, free=True): # <<<<<<<<<<<<<< @@ -9492,7 +9494,7 @@ static PyObject *__pyx_f_6cocoex_9interface_7Problem__initialize(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":564 +/* "cython/interface.pyx":566 * self.initialized = True * return self * def constraint(self, x): # <<<<<<<<<<<<<< @@ -9537,22 +9539,22 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_pybuffernd__x.data = NULL; __pyx_pybuffernd__x.rcbuffer = &__pyx_pybuffer__x; - /* "cython/interface.pyx":566 + /* "cython/interface.pyx":568 * def constraint(self, x): * """see __init__.py""" * if self.number_of_constraints <= 0: # <<<<<<<<<<<<<< * return # return None, prevent Python kernel from dying * # or should we return `[]` for zero constraints? */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 566, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 566, __pyx_L1_error) + __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 566, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 568, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { - /* "cython/interface.pyx":567 + /* "cython/interface.pyx":569 * """see __init__.py""" * if self.number_of_constraints <= 0: * return # return None, prevent Python kernel from dying # <<<<<<<<<<<<<< @@ -9563,7 +9565,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "cython/interface.pyx":566 + /* "cython/interface.pyx":568 * def constraint(self, x): * """see __init__.py""" * if self.number_of_constraints <= 0: # <<<<<<<<<<<<<< @@ -9572,35 +9574,35 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o */ } - /* "cython/interface.pyx":571 + /* "cython/interface.pyx":573 * # `[]` is more likely to produce quietly unexpected result? * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') # <<<<<<<<<<<<<< * if np.size(x) != self.number_of_variables: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 571, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 571, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 571, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); - __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 571, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 571, __pyx_L1_error) - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 571, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 571, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 571, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 571, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 571, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -9608,16 +9610,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":572 + /* "cython/interface.pyx":574 * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -9631,13 +9633,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o } } if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else @@ -9645,43 +9647,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else #endif { - __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_x); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) { - /* "cython/interface.pyx":574 + /* "cython/interface.pyx":576 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -9695,13 +9697,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o } } if (!__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -9709,73 +9711,73 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":576 + /* "cython/interface.pyx":578 * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) # <<<<<<<<<<<<<< * _x = x # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 576, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 578, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":574 + /* "cython/interface.pyx":576 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":573 + /* "cython/interface.pyx":575 * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: * raise ValueError( # <<<<<<<<<<<<<< * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." */ - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 573, __pyx_L1_error) + __PYX_ERR(0, 575, __pyx_L1_error) - /* "cython/interface.pyx":572 + /* "cython/interface.pyx":574 * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< @@ -9784,14 +9786,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o */ } - /* "cython/interface.pyx":577 + /* "cython/interface.pyx":579 * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) * _x = x # this is the final type conversion # <<<<<<<<<<<<<< * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 577, __pyx_L1_error) + if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 579, __pyx_L1_error) __pyx_t_1 = __pyx_v_x; __Pyx_INCREF(__pyx_t_1); { @@ -9809,12 +9811,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0; } __pyx_pybuffernd__x.diminfo[0].strides = __pyx_pybuffernd__x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__x.diminfo[0].shape = __pyx_pybuffernd__x.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 577, __pyx_L1_error) + if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 579, __pyx_L1_error) } __pyx_v__x = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":578 + /* "cython/interface.pyx":580 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -9824,14 +9826,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_t_3 = ((__pyx_v_self->problem == NULL) != 0); if (__pyx_t_3) { - /* "cython/interface.pyx":579 + /* "cython/interface.pyx":581 * _x = x # this is the final type conversion * if self.problem is NULL: * raise InvalidProblemException() # <<<<<<<<<<<<<< * coco_evaluate_constraint(self.problem, * np.PyArray_DATA(_x), */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 579, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -9844,18 +9846,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o } } if (__pyx_t_6) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 579, __pyx_L1_error) + __PYX_ERR(0, 581, __pyx_L1_error) - /* "cython/interface.pyx":578 + /* "cython/interface.pyx":580 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -9864,7 +9866,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o */ } - /* "cython/interface.pyx":582 + /* "cython/interface.pyx":584 * coco_evaluate_constraint(self.problem, * np.PyArray_DATA(_x), * np.PyArray_DATA(self.constraint_values)) # <<<<<<<<<<<<<< @@ -9874,7 +9876,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_t_1 = ((PyObject *)__pyx_v_self->constraint_values); __Pyx_INCREF(__pyx_t_1); - /* "cython/interface.pyx":580 + /* "cython/interface.pyx":582 * if self.problem is NULL: * raise InvalidProblemException() * coco_evaluate_constraint(self.problem, # <<<<<<<<<<<<<< @@ -9884,7 +9886,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o coco_evaluate_constraint(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_1)))); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":583 + /* "cython/interface.pyx":585 * np.PyArray_DATA(_x), * np.PyArray_DATA(self.constraint_values)) * return np.array(self.constraint_values, copy=True) # <<<<<<<<<<<<<< @@ -9892,20 +9894,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o * """Recommend a solution, return `None`. */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 583, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self->constraint_values)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->constraint_values)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->constraint_values)); - __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 583, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 583, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 583, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 585, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -9914,7 +9916,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":564 + /* "cython/interface.pyx":566 * self.initialized = True * return self * def constraint(self, x): # <<<<<<<<<<<<<< @@ -9948,7 +9950,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2constraint(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":584 +/* "cython/interface.pyx":586 * np.PyArray_DATA(self.constraint_values)) * return np.array(self.constraint_values, copy=True) * def recommend(self, arx): # <<<<<<<<<<<<<< @@ -9976,20 +9978,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED s PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("recommend", 0); - /* "cython/interface.pyx":590 + /* "cython/interface.pyx":592 * for the assessment of the algorithm. * """ * raise NotImplementedError("has never been tested, incomment this to start testing") # <<<<<<<<<<<<<< * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 590, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 590, __pyx_L1_error) + __PYX_ERR(0, 592, __pyx_L1_error) - /* "cython/interface.pyx":584 + /* "cython/interface.pyx":586 * np.PyArray_DATA(self.constraint_values)) * return np.array(self.constraint_values, copy=True) * def recommend(self, arx): # <<<<<<<<<<<<<< @@ -10007,7 +10009,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4recommend(CYTHON_UNUSED s return __pyx_r; } -/* "cython/interface.pyx":603 +/* "cython/interface.pyx":605 * coco_recommend_solution(self.problem, np.PyArray_DATA(_x)) * * def logger_biobj_feed_solution(self, evaluation, y): # <<<<<<<<<<<<<< @@ -10047,11 +10049,11 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solutio case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, 1); __PYX_ERR(0, 603, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, 1); __PYX_ERR(0, 605, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "logger_biobj_feed_solution") < 0)) __PYX_ERR(0, 603, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "logger_biobj_feed_solution") < 0)) __PYX_ERR(0, 605, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -10064,7 +10066,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_7logger_biobj_feed_solutio } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 603, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("logger_biobj_feed_solution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 605, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.logger_biobj_feed_solution", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -10102,45 +10104,45 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __pyx_pybuffernd__y.data = NULL; __pyx_pybuffernd__y.rcbuffer = &__pyx_pybuffer__y; - /* "cython/interface.pyx":612 + /* "cython/interface.pyx":614 * with new indicator reference values. * """ * cdef size_t _evaluation = evaluation # "conversion" to size_t # <<<<<<<<<<<<<< * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_evaluation); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 612, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_evaluation); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 614, __pyx_L1_error) __pyx_v__evaluation = __pyx_t_1; - /* "cython/interface.pyx":614 + /* "cython/interface.pyx":616 * cdef size_t _evaluation = evaluation # "conversion" to size_t * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') # <<<<<<<<<<<<<< * if np.size(y) != self.number_of_objectives: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 614, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 614, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 614, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); - __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 614, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 614, __pyx_L1_error) - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 614, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 616, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 614, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 614, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 614, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 614, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 616, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -10148,16 +10150,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __Pyx_DECREF_SET(__pyx_v_y, __pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":615 + /* "cython/interface.pyx":617 * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') * if np.size(y) != self.number_of_objectives: # <<<<<<<<<<<<<< * raise ValueError( * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -10171,13 +10173,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio } } if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_y}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else @@ -10185,43 +10187,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_y}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else #endif { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_y); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_7) { - /* "cython/interface.pyx":617 + /* "cython/interface.pyx":619 * if np.size(y) != self.number_of_objectives: * raise ValueError( * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + # <<<<<<<<<<<<<< * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -10235,13 +10237,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio } } if (!__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_y}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else @@ -10249,73 +10251,73 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_y}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_y); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_y_d_of_input_y, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":619 + /* "cython/interface.pyx":621 * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) # <<<<<<<<<<<<<< * _y = y # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_number_of_objectiv, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 619, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_number_of_objectiv, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":617 + /* "cython/interface.pyx":619 * if np.size(y) != self.number_of_objectives: * raise ValueError( * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + # <<<<<<<<<<<<<< * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) */ - __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":616 + /* "cython/interface.pyx":618 * y = np.array(y, copy=False, dtype=np.double, order='C') * if np.size(y) != self.number_of_objectives: * raise ValueError( # <<<<<<<<<<<<<< * "Dimension, `np.size(y)==%d`, of input `y` does " % np.size(y) + * "not match the number of objectives `number_of_objectives==%d`." */ - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 616, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 616, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 616, __pyx_L1_error) + __PYX_ERR(0, 618, __pyx_L1_error) - /* "cython/interface.pyx":615 + /* "cython/interface.pyx":617 * cdef np.ndarray[double, ndim=1, mode="c"] _y * y = np.array(y, copy=False, dtype=np.double, order='C') * if np.size(y) != self.number_of_objectives: # <<<<<<<<<<<<<< @@ -10324,14 +10326,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio */ } - /* "cython/interface.pyx":620 + /* "cython/interface.pyx":622 * "not match the number of objectives `number_of_objectives==%d`." * % self.number_of_objectives) * _y = y # this is the final type conversion # <<<<<<<<<<<<<< * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_y) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_y, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 620, __pyx_L1_error) + if (!(likely(((__pyx_v_y) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_y, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 622, __pyx_L1_error) __pyx_t_3 = __pyx_v_y; __Pyx_INCREF(__pyx_t_3); { @@ -10349,12 +10351,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __pyx_t_9 = __pyx_t_10 = __pyx_t_11 = 0; } __pyx_pybuffernd__y.diminfo[0].strides = __pyx_pybuffernd__y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__y.diminfo[0].shape = __pyx_pybuffernd__y.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 620, __pyx_L1_error) + if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 622, __pyx_L1_error) } __pyx_v__y = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":621 + /* "cython/interface.pyx":623 * % self.number_of_objectives) * _y = y # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -10364,14 +10366,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio __pyx_t_7 = ((__pyx_v_self->problem == NULL) != 0); if (__pyx_t_7) { - /* "cython/interface.pyx":622 + /* "cython/interface.pyx":624 * _y = y # this is the final type conversion * if self.problem is NULL: * raise InvalidProblemException() # <<<<<<<<<<<<<< * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) * */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 622, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -10384,18 +10386,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio } } if (__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 622, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 624, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 622, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 624, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 622, __pyx_L1_error) + __PYX_ERR(0, 624, __pyx_L1_error) - /* "cython/interface.pyx":621 + /* "cython/interface.pyx":623 * % self.number_of_objectives) * _y = y # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -10404,7 +10406,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio */ } - /* "cython/interface.pyx":623 + /* "cython/interface.pyx":625 * if self.problem is NULL: * raise InvalidProblemException() * return coco_logger_biobj_feed_solution(self.problem, _evaluation, np.PyArray_DATA(_y)) # <<<<<<<<<<<<<< @@ -10412,13 +10414,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyInt_From_int(coco_logger_biobj_feed_solution(__pyx_v_self->problem, __pyx_v__evaluation, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__y))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 623, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int(coco_logger_biobj_feed_solution(__pyx_v_self->problem, __pyx_v__evaluation, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__y))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":603 + /* "cython/interface.pyx":605 * coco_recommend_solution(self.problem, np.PyArray_DATA(_x)) * * def logger_biobj_feed_solution(self, evaluation, y): # <<<<<<<<<<<<<< @@ -10452,7 +10454,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_6logger_biobj_feed_solutio return __pyx_r; } -/* "cython/interface.pyx":626 +/* "cython/interface.pyx":628 * * * def add_observer(self, observer): # <<<<<<<<<<<<<< @@ -10483,7 +10485,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("add_observer", 0); - /* "cython/interface.pyx":629 + /* "cython/interface.pyx":631 * """`add_observer(self, observer: Observer)`, see `observe_with`. * """ * return self.observe_with(observer) # <<<<<<<<<<<<<< @@ -10491,7 +10493,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx * def observe_with(self, observer): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_observe_with); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -10504,13 +10506,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_observer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_observer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -10518,19 +10520,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_observer}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 629, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_observer); __Pyx_GIVEREF(__pyx_v_observer); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_observer); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } @@ -10540,7 +10542,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":626 + /* "cython/interface.pyx":628 * * * def add_observer(self, observer): # <<<<<<<<<<<<<< @@ -10562,7 +10564,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_8add_observer(struct __pyx return __pyx_r; } -/* "cython/interface.pyx":631 +/* "cython/interface.pyx":633 * return self.observe_with(observer) * * def observe_with(self, observer): # <<<<<<<<<<<<<< @@ -10594,17 +10596,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py int __pyx_t_5; __Pyx_RefNannySetupContext("observe_with", 0); - /* "cython/interface.pyx":643 + /* "cython/interface.pyx":645 * See also: class `Observer` * """ * if observer: # <<<<<<<<<<<<<< * assert self.problem * observer._update_current_observer_global() */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_observer); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 643, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_observer); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 645, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":644 + /* "cython/interface.pyx":646 * """ * if observer: * assert self.problem # <<<<<<<<<<<<<< @@ -10615,19 +10617,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 644, __pyx_L1_error) + __PYX_ERR(0, 646, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":645 + /* "cython/interface.pyx":647 * if observer: * assert self.problem * observer._update_current_observer_global() # <<<<<<<<<<<<<< * self.problem = coco_problem_add_observer(self.problem, _current_observer) * self._list_of_observers.append(observer) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_observer, __pyx_n_s_update_current_observer_global); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 645, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_observer, __pyx_n_s_update_current_observer_global); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 647, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -10640,16 +10642,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 645, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 645, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":646 + /* "cython/interface.pyx":648 * assert self.problem * observer._update_current_observer_global() * self.problem = coco_problem_add_observer(self.problem, _current_observer) # <<<<<<<<<<<<<< @@ -10658,16 +10660,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py */ __pyx_v_self->problem = coco_problem_add_observer(__pyx_v_self->problem, __pyx_v_6cocoex_9interface__current_observer); - /* "cython/interface.pyx":647 + /* "cython/interface.pyx":649 * observer._update_current_observer_global() * self.problem = coco_problem_add_observer(self.problem, _current_observer) * self._list_of_observers.append(observer) # <<<<<<<<<<<<<< * return self * */ - __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_list_of_observers, __pyx_v_observer); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 647, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_list_of_observers, __pyx_v_observer); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 649, __pyx_L1_error) - /* "cython/interface.pyx":643 + /* "cython/interface.pyx":645 * See also: class `Observer` * """ * if observer: # <<<<<<<<<<<<<< @@ -10676,7 +10678,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py */ } - /* "cython/interface.pyx":648 + /* "cython/interface.pyx":650 * self.problem = coco_problem_add_observer(self.problem, _current_observer) * self._list_of_observers.append(observer) * return self # <<<<<<<<<<<<<< @@ -10688,7 +10690,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":631 + /* "cython/interface.pyx":633 * return self.observe_with(observer) * * def observe_with(self, observer): # <<<<<<<<<<<<<< @@ -10709,7 +10711,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_10observe_with(struct __py return __pyx_r; } -/* "cython/interface.pyx":650 +/* "cython/interface.pyx":652 * return self * * def _f0(self, x): # <<<<<<<<<<<<<< @@ -10740,7 +10742,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("_f0", 0); - /* "cython/interface.pyx":652 + /* "cython/interface.pyx":654 * def _f0(self, x): * """"inofficial" interface to `self` with target f-value of zero. """ * return self(x) - self.final_target_fvalue1 # <<<<<<<<<<<<<< @@ -10760,13 +10762,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -10774,27 +10776,27 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_x}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 652, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_final_target_fvalue1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 652, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_final_target_fvalue1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 652, __pyx_L1_error) + __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -10802,7 +10804,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":650 + /* "cython/interface.pyx":652 * return self * * def _f0(self, x): # <<<<<<<<<<<<<< @@ -10824,7 +10826,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12_f0(struct __pyx_obj_6co return __pyx_r; } -/* "cython/interface.pyx":654 +/* "cython/interface.pyx":656 * return self(x) - self.final_target_fvalue1 * * def initial_solution_proposal(self, restart_number=None): # <<<<<<<<<<<<<< @@ -10862,7 +10864,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution_proposa } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "initial_solution_proposal") < 0)) __PYX_ERR(0, 654, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "initial_solution_proposal") < 0)) __PYX_ERR(0, 656, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -10876,7 +10878,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_15initial_solution_proposa } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("initial_solution_proposal", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 654, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("initial_solution_proposal", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 656, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.initial_solution_proposal", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -10904,7 +10906,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __Pyx_RefNannySetupContext("initial_solution_proposal", 0); __Pyx_INCREF(__pyx_v_restart_number); - /* "cython/interface.pyx":680 + /* "cython/interface.pyx":682 * * """ * if restart_number is None: # <<<<<<<<<<<<<< @@ -10915,7 +10917,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "cython/interface.pyx":681 + /* "cython/interface.pyx":683 * """ * if restart_number is None: * restart_number = self._initial_solution_proposal_calls # <<<<<<<<<<<<<< @@ -10927,14 +10929,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __Pyx_DECREF_SET(__pyx_v_restart_number, __pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":682 + /* "cython/interface.pyx":684 * if restart_number is None: * restart_number = self._initial_solution_proposal_calls * self._initial_solution_proposal_calls += 1 # count calls without explicit argument # <<<<<<<<<<<<<< * if restart_number <= 0: * return self.initial_solution */ - __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_initial_solution_proposal_calls, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 682, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_self->_initial_solution_proposal_calls, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_initial_solution_proposal_calls); @@ -10942,7 +10944,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_v_self->_initial_solution_proposal_calls = __pyx_t_3; __pyx_t_3 = 0; - /* "cython/interface.pyx":680 + /* "cython/interface.pyx":682 * * """ * if restart_number is None: # <<<<<<<<<<<<<< @@ -10951,19 +10953,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa */ } - /* "cython/interface.pyx":683 + /* "cython/interface.pyx":685 * restart_number = self._initial_solution_proposal_calls * self._initial_solution_proposal_calls += 1 # count calls without explicit argument * if restart_number <= 0: # <<<<<<<<<<<<<< * return self.initial_solution * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) */ - __pyx_t_3 = PyObject_RichCompare(__pyx_v_restart_number, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 683, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 683, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_v_restart_number, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_2) { - /* "cython/interface.pyx":684 + /* "cython/interface.pyx":686 * self._initial_solution_proposal_calls += 1 # count calls without explicit argument * if restart_number <= 0: * return self.initial_solution # <<<<<<<<<<<<<< @@ -10971,13 +10973,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa * if self.number_of_constraints > 0: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 684, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 686, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":683 + /* "cython/interface.pyx":685 * restart_number = self._initial_solution_proposal_calls * self._initial_solution_proposal_calls += 1 # count calls without explicit argument * if restart_number <= 0: # <<<<<<<<<<<<<< @@ -10986,22 +10988,22 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa */ } - /* "cython/interface.pyx":685 + /* "cython/interface.pyx":687 * if restart_number <= 0: * return self.initial_solution * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) # <<<<<<<<<<<<<< * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rand); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rand); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { @@ -11014,14 +11016,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa } } if (!__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -11030,34 +11032,34 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rand); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rand); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { @@ -11070,14 +11072,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa } } if (!__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -11086,48 +11088,48 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 685, __pyx_L1_error) + __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_rv_triangular = __pyx_t_7; __pyx_t_7 = 0; - /* "cython/interface.pyx":686 + /* "cython/interface.pyx":688 * return self.initial_solution * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) * if self.number_of_constraints > 0: # <<<<<<<<<<<<<< * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 686, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 686, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 686, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_2) { - /* "cython/interface.pyx":687 + /* "cython/interface.pyx":689 * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) # <<<<<<<<<<<<<< @@ -11135,14 +11137,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa * self.upper_bounds - self.lower_bounds) / 2 */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_initial_solution); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = __Pyx_PyInt_SubtractObjC(__pyx_v_rv_triangular, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyInt_SubtractObjC(__pyx_v_rv_triangular, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = PyNumber_Multiply(__pyx_float_1_0, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_3 = PyNumber_Multiply(__pyx_float_1_0, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_7 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -11150,7 +11152,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_t_7 = 0; goto __pyx_L0; - /* "cython/interface.pyx":686 + /* "cython/interface.pyx":688 * return self.initial_solution * rv_triangular = np.random.rand(self.dimension) + np.random.rand(self.dimension) * if self.number_of_constraints > 0: # <<<<<<<<<<<<<< @@ -11159,7 +11161,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa */ } - /* "cython/interface.pyx":688 + /* "cython/interface.pyx":690 * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( # <<<<<<<<<<<<<< @@ -11167,55 +11169,55 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 688, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - /* "cython/interface.pyx":689 + /* "cython/interface.pyx":691 * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( * self.upper_bounds - self.lower_bounds) / 2 # <<<<<<<<<<<<<< * @property * def initial_solution(self): */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_upper_bounds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 689, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_upper_bounds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 689, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lower_bounds); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_8 = PyNumber_Subtract(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 689, __pyx_L1_error) + __pyx_t_8 = PyNumber_Subtract(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":688 + /* "cython/interface.pyx":690 * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( # <<<<<<<<<<<<<< * self.upper_bounds - self.lower_bounds) / 2 * @property */ - __pyx_t_4 = PyNumber_Multiply(__pyx_v_rv_triangular, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 688, __pyx_L1_error) + __pyx_t_4 = PyNumber_Multiply(__pyx_v_rv_triangular, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "cython/interface.pyx":689 + /* "cython/interface.pyx":691 * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( * self.upper_bounds - self.lower_bounds) / 2 # <<<<<<<<<<<<<< * @property * def initial_solution(self): */ - __pyx_t_8 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_4, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 689, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_4, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":688 + /* "cython/interface.pyx":690 * if self.number_of_constraints > 0: * return self.initial_solution + 1.0 * (rv_triangular - 1) * return self.lower_bounds + rv_triangular * ( # <<<<<<<<<<<<<< * self.upper_bounds - self.lower_bounds) / 2 * @property */ - __pyx_t_4 = PyNumber_Add(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 688, __pyx_L1_error) + __pyx_t_4 = PyNumber_Add(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; @@ -11223,7 +11225,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":654 + /* "cython/interface.pyx":656 * return self(x) - self.final_target_fvalue1 * * def initial_solution_proposal(self, restart_number=None): # <<<<<<<<<<<<<< @@ -11249,7 +11251,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_14initial_solution_proposa return __pyx_r; } -/* "cython/interface.pyx":691 +/* "cython/interface.pyx":693 * self.upper_bounds - self.lower_bounds) / 2 * @property * def initial_solution(self): # <<<<<<<<<<<<<< @@ -11279,7 +11281,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":694 + /* "cython/interface.pyx":696 * """return feasible initial solution""" * coco_problem_get_initial_solution(self.problem, * np.PyArray_DATA(self.x_initial)) # <<<<<<<<<<<<<< @@ -11289,7 +11291,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ __pyx_t_1 = ((PyObject *)__pyx_v_self->x_initial); __Pyx_INCREF(__pyx_t_1); - /* "cython/interface.pyx":693 + /* "cython/interface.pyx":695 * def initial_solution(self): * """return feasible initial solution""" * coco_problem_get_initial_solution(self.problem, # <<<<<<<<<<<<<< @@ -11299,7 +11301,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ coco_problem_get_initial_solution(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_1)))); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "cython/interface.pyx":695 + /* "cython/interface.pyx":697 * coco_problem_get_initial_solution(self.problem, * np.PyArray_DATA(self.x_initial)) * return np.array(self.x_initial, copy=True) # <<<<<<<<<<<<<< @@ -11307,20 +11309,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ * def observers(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 695, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self->x_initial)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->x_initial)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->x_initial)); - __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 695, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 695, __pyx_L1_error) - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 695, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 697, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -11329,7 +11331,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":691 + /* "cython/interface.pyx":693 * self.upper_bounds - self.lower_bounds) / 2 * @property * def initial_solution(self): # <<<<<<<<<<<<<< @@ -11351,7 +11353,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16initial_solution___get__ return __pyx_r; } -/* "cython/interface.pyx":697 +/* "cython/interface.pyx":699 * return np.array(self.x_initial, copy=True) * @property * def observers(self): # <<<<<<<<<<<<<< @@ -11377,7 +11379,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9observers___get__(struct __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":699 + /* "cython/interface.pyx":701 * def observers(self): * """list of observers wrapped around this problem""" * return self._list_of_observers # <<<<<<<<<<<<<< @@ -11389,7 +11391,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9observers___get__(struct __pyx_r = __pyx_v_self->_list_of_observers; goto __pyx_L0; - /* "cython/interface.pyx":697 + /* "cython/interface.pyx":699 * return np.array(self.x_initial, copy=True) * @property * def observers(self): # <<<<<<<<<<<<<< @@ -11404,7 +11406,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9observers___get__(struct return __pyx_r; } -/* "cython/interface.pyx":701 +/* "cython/interface.pyx":703 * return self._list_of_observers * @property * def is_observed(self): # <<<<<<<<<<<<<< @@ -11432,7 +11434,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11is_observed___get__(stru Py_ssize_t __pyx_t_2; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":706 + /* "cython/interface.pyx":708 * See also: the list of observers in property `observers`. * """ * return len(self._list_of_observers) # <<<<<<<<<<<<<< @@ -11442,15 +11444,15 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11is_observed___get__(stru __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_v_self->_list_of_observers; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 706, __pyx_L1_error) + __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 706, __pyx_L1_error) + __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":701 + /* "cython/interface.pyx":703 * return self._list_of_observers * @property * def is_observed(self): # <<<<<<<<<<<<<< @@ -11469,7 +11471,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11is_observed___get__(stru return __pyx_r; } -/* "cython/interface.pyx":711 +/* "cython/interface.pyx":713 * # this is a class definition which is instantiated automatically!? * """Number of variables this problem instance expects as input.""" * def __get__(self): # <<<<<<<<<<<<<< @@ -11496,7 +11498,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":712 + /* "cython/interface.pyx":714 * """Number of variables this problem instance expects as input.""" * def __get__(self): * return self._number_of_variables # <<<<<<<<<<<<<< @@ -11504,13 +11506,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge * def dimension(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 712, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":711 + /* "cython/interface.pyx":713 * # this is a class definition which is instantiated automatically!? * """Number of variables this problem instance expects as input.""" * def __get__(self): # <<<<<<<<<<<<<< @@ -11529,7 +11531,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_19number_of_variables___ge return __pyx_r; } -/* "cython/interface.pyx":714 +/* "cython/interface.pyx":716 * return self._number_of_variables * @property * def dimension(self): # <<<<<<<<<<<<<< @@ -11556,7 +11558,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":716 + /* "cython/interface.pyx":718 * def dimension(self): * """alias for `number_of_variables` of the input space""" * return self._number_of_variables # <<<<<<<<<<<<<< @@ -11564,13 +11566,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct * def number_of_objectives(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 716, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":714 + /* "cython/interface.pyx":716 * return self._number_of_variables * @property * def dimension(self): # <<<<<<<<<<<<<< @@ -11589,7 +11591,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_9dimension___get__(struct return __pyx_r; } -/* "cython/interface.pyx":718 +/* "cython/interface.pyx":720 * return self._number_of_variables * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -11616,7 +11618,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":720 + /* "cython/interface.pyx":722 * def number_of_objectives(self): * "number of objectives, if equal to 1, call returns a scalar" * return self._number_of_objectives # <<<<<<<<<<<<<< @@ -11624,13 +11626,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g * def number_of_constraints(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 720, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_objectives); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":718 + /* "cython/interface.pyx":720 * return self._number_of_variables * @property * def number_of_objectives(self): # <<<<<<<<<<<<<< @@ -11649,7 +11651,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_20number_of_objectives___g return __pyx_r; } -/* "cython/interface.pyx":722 +/* "cython/interface.pyx":724 * return self._number_of_objectives * @property * def number_of_constraints(self): # <<<<<<<<<<<<<< @@ -11676,7 +11678,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":724 + /* "cython/interface.pyx":726 * def number_of_constraints(self): * "number of constraints" * return self._number_of_constraints # <<<<<<<<<<<<<< @@ -11684,13 +11686,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___ * def number_of_integer_variables(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_constraints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":722 + /* "cython/interface.pyx":724 * return self._number_of_objectives * @property * def number_of_constraints(self): # <<<<<<<<<<<<<< @@ -11709,7 +11711,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21number_of_constraints___ return __pyx_r; } -/* "cython/interface.pyx":726 +/* "cython/interface.pyx":728 * return self._number_of_constraints * @property * def number_of_integer_variables(self): # <<<<<<<<<<<<<< @@ -11736,7 +11738,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27number_of_integer_variab PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":728 + /* "cython/interface.pyx":730 * def number_of_integer_variables(self): * "number of integer variables" * return self._number_of_integer_variables # <<<<<<<<<<<<<< @@ -11744,13 +11746,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27number_of_integer_variab * def lower_bounds(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_integer_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 728, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->_number_of_integer_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":726 + /* "cython/interface.pyx":728 * return self._number_of_constraints * @property * def number_of_integer_variables(self): # <<<<<<<<<<<<<< @@ -11769,7 +11771,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27number_of_integer_variab return __pyx_r; } -/* "cython/interface.pyx":730 +/* "cython/interface.pyx":732 * return self._number_of_integer_variables * @property * def lower_bounds(self): # <<<<<<<<<<<<<< @@ -11795,7 +11797,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(str __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":733 + /* "cython/interface.pyx":735 * """depending on the test bed, these are not necessarily strict bounds * """ * return self._lower_bounds # <<<<<<<<<<<<<< @@ -11807,7 +11809,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(str __pyx_r = ((PyObject *)__pyx_v_self->_lower_bounds); goto __pyx_L0; - /* "cython/interface.pyx":730 + /* "cython/interface.pyx":732 * return self._number_of_integer_variables * @property * def lower_bounds(self): # <<<<<<<<<<<<<< @@ -11822,7 +11824,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12lower_bounds___get__(str return __pyx_r; } -/* "cython/interface.pyx":735 +/* "cython/interface.pyx":737 * return self._lower_bounds * @property * def upper_bounds(self): # <<<<<<<<<<<<<< @@ -11848,7 +11850,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(str __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":738 + /* "cython/interface.pyx":740 * """depending on the test bed, these are not necessarily strict bounds * """ * return self._upper_bounds # <<<<<<<<<<<<<< @@ -11860,7 +11862,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(str __pyx_r = ((PyObject *)__pyx_v_self->_upper_bounds); goto __pyx_L0; - /* "cython/interface.pyx":735 + /* "cython/interface.pyx":737 * return self._lower_bounds * @property * def upper_bounds(self): # <<<<<<<<<<<<<< @@ -11875,7 +11877,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_12upper_bounds___get__(str return __pyx_r; } -/* "cython/interface.pyx":740 +/* "cython/interface.pyx":742 * return self._upper_bounds * @property * def evaluations(self): # <<<<<<<<<<<<<< @@ -11902,7 +11904,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":741 + /* "cython/interface.pyx":743 * @property * def evaluations(self): * return coco_problem_get_evaluations(self.problem) # <<<<<<<<<<<<<< @@ -11910,13 +11912,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru * def evaluations_constraints(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 741, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 743, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":740 + /* "cython/interface.pyx":742 * return self._upper_bounds * @property * def evaluations(self): # <<<<<<<<<<<<<< @@ -11935,7 +11937,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11evaluations___get__(stru return __pyx_r; } -/* "cython/interface.pyx":743 +/* "cython/interface.pyx":745 * return coco_problem_get_evaluations(self.problem) * @property * def evaluations_constraints(self): # <<<<<<<<<<<<<< @@ -11962,7 +11964,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_23evaluations_constraints_ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":744 + /* "cython/interface.pyx":746 * @property * def evaluations_constraints(self): * return coco_problem_get_evaluations_constraints(self.problem) # <<<<<<<<<<<<<< @@ -11970,13 +11972,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_23evaluations_constraints_ * def final_target_hit(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations_constraints(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 744, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(coco_problem_get_evaluations_constraints(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":743 + /* "cython/interface.pyx":745 * return coco_problem_get_evaluations(self.problem) * @property * def evaluations_constraints(self): # <<<<<<<<<<<<<< @@ -11995,7 +11997,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_23evaluations_constraints_ return __pyx_r; } -/* "cython/interface.pyx":746 +/* "cython/interface.pyx":748 * return coco_problem_get_evaluations_constraints(self.problem) * @property * def final_target_hit(self): # <<<<<<<<<<<<<< @@ -12022,7 +12024,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":749 + /* "cython/interface.pyx":751 * """return 1 if the final target is known and has been hit, 0 otherwise * """ * assert(self.problem) # <<<<<<<<<<<<<< @@ -12033,12 +12035,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 749, __pyx_L1_error) + __PYX_ERR(0, 751, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":750 + /* "cython/interface.pyx":752 * """ * assert(self.problem) * return coco_problem_final_target_hit(self.problem) # <<<<<<<<<<<<<< @@ -12046,13 +12048,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ * #def final_target_fvalue1(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(coco_problem_final_target_hit(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(coco_problem_final_target_hit(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":746 + /* "cython/interface.pyx":748 * return coco_problem_get_evaluations_constraints(self.problem) * @property * def final_target_hit(self): # <<<<<<<<<<<<<< @@ -12071,7 +12073,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16final_target_hit___get__ return __pyx_r; } -/* "cython/interface.pyx":756 +/* "cython/interface.pyx":758 * # return coco_problem_get_final_target_fvalue1(self.problem) * @property * def best_observed_fvalue1(self): # <<<<<<<<<<<<<< @@ -12098,7 +12100,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":757 + /* "cython/interface.pyx":759 * @property * def best_observed_fvalue1(self): * assert(self.problem) # <<<<<<<<<<<<<< @@ -12109,12 +12111,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 757, __pyx_L1_error) + __PYX_ERR(0, 759, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":758 + /* "cython/interface.pyx":760 * def best_observed_fvalue1(self): * assert(self.problem) * return coco_problem_get_best_observed_fvalue1(self.problem) # <<<<<<<<<<<<<< @@ -12122,13 +12124,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ * def largest_fvalues_of_interest(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_best_observed_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 758, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble(coco_problem_get_best_observed_fvalue1(__pyx_v_self->problem)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "cython/interface.pyx":756 + /* "cython/interface.pyx":758 * # return coco_problem_get_final_target_fvalue1(self.problem) * @property * def best_observed_fvalue1(self): # <<<<<<<<<<<<<< @@ -12147,7 +12149,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_21best_observed_fvalue1___ return __pyx_r; } -/* "cython/interface.pyx":760 +/* "cython/interface.pyx":762 * return coco_problem_get_best_observed_fvalue1(self.problem) * @property * def largest_fvalues_of_interest(self): # <<<<<<<<<<<<<< @@ -12183,7 +12185,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":762 + /* "cython/interface.pyx":764 * def largest_fvalues_of_interest(self): * "largest f-values of interest (defined only for multi-objective problems)" * assert(self.problem) # <<<<<<<<<<<<<< @@ -12194,12 +12196,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(__pyx_v_self->problem != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 762, __pyx_L1_error) + __PYX_ERR(0, 764, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":763 + /* "cython/interface.pyx":765 * "largest f-values of interest (defined only for multi-objective problems)" * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -12217,34 +12219,34 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "cython/interface.pyx":764 + /* "cython/interface.pyx":766 * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: * self._largest_fvalues_of_interest = np.asarray( # <<<<<<<<<<<<<< * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) * return self._largest_fvalues_of_interest */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 764, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 764, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":765 + /* "cython/interface.pyx":767 * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: * self._largest_fvalues_of_interest = np.asarray( * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) # <<<<<<<<<<<<<< * return self._largest_fvalues_of_interest * */ - __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 765, __pyx_L1_error) + __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __pyx_v_self->_number_of_objectives; for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_v_i = __pyx_t_7; - __pyx_t_8 = PyFloat_FromDouble((coco_problem_get_largest_fvalues_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 765, __pyx_L1_error) + __pyx_t_8 = PyFloat_FromDouble((coco_problem_get_largest_fvalues_of_interest(__pyx_v_self->problem)[__pyx_v_i])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 765, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __pyx_t_8 = NULL; @@ -12258,14 +12260,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter } } if (!__pyx_t_8) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 764, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 764, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -12274,41 +12276,41 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 764, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 764, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 764, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "cython/interface.pyx":764 + /* "cython/interface.pyx":766 * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: * self._largest_fvalues_of_interest = np.asarray( # <<<<<<<<<<<<<< * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) * return self._largest_fvalues_of_interest */ - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 764, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_largest_fvalues_of_interest); __Pyx_DECREF(((PyObject *)__pyx_v_self->_largest_fvalues_of_interest)); __pyx_v_self->_largest_fvalues_of_interest = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":763 + /* "cython/interface.pyx":765 * "largest f-values of interest (defined only for multi-objective problems)" * assert(self.problem) * if self._number_of_objectives > 1 and coco_problem_get_largest_fvalues_of_interest(self.problem) is not NULL: # <<<<<<<<<<<<<< @@ -12317,7 +12319,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter */ } - /* "cython/interface.pyx":766 + /* "cython/interface.pyx":768 * self._largest_fvalues_of_interest = np.asarray( * [coco_problem_get_largest_fvalues_of_interest(self.problem)[i] for i in range(self._number_of_objectives)]) * return self._largest_fvalues_of_interest # <<<<<<<<<<<<<< @@ -12329,7 +12331,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter __pyx_r = ((PyObject *)__pyx_v_self->_largest_fvalues_of_interest); goto __pyx_L0; - /* "cython/interface.pyx":760 + /* "cython/interface.pyx":762 * return coco_problem_get_best_observed_fvalue1(self.problem) * @property * def largest_fvalues_of_interest(self): # <<<<<<<<<<<<<< @@ -12352,7 +12354,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_27largest_fvalues_of_inter return __pyx_r; } -/* "cython/interface.pyx":768 +/* "cython/interface.pyx":770 * return self._largest_fvalues_of_interest * * def _best_parameter(self, what=None): # <<<<<<<<<<<<<< @@ -12389,7 +12391,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17_best_parameter(PyObject } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_best_parameter") < 0)) __PYX_ERR(0, 768, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_best_parameter") < 0)) __PYX_ERR(0, 770, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -12403,7 +12405,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_17_best_parameter(PyObject } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_best_parameter", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 768, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("_best_parameter", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 770, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem._best_parameter", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -12422,17 +12424,17 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ int __pyx_t_1; __Pyx_RefNannySetupContext("_best_parameter", 0); - /* "cython/interface.pyx":769 + /* "cython/interface.pyx":771 * * def _best_parameter(self, what=None): * if what == 'print': # <<<<<<<<<<<<<< * if self._number_of_objectives == 2: * bbob_biobj_problem_best_parameter_print(self.problem) */ - __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_what, __pyx_n_u_print, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 769, __pyx_L1_error) + __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_what, __pyx_n_u_print, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 771, __pyx_L1_error) if (__pyx_t_1) { - /* "cython/interface.pyx":770 + /* "cython/interface.pyx":772 * def _best_parameter(self, what=None): * if what == 'print': * if self._number_of_objectives == 2: # <<<<<<<<<<<<<< @@ -12442,7 +12444,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ __pyx_t_1 = ((__pyx_v_self->_number_of_objectives == 2) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":771 + /* "cython/interface.pyx":773 * if what == 'print': * if self._number_of_objectives == 2: * bbob_biobj_problem_best_parameter_print(self.problem) # <<<<<<<<<<<<<< @@ -12451,7 +12453,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ */ bbob_biobj_problem_best_parameter_print(__pyx_v_self->problem); - /* "cython/interface.pyx":770 + /* "cython/interface.pyx":772 * def _best_parameter(self, what=None): * if what == 'print': * if self._number_of_objectives == 2: # <<<<<<<<<<<<<< @@ -12461,7 +12463,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ goto __pyx_L4; } - /* "cython/interface.pyx":773 + /* "cython/interface.pyx":775 * bbob_biobj_problem_best_parameter_print(self.problem) * else: * bbob_problem_best_parameter_print(self.problem) # <<<<<<<<<<<<<< @@ -12473,7 +12475,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ } __pyx_L4:; - /* "cython/interface.pyx":769 + /* "cython/interface.pyx":771 * * def _best_parameter(self, what=None): * if what == 'print': # <<<<<<<<<<<<<< @@ -12482,7 +12484,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ */ } - /* "cython/interface.pyx":768 + /* "cython/interface.pyx":770 * return self._largest_fvalues_of_interest * * def _best_parameter(self, what=None): # <<<<<<<<<<<<<< @@ -12502,7 +12504,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_16_best_parameter(struct _ return __pyx_r; } -/* "cython/interface.pyx":775 +/* "cython/interface.pyx":777 * bbob_problem_best_parameter_print(self.problem) * * def free(self, force=False): # <<<<<<<<<<<<<< @@ -12540,7 +12542,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19free(PyObject *__pyx_v_s } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "free") < 0)) __PYX_ERR(0, 775, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "free") < 0)) __PYX_ERR(0, 777, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -12554,7 +12556,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_19free(PyObject *__pyx_v_s } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("free", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 775, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("free", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 777, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.free", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -12574,7 +12576,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c int __pyx_t_2; __Pyx_RefNannySetupContext("free", 0); - /* "cython/interface.pyx":784 + /* "cython/interface.pyx":786 * exception. * """ * if self.problem != NULL and (self._do_free or force): # <<<<<<<<<<<<<< @@ -12587,18 +12589,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c __pyx_t_1 = __pyx_t_2; goto __pyx_L4_bool_binop_done; } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 784, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 786, __pyx_L1_error) if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L4_bool_binop_done; } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 784, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 786, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "cython/interface.pyx":785 + /* "cython/interface.pyx":787 * """ * if self.problem != NULL and (self._do_free or force): * coco_problem_free(self.problem) # <<<<<<<<<<<<<< @@ -12607,7 +12609,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c */ coco_problem_free(__pyx_v_self->problem); - /* "cython/interface.pyx":786 + /* "cython/interface.pyx":788 * if self.problem != NULL and (self._do_free or force): * coco_problem_free(self.problem) * self.problem = NULL # <<<<<<<<<<<<<< @@ -12616,7 +12618,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c */ __pyx_v_self->problem = NULL; - /* "cython/interface.pyx":784 + /* "cython/interface.pyx":786 * exception. * """ * if self.problem != NULL and (self._do_free or force): # <<<<<<<<<<<<<< @@ -12625,7 +12627,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c */ } - /* "cython/interface.pyx":775 + /* "cython/interface.pyx":777 * bbob_problem_best_parameter_print(self.problem) * * def free(self, force=False): # <<<<<<<<<<<<<< @@ -12645,7 +12647,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_18free(struct __pyx_obj_6c return __pyx_r; } -/* "cython/interface.pyx":788 +/* "cython/interface.pyx":790 * self.problem = NULL * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -12670,14 +12672,14 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ int __pyx_t_2; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "cython/interface.pyx":792 + /* "cython/interface.pyx":794 * # free let the problem_free() call(s) in coco_suite_t crash, hence * # the possibility to set _do_free = False * if self._do_free and self.problem != NULL: # this is not guaranteed to work, see above link # <<<<<<<<<<<<<< * coco_problem_free(self.problem) * */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 792, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_do_free); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 794, __pyx_L1_error) if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; @@ -12688,7 +12690,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "cython/interface.pyx":793 + /* "cython/interface.pyx":795 * # the possibility to set _do_free = False * if self._do_free and self.problem != NULL: # this is not guaranteed to work, see above link * coco_problem_free(self.problem) # <<<<<<<<<<<<<< @@ -12697,7 +12699,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ */ coco_problem_free(__pyx_v_self->problem); - /* "cython/interface.pyx":792 + /* "cython/interface.pyx":794 * # free let the problem_free() call(s) in coco_suite_t crash, hence * # the possibility to set _do_free = False * if self._do_free and self.problem != NULL: # this is not guaranteed to work, see above link # <<<<<<<<<<<<<< @@ -12706,7 +12708,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ */ } - /* "cython/interface.pyx":788 + /* "cython/interface.pyx":790 * self.problem = NULL * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -12722,7 +12724,7 @@ static void __pyx_pf_6cocoex_9interface_7Problem_20__dealloc__(struct __pyx_obj_ __Pyx_RefNannyFinishContext(); } -/* "cython/interface.pyx":796 +/* "cython/interface.pyx":798 * * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): * def __call__(self, x): # <<<<<<<<<<<<<< @@ -12760,7 +12762,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23__call__(PyObject *__pyx else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 796, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 798, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { goto __pyx_L5_argtuple_error; @@ -12771,7 +12773,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_23__call__(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 796, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 798, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -12807,7 +12809,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_pybuffernd__x.data = NULL; __pyx_pybuffernd__x.rcbuffer = &__pyx_pybuffer__x; - /* "cython/interface.pyx":799 + /* "cython/interface.pyx":801 * """return objective function value of input `x`""" * cdef np.ndarray[double, ndim=1, mode="c"] _x * assert self.initialized # <<<<<<<<<<<<<< @@ -12816,43 +12818,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 799, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->initialized); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 801, __pyx_L1_error) if (unlikely(!__pyx_t_1)) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 799, __pyx_L1_error) + __PYX_ERR(0, 801, __pyx_L1_error) } } #endif - /* "cython/interface.pyx":800 + /* "cython/interface.pyx":802 * cdef np.ndarray[double, ndim=1, mode="c"] _x * assert self.initialized * x = np.array(x, copy=False, dtype=np.double, order='C') # <<<<<<<<<<<<<< * if np.size(x) != self.number_of_variables: * raise ValueError( */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 800, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 800, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 800, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); - __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 800, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 800, __pyx_L1_error) - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 800, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 802, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 800, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 800, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 800, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 800, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_u_C) < 0) __PYX_ERR(0, 802, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -12860,16 +12862,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_6); __pyx_t_6 = 0; - /* "cython/interface.pyx":801 + /* "cython/interface.pyx":803 * assert self.initialized * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 801, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 801, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -12883,13 +12885,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob } } if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 801, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 801, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else @@ -12897,43 +12899,43 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 801, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); } else #endif { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 801, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_x); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 801, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 801, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 801, __pyx_L1_error) + __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 801, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_1) { - /* "cython/interface.pyx":803 + /* "cython/interface.pyx":805 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -12947,13 +12949,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob } } if (!__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else @@ -12961,73 +12963,73 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_x}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_x); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_Dimension_np_size_x_d_of_input_x, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":805 + /* "cython/interface.pyx":807 * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) # <<<<<<<<<<<<<< * _x = x # this is the final type conversion * if self.problem is NULL: */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 805, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_not_match_the_problem_dimension, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":803 + /* "cython/interface.pyx":805 * if np.size(x) != self.number_of_variables: * raise ValueError( * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + # <<<<<<<<<<<<<< * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) */ - __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":802 + /* "cython/interface.pyx":804 * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: * raise ValueError( # <<<<<<<<<<<<<< * "Dimension, `np.size(x)==%d`, of input `x` does " % np.size(x) + * "not match the problem dimension `number_of_variables==%d`." */ - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 802, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 804, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 802, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 804, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 802, __pyx_L1_error) + __PYX_ERR(0, 804, __pyx_L1_error) - /* "cython/interface.pyx":801 + /* "cython/interface.pyx":803 * assert self.initialized * x = np.array(x, copy=False, dtype=np.double, order='C') * if np.size(x) != self.number_of_variables: # <<<<<<<<<<<<<< @@ -13036,14 +13038,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ } - /* "cython/interface.pyx":806 + /* "cython/interface.pyx":808 * "not match the problem dimension `number_of_variables==%d`." * % self.number_of_variables) * _x = x # this is the final type conversion # <<<<<<<<<<<<<< * if self.problem is NULL: * raise InvalidProblemException() */ - if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 806, __pyx_L1_error) + if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 808, __pyx_L1_error) __pyx_t_3 = __pyx_v_x; __Pyx_INCREF(__pyx_t_3); { @@ -13061,12 +13063,12 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0; } __pyx_pybuffernd__x.diminfo[0].strides = __pyx_pybuffernd__x.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__x.diminfo[0].shape = __pyx_pybuffernd__x.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 806, __pyx_L1_error) + if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 808, __pyx_L1_error) } __pyx_v__x = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":807 + /* "cython/interface.pyx":809 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -13076,14 +13078,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_t_1 = ((__pyx_v_self->problem == NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":808 + /* "cython/interface.pyx":810 * _x = x # this is the final type conversion * if self.problem is NULL: * raise InvalidProblemException() # <<<<<<<<<<<<<< * coco_evaluate_function(self.problem, * np.PyArray_DATA(_x), */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 808, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidProblemException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -13096,18 +13098,18 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob } } if (__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 808, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 808, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 810, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 808, __pyx_L1_error) + __PYX_ERR(0, 810, __pyx_L1_error) - /* "cython/interface.pyx":807 + /* "cython/interface.pyx":809 * % self.number_of_variables) * _x = x # this is the final type conversion * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -13116,7 +13118,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ } - /* "cython/interface.pyx":811 + /* "cython/interface.pyx":813 * coco_evaluate_function(self.problem, * np.PyArray_DATA(_x), * np.PyArray_DATA(self.y_values)) # <<<<<<<<<<<<<< @@ -13126,7 +13128,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_t_3 = ((PyObject *)__pyx_v_self->y_values); __Pyx_INCREF(__pyx_t_3); - /* "cython/interface.pyx":809 + /* "cython/interface.pyx":811 * if self.problem is NULL: * raise InvalidProblemException() * coco_evaluate_function(self.problem, # <<<<<<<<<<<<<< @@ -13136,7 +13138,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob coco_evaluate_function(__pyx_v_self->problem, ((double *)PyArray_DATA(((PyArrayObject *)__pyx_v__x))), ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_3)))); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":812 + /* "cython/interface.pyx":814 * np.PyArray_DATA(_x), * np.PyArray_DATA(self.y_values)) * if self._number_of_objectives == 1: # <<<<<<<<<<<<<< @@ -13146,7 +13148,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_t_1 = ((__pyx_v_self->_number_of_objectives == 1) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":813 + /* "cython/interface.pyx":815 * np.PyArray_DATA(self.y_values)) * if self._number_of_objectives == 1: * return self.y_values[0] # <<<<<<<<<<<<<< @@ -13154,13 +13156,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->y_values), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 813, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->y_values), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":812 + /* "cython/interface.pyx":814 * np.PyArray_DATA(_x), * np.PyArray_DATA(self.y_values)) * if self._number_of_objectives == 1: # <<<<<<<<<<<<<< @@ -13169,7 +13171,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob */ } - /* "cython/interface.pyx":814 + /* "cython/interface.pyx":816 * if self._number_of_objectives == 1: * return self.y_values[0] * return np.array(self.y_values, copy=True) # <<<<<<<<<<<<<< @@ -13177,20 +13179,20 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 814, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 814, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 814, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_self->y_values)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->y_values)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->y_values)); - __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 814, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 814, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 814, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 816, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -13199,7 +13201,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":796 + /* "cython/interface.pyx":798 * * # def __call__(self, np.ndarray[double, ndim=1, mode="c"] x): * def __call__(self, x): # <<<<<<<<<<<<<< @@ -13233,7 +13235,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_22__call__(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":817 +/* "cython/interface.pyx":819 * * @property * def id(self): # <<<<<<<<<<<<<< @@ -13261,7 +13263,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":819 + /* "cython/interface.pyx":821 * def id(self): * "id as string without spaces or weird characters" * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -13271,7 +13273,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":820 + /* "cython/interface.pyx":822 * "id as string without spaces or weird characters" * if self.problem is not NULL: * return coco_problem_get_id(self.problem) # <<<<<<<<<<<<<< @@ -13279,13 +13281,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o * def _parse_id(self, substr): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 820, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_id(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":819 + /* "cython/interface.pyx":821 * def id(self): * "id as string without spaces or weird characters" * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -13294,7 +13296,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o */ } - /* "cython/interface.pyx":817 + /* "cython/interface.pyx":819 * * @property * def id(self): # <<<<<<<<<<<<<< @@ -13315,7 +13317,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_2id___get__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":822 +/* "cython/interface.pyx":824 * return coco_problem_get_id(self.problem) * * def _parse_id(self, substr): # <<<<<<<<<<<<<< @@ -13349,7 +13351,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o Py_ssize_t __pyx_t_6; __Pyx_RefNannySetupContext("_parse_id", 0); - /* "cython/interface.pyx":824 + /* "cython/interface.pyx":826 * def _parse_id(self, substr): * "search `substr` in `id` and return converted `int` up to '_'" * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -13359,7 +13361,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o __pyx_t_1 = ((__pyx_v_self->problem == NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":825 + /* "cython/interface.pyx":827 * "search `substr` in `id` and return converted `int` up to '_'" * if self.problem is NULL: * return None # <<<<<<<<<<<<<< @@ -13371,7 +13373,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o __pyx_r = Py_None; goto __pyx_L0; - /* "cython/interface.pyx":824 + /* "cython/interface.pyx":826 * def _parse_id(self, substr): * "search `substr` in `id` and return converted `int` up to '_'" * if self.problem is NULL: # <<<<<<<<<<<<<< @@ -13380,16 +13382,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o */ } - /* "cython/interface.pyx":826 + /* "cython/interface.pyx":828 * if self.problem is NULL: * return None * i = self.id.find(substr) # <<<<<<<<<<<<<< * if i < 0: * raise ValueError() */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 826, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_find); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 826, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_find); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; @@ -13403,13 +13405,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o } } if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_substr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 826, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_substr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_substr}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 826, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else @@ -13417,19 +13419,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_substr}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 826, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 826, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_substr); __Pyx_GIVEREF(__pyx_v_substr); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_substr); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 826, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } @@ -13438,32 +13440,32 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o __pyx_v_i = __pyx_t_2; __pyx_t_2 = 0; - /* "cython/interface.pyx":827 + /* "cython/interface.pyx":829 * return None * i = self.id.find(substr) * if i < 0: # <<<<<<<<<<<<<< * raise ValueError() * return int(self.id[i + len(substr):].split('_')[0]) */ - __pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 827, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 827, __pyx_L1_error) + __pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 829, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { - /* "cython/interface.pyx":828 + /* "cython/interface.pyx":830 * i = self.id.find(substr) * if i < 0: * raise ValueError() # <<<<<<<<<<<<<< * return int(self.id[i + len(substr):].split('_')[0]) * */ - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_ValueError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_ValueError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 828, __pyx_L1_error) + __PYX_ERR(0, 830, __pyx_L1_error) - /* "cython/interface.pyx":827 + /* "cython/interface.pyx":829 * return None * i = self.id.find(substr) * if i < 0: # <<<<<<<<<<<<<< @@ -13472,7 +13474,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o */ } - /* "cython/interface.pyx":829 + /* "cython/interface.pyx":831 * if i < 0: * raise ValueError() * return int(self.id[i + len(substr):].split('_')[0]) # <<<<<<<<<<<<<< @@ -13480,35 +13482,35 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 829, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = PyObject_Length(__pyx_v_substr); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 829, __pyx_L1_error) - __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 829, __pyx_L1_error) + __pyx_t_6 = PyObject_Length(__pyx_v_substr); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 831, __pyx_L1_error) + __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyNumber_Add(__pyx_v_i, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 829, __pyx_L1_error) + __pyx_t_5 = PyNumber_Add(__pyx_v_i, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, 0, &__pyx_t_5, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 829, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, 0, &__pyx_t_5, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 829, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 829, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 829, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 829, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "cython/interface.pyx":822 + /* "cython/interface.pyx":824 * return coco_problem_get_id(self.problem) * * def _parse_id(self, substr): # <<<<<<<<<<<<<< @@ -13531,7 +13533,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_24_parse_id(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":832 +/* "cython/interface.pyx":834 * * @property * def id_function(self): # <<<<<<<<<<<<<< @@ -13566,7 +13568,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":834 + /* "cython/interface.pyx":836 * def id_function(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13582,7 +13584,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "cython/interface.pyx":835 + /* "cython/interface.pyx":837 * "see __init__.py" * try: * return self._parse_id('_f') # <<<<<<<<<<<<<< @@ -13590,16 +13592,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru * raise ValueError("cannot deduce function id from '%s'" % self.id) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parse_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 835, __pyx_L3_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parse_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 837, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 835, __pyx_L3_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 837, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L7_try_return; - /* "cython/interface.pyx":834 + /* "cython/interface.pyx":836 * def id_function(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13611,7 +13613,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "cython/interface.pyx":836 + /* "cython/interface.pyx":838 * try: * return self._parse_id('_f') * except ValueError: # <<<<<<<<<<<<<< @@ -13621,39 +13623,39 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); if (__pyx_t_6) { __Pyx_AddTraceback("cocoex.interface.Problem.id_function.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 836, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 838, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_7); - /* "cython/interface.pyx":837 + /* "cython/interface.pyx":839 * return self._parse_id('_f') * except ValueError: * raise ValueError("cannot deduce function id from '%s'" % self.id) # <<<<<<<<<<<<<< * * @property */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 837, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 839, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_cannot_deduce_function_id_from_s, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 837, __pyx_L5_except_error) + __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_cannot_deduce_function_id_from_s, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 839, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 837, __pyx_L5_except_error) + __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 839, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 837, __pyx_L5_except_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 839, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_ERR(0, 837, __pyx_L5_except_error) + __PYX_ERR(0, 839, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "cython/interface.pyx":834 + /* "cython/interface.pyx":836 * def id_function(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13673,7 +13675,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru goto __pyx_L0; } - /* "cython/interface.pyx":832 + /* "cython/interface.pyx":834 * * @property * def id_function(self): # <<<<<<<<<<<<<< @@ -13696,7 +13698,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_function___get__(stru return __pyx_r; } -/* "cython/interface.pyx":840 +/* "cython/interface.pyx":842 * * @property * def id_instance(self): # <<<<<<<<<<<<<< @@ -13731,7 +13733,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":842 + /* "cython/interface.pyx":844 * def id_instance(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13747,7 +13749,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "cython/interface.pyx":843 + /* "cython/interface.pyx":845 * "see __init__.py" * try: * return self._parse_id('_i') # <<<<<<<<<<<<<< @@ -13755,16 +13757,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru * raise ValueError("cannot deduce instance id from '%s'" % self.id) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parse_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 843, __pyx_L3_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parse_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 845, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 843, __pyx_L3_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 845, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L7_try_return; - /* "cython/interface.pyx":842 + /* "cython/interface.pyx":844 * def id_instance(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13776,7 +13778,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "cython/interface.pyx":844 + /* "cython/interface.pyx":846 * try: * return self._parse_id('_i') * except ValueError: # <<<<<<<<<<<<<< @@ -13786,39 +13788,39 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); if (__pyx_t_6) { __Pyx_AddTraceback("cocoex.interface.Problem.id_instance.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 844, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 846, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_7); - /* "cython/interface.pyx":845 + /* "cython/interface.pyx":847 * return self._parse_id('_i') * except ValueError: * raise ValueError("cannot deduce instance id from '%s'" % self.id) # <<<<<<<<<<<<<< * * @property */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 845, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 847, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_cannot_deduce_instance_id_from_s, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 845, __pyx_L5_except_error) + __pyx_t_9 = PyUnicode_Format(__pyx_kp_u_cannot_deduce_instance_id_from_s, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 847, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 845, __pyx_L5_except_error) + __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 847, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 845, __pyx_L5_except_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 847, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_ERR(0, 845, __pyx_L5_except_error) + __PYX_ERR(0, 847, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "cython/interface.pyx":842 + /* "cython/interface.pyx":844 * def id_instance(self): * "see __init__.py" * try: # <<<<<<<<<<<<<< @@ -13838,7 +13840,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru goto __pyx_L0; } - /* "cython/interface.pyx":840 + /* "cython/interface.pyx":842 * * @property * def id_instance(self): # <<<<<<<<<<<<<< @@ -13861,7 +13863,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_11id_instance___get__(stru return __pyx_r; } -/* "cython/interface.pyx":848 +/* "cython/interface.pyx":850 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -13889,7 +13891,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":849 + /* "cython/interface.pyx":851 * @property * def name(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -13899,7 +13901,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":850 + /* "cython/interface.pyx":852 * def name(self): * if self.problem is not NULL: * return coco_problem_get_name(self.problem) # <<<<<<<<<<<<<< @@ -13907,13 +13909,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 850, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyStr_FromString(coco_problem_get_name(__pyx_v_self->problem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 852, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":849 + /* "cython/interface.pyx":851 * @property * def name(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -13922,7 +13924,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx */ } - /* "cython/interface.pyx":848 + /* "cython/interface.pyx":850 * * @property * def name(self): # <<<<<<<<<<<<<< @@ -13943,7 +13945,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4name___get__(struct __pyx return __pyx_r; } -/* "cython/interface.pyx":853 +/* "cython/interface.pyx":855 * * @property * def index(self): # <<<<<<<<<<<<<< @@ -13969,7 +13971,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":855 + /* "cython/interface.pyx":857 * def index(self): * """problem index in the benchmark `Suite` of origin""" * return self._problem_index # <<<<<<<<<<<<<< @@ -13981,7 +13983,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __py __pyx_r = __pyx_v_self->_problem_index; goto __pyx_L0; - /* "cython/interface.pyx":853 + /* "cython/interface.pyx":855 * * @property * def index(self): # <<<<<<<<<<<<<< @@ -13996,7 +13998,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5index___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":858 +/* "cython/interface.pyx":860 * * @property * def suite(self): # <<<<<<<<<<<<<< @@ -14022,7 +14024,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":860 + /* "cython/interface.pyx":862 * def suite(self): * """benchmark suite this problem is from""" * return self._suite_name # <<<<<<<<<<<<<< @@ -14034,7 +14036,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __py __pyx_r = __pyx_v_self->_suite_name; goto __pyx_L0; - /* "cython/interface.pyx":858 + /* "cython/interface.pyx":860 * * @property * def suite(self): # <<<<<<<<<<<<<< @@ -14049,7 +14051,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_5suite___get__(struct __py return __pyx_r; } -/* "cython/interface.pyx":863 +/* "cython/interface.pyx":865 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -14077,7 +14079,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("__get__", 0); - /* "cython/interface.pyx":865 + /* "cython/interface.pyx":867 * def info(self): * """see __init__.py""" * return str(self) # <<<<<<<<<<<<<< @@ -14085,19 +14087,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx * def __str__(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 865, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 865, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "cython/interface.pyx":863 + /* "cython/interface.pyx":865 * * @property * def info(self): # <<<<<<<<<<<<<< @@ -14117,7 +14119,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_4info___get__(struct __pyx return __pyx_r; } -/* "cython/interface.pyx":867 +/* "cython/interface.pyx":869 * return str(self) * * def __str__(self): # <<<<<<<<<<<<<< @@ -14155,7 +14157,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("__str__", 0); - /* "cython/interface.pyx":868 + /* "cython/interface.pyx":870 * * def __str__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -14165,128 +14167,128 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":869 + /* "cython/interface.pyx":871 * def __str__(self): * if self.problem is not NULL: * dimensional = "%d-dimensional" % self.dimension # <<<<<<<<<<<<<< * objective = "%s-objective" % { * 1: 'single', */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 869, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimension); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_d_dimensional, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 869, __pyx_L1_error) + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_d_dimensional, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_dimensional = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":871 + /* "cython/interface.pyx":873 * dimensional = "%d-dimensional" % self.dimension * objective = "%s-objective" % { * 1: 'single', # <<<<<<<<<<<<<< * 2: 'bi'}.get(self.number_of_objectives, * str(self.number_of_objectives)) */ - __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 871, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_int_1, __pyx_n_u_single) < 0) __PYX_ERR(0, 871, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_3, __pyx_int_2, __pyx_n_u_bi) < 0) __PYX_ERR(0, 871, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_int_1, __pyx_n_u_single) < 0) __PYX_ERR(0, 873, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_int_2, __pyx_n_u_bi) < 0) __PYX_ERR(0, 873, __pyx_L1_error) - /* "cython/interface.pyx":872 + /* "cython/interface.pyx":874 * objective = "%s-objective" % { * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, # <<<<<<<<<<<<<< * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 872, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - /* "cython/interface.pyx":873 + /* "cython/interface.pyx":875 * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, * str(self.number_of_objectives)) # <<<<<<<<<<<<<< * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 873, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_objectives); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 873, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 873, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "cython/interface.pyx":872 + /* "cython/interface.pyx":874 * objective = "%s-objective" % { * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, # <<<<<<<<<<<<<< * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( */ - __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 872, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":870 + /* "cython/interface.pyx":872 * if self.problem is not NULL: * dimensional = "%d-dimensional" % self.dimension * objective = "%s-objective" % { # <<<<<<<<<<<<<< * 1: 'single', * 2: 'bi'}.get(self.number_of_objectives, */ - __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_s_objective, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 870, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_s_objective, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 872, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_objective = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":874 + /* "cython/interface.pyx":876 * 2: 'bi'}.get(self.number_of_objectives, * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( # <<<<<<<<<<<<<< * " with %d constraint%s" % (self.number_of_constraints, * "s" if self.number_of_constraints > 1 else "") */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 874, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 874, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 874, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 876, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_4 = __pyx_kp_u__2; } else { - /* "cython/interface.pyx":875 + /* "cython/interface.pyx":877 * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, # <<<<<<<<<<<<<< * "s" if self.number_of_constraints > 1 else "") * ) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 875, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - /* "cython/interface.pyx":876 + /* "cython/interface.pyx":878 * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, * "s" if self.number_of_constraints > 1 else "") # <<<<<<<<<<<<<< * ) * integer_variables = "" if self.number_of_integer_variables == 0 else ( */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 876, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_constraints); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 878, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 876, __pyx_L1_error) + __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 878, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 876, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 878, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_7) { __Pyx_INCREF(__pyx_n_u_s); @@ -14296,14 +14298,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj __pyx_t_5 = __pyx_kp_u__2; } - /* "cython/interface.pyx":875 + /* "cython/interface.pyx":877 * str(self.number_of_objectives)) * constraints = "" if self.number_of_constraints == 0 else ( * " with %d constraint%s" % (self.number_of_constraints, # <<<<<<<<<<<<<< * "s" if self.number_of_constraints > 1 else "") * ) */ - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 875, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); @@ -14311,7 +14313,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); __pyx_t_2 = 0; __pyx_t_5 = 0; - __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_with_d_constraint_s, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 875, __pyx_L1_error) + __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_with_d_constraint_s, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_4 = __pyx_t_5; @@ -14320,33 +14322,33 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj __pyx_v_constraints = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":878 + /* "cython/interface.pyx":880 * "s" if self.number_of_constraints > 1 else "") * ) * integer_variables = "" if self.number_of_integer_variables == 0 else ( # <<<<<<<<<<<<<< * " %s %d integer variable%s" % ("and" if constraints != "" else "with", * self.number_of_integer_variables, */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 878, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 878, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 878, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 880, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_1) { __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_4 = __pyx_kp_u__2; } else { - /* "cython/interface.pyx":879 + /* "cython/interface.pyx":881 * ) * integer_variables = "" if self.number_of_integer_variables == 0 else ( * " %s %d integer variable%s" % ("and" if constraints != "" else "with", # <<<<<<<<<<<<<< * self.number_of_integer_variables, * "s" if self.number_of_integer_variables > 1 else "") */ - __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_constraints, __pyx_kp_u__2, Py_NE)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 879, __pyx_L1_error) + __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_constraints, __pyx_kp_u__2, Py_NE)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 881, __pyx_L1_error) if ((__pyx_t_7 != 0)) { __Pyx_INCREF(__pyx_n_u_and); __pyx_t_6 = __pyx_n_u_and; @@ -14355,28 +14357,28 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj __pyx_t_6 = __pyx_n_u_with; } - /* "cython/interface.pyx":880 + /* "cython/interface.pyx":882 * integer_variables = "" if self.number_of_integer_variables == 0 else ( * " %s %d integer variable%s" % ("and" if constraints != "" else "with", * self.number_of_integer_variables, # <<<<<<<<<<<<<< * "s" if self.number_of_integer_variables > 1 else "") * ) */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 880, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - /* "cython/interface.pyx":881 + /* "cython/interface.pyx":883 * " %s %d integer variable%s" % ("and" if constraints != "" else "with", * self.number_of_integer_variables, * "s" if self.number_of_integer_variables > 1 else "") # <<<<<<<<<<<<<< * ) * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 881, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_number_of_integer_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = PyObject_RichCompare(__pyx_t_3, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 881, __pyx_L1_error) + __pyx_t_8 = PyObject_RichCompare(__pyx_t_3, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 883, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 881, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 883, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (__pyx_t_7) { __Pyx_INCREF(__pyx_n_u_s); @@ -14386,14 +14388,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj __pyx_t_2 = __pyx_kp_u__2; } - /* "cython/interface.pyx":879 + /* "cython/interface.pyx":881 * ) * integer_variables = "" if self.number_of_integer_variables == 0 else ( * " %s %d integer variable%s" % ("and" if constraints != "" else "with", # <<<<<<<<<<<<<< * self.number_of_integer_variables, * "s" if self.number_of_integer_variables > 1 else "") */ - __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 879, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); @@ -14404,7 +14406,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_2 = 0; - __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_s_d_integer_variable_s, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 879, __pyx_L1_error) + __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_s_d_integer_variable_s, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_4 = __pyx_t_2; @@ -14413,7 +14415,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj __pyx_v_integer_variables = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":883 + /* "cython/interface.pyx":885 * "s" if self.number_of_integer_variables > 1 else "") * ) * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( # <<<<<<<<<<<<<< @@ -14422,38 +14424,38 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj */ __Pyx_XDECREF(__pyx_r); - /* "cython/interface.pyx":884 + /* "cython/interface.pyx":886 * ) * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( * self.id, dimensional, objective, constraints, integer_variables, self.index, # <<<<<<<<<<<<<< * self.suite, self.name) * # self.name.replace(self.name.split()[0], */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 884, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 884, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - /* "cython/interface.pyx":885 + /* "cython/interface.pyx":887 * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( * self.id, dimensional, objective, constraints, integer_variables, self.index, * self.suite, self.name) # <<<<<<<<<<<<<< * # self.name.replace(self.name.split()[0], * # self.name.split()[0] + "(%d)" */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_suite); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 885, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_suite); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 887, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 885, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 887, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - /* "cython/interface.pyx":884 + /* "cython/interface.pyx":886 * ) * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( * self.id, dimensional, objective, constraints, integer_variables, self.index, # <<<<<<<<<<<<<< * self.suite, self.name) * # self.name.replace(self.name.split()[0], */ - __pyx_t_6 = PyTuple_New(8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 884, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); @@ -14480,21 +14482,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj __pyx_t_8 = 0; __pyx_t_5 = 0; - /* "cython/interface.pyx":883 + /* "cython/interface.pyx":885 * "s" if self.number_of_integer_variables > 1 else "") * ) * return '%s: a %s %s problem%s%s (problem %d of suite "%s" with name "%s")' % ( # <<<<<<<<<<<<<< * self.id, dimensional, objective, constraints, integer_variables, self.index, * self.suite, self.name) */ - __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_s_a_s_s_problem_s_s_problem_d_o, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_s_a_s_s_problem_s_s_problem_d_o, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0; - /* "cython/interface.pyx":868 + /* "cython/interface.pyx":870 * * def __str__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -14503,7 +14505,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj */ } - /* "cython/interface.pyx":890 + /* "cython/interface.pyx":892 * # % (self.index if self.index is not None else -2))) * else: * return "finalized/invalid problem" # <<<<<<<<<<<<<< @@ -14517,7 +14519,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj goto __pyx_L0; } - /* "cython/interface.pyx":867 + /* "cython/interface.pyx":869 * return str(self) * * def __str__(self): # <<<<<<<<<<<<<< @@ -14545,7 +14547,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_26__str__(struct __pyx_obj return __pyx_r; } -/* "cython/interface.pyx":892 +/* "cython/interface.pyx":894 * return "finalized/invalid problem" * * def __repr__(self): # <<<<<<<<<<<<<< @@ -14575,7 +14577,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("__repr__", 0); - /* "cython/interface.pyx":893 + /* "cython/interface.pyx":895 * * def __repr__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -14585,7 +14587,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob __pyx_t_1 = ((__pyx_v_self->problem != NULL) != 0); if (__pyx_t_1) { - /* "cython/interface.pyx":894 + /* "cython/interface.pyx":896 * def __repr__(self): * if self.problem is not NULL: * return "<%s(), id=%r>" % ( # <<<<<<<<<<<<<< @@ -14594,19 +14596,19 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob */ __Pyx_XDECREF(__pyx_r); - /* "cython/interface.pyx":895 + /* "cython/interface.pyx":897 * if self.problem is not NULL: * return "<%s(), id=%r>" % ( * repr(self.__class__).split()[1][1:-2], # <<<<<<<<<<<<<< * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 895, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_Repr(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 895, __pyx_L1_error) + __pyx_t_4 = PyObject_Repr(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 895, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -14620,38 +14622,38 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 895, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 897, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 895, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 897, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 895, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, -2L, NULL, NULL, &__pyx_slice__27, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 895, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, -2L, NULL, NULL, &__pyx_slice__27, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":897 + /* "cython/interface.pyx":899 * repr(self.__class__).split()[1][1:-2], * # self.problem_suite, self.problem_index, * self.id) # <<<<<<<<<<<<<< * else: * return "" */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 897, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - /* "cython/interface.pyx":895 + /* "cython/interface.pyx":897 * if self.problem is not NULL: * return "<%s(), id=%r>" % ( * repr(self.__class__).split()[1][1:-2], # <<<<<<<<<<<<<< * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 895, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); @@ -14660,21 +14662,21 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob __pyx_t_2 = 0; __pyx_t_3 = 0; - /* "cython/interface.pyx":894 + /* "cython/interface.pyx":896 * def __repr__(self): * if self.problem is not NULL: * return "<%s(), id=%r>" % ( # <<<<<<<<<<<<<< * repr(self.__class__).split()[1][1:-2], * # self.problem_suite, self.problem_index, */ - __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_s_id_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 894, __pyx_L1_error) + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_s_id_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":893 + /* "cython/interface.pyx":895 * * def __repr__(self): * if self.problem is not NULL: # <<<<<<<<<<<<<< @@ -14683,7 +14685,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob */ } - /* "cython/interface.pyx":899 + /* "cython/interface.pyx":901 * self.id) * else: * return "" # <<<<<<<<<<<<<< @@ -14697,7 +14699,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob goto __pyx_L0; } - /* "cython/interface.pyx":892 + /* "cython/interface.pyx":894 * return "finalized/invalid problem" * * def __repr__(self): # <<<<<<<<<<<<<< @@ -14718,7 +14720,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_28__repr__(struct __pyx_ob return __pyx_r; } -/* "cython/interface.pyx":901 +/* "cython/interface.pyx":903 * return "" * * def __enter__(self): # <<<<<<<<<<<<<< @@ -14745,7 +14747,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__enter__(struct __pyx_o __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__enter__", 0); - /* "cython/interface.pyx":904 + /* "cython/interface.pyx":906 * """Allows ``with Suite(...)[index] as problem:`` (or ``Suite(...).get_problem(...)``) * """ * return self # <<<<<<<<<<<<<< @@ -14757,7 +14759,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__enter__(struct __pyx_o __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "cython/interface.pyx":901 + /* "cython/interface.pyx":903 * return "" * * def __enter__(self): # <<<<<<<<<<<<<< @@ -14772,7 +14774,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_30__enter__(struct __pyx_o return __pyx_r; } -/* "cython/interface.pyx":905 +/* "cython/interface.pyx":907 * """ * return self * def __exit__(self, exception_type, exception_value, traceback): # <<<<<<<<<<<<<< @@ -14814,17 +14816,17 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_33__exit__(PyObject *__pyx case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_value)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 905, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 907, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 905, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 907, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 905, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 907, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -14839,7 +14841,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_7Problem_33__exit__(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 905, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 907, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.Problem.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -14863,7 +14865,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("__exit__", 0); - /* "cython/interface.pyx":906 + /* "cython/interface.pyx":908 * return self * def __exit__(self, exception_type, exception_value, traceback): * try: # <<<<<<<<<<<<<< @@ -14879,14 +14881,14 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "cython/interface.pyx":907 + /* "cython/interface.pyx":909 * def __exit__(self, exception_type, exception_value, traceback): * try: * self.free() # <<<<<<<<<<<<<< * except: * pass */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_free); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 907, __pyx_L3_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_free); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 909, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { @@ -14899,16 +14901,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob } } if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 907, __pyx_L3_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 909, __pyx_L3_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 907, __pyx_L3_error) + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 909, __pyx_L3_error) } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":906 + /* "cython/interface.pyx":908 * return self * def __exit__(self, exception_type, exception_value, traceback): * try: # <<<<<<<<<<<<<< @@ -14925,7 +14927,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "cython/interface.pyx":908 + /* "cython/interface.pyx":910 * try: * self.free() * except: # <<<<<<<<<<<<<< @@ -14944,7 +14946,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_32__exit__(struct __pyx_ob __pyx_L8_try_end:; } - /* "cython/interface.pyx":905 + /* "cython/interface.pyx":907 * """ * return self * def __exit__(self, exception_type, exception_value, traceback): # <<<<<<<<<<<<<< @@ -15066,7 +15068,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_7Problem_36__setstate_cython__(CYTH return __pyx_r; } -/* "cython/interface.pyx":911 +/* "cython/interface.pyx":913 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< @@ -15105,7 +15107,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, Py } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log_level") < 0)) __PYX_ERR(0, 911, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log_level") < 0)) __PYX_ERR(0, 913, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -15119,7 +15121,7 @@ static PyObject *__pyx_pw_6cocoex_9interface_1log_level(PyObject *__pyx_self, Py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("log_level", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 911, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("log_level", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 913, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cocoex.interface.log_level", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -15142,7 +15144,7 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ char const *__pyx_t_4; __Pyx_RefNannySetupContext("log_level", 0); - /* "cython/interface.pyx":918 + /* "cython/interface.pyx":920 * with increasing verbosity, or '' which doesn't change anything. * """ * cdef bytes _level = _bstring(level if level is not None else "") # <<<<<<<<<<<<<< @@ -15156,13 +15158,13 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ __Pyx_INCREF(__pyx_kp_u__2); __pyx_t_1 = __pyx_kp_u__2; } - __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 918, __pyx_L1_error) + __pyx_t_3 = __pyx_f_6cocoex_9interface__bstring(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 920, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v__level = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "cython/interface.pyx":919 + /* "cython/interface.pyx":921 * """ * cdef bytes _level = _bstring(level if level is not None else "") * return coco_set_log_level(_level) # <<<<<<<<<<<<<< @@ -15170,16 +15172,16 @@ static PyObject *__pyx_pf_6cocoex_9interface_log_level(CYTHON_UNUSED PyObject *_ __Pyx_XDECREF(__pyx_r); if (unlikely(__pyx_v__level == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 919, __pyx_L1_error) + __PYX_ERR(0, 921, __pyx_L1_error) } - __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_v__level); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 919, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyStr_FromString(coco_set_log_level(__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 919, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_v__level); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 921, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyStr_FromString(coco_set_log_level(__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "cython/interface.pyx":911 + /* "cython/interface.pyx":913 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< @@ -18709,9 +18711,9 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_Suite___iter, __pyx_k_Suite___iter, sizeof(__pyx_k_Suite___iter), 0, 0, 1, 1}, {&__pyx_kp_u_Suite_current_index___get___line, __pyx_k_Suite_current_index___get___line, sizeof(__pyx_k_Suite_current_index___get___line), 0, 1, 0, 0}, {&__pyx_kp_u_Suite_get_problem_by_function_di, __pyx_k_Suite_get_problem_by_function_di, sizeof(__pyx_k_Suite_get_problem_by_function_di), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_get_problem_line_193, __pyx_k_Suite_get_problem_line_193, sizeof(__pyx_k_Suite_get_problem_line_193), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_get_problem_line_195, __pyx_k_Suite_get_problem_line_195, sizeof(__pyx_k_Suite_get_problem_line_195), 0, 1, 0, 0}, {&__pyx_kp_u_Suite_has_been_finalized_free_ed, __pyx_k_Suite_has_been_finalized_free_ed, sizeof(__pyx_k_Suite_has_been_finalized_free_ed), 0, 1, 0, 0}, - {&__pyx_kp_u_Suite_ids_line_297, __pyx_k_Suite_ids_line_297, sizeof(__pyx_k_Suite_ids_line_297), 0, 1, 0, 0}, + {&__pyx_kp_u_Suite_ids_line_299, __pyx_k_Suite_ids_line_299, sizeof(__pyx_k_Suite_ids_line_299), 0, 1, 0, 0}, {&__pyx_kp_u_Suite_r_r_r, __pyx_k_Suite_r_r_r, sizeof(__pyx_k_Suite_r_r_r), 0, 1, 0, 0}, {&__pyx_kp_u_Suite_s_s_s_with_d_problem_s_in, __pyx_k_Suite_s_s_s_with_d_problem_s_in, sizeof(__pyx_k_Suite_s_s_s_with_d_problem_s_in), 0, 1, 0, 0}, {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, @@ -18794,6 +18796,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_instance, __pyx_k_instance, sizeof(__pyx_k_instance), 0, 0, 1, 1}, {&__pyx_n_s_iter, __pyx_k_iter, sizeof(__pyx_k_iter), 0, 0, 1, 1}, {&__pyx_n_s_known_suite_names, __pyx_k_known_suite_names, sizeof(__pyx_k_known_suite_names), 0, 0, 1, 1}, + {&__pyx_n_s_known_suite_names_2, __pyx_k_known_suite_names_2, sizeof(__pyx_k_known_suite_names_2), 0, 0, 1, 1}, {&__pyx_n_s_level, __pyx_k_level, sizeof(__pyx_k_level), 0, 0, 1, 1}, {&__pyx_n_s_level_2, __pyx_k_level_2, sizeof(__pyx_k_level_2), 0, 0, 1, 1}, {&__pyx_n_s_log_level, __pyx_k_log_level, sizeof(__pyx_k_log_level), 0, 0, 1, 1}, @@ -18871,16 +18874,16 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 77, __pyx_L1_error) - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 175, __pyx_L1_error) - __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 293, __pyx_L1_error) - __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 336, __pyx_L1_error) - __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 337, __pyx_L1_error) - __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 339, __pyx_L1_error) - __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(0, 412, __pyx_L1_error) - __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 412, __pyx_L1_error) - __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 532, __pyx_L1_error) - __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 79, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 177, __pyx_L1_error) + __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 295, __pyx_L1_error) + __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 339, __pyx_L1_error) + __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 341, __pyx_L1_error) + __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(0, 414, __pyx_L1_error) + __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 414, __pyx_L1_error) + __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 534, __pyx_L1_error) + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 558, __pyx_L1_error) __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1013, __pyx_L1_error) return 0; __pyx_L1_error:; @@ -18891,69 +18894,69 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "cython/interface.pyx":75 + /* "cython/interface.pyx":77 * return s * if isinstance(s, (str, unicode)): * return s.encode('ascii') # why not s.encode('ascii') ? # <<<<<<<<<<<<<< * else: * raise TypeError("expect a string, got %s" % str(type(s))) */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_u_ascii); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_u_ascii); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); - /* "cython/interface.pyx":144 + /* "cython/interface.pyx":146 * raise NoSuchSuiteException("No suite with name '%s' found" % self._name) * while True: * old_level = log_level('warning') # <<<<<<<<<<<<<< * p = coco_suite_get_next_problem(suite, NULL) * log_level(old_level) */ - __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_u_warning); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 144, __pyx_L1_error) + __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_u_warning); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 146, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "cython/interface.pyx":175 + /* "cython/interface.pyx":177 * global _current_observer * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * if self.current_problem_: * self.current_problem_.free() */ - __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 175, __pyx_L1_error) + __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "cython/interface.pyx":225 + /* "cython/interface.pyx":227 * """ * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * index = id * try: */ - __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 225, __pyx_L1_error) + __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "cython/interface.pyx":266 + /* "cython/interface.pyx":268 * * if not self.initialized: * raise ValueError("Suite has been finalized/free'ed") # <<<<<<<<<<<<<< * try: * return Problem_init(coco_suite_get_problem_by_function_dimension_instance(self.suite, _function, */ - __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 266, __pyx_L1_error) + __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Suite_has_been_finalized_free_ed); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 268, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); - /* "cython/interface.pyx":293 + /* "cython/interface.pyx":295 * def find_problem_ids(self, *args, **kwargs): * """has been renamed to `ids`""" * raise NotImplementedError( # <<<<<<<<<<<<<< * "`find_problem_ids()` has been renamed to `ids()`") * */ - __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_find_problem_ids_has_been_renam); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 293, __pyx_L1_error) + __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_find_problem_ids_has_been_renam); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7); @@ -18976,25 +18979,25 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9); - /* "cython/interface.pyx":452 + /* "cython/interface.pyx":454 * def __cinit__(self, name, options): * if isinstance(options, dict): * s = str(options).replace(',', ' ') # <<<<<<<<<<<<<< * for c in ["u'", 'u"', "'", '"', "{", "}"]: * s = s.replace(c, '') */ - __pyx_tuple__12 = PyTuple_Pack(2, __pyx_kp_u__10, __pyx_kp_u__11); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 452, __pyx_L1_error) + __pyx_tuple__12 = PyTuple_Pack(2, __pyx_kp_u__10, __pyx_kp_u__11); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__12); __Pyx_GIVEREF(__pyx_tuple__12); - /* "cython/interface.pyx":453 + /* "cython/interface.pyx":455 * if isinstance(options, dict): * s = str(options).replace(',', ' ') * for c in ["u'", 'u"', "'", '"', "{", "}"]: # <<<<<<<<<<<<<< * s = s.replace(c, '') * options = s */ - __pyx_tuple__17 = PyTuple_Pack(6, __pyx_kp_u_u, __pyx_kp_u_u_2, __pyx_kp_u__13, __pyx_kp_u__14, __pyx_kp_u__15, __pyx_kp_u__16); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 453, __pyx_L1_error) + __pyx_tuple__17 = PyTuple_Pack(6, __pyx_kp_u_u, __pyx_kp_u_u_2, __pyx_kp_u__13, __pyx_kp_u__14, __pyx_kp_u__15, __pyx_kp_u__16); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); @@ -19017,80 +19020,80 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__19); __Pyx_GIVEREF(__pyx_tuple__19); - /* "cython/interface.pyx":532 + /* "cython/interface.pyx":534 * cdef np.npy_intp shape[1] * if self.initialized: * raise RuntimeError("Problem already initialized") # <<<<<<<<<<<<<< * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") */ - __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_u_Problem_already_initialized); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 532, __pyx_L1_error) + __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_u_Problem_already_initialized); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__20); __Pyx_GIVEREF(__pyx_tuple__20); - /* "cython/interface.pyx":534 + /* "cython/interface.pyx":536 * raise RuntimeError("Problem already initialized") * if problem == NULL: * raise ValueError("in Problem._initialize(problem,...): problem is NULL") # <<<<<<<<<<<<<< * self.problem = problem * self._problem_index = coco_problem_get_suite_dep_index(self.problem) */ - __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_u_in_Problem__initialize_problem_p); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 534, __pyx_L1_error) + __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_u_in_Problem__initialize_problem_p); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 536, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__21); __Pyx_GIVEREF(__pyx_tuple__21); - /* "cython/interface.pyx":590 + /* "cython/interface.pyx":592 * for the assessment of the algorithm. * """ * raise NotImplementedError("has never been tested, incomment this to start testing") # <<<<<<<<<<<<<< * cdef np.ndarray[double, ndim=1, mode="c"] _x * x = np.array(x, copy=False, dtype=np.double, order='C') */ - __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u_has_never_been_tested_incomment); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 590, __pyx_L1_error) + __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u_has_never_been_tested_incomment); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 592, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__22); __Pyx_GIVEREF(__pyx_tuple__22); - /* "cython/interface.pyx":829 + /* "cython/interface.pyx":831 * if i < 0: * raise ValueError() * return int(self.id[i + len(substr):].split('_')[0]) # <<<<<<<<<<<<<< * * @property */ - __pyx_tuple__24 = PyTuple_Pack(1, __pyx_n_u__23); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 829, __pyx_L1_error) + __pyx_tuple__24 = PyTuple_Pack(1, __pyx_n_u__23); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 831, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__24); __Pyx_GIVEREF(__pyx_tuple__24); - /* "cython/interface.pyx":835 + /* "cython/interface.pyx":837 * "see __init__.py" * try: * return self._parse_id('_f') # <<<<<<<<<<<<<< * except ValueError: * raise ValueError("cannot deduce function id from '%s'" % self.id) */ - __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_u_f); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 835, __pyx_L1_error) + __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_u_f); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 837, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); - /* "cython/interface.pyx":843 + /* "cython/interface.pyx":845 * "see __init__.py" * try: * return self._parse_id('_i') # <<<<<<<<<<<<<< * except ValueError: * raise ValueError("cannot deduce instance id from '%s'" % self.id) */ - __pyx_tuple__26 = PyTuple_Pack(1, __pyx_n_u_i); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 843, __pyx_L1_error) + __pyx_tuple__26 = PyTuple_Pack(1, __pyx_n_u_i); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 845, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__26); __Pyx_GIVEREF(__pyx_tuple__26); - /* "cython/interface.pyx":895 + /* "cython/interface.pyx":897 * if self.problem is not NULL: * return "<%s(), id=%r>" % ( * repr(self.__class__).split()[1][1:-2], # <<<<<<<<<<<<<< * # self.problem_suite, self.problem_index, * self.id) */ - __pyx_slice__27 = PySlice_New(__pyx_int_1, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__27)) __PYX_ERR(0, 895, __pyx_L1_error) + __pyx_slice__27 = PySlice_New(__pyx_int_1, __pyx_int_neg_2, Py_None); if (unlikely(!__pyx_slice__27)) __PYX_ERR(0, 897, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__27); __Pyx_GIVEREF(__pyx_slice__27); @@ -19210,17 +19213,17 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__38); __Pyx_GIVEREF(__pyx_tuple__38); - /* "cython/interface.pyx":911 + /* "cython/interface.pyx":913 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< * """`log_level(level=None)` return current log level and * set new log level if `level is not None and level`. */ - __pyx_tuple__39 = PyTuple_Pack(2, __pyx_n_s_level, __pyx_n_s_level_2); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 911, __pyx_L1_error) + __pyx_tuple__39 = PyTuple_Pack(2, __pyx_n_s_level, __pyx_n_s_level_2); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 913, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__39); __Pyx_GIVEREF(__pyx_tuple__39); - __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_cython_interface_pyx, __pyx_n_s_log_level, 911, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 911, __pyx_L1_error) + __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_cython_interface_pyx, __pyx_n_s_log_level, 913, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 913, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -19382,11 +19385,11 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) /*--- Type init code ---*/ __pyx_vtabptr_6cocoex_9interface_Suite = &__pyx_vtable_6cocoex_9interface_Suite; __pyx_vtable_6cocoex_9interface_Suite._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Suite *))__pyx_f_6cocoex_9interface_5Suite__initialize; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 81, __pyx_L1_error) + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 83, __pyx_L1_error) __pyx_type_6cocoex_9interface_Suite.tp_print = 0; #if CYTHON_COMPILING_IN_CPYTHON { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 81, __pyx_L1_error) + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 83, __pyx_L1_error) if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base; __pyx_wrapperbase_6cocoex_9interface_5Suite_10__getitem__.doc = __pyx_doc_6cocoex_9interface_5Suite_10__getitem__; @@ -19396,7 +19399,7 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) #endif #if CYTHON_COMPILING_IN_CPYTHON { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__iter__"); if (unlikely(!wrapper)) __PYX_ERR(0, 81, __pyx_L1_error) + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Suite, "__iter__"); if (unlikely(!wrapper)) __PYX_ERR(0, 83, __pyx_L1_error) if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base; __pyx_wrapperbase_6cocoex_9interface_5Suite_26__iter__.doc = __pyx_doc_6cocoex_9interface_5Suite_26__iter__; @@ -19404,22 +19407,22 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) } } #endif - if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Suite.tp_dict, __pyx_vtabptr_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 81, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Suite", (PyObject *)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 81, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 81, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Suite.tp_dict, __pyx_vtabptr_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 83, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "Suite", (PyObject *)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 83, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Suite) < 0) __PYX_ERR(0, 83, __pyx_L1_error) __pyx_ptype_6cocoex_9interface_Suite = &__pyx_type_6cocoex_9interface_Suite; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 443, __pyx_L1_error) + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 445, __pyx_L1_error) __pyx_type_6cocoex_9interface_Observer.tp_print = 0; - if (PyObject_SetAttrString(__pyx_m, "Observer", (PyObject *)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 443, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 443, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "Observer", (PyObject *)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 445, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Observer) < 0) __PYX_ERR(0, 445, __pyx_L1_error) __pyx_ptype_6cocoex_9interface_Observer = &__pyx_type_6cocoex_9interface_Observer; __pyx_vtabptr_6cocoex_9interface_Problem = &__pyx_vtable_6cocoex_9interface_Problem; __pyx_vtable_6cocoex_9interface_Problem._initialize = (PyObject *(*)(struct __pyx_obj_6cocoex_9interface_Problem *, coco_problem_t *, struct __pyx_opt_args_6cocoex_9interface_7Problem__initialize *__pyx_optional_args))__pyx_f_6cocoex_9interface_7Problem__initialize; - if (PyType_Ready(&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 507, __pyx_L1_error) + if (PyType_Ready(&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 509, __pyx_L1_error) __pyx_type_6cocoex_9interface_Problem.tp_print = 0; #if CYTHON_COMPILING_IN_CPYTHON { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Problem, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 507, __pyx_L1_error) + PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6cocoex_9interface_Problem, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 509, __pyx_L1_error) if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { __pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__ = *((PyWrapperDescrObject *)wrapper)->d_base; __pyx_wrapperbase_6cocoex_9interface_7Problem_22__call__.doc = __pyx_doc_6cocoex_9interface_7Problem_22__call__; @@ -19427,11 +19430,11 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) } } #endif - if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Problem.tp_dict, __pyx_vtabptr_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 507, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Problem", (PyObject *)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 507, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 507, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_type_6cocoex_9interface_Problem.tp_dict, __pyx_vtabptr_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 509, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "Problem", (PyObject *)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 509, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6cocoex_9interface_Problem) < 0) __PYX_ERR(0, 509, __pyx_L1_error) __pyx_ptype_6cocoex_9interface_Problem = &__pyx_type_6cocoex_9interface_Problem; - if (PyType_Ready(&__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__) < 0) __PYX_ERR(0, 416, __pyx_L1_error) + if (PyType_Ready(&__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__) < 0) __PYX_ERR(0, 418, __pyx_L1_error) __pyx_type_6cocoex_9interface___pyx_scope_struct____iter__.tp_print = 0; __pyx_ptype_6cocoex_9interface___pyx_scope_struct____iter__ = &__pyx_type_6cocoex_9interface___pyx_scope_struct____iter__; /*--- Type import code ---*/ @@ -19483,7 +19486,7 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) * * from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException # <<<<<<<<<<<<<< * - * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale", + * known_suite_names = ["bbob", "bbob-biobj", "bbob-largescale", */ __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); @@ -19516,11 +19519,38 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) /* "cython/interface.pyx":10 * from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException * - * known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale", # <<<<<<<<<<<<<< + * known_suite_names = ["bbob", "bbob-biobj", "bbob-largescale", # <<<<<<<<<<<<<< + * "bbob-mixint", "bbob-biobj-mixint"] + * _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale", + */ + __pyx_t_2 = PyList_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_u_bbob); + __Pyx_GIVEREF(__pyx_n_u_bbob); + PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_bbob); + __Pyx_INCREF(__pyx_kp_u_bbob_biobj); + __Pyx_GIVEREF(__pyx_kp_u_bbob_biobj); + PyList_SET_ITEM(__pyx_t_2, 1, __pyx_kp_u_bbob_biobj); + __Pyx_INCREF(__pyx_kp_u_bbob_largescale); + __Pyx_GIVEREF(__pyx_kp_u_bbob_largescale); + PyList_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_bbob_largescale); + __Pyx_INCREF(__pyx_kp_u_bbob_mixint); + __Pyx_GIVEREF(__pyx_kp_u_bbob_mixint); + PyList_SET_ITEM(__pyx_t_2, 3, __pyx_kp_u_bbob_mixint); + __Pyx_INCREF(__pyx_kp_u_bbob_biobj_mixint); + __Pyx_GIVEREF(__pyx_kp_u_bbob_biobj_mixint); + PyList_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_bbob_biobj_mixint); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "cython/interface.pyx":12 + * known_suite_names = ["bbob", "bbob-biobj", "bbob-largescale", + * "bbob-mixint", "bbob-biobj-mixint"] + * _known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale", # <<<<<<<<<<<<<< * "bbob-mixint", "bbob-biobj-mixint"] * */ - __pyx_t_2 = PyList_New(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __pyx_t_2 = PyList_New(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_u_bbob); __Pyx_GIVEREF(__pyx_n_u_bbob); @@ -19543,28 +19573,28 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) __Pyx_INCREF(__pyx_kp_u_bbob_biobj_mixint); __Pyx_GIVEREF(__pyx_kp_u_bbob_biobj_mixint); PyList_SET_ITEM(__pyx_t_2, 6, __pyx_kp_u_bbob_biobj_mixint); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_known_suite_names_2, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "cython/interface.pyx":18 + /* "cython/interface.pyx":20 * * # Must initialize numpy or risk segfaults * np.import_array() # <<<<<<<<<<<<<< * * cdef extern from "coco.h": */ - __pyx_t_3 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 18, __pyx_L1_error) + __pyx_t_3 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 20, __pyx_L1_error) - /* "cython/interface.pyx":911 + /* "cython/interface.pyx":913 * pass * * def log_level(level=None): # <<<<<<<<<<<<<< * """`log_level(level=None)` return current log level and * set new log level if `level is not None and level`. */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6cocoex_9interface_1log_level, NULL, __pyx_n_s_cocoex_interface); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 911, __pyx_L1_error) + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6cocoex_9interface_1log_level, NULL, __pyx_n_s_cocoex_interface); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_log_level, __pyx_t_2) < 0) __PYX_ERR(0, 911, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_log_level, __pyx_t_2) < 0) __PYX_ERR(0, 913, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "cython/interface.pyx":1 @@ -19574,9 +19604,9 @@ static int __pyx_pymod_exec_interface(PyObject *__pyx_pyinit_module) */ __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_line_193, __pyx_kp_u_get_problem_self_id_observer_No) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_line_195, __pyx_kp_u_get_problem_self_id_observer_No) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_get_problem_by_function_di, __pyx_kp_u_returns_a_Problem_instance_by_de) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_ids_line_297, __pyx_kp_u_ids_id_snippets_get_problem_Fal) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_ids_line_299, __pyx_kp_u_ids_id_snippets_get_problem_Fal) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_Suite_current_index___get___line, __pyx_kp_u_index_in_the_enumerator_of_all_p) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; diff --git a/code-experiments/build/python/cython/interface.pyx b/code-experiments/build/python/cython/interface.pyx index a9339c506..79ffe5eef 100755 --- a/code-experiments/build/python/cython/interface.pyx +++ b/code-experiments/build/python/cython/interface.pyx @@ -7,7 +7,9 @@ cimport numpy as np from cocoex.exceptions import InvalidProblemException, NoSuchProblemException, NoSuchSuiteException -known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale", +known_suite_names = ["bbob", "bbob-biobj", "bbob-largescale", + "bbob-mixint", "bbob-biobj-mixint"] +_known_suite_names = ["bbob", "bbob-biobj", "bbob-biobj-ext", "bbob-constrained", "bbob-largescale", "bbob-mixint", "bbob-biobj-mixint"] From 850213dd5219552b18966c8c7302f4888e6519f4 Mon Sep 17 00:00:00 2001 From: brockhof Date: Thu, 14 Mar 2019 23:51:55 +0100 Subject: [PATCH 444/446] bugfix ("minxint" instead of "mixint") --- code-experiments/build/python/python/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code-experiments/build/python/python/__init__.py b/code-experiments/build/python/python/__init__.py index f575cf271..73193e799 100644 --- a/code-experiments/build/python/python/__init__.py +++ b/code-experiments/build/python/python/__init__.py @@ -50,7 +50,7 @@ def default_observers(update=None): 'bbob-constrained': 'bbob', 'bbob-largescale': 'bbob', 'bbob-mixint': 'bbob', - 'bbob-biobj-minxint': 'bbob-biobj', + 'bbob-biobj-mixint': 'bbob-biobj', } class Suite(_Suite): From 5e0e5309f2d43ce1922f1032ac928609c1949180 Mon Sep 17 00:00:00 2001 From: Dimo Brockhoff Date: Fri, 15 Mar 2019 10:40:19 +0100 Subject: [PATCH 445/446] Updated list of available test suites --- README.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index e4d92462e..5fde36689 100644 --- a/README.md +++ b/README.md @@ -141,9 +141,10 @@ Getting Started Another entry point for your own experiments can be the `code-experiments/examples` folder. -5. Now you can **run** your favorite algorithm on the `bbob` suite (for - single-objective algorithms) or on the `bbob-biobj` and `bbob-biobj-ext` - suites (for multi-objective algorithms). Output is automatically generated in the +5. Now you can **run** your favorite algorithm on the `bbob` and `bbob-largescale` suites + (for single-objective algorithms), on the `bbob-biobj` suite (for multi-objective + algorithms), or on the mixed-integer suites (`bbob-mixint` and `bbob-biobj-mixint` + respectively). Output is automatically generated in the specified data `result_folder`. By now, more suites might be available, see below. @@ -259,15 +260,19 @@ our issue tracker at https://github.com/numbbo/coco/issues. problem inheriting thereby all properties of a coco problem) - most other files implement more or less what they say, e.g. the actual benchmark functions, transformations, benchmark suites, etc. - - currently, four benchmark suites and corresponding logging facilities are - implemented: + - currently, the following benchmark suites and corresponding logging facilities are + supported: * `bbob`: standard single-objective BBOB benchmark suite with 24 noiseless, scalable test functions * `bbob-biobj`: a bi-objective benchmark suite, combining 10 selected functions from the bbob suite, resulting in 55 noiseless functions - * `bbob-biobj-ext`: an extended version of the bi-objective `bbob-biobj` - benchmark suite, adding `bbob` function combinations from the same - `bbob` function groups, resulting in 92 noiseless functions overall + * `bbob-largescale`: a version of the `bbob` benchmark suite with dimensions + 20 to 640, employing permuted block-diagonal matrices to reduce the + execution time for function evaluations in higher dimension. + * `bbob-mixint`: a mixed-integer version of the original `bbob` and + `bbob-largescale` suites in which 80% of the variables have been discretized + * `bbob-biobj-mixint`: a version of the (so far not supported) `bbob-biobj-ext` + test suite with 92 functions with 80% discretized variables * `toy`: a simple, probably easier-to-understand example for reading and testing * code-experiments/tools are a few meta-tools, mainly the amalgamate.py to merge all From 5b2cdae766afb9b526c5b5d13c99871c678b937f Mon Sep 17 00:00:00 2001 From: Dimo Brockhoff Date: Fri, 15 Mar 2019 10:55:47 +0100 Subject: [PATCH 446/446] further added links to mixint documentation --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 5fde36689..b99b15be2 100644 --- a/README.md +++ b/README.md @@ -608,6 +608,9 @@ Links and Documentation at http://numbbo.github.io/coco-doc/bbob-biobj/functions - for the **`bbob-largescale`** problem suite at http://numbbo.github.io/coco-doc/bbob-largescale/functions + - for the **`bbob-mixint`** and **`bbob-biobj-mixint`** problem suites, we refer to + https://hal.inria.fr/hal-02067932/document and to + http://coco.gforge.inria.fr/preliminary-bbob-mixint-documentation/bbob-mixint-doc.pdf * Online documentation of the NumBBO/Coco API (i.e. for the ANSI C code) is available at http://numbbo.github.io/coco-doc/C * More detailed documentation on how the performance assessement is done can @@ -627,6 +630,8 @@ Comprehensive List of Documentations - bbob-biobj-ext: http://numbbo.github.io/coco-doc/bbob-biobj/functions/ - bbob-noisy (only in old code basis): http://coco.lri.fr/downloads/download15.03/bbobdocnoisyfunctions.pdf - bbob-largescale: http://numbbo.github.io/coco-doc/bbob-largescale/functions/ + - bbob-mixint and bbob-biobj-mixint: https://hal.inria.fr/hal-02067932/document and + http://coco.gforge.inria.fr/preliminary-bbob-mixint-documentation/bbob-mixint-doc.pdf - bbob-constrained (in progress): http://numbbo.github.io/coco-doc/bbob-constrained/functions/